@copilotkit/runtime 1.57.3 → 1.58.0-canary.thread-id-propagation

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 (346) hide show
  1. package/dist/lib/observability.d.cts +1 -1
  2. package/dist/lib/observability.d.cts.map +1 -1
  3. package/dist/lib/observability.d.mts +1 -1
  4. package/dist/lib/observability.d.mts.map +1 -1
  5. package/dist/lib/runtime/copilot-runtime.cjs +2 -0
  6. package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
  7. package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
  8. package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
  9. package/dist/lib/runtime/copilot-runtime.mjs +2 -0
  10. package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
  11. package/dist/package.cjs +5 -8
  12. package/dist/package.mjs +5 -8
  13. package/dist/v2/runtime/core/runtime.cjs +4 -1
  14. package/dist/v2/runtime/core/runtime.cjs.map +1 -1
  15. package/dist/v2/runtime/core/runtime.d.cts.map +1 -1
  16. package/dist/v2/runtime/core/runtime.d.mts.map +1 -1
  17. package/dist/v2/runtime/core/runtime.mjs +4 -1
  18. package/dist/v2/runtime/core/runtime.mjs.map +1 -1
  19. package/dist/v2/runtime/handlers/get-runtime-info.cjs +1 -1
  20. package/dist/v2/runtime/handlers/get-runtime-info.mjs +1 -1
  21. package/dist/v2/runtime/handlers/handle-connect.cjs +1 -1
  22. package/dist/v2/runtime/handlers/handle-connect.mjs +1 -1
  23. package/dist/v2/runtime/handlers/handle-run.cjs +1 -1
  24. package/dist/v2/runtime/handlers/handle-run.mjs +1 -1
  25. package/dist/v2/runtime/handlers/shared/agent-utils.cjs +1 -1
  26. package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -1
  27. package/dist/v2/runtime/handlers/shared/agent-utils.mjs +1 -1
  28. package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -1
  29. package/dist/v2/runtime/telemetry/telemetry-client.cjs +22 -6
  30. package/dist/v2/runtime/telemetry/telemetry-client.cjs.map +1 -1
  31. package/dist/v2/runtime/telemetry/telemetry-client.mjs +27 -11
  32. package/dist/v2/runtime/telemetry/telemetry-client.mjs.map +1 -1
  33. package/package.json +9 -19
  34. package/skills/runtime/SKILL.md +98 -0
  35. package/skills/runtime/references/agent-runners-custom.md +161 -0
  36. package/skills/runtime/references/agent-runners-in-memory.md +64 -0
  37. package/skills/runtime/references/agent-runners-sqlite.md +90 -0
  38. package/skills/runtime/references/agent-runners.md +304 -0
  39. package/skills/runtime/references/built-in-agent-factory-modes.md +232 -0
  40. package/skills/runtime/references/built-in-agent-helper-utilities.md +123 -0
  41. package/skills/runtime/references/built-in-agent-model-identifiers.md +59 -0
  42. package/skills/runtime/references/built-in-agent.md +523 -0
  43. package/skills/runtime/references/intelligence-mode.md +336 -0
  44. package/skills/runtime/references/middleware.md +376 -0
  45. package/skills/runtime/references/server-side-tools.md +414 -0
  46. package/skills/runtime/references/setup-endpoint.md +503 -0
  47. package/skills/runtime/references/transcription.md +287 -0
  48. package/skills/runtime/references/wiring-a2a.md +40 -0
  49. package/skills/runtime/references/wiring-adk.md +45 -0
  50. package/skills/runtime/references/wiring-ag2.md +41 -0
  51. package/skills/runtime/references/wiring-agno.md +39 -0
  52. package/skills/runtime/references/wiring-aws-strands.md +59 -0
  53. package/skills/runtime/references/wiring-crewai-crews.md +51 -0
  54. package/skills/runtime/references/wiring-crewai-flows.md +45 -0
  55. package/skills/runtime/references/wiring-external-agents.md +348 -0
  56. package/skills/runtime/references/wiring-langgraph.md +50 -0
  57. package/skills/runtime/references/wiring-llamaindex.md +39 -0
  58. package/skills/runtime/references/wiring-mastra.md +70 -0
  59. package/skills/runtime/references/wiring-mcp-apps-middleware.md +68 -0
  60. package/skills/runtime/references/wiring-ms-agent-framework.md +41 -0
  61. package/skills/runtime/references/wiring-pydantic-ai.md +45 -0
  62. package/CHANGELOG.md +0 -3624
  63. package/__snapshots__/schema/schema.graphql +0 -371
  64. package/dist/v2/runtime/telemetry/scarf-client.cjs +0 -32
  65. package/dist/v2/runtime/telemetry/scarf-client.cjs.map +0 -1
  66. package/dist/v2/runtime/telemetry/scarf-client.mjs +0 -32
  67. package/dist/v2/runtime/telemetry/scarf-client.mjs.map +0 -1
  68. package/scripts/generate-gql-schema.ts +0 -16
  69. package/src/agent/__tests__/agent-test-helpers.ts +0 -476
  70. package/src/agent/__tests__/agent.test.ts +0 -593
  71. package/src/agent/__tests__/ai-sdk-v6-compat.test.ts +0 -116
  72. package/src/agent/__tests__/basic-agent.test.ts +0 -1698
  73. package/src/agent/__tests__/capabilities.test.ts +0 -81
  74. package/src/agent/__tests__/config-tools-execution.test.ts +0 -516
  75. package/src/agent/__tests__/converter-aisdk.test.ts +0 -692
  76. package/src/agent/__tests__/converter-custom.test.ts +0 -319
  77. package/src/agent/__tests__/converter-tanstack-input.test.ts +0 -211
  78. package/src/agent/__tests__/converter-tanstack.test.ts +0 -594
  79. package/src/agent/__tests__/mcp-clients.test.ts +0 -246
  80. package/src/agent/__tests__/mcp-servers-integration.test.ts +0 -373
  81. package/src/agent/__tests__/multimodal-tanstack.test.ts +0 -284
  82. package/src/agent/__tests__/multimodal.test.ts +0 -176
  83. package/src/agent/__tests__/property-overrides.test.ts +0 -598
  84. package/src/agent/__tests__/provider-id-collision.test.ts +0 -195
  85. package/src/agent/__tests__/standard-schema-tools.test.ts +0 -313
  86. package/src/agent/__tests__/standard-schema-types.test.ts +0 -158
  87. package/src/agent/__tests__/state-tools.test.ts +0 -436
  88. package/src/agent/__tests__/test-helpers.ts +0 -197
  89. package/src/agent/__tests__/utils.test.ts +0 -536
  90. package/src/agent/__tests__/zod-regression.test.ts +0 -350
  91. package/src/agent/converters/aisdk.ts +0 -326
  92. package/src/agent/converters/index.ts +0 -7
  93. package/src/agent/converters/tanstack.ts +0 -451
  94. package/src/agent/index.ts +0 -1743
  95. package/src/agents/langgraph/__tests__/event-source.test.ts +0 -256
  96. package/src/agents/langgraph/event-source.ts +0 -365
  97. package/src/agents/langgraph/events.ts +0 -394
  98. package/src/graphql/inputs/action.input.ts +0 -16
  99. package/src/graphql/inputs/agent-session.input.ts +0 -13
  100. package/src/graphql/inputs/agent-state.input.ts +0 -13
  101. package/src/graphql/inputs/cloud-guardrails.input.ts +0 -16
  102. package/src/graphql/inputs/cloud.input.ts +0 -8
  103. package/src/graphql/inputs/context-property.input.ts +0 -10
  104. package/src/graphql/inputs/copilot-context.input.ts +0 -10
  105. package/src/graphql/inputs/custom-property.input.ts +0 -15
  106. package/src/graphql/inputs/extensions.input.ts +0 -21
  107. package/src/graphql/inputs/forwarded-parameters.input.ts +0 -22
  108. package/src/graphql/inputs/frontend.input.ts +0 -14
  109. package/src/graphql/inputs/generate-copilot-response.input.ts +0 -59
  110. package/src/graphql/inputs/load-agent-state.input.ts +0 -10
  111. package/src/graphql/inputs/message.input.ts +0 -110
  112. package/src/graphql/inputs/meta-event.input.ts +0 -18
  113. package/src/graphql/message-conversion/agui-to-gql.test.ts +0 -1384
  114. package/src/graphql/message-conversion/agui-to-gql.ts +0 -384
  115. package/src/graphql/message-conversion/gql-to-agui.test.ts +0 -1653
  116. package/src/graphql/message-conversion/gql-to-agui.ts +0 -297
  117. package/src/graphql/message-conversion/index.ts +0 -2
  118. package/src/graphql/message-conversion/roundtrip-conversion.test.ts +0 -561
  119. package/src/graphql/resolvers/__tests__/resolve-message-id.test.ts +0 -25
  120. package/src/graphql/resolvers/copilot.resolver.ts +0 -785
  121. package/src/graphql/resolvers/resolve-message-id.ts +0 -14
  122. package/src/graphql/resolvers/state.resolver.ts +0 -30
  123. package/src/graphql/types/agents-response.type.ts +0 -19
  124. package/src/graphql/types/base/index.ts +0 -10
  125. package/src/graphql/types/converted/index.ts +0 -183
  126. package/src/graphql/types/copilot-response.type.ts +0 -141
  127. package/src/graphql/types/enums.ts +0 -38
  128. package/src/graphql/types/extensions-response.type.ts +0 -23
  129. package/src/graphql/types/guardrails-result.type.ts +0 -20
  130. package/src/graphql/types/load-agent-state-response.type.ts +0 -17
  131. package/src/graphql/types/message-status.type.ts +0 -48
  132. package/src/graphql/types/meta-events.type.ts +0 -78
  133. package/src/graphql/types/response-status.type.ts +0 -77
  134. package/src/index.ts +0 -3
  135. package/src/langgraph.ts +0 -1
  136. package/src/lib/__tests__/telemetry-disclosure.test.ts +0 -55
  137. package/src/lib/cloud/index.ts +0 -4
  138. package/src/lib/error-messages.ts +0 -211
  139. package/src/lib/index.ts +0 -52
  140. package/src/lib/integrations/index.ts +0 -6
  141. package/src/lib/integrations/nest/index.ts +0 -21
  142. package/src/lib/integrations/nextjs/app-router.ts +0 -47
  143. package/src/lib/integrations/nextjs/pages-router.ts +0 -45
  144. package/src/lib/integrations/node-express/index.ts +0 -21
  145. package/src/lib/integrations/node-http/__tests__/request-duck-type.test.ts +0 -66
  146. package/src/lib/integrations/node-http/index.ts +0 -187
  147. package/src/lib/integrations/node-http/request-handler.ts +0 -128
  148. package/src/lib/integrations/shared.ts +0 -112
  149. package/src/lib/logger.ts +0 -31
  150. package/src/lib/observability.ts +0 -167
  151. package/src/lib/runtime/__tests__/copilot-runtime-error.test.ts +0 -183
  152. package/src/lib/runtime/__tests__/handle-service-adapter.test.ts +0 -108
  153. package/src/lib/runtime/__tests__/mcp-tools-utils.test.ts +0 -499
  154. package/src/lib/runtime/__tests__/on-after-request.test.ts +0 -122
  155. package/src/lib/runtime/__tests__/retry-utils.test.ts +0 -137
  156. package/src/lib/runtime/__tests__/v1-agent-factory.test.ts +0 -109
  157. package/src/lib/runtime/agent-integrations/langgraph/__tests__/dispatch-event-filtering.test.ts +0 -345
  158. package/src/lib/runtime/agent-integrations/langgraph/__tests__/run-message-filtering.test.ts +0 -156
  159. package/src/lib/runtime/agent-integrations/langgraph/agent.ts +0 -263
  160. package/src/lib/runtime/agent-integrations/langgraph/consts.ts +0 -37
  161. package/src/lib/runtime/agent-integrations/langgraph/index.ts +0 -2
  162. package/src/lib/runtime/copilot-runtime.ts +0 -863
  163. package/src/lib/runtime/mcp-tools-utils.ts +0 -313
  164. package/src/lib/runtime/retry-utils.ts +0 -141
  165. package/src/lib/runtime/telemetry-agent-runner.ts +0 -151
  166. package/src/lib/runtime/types.ts +0 -48
  167. package/src/lib/runtime/utils.ts +0 -93
  168. package/src/lib/streaming.ts +0 -220
  169. package/src/lib/telemetry-client.ts +0 -66
  170. package/src/lib/telemetry-disclosure.ts +0 -53
  171. package/src/service-adapters/anthropic/anthropic-adapter.ts +0 -532
  172. package/src/service-adapters/anthropic/utils.ts +0 -219
  173. package/src/service-adapters/bedrock/bedrock-adapter.ts +0 -73
  174. package/src/service-adapters/conversion.test.ts +0 -56
  175. package/src/service-adapters/conversion.ts +0 -69
  176. package/src/service-adapters/empty/empty-adapter.ts +0 -38
  177. package/src/service-adapters/events.ts +0 -337
  178. package/src/service-adapters/experimental/ollama/ollama-adapter.ts +0 -84
  179. package/src/service-adapters/google/google-genai-adapter.test.ts +0 -151
  180. package/src/service-adapters/google/google-genai-adapter.ts +0 -95
  181. package/src/service-adapters/groq/groq-adapter.ts +0 -229
  182. package/src/service-adapters/index.ts +0 -18
  183. package/src/service-adapters/langchain/langchain-adapter.ts +0 -113
  184. package/src/service-adapters/langchain/langserve.ts +0 -88
  185. package/src/service-adapters/langchain/types.ts +0 -20
  186. package/src/service-adapters/langchain/utils.ts +0 -330
  187. package/src/service-adapters/openai/__tests__/openai-v5-compat.test.ts +0 -177
  188. package/src/service-adapters/openai/openai-adapter.ts +0 -324
  189. package/src/service-adapters/openai/openai-assistant-adapter.ts +0 -385
  190. package/src/service-adapters/openai/utils.ts +0 -305
  191. package/src/service-adapters/service-adapter.ts +0 -50
  192. package/src/service-adapters/shared/error-utils.ts +0 -64
  193. package/src/service-adapters/shared/index.ts +0 -2
  194. package/src/service-adapters/shared/sdk-client-utils.ts +0 -19
  195. package/src/service-adapters/unify/unify-adapter.ts +0 -165
  196. package/src/utils/failed-response-status-reasons.ts +0 -70
  197. package/src/utils/index.ts +0 -1
  198. package/src/v2/express.ts +0 -1
  199. package/src/v2/hono.ts +0 -1
  200. package/src/v2/index.ts +0 -5
  201. package/src/v2/node.ts +0 -1
  202. package/src/v2/runtime/__tests__/agents-factory.test.ts +0 -136
  203. package/src/v2/runtime/__tests__/backward-compat.test.ts +0 -261
  204. package/src/v2/runtime/__tests__/code-review-fixes.test.ts +0 -500
  205. package/src/v2/runtime/__tests__/cors-credentials.test.ts +0 -320
  206. package/src/v2/runtime/__tests__/debug-sse-response.test.ts +0 -302
  207. package/src/v2/runtime/__tests__/express-adapter.test.ts +0 -188
  208. package/src/v2/runtime/__tests__/express-body-order.test.ts +0 -76
  209. package/src/v2/runtime/__tests__/express-fetch-bridge.test.ts +0 -344
  210. package/src/v2/runtime/__tests__/express-single-sse.test.ts +0 -122
  211. package/src/v2/runtime/__tests__/express-single-telemetry.integration.test.ts +0 -65
  212. package/src/v2/runtime/__tests__/express-telemetry.integration.test.ts +0 -101
  213. package/src/v2/runtime/__tests__/fetch-cors.test.ts +0 -205
  214. package/src/v2/runtime/__tests__/fetch-handler-validation.test.ts +0 -440
  215. package/src/v2/runtime/__tests__/fetch-handler.test.ts +0 -456
  216. package/src/v2/runtime/__tests__/fetch-router.test.ts +0 -276
  217. package/src/v2/runtime/__tests__/get-runtime-info.test.ts +0 -335
  218. package/src/v2/runtime/__tests__/handle-connect.test.ts +0 -585
  219. package/src/v2/runtime/__tests__/handle-run.test.ts +0 -1388
  220. package/src/v2/runtime/__tests__/handle-threads.test.ts +0 -930
  221. package/src/v2/runtime/__tests__/handle-transcribe.test.ts +0 -301
  222. package/src/v2/runtime/__tests__/header-utils.test.ts +0 -88
  223. package/src/v2/runtime/__tests__/hono-adapter.test.ts +0 -150
  224. package/src/v2/runtime/__tests__/hono-single-telemetry.integration.test.ts +0 -46
  225. package/src/v2/runtime/__tests__/hono-telemetry.integration.test.ts +0 -99
  226. package/src/v2/runtime/__tests__/hooks-edge-cases.test.ts +0 -457
  227. package/src/v2/runtime/__tests__/hooks.test.ts +0 -557
  228. package/src/v2/runtime/__tests__/in-process-agent-runner-messages.test.ts +0 -230
  229. package/src/v2/runtime/__tests__/in-process-agent-runner.test.ts +0 -1030
  230. package/src/v2/runtime/__tests__/integration/bun/bun-servers.integration.test.ts +0 -27
  231. package/src/v2/runtime/__tests__/integration/bun/elysia-multi.ts +0 -32
  232. package/src/v2/runtime/__tests__/integration/bun/elysia-single.ts +0 -33
  233. package/src/v2/runtime/__tests__/integration/bun/hono-bun-multi.ts +0 -25
  234. package/src/v2/runtime/__tests__/integration/bun/hono-bun-single.ts +0 -32
  235. package/src/v2/runtime/__tests__/integration/helpers/create-test-runtime.ts +0 -15
  236. package/src/v2/runtime/__tests__/integration/helpers/sse-reader.ts +0 -45
  237. package/src/v2/runtime/__tests__/integration/helpers/test-agent.ts +0 -58
  238. package/src/v2/runtime/__tests__/integration/node-servers.integration.test.ts +0 -58
  239. package/src/v2/runtime/__tests__/integration/servers/express-multi.ts +0 -35
  240. package/src/v2/runtime/__tests__/integration/servers/express-single.ts +0 -36
  241. package/src/v2/runtime/__tests__/integration/servers/fetch-direct.ts +0 -39
  242. package/src/v2/runtime/__tests__/integration/servers/hono-multi.ts +0 -30
  243. package/src/v2/runtime/__tests__/integration/servers/hono-single.ts +0 -37
  244. package/src/v2/runtime/__tests__/integration/servers/node-multi.ts +0 -45
  245. package/src/v2/runtime/__tests__/integration/servers/node-single.ts +0 -46
  246. package/src/v2/runtime/__tests__/integration/servers/types.ts +0 -18
  247. package/src/v2/runtime/__tests__/integration/suites/debug-events.suite.ts +0 -253
  248. package/src/v2/runtime/__tests__/integration/suites/multi-endpoint.suite.ts +0 -358
  249. package/src/v2/runtime/__tests__/integration/suites/single-endpoint.suite.ts +0 -363
  250. package/src/v2/runtime/__tests__/intelligence-run-telemetry.test.ts +0 -194
  251. package/src/v2/runtime/__tests__/mcp-apps-middleware-integration.test.ts +0 -275
  252. package/src/v2/runtime/__tests__/middleware-express.test.ts +0 -208
  253. package/src/v2/runtime/__tests__/middleware-single-express.test.ts +0 -213
  254. package/src/v2/runtime/__tests__/middleware-single.test.ts +0 -225
  255. package/src/v2/runtime/__tests__/middleware-sse-parser.test.ts +0 -237
  256. package/src/v2/runtime/__tests__/middleware.test.ts +0 -250
  257. package/src/v2/runtime/__tests__/node-fetch-handler.test.ts +0 -157
  258. package/src/v2/runtime/__tests__/open-generative-ui-middleware.e2e.test.ts +0 -728
  259. package/src/v2/runtime/__tests__/router-edge-cases.test.ts +0 -217
  260. package/src/v2/runtime/__tests__/routing-express.test.ts +0 -174
  261. package/src/v2/runtime/__tests__/routing-single-express.test.ts +0 -168
  262. package/src/v2/runtime/__tests__/routing-single.test.ts +0 -193
  263. package/src/v2/runtime/__tests__/routing.test.ts +0 -257
  264. package/src/v2/runtime/__tests__/runtime.test.ts +0 -234
  265. package/src/v2/runtime/__tests__/sse-response-telemetry.test.ts +0 -108
  266. package/src/v2/runtime/__tests__/telemetry.test.ts +0 -167
  267. package/src/v2/runtime/__tests__/thread-names.test.ts +0 -188
  268. package/src/v2/runtime/core/__tests__/debug-event-bus.test.ts +0 -156
  269. package/src/v2/runtime/core/debug-event-bus.ts +0 -45
  270. package/src/v2/runtime/core/fetch-cors.ts +0 -136
  271. package/src/v2/runtime/core/fetch-handler.ts +0 -492
  272. package/src/v2/runtime/core/fetch-router.ts +0 -203
  273. package/src/v2/runtime/core/hooks.ts +0 -160
  274. package/src/v2/runtime/core/middleware-sse-parser.ts +0 -210
  275. package/src/v2/runtime/core/middleware.ts +0 -115
  276. package/src/v2/runtime/core/runtime.ts +0 -432
  277. package/src/v2/runtime/endpoints/express-fetch-bridge.ts +0 -137
  278. package/src/v2/runtime/endpoints/express-single.ts +0 -54
  279. package/src/v2/runtime/endpoints/express.ts +0 -179
  280. package/src/v2/runtime/endpoints/hono-single.ts +0 -60
  281. package/src/v2/runtime/endpoints/hono.ts +0 -89
  282. package/src/v2/runtime/endpoints/index.ts +0 -4
  283. package/src/v2/runtime/endpoints/node-fetch-handler.ts +0 -48
  284. package/src/v2/runtime/endpoints/node.ts +0 -28
  285. package/src/v2/runtime/endpoints/single-route-helpers.ts +0 -125
  286. package/src/v2/runtime/express.ts +0 -2
  287. package/src/v2/runtime/handlers/__tests__/handle-debug-events.test.ts +0 -176
  288. package/src/v2/runtime/handlers/get-runtime-info.ts +0 -101
  289. package/src/v2/runtime/handlers/handle-connect.ts +0 -80
  290. package/src/v2/runtime/handlers/handle-debug-events.ts +0 -52
  291. package/src/v2/runtime/handlers/handle-run.ts +0 -111
  292. package/src/v2/runtime/handlers/handle-stop.ts +0 -77
  293. package/src/v2/runtime/handlers/handle-threads.ts +0 -11
  294. package/src/v2/runtime/handlers/handle-transcribe.ts +0 -269
  295. package/src/v2/runtime/handlers/header-utils.ts +0 -24
  296. package/src/v2/runtime/handlers/intelligence/connect.ts +0 -102
  297. package/src/v2/runtime/handlers/intelligence/run.ts +0 -351
  298. package/src/v2/runtime/handlers/intelligence/thread-names.ts +0 -246
  299. package/src/v2/runtime/handlers/intelligence/threads.ts +0 -420
  300. package/src/v2/runtime/handlers/shared/agent-utils.ts +0 -154
  301. package/src/v2/runtime/handlers/shared/intelligence-utils.ts +0 -41
  302. package/src/v2/runtime/handlers/shared/json-response.ts +0 -9
  303. package/src/v2/runtime/handlers/shared/resolve-intelligence-user.ts +0 -28
  304. package/src/v2/runtime/handlers/shared/sse-response.ts +0 -215
  305. package/src/v2/runtime/handlers/sse/__tests__/sse-connect-agent-id.test.ts +0 -71
  306. package/src/v2/runtime/handlers/sse/connect.ts +0 -30
  307. package/src/v2/runtime/handlers/sse/run.ts +0 -40
  308. package/src/v2/runtime/hono.ts +0 -2
  309. package/src/v2/runtime/index.ts +0 -51
  310. package/src/v2/runtime/intelligence-platform/__tests__/client.test.ts +0 -601
  311. package/src/v2/runtime/intelligence-platform/__tests__/intelligence-mcp-helper.test.ts +0 -246
  312. package/src/v2/runtime/intelligence-platform/client.ts +0 -818
  313. package/src/v2/runtime/intelligence-platform/index.ts +0 -10
  314. package/src/v2/runtime/node.ts +0 -6
  315. package/src/v2/runtime/open-generative-ui-middleware.ts +0 -373
  316. package/src/v2/runtime/runner/__tests__/finalize-events.test.ts +0 -109
  317. package/src/v2/runtime/runner/__tests__/in-memory-runner.e2e.test.ts +0 -775
  318. package/src/v2/runtime/runner/__tests__/in-memory-runner.test.ts +0 -777
  319. package/src/v2/runtime/runner/__tests__/intelligence-runner.test.ts +0 -1039
  320. package/src/v2/runtime/runner/agent-runner.ts +0 -35
  321. package/src/v2/runtime/runner/in-memory.ts +0 -467
  322. package/src/v2/runtime/runner/index.ts +0 -4
  323. package/src/v2/runtime/runner/intelligence.ts +0 -498
  324. package/src/v2/runtime/telemetry/__tests__/instance-created.test.ts +0 -96
  325. package/src/v2/runtime/telemetry/events.ts +0 -35
  326. package/src/v2/runtime/telemetry/index.ts +0 -7
  327. package/src/v2/runtime/telemetry/instance-created.ts +0 -44
  328. package/src/v2/runtime/telemetry/scarf-client.ts +0 -39
  329. package/src/v2/runtime/telemetry/telemetry-client.ts +0 -70
  330. package/src/v2/runtime/transcription-service/transcription-service.ts +0 -11
  331. package/tests/global.d.ts +0 -1
  332. package/tests/service-adapters/anthropic/allowlist-approach.test.ts +0 -259
  333. package/tests/service-adapters/anthropic/anthropic-adapter-language-model.test.ts +0 -101
  334. package/tests/service-adapters/anthropic/anthropic-adapter.test.ts +0 -645
  335. package/tests/service-adapters/anthropic/utils-token-trimming.test.ts +0 -301
  336. package/tests/service-adapters/groq/groq-adapter-language-model.test.ts +0 -102
  337. package/tests/service-adapters/openai/allowlist-approach.test.ts +0 -294
  338. package/tests/service-adapters/openai/openai-adapter-language-model.test.ts +0 -122
  339. package/tests/service-adapters/openai/openai-adapter.test.ts +0 -291
  340. package/tests/service-adapters/shared/sdk-client-utils.test.ts +0 -36
  341. package/tests/setup.vitest.ts +0 -8
  342. package/tests/tsconfig.json +0 -10
  343. package/tsconfig.json +0 -20
  344. package/tsdown.config.ts +0 -45
  345. package/typedoc.json +0 -4
  346. package/vitest.config.mjs +0 -13
@@ -1,500 +0,0 @@
1
- /**
2
- * Regression tests for code review fixes.
3
- * Each describe block maps to a specific review item.
4
- */
5
- import { describe, it, expect, vi } from "vitest";
6
- import { createCopilotRuntimeHandler } from "../core/fetch-handler";
7
- import { CopilotRuntime } from "../core/runtime";
8
- import { matchRoute } from "../core/fetch-router";
9
- import { handleCors, addCorsHeaders } from "../core/fetch-cors";
10
- import type { CopilotCorsConfig } from "../core/fetch-cors";
11
- import type { AbstractAgent } from "@ag-ui/client";
12
-
13
- /* ------------------------------------------------------------------------------------------------
14
- * Helpers
15
- * --------------------------------------------------------------------------------------------- */
16
-
17
- const createMockAgent = () => {
18
- const agent: unknown = {
19
- execute: vi.fn().mockResolvedValue({ events: [] }),
20
- };
21
- (agent as { clone: () => unknown }).clone = () => createMockAgent();
22
- return agent as AbstractAgent;
23
- };
24
-
25
- const createRuntime = () =>
26
- new CopilotRuntime({ agents: { default: createMockAgent() } });
27
-
28
- const get = (url: string) => new Request(url, { method: "GET" });
29
-
30
- const post = (url: string, body?: unknown) =>
31
- new Request(url, {
32
- method: "POST",
33
- headers: { "Content-Type": "application/json" },
34
- body: body ? JSON.stringify(body) : undefined,
35
- });
36
-
37
- /* ------------------------------------------------------------------------------------------------
38
- * Item 1: __cpk_methodCall mutation lost if hooks replace the request
39
- *
40
- * In single-route mode, the parsed method call must survive even if
41
- * onBeforeHandler returns a new Request object.
42
- * --------------------------------------------------------------------------------------------- */
43
-
44
- describe("Item 1: methodCall preserved when hooks replace request", () => {
45
- it("single-route dispatch works after onBeforeHandler replaces request", async () => {
46
- const handler = createCopilotRuntimeHandler({
47
- runtime: createRuntime(),
48
- basePath: "/api",
49
- mode: "single-route",
50
- hooks: {
51
- onBeforeHandler: ({ request }) => {
52
- // Return a brand-new Request with only headers modified.
53
- // This discards any properties stashed on the old request object.
54
- return new Request(request, {
55
- headers: new Headers([...request.headers, ["x-replaced", "true"]]),
56
- });
57
- },
58
- },
59
- });
60
-
61
- const response = await handler(
62
- post("http://localhost/api", { method: "info" }),
63
- );
64
- // Should succeed (200) rather than crash with undefined methodCall
65
- expect(response.status).toBe(200);
66
- const body = await response.json();
67
- expect(body).toHaveProperty("version");
68
- });
69
-
70
- it("single-route agent/run works after onBeforeHandler replaces request", async () => {
71
- const handler = createCopilotRuntimeHandler({
72
- runtime: createRuntime(),
73
- basePath: "/api",
74
- mode: "single-route",
75
- hooks: {
76
- onBeforeHandler: ({ request }) => {
77
- return new Request(request.url, {
78
- method: request.method,
79
- headers: request.headers,
80
- body: request.clone().body,
81
- });
82
- },
83
- },
84
- });
85
-
86
- const response = await handler(
87
- post("http://localhost/api", {
88
- method: "agent/run",
89
- params: { agentId: "default" },
90
- body: { threadId: "t1", runId: "r1" },
91
- }),
92
- );
93
- // Should not crash — the method call data is passed explicitly, not via request property
94
- expect(response).toBeInstanceOf(Response);
95
- });
96
- });
97
-
98
- /* ------------------------------------------------------------------------------------------------
99
- * Item 2: credentials: true + wildcard origin silently produces invalid CORS
100
- *
101
- * When credentials is true and origin resolves to "*", we must auto-resolve
102
- * to the request origin to comply with the Fetch spec.
103
- * --------------------------------------------------------------------------------------------- */
104
-
105
- describe("Item 2: credentials + wildcard CORS", () => {
106
- it("auto-resolves wildcard to request origin when credentials enabled (preflight)", () => {
107
- const request = new Request("http://localhost/api", {
108
- method: "OPTIONS",
109
- headers: { Origin: "https://app.example.com" },
110
- });
111
- const config: CopilotCorsConfig = { credentials: true };
112
- const response = handleCors(request, config)!;
113
-
114
- expect(response.headers.get("Access-Control-Allow-Origin")).toBe(
115
- "https://app.example.com",
116
- );
117
- expect(response.headers.get("Access-Control-Allow-Credentials")).toBe(
118
- "true",
119
- );
120
- });
121
-
122
- it("auto-resolves wildcard to request origin in addCorsHeaders", () => {
123
- const response = new Response("ok", { status: 200 });
124
- const config: CopilotCorsConfig = { credentials: true };
125
- const result = addCorsHeaders(response, config, "https://mysite.com");
126
-
127
- expect(result.headers.get("Access-Control-Allow-Origin")).toBe(
128
- "https://mysite.com",
129
- );
130
- expect(result.headers.get("Access-Control-Allow-Credentials")).toBe("true");
131
- });
132
-
133
- it("skips CORS entirely when credentials enabled, wildcard origin, and no request origin", () => {
134
- const request = new Request("http://localhost/api", {
135
- method: "OPTIONS",
136
- // No Origin header
137
- });
138
- const config: CopilotCorsConfig = { credentials: true };
139
- const response = handleCors(request, config)!;
140
-
141
- // Should not set any CORS origin since there's no request origin to reflect
142
- expect(response.headers.get("Access-Control-Allow-Origin")).toBeNull();
143
- });
144
-
145
- it("explicit origin string + credentials does not trigger auto-resolution", () => {
146
- const request = new Request("http://localhost/api", {
147
- method: "OPTIONS",
148
- headers: { Origin: "https://app.example.com" },
149
- });
150
- const config: CopilotCorsConfig = {
151
- origin: "https://specific.example.com",
152
- credentials: true,
153
- };
154
- const response = handleCors(request, config)!;
155
-
156
- expect(response.headers.get("Access-Control-Allow-Origin")).toBe(
157
- "https://specific.example.com",
158
- );
159
- });
160
-
161
- it("end-to-end: handler CORS with credentials does not produce wildcard + credentials", async () => {
162
- const handler = createCopilotRuntimeHandler({
163
- runtime: createRuntime(),
164
- basePath: "/api",
165
- cors: { credentials: true },
166
- });
167
-
168
- const response = await handler(
169
- new Request("http://localhost/api/info", {
170
- method: "GET",
171
- headers: { Origin: "https://app.example.com" },
172
- }),
173
- );
174
-
175
- const allowOrigin = response.headers.get("Access-Control-Allow-Origin");
176
- const allowCreds = response.headers.get("Access-Control-Allow-Credentials");
177
-
178
- // Must NEVER be "*" + "true" — that's the invalid combo
179
- if (allowCreds === "true") {
180
- expect(allowOrigin).not.toBe("*");
181
- }
182
- expect(allowOrigin).toBe("https://app.example.com");
183
- });
184
- });
185
-
186
- /* ------------------------------------------------------------------------------------------------
187
- * Item 3: runOnError can throw unhandled
188
- *
189
- * If the onError hook itself throws, the handler must catch it and return
190
- * a 500 response rather than letting the promise reject.
191
- * --------------------------------------------------------------------------------------------- */
192
-
193
- describe("Item 3: onError hook throwing is caught", () => {
194
- it("returns 500 when onError throws synchronously", async () => {
195
- const handler = createCopilotRuntimeHandler({
196
- runtime: createRuntime(),
197
- basePath: "/api",
198
- hooks: {
199
- onRequest: () => {
200
- throw new Error("trigger error");
201
- },
202
- onError: () => {
203
- throw new Error("hook exploded");
204
- },
205
- },
206
- });
207
-
208
- // Must not reject — should return a Response
209
- const response = await handler(get("http://localhost/api/info"));
210
- expect(response.status).toBe(500);
211
- const body = await response.json();
212
- expect(body.error).toBe("internal_error");
213
- });
214
-
215
- it("returns 500 when onError throws asynchronously", async () => {
216
- const handler = createCopilotRuntimeHandler({
217
- runtime: createRuntime(),
218
- basePath: "/api",
219
- hooks: {
220
- onRequest: () => {
221
- throw new Error("trigger error");
222
- },
223
- onError: async () => {
224
- await Promise.resolve();
225
- throw new Error("async hook exploded");
226
- },
227
- },
228
- });
229
-
230
- const response = await handler(get("http://localhost/api/info"));
231
- expect(response.status).toBe(500);
232
- });
233
- });
234
-
235
- /* ------------------------------------------------------------------------------------------------
236
- * Item 4: decodeURIComponent can throw URIError on malformed URLs
237
- *
238
- * Malformed percent-encoding in path segments must not crash with an
239
- * uncaught URIError; the router should return null (no match).
240
- * --------------------------------------------------------------------------------------------- */
241
-
242
- describe("Item 4: malformed URI encoding handled gracefully", () => {
243
- it("returns null for malformed agentId in /agent/:agentId/run", () => {
244
- const result = matchRoute("/api/agent/%ZZ/run", "/api");
245
- expect(result).toBeNull();
246
- });
247
-
248
- it("returns null for malformed agentId in /agent/:agentId/connect", () => {
249
- const result = matchRoute("/api/agent/%ZZ/connect", "/api");
250
- expect(result).toBeNull();
251
- });
252
-
253
- it("returns null for malformed agentId in /agent/:agentId/stop/:threadId", () => {
254
- const result = matchRoute("/api/agent/%ZZ/stop/valid-thread", "/api");
255
- expect(result).toBeNull();
256
- });
257
-
258
- it("returns null for malformed threadId in /agent/:agentId/stop/:threadId", () => {
259
- const result = matchRoute("/api/agent/valid-agent/stop/%ZZ", "/api");
260
- expect(result).toBeNull();
261
- });
262
-
263
- it("still decodes valid percent-encoding correctly", () => {
264
- const result = matchRoute("/api/agent/hello%20world/run", "/api");
265
- expect(result).toEqual({ method: "agent/run", agentId: "hello world" });
266
- });
267
-
268
- it("end-to-end: malformed URL returns 404", async () => {
269
- const handler = createCopilotRuntimeHandler({
270
- runtime: createRuntime(),
271
- basePath: "/api",
272
- });
273
-
274
- const response = await handler(
275
- post("http://localhost/api/agent/%ZZ/run", { threadId: "t1" }),
276
- );
277
- expect(response.status).toBe(404);
278
- });
279
- });
280
-
281
- /* ------------------------------------------------------------------------------------------------
282
- * Item 8: Missing Allow header on 405 responses
283
- *
284
- * RFC 9110 §15.5.6 requires 405 responses to include an Allow header.
285
- * --------------------------------------------------------------------------------------------- */
286
-
287
- describe("Item 8: Allow header on 405 responses", () => {
288
- it("multi-route: 405 for POST to /info includes Allow: GET", async () => {
289
- const handler = createCopilotRuntimeHandler({
290
- runtime: createRuntime(),
291
- basePath: "/api",
292
- });
293
-
294
- const response = await handler(post("http://localhost/api/info"));
295
- expect(response.status).toBe(405);
296
- expect(response.headers.get("Allow")).toBe("GET");
297
- });
298
-
299
- it("multi-route: 405 for GET to /agent/:id/run includes Allow: POST", async () => {
300
- const handler = createCopilotRuntimeHandler({
301
- runtime: createRuntime(),
302
- basePath: "/api",
303
- });
304
-
305
- const response = await handler(
306
- get("http://localhost/api/agent/default/run"),
307
- );
308
- expect(response.status).toBe(405);
309
- expect(response.headers.get("Allow")).toBe("POST");
310
- });
311
-
312
- it("single-route: 405 for GET includes Allow: POST", async () => {
313
- const handler = createCopilotRuntimeHandler({
314
- runtime: createRuntime(),
315
- basePath: "/api",
316
- mode: "single-route",
317
- });
318
-
319
- const response = await handler(get("http://localhost/api"));
320
- expect(response.status).toBe(405);
321
- expect(response.headers.get("Allow")).toBe("POST");
322
- });
323
- });
324
-
325
- /* ------------------------------------------------------------------------------------------------
326
- * Item 9: Error messages not leaked to clients in 500 responses
327
- *
328
- * The 500 response body should contain { error: "internal_error" }
329
- * without exposing error.message which could contain file paths, DB errors, etc.
330
- * --------------------------------------------------------------------------------------------- */
331
-
332
- describe("Item 9: error messages not leaked to clients", () => {
333
- it("500 response does not include error message", async () => {
334
- const handler = createCopilotRuntimeHandler({
335
- runtime: createRuntime(),
336
- basePath: "/api",
337
- hooks: {
338
- onRequest: () => {
339
- throw new Error("secret: /etc/passwd contents here");
340
- },
341
- },
342
- });
343
-
344
- const response = await handler(get("http://localhost/api/info"));
345
- expect(response.status).toBe(500);
346
- const body = await response.json();
347
- expect(body.error).toBe("internal_error");
348
- expect(body.message).toBeUndefined();
349
- expect(JSON.stringify(body)).not.toContain("passwd");
350
- });
351
-
352
- it("non-Error throws also produce clean 500", async () => {
353
- const handler = createCopilotRuntimeHandler({
354
- runtime: createRuntime(),
355
- basePath: "/api",
356
- hooks: {
357
- onRequest: () => {
358
- throw { secretData: "db_password_123" };
359
- },
360
- },
361
- });
362
-
363
- const response = await handler(get("http://localhost/api/info"));
364
- expect(response.status).toBe(500);
365
- const body = await response.json();
366
- expect(body.error).toBe("internal_error");
367
- expect(body.message).toBeUndefined();
368
- expect(JSON.stringify(body)).not.toContain("db_password");
369
- });
370
- });
371
-
372
- /* ------------------------------------------------------------------------------------------------
373
- * Item 12: Missing Vary headers on preflight
374
- *
375
- * Preflight responses should include Vary: Access-Control-Request-Headers
376
- * and Vary: Access-Control-Request-Method for CDN caching correctness.
377
- * --------------------------------------------------------------------------------------------- */
378
-
379
- describe("Item 12: Vary headers on preflight", () => {
380
- it("preflight includes Vary for CORS request headers and method", () => {
381
- const request = new Request("http://localhost/api", {
382
- method: "OPTIONS",
383
- headers: { Origin: "https://example.com" },
384
- });
385
- const response = handleCors(request, {})!;
386
-
387
- const vary = response.headers.get("Vary") ?? "";
388
- expect(vary).toContain("Access-Control-Request-Headers");
389
- expect(vary).toContain("Access-Control-Request-Method");
390
- });
391
-
392
- it("preflight includes Vary: Origin when origin is not wildcard", () => {
393
- const request = new Request("http://localhost/api", {
394
- method: "OPTIONS",
395
- headers: { Origin: "https://example.com" },
396
- });
397
- const response = handleCors(request, {
398
- origin: "https://example.com",
399
- })!;
400
-
401
- const vary = response.headers.get("Vary") ?? "";
402
- expect(vary).toContain("Origin");
403
- expect(vary).toContain("Access-Control-Request-Headers");
404
- expect(vary).toContain("Access-Control-Request-Method");
405
- });
406
- });
407
-
408
- /* ------------------------------------------------------------------------------------------------
409
- * Item 7: synthesizeBody null guard uses wrong comparison
410
- *
411
- * Tested indirectly through express-fetch-bridge.
412
- * The synthesizeBody function should treat null bodies as empty (not serialize "null").
413
- * This is already mitigated by hasPreParsedBody rejecting null, but we test the
414
- * boundary to ensure the fix is correct.
415
- * --------------------------------------------------------------------------------------------- */
416
-
417
- describe("Item 7: synthesizeBody null guard", () => {
418
- // Verify that null req.body causes hasPreParsedBody to return false,
419
- // meaning the generic (stream-based) handler runs instead of trying to
420
- // serialize null into the string "null".
421
- it("null req.body is treated as no pre-parsed body (falls through to generic handler)", async () => {
422
- const { createExpressNodeHandler } =
423
- await import("../endpoints/express-fetch-bridge");
424
-
425
- let handlerCalled = false;
426
- const fetchHandler = async (_req: Request) => {
427
- handlerCalled = true;
428
- return new Response("ok", { status: 200 });
429
- };
430
-
431
- const nodeHandler = createExpressNodeHandler(fetchHandler);
432
-
433
- // Use supertest-style approach: create a real HTTP server to exercise
434
- // the full path. Since we can't easily mock Node streams, we verify
435
- // the hasPreParsedBody logic through the express-fetch-bridge tests.
436
- // Here we just assert the module loads and the handler is created correctly.
437
- expect(typeof nodeHandler).toBe("function");
438
- expect(handlerCalled).toBe(false);
439
- });
440
- });
441
-
442
- /* ------------------------------------------------------------------------------------------------
443
- * Item 10: After-request middleware does not double-consume response body
444
- *
445
- * The response passed to afterRequestMiddleware should be a clone, so
446
- * reading its body doesn't affect the response sent to the client.
447
- * --------------------------------------------------------------------------------------------- */
448
-
449
- describe("Item 10: after-request middleware gets cloned response", () => {
450
- it("response body is still readable after middleware runs", async () => {
451
- const handler = createCopilotRuntimeHandler({
452
- runtime: createRuntime(),
453
- basePath: "/api",
454
- });
455
-
456
- // Simply call the handler and verify the response body is readable
457
- const response = await handler(get("http://localhost/api/info"));
458
- expect(response.status).toBe(200);
459
-
460
- // The body should be consumable — if clone() wasn't used, the middleware
461
- // might have consumed it first
462
- const body = await response.json();
463
- expect(body).toHaveProperty("version");
464
- });
465
- });
466
-
467
- /* ------------------------------------------------------------------------------------------------
468
- * Breaking Change: CopilotKitRequestHandler deprecated alias
469
- *
470
- * The CopilotKitRequestHandler type must still be importable for backward
471
- * compatibility, even though it's deprecated.
472
- * --------------------------------------------------------------------------------------------- */
473
-
474
- describe("Breaking change: CopilotKitRequestHandler type alias exists", () => {
475
- it("CopilotKitRequestHandler is exported from the package index", async () => {
476
- // Dynamic import to check the type exists at runtime
477
- const exports = await import("../index");
478
- // TypeScript types don't exist at runtime, but we can verify the module
479
- // loads without errors. The type check is compile-time.
480
- expect(exports).toBeDefined();
481
- });
482
- });
483
-
484
- /* ------------------------------------------------------------------------------------------------
485
- * Item 13: Forward-reference code ordering in node-fetch-handler.ts
486
- *
487
- * createCopilotNodeHandler should be defined before createNodeFetchHandler
488
- * references it. This is a code quality fix — no runtime behavior change.
489
- * --------------------------------------------------------------------------------------------- */
490
-
491
- describe("Item 13: node-fetch-handler exports are both available", () => {
492
- it("both createCopilotNodeHandler and createNodeFetchHandler are exported", async () => {
493
- const { createCopilotNodeHandler, createNodeFetchHandler } =
494
- await import("../endpoints/node-fetch-handler");
495
- expect(typeof createCopilotNodeHandler).toBe("function");
496
- expect(typeof createNodeFetchHandler).toBe("function");
497
- // The deprecated alias should reference the same function
498
- expect(createNodeFetchHandler).toBe(createCopilotNodeHandler);
499
- });
500
- });