@copilotkit/runtime 1.55.0-next.9 → 1.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/CHANGELOG.md +24 -2
  2. package/dist/agent/index.cjs +101 -12
  3. package/dist/agent/index.cjs.map +1 -1
  4. package/dist/agent/index.d.cts.map +1 -1
  5. package/dist/agent/index.d.mts.map +1 -1
  6. package/dist/agent/index.mjs +102 -13
  7. package/dist/agent/index.mjs.map +1 -1
  8. package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs.map +1 -1
  9. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts +4 -841
  10. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts.map +1 -1
  11. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts +4 -841
  12. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts.map +1 -1
  13. package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs.map +1 -1
  14. package/dist/lib/runtime/copilot-runtime.cjs +3 -2
  15. package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
  16. package/dist/lib/runtime/copilot-runtime.d.cts +1 -1
  17. package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
  18. package/dist/lib/runtime/copilot-runtime.d.mts +3 -3
  19. package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
  20. package/dist/lib/runtime/copilot-runtime.mjs +3 -2
  21. package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
  22. package/dist/package.cjs +70 -47
  23. package/dist/package.mjs +70 -47
  24. package/dist/v2/express.cjs +8 -0
  25. package/dist/v2/express.d.cts +5 -0
  26. package/dist/v2/express.d.mts +5 -0
  27. package/dist/v2/express.mjs +5 -0
  28. package/dist/v2/hono.cjs +9 -0
  29. package/dist/v2/hono.d.cts +5 -0
  30. package/dist/v2/hono.d.mts +5 -0
  31. package/dist/v2/hono.mjs +5 -0
  32. package/dist/v2/index.cjs +8 -3
  33. package/dist/v2/index.d.cts +8 -5
  34. package/dist/v2/index.d.mts +8 -5
  35. package/dist/v2/index.mjs +5 -4
  36. package/dist/v2/node.cjs +8 -0
  37. package/dist/v2/node.d.cts +5 -0
  38. package/dist/v2/node.d.mts +5 -0
  39. package/dist/v2/node.mjs +5 -0
  40. package/dist/v2/runtime/core/fetch-cors.cjs +72 -0
  41. package/dist/v2/runtime/core/fetch-cors.cjs.map +1 -0
  42. package/dist/v2/runtime/core/fetch-cors.d.cts +20 -0
  43. package/dist/v2/runtime/core/fetch-cors.d.cts.map +1 -0
  44. package/dist/v2/runtime/core/fetch-cors.d.mts +20 -0
  45. package/dist/v2/runtime/core/fetch-cors.d.mts.map +1 -0
  46. package/dist/v2/runtime/core/fetch-cors.mjs +70 -0
  47. package/dist/v2/runtime/core/fetch-cors.mjs.map +1 -0
  48. package/dist/v2/runtime/core/fetch-handler.cjs +232 -0
  49. package/dist/v2/runtime/core/fetch-handler.cjs.map +1 -0
  50. package/dist/v2/runtime/core/fetch-handler.d.cts +40 -0
  51. package/dist/v2/runtime/core/fetch-handler.d.cts.map +1 -0
  52. package/dist/v2/runtime/core/fetch-handler.d.mts +40 -0
  53. package/dist/v2/runtime/core/fetch-handler.d.mts.map +1 -0
  54. package/dist/v2/runtime/core/fetch-handler.mjs +231 -0
  55. package/dist/v2/runtime/core/fetch-handler.mjs.map +1 -0
  56. package/dist/v2/runtime/core/fetch-router.cjs +68 -0
  57. package/dist/v2/runtime/core/fetch-router.cjs.map +1 -0
  58. package/dist/v2/runtime/core/fetch-router.mjs +67 -0
  59. package/dist/v2/runtime/core/fetch-router.mjs.map +1 -0
  60. package/dist/v2/runtime/core/hooks.cjs +29 -0
  61. package/dist/v2/runtime/core/hooks.cjs.map +1 -0
  62. package/dist/v2/runtime/core/hooks.d.cts +78 -0
  63. package/dist/v2/runtime/core/hooks.d.cts.map +1 -0
  64. package/dist/v2/runtime/core/hooks.d.mts +78 -0
  65. package/dist/v2/runtime/core/hooks.d.mts.map +1 -0
  66. package/dist/v2/runtime/core/hooks.mjs +25 -0
  67. package/dist/v2/runtime/core/hooks.mjs.map +1 -0
  68. package/dist/v2/runtime/{middleware-sse-parser.cjs → core/middleware-sse-parser.cjs} +2 -2
  69. package/dist/v2/runtime/core/middleware-sse-parser.cjs.map +1 -0
  70. package/dist/v2/runtime/{middleware-sse-parser.d.cts → core/middleware-sse-parser.d.cts} +1 -1
  71. package/dist/v2/runtime/core/middleware-sse-parser.d.cts.map +1 -0
  72. package/dist/v2/runtime/{middleware-sse-parser.d.mts → core/middleware-sse-parser.d.mts} +1 -1
  73. package/dist/v2/runtime/core/middleware-sse-parser.d.mts.map +1 -0
  74. package/dist/v2/runtime/{middleware-sse-parser.mjs → core/middleware-sse-parser.mjs} +1 -1
  75. package/dist/v2/runtime/core/middleware-sse-parser.mjs.map +1 -0
  76. package/dist/v2/runtime/{middleware.cjs → core/middleware.cjs} +2 -2
  77. package/dist/v2/runtime/core/middleware.cjs.map +1 -0
  78. package/dist/v2/runtime/{middleware.d.cts → core/middleware.d.cts} +1 -1
  79. package/dist/v2/runtime/core/middleware.d.cts.map +1 -0
  80. package/dist/v2/runtime/{middleware.d.mts → core/middleware.d.mts} +1 -1
  81. package/dist/v2/runtime/core/middleware.d.mts.map +1 -0
  82. package/dist/v2/runtime/{middleware.mjs → core/middleware.mjs} +1 -1
  83. package/dist/v2/runtime/core/middleware.mjs.map +1 -0
  84. package/dist/v2/runtime/{runtime.cjs → core/runtime.cjs} +35 -10
  85. package/dist/v2/runtime/core/runtime.cjs.map +1 -0
  86. package/dist/v2/runtime/{runtime.d.cts → core/runtime.d.cts} +41 -7
  87. package/dist/v2/runtime/core/runtime.d.cts.map +1 -0
  88. package/dist/v2/runtime/{runtime.d.mts → core/runtime.d.mts} +42 -8
  89. package/dist/v2/runtime/core/runtime.d.mts.map +1 -0
  90. package/dist/v2/runtime/{runtime.mjs → core/runtime.mjs} +36 -11
  91. package/dist/v2/runtime/core/runtime.mjs.map +1 -0
  92. package/dist/v2/runtime/endpoints/express-fetch-bridge.cjs +83 -0
  93. package/dist/v2/runtime/endpoints/express-fetch-bridge.cjs.map +1 -0
  94. package/dist/v2/runtime/endpoints/express-fetch-bridge.mjs +82 -0
  95. package/dist/v2/runtime/endpoints/express-fetch-bridge.mjs.map +1 -0
  96. package/dist/v2/runtime/endpoints/express-single.cjs +35 -181
  97. package/dist/v2/runtime/endpoints/express-single.cjs.map +1 -1
  98. package/dist/v2/runtime/endpoints/express-single.d.cts +35 -2
  99. package/dist/v2/runtime/endpoints/express-single.d.cts.map +1 -1
  100. package/dist/v2/runtime/endpoints/express-single.d.mts +35 -2
  101. package/dist/v2/runtime/endpoints/express-single.d.mts.map +1 -1
  102. package/dist/v2/runtime/endpoints/express-single.mjs +35 -178
  103. package/dist/v2/runtime/endpoints/express-single.mjs.map +1 -1
  104. package/dist/v2/runtime/endpoints/express.cjs +41 -195
  105. package/dist/v2/runtime/endpoints/express.cjs.map +1 -1
  106. package/dist/v2/runtime/endpoints/express.d.cts +26 -4
  107. package/dist/v2/runtime/endpoints/express.d.cts.map +1 -1
  108. package/dist/v2/runtime/endpoints/express.d.mts +26 -4
  109. package/dist/v2/runtime/endpoints/express.d.mts.map +1 -1
  110. package/dist/v2/runtime/endpoints/express.mjs +41 -195
  111. package/dist/v2/runtime/endpoints/express.mjs.map +1 -1
  112. package/dist/v2/runtime/endpoints/hono-single.cjs +11 -123
  113. package/dist/v2/runtime/endpoints/hono-single.cjs.map +1 -1
  114. package/dist/v2/runtime/endpoints/hono-single.d.cts +14 -11
  115. package/dist/v2/runtime/endpoints/hono-single.d.cts.map +1 -1
  116. package/dist/v2/runtime/endpoints/hono-single.d.mts +14 -11
  117. package/dist/v2/runtime/endpoints/hono-single.d.mts.map +1 -1
  118. package/dist/v2/runtime/endpoints/hono-single.mjs +11 -123
  119. package/dist/v2/runtime/endpoints/hono-single.mjs.map +1 -1
  120. package/dist/v2/runtime/endpoints/hono.cjs +23 -237
  121. package/dist/v2/runtime/endpoints/hono.cjs.map +1 -1
  122. package/dist/v2/runtime/endpoints/hono.d.cts +29 -120
  123. package/dist/v2/runtime/endpoints/hono.d.cts.map +1 -1
  124. package/dist/v2/runtime/endpoints/hono.d.mts +29 -120
  125. package/dist/v2/runtime/endpoints/hono.d.mts.map +1 -1
  126. package/dist/v2/runtime/endpoints/hono.mjs +22 -238
  127. package/dist/v2/runtime/endpoints/hono.mjs.map +1 -1
  128. package/dist/v2/runtime/endpoints/index.d.cts +2 -2
  129. package/dist/v2/runtime/endpoints/index.d.mts +2 -2
  130. package/dist/v2/runtime/endpoints/node-fetch-handler.cjs +26 -0
  131. package/dist/v2/runtime/endpoints/node-fetch-handler.cjs.map +1 -0
  132. package/dist/v2/runtime/endpoints/node-fetch-handler.d.cts +12 -0
  133. package/dist/v2/runtime/endpoints/node-fetch-handler.d.cts.map +1 -0
  134. package/dist/v2/runtime/endpoints/node-fetch-handler.d.mts +12 -0
  135. package/dist/v2/runtime/endpoints/node-fetch-handler.d.mts.map +1 -0
  136. package/dist/v2/runtime/endpoints/node-fetch-handler.mjs +24 -0
  137. package/dist/v2/runtime/endpoints/node-fetch-handler.mjs.map +1 -0
  138. package/dist/v2/runtime/endpoints/node.cjs +30 -0
  139. package/dist/v2/runtime/endpoints/node.cjs.map +1 -0
  140. package/dist/v2/runtime/endpoints/node.d.cts +27 -0
  141. package/dist/v2/runtime/endpoints/node.d.cts.map +1 -0
  142. package/dist/v2/runtime/endpoints/node.d.mts +27 -0
  143. package/dist/v2/runtime/endpoints/node.d.mts.map +1 -0
  144. package/dist/v2/runtime/endpoints/node.mjs +30 -0
  145. package/dist/v2/runtime/endpoints/node.mjs.map +1 -0
  146. package/dist/v2/runtime/express.d.cts +3 -0
  147. package/dist/v2/runtime/express.d.mts +3 -0
  148. package/dist/v2/runtime/handlers/get-runtime-info.cjs +2 -1
  149. package/dist/v2/runtime/handlers/get-runtime-info.cjs.map +1 -1
  150. package/dist/v2/runtime/handlers/get-runtime-info.mjs +2 -1
  151. package/dist/v2/runtime/handlers/get-runtime-info.mjs.map +1 -1
  152. package/dist/v2/runtime/handlers/handle-connect.cjs +6 -3
  153. package/dist/v2/runtime/handlers/handle-connect.cjs.map +1 -1
  154. package/dist/v2/runtime/handlers/handle-connect.mjs +6 -3
  155. package/dist/v2/runtime/handlers/handle-connect.mjs.map +1 -1
  156. package/dist/v2/runtime/handlers/handle-run.cjs +6 -3
  157. package/dist/v2/runtime/handlers/handle-run.cjs.map +1 -1
  158. package/dist/v2/runtime/handlers/handle-run.mjs +6 -3
  159. package/dist/v2/runtime/handlers/handle-run.mjs.map +1 -1
  160. package/dist/v2/runtime/handlers/handle-stop.cjs.map +1 -1
  161. package/dist/v2/runtime/handlers/handle-stop.mjs.map +1 -1
  162. package/dist/v2/runtime/handlers/handle-transcribe.cjs.map +1 -1
  163. package/dist/v2/runtime/handlers/handle-transcribe.mjs.map +1 -1
  164. package/dist/v2/runtime/handlers/intelligence/connect.cjs.map +1 -1
  165. package/dist/v2/runtime/handlers/intelligence/connect.mjs.map +1 -1
  166. package/dist/v2/runtime/handlers/intelligence/run.cjs +22 -1
  167. package/dist/v2/runtime/handlers/intelligence/run.cjs.map +1 -1
  168. package/dist/v2/runtime/handlers/intelligence/run.mjs +22 -1
  169. package/dist/v2/runtime/handlers/intelligence/run.mjs.map +1 -1
  170. package/dist/v2/runtime/handlers/intelligence/thread-names.cjs +1 -1
  171. package/dist/v2/runtime/handlers/intelligence/thread-names.cjs.map +1 -1
  172. package/dist/v2/runtime/handlers/intelligence/thread-names.mjs +1 -1
  173. package/dist/v2/runtime/handlers/intelligence/thread-names.mjs.map +1 -1
  174. package/dist/v2/runtime/handlers/shared/agent-utils.cjs +21 -6
  175. package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -1
  176. package/dist/v2/runtime/handlers/shared/agent-utils.mjs +21 -6
  177. package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -1
  178. package/dist/v2/runtime/handlers/shared/json-response.cjs +4 -1
  179. package/dist/v2/runtime/handlers/shared/json-response.cjs.map +1 -1
  180. package/dist/v2/runtime/handlers/shared/json-response.mjs +4 -1
  181. package/dist/v2/runtime/handlers/shared/json-response.mjs.map +1 -1
  182. package/dist/v2/runtime/handlers/shared/resolve-intelligence-user.cjs.map +1 -1
  183. package/dist/v2/runtime/handlers/shared/resolve-intelligence-user.mjs.map +1 -1
  184. package/dist/v2/runtime/handlers/sse/connect.cjs.map +1 -1
  185. package/dist/v2/runtime/handlers/sse/connect.mjs.map +1 -1
  186. package/dist/v2/runtime/handlers/sse/run.cjs.map +1 -1
  187. package/dist/v2/runtime/handlers/sse/run.mjs.map +1 -1
  188. package/dist/v2/runtime/hono.d.cts +3 -0
  189. package/dist/v2/runtime/hono.d.mts +3 -0
  190. package/dist/v2/runtime/index.d.cts +16 -4
  191. package/dist/v2/runtime/index.d.cts.map +1 -0
  192. package/dist/v2/runtime/index.d.mts +16 -4
  193. package/dist/v2/runtime/index.d.mts.map +1 -0
  194. package/dist/v2/runtime/intelligence-platform/client.cjs +10 -1
  195. package/dist/v2/runtime/intelligence-platform/client.cjs.map +1 -1
  196. package/dist/v2/runtime/intelligence-platform/client.d.cts +22 -0
  197. package/dist/v2/runtime/intelligence-platform/client.d.cts.map +1 -1
  198. package/dist/v2/runtime/intelligence-platform/client.d.mts +22 -0
  199. package/dist/v2/runtime/intelligence-platform/client.d.mts.map +1 -1
  200. package/dist/v2/runtime/intelligence-platform/client.mjs +10 -1
  201. package/dist/v2/runtime/intelligence-platform/client.mjs.map +1 -1
  202. package/dist/v2/runtime/node.d.cts +3 -0
  203. package/dist/v2/runtime/node.d.mts +3 -0
  204. package/dist/v2/runtime/open-generative-ui-middleware.cjs +282 -0
  205. package/dist/v2/runtime/open-generative-ui-middleware.cjs.map +1 -0
  206. package/dist/v2/runtime/open-generative-ui-middleware.mjs +280 -0
  207. package/dist/v2/runtime/open-generative-ui-middleware.mjs.map +1 -0
  208. package/dist/v2/runtime/runner/intelligence.cjs +4 -4
  209. package/dist/v2/runtime/runner/intelligence.cjs.map +1 -1
  210. package/dist/v2/runtime/runner/intelligence.d.cts +6 -2
  211. package/dist/v2/runtime/runner/intelligence.d.cts.map +1 -1
  212. package/dist/v2/runtime/runner/intelligence.d.mts +6 -2
  213. package/dist/v2/runtime/runner/intelligence.d.mts.map +1 -1
  214. package/dist/v2/runtime/runner/intelligence.mjs +4 -4
  215. package/dist/v2/runtime/runner/intelligence.mjs.map +1 -1
  216. package/dist/v2/runtime/telemetry/telemetry-client.cjs +37 -0
  217. package/dist/v2/runtime/telemetry/telemetry-client.cjs.map +1 -1
  218. package/dist/v2/runtime/telemetry/telemetry-client.mjs +36 -0
  219. package/dist/v2/runtime/telemetry/telemetry-client.mjs.map +1 -1
  220. package/dist/v2/runtime/telemetry/utils.cjs +15 -0
  221. package/dist/v2/runtime/telemetry/utils.cjs.map +1 -0
  222. package/dist/v2/runtime/telemetry/utils.mjs +14 -0
  223. package/dist/v2/runtime/telemetry/utils.mjs.map +1 -0
  224. package/package.json +81 -48
  225. package/src/agent/__tests__/multimodal.test.ts +176 -0
  226. package/src/agent/index.ts +130 -19
  227. package/src/lib/runtime/agent-integrations/langgraph/agent.ts +3 -3
  228. package/src/lib/runtime/copilot-runtime.ts +1 -0
  229. package/src/v2/express.ts +1 -0
  230. package/src/v2/hono.ts +1 -0
  231. package/src/v2/node.ts +1 -0
  232. package/src/v2/runtime/__tests__/backward-compat.test.ts +261 -0
  233. package/src/v2/runtime/__tests__/code-review-fixes.test.ts +500 -0
  234. package/src/v2/runtime/__tests__/cors-credentials.test.ts +2 -2
  235. package/src/v2/runtime/__tests__/express-adapter.test.ts +188 -0
  236. package/src/v2/runtime/__tests__/express-body-order.test.ts +1 -1
  237. package/src/v2/runtime/__tests__/express-fetch-bridge.test.ts +344 -0
  238. package/src/v2/runtime/__tests__/express-single-sse.test.ts +1 -1
  239. package/src/v2/runtime/__tests__/fetch-cors.test.ts +205 -0
  240. package/src/v2/runtime/__tests__/fetch-handler-validation.test.ts +372 -0
  241. package/src/v2/runtime/__tests__/fetch-handler.test.ts +456 -0
  242. package/src/v2/runtime/__tests__/fetch-router.test.ts +132 -0
  243. package/src/v2/runtime/__tests__/get-runtime-info.test.ts +4 -1
  244. package/src/v2/runtime/__tests__/handle-connect.test.ts +15 -13
  245. package/src/v2/runtime/__tests__/handle-run.test.ts +21 -17
  246. package/src/v2/runtime/__tests__/handle-threads.test.ts +1 -1
  247. package/src/v2/runtime/__tests__/handle-transcribe.test.ts +1 -1
  248. package/src/v2/runtime/__tests__/hono-adapter.test.ts +150 -0
  249. package/src/v2/runtime/__tests__/hooks-edge-cases.test.ts +457 -0
  250. package/src/v2/runtime/__tests__/hooks.test.ts +557 -0
  251. package/src/v2/runtime/__tests__/integration/bun/bun-servers.integration.test.ts +27 -0
  252. package/src/v2/runtime/__tests__/integration/bun/elysia-multi.ts +32 -0
  253. package/src/v2/runtime/__tests__/integration/bun/elysia-single.ts +33 -0
  254. package/src/v2/runtime/__tests__/integration/bun/hono-bun-multi.ts +25 -0
  255. package/src/v2/runtime/__tests__/integration/bun/hono-bun-single.ts +32 -0
  256. package/src/v2/runtime/__tests__/integration/helpers/create-test-runtime.ts +15 -0
  257. package/src/v2/runtime/__tests__/integration/helpers/sse-reader.ts +45 -0
  258. package/src/v2/runtime/__tests__/integration/helpers/test-agent.ts +58 -0
  259. package/src/v2/runtime/__tests__/integration/node-servers.integration.test.ts +39 -0
  260. package/src/v2/runtime/__tests__/integration/servers/express-multi.ts +35 -0
  261. package/src/v2/runtime/__tests__/integration/servers/express-single.ts +36 -0
  262. package/src/v2/runtime/__tests__/integration/servers/fetch-direct.ts +39 -0
  263. package/src/v2/runtime/__tests__/integration/servers/hono-multi.ts +30 -0
  264. package/src/v2/runtime/__tests__/integration/servers/hono-single.ts +37 -0
  265. package/src/v2/runtime/__tests__/integration/servers/node-multi.ts +45 -0
  266. package/src/v2/runtime/__tests__/integration/servers/node-single.ts +46 -0
  267. package/src/v2/runtime/__tests__/integration/servers/types.ts +18 -0
  268. package/src/v2/runtime/__tests__/integration/suites/multi-endpoint.suite.ts +358 -0
  269. package/src/v2/runtime/__tests__/integration/suites/single-endpoint.suite.ts +363 -0
  270. package/src/v2/runtime/__tests__/middleware-express.test.ts +1 -1
  271. package/src/v2/runtime/__tests__/middleware-single-express.test.ts +1 -1
  272. package/src/v2/runtime/__tests__/middleware-single.test.ts +1 -1
  273. package/src/v2/runtime/__tests__/middleware-sse-parser.test.ts +1 -1
  274. package/src/v2/runtime/__tests__/middleware.test.ts +1 -2
  275. package/src/v2/runtime/__tests__/node-fetch-handler.test.ts +157 -0
  276. package/src/v2/runtime/__tests__/open-generative-ui-middleware.e2e.test.ts +728 -0
  277. package/src/v2/runtime/__tests__/router-edge-cases.test.ts +217 -0
  278. package/src/v2/runtime/__tests__/routing-express.test.ts +1 -1
  279. package/src/v2/runtime/__tests__/routing-single-express.test.ts +1 -1
  280. package/src/v2/runtime/__tests__/routing-single.test.ts +1 -1
  281. package/src/v2/runtime/__tests__/routing.test.ts +1 -1
  282. package/src/v2/runtime/__tests__/runtime.test.ts +110 -1
  283. package/src/v2/runtime/__tests__/telemetry.test.ts +62 -1
  284. package/src/v2/runtime/core/fetch-cors.ts +136 -0
  285. package/src/v2/runtime/core/fetch-handler.ts +415 -0
  286. package/src/v2/runtime/core/fetch-router.ts +112 -0
  287. package/src/v2/runtime/core/hooks.ts +151 -0
  288. package/src/v2/runtime/{runtime.ts → core/runtime.ts} +79 -10
  289. package/src/v2/runtime/endpoints/express-fetch-bridge.ts +137 -0
  290. package/src/v2/runtime/endpoints/express-single.ts +42 -219
  291. package/src/v2/runtime/endpoints/express.ts +128 -230
  292. package/src/v2/runtime/endpoints/hono-single.ts +19 -171
  293. package/src/v2/runtime/endpoints/hono.ts +45 -270
  294. package/src/v2/runtime/endpoints/node-fetch-handler.ts +48 -0
  295. package/src/v2/runtime/endpoints/node.ts +28 -0
  296. package/src/v2/runtime/handlers/get-runtime-info.ts +3 -2
  297. package/src/v2/runtime/handlers/handle-connect.ts +7 -4
  298. package/src/v2/runtime/handlers/handle-run.ts +7 -4
  299. package/src/v2/runtime/handlers/handle-stop.ts +1 -1
  300. package/src/v2/runtime/handlers/handle-transcribe.ts +1 -1
  301. package/src/v2/runtime/handlers/intelligence/connect.ts +1 -1
  302. package/src/v2/runtime/handlers/intelligence/run.ts +31 -1
  303. package/src/v2/runtime/handlers/intelligence/thread-names.ts +2 -2
  304. package/src/v2/runtime/handlers/intelligence/threads.ts +1 -1
  305. package/src/v2/runtime/handlers/shared/agent-utils.ts +29 -10
  306. package/src/v2/runtime/handlers/shared/json-response.ts +4 -1
  307. package/src/v2/runtime/handlers/shared/resolve-intelligence-user.ts +1 -1
  308. package/src/v2/runtime/handlers/sse/connect.ts +1 -1
  309. package/src/v2/runtime/handlers/sse/run.ts +1 -1
  310. package/src/v2/runtime/hono.ts +2 -0
  311. package/src/v2/runtime/index.ts +27 -1
  312. package/src/v2/runtime/intelligence-platform/client.ts +50 -1
  313. package/src/v2/runtime/node.ts +6 -0
  314. package/src/v2/runtime/open-generative-ui-middleware.ts +373 -0
  315. package/src/v2/runtime/runner/intelligence.ts +14 -4
  316. package/src/v2/runtime/telemetry/telemetry-client.ts +56 -0
  317. package/src/v2/runtime/telemetry/utils.ts +15 -0
  318. package/tsdown.config.ts +8 -1
  319. package/vitest.config.mjs +2 -5
  320. package/.eslintrc.js +0 -7
  321. package/dist/v2/runtime/endpoints/express-utils.cjs +0 -119
  322. package/dist/v2/runtime/endpoints/express-utils.cjs.map +0 -1
  323. package/dist/v2/runtime/endpoints/express-utils.mjs +0 -117
  324. package/dist/v2/runtime/endpoints/express-utils.mjs.map +0 -1
  325. package/dist/v2/runtime/handlers/intelligence/threads.cjs +0 -159
  326. package/dist/v2/runtime/handlers/intelligence/threads.cjs.map +0 -1
  327. package/dist/v2/runtime/handlers/intelligence/threads.mjs +0 -154
  328. package/dist/v2/runtime/handlers/intelligence/threads.mjs.map +0 -1
  329. package/dist/v2/runtime/middleware-sse-parser.cjs.map +0 -1
  330. package/dist/v2/runtime/middleware-sse-parser.d.cts.map +0 -1
  331. package/dist/v2/runtime/middleware-sse-parser.d.mts.map +0 -1
  332. package/dist/v2/runtime/middleware-sse-parser.mjs.map +0 -1
  333. package/dist/v2/runtime/middleware.cjs.map +0 -1
  334. package/dist/v2/runtime/middleware.d.cts.map +0 -1
  335. package/dist/v2/runtime/middleware.d.mts.map +0 -1
  336. package/dist/v2/runtime/middleware.mjs.map +0 -1
  337. package/dist/v2/runtime/runtime.cjs.map +0 -1
  338. package/dist/v2/runtime/runtime.d.cts.map +0 -1
  339. package/dist/v2/runtime/runtime.d.mts.map +0 -1
  340. package/dist/v2/runtime/runtime.mjs.map +0 -1
  341. package/src/v2/runtime/__tests__/express-abort-signal.test.ts +0 -25
  342. package/src/v2/runtime/endpoints/express-utils.ts +0 -182
  343. package/src/v2/runtime/handler.ts +0 -3
  344. /package/src/v2/runtime/{middleware-sse-parser.ts → core/middleware-sse-parser.ts} +0 -0
  345. /package/src/v2/runtime/{middleware.ts → core/middleware.ts} +0 -0
@@ -1,16 +1,38 @@
1
1
  import "reflect-metadata";
2
- import { CopilotRuntimeLike } from "../runtime.mjs";
2
+ import { CopilotRuntimeLike } from "../core/runtime.mjs";
3
+ import { CopilotRuntimeHooks } from "../core/hooks.mjs";
3
4
  import { Router } from "express";
5
+ import { CorsOptions } from "cors";
4
6
 
5
7
  //#region src/v2/runtime/endpoints/express.d.ts
6
8
  interface CopilotExpressEndpointParams {
7
9
  runtime: CopilotRuntimeLike;
8
10
  basePath: string;
11
+ /**
12
+ * Endpoint mode.
13
+ * - `"multi-route"` (default): separate routes for each operation
14
+ * - `"single-route"`: single POST endpoint with JSON envelope dispatch
15
+ */
16
+ mode?: "multi-route" | "single-route";
17
+ /**
18
+ * CORS configuration for the Express router.
19
+ * - `true` (default): permissive CORS (`origin: "*"`, all methods, all headers).
20
+ * - `false`: no CORS middleware is applied — handle it yourself.
21
+ * - object: passed directly to the Express `cors()` middleware.
22
+ */
23
+ cors?: boolean | CorsOptions;
24
+ /**
25
+ * Lifecycle hooks for request processing.
26
+ */
27
+ hooks?: CopilotRuntimeHooks;
9
28
  }
10
- declare function createCopilotEndpointExpress({
29
+ declare function createCopilotExpressHandler({
11
30
  runtime,
12
- basePath
31
+ basePath,
32
+ mode,
33
+ cors: corsOption,
34
+ hooks
13
35
  }: CopilotExpressEndpointParams): Router;
14
36
  //#endregion
15
- export { createCopilotEndpointExpress };
37
+ export { CopilotExpressEndpointParams, createCopilotExpressHandler };
16
38
  //# sourceMappingURL=express.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"express.d.mts","names":[],"sources":["../../../../src/v2/runtime/endpoints/express.ts"],"mappings":";;;;;UAiCU,4BAAA;EACR,OAAA,EAAS,kBAAA;EACT,QAAA;AAAA;AAAA,iBAGc,4BAAA,CAAA;EACd,OAAA;EACA;AAAA,GACC,4BAAA,GAA+B,MAAA"}
1
+ {"version":3,"file":"express.d.mts","names":[],"sources":["../../../../src/v2/runtime/endpoints/express.ts"],"mappings":";;;;;;;UAciB,4BAAA;EACf,OAAA,EAAS,kBAAA;EACT,QAAA;EAF2C;;;;;EAS3C,IAAA;EAa2B;;;;;;EAL3B,IAAA,aAAiB,WAAA;EAKjB;;;EAAA,KAAA,GAAQ,mBAAA;AAAA;AAAA,iBAsDM,2BAAA,CAAA;EACd,OAAA;EACA,QAAA;EACA,IAAA;EACA,IAAA,EAAM,UAAA;EACN;AAAA,GACC,4BAAA,GAA+B,MAAA"}
@@ -1,200 +1,52 @@
1
1
  import "reflect-metadata";
2
- import telemetry from "../telemetry/telemetry-client.mjs";
3
- import { handleRunAgent } from "../handlers/handle-run.mjs";
4
- import { handleGetRuntimeInfo } from "../handlers/get-runtime-info.mjs";
5
- import { handleTranscribe } from "../handlers/handle-transcribe.mjs";
6
- import { callAfterRequestMiddleware, callBeforeRequestMiddleware } from "../middleware.mjs";
7
- import { handleConnectAgent } from "../handlers/handle-connect.mjs";
8
- import { handleStopAgent } from "../handlers/handle-stop.mjs";
9
- import { handleArchiveThread, handleDeleteThread, handleListThreads, handleSubscribeToThreads, handleUpdateThread } from "../handlers/intelligence/threads.mjs";
10
- import { createFetchRequestFromExpress, sendFetchResponse } from "./express-utils.mjs";
11
- import { getLicenseWarningHeader, logger } from "@copilotkit/shared";
2
+ import { createCopilotRuntimeHandler } from "../core/fetch-handler.mjs";
3
+ import { createExpressNodeHandler } from "./express-fetch-bridge.mjs";
12
4
  import express from "express";
13
5
  import cors from "cors";
14
6
 
15
7
  //#region src/v2/runtime/endpoints/express.ts
16
- function createCopilotEndpointExpress({ runtime, basePath }) {
17
- const router = express.Router();
8
+ function createCopilotExpressHandler({ runtime, basePath, mode = "multi-route", cors: corsOption = true, hooks }) {
18
9
  const normalizedBase = normalizeBasePath(basePath);
19
- Promise.resolve(runtime.agents).then((agents) => {
20
- telemetry.capture("oss.runtime.instance_created", {
21
- actionsAmount: 0,
22
- endpointTypes: [],
23
- endpointsAmount: 0,
24
- agentsAmount: Object.keys(agents).length,
25
- "cloud.api_key_provided": false
26
- });
27
- }).catch(() => {});
28
- router.use(cors({
29
- origin: "*",
30
- methods: [
31
- "GET",
32
- "HEAD",
33
- "PUT",
34
- "POST",
35
- "DELETE",
36
- "PATCH",
37
- "OPTIONS"
38
- ],
39
- allowedHeaders: ["*"]
40
- }));
41
- router.post(joinPath(normalizedBase, "/agent/:agentId/run"), createRouteHandler(runtime, async ({ request, req }) => {
42
- const agentId = req.params.agentId;
43
- return handleRunAgent({
44
- runtime,
45
- request,
46
- agentId
47
- });
48
- }));
49
- router.post(joinPath(normalizedBase, "/agent/:agentId/connect"), createRouteHandler(runtime, async ({ request, req }) => {
50
- const agentId = req.params.agentId;
51
- return handleConnectAgent({
52
- runtime,
53
- request,
54
- agentId
55
- });
56
- }));
57
- router.post(joinPath(normalizedBase, "/agent/:agentId/stop/:threadId"), createRouteHandler(runtime, async ({ request, req }) => {
58
- const agentId = req.params.agentId;
59
- const threadId = req.params.threadId;
60
- return handleStopAgent({
61
- runtime,
62
- request,
63
- agentId,
64
- threadId
65
- });
66
- }));
67
- router.get(joinPath(normalizedBase, "/info"), createRouteHandler(runtime, async ({ request }) => {
68
- return handleGetRuntimeInfo({
69
- runtime,
70
- request
71
- });
72
- }));
73
- router.post(joinPath(normalizedBase, "/transcribe"), createRouteHandler(runtime, async ({ request }) => {
74
- return handleTranscribe({
75
- runtime,
76
- request
77
- });
78
- }));
79
- router.get(joinPath(normalizedBase, "/threads"), createRouteHandler(runtime, async ({ request }) => {
80
- return handleListThreads({
81
- runtime,
82
- request
83
- });
84
- }));
85
- router.post(joinPath(normalizedBase, "/threads/subscribe"), createRouteHandler(runtime, async ({ request }) => {
86
- return handleSubscribeToThreads({
87
- runtime,
88
- request
89
- });
90
- }));
91
- router.patch(joinPath(normalizedBase, "/threads/:threadId"), createRouteHandler(runtime, async ({ request, req }) => {
92
- const threadId = req.params.threadId;
93
- return handleUpdateThread({
94
- runtime,
95
- request,
96
- threadId
97
- });
98
- }));
99
- router.post(joinPath(normalizedBase, "/threads/:threadId/archive"), createRouteHandler(runtime, async ({ request, req }) => {
100
- const threadId = req.params.threadId;
101
- return handleArchiveThread({
102
- runtime,
103
- request,
104
- threadId
105
- });
106
- }));
107
- router.delete(joinPath(normalizedBase, "/threads/:threadId"), createRouteHandler(runtime, async ({ request, req }) => {
108
- const threadId = req.params.threadId;
109
- return handleDeleteThread({
110
- runtime,
111
- request,
112
- threadId
113
- });
114
- }));
115
- router.use(joinPath(normalizedBase, "*"), (req, res) => {
116
- res.status(404).json({ error: "Not found" });
117
- });
118
- return router;
119
- }
120
- function createRouteHandler(runtime, factory) {
121
- return async (req, res, next) => {
122
- const path = req.originalUrl ?? req.path;
123
- let request = createFetchRequestFromExpress(req);
124
- const warning = getLicenseWarningHeader(runtime.licenseChecker);
125
- if (warning) res.setHeader(warning.key, warning.value);
10
+ const nodeHandler = createExpressNodeHandler(createCopilotRuntimeHandler({
11
+ runtime,
12
+ basePath: normalizedBase,
13
+ mode,
14
+ cors: false,
15
+ hooks
16
+ }));
17
+ const expressHandler = async (req, res, next) => {
126
18
  try {
127
- const maybeModifiedRequest = await callBeforeRequestMiddleware({
128
- runtime,
129
- request,
130
- path
131
- });
132
- if (maybeModifiedRequest) request = maybeModifiedRequest;
133
- } catch (error) {
134
- logger.error({
135
- err: error,
136
- url: request.url,
137
- path
138
- }, "Error running before request middleware");
139
- if (error instanceof Response) {
140
- try {
141
- await sendFetchResponse(res, error);
142
- } catch (streamError) {
143
- next(streamError);
144
- }
145
- return;
146
- }
147
- next(error);
148
- return;
149
- }
150
- try {
151
- const response = await factory({
152
- request,
153
- req
154
- });
155
- const responseForMiddleware = response.clone();
156
- await sendFetchResponse(res, response);
157
- callAfterRequestMiddleware({
158
- runtime,
159
- response: responseForMiddleware,
160
- path
161
- }).catch((error) => {
162
- logger.error({
163
- err: error,
164
- url: req.originalUrl ?? req.url,
165
- path
166
- }, "Error running after request middleware");
167
- });
168
- } catch (error) {
169
- if (error instanceof Response) {
170
- const errorResponseForMiddleware = error.clone();
171
- try {
172
- await sendFetchResponse(res, error);
173
- } catch (streamError) {
174
- next(streamError);
175
- return;
176
- }
177
- callAfterRequestMiddleware({
178
- runtime,
179
- response: errorResponseForMiddleware,
180
- path
181
- }).catch((mwError) => {
182
- logger.error({
183
- err: mwError,
184
- url: req.originalUrl ?? req.url,
185
- path
186
- }, "Error running after request middleware");
187
- });
188
- return;
189
- }
190
- logger.error({
191
- err: error,
192
- url: request.url,
193
- path
194
- }, "Error running request handler");
195
- next(error);
19
+ await nodeHandler(req, res);
20
+ } catch (err) {
21
+ next(err);
196
22
  }
197
23
  };
24
+ const router = express.Router();
25
+ if (corsOption) {
26
+ const corsConfig = corsOption === true ? {
27
+ origin: "*",
28
+ methods: [
29
+ "GET",
30
+ "HEAD",
31
+ "PUT",
32
+ "POST",
33
+ "DELETE",
34
+ "PATCH",
35
+ "OPTIONS"
36
+ ],
37
+ allowedHeaders: ["*"]
38
+ } : corsOption;
39
+ router.use(cors(corsConfig));
40
+ }
41
+ if (mode === "single-route") {
42
+ router.post(normalizedBase, expressHandler);
43
+ router.options(normalizedBase, expressHandler);
44
+ } else if (normalizedBase === "/") router.all("*", expressHandler);
45
+ else {
46
+ router.all(`${normalizedBase}/*`, expressHandler);
47
+ router.all(normalizedBase, expressHandler);
48
+ }
49
+ return router;
198
50
  }
199
51
  function normalizeBasePath(path) {
200
52
  if (!path) throw new Error("basePath must be provided for Express endpoint");
@@ -202,13 +54,7 @@ function normalizeBasePath(path) {
202
54
  if (path.length > 1 && path.endsWith("/")) return path.slice(0, -1);
203
55
  return path;
204
56
  }
205
- function joinPath(basePath, suffix) {
206
- if (basePath === "/") return suffix.startsWith("/") ? suffix : `/${suffix}`;
207
- if (!suffix) return basePath;
208
- if (suffix === "*") return `${basePath}/*`;
209
- return `${basePath}${suffix.startsWith("/") ? suffix : `/${suffix}`}`;
210
- }
211
57
 
212
58
  //#endregion
213
- export { createCopilotEndpointExpress };
59
+ export { createCopilotExpressHandler };
214
60
  //# sourceMappingURL=express.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"express.mjs","names":[],"sources":["../../../../src/v2/runtime/endpoints/express.ts"],"sourcesContent":["import express from \"express\";\nimport type {\n Request as ExpressRequest,\n Response as ExpressResponse,\n NextFunction,\n Router,\n} from \"express\";\nimport cors from \"cors\";\n\nimport { CopilotRuntimeLike } from \"../runtime\";\nimport { telemetry } from \"../telemetry\";\nimport { handleRunAgent } from \"../handlers/handle-run\";\nimport { handleConnectAgent } from \"../handlers/handle-connect\";\nimport { handleStopAgent } from \"../handlers/handle-stop\";\nimport { handleGetRuntimeInfo } from \"../handlers/get-runtime-info\";\nimport { handleTranscribe } from \"../handlers/handle-transcribe\";\nimport {\n handleListThreads,\n handleSubscribeToThreads,\n handleUpdateThread,\n handleArchiveThread,\n handleDeleteThread,\n} from \"../handlers/handle-threads\";\nimport { logger, getLicenseWarningHeader } from \"@copilotkit/shared\";\nimport {\n callBeforeRequestMiddleware,\n callAfterRequestMiddleware,\n} from \"../middleware\";\nimport {\n createFetchRequestFromExpress,\n sendFetchResponse,\n} from \"./express-utils\";\n\ninterface CopilotExpressEndpointParams {\n runtime: CopilotRuntimeLike;\n basePath: string;\n}\n\nexport function createCopilotEndpointExpress({\n runtime,\n basePath,\n}: CopilotExpressEndpointParams): Router {\n const router = express.Router();\n const normalizedBase = normalizeBasePath(basePath);\n\n // Fire instance_created telemetry - resolve agents if needed\n Promise.resolve(runtime.agents)\n .then((agents) => {\n telemetry.capture(\"oss.runtime.instance_created\", {\n actionsAmount: 0,\n endpointTypes: [],\n endpointsAmount: 0,\n agentsAmount: Object.keys(agents).length,\n \"cloud.api_key_provided\": false,\n });\n })\n .catch(() => {\n // Silently fail - telemetry should not break the application\n });\n\n router.use(\n cors({\n origin: \"*\",\n methods: [\"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\"*\"],\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/agent/:agentId/run\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n return handleRunAgent({ runtime, request, agentId });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/agent/:agentId/connect\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n return handleConnectAgent({ runtime, request, agentId });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/agent/:agentId/stop/:threadId\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n const threadId = req.params.threadId as string;\n return handleStopAgent({ runtime, request, agentId, threadId });\n }),\n );\n\n router.get(\n joinPath(normalizedBase, \"/info\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleGetRuntimeInfo({ runtime, request });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/transcribe\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleTranscribe({ runtime, request });\n }),\n );\n\n router.get(\n joinPath(normalizedBase, \"/threads\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleListThreads({ runtime, request });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/threads/subscribe\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleSubscribeToThreads({ runtime, request });\n }),\n );\n\n router.patch(\n joinPath(normalizedBase, \"/threads/:threadId\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const threadId = req.params.threadId as string;\n return handleUpdateThread({ runtime, request, threadId });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/threads/:threadId/archive\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const threadId = req.params.threadId as string;\n return handleArchiveThread({ runtime, request, threadId });\n }),\n );\n\n router.delete(\n joinPath(normalizedBase, \"/threads/:threadId\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const threadId = req.params.threadId as string;\n return handleDeleteThread({ runtime, request, threadId });\n }),\n );\n\n router.use(joinPath(normalizedBase, \"*\"), (req, res) => {\n res.status(404).json({ error: \"Not found\" });\n });\n\n return router;\n}\n\ntype RouteHandlerContext = {\n request: Request;\n req: ExpressRequest;\n};\n\ntype RouteHandlerFactory = (ctx: RouteHandlerContext) => Promise<Response>;\n\nfunction createRouteHandler(\n runtime: CopilotRuntimeLike,\n factory: RouteHandlerFactory,\n) {\n return async (\n req: ExpressRequest,\n res: ExpressResponse,\n next: NextFunction,\n ) => {\n const path = req.originalUrl ?? req.path;\n let request = createFetchRequestFromExpress(req);\n\n const warning = getLicenseWarningHeader(runtime.licenseChecker);\n if (warning) res.setHeader(warning.key, warning.value);\n\n try {\n const maybeModifiedRequest = await callBeforeRequestMiddleware({\n runtime,\n request,\n path,\n });\n if (maybeModifiedRequest) {\n request = maybeModifiedRequest;\n }\n } catch (error) {\n logger.error(\n { err: error, url: request.url, path },\n \"Error running before request middleware\",\n );\n if (error instanceof Response) {\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n }\n return;\n }\n next(error);\n return;\n }\n\n try {\n const response = await factory({ request, req });\n const responseForMiddleware = response.clone();\n await sendFetchResponse(res, response);\n callAfterRequestMiddleware({\n runtime,\n response: responseForMiddleware,\n path,\n }).catch((error) => {\n logger.error(\n { err: error, url: req.originalUrl ?? req.url, path },\n \"Error running after request middleware\",\n );\n });\n } catch (error) {\n if (error instanceof Response) {\n const errorResponseForMiddleware = error.clone();\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n return;\n }\n callAfterRequestMiddleware({\n runtime,\n response: errorResponseForMiddleware,\n path,\n }).catch((mwError) => {\n logger.error(\n { err: mwError, url: req.originalUrl ?? req.url, path },\n \"Error running after request middleware\",\n );\n });\n return;\n }\n logger.error(\n { err: error, url: request.url, path },\n \"Error running request handler\",\n );\n next(error);\n }\n };\n}\n\nfunction normalizeBasePath(path: string): string {\n if (!path) {\n throw new Error(\"basePath must be provided for Express endpoint\");\n }\n\n if (!path.startsWith(\"/\")) {\n return `/${path}`;\n }\n\n if (path.length > 1 && path.endsWith(\"/\")) {\n return path.slice(0, -1);\n }\n\n return path;\n}\n\nfunction joinPath(basePath: string, suffix: string): string {\n if (basePath === \"/\") {\n return suffix.startsWith(\"/\") ? suffix : `/${suffix}`;\n }\n\n if (!suffix) {\n return basePath;\n }\n\n if (suffix === \"*\") {\n return `${basePath}/*`;\n }\n\n return `${basePath}${suffix.startsWith(\"/\") ? suffix : `/${suffix}`}`;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"express.mjs","names":[],"sources":["../../../../src/v2/runtime/endpoints/express.ts"],"sourcesContent":["import express from \"express\";\nimport type {\n Request as ExpressRequest,\n Response as ExpressResponse,\n NextFunction,\n Router,\n} from \"express\";\nimport cors from \"cors\";\nimport type { CorsOptions } from \"cors\";\nimport type { CopilotRuntimeLike } from \"../core/runtime\";\nimport { createCopilotRuntimeHandler } from \"../core/fetch-handler\";\nimport { createExpressNodeHandler } from \"./express-fetch-bridge\";\nimport type { CopilotRuntimeHooks } from \"../core/hooks\";\n\nexport interface CopilotExpressEndpointParams {\n runtime: CopilotRuntimeLike;\n basePath: string;\n\n /**\n * Endpoint mode.\n * - `\"multi-route\"` (default): separate routes for each operation\n * - `\"single-route\"`: single POST endpoint with JSON envelope dispatch\n */\n mode?: \"multi-route\" | \"single-route\";\n\n /**\n * CORS configuration for the Express router.\n * - `true` (default): permissive CORS (`origin: \"*\"`, all methods, all headers).\n * - `false`: no CORS middleware is applied — handle it yourself.\n * - object: passed directly to the Express `cors()` middleware.\n */\n cors?: boolean | CorsOptions;\n\n /**\n * Lifecycle hooks for request processing.\n */\n hooks?: CopilotRuntimeHooks;\n}\n\n/**\n * Creates an Express router that serves the CopilotKit runtime.\n *\n * In **multi-route** mode (default) the router exposes:\n * - `GET {basePath}/info` — runtime info\n * - `POST {basePath}/agent/:agentId/run` — start an agent run\n * - `POST {basePath}/agent/:agentId/connect` — connect to an agent run\n * - `POST {basePath}/agent/:agentId/stop/:threadId` — stop an agent run\n * - `POST {basePath}/transcribe` — transcribe audio\n *\n * In **single-route** mode a single `POST {basePath}` endpoint accepts a JSON\n * envelope `{ method, params, body }` and dispatches to the appropriate handler.\n *\n * @example\n * ```typescript\n * import express from \"express\";\n * import { CopilotRuntime } from \"@copilotkit/runtime/v2\";\n * import { createCopilotExpressHandler } from \"@copilotkit/runtime/v2/express\";\n *\n * const runtime = new CopilotRuntime({\n * agents: { default: new BuiltInAgent({ model: \"openai/gpt-4o-mini\" }) },\n * });\n *\n * const app = express();\n * app.use(createCopilotExpressHandler({\n * runtime,\n * basePath: \"/api/copilotkit\",\n * cors: true,\n * }));\n * app.listen(4000);\n * ```\n *\n * @example Single-route mode with lifecycle hooks\n * ```typescript\n * app.use(createCopilotExpressHandler({\n * runtime,\n * basePath: \"/api/copilotkit\",\n * mode: \"single-route\",\n * hooks: {\n * onRequest: ({ request }) => {\n * if (!request.headers.get(\"authorization\")) {\n * throw new Response(\"Unauthorized\", { status: 401 });\n * }\n * },\n * },\n * }));\n * ```\n */\n/** @deprecated Use `createCopilotExpressHandler` instead. */\nexport { createCopilotExpressHandler as createCopilotEndpointExpress };\n\nexport function createCopilotExpressHandler({\n runtime,\n basePath,\n mode = \"multi-route\",\n cors: corsOption = true,\n hooks,\n}: CopilotExpressEndpointParams): Router {\n const normalizedBase = normalizeBasePath(basePath);\n\n const handler = createCopilotRuntimeHandler({\n runtime,\n basePath: normalizedBase,\n mode,\n cors: false, // CORS is handled at the Express middleware layer\n hooks,\n });\n\n const nodeHandler = createExpressNodeHandler(handler);\n\n const expressHandler = async (\n req: ExpressRequest,\n res: ExpressResponse,\n next: NextFunction,\n ) => {\n try {\n await nodeHandler(req, res);\n } catch (err) {\n next(err);\n }\n };\n\n const router = express.Router();\n\n // CORS middleware\n if (corsOption) {\n const corsConfig: CorsOptions =\n corsOption === true\n ? {\n origin: \"*\",\n methods: [\n \"GET\",\n \"HEAD\",\n \"PUT\",\n \"POST\",\n \"DELETE\",\n \"PATCH\",\n \"OPTIONS\",\n ],\n allowedHeaders: [\"*\"],\n }\n : corsOption;\n router.use(cors(corsConfig));\n }\n\n // Route mounting\n if (mode === \"single-route\") {\n router.post(normalizedBase, expressHandler);\n router.options(normalizedBase, expressHandler);\n } else if (normalizedBase === \"/\") {\n router.all(\"*\", expressHandler);\n } else {\n router.all(`${normalizedBase}/*`, expressHandler);\n router.all(normalizedBase, expressHandler);\n }\n\n return router;\n}\n\nfunction normalizeBasePath(path: string): string {\n if (!path) {\n throw new Error(\"basePath must be provided for Express endpoint\");\n }\n\n if (!path.startsWith(\"/\")) {\n return `/${path}`;\n }\n\n if (path.length > 1 && path.endsWith(\"/\")) {\n return path.slice(0, -1);\n }\n\n return path;\n}\n"],"mappings":";;;;;;;AA0FA,SAAgB,4BAA4B,EAC1C,SACA,UACA,OAAO,eACP,MAAM,aAAa,MACnB,SACuC;CACvC,MAAM,iBAAiB,kBAAkB,SAAS;CAUlD,MAAM,cAAc,yBARJ,4BAA4B;EAC1C;EACA,UAAU;EACV;EACA,MAAM;EACN;EACD,CAAC,CAEmD;CAErD,MAAM,iBAAiB,OACrB,KACA,KACA,SACG;AACH,MAAI;AACF,SAAM,YAAY,KAAK,IAAI;WACpB,KAAK;AACZ,QAAK,IAAI;;;CAIb,MAAM,SAAS,QAAQ,QAAQ;AAG/B,KAAI,YAAY;EACd,MAAM,aACJ,eAAe,OACX;GACE,QAAQ;GACR,SAAS;IACP;IACA;IACA;IACA;IACA;IACA;IACA;IACD;GACD,gBAAgB,CAAC,IAAI;GACtB,GACD;AACN,SAAO,IAAI,KAAK,WAAW,CAAC;;AAI9B,KAAI,SAAS,gBAAgB;AAC3B,SAAO,KAAK,gBAAgB,eAAe;AAC3C,SAAO,QAAQ,gBAAgB,eAAe;YACrC,mBAAmB,IAC5B,QAAO,IAAI,KAAK,eAAe;MAC1B;AACL,SAAO,IAAI,GAAG,eAAe,KAAK,eAAe;AACjD,SAAO,IAAI,gBAAgB,eAAe;;AAG5C,QAAO;;AAGT,SAAS,kBAAkB,MAAsB;AAC/C,KAAI,CAAC,KACH,OAAM,IAAI,MAAM,iDAAiD;AAGnE,KAAI,CAAC,KAAK,WAAW,IAAI,CACvB,QAAO,IAAI;AAGb,KAAI,KAAK,SAAS,KAAK,KAAK,SAAS,IAAI,CACvC,QAAO,KAAK,MAAM,GAAG,GAAG;AAG1B,QAAO"}
@@ -1,133 +1,21 @@
1
1
  require("reflect-metadata");
2
2
  const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
3
- const require_handle_run = require('../handlers/handle-run.cjs');
4
- const require_get_runtime_info = require('../handlers/get-runtime-info.cjs');
5
- const require_handle_transcribe = require('../handlers/handle-transcribe.cjs');
6
- const require_middleware = require('../middleware.cjs');
7
- const require_handle_connect = require('../handlers/handle-connect.cjs');
8
- const require_handle_stop = require('../handlers/handle-stop.cjs');
9
- const require_single_route_helpers = require('./single-route-helpers.cjs');
10
- let _copilotkit_shared = require("@copilotkit/shared");
3
+ const require_fetch_handler = require('../core/fetch-handler.cjs');
4
+ const require_hono = require('./hono.cjs');
11
5
  let hono = require("hono");
12
- let hono_cors = require("hono/cors");
13
6
 
14
7
  //#region src/v2/runtime/endpoints/hono-single.ts
15
- function createCopilotEndpointSingleRoute({ runtime, basePath, cors: corsConfig }) {
16
- const app = new hono.Hono();
8
+ /** @deprecated Use `createCopilotHonoHandler` with `mode: "single-route"` instead. */
9
+ function createCopilotEndpointSingleRoute({ runtime, basePath, cors: corsConfig, hooks }) {
17
10
  const routePath = normalizePath(basePath);
18
- return app.basePath(routePath).use("*", (0, hono_cors.cors)({
19
- origin: corsConfig?.origin ?? "*",
20
- allowMethods: [
21
- "GET",
22
- "HEAD",
23
- "PUT",
24
- "POST",
25
- "DELETE",
26
- "PATCH",
27
- "OPTIONS"
28
- ],
29
- allowHeaders: ["*"],
30
- credentials: corsConfig?.credentials ?? false
31
- })).use("*", async (c, next) => {
32
- const request = c.req.raw;
33
- const path = c.req.path;
34
- try {
35
- const maybeModifiedRequest = await require_middleware.callBeforeRequestMiddleware({
36
- runtime,
37
- request,
38
- path
39
- });
40
- if (maybeModifiedRequest) c.set("modifiedRequest", maybeModifiedRequest);
41
- } catch (error) {
42
- _copilotkit_shared.logger.error({
43
- err: error,
44
- url: request.url,
45
- path
46
- }, "Error running before request middleware");
47
- if (error instanceof Response) return error;
48
- throw error;
49
- }
50
- await next();
51
- }).use("*", async (c, next) => {
52
- await next();
53
- const response = c.res.clone();
54
- const path = c.req.path;
55
- require_middleware.callAfterRequestMiddleware({
56
- runtime,
57
- response,
58
- path
59
- }).catch((error) => {
60
- _copilotkit_shared.logger.error({
61
- err: error,
62
- url: c.req.url,
63
- path
64
- }, "Error running after request middleware");
65
- });
66
- }).post("/", async (c) => {
67
- const request = c.get("modifiedRequest") || c.req.raw;
68
- let methodCall;
69
- try {
70
- methodCall = await require_single_route_helpers.parseMethodCall(request);
71
- } catch (error) {
72
- if (error instanceof Response) {
73
- _copilotkit_shared.logger.warn({ url: request.url }, "Invalid single-route payload");
74
- return error;
75
- }
76
- _copilotkit_shared.logger.warn({
77
- err: error,
78
- url: request.url
79
- }, "Invalid single-route payload");
80
- return c.json({
81
- error: "invalid_request",
82
- message: error instanceof Error ? error.message : "Invalid request payload"
83
- }, 400);
84
- }
85
- try {
86
- switch (methodCall.method) {
87
- case "agent/run": {
88
- const agentId = require_single_route_helpers.expectString(methodCall.params, "agentId");
89
- return await require_handle_run.handleRunAgent({
90
- runtime,
91
- request: require_single_route_helpers.createJsonRequest(request, methodCall.body),
92
- agentId
93
- });
94
- }
95
- case "agent/connect": {
96
- const agentId = require_single_route_helpers.expectString(methodCall.params, "agentId");
97
- return await require_handle_connect.handleConnectAgent({
98
- runtime,
99
- request: require_single_route_helpers.createJsonRequest(request, methodCall.body),
100
- agentId
101
- });
102
- }
103
- case "agent/stop": return await require_handle_stop.handleStopAgent({
104
- runtime,
105
- request,
106
- agentId: require_single_route_helpers.expectString(methodCall.params, "agentId"),
107
- threadId: require_single_route_helpers.expectString(methodCall.params, "threadId")
108
- });
109
- case "info": return await require_get_runtime_info.handleGetRuntimeInfo({
110
- runtime,
111
- request
112
- });
113
- case "transcribe": return await require_handle_transcribe.handleTranscribe({
114
- runtime,
115
- request: require_single_route_helpers.createJsonRequest(request, methodCall.body)
116
- });
117
- default: return methodCall.method;
118
- }
119
- } catch (error) {
120
- if (error instanceof Response) return error;
121
- _copilotkit_shared.logger.error({
122
- err: error,
123
- url: request.url,
124
- method: methodCall.method
125
- }, "Error running single-route handler");
126
- throw error;
127
- }
128
- }).notFound((c) => {
129
- return c.json({ error: "Not found" }, 404);
11
+ const handler = require_fetch_handler.createCopilotRuntimeHandler({
12
+ runtime,
13
+ basePath: routePath,
14
+ mode: "single-route",
15
+ cors: corsConfig ? require_hono.toFetchCorsConfig(corsConfig) : true,
16
+ hooks
130
17
  });
18
+ return new hono.Hono().basePath(routePath).all("*", async (c) => handler(c.req.raw));
131
19
  }
132
20
  function normalizePath(path) {
133
21
  if (!path) throw new Error("basePath must be provided for single-route endpoint");
@@ -1 +1 @@
1
- {"version":3,"file":"hono-single.cjs","names":["Hono","callBeforeRequestMiddleware","parseMethodCall","expectString","handleRunAgent","createJsonRequest","handleConnectAgent","handleStopAgent","handleGetRuntimeInfo","handleTranscribe"],"sources":["../../../../src/v2/runtime/endpoints/hono-single.ts"],"sourcesContent":["import { Hono } from \"hono\";\nimport { cors } from \"hono/cors\";\n\nimport { CopilotRuntimeLike } from \"../runtime\";\nimport { handleRunAgent } from \"../handlers/handle-run\";\nimport { handleConnectAgent } from \"../handlers/handle-connect\";\nimport { handleStopAgent } from \"../handlers/handle-stop\";\nimport { handleGetRuntimeInfo } from \"../handlers/get-runtime-info\";\nimport { handleTranscribe } from \"../handlers/handle-transcribe\";\nimport { logger } from \"@copilotkit/shared\";\nimport {\n callBeforeRequestMiddleware,\n callAfterRequestMiddleware,\n} from \"../middleware\";\nimport {\n createJsonRequest,\n expectString,\n MethodCall,\n parseMethodCall,\n} from \"./single-route-helpers\";\n\nimport { CopilotEndpointCorsConfig } from \"./hono\";\n\ninterface CopilotSingleEndpointParams {\n runtime: CopilotRuntimeLike;\n /**\n * Absolute path at which to mount the single-route endpoint (e.g. \"/api/copilotkit\").\n */\n basePath: string;\n /**\n * Optional CORS configuration. When not provided, defaults to allowing all origins without credentials.\n * To support HTTP-only cookies, provide cors config with credentials: true and explicit origin.\n */\n cors?: CopilotEndpointCorsConfig;\n}\n\ntype CopilotEndpointContext = {\n Variables: {\n modifiedRequest?: Request;\n };\n};\n\nexport function createCopilotEndpointSingleRoute({\n runtime,\n basePath,\n cors: corsConfig,\n}: CopilotSingleEndpointParams) {\n const app = new Hono<CopilotEndpointContext>();\n const routePath = normalizePath(basePath);\n\n return app\n .basePath(routePath)\n .use(\n \"*\",\n cors({\n origin: corsConfig?.origin ?? \"*\",\n allowMethods: [\n \"GET\",\n \"HEAD\",\n \"PUT\",\n \"POST\",\n \"DELETE\",\n \"PATCH\",\n \"OPTIONS\",\n ],\n allowHeaders: [\"*\"],\n credentials: corsConfig?.credentials ?? false,\n }),\n )\n .use(\"*\", async (c, next) => {\n const request = c.req.raw;\n const path = c.req.path;\n\n try {\n const maybeModifiedRequest = await callBeforeRequestMiddleware({\n runtime,\n request,\n path,\n });\n if (maybeModifiedRequest) {\n c.set(\"modifiedRequest\", maybeModifiedRequest);\n }\n } catch (error) {\n logger.error(\n { err: error, url: request.url, path },\n \"Error running before request middleware\",\n );\n if (error instanceof Response) {\n return error;\n }\n throw error;\n }\n\n await next();\n })\n .use(\"*\", async (c, next) => {\n await next();\n\n const response = c.res.clone();\n const path = c.req.path;\n\n callAfterRequestMiddleware({\n runtime,\n response,\n path,\n }).catch((error) => {\n logger.error(\n { err: error, url: c.req.url, path },\n \"Error running after request middleware\",\n );\n });\n })\n .post(\"/\", async (c) => {\n const request = c.get(\"modifiedRequest\") || c.req.raw;\n\n let methodCall: MethodCall;\n try {\n methodCall = await parseMethodCall(request);\n } catch (error) {\n if (error instanceof Response) {\n logger.warn({ url: request.url }, \"Invalid single-route payload\");\n return error;\n }\n logger.warn(\n { err: error, url: request.url },\n \"Invalid single-route payload\",\n );\n return c.json(\n {\n error: \"invalid_request\",\n message:\n error instanceof Error\n ? error.message\n : \"Invalid request payload\",\n },\n 400,\n );\n }\n\n try {\n switch (methodCall.method) {\n case \"agent/run\": {\n const agentId = expectString(methodCall.params, \"agentId\");\n const handlerRequest = createJsonRequest(request, methodCall.body);\n return await handleRunAgent({\n runtime,\n request: handlerRequest,\n agentId,\n });\n }\n case \"agent/connect\": {\n const agentId = expectString(methodCall.params, \"agentId\");\n const handlerRequest = createJsonRequest(request, methodCall.body);\n return await handleConnectAgent({\n runtime,\n request: handlerRequest,\n agentId,\n });\n }\n case \"agent/stop\": {\n const agentId = expectString(methodCall.params, \"agentId\");\n const threadId = expectString(methodCall.params, \"threadId\");\n return await handleStopAgent({\n runtime,\n request,\n agentId,\n threadId,\n });\n }\n case \"info\": {\n return await handleGetRuntimeInfo({ runtime, request });\n }\n case \"transcribe\": {\n const handlerRequest = createJsonRequest(request, methodCall.body);\n return await handleTranscribe({ runtime, request: handlerRequest });\n }\n default: {\n const exhaustiveCheck: never = methodCall.method;\n return exhaustiveCheck;\n }\n }\n } catch (error) {\n if (error instanceof Response) {\n return error;\n }\n logger.error(\n { err: error, url: request.url, method: methodCall.method },\n \"Error running single-route handler\",\n );\n throw error;\n }\n })\n .notFound((c) => {\n return c.json({ error: \"Not found\" }, 404);\n });\n}\n\nfunction normalizePath(path: string): string {\n if (!path) {\n throw new Error(\"basePath must be provided for single-route endpoint\");\n }\n\n if (!path.startsWith(\"/\")) {\n return `/${path}`;\n }\n\n if (path.length > 1 && path.endsWith(\"/\")) {\n return path.slice(0, -1);\n }\n\n return path;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"hono-single.cjs","names":["createCopilotRuntimeHandler","toFetchCorsConfig","Hono"],"sources":["../../../../src/v2/runtime/endpoints/hono-single.ts"],"sourcesContent":["import { Hono } from \"hono\";\nimport type { CopilotRuntimeLike } from \"../core/runtime\";\nimport { createCopilotRuntimeHandler } from \"../core/fetch-handler\";\nimport type { CopilotRuntimeHooks } from \"../core/hooks\";\nimport { CopilotEndpointCorsConfig, toFetchCorsConfig } from \"./hono\";\n\ninterface CopilotSingleEndpointParams {\n runtime: CopilotRuntimeLike;\n /**\n * Absolute path at which to mount the single-route endpoint (e.g. \"/api/copilotkit\").\n */\n basePath: string;\n /**\n * Optional CORS configuration. When not provided, defaults to allowing all origins without credentials.\n * To support HTTP-only cookies, provide cors config with credentials: true and explicit origin.\n */\n cors?: CopilotEndpointCorsConfig;\n /**\n * Lifecycle hooks for request processing.\n */\n hooks?: CopilotRuntimeHooks;\n}\n\n/** @deprecated Use `createCopilotHonoHandler` with `mode: \"single-route\"` instead. */\nexport function createCopilotEndpointSingleRoute({\n runtime,\n basePath,\n cors: corsConfig,\n hooks,\n}: CopilotSingleEndpointParams) {\n const routePath = normalizePath(basePath);\n\n const handler = createCopilotRuntimeHandler({\n runtime,\n basePath: routePath,\n mode: \"single-route\",\n cors: corsConfig ? toFetchCorsConfig(corsConfig) : true,\n hooks,\n });\n\n const app = new Hono();\n\n return app.basePath(routePath).all(\"*\", async (c) => handler(c.req.raw));\n}\n\nfunction normalizePath(path: string): string {\n if (!path) {\n throw new Error(\"basePath must be provided for single-route endpoint\");\n }\n\n if (!path.startsWith(\"/\")) {\n return `/${path}`;\n }\n\n if (path.length > 1 && path.endsWith(\"/\")) {\n return path.slice(0, -1);\n }\n\n return path;\n}\n"],"mappings":";;;;;;;;AAwBA,SAAgB,iCAAiC,EAC/C,SACA,UACA,MAAM,YACN,SAC8B;CAC9B,MAAM,YAAY,cAAc,SAAS;CAEzC,MAAM,UAAUA,kDAA4B;EAC1C;EACA,UAAU;EACV,MAAM;EACN,MAAM,aAAaC,+BAAkB,WAAW,GAAG;EACnD;EACD,CAAC;AAIF,QAFY,IAAIC,WAAM,CAEX,SAAS,UAAU,CAAC,IAAI,KAAK,OAAO,MAAM,QAAQ,EAAE,IAAI,IAAI,CAAC;;AAG1E,SAAS,cAAc,MAAsB;AAC3C,KAAI,CAAC,KACH,OAAM,IAAI,MAAM,sDAAsD;AAGxE,KAAI,CAAC,KAAK,WAAW,IAAI,CACvB,QAAO,IAAI;AAGb,KAAI,KAAK,SAAS,KAAK,KAAK,SAAS,IAAI,CACvC,QAAO,KAAK,MAAM,GAAG,GAAG;AAG1B,QAAO"}
@@ -1,6 +1,8 @@
1
1
 
2
- import { CopilotRuntimeLike } from "../runtime.cjs";
2
+ import { CopilotRuntimeLike } from "../core/runtime.cjs";
3
+ import { CopilotRuntimeHooks } from "../core/hooks.cjs";
3
4
  import { CopilotEndpointCorsConfig } from "./hono.cjs";
5
+ import * as hono_types0 from "hono/types";
4
6
  import * as hono_utils_http_status0 from "hono/utils/http-status";
5
7
  import * as hono_hono_base0 from "hono/hono-base";
6
8
 
@@ -16,26 +18,27 @@ interface CopilotSingleEndpointParams {
16
18
  * To support HTTP-only cookies, provide cors config with credentials: true and explicit origin.
17
19
  */
18
20
  cors?: CopilotEndpointCorsConfig;
21
+ /**
22
+ * Lifecycle hooks for request processing.
23
+ */
24
+ hooks?: CopilotRuntimeHooks;
19
25
  }
20
- type CopilotEndpointContext = {
21
- Variables: {
22
- modifiedRequest?: Request;
23
- };
24
- };
26
+ /** @deprecated Use `createCopilotHonoHandler` with `mode: "single-route"` instead. */
25
27
  declare function createCopilotEndpointSingleRoute({
26
28
  runtime,
27
29
  basePath,
28
- cors: corsConfig
29
- }: CopilotSingleEndpointParams): hono_hono_base0.HonoBase<CopilotEndpointContext, {
30
- [x: string]: {
31
- $post: {
30
+ cors: corsConfig,
31
+ hooks
32
+ }: CopilotSingleEndpointParams): hono_hono_base0.HonoBase<hono_types0.BlankEnv, {
33
+ [x: `${string}/*`]: {
34
+ $all: {
32
35
  input: {};
33
36
  output: {};
34
37
  outputFormat: string;
35
38
  status: hono_utils_http_status0.StatusCode;
36
39
  };
37
40
  };
38
- }, string, string>;
41
+ }, string, `${string}/*`>;
39
42
  //#endregion
40
43
  export { createCopilotEndpointSingleRoute };
41
44
  //# sourceMappingURL=hono-single.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hono-single.d.cts","names":[],"sources":["../../../../src/v2/runtime/endpoints/hono-single.ts"],"mappings":";;;;;;;UAuBU,2BAAA;EACR,OAAA,EAAS,kBAAA;;;AAHwC;EAOjD,QAAA;;;;;EAKA,IAAA,GAAO,yBAAA;AAAA;AAAA,KAGJ,sBAAA;EACH,SAAA;IACE,eAAA,GAAkB,OAAA;EAAA;AAAA;AAAA,iBAIN,gCAAA,CAAA;EACd,OAAA;EACA,QAAA;EACA,IAAA,EAAM;AAAA,GACL,2BAAA,mBAA2B,QAAA,CAAA,sBAAA;EAAA;;;;;cAAA,uBAAA,CAAA,UAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"hono-single.d.cts","names":[],"sources":["../../../../src/v2/runtime/endpoints/hono-single.ts"],"mappings":";;;;;;;;;UAMU,2BAAA;EACR,OAAA,EAAS,kBAAA;;;;EAIT,QAAA;EALmC;;;;EAUnC,IAAA,GAAO,yBAAA;EAIoB;;;EAA3B,KAAA,GAAQ,mBAAA;AAAA;;iBAIM,gCAAA,CAAA;EACd,OAAA;EACA,QAAA;EACA,IAAA,EAAM,UAAA;EACN;AAAA,GACC,2BAAA,mBAA2B,QAAA,CAAA,WAAA,CAAA,QAAA;EAAA;;;;;cAAA,uBAAA,CAAA,UAAA;IAAA;EAAA;AAAA"}
@@ -1,6 +1,8 @@
1
1
  import "reflect-metadata";
2
- import { CopilotRuntimeLike } from "../runtime.mjs";
2
+ import { CopilotRuntimeLike } from "../core/runtime.mjs";
3
+ import { CopilotRuntimeHooks } from "../core/hooks.mjs";
3
4
  import { CopilotEndpointCorsConfig } from "./hono.mjs";
5
+ import * as hono_types0 from "hono/types";
4
6
  import * as hono_utils_http_status0 from "hono/utils/http-status";
5
7
  import * as hono_hono_base0 from "hono/hono-base";
6
8
 
@@ -16,26 +18,27 @@ interface CopilotSingleEndpointParams {
16
18
  * To support HTTP-only cookies, provide cors config with credentials: true and explicit origin.
17
19
  */
18
20
  cors?: CopilotEndpointCorsConfig;
21
+ /**
22
+ * Lifecycle hooks for request processing.
23
+ */
24
+ hooks?: CopilotRuntimeHooks;
19
25
  }
20
- type CopilotEndpointContext = {
21
- Variables: {
22
- modifiedRequest?: Request;
23
- };
24
- };
26
+ /** @deprecated Use `createCopilotHonoHandler` with `mode: "single-route"` instead. */
25
27
  declare function createCopilotEndpointSingleRoute({
26
28
  runtime,
27
29
  basePath,
28
- cors: corsConfig
29
- }: CopilotSingleEndpointParams): hono_hono_base0.HonoBase<CopilotEndpointContext, {
30
- [x: string]: {
31
- $post: {
30
+ cors: corsConfig,
31
+ hooks
32
+ }: CopilotSingleEndpointParams): hono_hono_base0.HonoBase<hono_types0.BlankEnv, {
33
+ [x: `${string}/*`]: {
34
+ $all: {
32
35
  input: {};
33
36
  output: {};
34
37
  outputFormat: string;
35
38
  status: hono_utils_http_status0.StatusCode;
36
39
  };
37
40
  };
38
- }, string, string>;
41
+ }, string, `${string}/*`>;
39
42
  //#endregion
40
43
  export { createCopilotEndpointSingleRoute };
41
44
  //# sourceMappingURL=hono-single.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hono-single.d.mts","names":[],"sources":["../../../../src/v2/runtime/endpoints/hono-single.ts"],"mappings":";;;;;;;UAuBU,2BAAA;EACR,OAAA,EAAS,kBAAA;;;AAHwC;EAOjD,QAAA;;;;;EAKA,IAAA,GAAO,yBAAA;AAAA;AAAA,KAGJ,sBAAA;EACH,SAAA;IACE,eAAA,GAAkB,OAAA;EAAA;AAAA;AAAA,iBAIN,gCAAA,CAAA;EACd,OAAA;EACA,QAAA;EACA,IAAA,EAAM;AAAA,GACL,2BAAA,mBAA2B,QAAA,CAAA,sBAAA;EAAA;;;;;cAAA,uBAAA,CAAA,UAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"hono-single.d.mts","names":[],"sources":["../../../../src/v2/runtime/endpoints/hono-single.ts"],"mappings":";;;;;;;;;UAMU,2BAAA;EACR,OAAA,EAAS,kBAAA;;;;EAIT,QAAA;EALmC;;;;EAUnC,IAAA,GAAO,yBAAA;EAIoB;;;EAA3B,KAAA,GAAQ,mBAAA;AAAA;;iBAIM,gCAAA,CAAA;EACd,OAAA;EACA,QAAA;EACA,IAAA,EAAM,UAAA;EACN;AAAA,GACC,2BAAA,mBAA2B,QAAA,CAAA,WAAA,CAAA,QAAA;EAAA;;;;;cAAA,uBAAA,CAAA,UAAA;IAAA;EAAA;AAAA"}