@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,440 +0,0 @@
1
- import { describe, it, expect, vi } from "vitest";
2
- import { createCopilotRuntimeHandler } from "../core/fetch-handler";
3
- import { CopilotRuntime } from "../core/runtime";
4
- import type { AbstractAgent } from "@ag-ui/client";
5
-
6
- /* ------------------------------------------------------------------------------------------------
7
- * Helpers
8
- * --------------------------------------------------------------------------------------------- */
9
-
10
- const createMockAgent = () => {
11
- const agent: unknown = {
12
- execute: vi.fn().mockResolvedValue({ events: [] }),
13
- };
14
- (agent as { clone: () => unknown }).clone = () => createMockAgent();
15
- return agent as AbstractAgent;
16
- };
17
-
18
- const createRuntime = (
19
- agents: Record<string, AbstractAgent> = { default: createMockAgent() },
20
- ) => new CopilotRuntime({ agents });
21
-
22
- const post = (url: string, body?: unknown) =>
23
- new Request(url, {
24
- method: "POST",
25
- headers: { "Content-Type": "application/json" },
26
- body: body ? JSON.stringify(body) : undefined,
27
- });
28
-
29
- /* ------------------------------------------------------------------------------------------------
30
- * Single-route: malformed JSON
31
- * --------------------------------------------------------------------------------------------- */
32
-
33
- describe("fetch-handler validation — single-route malformed input", () => {
34
- const runtime = createRuntime();
35
- const handler = createCopilotRuntimeHandler({
36
- runtime,
37
- basePath: "/api",
38
- mode: "single-route",
39
- });
40
-
41
- it("returns 400 for completely invalid JSON body", async () => {
42
- const request = new Request("http://localhost/api", {
43
- method: "POST",
44
- headers: { "Content-Type": "application/json" },
45
- body: "not valid json{{{",
46
- });
47
- const response = await handler(request);
48
- expect(response.status).toBe(400);
49
- const body = await response.json();
50
- expect(body).toHaveProperty("error");
51
- });
52
-
53
- it("returns 400 for empty string body", async () => {
54
- const request = new Request("http://localhost/api", {
55
- method: "POST",
56
- headers: { "Content-Type": "application/json" },
57
- body: "",
58
- });
59
- const response = await handler(request);
60
- expect(response.status).toBe(400);
61
- });
62
-
63
- it("returns 415 for no Content-Type header", async () => {
64
- const request = new Request("http://localhost/api", {
65
- method: "POST",
66
- body: JSON.stringify({ method: "info" }),
67
- });
68
- const response = await handler(request);
69
- expect(response.status).toBe(415);
70
- });
71
-
72
- it("returns 415 for text/plain Content-Type", async () => {
73
- const request = new Request("http://localhost/api", {
74
- method: "POST",
75
- headers: { "Content-Type": "text/plain" },
76
- body: JSON.stringify({ method: "info" }),
77
- });
78
- const response = await handler(request);
79
- expect(response.status).toBe(415);
80
- });
81
-
82
- it("accepts application/json with charset", async () => {
83
- const request = new Request("http://localhost/api", {
84
- method: "POST",
85
- headers: { "Content-Type": "application/json; charset=utf-8" },
86
- body: JSON.stringify({ method: "info" }),
87
- });
88
- const response = await handler(request);
89
- expect(response.status).toBe(200);
90
- });
91
-
92
- it("returns 400 when method is null", async () => {
93
- const response = await handler(
94
- post("http://localhost/api", { method: null }),
95
- );
96
- expect(response.status).toBe(400);
97
- });
98
-
99
- it("returns 400 when method is a number", async () => {
100
- const response = await handler(
101
- post("http://localhost/api", { method: 42 }),
102
- );
103
- expect(response.status).toBe(400);
104
- });
105
-
106
- it("returns 400 when method is wrong case (INFO vs info)", async () => {
107
- const response = await handler(
108
- post("http://localhost/api", { method: "INFO" }),
109
- );
110
- expect(response.status).toBe(400);
111
- });
112
-
113
- it("returns 400 for typo in method name", async () => {
114
- const response = await handler(
115
- post("http://localhost/api", { method: "agent/rn" }),
116
- );
117
- expect(response.status).toBe(400);
118
- });
119
- });
120
-
121
- /* ------------------------------------------------------------------------------------------------
122
- * Single-route: missing required params
123
- * --------------------------------------------------------------------------------------------- */
124
-
125
- describe("fetch-handler validation — single-route missing params", () => {
126
- const runtime = createRuntime();
127
- const handler = createCopilotRuntimeHandler({
128
- runtime,
129
- basePath: "/api",
130
- mode: "single-route",
131
- });
132
-
133
- it("returns 400 for agent/run without agentId param", async () => {
134
- const response = await handler(
135
- post("http://localhost/api", {
136
- method: "agent/run",
137
- params: {},
138
- body: { threadId: "t1", runId: "r1" },
139
- }),
140
- );
141
- expect(response.status).toBe(400);
142
- const body = await response.json();
143
- expect(body.message).toContain("agentId");
144
- });
145
-
146
- it("returns 400 for agent/run with empty agentId", async () => {
147
- const response = await handler(
148
- post("http://localhost/api", {
149
- method: "agent/run",
150
- params: { agentId: "" },
151
- body: { threadId: "t1", runId: "r1" },
152
- }),
153
- );
154
- expect(response.status).toBe(400);
155
- });
156
-
157
- it("returns 400 for agent/run with whitespace-only agentId", async () => {
158
- const response = await handler(
159
- post("http://localhost/api", {
160
- method: "agent/run",
161
- params: { agentId: " " },
162
- body: { threadId: "t1", runId: "r1" },
163
- }),
164
- );
165
- expect(response.status).toBe(400);
166
- });
167
-
168
- it("returns 400 for agent/run with no params at all", async () => {
169
- const response = await handler(
170
- post("http://localhost/api", {
171
- method: "agent/run",
172
- body: { threadId: "t1", runId: "r1" },
173
- }),
174
- );
175
- expect(response.status).toBe(400);
176
- });
177
-
178
- it("returns 400 for agent/connect without agentId param", async () => {
179
- const response = await handler(
180
- post("http://localhost/api", {
181
- method: "agent/connect",
182
- params: {},
183
- body: { threadId: "t1", runId: "r1" },
184
- }),
185
- );
186
- expect(response.status).toBe(400);
187
- const body = await response.json();
188
- expect(body.message).toContain("agentId");
189
- });
190
-
191
- it("returns 400 for agent/stop without agentId param", async () => {
192
- const response = await handler(
193
- post("http://localhost/api", {
194
- method: "agent/stop",
195
- params: { threadId: "t1" },
196
- }),
197
- );
198
- expect(response.status).toBe(400);
199
- const body = await response.json();
200
- expect(body.message).toContain("agentId");
201
- });
202
-
203
- it("returns 400 for agent/stop without threadId param", async () => {
204
- const response = await handler(
205
- post("http://localhost/api", {
206
- method: "agent/stop",
207
- params: { agentId: "default" },
208
- }),
209
- );
210
- expect(response.status).toBe(400);
211
- const body = await response.json();
212
- expect(body.message).toContain("threadId");
213
- });
214
-
215
- it("returns 400 for agent/stop with no params", async () => {
216
- const response = await handler(
217
- post("http://localhost/api", { method: "agent/stop" }),
218
- );
219
- expect(response.status).toBe(400);
220
- });
221
-
222
- it("returns 400 for agent/run with non-string agentId", async () => {
223
- const response = await handler(
224
- post("http://localhost/api", {
225
- method: "agent/run",
226
- params: { agentId: 123 },
227
- body: { threadId: "t1", runId: "r1" },
228
- }),
229
- );
230
- expect(response.status).toBe(400);
231
- });
232
-
233
- it("info method works without params", async () => {
234
- const response = await handler(
235
- post("http://localhost/api", { method: "info" }),
236
- );
237
- expect(response.status).toBe(200);
238
- const body = await response.json();
239
- expect(body).toHaveProperty("version");
240
- });
241
-
242
- it("transcribe method without body returns 400 (body required for transcribe)", async () => {
243
- const response = await handler(
244
- post("http://localhost/api", { method: "transcribe" }),
245
- );
246
- // In single-route mode, transcribe requires a body via createJsonRequest
247
- expect(response.status).toBe(400);
248
- });
249
-
250
- it("transcribe method with body dispatches correctly", async () => {
251
- const response = await handler(
252
- post("http://localhost/api", {
253
- method: "transcribe",
254
- body: { audio: "data" },
255
- }),
256
- );
257
- // Route matched — not a param validation error
258
- expect(response.status).not.toBe(400);
259
- });
260
- });
261
-
262
- /* ------------------------------------------------------------------------------------------------
263
- * Multi-route: edge cases
264
- * --------------------------------------------------------------------------------------------- */
265
-
266
- describe("fetch-handler validation — multi-route edge cases", () => {
267
- const runtime = createRuntime();
268
-
269
- it("handles request with no body on a POST route gracefully", async () => {
270
- const handler = createCopilotRuntimeHandler({
271
- runtime,
272
- basePath: "/api",
273
- });
274
- const request = new Request("http://localhost/api/agent/default/run", {
275
- method: "POST",
276
- headers: { "Content-Type": "application/json" },
277
- });
278
- const response = await handler(request);
279
- // Should not crash — may return 400 or 500 but not a Node crash
280
- expect(response).toBeInstanceOf(Response);
281
- expect(response.status).toBeGreaterThanOrEqual(400);
282
- });
283
-
284
- it("CORS headers present on error responses too", async () => {
285
- const handler = createCopilotRuntimeHandler({
286
- runtime,
287
- basePath: "/api",
288
- cors: true,
289
- });
290
- const response = await handler(
291
- new Request("http://localhost/api/unknown", { method: "GET" }),
292
- );
293
- expect(response.status).toBe(404);
294
- expect(response.headers.get("Access-Control-Allow-Origin")).toBe("*");
295
- });
296
-
297
- it("CORS headers present on 405 responses", async () => {
298
- const handler = createCopilotRuntimeHandler({
299
- runtime,
300
- basePath: "/api",
301
- cors: true,
302
- });
303
- const response = await handler(
304
- new Request("http://localhost/api/info", { method: "POST" }),
305
- );
306
- expect(response.status).toBe(405);
307
- expect(response.headers.get("Access-Control-Allow-Origin")).toBe("*");
308
- });
309
-
310
- it("CORS headers present on 500 error responses", async () => {
311
- const agent: unknown = {
312
- execute: vi.fn().mockRejectedValue(new Error("boom")),
313
- clone: () => agent,
314
- };
315
- const errorRuntime = createRuntime({ default: agent as AbstractAgent });
316
- const handler = createCopilotRuntimeHandler({
317
- runtime: errorRuntime,
318
- basePath: "/api",
319
- cors: true,
320
- });
321
-
322
- const response = await handler(
323
- post("http://localhost/api/agent/default/run", {
324
- threadId: "t1",
325
- runId: "r1",
326
- }),
327
- );
328
- expect(response).toBeInstanceOf(Response);
329
- expect(response.headers.get("Access-Control-Allow-Origin")).toBe("*");
330
- });
331
-
332
- it("error response does not leak error details to clients", async () => {
333
- const handler = createCopilotRuntimeHandler({
334
- runtime,
335
- basePath: "/api",
336
- hooks: {
337
- onRequest: () => {
338
- throw new Error("sensitive internal detail: /home/user/db.sqlite");
339
- },
340
- },
341
- });
342
-
343
- const response = await handler(
344
- new Request("http://localhost/api/info", { method: "GET" }),
345
- );
346
- expect(response.status).toBe(500);
347
- const body = await response.json();
348
- expect(body.error).toBe("internal_error");
349
- // Error message should NOT be exposed to the client
350
- expect(body.message).toBeUndefined();
351
- });
352
-
353
- it("error response returns internal_error for non-Error throws", async () => {
354
- const handler = createCopilotRuntimeHandler({
355
- runtime,
356
- basePath: "/api",
357
- hooks: {
358
- onRequest: () => {
359
- throw "string error";
360
- },
361
- },
362
- });
363
-
364
- const response = await handler(
365
- new Request("http://localhost/api/info", { method: "GET" }),
366
- );
367
- expect(response.status).toBe(500);
368
- const body = await response.json();
369
- expect(body.error).toBe("internal_error");
370
- expect(body.message).toBeUndefined();
371
- });
372
- });
373
-
374
- /* ------------------------------------------------------------------------------------------------
375
- * Multi-route: HTTP method enforcement on per-thread GET endpoints
376
- *
377
- * /threads/:threadId/events and /threads/:threadId/state are read-only and
378
- * must reject anything other than GET with 405 + Allow: GET. These tests
379
- * pin that contract so a future refactor cannot quietly downgrade it.
380
- * --------------------------------------------------------------------------------------------- */
381
-
382
- describe("fetch-handler validation — GET-only enforcement on threads read endpoints", () => {
383
- const runtime = createRuntime();
384
- const handler = createCopilotRuntimeHandler({
385
- runtime,
386
- basePath: "/api",
387
- });
388
-
389
- const expectMethodNotAllowed = async (
390
- response: Response,
391
- expectedAllow: string,
392
- ) => {
393
- expect(response.status).toBe(405);
394
- expect(response.headers.get("Allow")).toBe(expectedAllow);
395
- };
396
-
397
- for (const method of ["POST", "PATCH", "DELETE"]) {
398
- it(`returns 405 with Allow: GET for ${method} /threads/:id/events`, async () => {
399
- const response = await handler(
400
- new Request("http://localhost/api/threads/thread-1/events", {
401
- method,
402
- // PATCH/POST without a body or content-type would otherwise hit
403
- // a different validation branch; this exercises pure method check.
404
- headers: { "Content-Type": "application/json" },
405
- }),
406
- );
407
- await expectMethodNotAllowed(response, "GET");
408
- });
409
-
410
- it(`returns 405 with Allow: GET for ${method} /threads/:id/state`, async () => {
411
- const response = await handler(
412
- new Request("http://localhost/api/threads/thread-1/state", {
413
- method,
414
- headers: { "Content-Type": "application/json" },
415
- }),
416
- );
417
- await expectMethodNotAllowed(response, "GET");
418
- });
419
- }
420
-
421
- it("accepts GET on /threads/:id/events", async () => {
422
- const response = await handler(
423
- new Request("http://localhost/api/threads/thread-1/events", {
424
- method: "GET",
425
- }),
426
- );
427
- // The route may 422 (no Intelligence configured) or 200 — either way it
428
- // is NOT a 405, which is the contract we are pinning here.
429
- expect(response.status).not.toBe(405);
430
- });
431
-
432
- it("accepts GET on /threads/:id/state", async () => {
433
- const response = await handler(
434
- new Request("http://localhost/api/threads/thread-1/state", {
435
- method: "GET",
436
- }),
437
- );
438
- expect(response.status).not.toBe(405);
439
- });
440
- });