@copilotkit/runtime 2.0.0-next.1 → 2.0.0-rc.1
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 +18 -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/index.cjs +75 -0
- package/dist/index.d.cts +24 -0
- package/dist/index.d.mts +24 -0
- package/dist/index.mjs +17 -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 +99 -0
- package/dist/runtime/core/fetch-handler.d.cts.map +1 -0
- package/dist/runtime/core/fetch-handler.d.mts +99 -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/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/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/index.d.cts +29 -0
- package/dist/runtime/index.d.cts.map +1 -0
- package/dist/runtime/index.d.mts +29 -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 +104 -105
- 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,1328 @@
|
|
|
1
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
2
|
+
const require_describe_endpoint = require('../runtime/handlers/shared/describe-endpoint.cjs');
|
|
3
|
+
const require_url_download = require('./url-download.cjs');
|
|
4
|
+
const require_state_delta = require('./state-delta.cjs');
|
|
5
|
+
const require_usage = require('./converters/usage.cjs');
|
|
6
|
+
const require_aisdk = require('./converters/aisdk.cjs');
|
|
7
|
+
const require_tanstack = require('./converters/tanstack.cjs');
|
|
8
|
+
const require_registry = require('../runtime/intelligence-platform/skill-registry/registry.cjs');
|
|
9
|
+
const require_learned_skills = require('./learned-skills.cjs');
|
|
10
|
+
const require_mcp_tool_names = require('./mcp-tool-names.cjs');
|
|
11
|
+
let _copilotkit_shared = require("@copilotkit/shared");
|
|
12
|
+
let zod = require("zod");
|
|
13
|
+
let rxjs = require("rxjs");
|
|
14
|
+
let _ag_ui_client = require("@ag-ui/client");
|
|
15
|
+
let _ag_ui_a2ui_middleware = require("@ag-ui/a2ui-middleware");
|
|
16
|
+
let _cfworker_json_schema = require("@cfworker/json-schema");
|
|
17
|
+
let ai = require("ai");
|
|
18
|
+
let _ai_sdk_mcp = require("@ai-sdk/mcp");
|
|
19
|
+
let _ai_sdk_openai = require("@ai-sdk/openai");
|
|
20
|
+
let _ai_sdk_anthropic = require("@ai-sdk/anthropic");
|
|
21
|
+
let _ai_sdk_google = require("@ai-sdk/google");
|
|
22
|
+
let _ai_sdk_google_vertex = require("@ai-sdk/google-vertex");
|
|
23
|
+
let _modelcontextprotocol_sdk_client_streamableHttp_js = require("@modelcontextprotocol/sdk/client/streamableHttp.js");
|
|
24
|
+
|
|
25
|
+
//#region src/agent/index.ts
|
|
26
|
+
/**
|
|
27
|
+
* Resolves a model specifier to a LanguageModel instance
|
|
28
|
+
* @param spec - Model string (e.g., "openai/gpt-4o") or LanguageModel instance
|
|
29
|
+
* @param apiKey - Optional API key to use instead of environment variables
|
|
30
|
+
* @returns LanguageModel instance
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* An AG-UI tool result as the AI SDK's tool result output.
|
|
34
|
+
*
|
|
35
|
+
* Providers hold one response per tool call, and the Google adapter emits one
|
|
36
|
+
* functionResponse per text entry of a content list, so all of a result's text
|
|
37
|
+
* is collected into a single entry: text parts run together, and a
|
|
38
|
+
* URL-referenced part contributes the URL it carries on a line of its own —
|
|
39
|
+
* the bytes are not here to hand over, and the reference is the content the
|
|
40
|
+
* tool actually returned. A result with no inline media is that text alone.
|
|
41
|
+
* One with inline media is a content list: the text entry first, when there is
|
|
42
|
+
* any, then each media part with its bytes and media type. A media-only result
|
|
43
|
+
* is media alone: a placeholder text would be content the tool never returned.
|
|
44
|
+
* Which adapters can place media inside a tool response is theirs to decide.
|
|
45
|
+
* A provider file handle (`file` source) is neither bytes nor a URL, and this
|
|
46
|
+
* path cannot hand it to the provider, so the part is dropped with a warning.
|
|
47
|
+
* A result whose parts were all dropped is the empty string, as AG-UI 1.0
|
|
48
|
+
* requires: the call must still be answered.
|
|
49
|
+
*/
|
|
50
|
+
function warnDroppedFileSource(what) {
|
|
51
|
+
console.warn(`[CopilotKit] Dropping a ${what} that references a provider file handle: it is not a URL or inline data, so it cannot be sent to the model here.`);
|
|
52
|
+
}
|
|
53
|
+
function toolResultOutput(content) {
|
|
54
|
+
if (typeof content === "string") return {
|
|
55
|
+
type: "text",
|
|
56
|
+
value: content
|
|
57
|
+
};
|
|
58
|
+
const segments = [];
|
|
59
|
+
const media = [];
|
|
60
|
+
let open = false;
|
|
61
|
+
for (const part of content) if (part.type === "text") {
|
|
62
|
+
if (open) segments[segments.length - 1] += part.text;
|
|
63
|
+
else segments.push(part.text);
|
|
64
|
+
open = true;
|
|
65
|
+
} else if (part.source.type === "file") warnDroppedFileSource(`${part.type} part in a tool result`);
|
|
66
|
+
else if (part.source.type === "url") {
|
|
67
|
+
segments.push(part.source.value);
|
|
68
|
+
open = false;
|
|
69
|
+
} else {
|
|
70
|
+
media.push({
|
|
71
|
+
type: "media",
|
|
72
|
+
data: part.source.value,
|
|
73
|
+
mediaType: part.source.mimeType
|
|
74
|
+
});
|
|
75
|
+
open = false;
|
|
76
|
+
}
|
|
77
|
+
const text = segments.join("\n");
|
|
78
|
+
if (media.length === 0) return {
|
|
79
|
+
type: "text",
|
|
80
|
+
value: text
|
|
81
|
+
};
|
|
82
|
+
return {
|
|
83
|
+
type: "content",
|
|
84
|
+
value: [...text.length > 0 ? [{
|
|
85
|
+
type: "text",
|
|
86
|
+
text
|
|
87
|
+
}] : [], ...media]
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Split a model string into provider and model id. The provider is the text
|
|
92
|
+
* before the FIRST ":" or "/"; everything after it is the model id, unchanged.
|
|
93
|
+
* So "openai:meta-llama/llama-3.3-70b" keeps the slash in its model id, and
|
|
94
|
+
* "openai/ft:gpt-4o-mini:org::id" keeps its colons. Empty strings mean the
|
|
95
|
+
* part is missing.
|
|
96
|
+
*/
|
|
97
|
+
function parseModelSpec(spec) {
|
|
98
|
+
const trimmed = spec.trim();
|
|
99
|
+
const separator = trimmed.search(/[:/]/);
|
|
100
|
+
if (separator === -1) return {
|
|
101
|
+
provider: trimmed.toLowerCase(),
|
|
102
|
+
model: ""
|
|
103
|
+
};
|
|
104
|
+
return {
|
|
105
|
+
provider: trimmed.slice(0, separator).toLowerCase(),
|
|
106
|
+
model: trimmed.slice(separator + 1).trim()
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Whether an `OPENAI_BASE_URL` should get Chat Completions instead of the
|
|
111
|
+
* Responses API. OpenAI's own hosts (including `*.api.openai.com`, such as the
|
|
112
|
+
* EU data-residency host) and Azure serve `/responses`, so they keep it, as
|
|
113
|
+
* does an unset value. Any other host gets `/chat/completions`, which is what
|
|
114
|
+
* most OpenAI-compatible servers implement. The host rule is
|
|
115
|
+
* `classifyModelHost`, the same one telemetry uses.
|
|
116
|
+
*
|
|
117
|
+
* A value `new URL` throws on keeps the Responses route; the request will
|
|
118
|
+
* fail on that base URL either way. A schemeless value such as
|
|
119
|
+
* `localhost:11434/v1` does not throw (it parses with scheme `localhost:` and
|
|
120
|
+
* an empty host), so it classifies as `other` and gets Chat Completions.
|
|
121
|
+
*/
|
|
122
|
+
function usesChatCompletions(baseURL) {
|
|
123
|
+
const trimmed = baseURL?.trim();
|
|
124
|
+
if (!trimmed) return false;
|
|
125
|
+
try {
|
|
126
|
+
new URL(trimmed);
|
|
127
|
+
} catch {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
const host = (0, _copilotkit_shared.classifyModelHost)(trimmed, "openai");
|
|
131
|
+
return host !== "openai" && host !== "azure";
|
|
132
|
+
}
|
|
133
|
+
/** Whether the Chat Completions notice below was already logged. */
|
|
134
|
+
let loggedChatCompletionsRoute = false;
|
|
135
|
+
/**
|
|
136
|
+
* Which OpenAI API an `openai/...` model string targets.
|
|
137
|
+
*
|
|
138
|
+
* `COPILOTKIT_OPENAI_API` (`responses` or `chat`) wins when set, so a proxy in
|
|
139
|
+
* front of OpenAI can keep the Responses API, and an OpenAI host can use Chat
|
|
140
|
+
* Completions. Unset or blank, `usesChatCompletions` decides from
|
|
141
|
+
* `OPENAI_BASE_URL`.
|
|
142
|
+
*
|
|
143
|
+
* When that rule picks Chat Completions, this logs once per process. Through a
|
|
144
|
+
* proxy, Chat Completions drops Responses-only features (such as reasoning
|
|
145
|
+
* summaries) without an error, and the notice names the way back.
|
|
146
|
+
*/
|
|
147
|
+
function openAIApiFor(baseURL) {
|
|
148
|
+
const raw = process.env.COPILOTKIT_OPENAI_API;
|
|
149
|
+
const override = raw?.trim().toLowerCase();
|
|
150
|
+
if (override === "responses" || override === "chat") return override;
|
|
151
|
+
if (override) throw new Error(`Invalid COPILOTKIT_OPENAI_API "${raw}". Use "responses" or "chat", or leave it unset.`);
|
|
152
|
+
if (!usesChatCompletions(baseURL)) return "responses";
|
|
153
|
+
if (!loggedChatCompletionsRoute) {
|
|
154
|
+
loggedChatCompletionsRoute = true;
|
|
155
|
+
console.info("[CopilotKit] OPENAI_BASE_URL is not an OpenAI or Azure host, so \"openai/...\" models use the Chat Completions API. To use the Responses API instead, set COPILOTKIT_OPENAI_API=responses.");
|
|
156
|
+
}
|
|
157
|
+
return "chat";
|
|
158
|
+
}
|
|
159
|
+
function resolveModel(spec, apiKey) {
|
|
160
|
+
if (typeof spec !== "string") return spec;
|
|
161
|
+
const { provider, model } = parseModelSpec(spec);
|
|
162
|
+
if (!provider) throw new Error(`Invalid model string "${spec}". Use "openai/gpt-5", "anthropic/claude-sonnet-4.5", or "google/gemini-3.8-flash".`);
|
|
163
|
+
if (!model) throw new Error(`Invalid model string "${spec}". Use "openai/gpt-5", "anthropic/claude-sonnet-4.5", or "google/gemini-3.8-flash".`);
|
|
164
|
+
switch (provider) {
|
|
165
|
+
case "openai": {
|
|
166
|
+
const openai = (0, _ai_sdk_openai.createOpenAI)({
|
|
167
|
+
apiKey: apiKey || process.env.OPENAI_API_KEY,
|
|
168
|
+
baseURL: process.env.OPENAI_BASE_URL
|
|
169
|
+
});
|
|
170
|
+
return openAIApiFor(process.env.OPENAI_BASE_URL) === "chat" ? openai.chat(model) : openai(model);
|
|
171
|
+
}
|
|
172
|
+
case "anthropic": return (0, _ai_sdk_anthropic.createAnthropic)({
|
|
173
|
+
apiKey: apiKey || process.env.ANTHROPIC_API_KEY,
|
|
174
|
+
baseURL: process.env.ANTHROPIC_BASE_URL
|
|
175
|
+
})(model);
|
|
176
|
+
case "google":
|
|
177
|
+
case "gemini":
|
|
178
|
+
case "google-gemini": return (0, _ai_sdk_google.createGoogleGenerativeAI)({
|
|
179
|
+
apiKey: apiKey || process.env.GOOGLE_API_KEY,
|
|
180
|
+
baseURL: process.env.GOOGLE_GENERATIVE_AI_BASE_URL
|
|
181
|
+
})(model);
|
|
182
|
+
case "minimax": return (0, _ai_sdk_openai.createOpenAI)({
|
|
183
|
+
name: "minimax",
|
|
184
|
+
apiKey: apiKey || process.env.MINIMAX_API_KEY,
|
|
185
|
+
baseURL: process.env.MINIMAX_BASE_URL || "https://api.minimax.io/v1"
|
|
186
|
+
})(model);
|
|
187
|
+
case "vertex": return (0, _ai_sdk_google_vertex.createVertex)()(model);
|
|
188
|
+
default: throw new Error(`Unknown provider "${provider}" in "${spec}". Supported: openai, anthropic, google (gemini).`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Which vendor a model specifier will actually reach, as a closed vocabulary.
|
|
193
|
+
*
|
|
194
|
+
* `resolveModel` above is the only place this runtime builds a provider, so it
|
|
195
|
+
* is the only place that knows the endpoint. Once built, the endpoint is gone:
|
|
196
|
+
* an AI SDK model's `provider` names only the wire API (`"openai.responses"`
|
|
197
|
+
* on OpenAI and Azure, `"openai.chat"` on any other host), so it cannot tell
|
|
198
|
+
* OpenRouter from a laptop, and its base URL survives
|
|
199
|
+
* only inside a closure that the public `LanguageModelV3` type does not
|
|
200
|
+
* expose. Azure's own migration guide tells customers to use that same OpenAI
|
|
201
|
+
* client, so the case we are blindest to is the common one.
|
|
202
|
+
*
|
|
203
|
+
* A caller who hands us an already-built LanguageModel gets `unknown`. Nobody
|
|
204
|
+
* can recover the host from it, and saying so is more useful than guessing
|
|
205
|
+
* `openai` from a provider label that means only "speaks the OpenAI wire".
|
|
206
|
+
*
|
|
207
|
+
* The branches below mirror `resolveModel`'s switch and must change with it.
|
|
208
|
+
* `model-host-class.test.ts` walks every provider that switch accepts and
|
|
209
|
+
* fails if one lands here as `unknown`.
|
|
210
|
+
*/
|
|
211
|
+
function classifyModelSpec(spec) {
|
|
212
|
+
if (typeof spec !== "string") return "unknown";
|
|
213
|
+
const { provider } = parseModelSpec(spec);
|
|
214
|
+
switch (provider) {
|
|
215
|
+
case "openai": return (0, _copilotkit_shared.classifyModelHost)(process.env.OPENAI_BASE_URL, "openai");
|
|
216
|
+
case "anthropic": return (0, _copilotkit_shared.classifyModelHost)(process.env.ANTHROPIC_BASE_URL, "anthropic");
|
|
217
|
+
case "google":
|
|
218
|
+
case "gemini":
|
|
219
|
+
case "google-gemini": return (0, _copilotkit_shared.classifyModelHost)(process.env.GOOGLE_GENERATIVE_AI_BASE_URL, "google");
|
|
220
|
+
case "minimax": return (0, _copilotkit_shared.classifyModelHost)(process.env.MINIMAX_BASE_URL || "https://api.minimax.io/v1", "minimax");
|
|
221
|
+
case "vertex": return "vertex";
|
|
222
|
+
default: return "unknown";
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Thrown by `AgentFactoryContext.interrupt()` on a fresh (non-resume) run to
|
|
227
|
+
* pause the factory. Caught in `runFactory` and translated into a RUN_FINISHED
|
|
228
|
+
* event carrying `outcome:{type:"interrupt",interrupts}`. Not a real error.
|
|
229
|
+
*/
|
|
230
|
+
var InterruptSignal = class extends Error {
|
|
231
|
+
constructor(interrupts) {
|
|
232
|
+
super("CopilotKit interrupt: run paused awaiting human input");
|
|
233
|
+
this.interrupts = interrupts;
|
|
234
|
+
this.name = "InterruptSignal";
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* Define a tool for use with BuiltInAgent
|
|
239
|
+
* @param name - The name of the tool
|
|
240
|
+
* @param description - Description of what the tool does
|
|
241
|
+
* @param parameters - Schema for the tool's input parameters (any Standard Schema V1 compatible library: Zod, Valibot, ArkType, etc.)
|
|
242
|
+
* @param execute - Function to execute the tool server-side
|
|
243
|
+
* @returns Tool definition
|
|
244
|
+
*/
|
|
245
|
+
function defineTool(config) {
|
|
246
|
+
return {
|
|
247
|
+
name: config.name,
|
|
248
|
+
description: config.description,
|
|
249
|
+
parameters: config.parameters,
|
|
250
|
+
execute: config.execute,
|
|
251
|
+
interrupt: config.interrupt,
|
|
252
|
+
interruptReason: config.interruptReason,
|
|
253
|
+
interruptMessage: config.interruptMessage
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Converts AG-UI user message content to Vercel AI SDK UserContent format.
|
|
258
|
+
* Handles plain strings, new modality-specific parts (image/audio/video/document),
|
|
259
|
+
* and legacy BinaryInputContent for backward compatibility.
|
|
260
|
+
*/
|
|
261
|
+
function convertUserMessageContent(content) {
|
|
262
|
+
if (!content) return "";
|
|
263
|
+
if (typeof content === "string") return content;
|
|
264
|
+
const parts = [];
|
|
265
|
+
for (const part of content) {
|
|
266
|
+
if (!part || typeof part !== "object" || !("type" in part)) continue;
|
|
267
|
+
switch (part.type) {
|
|
268
|
+
case "text": {
|
|
269
|
+
const text = part.text;
|
|
270
|
+
if (text) parts.push({
|
|
271
|
+
type: "text",
|
|
272
|
+
text
|
|
273
|
+
});
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
case "image": {
|
|
277
|
+
const source = part.source;
|
|
278
|
+
if (!source) break;
|
|
279
|
+
if (source.type === "data") parts.push({
|
|
280
|
+
type: "image",
|
|
281
|
+
image: source.value,
|
|
282
|
+
mediaType: source.mimeType
|
|
283
|
+
});
|
|
284
|
+
else if (source.type === "file") warnDroppedFileSource("image part");
|
|
285
|
+
else if (source.type === "url") try {
|
|
286
|
+
parts.push({
|
|
287
|
+
type: "image",
|
|
288
|
+
image: new URL(source.value),
|
|
289
|
+
mediaType: source.mimeType
|
|
290
|
+
});
|
|
291
|
+
} catch {
|
|
292
|
+
console.error(`[CopilotKit] convertUserMessageContent: invalid URL "${source.value}" in image part — skipping`);
|
|
293
|
+
}
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
case "audio":
|
|
297
|
+
case "video":
|
|
298
|
+
case "document": {
|
|
299
|
+
const source = part.source;
|
|
300
|
+
if (!source) break;
|
|
301
|
+
if (source.type === "data") parts.push({
|
|
302
|
+
type: "file",
|
|
303
|
+
data: source.value,
|
|
304
|
+
mediaType: source.mimeType
|
|
305
|
+
});
|
|
306
|
+
else if (source.type === "file") warnDroppedFileSource(`${part.type} part`);
|
|
307
|
+
else if (source.type === "url") try {
|
|
308
|
+
parts.push({
|
|
309
|
+
type: "file",
|
|
310
|
+
data: new URL(source.value),
|
|
311
|
+
mediaType: source.mimeType ?? "application/octet-stream"
|
|
312
|
+
});
|
|
313
|
+
} catch {
|
|
314
|
+
console.error(`[CopilotKit] convertUserMessageContent: invalid URL "${source.value}" in ${part.type} part — skipping`);
|
|
315
|
+
}
|
|
316
|
+
break;
|
|
317
|
+
}
|
|
318
|
+
case "binary": {
|
|
319
|
+
const legacy = part;
|
|
320
|
+
const mimeType = legacy.mimeType ?? "application/octet-stream";
|
|
321
|
+
const isImage = mimeType.startsWith("image/");
|
|
322
|
+
if (legacy.data) if (isImage) parts.push({
|
|
323
|
+
type: "image",
|
|
324
|
+
image: legacy.data,
|
|
325
|
+
mediaType: mimeType
|
|
326
|
+
});
|
|
327
|
+
else parts.push({
|
|
328
|
+
type: "file",
|
|
329
|
+
data: legacy.data,
|
|
330
|
+
mediaType: mimeType
|
|
331
|
+
});
|
|
332
|
+
else if (legacy.url) try {
|
|
333
|
+
const url = new URL(legacy.url);
|
|
334
|
+
if (isImage) parts.push({
|
|
335
|
+
type: "image",
|
|
336
|
+
image: url,
|
|
337
|
+
mediaType: mimeType
|
|
338
|
+
});
|
|
339
|
+
else parts.push({
|
|
340
|
+
type: "file",
|
|
341
|
+
data: url,
|
|
342
|
+
mediaType: mimeType
|
|
343
|
+
});
|
|
344
|
+
} catch {
|
|
345
|
+
console.error(`[CopilotKit] convertUserMessageContent: invalid URL "${legacy.url}" in binary part — skipping`);
|
|
346
|
+
}
|
|
347
|
+
break;
|
|
348
|
+
}
|
|
349
|
+
default:
|
|
350
|
+
console.error(`[CopilotKit] convertUserMessageContent: unrecognized content part type "${part.type}" — skipping`);
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return parts.length > 0 ? parts : "";
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Converts AG-UI messages to Vercel AI SDK ModelMessage format
|
|
358
|
+
*/
|
|
359
|
+
function convertMessagesToVercelAISDKMessages(messages, options = {}) {
|
|
360
|
+
const result = [];
|
|
361
|
+
for (const message of messages) if (message.role === "system" && options.forwardSystemMessages) {
|
|
362
|
+
const systemMsg = {
|
|
363
|
+
role: "system",
|
|
364
|
+
content: message.content ?? ""
|
|
365
|
+
};
|
|
366
|
+
result.push(systemMsg);
|
|
367
|
+
} else if (message.role === "developer" && options.forwardDeveloperMessages) {
|
|
368
|
+
const systemMsg = {
|
|
369
|
+
role: "system",
|
|
370
|
+
content: message.content ?? ""
|
|
371
|
+
};
|
|
372
|
+
result.push(systemMsg);
|
|
373
|
+
} else if (message.role === "assistant") {
|
|
374
|
+
const parts = message.content ? [{
|
|
375
|
+
type: "text",
|
|
376
|
+
text: message.content
|
|
377
|
+
}] : [];
|
|
378
|
+
for (const toolCall of message.toolCalls ?? []) {
|
|
379
|
+
const toolCallPart = {
|
|
380
|
+
type: "tool-call",
|
|
381
|
+
toolCallId: toolCall.id,
|
|
382
|
+
toolName: toolCall.function.name,
|
|
383
|
+
input: (0, _copilotkit_shared.safeParseToolArgs)(toolCall.function.arguments)
|
|
384
|
+
};
|
|
385
|
+
parts.push(toolCallPart);
|
|
386
|
+
}
|
|
387
|
+
const assistantMsg = {
|
|
388
|
+
role: "assistant",
|
|
389
|
+
content: parts
|
|
390
|
+
};
|
|
391
|
+
result.push(assistantMsg);
|
|
392
|
+
} else if (message.role === "user") {
|
|
393
|
+
const userMsg = {
|
|
394
|
+
role: "user",
|
|
395
|
+
content: convertUserMessageContent(message.content)
|
|
396
|
+
};
|
|
397
|
+
result.push(userMsg);
|
|
398
|
+
} else if (message.role === "tool") {
|
|
399
|
+
let toolName = "unknown";
|
|
400
|
+
for (const msg of messages) if (msg.role === "assistant") {
|
|
401
|
+
for (const toolCall of msg.toolCalls ?? []) if (toolCall.id === message.toolCallId) {
|
|
402
|
+
toolName = toolCall.function.name;
|
|
403
|
+
break;
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
const toolMsg = {
|
|
407
|
+
role: "tool",
|
|
408
|
+
content: [{
|
|
409
|
+
type: "tool-result",
|
|
410
|
+
toolCallId: message.toolCallId,
|
|
411
|
+
toolName,
|
|
412
|
+
output: toolResultOutput(message.content)
|
|
413
|
+
}]
|
|
414
|
+
};
|
|
415
|
+
result.push(toolMsg);
|
|
416
|
+
}
|
|
417
|
+
return result;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Converts JSON Schema to Zod schema
|
|
421
|
+
*/
|
|
422
|
+
function convertJsonSchemaToZodSchema(jsonSchema, required) {
|
|
423
|
+
if (jsonSchema.type === "null") {
|
|
424
|
+
const schema = zod.z.null().describe(jsonSchema.description ?? "");
|
|
425
|
+
return required ? schema : schema.optional();
|
|
426
|
+
}
|
|
427
|
+
const unionVariants = jsonSchema.anyOf ?? jsonSchema.oneOf;
|
|
428
|
+
if (Array.isArray(unionVariants) && unionVariants.length > 0) {
|
|
429
|
+
if (unionVariants.length === 1) return convertJsonSchemaToZodSchema(unionVariants[0], required);
|
|
430
|
+
const variantSchemas = unionVariants.map((variant) => convertJsonSchemaToZodSchema(variant, true));
|
|
431
|
+
const schema = zod.z.union(variantSchemas).describe(jsonSchema.description ?? "");
|
|
432
|
+
return required ? schema : schema.optional();
|
|
433
|
+
}
|
|
434
|
+
if (!jsonSchema.type) return required ? zod.z.object({}) : zod.z.object({}).optional();
|
|
435
|
+
if (jsonSchema.type === "object") {
|
|
436
|
+
const spec = {};
|
|
437
|
+
if (!jsonSchema.properties || !Object.keys(jsonSchema.properties).length) return !required ? zod.z.object(spec).optional() : zod.z.object(spec);
|
|
438
|
+
for (const [key, value] of Object.entries(jsonSchema.properties)) spec[key] = convertJsonSchemaToZodSchema(value, jsonSchema.required ? jsonSchema.required.includes(key) : false);
|
|
439
|
+
const schema = zod.z.object(spec).describe(jsonSchema.description ?? "");
|
|
440
|
+
return required ? schema : schema.optional();
|
|
441
|
+
} else if (jsonSchema.type === "string") {
|
|
442
|
+
if (jsonSchema.enum && jsonSchema.enum.length > 0) {
|
|
443
|
+
const schema = zod.z.enum(jsonSchema.enum).describe(jsonSchema.description ?? "");
|
|
444
|
+
return required ? schema : schema.optional();
|
|
445
|
+
}
|
|
446
|
+
const schema = zod.z.string().describe(jsonSchema.description ?? "");
|
|
447
|
+
return required ? schema : schema.optional();
|
|
448
|
+
} else if (jsonSchema.type === "number" || jsonSchema.type === "integer") {
|
|
449
|
+
const schema = zod.z.number().describe(jsonSchema.description ?? "");
|
|
450
|
+
return required ? schema : schema.optional();
|
|
451
|
+
} else if (jsonSchema.type === "boolean") {
|
|
452
|
+
const schema = zod.z.boolean().describe(jsonSchema.description ?? "");
|
|
453
|
+
return required ? schema : schema.optional();
|
|
454
|
+
} else if (jsonSchema.type === "array") {
|
|
455
|
+
if (!jsonSchema.items) throw new Error("Array type must have items property");
|
|
456
|
+
const itemSchema = convertJsonSchemaToZodSchema(jsonSchema.items, true);
|
|
457
|
+
const schema = zod.z.array(itemSchema).describe(jsonSchema.description ?? "");
|
|
458
|
+
return required ? schema : schema.optional();
|
|
459
|
+
}
|
|
460
|
+
console.error("Invalid JSON schema:", JSON.stringify(jsonSchema, null, 2));
|
|
461
|
+
throw new Error("Invalid JSON schema");
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Converts AG-UI tools to Vercel AI SDK ToolSet
|
|
465
|
+
*/
|
|
466
|
+
function isJsonSchema(obj) {
|
|
467
|
+
if (typeof obj !== "object" || obj === null) return false;
|
|
468
|
+
const schema = obj;
|
|
469
|
+
if (Object.keys(schema).length === 0) return true;
|
|
470
|
+
return typeof schema.type === "string" && [
|
|
471
|
+
"object",
|
|
472
|
+
"string",
|
|
473
|
+
"number",
|
|
474
|
+
"integer",
|
|
475
|
+
"boolean",
|
|
476
|
+
"array"
|
|
477
|
+
].includes(schema.type);
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Type-only pass-through for handing a Zod schema to the AI SDK's `tool()`.
|
|
481
|
+
* The raw Zod schema is returned unchanged at runtime — the SDK's `asSchema()`
|
|
482
|
+
* converts and validates it internally exactly as before.
|
|
483
|
+
*
|
|
484
|
+
* The Zod type is erased through `unknown` deliberately: letting tsc relate
|
|
485
|
+
* Zod schema types to the AI SDK's `FlexibleSchema` union (conditional types
|
|
486
|
+
* spanning zod v3/v4) makes type instantiation explode (TS2589 / compiler
|
|
487
|
+
* OOM) under this package's `moduleResolution: node`.
|
|
488
|
+
*/
|
|
489
|
+
function toLanguageModelSchema(schema) {
|
|
490
|
+
return schema;
|
|
491
|
+
}
|
|
492
|
+
/** Preserve AG-UI tool schemas when passing them to the model provider. */
|
|
493
|
+
function convertToolsToVercelAITools(tools) {
|
|
494
|
+
const result = {};
|
|
495
|
+
for (const tool of tools) {
|
|
496
|
+
if (!isJsonSchema(tool.parameters)) throw new Error(`Invalid JSON schema for tool ${tool.name}`);
|
|
497
|
+
const validator = new _cfworker_json_schema.Validator(tool.parameters, "7");
|
|
498
|
+
result[tool.name] = (0, ai.tool)({
|
|
499
|
+
description: tool.description,
|
|
500
|
+
inputSchema: (0, ai.jsonSchema)(tool.parameters, { validate: (value) => {
|
|
501
|
+
return validator.validate(value).valid ? {
|
|
502
|
+
success: true,
|
|
503
|
+
value
|
|
504
|
+
} : {
|
|
505
|
+
success: false,
|
|
506
|
+
error: /* @__PURE__ */ new Error(`Invalid arguments for tool ${tool.name}`)
|
|
507
|
+
};
|
|
508
|
+
} }),
|
|
509
|
+
...tool.name === _ag_ui_a2ui_middleware.RENDER_A2UI_TOOL.name ? { strict: false } : {}
|
|
510
|
+
});
|
|
511
|
+
}
|
|
512
|
+
return result;
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* Check whether a schema is a Zod schema by inspecting its Standard Schema vendor.
|
|
516
|
+
*/
|
|
517
|
+
function isZodSchema(schema) {
|
|
518
|
+
return schema["~standard"]?.vendor === "zod";
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Converts ToolDefinition array to Vercel AI SDK ToolSet.
|
|
522
|
+
*
|
|
523
|
+
* For Zod schemas, passes them directly to the AI SDK (Zod satisfies FlexibleSchema).
|
|
524
|
+
* For non-Zod schemas, converts to JSON Schema via schemaToJsonSchema() and wraps
|
|
525
|
+
* with the AI SDK's jsonSchema() helper.
|
|
526
|
+
*/
|
|
527
|
+
function convertToolDefinitionsToVercelAITools(tools) {
|
|
528
|
+
const result = {};
|
|
529
|
+
for (const tool of tools) if (isZodSchema(tool.parameters)) result[tool.name] = (0, ai.tool)({
|
|
530
|
+
description: tool.description,
|
|
531
|
+
inputSchema: tool.parameters,
|
|
532
|
+
execute: tool.execute
|
|
533
|
+
});
|
|
534
|
+
else {
|
|
535
|
+
const jsonSchemaObj = (0, _copilotkit_shared.schemaToJsonSchema)(tool.parameters);
|
|
536
|
+
result[tool.name] = (0, ai.tool)({
|
|
537
|
+
description: tool.description,
|
|
538
|
+
inputSchema: (0, ai.jsonSchema)(jsonSchemaObj),
|
|
539
|
+
execute: tool.execute
|
|
540
|
+
});
|
|
541
|
+
}
|
|
542
|
+
return result;
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Type guard: returns true if this is a factory-mode config.
|
|
546
|
+
*/
|
|
547
|
+
function isFactoryConfig(config) {
|
|
548
|
+
return "factory" in config;
|
|
549
|
+
}
|
|
550
|
+
var BuiltInAgent = class BuiltInAgent extends _ag_ui_client.AbstractAgent {
|
|
551
|
+
constructor(config) {
|
|
552
|
+
super();
|
|
553
|
+
this.config = config;
|
|
554
|
+
if (!isFactoryConfig(config)) this.urlDownload = require_url_download.resolveUrlDownloadSetting(config.urlDownload);
|
|
555
|
+
else if ("urlDownload" in config) throw new Error("BuiltInAgent: urlDownload has no effect in factory mode. Pass experimental_download: createSafeUrlDownload({ signal: ctx.abortSignal }) (from @copilotkit/runtime) to your own streamText() call instead.");
|
|
556
|
+
this.skillRegistry = config.learnedSkills === void 0 ? void 0 : new require_registry.SkillRegistry(config.learnedSkills);
|
|
557
|
+
this.modelHostClass = isFactoryConfig(config) ? "unknown" : classifyModelSpec(config.model);
|
|
558
|
+
}
|
|
559
|
+
/**
|
|
560
|
+
* Check if a property can be overridden by forwardedProps
|
|
561
|
+
*/
|
|
562
|
+
canOverride(property) {
|
|
563
|
+
if (isFactoryConfig(this.config)) return false;
|
|
564
|
+
return this.config?.overridableProperties?.includes(property) ?? false;
|
|
565
|
+
}
|
|
566
|
+
async getCapabilities() {
|
|
567
|
+
const inferred = {
|
|
568
|
+
tools: {
|
|
569
|
+
supported: true,
|
|
570
|
+
clientProvided: true
|
|
571
|
+
},
|
|
572
|
+
transport: { streaming: true },
|
|
573
|
+
humanInTheLoop: { interrupts: true }
|
|
574
|
+
};
|
|
575
|
+
const capabilities = isFactoryConfig(this.config) ? void 0 : this.config.capabilities;
|
|
576
|
+
if (!capabilities) return inferred;
|
|
577
|
+
return {
|
|
578
|
+
...inferred,
|
|
579
|
+
...capabilities
|
|
580
|
+
};
|
|
581
|
+
}
|
|
582
|
+
run(input) {
|
|
583
|
+
if (isFactoryConfig(this.config)) return this.runFactory(input, this.config);
|
|
584
|
+
const config = this.config;
|
|
585
|
+
if (this.abortController) throw new Error("Agent is already running. Call abortRun() first or create a new instance.");
|
|
586
|
+
this.abortController = new AbortController();
|
|
587
|
+
const abortController = this.abortController;
|
|
588
|
+
return new rxjs.Observable((subscriber) => {
|
|
589
|
+
const startEvent = {
|
|
590
|
+
type: _ag_ui_client.EventType.RUN_STARTED,
|
|
591
|
+
threadId: input.threadId,
|
|
592
|
+
runId: input.runId,
|
|
593
|
+
protocolVersion: _ag_ui_client.PROTOCOL_VERSION
|
|
594
|
+
};
|
|
595
|
+
subscriber.next(startEvent);
|
|
596
|
+
const model = resolveModel(config.model, config.apiKey);
|
|
597
|
+
let systemPrompt = void 0;
|
|
598
|
+
const hasPrompt = !!config.prompt;
|
|
599
|
+
const hasContext = input.context && input.context.length > 0;
|
|
600
|
+
const hasState = input.state !== void 0 && input.state !== null && !(typeof input.state === "object" && Object.keys(input.state).length === 0);
|
|
601
|
+
if (hasPrompt || hasContext || hasState) {
|
|
602
|
+
const parts = [];
|
|
603
|
+
if (hasPrompt) parts.push(config.prompt);
|
|
604
|
+
if (hasContext) {
|
|
605
|
+
parts.push("\n## Context from the application\n");
|
|
606
|
+
for (const ctx of input.context) parts.push(`${ctx.description}:\n${ctx.value}\n`);
|
|
607
|
+
}
|
|
608
|
+
if (hasState) parts.push(`
|
|
609
|
+
## Application State
|
|
610
|
+
This is state from the application that you can edit by calling AGUISendStateSnapshot or AGUISendStateDelta.
|
|
611
|
+
\`\`\`json\n${JSON.stringify(input.state, null, 2)}\n\`\`\`\n`);
|
|
612
|
+
systemPrompt = parts.join("");
|
|
613
|
+
}
|
|
614
|
+
const systemMessages = [];
|
|
615
|
+
if (systemPrompt) systemMessages.push({
|
|
616
|
+
role: "system",
|
|
617
|
+
content: systemPrompt
|
|
618
|
+
});
|
|
619
|
+
const messages = convertMessagesToVercelAISDKMessages(input.messages, {
|
|
620
|
+
forwardSystemMessages: config.forwardSystemMessages,
|
|
621
|
+
forwardDeveloperMessages: config.forwardDeveloperMessages
|
|
622
|
+
});
|
|
623
|
+
const resumeEntries = input.resume ?? [];
|
|
624
|
+
if (resumeEntries.length > 0) {
|
|
625
|
+
const toolNameById = /* @__PURE__ */ new Map();
|
|
626
|
+
for (const m of input.messages) {
|
|
627
|
+
if (m.role !== "assistant") continue;
|
|
628
|
+
for (const tc of m.toolCalls ?? []) if (tc.id && tc.function?.name) toolNameById.set(tc.id, tc.function.name);
|
|
629
|
+
}
|
|
630
|
+
const alreadyAnswered = /* @__PURE__ */ new Set();
|
|
631
|
+
for (const m of messages) {
|
|
632
|
+
if (m.role !== "tool" || !Array.isArray(m.content)) continue;
|
|
633
|
+
for (const part of m.content) if (part && typeof part === "object" && "toolCallId" in part) alreadyAnswered.add(part.toolCallId);
|
|
634
|
+
}
|
|
635
|
+
for (const entry of resumeEntries) {
|
|
636
|
+
if (alreadyAnswered.has(entry.interruptId)) continue;
|
|
637
|
+
const value = entry.status === "cancelled" ? { status: "cancelled" } : entry.payload ?? { status: "resolved" };
|
|
638
|
+
const toolResultMessage = {
|
|
639
|
+
role: "tool",
|
|
640
|
+
content: [{
|
|
641
|
+
type: "tool-result",
|
|
642
|
+
toolCallId: entry.interruptId,
|
|
643
|
+
toolName: toolNameById.get(entry.interruptId) ?? "",
|
|
644
|
+
output: {
|
|
645
|
+
type: "json",
|
|
646
|
+
value
|
|
647
|
+
}
|
|
648
|
+
}]
|
|
649
|
+
};
|
|
650
|
+
messages.push(toolResultMessage);
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
let allTools = convertToolsToVercelAITools(input.tools);
|
|
654
|
+
if (config.tools && config.tools.length > 0) {
|
|
655
|
+
const configTools = convertToolDefinitionsToVercelAITools(config.tools);
|
|
656
|
+
allTools = {
|
|
657
|
+
...allTools,
|
|
658
|
+
...configTools
|
|
659
|
+
};
|
|
660
|
+
}
|
|
661
|
+
const streamTextParams = {
|
|
662
|
+
model,
|
|
663
|
+
messages,
|
|
664
|
+
tools: allTools,
|
|
665
|
+
toolChoice: config.toolChoice,
|
|
666
|
+
stopWhen: config.maxSteps ? (0, ai.stepCountIs)(config.maxSteps) : void 0,
|
|
667
|
+
maxOutputTokens: config.maxOutputTokens,
|
|
668
|
+
temperature: config.temperature,
|
|
669
|
+
topP: config.topP,
|
|
670
|
+
topK: config.topK,
|
|
671
|
+
presencePenalty: config.presencePenalty,
|
|
672
|
+
frequencyPenalty: config.frequencyPenalty,
|
|
673
|
+
stopSequences: config.stopSequences,
|
|
674
|
+
seed: config.seed,
|
|
675
|
+
providerOptions: config.providerOptions,
|
|
676
|
+
maxRetries: config.maxRetries,
|
|
677
|
+
experimental_download: this.urlDownload?.(abortController.signal)
|
|
678
|
+
};
|
|
679
|
+
if (input.forwardedProps && typeof input.forwardedProps === "object") {
|
|
680
|
+
const props = input.forwardedProps;
|
|
681
|
+
if (props.model !== void 0 && this.canOverride("model")) {
|
|
682
|
+
if (typeof props.model === "string" || typeof props.model === "object") streamTextParams.model = resolveModel(props.model, config.apiKey);
|
|
683
|
+
}
|
|
684
|
+
if (props.toolChoice !== void 0 && this.canOverride("toolChoice")) {
|
|
685
|
+
const toolChoice = props.toolChoice;
|
|
686
|
+
if (toolChoice === "auto" || toolChoice === "required" || toolChoice === "none" || typeof toolChoice === "object" && toolChoice !== null && "type" in toolChoice && toolChoice.type === "tool") streamTextParams.toolChoice = toolChoice;
|
|
687
|
+
}
|
|
688
|
+
if (typeof props.maxOutputTokens === "number" && this.canOverride("maxOutputTokens")) streamTextParams.maxOutputTokens = props.maxOutputTokens;
|
|
689
|
+
if (typeof props.temperature === "number" && this.canOverride("temperature")) streamTextParams.temperature = props.temperature;
|
|
690
|
+
if (typeof props.topP === "number" && this.canOverride("topP")) streamTextParams.topP = props.topP;
|
|
691
|
+
if (typeof props.topK === "number" && this.canOverride("topK")) streamTextParams.topK = props.topK;
|
|
692
|
+
if (typeof props.presencePenalty === "number" && this.canOverride("presencePenalty")) streamTextParams.presencePenalty = props.presencePenalty;
|
|
693
|
+
if (typeof props.frequencyPenalty === "number" && this.canOverride("frequencyPenalty")) streamTextParams.frequencyPenalty = props.frequencyPenalty;
|
|
694
|
+
if (Array.isArray(props.stopSequences) && this.canOverride("stopSequences")) {
|
|
695
|
+
if (props.stopSequences.every((item) => typeof item === "string")) streamTextParams.stopSequences = props.stopSequences;
|
|
696
|
+
}
|
|
697
|
+
if (typeof props.seed === "number" && this.canOverride("seed")) streamTextParams.seed = props.seed;
|
|
698
|
+
if (typeof props.maxRetries === "number" && this.canOverride("maxRetries")) streamTextParams.maxRetries = props.maxRetries;
|
|
699
|
+
if (props.providerOptions !== void 0 && this.canOverride("providerOptions")) {
|
|
700
|
+
if (typeof props.providerOptions === "object" && props.providerOptions !== null) streamTextParams.providerOptions = props.providerOptions;
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
const mcpClients = [];
|
|
704
|
+
(async () => {
|
|
705
|
+
let terminalEventEmitted = false;
|
|
706
|
+
let messageId = (0, _copilotkit_shared.randomUUID)();
|
|
707
|
+
let reasoningMessageId = (0, _copilotkit_shared.randomUUID)();
|
|
708
|
+
let isInReasoning = false;
|
|
709
|
+
const closeReasoningIfOpen = () => {
|
|
710
|
+
if (!isInReasoning) return;
|
|
711
|
+
isInReasoning = false;
|
|
712
|
+
const reasoningMsgEnd = {
|
|
713
|
+
type: _ag_ui_client.EventType.REASONING_MESSAGE_END,
|
|
714
|
+
messageId: reasoningMessageId
|
|
715
|
+
};
|
|
716
|
+
subscriber.next(reasoningMsgEnd);
|
|
717
|
+
const reasoningEnd = {
|
|
718
|
+
type: _ag_ui_client.EventType.REASONING_END,
|
|
719
|
+
messageId: reasoningMessageId
|
|
720
|
+
};
|
|
721
|
+
subscriber.next(reasoningEnd);
|
|
722
|
+
};
|
|
723
|
+
try {
|
|
724
|
+
const learnedSkills = await require_learned_skills.prepareLearnedSkills(this.skillRegistry, abortController.signal);
|
|
725
|
+
abortController.signal.throwIfAborted();
|
|
726
|
+
if (learnedSkills.catalog) {
|
|
727
|
+
systemMessages.unshift({
|
|
728
|
+
role: "system",
|
|
729
|
+
content: learnedSkills.catalog
|
|
730
|
+
});
|
|
731
|
+
if (config.maxSteps === void 0) streamTextParams.stopWhen = (0, ai.stepCountIs)(10);
|
|
732
|
+
}
|
|
733
|
+
streamTextParams.tools = {
|
|
734
|
+
...streamTextParams.tools,
|
|
735
|
+
AGUISendStateSnapshot: (0, ai.tool)({
|
|
736
|
+
description: "Replace the entire application state with a new snapshot",
|
|
737
|
+
inputSchema: toLanguageModelSchema(zod.z.object({ snapshot: zod.z.any().describe("The complete new state object") })),
|
|
738
|
+
execute: async ({ snapshot }) => {
|
|
739
|
+
return {
|
|
740
|
+
success: true,
|
|
741
|
+
snapshot
|
|
742
|
+
};
|
|
743
|
+
}
|
|
744
|
+
}),
|
|
745
|
+
AGUISendStateDelta: (0, ai.tool)({
|
|
746
|
+
description: "Apply incremental updates to application state using JSON Patch operations",
|
|
747
|
+
inputSchema: toLanguageModelSchema(zod.z.object({ delta: zod.z.array(zod.z.object({
|
|
748
|
+
op: zod.z.enum([
|
|
749
|
+
"add",
|
|
750
|
+
"replace",
|
|
751
|
+
"remove"
|
|
752
|
+
]).describe("The operation to perform"),
|
|
753
|
+
path: zod.z.string().describe("JSON Pointer path (e.g., '/foo/bar')"),
|
|
754
|
+
value: zod.z.any().optional().describe("The value to set. Required for 'add' and 'replace' operations, ignored for 'remove'.")
|
|
755
|
+
})).describe("Array of JSON Patch operations") })),
|
|
756
|
+
execute: async ({ delta }) => {
|
|
757
|
+
return {
|
|
758
|
+
success: true,
|
|
759
|
+
delta
|
|
760
|
+
};
|
|
761
|
+
}
|
|
762
|
+
})
|
|
763
|
+
};
|
|
764
|
+
const mcpToolSources = [];
|
|
765
|
+
const userMcpClients = config.mcpClients ?? [];
|
|
766
|
+
for (const [index, client] of userMcpClients.entries()) {
|
|
767
|
+
const mcpTools = await client.tools();
|
|
768
|
+
abortController.signal.throwIfAborted();
|
|
769
|
+
mcpToolSources.push({
|
|
770
|
+
label: `mcp${index + 1}`,
|
|
771
|
+
tools: mcpTools
|
|
772
|
+
});
|
|
773
|
+
}
|
|
774
|
+
const allMcpServers = [...config.mcpServers ?? []];
|
|
775
|
+
if (allMcpServers.length > 0) for (const [index, serverConfig] of allMcpServers.entries()) {
|
|
776
|
+
const label = serverConfig.name ? require_mcp_tool_names.toToolNamePrefix(serverConfig.name) : `mcp${userMcpClients.length + index + 1}`;
|
|
777
|
+
let transport;
|
|
778
|
+
if (serverConfig.type === "http") transport = new _modelcontextprotocol_sdk_client_streamableHttp_js.StreamableHTTPClientTransport(new URL(serverConfig.url), serverConfig.options);
|
|
779
|
+
else if (serverConfig.type === "sse") {
|
|
780
|
+
const { SSEClientTransport } = await import("@modelcontextprotocol/sdk/client/sse.js");
|
|
781
|
+
abortController.signal.throwIfAborted();
|
|
782
|
+
transport = new SSEClientTransport(new URL(serverConfig.url), serverConfig.headers ? { requestInit: { headers: serverConfig.headers } } : void 0);
|
|
783
|
+
}
|
|
784
|
+
if (transport) {
|
|
785
|
+
let mcpClient;
|
|
786
|
+
try {
|
|
787
|
+
mcpClient = await (0, _ai_sdk_mcp.createMCPClient)({ transport });
|
|
788
|
+
} catch (err) {
|
|
789
|
+
abortController.signal.throwIfAborted();
|
|
790
|
+
console.error(`[CopilotKit] MCP server ${require_describe_endpoint.describeEndpoint(serverConfig.url)} failed to connect — skipping it for this run:`, err);
|
|
791
|
+
continue;
|
|
792
|
+
}
|
|
793
|
+
if (abortController.signal.aborted) {
|
|
794
|
+
await mcpClient.close();
|
|
795
|
+
abortController.signal.throwIfAborted();
|
|
796
|
+
}
|
|
797
|
+
mcpClients.push(mcpClient);
|
|
798
|
+
try {
|
|
799
|
+
const mcpTools = await mcpClient.tools();
|
|
800
|
+
abortController.signal.throwIfAborted();
|
|
801
|
+
mcpToolSources.push({
|
|
802
|
+
label,
|
|
803
|
+
tools: mcpTools
|
|
804
|
+
});
|
|
805
|
+
} catch (err) {
|
|
806
|
+
abortController.signal.throwIfAborted();
|
|
807
|
+
console.error(`[CopilotKit] MCP server ${require_describe_endpoint.describeEndpoint(serverConfig.url)} tools() failed — skipping its tools for this run:`, err);
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
if (mcpToolSources.length > 0) streamTextParams.tools = require_mcp_tool_names.mergeMCPTools(streamTextParams.tools ?? {}, mcpToolSources);
|
|
812
|
+
if (this.skillRegistry) {
|
|
813
|
+
require_learned_skills.assertNoSkillToolConflicts(streamTextParams.tools ?? {});
|
|
814
|
+
streamTextParams.tools = {
|
|
815
|
+
...streamTextParams.tools,
|
|
816
|
+
...learnedSkills.tools
|
|
817
|
+
};
|
|
818
|
+
}
|
|
819
|
+
abortController.signal.throwIfAborted();
|
|
820
|
+
const response = (0, ai.streamText)({
|
|
821
|
+
...streamTextParams,
|
|
822
|
+
...messages.length > 0 ? { system: systemMessages.length > 0 ? systemMessages : void 0 } : { messages: systemMessages },
|
|
823
|
+
abortSignal: abortController.signal,
|
|
824
|
+
onError: ({ error }) => require_url_download.logModelCallError(error)
|
|
825
|
+
});
|
|
826
|
+
const interruptToolNames = new Set((isFactoryConfig(this.config) ? [] : this.config.tools ?? []).filter((t) => t.interrupt).map((t) => t.name));
|
|
827
|
+
const interruptToolMeta = new Map((isFactoryConfig(this.config) ? [] : this.config.tools ?? []).filter((t) => t.interrupt).map((t) => [t.name, {
|
|
828
|
+
reason: t.interruptReason ?? "tool_call",
|
|
829
|
+
message: t.interruptMessage
|
|
830
|
+
}]));
|
|
831
|
+
const pendingInterrupts = [];
|
|
832
|
+
const normalizeStateEvent = require_state_delta.createStateEventNormalizer(input.state);
|
|
833
|
+
const toolCallStates = /* @__PURE__ */ new Map();
|
|
834
|
+
const ensureToolCallState = (toolCallId) => {
|
|
835
|
+
let state = toolCallStates.get(toolCallId);
|
|
836
|
+
if (!state) {
|
|
837
|
+
state = {
|
|
838
|
+
started: false,
|
|
839
|
+
hasArgsDelta: false,
|
|
840
|
+
ended: false
|
|
841
|
+
};
|
|
842
|
+
toolCallStates.set(toolCallId, state);
|
|
843
|
+
}
|
|
844
|
+
return state;
|
|
845
|
+
};
|
|
846
|
+
const warnedUnknownPartTypes = /* @__PURE__ */ new Set();
|
|
847
|
+
for await (const part of response.fullStream) {
|
|
848
|
+
if (part.type !== "reasoning-delta") closeReasoningIfOpen();
|
|
849
|
+
switch (part.type) {
|
|
850
|
+
case "abort": {
|
|
851
|
+
const abortEndEvent = {
|
|
852
|
+
type: _ag_ui_client.EventType.RUN_FINISHED,
|
|
853
|
+
threadId: input.threadId,
|
|
854
|
+
runId: input.runId,
|
|
855
|
+
...input.protocolVersion !== void 0 ? { outcome: { type: "cancelled" } } : {}
|
|
856
|
+
};
|
|
857
|
+
subscriber.next(abortEndEvent);
|
|
858
|
+
terminalEventEmitted = true;
|
|
859
|
+
subscriber.complete();
|
|
860
|
+
break;
|
|
861
|
+
}
|
|
862
|
+
case "reasoning-start": {
|
|
863
|
+
reasoningMessageId = require_aisdk.resolveStreamPartMessageId("id" in part ? part.id : void 0);
|
|
864
|
+
const reasoningStartEvent = {
|
|
865
|
+
type: _ag_ui_client.EventType.REASONING_START,
|
|
866
|
+
messageId: reasoningMessageId
|
|
867
|
+
};
|
|
868
|
+
subscriber.next(reasoningStartEvent);
|
|
869
|
+
const reasoningMessageStart = {
|
|
870
|
+
type: _ag_ui_client.EventType.REASONING_MESSAGE_START,
|
|
871
|
+
messageId: reasoningMessageId,
|
|
872
|
+
role: "reasoning"
|
|
873
|
+
};
|
|
874
|
+
subscriber.next(reasoningMessageStart);
|
|
875
|
+
isInReasoning = true;
|
|
876
|
+
break;
|
|
877
|
+
}
|
|
878
|
+
case "reasoning-delta": {
|
|
879
|
+
const delta = part.text ?? "";
|
|
880
|
+
if (!delta) break;
|
|
881
|
+
const reasoningDeltaEvent = {
|
|
882
|
+
type: _ag_ui_client.EventType.REASONING_MESSAGE_CONTENT,
|
|
883
|
+
messageId: reasoningMessageId,
|
|
884
|
+
delta
|
|
885
|
+
};
|
|
886
|
+
subscriber.next(reasoningDeltaEvent);
|
|
887
|
+
break;
|
|
888
|
+
}
|
|
889
|
+
case "reasoning-end": break;
|
|
890
|
+
case "tool-input-start": {
|
|
891
|
+
const toolCallId = part.id;
|
|
892
|
+
const state = ensureToolCallState(toolCallId);
|
|
893
|
+
state.toolName = part.toolName;
|
|
894
|
+
if (!state.started) {
|
|
895
|
+
state.started = true;
|
|
896
|
+
const startEvent = {
|
|
897
|
+
type: _ag_ui_client.EventType.TOOL_CALL_START,
|
|
898
|
+
parentMessageId: messageId,
|
|
899
|
+
toolCallId,
|
|
900
|
+
toolCallName: part.toolName
|
|
901
|
+
};
|
|
902
|
+
subscriber.next(startEvent);
|
|
903
|
+
}
|
|
904
|
+
break;
|
|
905
|
+
}
|
|
906
|
+
case "tool-input-delta": {
|
|
907
|
+
const toolCallId = part.id;
|
|
908
|
+
const state = ensureToolCallState(toolCallId);
|
|
909
|
+
state.hasArgsDelta = true;
|
|
910
|
+
const argsEvent = {
|
|
911
|
+
type: _ag_ui_client.EventType.TOOL_CALL_ARGS,
|
|
912
|
+
toolCallId,
|
|
913
|
+
delta: part.delta
|
|
914
|
+
};
|
|
915
|
+
subscriber.next(argsEvent);
|
|
916
|
+
break;
|
|
917
|
+
}
|
|
918
|
+
case "tool-input-end": break;
|
|
919
|
+
case "text-start":
|
|
920
|
+
messageId = require_aisdk.resolveStreamPartMessageId("id" in part ? part.id : void 0);
|
|
921
|
+
break;
|
|
922
|
+
case "text-delta": {
|
|
923
|
+
const textDelta = "text" in part ? part.text : "";
|
|
924
|
+
const textEvent = {
|
|
925
|
+
type: _ag_ui_client.EventType.TEXT_MESSAGE_CHUNK,
|
|
926
|
+
role: "assistant",
|
|
927
|
+
messageId,
|
|
928
|
+
delta: textDelta
|
|
929
|
+
};
|
|
930
|
+
subscriber.next(textEvent);
|
|
931
|
+
break;
|
|
932
|
+
}
|
|
933
|
+
case "tool-call": {
|
|
934
|
+
const toolCallId = part.toolCallId;
|
|
935
|
+
const state = ensureToolCallState(toolCallId);
|
|
936
|
+
state.toolName = part.toolName ?? state.toolName;
|
|
937
|
+
if (!state.started) {
|
|
938
|
+
state.started = true;
|
|
939
|
+
const startEvent = {
|
|
940
|
+
type: _ag_ui_client.EventType.TOOL_CALL_START,
|
|
941
|
+
parentMessageId: messageId,
|
|
942
|
+
toolCallId,
|
|
943
|
+
toolCallName: part.toolName
|
|
944
|
+
};
|
|
945
|
+
subscriber.next(startEvent);
|
|
946
|
+
}
|
|
947
|
+
if (!state.hasArgsDelta && "input" in part && part.input !== void 0) {
|
|
948
|
+
let serializedInput = "";
|
|
949
|
+
if (typeof part.input === "string") serializedInput = part.input;
|
|
950
|
+
else try {
|
|
951
|
+
serializedInput = JSON.stringify(part.input);
|
|
952
|
+
} catch {
|
|
953
|
+
serializedInput = String(part.input);
|
|
954
|
+
}
|
|
955
|
+
if (serializedInput.length > 0) {
|
|
956
|
+
const argsEvent = {
|
|
957
|
+
type: _ag_ui_client.EventType.TOOL_CALL_ARGS,
|
|
958
|
+
toolCallId,
|
|
959
|
+
delta: serializedInput
|
|
960
|
+
};
|
|
961
|
+
subscriber.next(argsEvent);
|
|
962
|
+
state.hasArgsDelta = true;
|
|
963
|
+
}
|
|
964
|
+
}
|
|
965
|
+
if (!state.ended) {
|
|
966
|
+
state.ended = true;
|
|
967
|
+
const endEvent = {
|
|
968
|
+
type: _ag_ui_client.EventType.TOOL_CALL_END,
|
|
969
|
+
toolCallId
|
|
970
|
+
};
|
|
971
|
+
subscriber.next(endEvent);
|
|
972
|
+
}
|
|
973
|
+
if (state.toolName && interruptToolNames.has(state.toolName)) {
|
|
974
|
+
const meta = interruptToolMeta.get(state.toolName);
|
|
975
|
+
pendingInterrupts.push({
|
|
976
|
+
id: toolCallId,
|
|
977
|
+
toolCallId,
|
|
978
|
+
reason: meta?.reason ?? "tool_call",
|
|
979
|
+
...meta?.message ? { message: meta.message } : {}
|
|
980
|
+
});
|
|
981
|
+
}
|
|
982
|
+
break;
|
|
983
|
+
}
|
|
984
|
+
case "tool-result": {
|
|
985
|
+
const toolName = "toolName" in part && part.toolName || toolCallStates.get(part.toolCallId)?.toolName || "";
|
|
986
|
+
if (toolName && interruptToolNames.has(toolName)) {
|
|
987
|
+
toolCallStates.delete(part.toolCallId);
|
|
988
|
+
break;
|
|
989
|
+
}
|
|
990
|
+
const legacyPart = part;
|
|
991
|
+
const toolResult = "output" in part ? part.output : "result" in legacyPart ? legacyPart.result : null;
|
|
992
|
+
toolCallStates.delete(part.toolCallId);
|
|
993
|
+
if (toolName === "AGUISendStateSnapshot" && toolResult && typeof toolResult === "object") {
|
|
994
|
+
const snapshot = toolResult.snapshot;
|
|
995
|
+
if (snapshot !== void 0) {
|
|
996
|
+
const stateSnapshotEvent = {
|
|
997
|
+
type: _ag_ui_client.EventType.STATE_SNAPSHOT,
|
|
998
|
+
snapshot
|
|
999
|
+
};
|
|
1000
|
+
for (const event of normalizeStateEvent(stateSnapshotEvent)) subscriber.next(event);
|
|
1001
|
+
}
|
|
1002
|
+
} else if (toolName === "AGUISendStateDelta" && toolResult && typeof toolResult === "object") {
|
|
1003
|
+
const delta = toolResult.delta;
|
|
1004
|
+
if (delta !== void 0) {
|
|
1005
|
+
const stateDeltaEvent = {
|
|
1006
|
+
type: _ag_ui_client.EventType.STATE_DELTA,
|
|
1007
|
+
delta
|
|
1008
|
+
};
|
|
1009
|
+
for (const event of normalizeStateEvent(stateDeltaEvent)) subscriber.next(event);
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
let serializedResult;
|
|
1013
|
+
try {
|
|
1014
|
+
serializedResult = JSON.stringify(toolResult);
|
|
1015
|
+
} catch {
|
|
1016
|
+
serializedResult = `[Unserializable tool result from ${toolName || part.toolCallId}]`;
|
|
1017
|
+
}
|
|
1018
|
+
const resultEvent = {
|
|
1019
|
+
type: _ag_ui_client.EventType.TOOL_CALL_RESULT,
|
|
1020
|
+
role: "tool",
|
|
1021
|
+
messageId: (0, _copilotkit_shared.randomUUID)(),
|
|
1022
|
+
toolCallId: part.toolCallId,
|
|
1023
|
+
content: serializedResult
|
|
1024
|
+
};
|
|
1025
|
+
subscriber.next(resultEvent);
|
|
1026
|
+
break;
|
|
1027
|
+
}
|
|
1028
|
+
case "tool-error": {
|
|
1029
|
+
const toolCallId = part.toolCallId;
|
|
1030
|
+
const toolName = "toolName" in part && part.toolName || toolCallStates.get(toolCallId)?.toolName || "";
|
|
1031
|
+
if (toolName && interruptToolNames.has(toolName)) {
|
|
1032
|
+
toolCallStates.delete(toolCallId);
|
|
1033
|
+
break;
|
|
1034
|
+
}
|
|
1035
|
+
toolCallStates.delete(toolCallId);
|
|
1036
|
+
const resultEvent = {
|
|
1037
|
+
type: _ag_ui_client.EventType.TOOL_CALL_RESULT,
|
|
1038
|
+
role: "tool",
|
|
1039
|
+
messageId: (0, _copilotkit_shared.randomUUID)(),
|
|
1040
|
+
toolCallId,
|
|
1041
|
+
content: `Error: ${require_aisdk.formatToolError(part.error)}`
|
|
1042
|
+
};
|
|
1043
|
+
subscriber.next(resultEvent);
|
|
1044
|
+
break;
|
|
1045
|
+
}
|
|
1046
|
+
case "finish": {
|
|
1047
|
+
const model = streamTextParams.model;
|
|
1048
|
+
const finishedEvent = {
|
|
1049
|
+
type: _ag_ui_client.EventType.RUN_FINISHED,
|
|
1050
|
+
threadId: input.threadId,
|
|
1051
|
+
runId: input.runId,
|
|
1052
|
+
...require_aisdk.getAISDKRunFinishedDetails(part, {
|
|
1053
|
+
provider: require_usage.isRecord(model) ? require_usage.getNonEmptyString(model.provider) : void 0,
|
|
1054
|
+
model: require_usage.isRecord(model) ? require_usage.getNonEmptyString(model.modelId) : void 0
|
|
1055
|
+
}),
|
|
1056
|
+
...pendingInterrupts.length > 0 ? { outcome: {
|
|
1057
|
+
type: "interrupt",
|
|
1058
|
+
interrupts: pendingInterrupts
|
|
1059
|
+
} } : {}
|
|
1060
|
+
};
|
|
1061
|
+
subscriber.next(finishedEvent);
|
|
1062
|
+
terminalEventEmitted = true;
|
|
1063
|
+
subscriber.complete();
|
|
1064
|
+
break;
|
|
1065
|
+
}
|
|
1066
|
+
case "error": {
|
|
1067
|
+
if (abortController.signal.aborted) break;
|
|
1068
|
+
const err = part.error ?? ("message" in part ? part.message : void 0) ?? ("cause" in part ? part.cause : void 0);
|
|
1069
|
+
const runErrorEvent = {
|
|
1070
|
+
type: _ag_ui_client.EventType.RUN_ERROR,
|
|
1071
|
+
message: err instanceof Error ? err.message : typeof err === "string" ? err : `AI SDK stream error: ${JSON.stringify(part)}`,
|
|
1072
|
+
threadId: input.threadId,
|
|
1073
|
+
runId: input.runId
|
|
1074
|
+
};
|
|
1075
|
+
subscriber.next(runErrorEvent);
|
|
1076
|
+
terminalEventEmitted = true;
|
|
1077
|
+
if (err instanceof Error) subscriber.error(err);
|
|
1078
|
+
else subscriber.error(new Error(typeof err === "string" ? err : `AI SDK stream error`));
|
|
1079
|
+
break;
|
|
1080
|
+
}
|
|
1081
|
+
case "start":
|
|
1082
|
+
case "start-step":
|
|
1083
|
+
case "finish-step":
|
|
1084
|
+
case "text-end":
|
|
1085
|
+
case "source":
|
|
1086
|
+
case "file":
|
|
1087
|
+
case "tool-output-denied":
|
|
1088
|
+
case "tool-approval-request":
|
|
1089
|
+
case "raw": break;
|
|
1090
|
+
default: {
|
|
1091
|
+
const _exhaustive = part;
|
|
1092
|
+
const unknownType = String(_exhaustive.type);
|
|
1093
|
+
if (!warnedUnknownPartTypes.has(unknownType)) {
|
|
1094
|
+
warnedUnknownPartTypes.add(unknownType);
|
|
1095
|
+
console.warn(`[BuiltInAgent] Ignoring unhandled AI SDK stream part: ${unknownType}`);
|
|
1096
|
+
}
|
|
1097
|
+
break;
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
if (!terminalEventEmitted) {
|
|
1102
|
+
closeReasoningIfOpen();
|
|
1103
|
+
if (abortController.signal.aborted) {} else {
|
|
1104
|
+
const finishedEvent = {
|
|
1105
|
+
type: _ag_ui_client.EventType.RUN_FINISHED,
|
|
1106
|
+
threadId: input.threadId,
|
|
1107
|
+
runId: input.runId,
|
|
1108
|
+
...pendingInterrupts.length > 0 ? { outcome: {
|
|
1109
|
+
type: "interrupt",
|
|
1110
|
+
interrupts: pendingInterrupts
|
|
1111
|
+
} } : {}
|
|
1112
|
+
};
|
|
1113
|
+
subscriber.next(finishedEvent);
|
|
1114
|
+
}
|
|
1115
|
+
terminalEventEmitted = true;
|
|
1116
|
+
subscriber.complete();
|
|
1117
|
+
}
|
|
1118
|
+
} catch (error) {
|
|
1119
|
+
closeReasoningIfOpen();
|
|
1120
|
+
if (abortController.signal.aborted) subscriber.complete();
|
|
1121
|
+
else {
|
|
1122
|
+
const runErrorEvent = {
|
|
1123
|
+
type: _ag_ui_client.EventType.RUN_ERROR,
|
|
1124
|
+
message: error instanceof Error ? error.message : String(error),
|
|
1125
|
+
threadId: input.threadId,
|
|
1126
|
+
runId: input.runId
|
|
1127
|
+
};
|
|
1128
|
+
subscriber.next(runErrorEvent);
|
|
1129
|
+
terminalEventEmitted = true;
|
|
1130
|
+
subscriber.error(error);
|
|
1131
|
+
}
|
|
1132
|
+
} finally {
|
|
1133
|
+
if (this.abortController === abortController) this.abortController = void 0;
|
|
1134
|
+
await Promise.all(mcpClients.map((client) => client.close()));
|
|
1135
|
+
}
|
|
1136
|
+
})();
|
|
1137
|
+
return () => {
|
|
1138
|
+
abortController.abort();
|
|
1139
|
+
if (this.abortController === abortController) this.abortController = void 0;
|
|
1140
|
+
Promise.all(mcpClients.map((client) => client.close())).catch(() => {});
|
|
1141
|
+
};
|
|
1142
|
+
});
|
|
1143
|
+
}
|
|
1144
|
+
runFactory(input, config) {
|
|
1145
|
+
if (this.abortController) throw new Error("Agent is already running. Call abortRun() first or create a new instance.");
|
|
1146
|
+
this.abortController = new AbortController();
|
|
1147
|
+
const controller = this.abortController;
|
|
1148
|
+
return new rxjs.Observable((subscriber) => {
|
|
1149
|
+
const startEvent = {
|
|
1150
|
+
type: _ag_ui_client.EventType.RUN_STARTED,
|
|
1151
|
+
threadId: input.threadId,
|
|
1152
|
+
runId: input.runId,
|
|
1153
|
+
protocolVersion: _ag_ui_client.PROTOCOL_VERSION
|
|
1154
|
+
};
|
|
1155
|
+
subscriber.next(startEvent);
|
|
1156
|
+
const ctx = {
|
|
1157
|
+
input,
|
|
1158
|
+
abortController: controller,
|
|
1159
|
+
abortSignal: controller.signal,
|
|
1160
|
+
interrupt: async (interrupts) => {
|
|
1161
|
+
const resume = input.resume ?? [];
|
|
1162
|
+
const ids = new Set(interrupts.map((i) => i.id));
|
|
1163
|
+
const matching = resume.filter((r) => ids.has(r.interruptId));
|
|
1164
|
+
if (interrupts.length > 0 && matching.length === interrupts.length) return matching;
|
|
1165
|
+
throw new InterruptSignal(interrupts);
|
|
1166
|
+
}
|
|
1167
|
+
};
|
|
1168
|
+
(async () => {
|
|
1169
|
+
const runFinishedDetails = {};
|
|
1170
|
+
try {
|
|
1171
|
+
const toolCallIds = new Set(input.messages.flatMap((message) => message.role === "assistant" ? (message.toolCalls ?? []).map((call) => call.id) : []));
|
|
1172
|
+
const answeredToolMessages = input.messages.filter((message) => message.role === "tool");
|
|
1173
|
+
const answeredToolCallIds = new Set(answeredToolMessages.map((message) => message.toolCallId));
|
|
1174
|
+
const nativeResume = config.type === "custom" ? [] : input.resume ?? [];
|
|
1175
|
+
const resumeToolMessages = [];
|
|
1176
|
+
const decisionsByCall = /* @__PURE__ */ new Map();
|
|
1177
|
+
for (const entry of nativeResume) {
|
|
1178
|
+
if (!toolCallIds.has(entry.interruptId)) continue;
|
|
1179
|
+
const content = JSON.stringify(entry.status === "cancelled" ? { status: "cancelled" } : entry.payload ?? { status: "resolved" });
|
|
1180
|
+
if (decisionsByCall.has(entry.interruptId)) {
|
|
1181
|
+
if (decisionsByCall.get(entry.interruptId) !== content) throw new Error(`Conflicting decisions for resumed tool call ${entry.interruptId}`);
|
|
1182
|
+
continue;
|
|
1183
|
+
}
|
|
1184
|
+
decisionsByCall.set(entry.interruptId, content);
|
|
1185
|
+
if (answeredToolCallIds.has(entry.interruptId)) continue;
|
|
1186
|
+
resumeToolMessages.push({
|
|
1187
|
+
id: (0, _copilotkit_shared.randomUUID)(),
|
|
1188
|
+
role: "tool",
|
|
1189
|
+
toolCallId: entry.interruptId,
|
|
1190
|
+
content
|
|
1191
|
+
});
|
|
1192
|
+
}
|
|
1193
|
+
const resumedIds = new Set(nativeResume.map((entry) => entry.interruptId));
|
|
1194
|
+
const resumedResults = new Map([...answeredToolMessages, ...resumeToolMessages].filter((message) => resumedIds.has(message.toolCallId)).map((message) => [message.toolCallId, message.content]));
|
|
1195
|
+
for (const message of resumeToolMessages) {
|
|
1196
|
+
const event = {
|
|
1197
|
+
type: _ag_ui_client.EventType.TOOL_CALL_RESULT,
|
|
1198
|
+
messageId: message.id,
|
|
1199
|
+
toolCallId: message.toolCallId,
|
|
1200
|
+
role: "tool",
|
|
1201
|
+
content: message.content
|
|
1202
|
+
};
|
|
1203
|
+
subscriber.next(event);
|
|
1204
|
+
}
|
|
1205
|
+
const factoryInput = resumeToolMessages.length > 0 && config.type !== "custom" ? {
|
|
1206
|
+
...input,
|
|
1207
|
+
messages: [...input.messages, ...resumeToolMessages]
|
|
1208
|
+
} : input;
|
|
1209
|
+
const learnedSkills = await require_learned_skills.prepareLearnedSkills(this.skillRegistry, controller.signal);
|
|
1210
|
+
controller.signal.throwIfAborted();
|
|
1211
|
+
const factoryCtx = {
|
|
1212
|
+
...ctx,
|
|
1213
|
+
input: factoryInput,
|
|
1214
|
+
learnedSkills
|
|
1215
|
+
};
|
|
1216
|
+
let events;
|
|
1217
|
+
let customRunFinishedEvent;
|
|
1218
|
+
const pendingInterrupts = [];
|
|
1219
|
+
switch (config.type) {
|
|
1220
|
+
case "aisdk":
|
|
1221
|
+
events = require_aisdk.convertAISDKStream((await config.factory(factoryCtx)).fullStream, controller.signal, pendingInterrupts, input.state, runFinishedDetails);
|
|
1222
|
+
break;
|
|
1223
|
+
case "tanstack":
|
|
1224
|
+
events = require_tanstack.convertTanStackStream(await config.factory(factoryCtx), controller.signal, pendingInterrupts, input.state, runFinishedDetails);
|
|
1225
|
+
break;
|
|
1226
|
+
case "custom":
|
|
1227
|
+
events = await config.factory(factoryCtx);
|
|
1228
|
+
break;
|
|
1229
|
+
default: {
|
|
1230
|
+
const _exhaustive = config;
|
|
1231
|
+
throw new Error(`Unknown agent config type: ${_exhaustive.type}`);
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
for await (const event of events) {
|
|
1235
|
+
if (event.type === _ag_ui_client.EventType.TOOL_CALL_RESULT && "toolCallId" in event && typeof event.toolCallId === "string" && "content" in event && resumedResults.has(event.toolCallId)) {
|
|
1236
|
+
if (resumedResults.get(event.toolCallId) !== event.content) throw new Error(`Conflicting result for resumed tool call ${event.toolCallId}`);
|
|
1237
|
+
continue;
|
|
1238
|
+
}
|
|
1239
|
+
if (config.type === "custom" && event.type === _ag_ui_client.EventType.RUN_FINISHED) {
|
|
1240
|
+
customRunFinishedEvent = event;
|
|
1241
|
+
require_usage.collectStandardRunFinishedDetails(event, runFinishedDetails);
|
|
1242
|
+
continue;
|
|
1243
|
+
}
|
|
1244
|
+
subscriber.next(event);
|
|
1245
|
+
}
|
|
1246
|
+
if (pendingInterrupts.length > 0 && !controller.signal.aborted) throw new InterruptSignal(pendingInterrupts);
|
|
1247
|
+
if (!controller.signal.aborted) {
|
|
1248
|
+
const finishedEvent = {
|
|
1249
|
+
...customRunFinishedEvent,
|
|
1250
|
+
type: _ag_ui_client.EventType.RUN_FINISHED,
|
|
1251
|
+
threadId: input.threadId,
|
|
1252
|
+
runId: input.runId,
|
|
1253
|
+
...runFinishedDetails
|
|
1254
|
+
};
|
|
1255
|
+
subscriber.next(finishedEvent);
|
|
1256
|
+
}
|
|
1257
|
+
subscriber.complete();
|
|
1258
|
+
} catch (error) {
|
|
1259
|
+
if (error instanceof InterruptSignal) {
|
|
1260
|
+
const finishedEvent = {
|
|
1261
|
+
type: _ag_ui_client.EventType.RUN_FINISHED,
|
|
1262
|
+
threadId: input.threadId,
|
|
1263
|
+
runId: input.runId,
|
|
1264
|
+
...runFinishedDetails,
|
|
1265
|
+
outcome: {
|
|
1266
|
+
type: "interrupt",
|
|
1267
|
+
interrupts: error.interrupts
|
|
1268
|
+
}
|
|
1269
|
+
};
|
|
1270
|
+
subscriber.next(finishedEvent);
|
|
1271
|
+
subscriber.complete();
|
|
1272
|
+
} else if (controller.signal.aborted) subscriber.complete();
|
|
1273
|
+
else {
|
|
1274
|
+
const runErrorEvent = {
|
|
1275
|
+
type: _ag_ui_client.EventType.RUN_ERROR,
|
|
1276
|
+
message: error instanceof Error ? error.message : String(error),
|
|
1277
|
+
threadId: input.threadId,
|
|
1278
|
+
runId: input.runId
|
|
1279
|
+
};
|
|
1280
|
+
subscriber.next(runErrorEvent);
|
|
1281
|
+
subscriber.error(error);
|
|
1282
|
+
}
|
|
1283
|
+
} finally {
|
|
1284
|
+
if (this.abortController === controller) this.abortController = void 0;
|
|
1285
|
+
}
|
|
1286
|
+
})();
|
|
1287
|
+
return () => {
|
|
1288
|
+
controller.abort();
|
|
1289
|
+
if (this.abortController === controller) this.abortController = void 0;
|
|
1290
|
+
};
|
|
1291
|
+
});
|
|
1292
|
+
}
|
|
1293
|
+
clone() {
|
|
1294
|
+
const cloned = new BuiltInAgent({
|
|
1295
|
+
...this.config,
|
|
1296
|
+
learnedSkills: void 0
|
|
1297
|
+
});
|
|
1298
|
+
cloned.config = this.config;
|
|
1299
|
+
cloned.skillRegistry = this.skillRegistry;
|
|
1300
|
+
cloned.middlewares = [...this.middlewares];
|
|
1301
|
+
return cloned;
|
|
1302
|
+
}
|
|
1303
|
+
abortRun() {
|
|
1304
|
+
this.abortController?.abort();
|
|
1305
|
+
}
|
|
1306
|
+
};
|
|
1307
|
+
/**
|
|
1308
|
+
* @deprecated Use BuiltInAgent instead
|
|
1309
|
+
*/
|
|
1310
|
+
var BasicAgent = class extends BuiltInAgent {
|
|
1311
|
+
constructor(config) {
|
|
1312
|
+
super(config);
|
|
1313
|
+
console.warn("BasicAgent is deprecated, use BuiltInAgent instead");
|
|
1314
|
+
}
|
|
1315
|
+
};
|
|
1316
|
+
|
|
1317
|
+
//#endregion
|
|
1318
|
+
exports.BasicAgent = BasicAgent;
|
|
1319
|
+
exports.BuiltInAgent = BuiltInAgent;
|
|
1320
|
+
exports.InterruptSignal = InterruptSignal;
|
|
1321
|
+
exports.classifyModelSpec = classifyModelSpec;
|
|
1322
|
+
exports.convertJsonSchemaToZodSchema = convertJsonSchemaToZodSchema;
|
|
1323
|
+
exports.convertMessagesToVercelAISDKMessages = convertMessagesToVercelAISDKMessages;
|
|
1324
|
+
exports.convertToolDefinitionsToVercelAITools = convertToolDefinitionsToVercelAITools;
|
|
1325
|
+
exports.convertToolsToVercelAITools = convertToolsToVercelAITools;
|
|
1326
|
+
exports.defineTool = defineTool;
|
|
1327
|
+
exports.resolveModel = resolveModel;
|
|
1328
|
+
//# sourceMappingURL=index.cjs.map
|