@copilotkit/runtime 1.54.1 → 1.55.0-next.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/.eslintrc.js +4 -4
  2. package/CHANGELOG.md +125 -113
  3. package/dist/_virtual/_rolldown/runtime.mjs +25 -1
  4. package/dist/agent/index.cjs +654 -0
  5. package/dist/agent/index.cjs.map +1 -0
  6. package/dist/agent/index.d.cts +263 -0
  7. package/dist/agent/index.d.cts.map +1 -0
  8. package/dist/agent/index.d.mts +263 -0
  9. package/dist/agent/index.d.mts.map +1 -0
  10. package/dist/agent/index.mjs +646 -0
  11. package/dist/agent/index.mjs.map +1 -0
  12. package/dist/graphql/message-conversion/agui-to-gql.cjs.map +1 -1
  13. package/dist/graphql/message-conversion/agui-to-gql.mjs.map +1 -1
  14. package/dist/lib/integrations/nextjs/app-router.cjs +2 -2
  15. package/dist/lib/integrations/nextjs/app-router.cjs.map +1 -1
  16. package/dist/lib/integrations/nextjs/app-router.mjs +1 -1
  17. package/dist/lib/integrations/nextjs/app-router.mjs.map +1 -1
  18. package/dist/lib/integrations/node-http/index.cjs +2 -3
  19. package/dist/lib/integrations/node-http/index.cjs.map +1 -1
  20. package/dist/lib/integrations/node-http/index.mjs +1 -1
  21. package/dist/lib/integrations/node-http/index.mjs.map +1 -1
  22. package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs +1 -1
  23. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts +2 -2
  24. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts.map +1 -1
  25. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts +3 -3
  26. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts.map +1 -1
  27. package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs +1 -1
  28. package/dist/lib/runtime/copilot-runtime.cjs +7 -5
  29. package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
  30. package/dist/lib/runtime/copilot-runtime.d.cts +10 -8
  31. package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
  32. package/dist/lib/runtime/copilot-runtime.d.mts +10 -8
  33. package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
  34. package/dist/lib/runtime/copilot-runtime.mjs +7 -5
  35. package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
  36. package/dist/lib/runtime/telemetry-agent-runner.cjs +2 -2
  37. package/dist/lib/runtime/telemetry-agent-runner.cjs.map +1 -1
  38. package/dist/lib/runtime/telemetry-agent-runner.d.cts +2 -1
  39. package/dist/lib/runtime/telemetry-agent-runner.d.cts.map +1 -1
  40. package/dist/lib/runtime/telemetry-agent-runner.d.mts +2 -1
  41. package/dist/lib/runtime/telemetry-agent-runner.d.mts.map +1 -1
  42. package/dist/lib/runtime/telemetry-agent-runner.mjs +1 -1
  43. package/dist/lib/runtime/telemetry-agent-runner.mjs.map +1 -1
  44. package/dist/lib/telemetry-client.cjs +1 -1
  45. package/dist/lib/telemetry-client.mjs +1 -1
  46. package/dist/package.cjs +21 -4
  47. package/dist/package.mjs +21 -4
  48. package/dist/service-adapters/anthropic/anthropic-adapter.d.mts +1 -1
  49. package/dist/v2/index.cjs +41 -15
  50. package/dist/v2/index.d.cts +14 -2
  51. package/dist/v2/index.d.mts +14 -2
  52. package/dist/v2/index.mjs +13 -4
  53. package/dist/v2/runtime/endpoints/express-single.cjs +190 -0
  54. package/dist/v2/runtime/endpoints/express-single.cjs.map +1 -0
  55. package/dist/v2/runtime/endpoints/express-single.d.cts +16 -0
  56. package/dist/v2/runtime/endpoints/express-single.d.cts.map +1 -0
  57. package/dist/v2/runtime/endpoints/express-single.d.mts +16 -0
  58. package/dist/v2/runtime/endpoints/express-single.d.mts.map +1 -0
  59. package/dist/v2/runtime/endpoints/express-single.mjs +187 -0
  60. package/dist/v2/runtime/endpoints/express-single.mjs.map +1 -0
  61. package/dist/v2/runtime/endpoints/express-utils.cjs +119 -0
  62. package/dist/v2/runtime/endpoints/express-utils.cjs.map +1 -0
  63. package/dist/v2/runtime/endpoints/express-utils.mjs +117 -0
  64. package/dist/v2/runtime/endpoints/express-utils.mjs.map +1 -0
  65. package/dist/v2/runtime/endpoints/express.cjs +217 -0
  66. package/dist/v2/runtime/endpoints/express.cjs.map +1 -0
  67. package/dist/v2/runtime/endpoints/express.d.cts +16 -0
  68. package/dist/v2/runtime/endpoints/express.d.cts.map +1 -0
  69. package/dist/v2/runtime/endpoints/express.d.mts +16 -0
  70. package/dist/v2/runtime/endpoints/express.d.mts.map +1 -0
  71. package/dist/v2/runtime/endpoints/express.mjs +214 -0
  72. package/dist/v2/runtime/endpoints/express.mjs.map +1 -0
  73. package/dist/v2/runtime/endpoints/hono-single.cjs +141 -0
  74. package/dist/v2/runtime/endpoints/hono-single.cjs.map +1 -0
  75. package/dist/v2/runtime/endpoints/hono-single.d.cts +41 -0
  76. package/dist/v2/runtime/endpoints/hono-single.d.cts.map +1 -0
  77. package/dist/v2/runtime/endpoints/hono-single.d.mts +41 -0
  78. package/dist/v2/runtime/endpoints/hono-single.d.mts.map +1 -0
  79. package/dist/v2/runtime/endpoints/hono-single.mjs +140 -0
  80. package/dist/v2/runtime/endpoints/hono-single.mjs.map +1 -0
  81. package/dist/v2/runtime/endpoints/hono.cjs +248 -0
  82. package/dist/v2/runtime/endpoints/hono.cjs.map +1 -0
  83. package/dist/v2/runtime/endpoints/hono.d.cts +164 -0
  84. package/dist/v2/runtime/endpoints/hono.d.cts.map +1 -0
  85. package/dist/v2/runtime/endpoints/hono.d.mts +164 -0
  86. package/dist/v2/runtime/endpoints/hono.d.mts.map +1 -0
  87. package/dist/v2/runtime/endpoints/hono.mjs +247 -0
  88. package/dist/v2/runtime/endpoints/hono.mjs.map +1 -0
  89. package/dist/v2/runtime/endpoints/index.d.cts +5 -0
  90. package/dist/v2/runtime/endpoints/index.d.mts +5 -0
  91. package/dist/v2/runtime/endpoints/single-route-helpers.cjs +68 -0
  92. package/dist/v2/runtime/endpoints/single-route-helpers.cjs.map +1 -0
  93. package/dist/v2/runtime/endpoints/single-route-helpers.mjs +65 -0
  94. package/dist/v2/runtime/endpoints/single-route-helpers.mjs.map +1 -0
  95. package/dist/v2/runtime/handlers/get-runtime-info.cjs +51 -0
  96. package/dist/v2/runtime/handlers/get-runtime-info.cjs.map +1 -0
  97. package/dist/v2/runtime/handlers/get-runtime-info.mjs +51 -0
  98. package/dist/v2/runtime/handlers/get-runtime-info.mjs.map +1 -0
  99. package/dist/v2/runtime/handlers/handle-connect.cjs +49 -0
  100. package/dist/v2/runtime/handlers/handle-connect.cjs.map +1 -0
  101. package/dist/v2/runtime/handlers/handle-connect.mjs +49 -0
  102. package/dist/v2/runtime/handlers/handle-connect.mjs.map +1 -0
  103. package/dist/v2/runtime/handlers/handle-run.cjs +61 -0
  104. package/dist/v2/runtime/handlers/handle-run.cjs.map +1 -0
  105. package/dist/v2/runtime/handlers/handle-run.mjs +61 -0
  106. package/dist/v2/runtime/handlers/handle-run.mjs.map +1 -0
  107. package/dist/v2/runtime/handlers/handle-stop.cjs +47 -0
  108. package/dist/v2/runtime/handlers/handle-stop.cjs.map +1 -0
  109. package/dist/v2/runtime/handlers/handle-stop.mjs +46 -0
  110. package/dist/v2/runtime/handlers/handle-stop.mjs.map +1 -0
  111. package/dist/v2/runtime/handlers/handle-transcribe.cjs +112 -0
  112. package/dist/v2/runtime/handlers/handle-transcribe.cjs.map +1 -0
  113. package/dist/v2/runtime/handlers/handle-transcribe.mjs +111 -0
  114. package/dist/v2/runtime/handlers/handle-transcribe.mjs.map +1 -0
  115. package/dist/v2/runtime/handlers/header-utils.cjs +26 -0
  116. package/dist/v2/runtime/handlers/header-utils.cjs.map +1 -0
  117. package/dist/v2/runtime/handlers/header-utils.mjs +25 -0
  118. package/dist/v2/runtime/handlers/header-utils.mjs.map +1 -0
  119. package/dist/v2/runtime/handlers/intelligence/connect.cjs +37 -0
  120. package/dist/v2/runtime/handlers/intelligence/connect.cjs.map +1 -0
  121. package/dist/v2/runtime/handlers/intelligence/connect.mjs +37 -0
  122. package/dist/v2/runtime/handlers/intelligence/connect.mjs.map +1 -0
  123. package/dist/v2/runtime/handlers/intelligence/run.cjs +89 -0
  124. package/dist/v2/runtime/handlers/intelligence/run.cjs.map +1 -0
  125. package/dist/v2/runtime/handlers/intelligence/run.mjs +88 -0
  126. package/dist/v2/runtime/handlers/intelligence/run.mjs.map +1 -0
  127. package/dist/v2/runtime/handlers/intelligence/thread-names.cjs +146 -0
  128. package/dist/v2/runtime/handlers/intelligence/thread-names.cjs.map +1 -0
  129. package/dist/v2/runtime/handlers/intelligence/thread-names.mjs +145 -0
  130. package/dist/v2/runtime/handlers/intelligence/thread-names.mjs.map +1 -0
  131. package/dist/v2/runtime/handlers/intelligence/threads.cjs +159 -0
  132. package/dist/v2/runtime/handlers/intelligence/threads.cjs.map +1 -0
  133. package/dist/v2/runtime/handlers/intelligence/threads.mjs +154 -0
  134. package/dist/v2/runtime/handlers/intelligence/threads.mjs.map +1 -0
  135. package/dist/v2/runtime/handlers/shared/agent-utils.cjs +74 -0
  136. package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -0
  137. package/dist/v2/runtime/handlers/shared/agent-utils.mjs +70 -0
  138. package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -0
  139. package/dist/v2/runtime/handlers/shared/intelligence-utils.cjs +21 -0
  140. package/dist/v2/runtime/handlers/shared/intelligence-utils.cjs.map +1 -0
  141. package/dist/v2/runtime/handlers/shared/intelligence-utils.mjs +20 -0
  142. package/dist/v2/runtime/handlers/shared/intelligence-utils.mjs.map +1 -0
  143. package/dist/v2/runtime/handlers/shared/json-response.cjs +12 -0
  144. package/dist/v2/runtime/handlers/shared/json-response.cjs.map +1 -0
  145. package/dist/v2/runtime/handlers/shared/json-response.mjs +10 -0
  146. package/dist/v2/runtime/handlers/shared/json-response.mjs.map +1 -0
  147. package/dist/v2/runtime/handlers/shared/resolve-intelligence-user.cjs +20 -0
  148. package/dist/v2/runtime/handlers/shared/resolve-intelligence-user.cjs.map +1 -0
  149. package/dist/v2/runtime/handlers/shared/resolve-intelligence-user.mjs +20 -0
  150. package/dist/v2/runtime/handlers/shared/resolve-intelligence-user.mjs.map +1 -0
  151. package/dist/v2/runtime/handlers/shared/sse-response.cjs +69 -0
  152. package/dist/v2/runtime/handlers/shared/sse-response.cjs.map +1 -0
  153. package/dist/v2/runtime/handlers/shared/sse-response.mjs +68 -0
  154. package/dist/v2/runtime/handlers/shared/sse-response.mjs.map +1 -0
  155. package/dist/v2/runtime/handlers/sse/connect.cjs +18 -0
  156. package/dist/v2/runtime/handlers/sse/connect.cjs.map +1 -0
  157. package/dist/v2/runtime/handlers/sse/connect.mjs +18 -0
  158. package/dist/v2/runtime/handlers/sse/connect.mjs.map +1 -0
  159. package/dist/v2/runtime/handlers/sse/run.cjs +18 -0
  160. package/dist/v2/runtime/handlers/sse/run.cjs.map +1 -0
  161. package/dist/v2/runtime/handlers/sse/run.mjs +18 -0
  162. package/dist/v2/runtime/handlers/sse/run.mjs.map +1 -0
  163. package/dist/v2/runtime/index.d.cts +13 -0
  164. package/dist/v2/runtime/index.d.mts +14 -0
  165. package/dist/v2/runtime/intelligence-platform/client.cjs +333 -0
  166. package/dist/v2/runtime/intelligence-platform/client.cjs.map +1 -0
  167. package/dist/v2/runtime/intelligence-platform/client.d.cts +336 -0
  168. package/dist/v2/runtime/intelligence-platform/client.d.cts.map +1 -0
  169. package/dist/v2/runtime/intelligence-platform/client.d.mts +336 -0
  170. package/dist/v2/runtime/intelligence-platform/client.d.mts.map +1 -0
  171. package/dist/v2/runtime/intelligence-platform/client.mjs +331 -0
  172. package/dist/v2/runtime/intelligence-platform/client.mjs.map +1 -0
  173. package/dist/v2/runtime/intelligence-platform/index.d.mts +2 -0
  174. package/dist/v2/runtime/middleware-sse-parser.cjs +138 -0
  175. package/dist/v2/runtime/middleware-sse-parser.cjs.map +1 -0
  176. package/dist/v2/runtime/middleware-sse-parser.d.cts +22 -0
  177. package/dist/v2/runtime/middleware-sse-parser.d.cts.map +1 -0
  178. package/dist/v2/runtime/middleware-sse-parser.d.mts +22 -0
  179. package/dist/v2/runtime/middleware-sse-parser.d.mts.map +1 -0
  180. package/dist/v2/runtime/middleware-sse-parser.mjs +137 -0
  181. package/dist/v2/runtime/middleware-sse-parser.mjs.map +1 -0
  182. package/dist/v2/runtime/middleware.cjs +35 -0
  183. package/dist/v2/runtime/middleware.cjs.map +1 -0
  184. package/dist/v2/runtime/middleware.d.cts +32 -0
  185. package/dist/v2/runtime/middleware.d.cts.map +1 -0
  186. package/dist/v2/runtime/middleware.d.mts +32 -0
  187. package/dist/v2/runtime/middleware.d.mts.map +1 -0
  188. package/dist/v2/runtime/middleware.mjs +33 -0
  189. package/dist/v2/runtime/middleware.mjs.map +1 -0
  190. package/dist/v2/runtime/runner/agent-runner.cjs +8 -0
  191. package/dist/v2/runtime/runner/agent-runner.cjs.map +1 -0
  192. package/dist/v2/runtime/runner/agent-runner.d.cts +32 -0
  193. package/dist/v2/runtime/runner/agent-runner.d.cts.map +1 -0
  194. package/dist/v2/runtime/runner/agent-runner.d.mts +32 -0
  195. package/dist/v2/runtime/runner/agent-runner.d.mts.map +1 -0
  196. package/dist/v2/runtime/runner/agent-runner.mjs +7 -0
  197. package/dist/v2/runtime/runner/agent-runner.mjs.map +1 -0
  198. package/dist/v2/runtime/runner/in-memory.cjs +223 -0
  199. package/dist/v2/runtime/runner/in-memory.cjs.map +1 -0
  200. package/dist/v2/runtime/runner/in-memory.d.cts +15 -0
  201. package/dist/v2/runtime/runner/in-memory.d.cts.map +1 -0
  202. package/dist/v2/runtime/runner/in-memory.d.mts +15 -0
  203. package/dist/v2/runtime/runner/in-memory.d.mts.map +1 -0
  204. package/dist/v2/runtime/runner/in-memory.mjs +222 -0
  205. package/dist/v2/runtime/runner/in-memory.mjs.map +1 -0
  206. package/dist/v2/runtime/runner/index.d.cts +6 -0
  207. package/dist/v2/runtime/runner/index.d.mts +6 -0
  208. package/dist/v2/runtime/runner/index.mjs +7 -0
  209. package/dist/v2/runtime/runner/intelligence.cjs +246 -0
  210. package/dist/v2/runtime/runner/intelligence.cjs.map +1 -0
  211. package/dist/v2/runtime/runner/intelligence.d.cts +57 -0
  212. package/dist/v2/runtime/runner/intelligence.d.cts.map +1 -0
  213. package/dist/v2/runtime/runner/intelligence.d.mts +57 -0
  214. package/dist/v2/runtime/runner/intelligence.d.mts.map +1 -0
  215. package/dist/v2/runtime/runner/intelligence.mjs +245 -0
  216. package/dist/v2/runtime/runner/intelligence.mjs.map +1 -0
  217. package/dist/v2/runtime/runtime.cjs +101 -0
  218. package/dist/v2/runtime/runtime.cjs.map +1 -0
  219. package/dist/v2/runtime/runtime.d.cts +132 -0
  220. package/dist/v2/runtime/runtime.d.cts.map +1 -0
  221. package/dist/v2/runtime/runtime.d.mts +133 -0
  222. package/dist/v2/runtime/runtime.d.mts.map +1 -0
  223. package/dist/v2/runtime/runtime.mjs +97 -0
  224. package/dist/v2/runtime/runtime.mjs.map +1 -0
  225. package/dist/v2/runtime/telemetry/scarf-client.cjs +32 -0
  226. package/dist/v2/runtime/telemetry/scarf-client.cjs.map +1 -0
  227. package/dist/v2/runtime/telemetry/scarf-client.mjs +32 -0
  228. package/dist/v2/runtime/telemetry/scarf-client.mjs.map +1 -0
  229. package/dist/v2/runtime/telemetry/telemetry-client.cjs +35 -0
  230. package/dist/v2/runtime/telemetry/telemetry-client.cjs.map +1 -0
  231. package/dist/v2/runtime/telemetry/telemetry-client.mjs +35 -0
  232. package/dist/v2/runtime/telemetry/telemetry-client.mjs.map +1 -0
  233. package/dist/v2/runtime/transcription-service/transcription-service.cjs +8 -0
  234. package/dist/v2/runtime/transcription-service/transcription-service.cjs.map +1 -0
  235. package/dist/v2/runtime/transcription-service/transcription-service.d.cts +15 -0
  236. package/dist/v2/runtime/transcription-service/transcription-service.d.cts.map +1 -0
  237. package/dist/v2/runtime/transcription-service/transcription-service.d.mts +15 -0
  238. package/dist/v2/runtime/transcription-service/transcription-service.d.mts.map +1 -0
  239. package/dist/v2/runtime/transcription-service/transcription-service.mjs +7 -0
  240. package/dist/v2/runtime/transcription-service/transcription-service.mjs.map +1 -0
  241. package/package.json +24 -7
  242. package/src/agent/__tests__/ai-sdk-v6-compat.test.ts +116 -0
  243. package/src/agent/__tests__/basic-agent.test.ts +1698 -0
  244. package/src/agent/__tests__/config-tools-execution.test.ts +516 -0
  245. package/src/agent/__tests__/mcp-clients.test.ts +260 -0
  246. package/src/agent/__tests__/property-overrides.test.ts +598 -0
  247. package/src/agent/__tests__/standard-schema-tools.test.ts +313 -0
  248. package/src/agent/__tests__/standard-schema-types.test.ts +158 -0
  249. package/src/agent/__tests__/state-tools.test.ts +436 -0
  250. package/src/agent/__tests__/test-helpers.ts +193 -0
  251. package/src/agent/__tests__/utils.test.ts +536 -0
  252. package/src/agent/__tests__/zod-regression.test.ts +350 -0
  253. package/src/agent/index.ts +1329 -0
  254. package/src/graphql/message-conversion/agui-to-gql.test.ts +1 -1
  255. package/src/graphql/message-conversion/agui-to-gql.ts +1 -1
  256. package/src/graphql/message-conversion/gql-to-agui.ts +1 -1
  257. package/src/graphql/message-conversion/roundtrip-conversion.test.ts +1 -1
  258. package/src/lib/integrations/nextjs/app-router.ts +2 -2
  259. package/src/lib/integrations/node-http/index.ts +2 -2
  260. package/src/lib/runtime/copilot-runtime.ts +3 -5
  261. package/src/lib/runtime/telemetry-agent-runner.ts +1 -1
  262. package/src/service-adapters/conversion.test.ts +1 -1
  263. package/src/service-adapters/conversion.ts +1 -28
  264. package/src/v2/index.ts +5 -2
  265. package/src/v2/runtime/__tests__/cors-credentials.test.ts +320 -0
  266. package/src/v2/runtime/__tests__/express-abort-signal.test.ts +25 -0
  267. package/src/v2/runtime/__tests__/express-body-order.test.ts +76 -0
  268. package/src/v2/runtime/__tests__/express-single-sse.test.ts +122 -0
  269. package/src/v2/runtime/__tests__/get-runtime-info.test.ts +141 -0
  270. package/src/v2/runtime/__tests__/handle-connect.test.ts +423 -0
  271. package/src/v2/runtime/__tests__/handle-run.test.ts +910 -0
  272. package/src/v2/runtime/__tests__/handle-threads.test.ts +388 -0
  273. package/src/v2/runtime/__tests__/handle-transcribe.test.ts +301 -0
  274. package/src/v2/runtime/__tests__/header-utils.test.ts +88 -0
  275. package/src/v2/runtime/__tests__/in-process-agent-runner-messages.test.ts +230 -0
  276. package/src/v2/runtime/__tests__/in-process-agent-runner.test.ts +1030 -0
  277. package/src/v2/runtime/__tests__/middleware-express.test.ts +206 -0
  278. package/src/v2/runtime/__tests__/middleware-single-express.test.ts +211 -0
  279. package/src/v2/runtime/__tests__/middleware-single.test.ts +225 -0
  280. package/src/v2/runtime/__tests__/middleware-sse-parser.test.ts +187 -0
  281. package/src/v2/runtime/__tests__/middleware.test.ts +251 -0
  282. package/src/v2/runtime/__tests__/routing-express.test.ts +174 -0
  283. package/src/v2/runtime/__tests__/routing-single-express.test.ts +168 -0
  284. package/src/v2/runtime/__tests__/routing-single.test.ts +193 -0
  285. package/src/v2/runtime/__tests__/routing.test.ts +257 -0
  286. package/src/v2/runtime/__tests__/runtime.test.ts +123 -0
  287. package/src/v2/runtime/__tests__/telemetry.test.ts +167 -0
  288. package/src/v2/runtime/__tests__/thread-names.test.ts +188 -0
  289. package/src/v2/runtime/endpoints/express-single.ts +231 -0
  290. package/src/v2/runtime/endpoints/express-utils.ts +182 -0
  291. package/src/v2/runtime/endpoints/express.ts +275 -0
  292. package/src/v2/runtime/endpoints/hono-single.ts +212 -0
  293. package/src/v2/runtime/endpoints/hono.ts +314 -0
  294. package/src/v2/runtime/endpoints/index.ts +4 -0
  295. package/src/v2/runtime/endpoints/single-route-helpers.ts +125 -0
  296. package/src/v2/runtime/express.ts +2 -0
  297. package/src/v2/runtime/handler.ts +3 -0
  298. package/src/v2/runtime/handlers/get-runtime-info.ts +79 -0
  299. package/src/v2/runtime/handlers/handle-connect.ts +76 -0
  300. package/src/v2/runtime/handlers/handle-run.ts +89 -0
  301. package/src/v2/runtime/handlers/handle-stop.ts +76 -0
  302. package/src/v2/runtime/handlers/handle-threads.ts +7 -0
  303. package/src/v2/runtime/handlers/handle-transcribe.ts +256 -0
  304. package/src/v2/runtime/handlers/header-utils.ts +24 -0
  305. package/src/v2/runtime/handlers/intelligence/connect.ts +65 -0
  306. package/src/v2/runtime/handlers/intelligence/run.ts +152 -0
  307. package/src/v2/runtime/handlers/intelligence/thread-names.ts +246 -0
  308. package/src/v2/runtime/handlers/intelligence/threads.ts +233 -0
  309. package/src/v2/runtime/handlers/shared/agent-utils.ts +136 -0
  310. package/src/v2/runtime/handlers/shared/intelligence-utils.ts +21 -0
  311. package/src/v2/runtime/handlers/shared/json-response.ts +6 -0
  312. package/src/v2/runtime/handlers/shared/resolve-intelligence-user.ts +25 -0
  313. package/src/v2/runtime/handlers/shared/sse-response.ts +100 -0
  314. package/src/v2/runtime/handlers/sse/connect.ts +24 -0
  315. package/src/v2/runtime/handlers/sse/run.ts +27 -0
  316. package/src/v2/runtime/index.ts +20 -0
  317. package/src/v2/runtime/intelligence-platform/__tests__/client.test.ts +605 -0
  318. package/src/v2/runtime/intelligence-platform/client.ts +659 -0
  319. package/src/v2/runtime/intelligence-platform/index.ts +10 -0
  320. package/src/v2/runtime/middleware-sse-parser.ts +200 -0
  321. package/src/v2/runtime/middleware.ts +115 -0
  322. package/src/v2/runtime/runner/__tests__/finalize-events.test.ts +109 -0
  323. package/src/v2/runtime/runner/__tests__/in-memory-runner.e2e.test.ts +775 -0
  324. package/src/v2/runtime/runner/__tests__/in-memory-runner.test.ts +363 -0
  325. package/src/v2/runtime/runner/__tests__/intelligence-runner.test.ts +981 -0
  326. package/src/v2/runtime/runner/agent-runner.ts +36 -0
  327. package/src/v2/runtime/runner/in-memory.ts +381 -0
  328. package/src/v2/runtime/runner/index.ts +4 -0
  329. package/src/v2/runtime/runner/intelligence.ts +429 -0
  330. package/src/v2/runtime/runtime.ts +260 -0
  331. package/src/v2/runtime/telemetry/events.ts +35 -0
  332. package/src/v2/runtime/telemetry/index.ts +7 -0
  333. package/src/v2/runtime/telemetry/scarf-client.ts +39 -0
  334. package/src/v2/runtime/telemetry/telemetry-client.ts +70 -0
  335. package/src/v2/runtime/transcription-service/transcription-service.ts +11 -0
  336. package/tsconfig.json +9 -2
  337. package/tsdown.config.ts +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/agent/index.ts"],"mappings":";;;;;;;;;;;AA4DA;;KAAY,mBAAA;;;AAkBZ;KAAY,iBAAA;;;;KA8BA,cAAA,YAA0B,aAAA;;;;UAKrB,mBAAA;EAAA;;;EAIf,IAAA;EAAA;;;EAIA,GAAA;EAI8C;;AAMhD;EANE,OAAA,GAAU,oCAAA;AAAA;;;;UAMK,kBAAA;EAYL;;;EARV,IAAA;EAcyB;;;EAVzB,GAAA;EAoBe;;;EAhBf,OAAA,GAAU,MAAA;AAAA;;;;KAMA,eAAA,GAAkB,mBAAA,GAAsB,kBAAA;AAqBpD;;;;;;;;AAAA,UAXiB,iBAAA;EAcD;EAZd,KAAA,IAAS,OAAA,CAAQ,OAAA;AAAA;;;;;;;iBASH,YAAA,CACd,IAAA,EAAM,cAAA,EACN,MAAA,YACC,aAAA;;;;UA2Ec,cAAA,qBACK,gBAAA,GAAmB,gBAAA;EAEvC,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EACZ,OAAA,GAAU,IAAA,EAAM,iBAAA,CAAkB,WAAA,MAAiB,OAAA;AAAA;;;;;;;;AAWrD;iBAAgB,UAAA,qBAA+B,gBAAA,CAAA,CAAkB,MAAA;EAC/D,IAAA;EACA,WAAA;EACA,UAAA,EAAY,WAAA;EACZ,OAAA,GAAU,IAAA,EAAM,iBAAA,CAAkB,WAAA,MAAiB,OAAA;AAAA,IACjD,cAAA,CAAe,WAAA;;;;UA0CF,wBAAA;EACf,qBAAA;EACA,wBAAA;AAAA;;;;iBAMc,oCAAA,CACd,QAAA,EAAU,OAAA,IACV,OAAA,GAAS,wBAAA,GACR,YAAA;;;;UAmFO,UAAA;EACR,IAAA;EACA,WAAA;EACA,UAAA,GAAa,MAAA,SAAe,UAAA;EAC5B,QAAA;EACA,KAAA,GAAQ,UAAA;EACR,IAAA;AAAA;;;;iBAMc,8BAAA,CACd,UAAA,EAAY,UAAA,EACZ,QAAA,YACC,CAAA,CAAE,SAAA;AAAA,iBA+DW,2BAAA,CACd,KAAA,EAAO,aAAA,YACN,OAAA;;;;;;;;iBAgCa,qCAAA,CACd,KAAA,EAAO,cAAA,KACN,OAAA;;;;UA6Bc,yBAAA;EAlOF;;AA8Ed;EAwJC,KAAA,EAAO,iBAAA,GAAoB,aAAA;;;;;;;;EAQ3B,MAAA;EAxJA;;;EA4JA,QAAA;EA1JA;;;EA8JA,UAAA,GAAa,UAAA,CAAW,MAAA;EA7JpB;AAMN;;EA2JE,eAAA;EAxJY;;;EA4JZ,WAAA;EA5JC;;;EAgKD,IAAA;EAjGc;;;EAqGd,IAAA;EApGO;;;EAwGP,eAAA;EAvGQ;AAgCV;;EA2EE,gBAAA;EAzEQ;;;EA6ER,aAAA;EA7EQ;;AA6BV;EAoDE,IAAA;;;;EAIA,UAAA;EApCa;;;EAwCb,MAAA;EAwBQ;;;EApBR,qBAAA,GAAwB,mBAAA;EA5DxB;;;EAgEA,UAAA,GAAa,eAAA;EApDb;;;;;;;;;;;EAgEA,UAAA,GAAa,iBAAA;EAxBb;;;EA4BA,KAAA,GAAQ,cAAA;EAhBR;;;;EAqBA,qBAAA;EALQ;;;;EAUR,wBAAA;EAKwB;;AAG1B;;EAHE,eAAA,GAAkB,MAAA;AAAA;AAAA,cAGP,YAAA,SAAqB,aAAA;EAAA,QAGZ,MAAA;EAAA,QAFZ,eAAA;cAEY,MAAA,EAAQ,yBAAA;EA2oBvB;;;EApoBL,WAAA,CAAY,QAAA,EAAU,mBAAA;EAItB,GAAA,CAAI,KAAA,EAAO,aAAA,GAAgB,UAAA,CAAW,SAAA;EAgoBtC,KAAA,CAAA,GAAK,YAAA;EAQL,QAAA,CAAA;AAAA;;;;cAQW,UAAA,SAAmB,YAAA;cAClB,MAAA,EAAQ,yBAAA;AAAA;AAAA,KAMV,uBAAA,GAA0B,yBAAA"}
@@ -0,0 +1,646 @@
1
+ import "reflect-metadata";
2
+ import { createOpenAI } from "@ai-sdk/openai";
3
+ import { safeParseToolArgs, schemaToJsonSchema } from "@copilotkit/shared";
4
+ import { Observable } from "rxjs";
5
+ import { AbstractAgent, EventType } from "@ag-ui/client";
6
+ import { jsonSchema, stepCountIs, streamText, tool } from "ai";
7
+ import { experimental_createMCPClient } from "@ai-sdk/mcp";
8
+ import { createAnthropic } from "@ai-sdk/anthropic";
9
+ import { createGoogleGenerativeAI } from "@ai-sdk/google";
10
+ import { createVertex } from "@ai-sdk/google-vertex";
11
+ import { randomUUID as randomUUID$1 } from "crypto";
12
+ import { z } from "zod";
13
+ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
14
+ import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
15
+
16
+ //#region src/agent/index.ts
17
+ /**
18
+ * Resolves a model specifier to a LanguageModel instance
19
+ * @param spec - Model string (e.g., "openai/gpt-4o") or LanguageModel instance
20
+ * @param apiKey - Optional API key to use instead of environment variables
21
+ * @returns LanguageModel instance
22
+ */
23
+ function resolveModel(spec, apiKey) {
24
+ if (typeof spec !== "string") return spec;
25
+ const parts = spec.replace("/", ":").trim().split(":");
26
+ const rawProvider = parts[0];
27
+ const rest = parts.slice(1);
28
+ if (!rawProvider) throw new Error(`Invalid model string "${spec}". Use "openai/gpt-5", "anthropic/claude-sonnet-4.5", or "google/gemini-2.5-pro".`);
29
+ const provider = rawProvider.toLowerCase();
30
+ const model = rest.join(":").trim();
31
+ if (!model) throw new Error(`Invalid model string "${spec}". Use "openai/gpt-5", "anthropic/claude-sonnet-4.5", or "google/gemini-2.5-pro".`);
32
+ switch (provider) {
33
+ case "openai": return createOpenAI({ apiKey: apiKey || process.env.OPENAI_API_KEY })(model);
34
+ case "anthropic": return createAnthropic({ apiKey: apiKey || process.env.ANTHROPIC_API_KEY })(model);
35
+ case "google":
36
+ case "gemini":
37
+ case "google-gemini": return createGoogleGenerativeAI({ apiKey: apiKey || process.env.GOOGLE_API_KEY })(model);
38
+ case "vertex": return createVertex()(model);
39
+ default: throw new Error(`Unknown provider "${provider}" in "${spec}". Supported: openai, anthropic, google (gemini).`);
40
+ }
41
+ }
42
+ /**
43
+ * Define a tool for use with BuiltInAgent
44
+ * @param name - The name of the tool
45
+ * @param description - Description of what the tool does
46
+ * @param parameters - Schema for the tool's input parameters (any Standard Schema V1 compatible library: Zod, Valibot, ArkType, etc.)
47
+ * @param execute - Function to execute the tool server-side
48
+ * @returns Tool definition
49
+ */
50
+ function defineTool(config) {
51
+ return {
52
+ name: config.name,
53
+ description: config.description,
54
+ parameters: config.parameters,
55
+ execute: config.execute
56
+ };
57
+ }
58
+ function flattenUserMessageContent(content) {
59
+ if (!content) return "";
60
+ if (typeof content === "string") return content;
61
+ return content.map((part) => {
62
+ if (part && typeof part === "object" && "type" in part && part.type === "text" && typeof part.text === "string") return part.text;
63
+ return "";
64
+ }).filter((text) => text.length > 0).join("\n");
65
+ }
66
+ /**
67
+ * Converts AG-UI messages to Vercel AI SDK ModelMessage format
68
+ */
69
+ function convertMessagesToVercelAISDKMessages(messages, options = {}) {
70
+ const result = [];
71
+ for (const message of messages) if (message.role === "system" && options.forwardSystemMessages) {
72
+ const systemMsg = {
73
+ role: "system",
74
+ content: message.content ?? ""
75
+ };
76
+ result.push(systemMsg);
77
+ } else if (message.role === "developer" && options.forwardDeveloperMessages) {
78
+ const systemMsg = {
79
+ role: "system",
80
+ content: message.content ?? ""
81
+ };
82
+ result.push(systemMsg);
83
+ } else if (message.role === "assistant") {
84
+ const parts = message.content ? [{
85
+ type: "text",
86
+ text: message.content
87
+ }] : [];
88
+ for (const toolCall of message.toolCalls ?? []) {
89
+ const toolCallPart = {
90
+ type: "tool-call",
91
+ toolCallId: toolCall.id,
92
+ toolName: toolCall.function.name,
93
+ input: safeParseToolArgs(toolCall.function.arguments)
94
+ };
95
+ parts.push(toolCallPart);
96
+ }
97
+ const assistantMsg = {
98
+ role: "assistant",
99
+ content: parts
100
+ };
101
+ result.push(assistantMsg);
102
+ } else if (message.role === "user") {
103
+ const userMsg = {
104
+ role: "user",
105
+ content: flattenUserMessageContent(message.content)
106
+ };
107
+ result.push(userMsg);
108
+ } else if (message.role === "tool") {
109
+ let toolName = "unknown";
110
+ for (const msg of messages) if (msg.role === "assistant") {
111
+ for (const toolCall of msg.toolCalls ?? []) if (toolCall.id === message.toolCallId) {
112
+ toolName = toolCall.function.name;
113
+ break;
114
+ }
115
+ }
116
+ const toolMsg = {
117
+ role: "tool",
118
+ content: [{
119
+ type: "tool-result",
120
+ toolCallId: message.toolCallId,
121
+ toolName,
122
+ output: {
123
+ type: "text",
124
+ value: message.content
125
+ }
126
+ }]
127
+ };
128
+ result.push(toolMsg);
129
+ }
130
+ return result;
131
+ }
132
+ /**
133
+ * Converts JSON Schema to Zod schema
134
+ */
135
+ function convertJsonSchemaToZodSchema$1(jsonSchema, required) {
136
+ if (!jsonSchema.type) return required ? z.object({}) : z.object({}).optional();
137
+ if (jsonSchema.type === "object") {
138
+ const spec = {};
139
+ if (!jsonSchema.properties || !Object.keys(jsonSchema.properties).length) return !required ? z.object(spec).optional() : z.object(spec);
140
+ for (const [key, value] of Object.entries(jsonSchema.properties)) spec[key] = convertJsonSchemaToZodSchema$1(value, jsonSchema.required ? jsonSchema.required.includes(key) : false);
141
+ const schema = z.object(spec).describe(jsonSchema.description ?? "");
142
+ return required ? schema : schema.optional();
143
+ } else if (jsonSchema.type === "string") {
144
+ if (jsonSchema.enum && jsonSchema.enum.length > 0) {
145
+ const schema = z.enum(jsonSchema.enum).describe(jsonSchema.description ?? "");
146
+ return required ? schema : schema.optional();
147
+ }
148
+ const schema = z.string().describe(jsonSchema.description ?? "");
149
+ return required ? schema : schema.optional();
150
+ } else if (jsonSchema.type === "number" || jsonSchema.type === "integer") {
151
+ const schema = z.number().describe(jsonSchema.description ?? "");
152
+ return required ? schema : schema.optional();
153
+ } else if (jsonSchema.type === "boolean") {
154
+ const schema = z.boolean().describe(jsonSchema.description ?? "");
155
+ return required ? schema : schema.optional();
156
+ } else if (jsonSchema.type === "array") {
157
+ if (!jsonSchema.items) throw new Error("Array type must have items property");
158
+ const itemSchema = convertJsonSchemaToZodSchema$1(jsonSchema.items, true);
159
+ const schema = z.array(itemSchema).describe(jsonSchema.description ?? "");
160
+ return required ? schema : schema.optional();
161
+ }
162
+ console.error("Invalid JSON schema:", JSON.stringify(jsonSchema, null, 2));
163
+ throw new Error("Invalid JSON schema");
164
+ }
165
+ /**
166
+ * Converts AG-UI tools to Vercel AI SDK ToolSet
167
+ */
168
+ function isJsonSchema(obj) {
169
+ if (typeof obj !== "object" || obj === null) return false;
170
+ const schema = obj;
171
+ if (Object.keys(schema).length === 0) return true;
172
+ return typeof schema.type === "string" && [
173
+ "object",
174
+ "string",
175
+ "number",
176
+ "integer",
177
+ "boolean",
178
+ "array"
179
+ ].includes(schema.type);
180
+ }
181
+ function convertToolsToVercelAITools(tools) {
182
+ const result = {};
183
+ for (const tool$1 of tools) {
184
+ if (!isJsonSchema(tool$1.parameters)) throw new Error(`Invalid JSON schema for tool ${tool$1.name}`);
185
+ const zodSchema = convertJsonSchemaToZodSchema$1(tool$1.parameters, true);
186
+ result[tool$1.name] = tool({
187
+ description: tool$1.description,
188
+ inputSchema: zodSchema
189
+ });
190
+ }
191
+ return result;
192
+ }
193
+ /**
194
+ * Check whether a schema is a Zod schema by inspecting its Standard Schema vendor.
195
+ */
196
+ function isZodSchema(schema) {
197
+ return schema["~standard"]?.vendor === "zod";
198
+ }
199
+ /**
200
+ * Converts ToolDefinition array to Vercel AI SDK ToolSet.
201
+ *
202
+ * For Zod schemas, passes them directly to the AI SDK (Zod satisfies FlexibleSchema).
203
+ * For non-Zod schemas, converts to JSON Schema via schemaToJsonSchema() and wraps
204
+ * with the AI SDK's jsonSchema() helper.
205
+ */
206
+ function convertToolDefinitionsToVercelAITools(tools) {
207
+ const result = {};
208
+ for (const tool$2 of tools) if (isZodSchema(tool$2.parameters)) result[tool$2.name] = tool({
209
+ description: tool$2.description,
210
+ inputSchema: tool$2.parameters,
211
+ execute: tool$2.execute
212
+ });
213
+ else {
214
+ const jsonSchemaObj = schemaToJsonSchema(tool$2.parameters);
215
+ result[tool$2.name] = tool({
216
+ description: tool$2.description,
217
+ inputSchema: jsonSchema(jsonSchemaObj),
218
+ execute: tool$2.execute
219
+ });
220
+ }
221
+ return result;
222
+ }
223
+ var BuiltInAgent = class BuiltInAgent extends AbstractAgent {
224
+ constructor(config) {
225
+ super();
226
+ this.config = config;
227
+ }
228
+ /**
229
+ * Check if a property can be overridden by forwardedProps
230
+ */
231
+ canOverride(property) {
232
+ return this.config?.overridableProperties?.includes(property) ?? false;
233
+ }
234
+ run(input) {
235
+ return new Observable((subscriber) => {
236
+ const startEvent = {
237
+ type: EventType.RUN_STARTED,
238
+ threadId: input.threadId,
239
+ runId: input.runId
240
+ };
241
+ subscriber.next(startEvent);
242
+ const model = resolveModel(this.config.model, this.config.apiKey);
243
+ let systemPrompt = void 0;
244
+ const hasPrompt = !!this.config.prompt;
245
+ const hasContext = input.context && input.context.length > 0;
246
+ const hasState = input.state !== void 0 && input.state !== null && !(typeof input.state === "object" && Object.keys(input.state).length === 0);
247
+ if (hasPrompt || hasContext || hasState) {
248
+ const parts = [];
249
+ if (hasPrompt) parts.push(this.config.prompt);
250
+ if (hasContext) {
251
+ parts.push("\n## Context from the application\n");
252
+ for (const ctx of input.context) parts.push(`${ctx.description}:\n${ctx.value}\n`);
253
+ }
254
+ if (hasState) parts.push(`
255
+ ## Application State
256
+ This is state from the application that you can edit by calling AGUISendStateSnapshot or AGUISendStateDelta.
257
+ \`\`\`json\n${JSON.stringify(input.state, null, 2)}\n\`\`\`\n`);
258
+ systemPrompt = parts.join("");
259
+ }
260
+ const messages = convertMessagesToVercelAISDKMessages(input.messages, {
261
+ forwardSystemMessages: this.config.forwardSystemMessages,
262
+ forwardDeveloperMessages: this.config.forwardDeveloperMessages
263
+ });
264
+ if (systemPrompt) messages.unshift({
265
+ role: "system",
266
+ content: systemPrompt
267
+ });
268
+ let allTools = convertToolsToVercelAITools(input.tools);
269
+ if (this.config.tools && this.config.tools.length > 0) {
270
+ const configTools = convertToolDefinitionsToVercelAITools(this.config.tools);
271
+ allTools = {
272
+ ...allTools,
273
+ ...configTools
274
+ };
275
+ }
276
+ const streamTextParams = {
277
+ model,
278
+ messages,
279
+ tools: allTools,
280
+ toolChoice: this.config.toolChoice,
281
+ stopWhen: this.config.maxSteps ? stepCountIs(this.config.maxSteps) : void 0,
282
+ maxOutputTokens: this.config.maxOutputTokens,
283
+ temperature: this.config.temperature,
284
+ topP: this.config.topP,
285
+ topK: this.config.topK,
286
+ presencePenalty: this.config.presencePenalty,
287
+ frequencyPenalty: this.config.frequencyPenalty,
288
+ stopSequences: this.config.stopSequences,
289
+ seed: this.config.seed,
290
+ providerOptions: this.config.providerOptions,
291
+ maxRetries: this.config.maxRetries
292
+ };
293
+ if (input.forwardedProps && typeof input.forwardedProps === "object") {
294
+ const props = input.forwardedProps;
295
+ if (props.model !== void 0 && this.canOverride("model")) {
296
+ if (typeof props.model === "string" || typeof props.model === "object") streamTextParams.model = resolveModel(props.model, this.config.apiKey);
297
+ }
298
+ if (props.toolChoice !== void 0 && this.canOverride("toolChoice")) {
299
+ const toolChoice = props.toolChoice;
300
+ if (toolChoice === "auto" || toolChoice === "required" || toolChoice === "none" || typeof toolChoice === "object" && toolChoice !== null && "type" in toolChoice && toolChoice.type === "tool") streamTextParams.toolChoice = toolChoice;
301
+ }
302
+ if (typeof props.maxOutputTokens === "number" && this.canOverride("maxOutputTokens")) streamTextParams.maxOutputTokens = props.maxOutputTokens;
303
+ if (typeof props.temperature === "number" && this.canOverride("temperature")) streamTextParams.temperature = props.temperature;
304
+ if (typeof props.topP === "number" && this.canOverride("topP")) streamTextParams.topP = props.topP;
305
+ if (typeof props.topK === "number" && this.canOverride("topK")) streamTextParams.topK = props.topK;
306
+ if (typeof props.presencePenalty === "number" && this.canOverride("presencePenalty")) streamTextParams.presencePenalty = props.presencePenalty;
307
+ if (typeof props.frequencyPenalty === "number" && this.canOverride("frequencyPenalty")) streamTextParams.frequencyPenalty = props.frequencyPenalty;
308
+ if (Array.isArray(props.stopSequences) && this.canOverride("stopSequences")) {
309
+ if (props.stopSequences.every((item) => typeof item === "string")) streamTextParams.stopSequences = props.stopSequences;
310
+ }
311
+ if (typeof props.seed === "number" && this.canOverride("seed")) streamTextParams.seed = props.seed;
312
+ if (typeof props.maxRetries === "number" && this.canOverride("maxRetries")) streamTextParams.maxRetries = props.maxRetries;
313
+ if (props.providerOptions !== void 0 && this.canOverride("providerOptions")) {
314
+ if (typeof props.providerOptions === "object" && props.providerOptions !== null) streamTextParams.providerOptions = props.providerOptions;
315
+ }
316
+ }
317
+ const mcpClients = [];
318
+ (async () => {
319
+ const abortController = new AbortController();
320
+ this.abortController = abortController;
321
+ let terminalEventEmitted = false;
322
+ let messageId = randomUUID$1();
323
+ let reasoningMessageId = randomUUID$1();
324
+ let isInReasoning = false;
325
+ const closeReasoningIfOpen = () => {
326
+ if (!isInReasoning) return;
327
+ isInReasoning = false;
328
+ const reasoningMsgEnd = {
329
+ type: EventType.REASONING_MESSAGE_END,
330
+ messageId: reasoningMessageId
331
+ };
332
+ subscriber.next(reasoningMsgEnd);
333
+ const reasoningEnd = {
334
+ type: EventType.REASONING_END,
335
+ messageId: reasoningMessageId
336
+ };
337
+ subscriber.next(reasoningEnd);
338
+ };
339
+ try {
340
+ streamTextParams.tools = {
341
+ ...streamTextParams.tools,
342
+ AGUISendStateSnapshot: tool({
343
+ description: "Replace the entire application state with a new snapshot",
344
+ inputSchema: z.object({ snapshot: z.any().describe("The complete new state object") }),
345
+ execute: async ({ snapshot }) => {
346
+ return {
347
+ success: true,
348
+ snapshot
349
+ };
350
+ }
351
+ }),
352
+ AGUISendStateDelta: tool({
353
+ description: "Apply incremental updates to application state using JSON Patch operations",
354
+ inputSchema: z.object({ delta: z.array(z.object({
355
+ op: z.enum([
356
+ "add",
357
+ "replace",
358
+ "remove"
359
+ ]).describe("The operation to perform"),
360
+ path: z.string().describe("JSON Pointer path (e.g., '/foo/bar')"),
361
+ value: z.any().optional().describe("The value to set. Required for 'add' and 'replace' operations, ignored for 'remove'.")
362
+ })).describe("Array of JSON Patch operations") }),
363
+ execute: async ({ delta }) => {
364
+ return {
365
+ success: true,
366
+ delta
367
+ };
368
+ }
369
+ })
370
+ };
371
+ if (this.config.mcpClients && this.config.mcpClients.length > 0) for (const client of this.config.mcpClients) {
372
+ const mcpTools = await client.tools();
373
+ streamTextParams.tools = {
374
+ ...streamTextParams.tools,
375
+ ...mcpTools
376
+ };
377
+ }
378
+ if (this.config.mcpServers && this.config.mcpServers.length > 0) for (const serverConfig of this.config.mcpServers) {
379
+ let transport;
380
+ if (serverConfig.type === "http") transport = new StreamableHTTPClientTransport(new URL(serverConfig.url), serverConfig.options);
381
+ else if (serverConfig.type === "sse") transport = new SSEClientTransport(new URL(serverConfig.url), serverConfig.headers);
382
+ if (transport) {
383
+ const mcpClient = await experimental_createMCPClient({ transport });
384
+ mcpClients.push(mcpClient);
385
+ const mcpTools = await mcpClient.tools();
386
+ streamTextParams.tools = {
387
+ ...streamTextParams.tools,
388
+ ...mcpTools
389
+ };
390
+ }
391
+ }
392
+ const response = streamText({
393
+ ...streamTextParams,
394
+ abortSignal: abortController.signal
395
+ });
396
+ const toolCallStates = /* @__PURE__ */ new Map();
397
+ const ensureToolCallState = (toolCallId) => {
398
+ let state = toolCallStates.get(toolCallId);
399
+ if (!state) {
400
+ state = {
401
+ started: false,
402
+ hasArgsDelta: false,
403
+ ended: false
404
+ };
405
+ toolCallStates.set(toolCallId, state);
406
+ }
407
+ return state;
408
+ };
409
+ for await (const part of response.fullStream) {
410
+ if (part.type !== "reasoning-delta") closeReasoningIfOpen();
411
+ switch (part.type) {
412
+ case "abort": {
413
+ const abortEndEvent = {
414
+ type: EventType.RUN_FINISHED,
415
+ threadId: input.threadId,
416
+ runId: input.runId
417
+ };
418
+ subscriber.next(abortEndEvent);
419
+ terminalEventEmitted = true;
420
+ subscriber.complete();
421
+ break;
422
+ }
423
+ case "reasoning-start": {
424
+ const providedId = "id" in part ? part.id : void 0;
425
+ reasoningMessageId = providedId && providedId !== "0" ? providedId : randomUUID$1();
426
+ const reasoningStartEvent = {
427
+ type: EventType.REASONING_START,
428
+ messageId: reasoningMessageId
429
+ };
430
+ subscriber.next(reasoningStartEvent);
431
+ const reasoningMessageStart = {
432
+ type: EventType.REASONING_MESSAGE_START,
433
+ messageId: reasoningMessageId,
434
+ role: "reasoning"
435
+ };
436
+ subscriber.next(reasoningMessageStart);
437
+ isInReasoning = true;
438
+ break;
439
+ }
440
+ case "reasoning-delta": {
441
+ const delta = part.text ?? "";
442
+ if (!delta) break;
443
+ const reasoningDeltaEvent = {
444
+ type: EventType.REASONING_MESSAGE_CONTENT,
445
+ messageId: reasoningMessageId,
446
+ delta
447
+ };
448
+ subscriber.next(reasoningDeltaEvent);
449
+ break;
450
+ }
451
+ case "reasoning-end": break;
452
+ case "tool-input-start": {
453
+ const toolCallId = part.id;
454
+ const state = ensureToolCallState(toolCallId);
455
+ state.toolName = part.toolName;
456
+ if (!state.started) {
457
+ state.started = true;
458
+ const startEvent = {
459
+ type: EventType.TOOL_CALL_START,
460
+ parentMessageId: messageId,
461
+ toolCallId,
462
+ toolCallName: part.toolName
463
+ };
464
+ subscriber.next(startEvent);
465
+ }
466
+ break;
467
+ }
468
+ case "tool-input-delta": {
469
+ const toolCallId = part.id;
470
+ const state = ensureToolCallState(toolCallId);
471
+ state.hasArgsDelta = true;
472
+ const argsEvent = {
473
+ type: EventType.TOOL_CALL_ARGS,
474
+ toolCallId,
475
+ delta: part.delta
476
+ };
477
+ subscriber.next(argsEvent);
478
+ break;
479
+ }
480
+ case "tool-input-end": break;
481
+ case "text-start": {
482
+ const providedId = "id" in part ? part.id : void 0;
483
+ messageId = providedId && providedId !== "0" ? providedId : randomUUID$1();
484
+ break;
485
+ }
486
+ case "text-delta": {
487
+ const textDelta = "text" in part ? part.text : "";
488
+ const textEvent = {
489
+ type: EventType.TEXT_MESSAGE_CHUNK,
490
+ role: "assistant",
491
+ messageId,
492
+ delta: textDelta
493
+ };
494
+ subscriber.next(textEvent);
495
+ break;
496
+ }
497
+ case "tool-call": {
498
+ const toolCallId = part.toolCallId;
499
+ const state = ensureToolCallState(toolCallId);
500
+ state.toolName = part.toolName ?? state.toolName;
501
+ if (!state.started) {
502
+ state.started = true;
503
+ const startEvent = {
504
+ type: EventType.TOOL_CALL_START,
505
+ parentMessageId: messageId,
506
+ toolCallId,
507
+ toolCallName: part.toolName
508
+ };
509
+ subscriber.next(startEvent);
510
+ }
511
+ if (!state.hasArgsDelta && "input" in part && part.input !== void 0) {
512
+ let serializedInput = "";
513
+ if (typeof part.input === "string") serializedInput = part.input;
514
+ else try {
515
+ serializedInput = JSON.stringify(part.input);
516
+ } catch {
517
+ serializedInput = String(part.input);
518
+ }
519
+ if (serializedInput.length > 0) {
520
+ const argsEvent = {
521
+ type: EventType.TOOL_CALL_ARGS,
522
+ toolCallId,
523
+ delta: serializedInput
524
+ };
525
+ subscriber.next(argsEvent);
526
+ state.hasArgsDelta = true;
527
+ }
528
+ }
529
+ if (!state.ended) {
530
+ state.ended = true;
531
+ const endEvent = {
532
+ type: EventType.TOOL_CALL_END,
533
+ toolCallId
534
+ };
535
+ subscriber.next(endEvent);
536
+ }
537
+ break;
538
+ }
539
+ case "tool-result": {
540
+ const toolResult = "output" in part ? part.output : null;
541
+ const toolName = "toolName" in part ? part.toolName : "";
542
+ toolCallStates.delete(part.toolCallId);
543
+ if (toolName === "AGUISendStateSnapshot" && toolResult && typeof toolResult === "object") {
544
+ const stateSnapshotEvent = {
545
+ type: EventType.STATE_SNAPSHOT,
546
+ snapshot: toolResult.snapshot
547
+ };
548
+ subscriber.next(stateSnapshotEvent);
549
+ } else if (toolName === "AGUISendStateDelta" && toolResult && typeof toolResult === "object") {
550
+ const stateDeltaEvent = {
551
+ type: EventType.STATE_DELTA,
552
+ delta: toolResult.delta
553
+ };
554
+ subscriber.next(stateDeltaEvent);
555
+ }
556
+ const resultEvent = {
557
+ type: EventType.TOOL_CALL_RESULT,
558
+ role: "tool",
559
+ messageId: randomUUID$1(),
560
+ toolCallId: part.toolCallId,
561
+ content: JSON.stringify(toolResult)
562
+ };
563
+ subscriber.next(resultEvent);
564
+ break;
565
+ }
566
+ case "finish": {
567
+ const finishedEvent = {
568
+ type: EventType.RUN_FINISHED,
569
+ threadId: input.threadId,
570
+ runId: input.runId
571
+ };
572
+ subscriber.next(finishedEvent);
573
+ terminalEventEmitted = true;
574
+ subscriber.complete();
575
+ break;
576
+ }
577
+ case "error": {
578
+ if (abortController.signal.aborted) break;
579
+ const runErrorEvent = {
580
+ type: EventType.RUN_ERROR,
581
+ message: part.error + ""
582
+ };
583
+ subscriber.next(runErrorEvent);
584
+ terminalEventEmitted = true;
585
+ subscriber.error(part.error);
586
+ break;
587
+ }
588
+ }
589
+ }
590
+ if (!terminalEventEmitted) {
591
+ closeReasoningIfOpen();
592
+ if (abortController.signal.aborted) {} else {
593
+ const finishedEvent = {
594
+ type: EventType.RUN_FINISHED,
595
+ threadId: input.threadId,
596
+ runId: input.runId
597
+ };
598
+ subscriber.next(finishedEvent);
599
+ }
600
+ terminalEventEmitted = true;
601
+ subscriber.complete();
602
+ }
603
+ } catch (error) {
604
+ closeReasoningIfOpen();
605
+ if (abortController.signal.aborted) subscriber.complete();
606
+ else {
607
+ const runErrorEvent = {
608
+ type: EventType.RUN_ERROR,
609
+ message: error + ""
610
+ };
611
+ subscriber.next(runErrorEvent);
612
+ terminalEventEmitted = true;
613
+ subscriber.error(error);
614
+ }
615
+ } finally {
616
+ this.abortController = void 0;
617
+ await Promise.all(mcpClients.map((client) => client.close()));
618
+ }
619
+ })();
620
+ return () => {
621
+ Promise.all(mcpClients.map((client) => client.close())).catch(() => {});
622
+ };
623
+ });
624
+ }
625
+ clone() {
626
+ const cloned = new BuiltInAgent(this.config);
627
+ cloned.middlewares = [...this.middlewares];
628
+ return cloned;
629
+ }
630
+ abortRun() {
631
+ this.abortController?.abort();
632
+ }
633
+ };
634
+ /**
635
+ * @deprecated Use BuiltInAgent instead
636
+ */
637
+ var BasicAgent = class extends BuiltInAgent {
638
+ constructor(config) {
639
+ super(config);
640
+ console.warn("BasicAgent is deprecated, use BuiltInAgent instead");
641
+ }
642
+ };
643
+
644
+ //#endregion
645
+ export { BasicAgent, BuiltInAgent, convertJsonSchemaToZodSchema$1 as convertJsonSchemaToZodSchema, convertMessagesToVercelAISDKMessages, convertToolDefinitionsToVercelAITools, convertToolsToVercelAITools, defineTool, resolveModel };
646
+ //# sourceMappingURL=index.mjs.map