@copilotkit/runtime 1.69.0 → 1.69.2

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 (508) hide show
  1. package/dist/_virtual/_rolldown/runtime.mjs +1 -15
  2. package/dist/agents/langgraph/events.cjs +1 -1
  3. package/dist/agents/langgraph/events.cjs.map +1 -1
  4. package/dist/agents/langgraph/events.mjs +1 -1
  5. package/dist/agents/langgraph/events.mjs.map +1 -1
  6. package/dist/graphql/inputs/action.input.cjs +1 -1
  7. package/dist/graphql/inputs/action.input.cjs.map +1 -1
  8. package/dist/graphql/inputs/action.input.d.cts +1 -1
  9. package/dist/graphql/inputs/action.input.d.cts.map +1 -1
  10. package/dist/graphql/inputs/action.input.d.mts +1 -1
  11. package/dist/graphql/inputs/action.input.d.mts.map +1 -1
  12. package/dist/graphql/inputs/action.input.mjs +1 -1
  13. package/dist/graphql/inputs/action.input.mjs.map +1 -1
  14. package/dist/graphql/inputs/agent-session.input.cjs +1 -1
  15. package/dist/graphql/inputs/agent-session.input.cjs.map +1 -1
  16. package/dist/graphql/inputs/agent-session.input.d.cts +1 -1
  17. package/dist/graphql/inputs/agent-session.input.d.cts.map +1 -1
  18. package/dist/graphql/inputs/agent-session.input.d.mts +1 -1
  19. package/dist/graphql/inputs/agent-session.input.d.mts.map +1 -1
  20. package/dist/graphql/inputs/agent-session.input.mjs +1 -1
  21. package/dist/graphql/inputs/agent-session.input.mjs.map +1 -1
  22. package/dist/graphql/inputs/agent-state.input.cjs +1 -1
  23. package/dist/graphql/inputs/agent-state.input.cjs.map +1 -1
  24. package/dist/graphql/inputs/agent-state.input.d.cts +1 -1
  25. package/dist/graphql/inputs/agent-state.input.d.cts.map +1 -1
  26. package/dist/graphql/inputs/agent-state.input.d.mts +1 -1
  27. package/dist/graphql/inputs/agent-state.input.d.mts.map +1 -1
  28. package/dist/graphql/inputs/agent-state.input.mjs +1 -1
  29. package/dist/graphql/inputs/agent-state.input.mjs.map +1 -1
  30. package/dist/graphql/inputs/cloud-guardrails.input.cjs +1 -1
  31. package/dist/graphql/inputs/cloud-guardrails.input.cjs.map +1 -1
  32. package/dist/graphql/inputs/cloud-guardrails.input.mjs +1 -1
  33. package/dist/graphql/inputs/cloud-guardrails.input.mjs.map +1 -1
  34. package/dist/graphql/inputs/cloud.input.cjs +1 -1
  35. package/dist/graphql/inputs/cloud.input.cjs.map +1 -1
  36. package/dist/graphql/inputs/cloud.input.mjs +1 -1
  37. package/dist/graphql/inputs/cloud.input.mjs.map +1 -1
  38. package/dist/graphql/inputs/copilot-context.input.cjs +1 -1
  39. package/dist/graphql/inputs/copilot-context.input.cjs.map +1 -1
  40. package/dist/graphql/inputs/copilot-context.input.mjs +1 -1
  41. package/dist/graphql/inputs/copilot-context.input.mjs.map +1 -1
  42. package/dist/graphql/inputs/extensions.input.cjs +1 -1
  43. package/dist/graphql/inputs/extensions.input.cjs.map +1 -1
  44. package/dist/graphql/inputs/extensions.input.d.cts +1 -1
  45. package/dist/graphql/inputs/extensions.input.d.cts.map +1 -1
  46. package/dist/graphql/inputs/extensions.input.d.mts +1 -1
  47. package/dist/graphql/inputs/extensions.input.d.mts.map +1 -1
  48. package/dist/graphql/inputs/extensions.input.mjs +1 -1
  49. package/dist/graphql/inputs/extensions.input.mjs.map +1 -1
  50. package/dist/graphql/inputs/forwarded-parameters.input.cjs +2 -3
  51. package/dist/graphql/inputs/forwarded-parameters.input.cjs.map +1 -1
  52. package/dist/graphql/inputs/forwarded-parameters.input.d.cts +2 -2
  53. package/dist/graphql/inputs/forwarded-parameters.input.d.cts.map +1 -1
  54. package/dist/graphql/inputs/forwarded-parameters.input.d.mts +2 -2
  55. package/dist/graphql/inputs/forwarded-parameters.input.d.mts.map +1 -1
  56. package/dist/graphql/inputs/forwarded-parameters.input.mjs +2 -3
  57. package/dist/graphql/inputs/forwarded-parameters.input.mjs.map +1 -1
  58. package/dist/graphql/inputs/frontend.input.cjs +1 -1
  59. package/dist/graphql/inputs/frontend.input.cjs.map +1 -1
  60. package/dist/graphql/inputs/frontend.input.mjs +1 -1
  61. package/dist/graphql/inputs/frontend.input.mjs.map +1 -1
  62. package/dist/graphql/inputs/generate-copilot-response.input.cjs +1 -1
  63. package/dist/graphql/inputs/generate-copilot-response.input.cjs.map +1 -1
  64. package/dist/graphql/inputs/generate-copilot-response.input.mjs +1 -1
  65. package/dist/graphql/inputs/generate-copilot-response.input.mjs.map +1 -1
  66. package/dist/graphql/inputs/load-agent-state.input.cjs +1 -1
  67. package/dist/graphql/inputs/load-agent-state.input.cjs.map +1 -1
  68. package/dist/graphql/inputs/load-agent-state.input.mjs +1 -1
  69. package/dist/graphql/inputs/load-agent-state.input.mjs.map +1 -1
  70. package/dist/graphql/inputs/message.input.cjs +10 -10
  71. package/dist/graphql/inputs/message.input.cjs.map +1 -1
  72. package/dist/graphql/inputs/message.input.d.cts +2 -2
  73. package/dist/graphql/inputs/message.input.d.cts.map +1 -1
  74. package/dist/graphql/inputs/message.input.d.mts +2 -2
  75. package/dist/graphql/inputs/message.input.d.mts.map +1 -1
  76. package/dist/graphql/inputs/message.input.mjs +10 -10
  77. package/dist/graphql/inputs/message.input.mjs.map +1 -1
  78. package/dist/graphql/inputs/meta-event.input.cjs +1 -1
  79. package/dist/graphql/inputs/meta-event.input.cjs.map +1 -1
  80. package/dist/graphql/inputs/meta-event.input.mjs +1 -1
  81. package/dist/graphql/inputs/meta-event.input.mjs.map +1 -1
  82. package/dist/graphql/message-conversion/agui-to-gql.cjs +1 -1
  83. package/dist/graphql/message-conversion/agui-to-gql.cjs.map +1 -1
  84. package/dist/graphql/message-conversion/agui-to-gql.mjs +1 -1
  85. package/dist/graphql/message-conversion/agui-to-gql.mjs.map +1 -1
  86. package/dist/graphql/resolvers/copilot.resolver.cjs +1 -1
  87. package/dist/graphql/resolvers/copilot.resolver.cjs.map +1 -1
  88. package/dist/graphql/resolvers/copilot.resolver.mjs +1 -1
  89. package/dist/graphql/resolvers/copilot.resolver.mjs.map +1 -1
  90. package/dist/graphql/resolvers/resolve-message-id.cjs +1 -1
  91. package/dist/graphql/resolvers/resolve-message-id.cjs.map +1 -1
  92. package/dist/graphql/resolvers/resolve-message-id.mjs +1 -1
  93. package/dist/graphql/resolvers/resolve-message-id.mjs.map +1 -1
  94. package/dist/graphql/resolvers/state.resolver.cjs +1 -1
  95. package/dist/graphql/resolvers/state.resolver.cjs.map +1 -1
  96. package/dist/graphql/resolvers/state.resolver.mjs +1 -1
  97. package/dist/graphql/resolvers/state.resolver.mjs.map +1 -1
  98. package/dist/graphql/types/agents-response.type.cjs +1 -1
  99. package/dist/graphql/types/agents-response.type.cjs.map +1 -1
  100. package/dist/graphql/types/agents-response.type.mjs +1 -1
  101. package/dist/graphql/types/agents-response.type.mjs.map +1 -1
  102. package/dist/graphql/types/base/index.cjs +1 -1
  103. package/dist/graphql/types/base/index.cjs.map +1 -1
  104. package/dist/graphql/types/base/index.d.cts +1 -1
  105. package/dist/graphql/types/base/index.d.cts.map +1 -1
  106. package/dist/graphql/types/base/index.d.mts +1 -1
  107. package/dist/graphql/types/base/index.d.mts.map +1 -1
  108. package/dist/graphql/types/base/index.mjs +1 -1
  109. package/dist/graphql/types/base/index.mjs.map +1 -1
  110. package/dist/graphql/types/converted/index.cjs +2 -2
  111. package/dist/graphql/types/converted/index.cjs.map +1 -1
  112. package/dist/graphql/types/converted/index.d.cts +1 -1
  113. package/dist/graphql/types/converted/index.d.cts.map +1 -1
  114. package/dist/graphql/types/converted/index.d.mts +1 -1
  115. package/dist/graphql/types/converted/index.d.mts.map +1 -1
  116. package/dist/graphql/types/converted/index.mjs +2 -2
  117. package/dist/graphql/types/converted/index.mjs.map +1 -1
  118. package/dist/graphql/types/copilot-response.type.cjs +1 -1
  119. package/dist/graphql/types/copilot-response.type.cjs.map +1 -1
  120. package/dist/graphql/types/copilot-response.type.d.cts +1 -1
  121. package/dist/graphql/types/copilot-response.type.d.cts.map +1 -1
  122. package/dist/graphql/types/copilot-response.type.d.mts +1 -1
  123. package/dist/graphql/types/copilot-response.type.d.mts.map +1 -1
  124. package/dist/graphql/types/copilot-response.type.mjs +1 -1
  125. package/dist/graphql/types/copilot-response.type.mjs.map +1 -1
  126. package/dist/graphql/types/enums.cjs +1 -1
  127. package/dist/graphql/types/enums.cjs.map +1 -1
  128. package/dist/graphql/types/enums.d.cts +1 -1
  129. package/dist/graphql/types/enums.d.cts.map +1 -1
  130. package/dist/graphql/types/enums.d.mts +1 -1
  131. package/dist/graphql/types/enums.d.mts.map +1 -1
  132. package/dist/graphql/types/enums.mjs +1 -1
  133. package/dist/graphql/types/enums.mjs.map +1 -1
  134. package/dist/graphql/types/extensions-response.type.cjs +1 -1
  135. package/dist/graphql/types/extensions-response.type.cjs.map +1 -1
  136. package/dist/graphql/types/extensions-response.type.d.cts +1 -1
  137. package/dist/graphql/types/extensions-response.type.d.cts.map +1 -1
  138. package/dist/graphql/types/extensions-response.type.d.mts +1 -1
  139. package/dist/graphql/types/extensions-response.type.d.mts.map +1 -1
  140. package/dist/graphql/types/extensions-response.type.mjs +1 -1
  141. package/dist/graphql/types/extensions-response.type.mjs.map +1 -1
  142. package/dist/graphql/types/load-agent-state-response.type.cjs +1 -1
  143. package/dist/graphql/types/load-agent-state-response.type.cjs.map +1 -1
  144. package/dist/graphql/types/load-agent-state-response.type.mjs +1 -1
  145. package/dist/graphql/types/load-agent-state-response.type.mjs.map +1 -1
  146. package/dist/graphql/types/message-status.type.cjs +1 -1
  147. package/dist/graphql/types/message-status.type.cjs.map +1 -1
  148. package/dist/graphql/types/message-status.type.d.cts +1 -1
  149. package/dist/graphql/types/message-status.type.d.cts.map +1 -1
  150. package/dist/graphql/types/message-status.type.d.mts +1 -1
  151. package/dist/graphql/types/message-status.type.d.mts.map +1 -1
  152. package/dist/graphql/types/message-status.type.mjs +1 -1
  153. package/dist/graphql/types/message-status.type.mjs.map +1 -1
  154. package/dist/graphql/types/meta-events.type.cjs +2 -2
  155. package/dist/graphql/types/meta-events.type.cjs.map +1 -1
  156. package/dist/graphql/types/meta-events.type.mjs +2 -2
  157. package/dist/graphql/types/meta-events.type.mjs.map +1 -1
  158. package/dist/graphql/types/response-status.type.cjs +1 -1
  159. package/dist/graphql/types/response-status.type.cjs.map +1 -1
  160. package/dist/graphql/types/response-status.type.d.cts +1 -1
  161. package/dist/graphql/types/response-status.type.d.cts.map +1 -1
  162. package/dist/graphql/types/response-status.type.d.mts +1 -1
  163. package/dist/graphql/types/response-status.type.d.mts.map +1 -1
  164. package/dist/graphql/types/response-status.type.mjs +1 -1
  165. package/dist/graphql/types/response-status.type.mjs.map +1 -1
  166. package/dist/index.d.cts +618 -4
  167. package/dist/index.d.mts +618 -4
  168. package/dist/langgraph.d.cts +54 -1
  169. package/dist/langgraph.d.mts +54 -1
  170. package/dist/lib/cloud/index.d.cts +1 -1
  171. package/dist/lib/cloud/index.d.cts.map +1 -1
  172. package/dist/lib/cloud/index.d.mts +1 -1
  173. package/dist/lib/cloud/index.d.mts.map +1 -1
  174. package/dist/lib/index.cjs +1 -1
  175. package/dist/lib/index.cjs.map +1 -1
  176. package/dist/lib/index.d.cts +2 -2
  177. package/dist/lib/index.d.cts.map +1 -1
  178. package/dist/lib/index.d.mts +2 -2
  179. package/dist/lib/index.d.mts.map +1 -1
  180. package/dist/lib/index.mjs +1 -1
  181. package/dist/lib/index.mjs.map +1 -1
  182. package/dist/lib/integrations/index.d.cts +1 -1
  183. package/dist/lib/integrations/index.d.mts +1 -1
  184. package/dist/lib/integrations/nest/index.cjs +1 -1
  185. package/dist/lib/integrations/nest/index.cjs.map +1 -1
  186. package/dist/lib/integrations/nest/index.d.cts +1 -1
  187. package/dist/lib/integrations/nest/index.d.cts.map +1 -1
  188. package/dist/lib/integrations/nest/index.d.mts +1 -1
  189. package/dist/lib/integrations/nest/index.d.mts.map +1 -1
  190. package/dist/lib/integrations/nest/index.mjs +1 -1
  191. package/dist/lib/integrations/nest/index.mjs.map +1 -1
  192. package/dist/lib/integrations/nextjs/app-router.cjs +1 -1
  193. package/dist/lib/integrations/nextjs/app-router.cjs.map +1 -1
  194. package/dist/lib/integrations/nextjs/app-router.d.cts +1 -1
  195. package/dist/lib/integrations/nextjs/app-router.d.cts.map +1 -1
  196. package/dist/lib/integrations/nextjs/app-router.d.mts +1 -1
  197. package/dist/lib/integrations/nextjs/app-router.d.mts.map +1 -1
  198. package/dist/lib/integrations/nextjs/app-router.mjs +1 -1
  199. package/dist/lib/integrations/nextjs/app-router.mjs.map +1 -1
  200. package/dist/lib/integrations/nextjs/pages-router.cjs +1 -1
  201. package/dist/lib/integrations/nextjs/pages-router.cjs.map +1 -1
  202. package/dist/lib/integrations/nextjs/pages-router.d.cts +1 -2
  203. package/dist/lib/integrations/nextjs/pages-router.d.cts.map +1 -1
  204. package/dist/lib/integrations/nextjs/pages-router.d.mts +1 -2
  205. package/dist/lib/integrations/nextjs/pages-router.d.mts.map +1 -1
  206. package/dist/lib/integrations/nextjs/pages-router.mjs +1 -1
  207. package/dist/lib/integrations/nextjs/pages-router.mjs.map +1 -1
  208. package/dist/lib/integrations/node-express/index.cjs +1 -1
  209. package/dist/lib/integrations/node-express/index.cjs.map +1 -1
  210. package/dist/lib/integrations/node-express/index.d.cts +1 -1
  211. package/dist/lib/integrations/node-express/index.d.cts.map +1 -1
  212. package/dist/lib/integrations/node-express/index.d.mts +1 -1
  213. package/dist/lib/integrations/node-express/index.d.mts.map +1 -1
  214. package/dist/lib/integrations/node-express/index.mjs +1 -1
  215. package/dist/lib/integrations/node-express/index.mjs.map +1 -1
  216. package/dist/lib/integrations/node-http/index.cjs +1 -1
  217. package/dist/lib/integrations/node-http/index.cjs.map +1 -1
  218. package/dist/lib/integrations/node-http/index.d.cts +1 -1
  219. package/dist/lib/integrations/node-http/index.d.cts.map +1 -1
  220. package/dist/lib/integrations/node-http/index.d.mts +1 -1
  221. package/dist/lib/integrations/node-http/index.d.mts.map +1 -1
  222. package/dist/lib/integrations/node-http/index.mjs +1 -1
  223. package/dist/lib/integrations/node-http/index.mjs.map +1 -1
  224. package/dist/lib/integrations/node-http/request-handler.cjs +1 -1
  225. package/dist/lib/integrations/node-http/request-handler.cjs.map +1 -1
  226. package/dist/lib/integrations/node-http/request-handler.mjs +1 -1
  227. package/dist/lib/integrations/node-http/request-handler.mjs.map +1 -1
  228. package/dist/lib/integrations/shared.cjs +1 -1
  229. package/dist/lib/integrations/shared.cjs.map +1 -1
  230. package/dist/lib/integrations/shared.d.cts +30 -4
  231. package/dist/lib/integrations/shared.d.cts.map +1 -1
  232. package/dist/lib/integrations/shared.d.mts +30 -4
  233. package/dist/lib/integrations/shared.d.mts.map +1 -1
  234. package/dist/lib/integrations/shared.mjs +1 -1
  235. package/dist/lib/integrations/shared.mjs.map +1 -1
  236. package/dist/lib/logger.cjs +1 -1
  237. package/dist/lib/logger.cjs.map +1 -1
  238. package/dist/lib/logger.d.cts +1 -1
  239. package/dist/lib/logger.d.cts.map +1 -1
  240. package/dist/lib/logger.d.mts +1 -1
  241. package/dist/lib/logger.d.mts.map +1 -1
  242. package/dist/lib/logger.mjs +1 -1
  243. package/dist/lib/logger.mjs.map +1 -1
  244. package/dist/lib/observability.d.cts +1 -1
  245. package/dist/lib/observability.d.cts.map +1 -1
  246. package/dist/lib/observability.d.mts +1 -1
  247. package/dist/lib/observability.d.mts.map +1 -1
  248. package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs +1 -1
  249. package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs.map +1 -1
  250. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts +13 -3
  251. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts.map +1 -1
  252. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts +13 -3
  253. package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts.map +1 -1
  254. package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs +1 -1
  255. package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs.map +1 -1
  256. package/dist/lib/runtime/agent-integrations/langgraph/consts.cjs +1 -1
  257. package/dist/lib/runtime/agent-integrations/langgraph/consts.cjs.map +1 -1
  258. package/dist/lib/runtime/agent-integrations/langgraph/consts.d.cts +1 -1
  259. package/dist/lib/runtime/agent-integrations/langgraph/consts.d.cts.map +1 -1
  260. package/dist/lib/runtime/agent-integrations/langgraph/consts.d.mts +1 -1
  261. package/dist/lib/runtime/agent-integrations/langgraph/consts.d.mts.map +1 -1
  262. package/dist/lib/runtime/agent-integrations/langgraph/consts.mjs +1 -1
  263. package/dist/lib/runtime/agent-integrations/langgraph/consts.mjs.map +1 -1
  264. package/dist/lib/runtime/copilot-runtime.cjs +9 -1
  265. package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
  266. package/dist/lib/runtime/copilot-runtime.d.cts +9 -1
  267. package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
  268. package/dist/lib/runtime/copilot-runtime.d.mts +9 -1
  269. package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
  270. package/dist/lib/runtime/copilot-runtime.mjs +9 -1
  271. package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
  272. package/dist/lib/runtime/mcp-tools-utils.cjs +1 -1
  273. package/dist/lib/runtime/mcp-tools-utils.cjs.map +1 -1
  274. package/dist/lib/runtime/mcp-tools-utils.d.cts +1 -1
  275. package/dist/lib/runtime/mcp-tools-utils.d.cts.map +1 -1
  276. package/dist/lib/runtime/mcp-tools-utils.d.mts +1 -1
  277. package/dist/lib/runtime/mcp-tools-utils.d.mts.map +1 -1
  278. package/dist/lib/runtime/mcp-tools-utils.mjs +1 -1
  279. package/dist/lib/runtime/mcp-tools-utils.mjs.map +1 -1
  280. package/dist/lib/runtime/telemetry-agent-runner.cjs +1 -1
  281. package/dist/lib/runtime/telemetry-agent-runner.cjs.map +1 -1
  282. package/dist/lib/runtime/telemetry-agent-runner.d.cts +1 -1
  283. package/dist/lib/runtime/telemetry-agent-runner.d.cts.map +1 -1
  284. package/dist/lib/runtime/telemetry-agent-runner.d.mts +1 -1
  285. package/dist/lib/runtime/telemetry-agent-runner.d.mts.map +1 -1
  286. package/dist/lib/runtime/telemetry-agent-runner.mjs +1 -1
  287. package/dist/lib/runtime/telemetry-agent-runner.mjs.map +1 -1
  288. package/dist/lib/runtime/types.cjs +1 -1
  289. package/dist/lib/runtime/types.cjs.map +1 -1
  290. package/dist/lib/runtime/types.d.cts +1 -1
  291. package/dist/lib/runtime/types.d.cts.map +1 -1
  292. package/dist/lib/runtime/types.d.mts +1 -1
  293. package/dist/lib/runtime/types.d.mts.map +1 -1
  294. package/dist/lib/runtime/types.mjs +1 -1
  295. package/dist/lib/runtime/types.mjs.map +1 -1
  296. package/dist/lib/telemetry-client.cjs +1 -1
  297. package/dist/lib/telemetry-client.cjs.map +1 -1
  298. package/dist/lib/telemetry-client.mjs +2 -2
  299. package/dist/lib/telemetry-client.mjs.map +1 -1
  300. package/dist/lib/telemetry-disclosure.cjs +1 -1
  301. package/dist/lib/telemetry-disclosure.cjs.map +1 -1
  302. package/dist/lib/telemetry-disclosure.mjs +1 -1
  303. package/dist/lib/telemetry-disclosure.mjs.map +1 -1
  304. package/dist/package.cjs +5 -5
  305. package/dist/{runtime/package.mjs → package.mjs} +6 -6
  306. package/dist/package.mjs.map +1 -0
  307. package/dist/service-adapters/anthropic/anthropic-adapter.cjs +1 -1
  308. package/dist/service-adapters/anthropic/anthropic-adapter.cjs.map +1 -1
  309. package/dist/service-adapters/anthropic/anthropic-adapter.d.cts +4 -4
  310. package/dist/service-adapters/anthropic/anthropic-adapter.d.cts.map +1 -1
  311. package/dist/service-adapters/anthropic/anthropic-adapter.d.mts +5 -4
  312. package/dist/service-adapters/anthropic/anthropic-adapter.d.mts.map +1 -1
  313. package/dist/service-adapters/anthropic/anthropic-adapter.mjs +1 -1
  314. package/dist/service-adapters/anthropic/anthropic-adapter.mjs.map +1 -1
  315. package/dist/service-adapters/anthropic/utils.cjs +1 -1
  316. package/dist/service-adapters/anthropic/utils.cjs.map +1 -1
  317. package/dist/service-adapters/anthropic/utils.mjs +1 -1
  318. package/dist/service-adapters/anthropic/utils.mjs.map +1 -1
  319. package/dist/service-adapters/bedrock/bedrock-adapter.cjs +1 -1
  320. package/dist/service-adapters/bedrock/bedrock-adapter.cjs.map +1 -1
  321. package/dist/service-adapters/bedrock/bedrock-adapter.d.cts +1 -1
  322. package/dist/service-adapters/bedrock/bedrock-adapter.d.cts.map +1 -1
  323. package/dist/service-adapters/bedrock/bedrock-adapter.d.mts +1 -1
  324. package/dist/service-adapters/bedrock/bedrock-adapter.d.mts.map +1 -1
  325. package/dist/service-adapters/bedrock/bedrock-adapter.mjs +1 -1
  326. package/dist/service-adapters/bedrock/bedrock-adapter.mjs.map +1 -1
  327. package/dist/service-adapters/empty/empty-adapter.cjs +1 -1
  328. package/dist/service-adapters/empty/empty-adapter.cjs.map +1 -1
  329. package/dist/service-adapters/empty/empty-adapter.d.cts +1 -1
  330. package/dist/service-adapters/empty/empty-adapter.d.cts.map +1 -1
  331. package/dist/service-adapters/empty/empty-adapter.d.mts +1 -1
  332. package/dist/service-adapters/empty/empty-adapter.d.mts.map +1 -1
  333. package/dist/service-adapters/empty/empty-adapter.mjs +1 -1
  334. package/dist/service-adapters/empty/empty-adapter.mjs.map +1 -1
  335. package/dist/service-adapters/events.cjs +1 -1
  336. package/dist/service-adapters/events.cjs.map +1 -1
  337. package/dist/service-adapters/events.d.cts +1 -1
  338. package/dist/service-adapters/events.d.cts.map +1 -1
  339. package/dist/service-adapters/events.d.mts +1 -1
  340. package/dist/service-adapters/events.d.mts.map +1 -1
  341. package/dist/service-adapters/events.mjs +1 -1
  342. package/dist/service-adapters/events.mjs.map +1 -1
  343. package/dist/service-adapters/experimental/ollama/ollama-adapter.cjs +1 -1
  344. package/dist/service-adapters/experimental/ollama/ollama-adapter.cjs.map +1 -1
  345. package/dist/service-adapters/experimental/ollama/ollama-adapter.d.cts +1 -1
  346. package/dist/service-adapters/experimental/ollama/ollama-adapter.d.cts.map +1 -1
  347. package/dist/service-adapters/experimental/ollama/ollama-adapter.d.mts +1 -1
  348. package/dist/service-adapters/experimental/ollama/ollama-adapter.d.mts.map +1 -1
  349. package/dist/service-adapters/experimental/ollama/ollama-adapter.mjs +1 -1
  350. package/dist/service-adapters/experimental/ollama/ollama-adapter.mjs.map +1 -1
  351. package/dist/service-adapters/google/google-genai-adapter.cjs +1 -1
  352. package/dist/service-adapters/google/google-genai-adapter.cjs.map +1 -1
  353. package/dist/service-adapters/google/google-genai-adapter.d.cts +1 -1
  354. package/dist/service-adapters/google/google-genai-adapter.d.cts.map +1 -1
  355. package/dist/service-adapters/google/google-genai-adapter.d.mts +1 -1
  356. package/dist/service-adapters/google/google-genai-adapter.d.mts.map +1 -1
  357. package/dist/service-adapters/google/google-genai-adapter.mjs +1 -1
  358. package/dist/service-adapters/google/google-genai-adapter.mjs.map +1 -1
  359. package/dist/service-adapters/groq/groq-adapter.cjs +1 -1
  360. package/dist/service-adapters/groq/groq-adapter.cjs.map +1 -1
  361. package/dist/service-adapters/groq/groq-adapter.d.cts +4 -4
  362. package/dist/service-adapters/groq/groq-adapter.d.cts.map +1 -1
  363. package/dist/service-adapters/groq/groq-adapter.d.mts +5 -4
  364. package/dist/service-adapters/groq/groq-adapter.d.mts.map +1 -1
  365. package/dist/service-adapters/groq/groq-adapter.mjs +1 -1
  366. package/dist/service-adapters/groq/groq-adapter.mjs.map +1 -1
  367. package/dist/service-adapters/index.d.cts +2 -2
  368. package/dist/service-adapters/index.d.mts +3 -3
  369. package/dist/service-adapters/langchain/langchain-adapter.cjs +1 -1
  370. package/dist/service-adapters/langchain/langchain-adapter.cjs.map +1 -1
  371. package/dist/service-adapters/langchain/langchain-adapter.d.cts +1 -1
  372. package/dist/service-adapters/langchain/langchain-adapter.d.cts.map +1 -1
  373. package/dist/service-adapters/langchain/langchain-adapter.d.mts +1 -1
  374. package/dist/service-adapters/langchain/langchain-adapter.d.mts.map +1 -1
  375. package/dist/service-adapters/langchain/langchain-adapter.mjs +1 -1
  376. package/dist/service-adapters/langchain/langchain-adapter.mjs.map +1 -1
  377. package/dist/service-adapters/langchain/langserve.cjs +1 -1
  378. package/dist/service-adapters/langchain/langserve.cjs.map +1 -1
  379. package/dist/service-adapters/langchain/langserve.d.cts +1 -1
  380. package/dist/service-adapters/langchain/langserve.d.cts.map +1 -1
  381. package/dist/service-adapters/langchain/langserve.d.mts +1 -1
  382. package/dist/service-adapters/langchain/langserve.d.mts.map +1 -1
  383. package/dist/service-adapters/langchain/langserve.mjs +1 -1
  384. package/dist/service-adapters/langchain/langserve.mjs.map +1 -1
  385. package/dist/service-adapters/langchain/types.d.cts +1 -1
  386. package/dist/service-adapters/langchain/types.d.cts.map +1 -1
  387. package/dist/service-adapters/langchain/types.d.mts +1 -1
  388. package/dist/service-adapters/langchain/types.d.mts.map +1 -1
  389. package/dist/service-adapters/langchain/utils.cjs +1 -1
  390. package/dist/service-adapters/langchain/utils.cjs.map +1 -1
  391. package/dist/service-adapters/langchain/utils.mjs +1 -1
  392. package/dist/service-adapters/langchain/utils.mjs.map +1 -1
  393. package/dist/service-adapters/openai/openai-adapter.cjs +1 -1
  394. package/dist/service-adapters/openai/openai-adapter.cjs.map +1 -1
  395. package/dist/service-adapters/openai/openai-adapter.d.cts +1 -1
  396. package/dist/service-adapters/openai/openai-adapter.d.cts.map +1 -1
  397. package/dist/service-adapters/openai/openai-adapter.d.mts +1 -1
  398. package/dist/service-adapters/openai/openai-adapter.d.mts.map +1 -1
  399. package/dist/service-adapters/openai/openai-adapter.mjs +1 -1
  400. package/dist/service-adapters/openai/openai-adapter.mjs.map +1 -1
  401. package/dist/service-adapters/openai/openai-assistant-adapter.cjs +1 -1
  402. package/dist/service-adapters/openai/openai-assistant-adapter.cjs.map +1 -1
  403. package/dist/service-adapters/openai/openai-assistant-adapter.d.cts +1 -1
  404. package/dist/service-adapters/openai/openai-assistant-adapter.d.cts.map +1 -1
  405. package/dist/service-adapters/openai/openai-assistant-adapter.d.mts +1 -1
  406. package/dist/service-adapters/openai/openai-assistant-adapter.d.mts.map +1 -1
  407. package/dist/service-adapters/openai/openai-assistant-adapter.mjs +1 -1
  408. package/dist/service-adapters/openai/openai-assistant-adapter.mjs.map +1 -1
  409. package/dist/service-adapters/openai/utils.cjs +1 -1
  410. package/dist/service-adapters/openai/utils.cjs.map +1 -1
  411. package/dist/service-adapters/openai/utils.mjs +1 -1
  412. package/dist/service-adapters/openai/utils.mjs.map +1 -1
  413. package/dist/service-adapters/service-adapter.d.cts +1 -1
  414. package/dist/service-adapters/service-adapter.d.cts.map +1 -1
  415. package/dist/service-adapters/service-adapter.d.mts +1 -1
  416. package/dist/service-adapters/service-adapter.d.mts.map +1 -1
  417. package/dist/service-adapters/shared/error-utils.cjs +1 -1
  418. package/dist/service-adapters/shared/error-utils.cjs.map +1 -1
  419. package/dist/service-adapters/shared/error-utils.d.cts +1 -1
  420. package/dist/service-adapters/shared/error-utils.d.cts.map +1 -1
  421. package/dist/service-adapters/shared/error-utils.d.mts +1 -1
  422. package/dist/service-adapters/shared/error-utils.d.mts.map +1 -1
  423. package/dist/service-adapters/shared/error-utils.mjs +1 -1
  424. package/dist/service-adapters/shared/error-utils.mjs.map +1 -1
  425. package/dist/service-adapters/shared/index.d.mts +1 -1
  426. package/dist/service-adapters/shared/sdk-client-utils.cjs +1 -1
  427. package/dist/service-adapters/shared/sdk-client-utils.cjs.map +1 -1
  428. package/dist/service-adapters/shared/sdk-client-utils.d.cts +21 -2
  429. package/dist/service-adapters/shared/sdk-client-utils.d.cts.map +1 -1
  430. package/dist/service-adapters/shared/sdk-client-utils.d.mts +21 -2
  431. package/dist/service-adapters/shared/sdk-client-utils.d.mts.map +1 -1
  432. package/dist/service-adapters/shared/sdk-client-utils.mjs +1 -1
  433. package/dist/service-adapters/shared/sdk-client-utils.mjs.map +1 -1
  434. package/dist/service-adapters/unify/unify-adapter.cjs +1 -1
  435. package/dist/service-adapters/unify/unify-adapter.cjs.map +1 -1
  436. package/dist/service-adapters/unify/unify-adapter.d.cts +1 -1
  437. package/dist/service-adapters/unify/unify-adapter.d.cts.map +1 -1
  438. package/dist/service-adapters/unify/unify-adapter.d.mts +1 -1
  439. package/dist/service-adapters/unify/unify-adapter.d.mts.map +1 -1
  440. package/dist/service-adapters/unify/unify-adapter.mjs +1 -1
  441. package/dist/service-adapters/unify/unify-adapter.mjs.map +1 -1
  442. package/dist/utils/failed-response-status-reasons.cjs +1 -1
  443. package/dist/utils/failed-response-status-reasons.cjs.map +1 -1
  444. package/dist/utils/failed-response-status-reasons.d.cts +1 -1
  445. package/dist/utils/failed-response-status-reasons.d.cts.map +1 -1
  446. package/dist/utils/failed-response-status-reasons.d.mts +1 -1
  447. package/dist/utils/failed-response-status-reasons.d.mts.map +1 -1
  448. package/dist/utils/failed-response-status-reasons.mjs +1 -1
  449. package/dist/utils/failed-response-status-reasons.mjs.map +1 -1
  450. package/dist/v2/runtime/core/channel-activation-config.cjs.map +1 -1
  451. package/dist/v2/runtime/core/channel-activation-config.d.cts +2 -2
  452. package/dist/v2/runtime/core/channel-activation-config.d.cts.map +1 -1
  453. package/dist/v2/runtime/core/channel-activation-config.d.mts +2 -2
  454. package/dist/v2/runtime/core/channel-activation-config.d.mts.map +1 -1
  455. package/dist/v2/runtime/core/channel-activation-config.mjs.map +1 -1
  456. package/dist/v2/runtime/core/channel-manager.cjs.map +1 -1
  457. package/dist/v2/runtime/core/channel-manager.d.cts +2 -2
  458. package/dist/v2/runtime/core/channel-manager.d.cts.map +1 -1
  459. package/dist/v2/runtime/core/channel-manager.d.mts +2 -2
  460. package/dist/v2/runtime/core/channel-manager.d.mts.map +1 -1
  461. package/dist/v2/runtime/core/channel-manager.mjs.map +1 -1
  462. package/dist/v2/runtime/core/runtime.cjs +1 -0
  463. package/dist/v2/runtime/core/runtime.cjs.map +1 -1
  464. package/dist/v2/runtime/core/runtime.d.cts.map +1 -1
  465. package/dist/v2/runtime/core/runtime.d.mts.map +1 -1
  466. package/dist/v2/runtime/core/runtime.mjs +2 -1
  467. package/dist/v2/runtime/core/runtime.mjs.map +1 -1
  468. package/dist/v2/runtime/handlers/intelligence/memories.cjs +1 -1
  469. package/dist/v2/runtime/handlers/intelligence/memories.cjs.map +1 -1
  470. package/dist/v2/runtime/handlers/intelligence/memories.mjs +1 -1
  471. package/dist/v2/runtime/handlers/intelligence/memories.mjs.map +1 -1
  472. package/dist/v2/runtime/handlers/intelligence/threads.cjs +1 -1
  473. package/dist/v2/runtime/handlers/intelligence/threads.cjs.map +1 -1
  474. package/dist/v2/runtime/handlers/intelligence/threads.mjs +1 -1
  475. package/dist/v2/runtime/handlers/intelligence/threads.mjs.map +1 -1
  476. package/dist/v2/runtime/handlers/shared/agent-utils.cjs +1 -1
  477. package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -1
  478. package/dist/v2/runtime/handlers/shared/agent-utils.mjs +1 -1
  479. package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -1
  480. package/dist/v2/runtime/handlers/shared/sse-response.cjs.map +1 -1
  481. package/dist/v2/runtime/handlers/shared/sse-response.mjs.map +1 -1
  482. package/dist/v2/runtime/handlers/sse/run.cjs.map +1 -1
  483. package/dist/v2/runtime/handlers/sse/run.mjs.map +1 -1
  484. package/dist/v2/runtime/intelligence-platform/client.cjs +14 -9
  485. package/dist/v2/runtime/intelligence-platform/client.cjs.map +1 -1
  486. package/dist/v2/runtime/intelligence-platform/client.d.cts +16 -11
  487. package/dist/v2/runtime/intelligence-platform/client.d.cts.map +1 -1
  488. package/dist/v2/runtime/intelligence-platform/client.d.mts +16 -11
  489. package/dist/v2/runtime/intelligence-platform/client.d.mts.map +1 -1
  490. package/dist/v2/runtime/intelligence-platform/client.mjs +14 -9
  491. package/dist/v2/runtime/intelligence-platform/client.mjs.map +1 -1
  492. package/dist/v2/runtime/runner/in-memory.cjs +3 -3
  493. package/dist/v2/runtime/runner/in-memory.cjs.map +1 -1
  494. package/dist/v2/runtime/runner/in-memory.d.cts +4 -4
  495. package/dist/v2/runtime/runner/in-memory.d.mts +4 -4
  496. package/dist/v2/runtime/runner/in-memory.mjs +3 -3
  497. package/dist/v2/runtime/runner/in-memory.mjs.map +1 -1
  498. package/dist/v2/runtime/telemetry/telemetry-client.mjs +1 -1
  499. package/package.json +7 -7
  500. package/skills/runtime/SKILL.md +1 -1
  501. package/skills/runtime/references/agent-runners-custom.md +1 -1
  502. package/skills/runtime/references/agent-runners.md +11 -5
  503. package/skills/runtime/references/intelligence-mode.md +1 -1
  504. package/dist/channels/dist/index.d.cts +0 -10
  505. package/dist/channels/dist/index.d.cts.map +0 -1
  506. package/dist/channels/dist/index.d.mts +0 -10
  507. package/dist/channels/dist/index.d.mts.map +0 -1
  508. package/dist/runtime/package.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic-adapter.mjs","names":[],"sources":["../../../src/service-adapters/anthropic/anthropic-adapter.ts"],"sourcesContent":["/**\n * Copilot Runtime adapter for Anthropic.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, AnthropicAdapter } from \"@copilotkit/runtime\";\n * import Anthropic from \"@anthropic-ai/sdk\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * const anthropic = new Anthropic({\n * apiKey: \"<your-api-key>\",\n * });\n *\n * return new AnthropicAdapter({\n * anthropic,\n * promptCaching: {\n * enabled: true,\n * debug: true\n * }\n * });\n * ```\n */\nimport type { LanguageModel } from \"ai\";\nimport { createAnthropic } from \"@ai-sdk/anthropic\";\nimport type Anthropic from \"@anthropic-ai/sdk\";\nimport type {\n CopilotServiceAdapter,\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport {\n convertActionInputToAnthropicTool,\n convertMessageToAnthropicMessage,\n coalesceConsecutiveSameRoleMessages,\n limitMessagesToTokenCount,\n} from \"./utils\";\n\nimport { randomId, randomUUID } from \"@copilotkit/shared\";\nimport { convertServiceAdapterError, getSdkClientOptions } from \"../shared\";\n\nconst DEFAULT_MODEL = \"claude-opus-4-8\";\n\nexport interface AnthropicPromptCachingConfig {\n /**\n * Whether to enable prompt caching.\n */\n enabled: boolean;\n\n /**\n * Whether to enable debug logging for cache operations.\n */\n debug?: boolean;\n}\n\nexport interface AnthropicAdapterParams {\n /**\n * An optional Anthropic instance to use. If not provided, a new instance will be\n * created.\n */\n anthropic?: Anthropic;\n\n /**\n * The model to use.\n */\n model?: string;\n\n /**\n * Configuration for prompt caching.\n * See: https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching\n */\n promptCaching?: AnthropicPromptCachingConfig;\n\n /**\n * Optional maximum input token limit. Overrides the default limit\n * used when trimming messages to fit the context window.\n */\n maxInputTokens?: number;\n}\n\nexport class AnthropicAdapter implements CopilotServiceAdapter {\n public model: string = DEFAULT_MODEL;\n public provider = \"anthropic\";\n private promptCaching: AnthropicPromptCachingConfig;\n private maxInputTokens?: number;\n\n private _anthropic: Anthropic;\n public get anthropic(): Anthropic {\n return this._anthropic;\n }\n public get name() {\n return \"AnthropicAdapter\";\n }\n\n constructor(params?: AnthropicAdapterParams) {\n if (params?.anthropic) {\n this._anthropic = params.anthropic;\n }\n // If no instance provided, we'll lazy-load in ensureAnthropic()\n if (params?.model) {\n this.model = params.model;\n }\n this.promptCaching = params?.promptCaching || { enabled: false };\n this.maxInputTokens = params?.maxInputTokens;\n }\n\n getLanguageModel(): LanguageModel {\n const anthropic = this.ensureAnthropic();\n const options = getSdkClientOptions(anthropic);\n const provider = createAnthropic({\n baseURL: anthropic.baseURL,\n apiKey: anthropic.apiKey,\n headers: options.defaultHeaders,\n fetch: options.fetch,\n });\n return provider(this.model);\n }\n\n private ensureAnthropic(): Anthropic {\n if (!this._anthropic) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const Anthropic = require(\"@anthropic-ai/sdk\").default;\n this._anthropic = new Anthropic({});\n }\n return this._anthropic;\n }\n\n /**\n * Adds cache control to system prompt\n */\n private addSystemPromptCaching(\n system: string,\n debug: boolean = false,\n ):\n | string\n | Array<{\n type: \"text\";\n text: string;\n cache_control?: { type: \"ephemeral\" };\n }> {\n if (!this.promptCaching.enabled || !system) {\n return system;\n }\n\n const originalTextLength = system.length;\n\n if (debug) {\n console.log(\n `[ANTHROPIC CACHE DEBUG] Added cache control to system prompt (${originalTextLength} chars).`,\n );\n }\n\n return [\n {\n type: \"text\",\n text: system,\n cache_control: { type: \"ephemeral\" },\n },\n ];\n }\n\n /**\n * Adds cache control to the final message\n */\n private addIncrementalMessageCaching(\n messages: Anthropic.Messages.MessageParam[],\n debug: boolean = false,\n ): any[] {\n if (!this.promptCaching.enabled || messages.length === 0) {\n return messages;\n }\n\n const finalMessage = messages[messages.length - 1];\n const messageNumber = messages.length;\n\n if (\n Array.isArray(finalMessage.content) &&\n finalMessage.content.length > 0\n ) {\n const finalBlock = finalMessage.content[finalMessage.content.length - 1];\n\n const updatedMessages = [\n ...messages.slice(0, -1),\n {\n ...finalMessage,\n content: [\n ...finalMessage.content.slice(0, -1),\n { ...finalBlock, cache_control: { type: \"ephemeral\" } } as any,\n ],\n },\n ];\n\n if (debug) {\n console.log(\n `[ANTHROPIC CACHE DEBUG] Added cache control to final message (message ${messageNumber}).`,\n );\n }\n\n return updatedMessages;\n }\n\n return messages;\n }\n\n private shouldGenerateFallbackResponse(\n messages: Anthropic.Messages.MessageParam[],\n ): boolean {\n if (messages.length === 0) return false;\n\n const lastMessage = messages[messages.length - 1];\n\n // Check if the last message is a tool result\n const endsWithToolResult =\n lastMessage.role === \"user\" &&\n Array.isArray(lastMessage.content) &&\n lastMessage.content.some(\n (content: any) => content.type === \"tool_result\",\n );\n\n // Also check if we have a recent pattern of user message -> assistant tool use -> user tool result\n // This indicates a completed action that might not need a response\n if (messages.length >= 3 && endsWithToolResult) {\n const lastThree = messages.slice(-3);\n const hasRecentToolPattern =\n lastThree[0]?.role === \"user\" && // Initial user message\n lastThree[1]?.role === \"assistant\" && // Assistant tool use\n Array.isArray(lastThree[1].content) &&\n lastThree[1].content.some(\n (content: any) => content.type === \"tool_use\",\n ) &&\n lastThree[2]?.role === \"user\" && // Tool result\n Array.isArray(lastThree[2].content) &&\n lastThree[2].content.some(\n (content: any) => content.type === \"tool_result\",\n );\n\n return hasRecentToolPattern;\n }\n\n return endsWithToolResult;\n }\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n const {\n threadId,\n model = this.model,\n messages: rawMessages,\n actions,\n eventSource,\n forwardedParameters,\n } = request;\n const tools = actions.map(convertActionInputToAnthropicTool);\n const knownActionNames = new Set(actions.map((a) => a.name));\n\n const messages = [...rawMessages];\n\n // get the instruction message\n const instructionsMessage = messages.shift();\n const instructions = instructionsMessage.isTextMessage()\n ? instructionsMessage.content\n : \"\";\n\n // ALLOWLIST APPROACH:\n // 1. First, identify all valid tool_use calls (from assistant)\n // 2. Then, only keep tool_result blocks that correspond to these valid tool_use IDs\n // 3. Discard any other tool_result blocks\n\n // Step 1: Extract valid tool_use IDs\n const validToolUseIds = new Set<string>();\n\n for (const message of messages) {\n if (message.isActionExecutionMessage()) {\n validToolUseIds.add(message.id);\n }\n }\n\n // Step 2: Map each message to an Anthropic message, eliminating invalid tool_results\n const processedToolResultIds = new Set<string>();\n const anthropicMessages = messages\n .map((message) => {\n // For tool results, only include if they match a valid tool_use ID AND haven't been processed\n if (message.isResultMessage()) {\n // Skip if there's no corresponding tool_use\n if (!validToolUseIds.has(message.actionExecutionId)) {\n return null; // Will be filtered out later\n }\n\n // Skip if we've already processed a result for this tool_use ID\n if (processedToolResultIds.has(message.actionExecutionId)) {\n return null; // Will be filtered out later\n }\n\n // Mark this tool result as processed\n processedToolResultIds.add(message.actionExecutionId);\n\n return {\n role: \"user\",\n content: [\n {\n type: \"tool_result\",\n content: message.result || \"Action completed successfully\",\n tool_use_id: message.actionExecutionId,\n },\n ],\n };\n }\n\n // For non-tool-result messages, convert normally\n return convertMessageToAnthropicMessage(message);\n })\n .filter(Boolean) // Remove nulls\n .filter((msg) => {\n // Filter out assistant messages with empty text content\n if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n const hasEmptyTextOnly =\n msg.content.length === 1 &&\n msg.content[0].type === \"text\" &&\n (!(msg.content[0] as any).text ||\n (msg.content[0] as any).text.trim() === \"\");\n\n // Keep messages that have tool_use or non-empty text\n return !hasEmptyTextOnly;\n }\n return true;\n }) as Anthropic.Messages.MessageParam[];\n\n // Coalesce consecutive same-role messages so the Anthropic API receives alternating turns.\n // A mixed text+tool_use response is stored as separate TextMessage / ActionExecutionMessage\n // objects; they must be merged into one assistant message before dispatch.\n const coalescedMessages =\n coalesceConsecutiveSameRoleMessages(anthropicMessages);\n\n // Apply token limits\n const limitedMessages = limitMessagesToTokenCount(\n coalescedMessages,\n tools,\n model,\n this.maxInputTokens,\n );\n\n // Apply prompt caching if enabled\n const cachedSystemPrompt = this.addSystemPromptCaching(\n instructions,\n this.promptCaching.debug,\n );\n const cachedMessages = this.addIncrementalMessageCaching(\n limitedMessages,\n this.promptCaching.debug,\n );\n\n // We'll check if we need a fallback response after seeing what Anthropic returns\n // Role alternation is now enforced by coalesceConsecutiveSameRoleMessages above.\n\n let toolChoice: any = forwardedParameters?.toolChoice;\n if (forwardedParameters?.toolChoice === \"function\") {\n toolChoice = {\n type: \"tool\",\n name: forwardedParameters.toolChoiceFunctionName,\n };\n }\n\n try {\n const createParams = {\n system: cachedSystemPrompt,\n model,\n messages: cachedMessages,\n max_tokens: forwardedParameters?.maxTokens || 4096,\n ...(forwardedParameters?.temperature\n ? { temperature: forwardedParameters.temperature }\n : {}),\n ...(tools.length > 0 && { tools }),\n ...(toolChoice && { tool_choice: toolChoice }),\n stream: true,\n };\n\n const anthropic = this.ensureAnthropic();\n const stream = await anthropic.messages.create(createParams);\n\n eventSource.stream(async (eventStream$) => {\n let mode: \"function\" | \"message\" | null = null;\n let didOutputText = false;\n let currentMessageId = randomId();\n let currentToolCallId = randomId();\n let filterThinkingTextBuffer = new FilterThinkingTextBuffer();\n let hasReceivedContent = false;\n\n try {\n for await (const chunk of stream as AsyncIterable<any>) {\n if (chunk.type === \"message_start\") {\n currentMessageId = chunk.message.id;\n } else if (chunk.type === \"content_block_start\") {\n if (chunk.content_block.type === \"text\") {\n hasReceivedContent = true;\n didOutputText = false;\n filterThinkingTextBuffer.reset();\n mode = \"message\";\n } else if (chunk.content_block.type === \"tool_use\") {\n if (!knownActionNames.has(chunk.content_block.name)) {\n // Unknown tool - skip execution to prevent crashes\n mode = null;\n continue;\n }\n hasReceivedContent = true;\n currentToolCallId = chunk.content_block.id;\n eventStream$.sendActionExecutionStart({\n actionExecutionId: currentToolCallId,\n actionName: chunk.content_block.name,\n parentMessageId: currentMessageId,\n });\n mode = \"function\";\n }\n } else if (chunk.type === \"content_block_delta\") {\n if (mode === null) {\n // Skip deltas for unknown/skipped content blocks\n continue;\n }\n if (chunk.delta.type === \"text_delta\") {\n const text = filterThinkingTextBuffer.onTextChunk(\n chunk.delta.text,\n );\n if (text.length > 0) {\n if (!didOutputText) {\n eventStream$.sendTextMessageStart({\n messageId: currentMessageId,\n });\n didOutputText = true;\n }\n eventStream$.sendTextMessageContent({\n messageId: currentMessageId,\n content: text,\n });\n }\n } else if (chunk.delta.type === \"input_json_delta\") {\n eventStream$.sendActionExecutionArgs({\n actionExecutionId: currentToolCallId,\n args: chunk.delta.partial_json,\n });\n }\n } else if (chunk.type === \"content_block_stop\") {\n if (mode === \"message\") {\n if (didOutputText) {\n eventStream$.sendTextMessageEnd({\n messageId: currentMessageId,\n });\n }\n } else if (mode === \"function\") {\n eventStream$.sendActionExecutionEnd({\n actionExecutionId: currentToolCallId,\n });\n }\n }\n }\n } catch (error) {\n throw convertServiceAdapterError(error, \"Anthropic\");\n }\n\n // Generate fallback response only if Anthropic produced no content\n if (\n !hasReceivedContent &&\n this.shouldGenerateFallbackResponse(cachedMessages)\n ) {\n // Extract the tool result content for a more contextual response\n let fallbackContent = \"Task completed successfully.\";\n const lastMessage = cachedMessages[cachedMessages.length - 1];\n if (\n lastMessage?.role === \"user\" &&\n Array.isArray(lastMessage.content)\n ) {\n const toolResult = lastMessage.content.find(\n (c: any) => c.type === \"tool_result\",\n );\n if (\n toolResult?.content &&\n toolResult.content !== \"Action completed successfully\"\n ) {\n fallbackContent = toolResult.content;\n }\n }\n\n currentMessageId = randomId();\n eventStream$.sendTextMessageStart({ messageId: currentMessageId });\n eventStream$.sendTextMessageContent({\n messageId: currentMessageId,\n content: fallbackContent,\n });\n eventStream$.sendTextMessageEnd({ messageId: currentMessageId });\n }\n\n eventStream$.complete();\n });\n } catch (error) {\n throw convertServiceAdapterError(error, \"Anthropic\");\n }\n\n return {\n threadId: threadId || randomUUID(),\n };\n }\n}\n\nconst THINKING_TAG = \"<thinking>\";\nconst THINKING_TAG_END = \"</thinking>\";\n\nclass FilterThinkingTextBuffer {\n private buffer: string;\n private didFilterThinkingTag: boolean = false;\n\n constructor() {\n this.buffer = \"\";\n }\n\n onTextChunk(text: string): string {\n this.buffer += text;\n if (this.didFilterThinkingTag) {\n return text;\n }\n const potentialTag = this.buffer.slice(0, THINKING_TAG.length);\n if (THINKING_TAG.startsWith(potentialTag)) {\n if (this.buffer.includes(THINKING_TAG_END)) {\n const end = this.buffer.indexOf(THINKING_TAG_END);\n const filteredText = this.buffer.slice(end + THINKING_TAG_END.length);\n this.buffer = filteredText;\n this.didFilterThinkingTag = true;\n return filteredText;\n } else {\n return \"\";\n }\n }\n return text;\n }\n\n reset() {\n this.buffer = \"\";\n this.didFilterThinkingTag = false;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"anthropic-adapter.mjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/anthropic/anthropic-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — AnthropicAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * @copilotkit/runtime — AnthropicAdapterParams:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * @copilotkit/runtime — AnthropicPromptCachingConfig:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * Copilot Runtime adapter for Anthropic.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, AnthropicAdapter } from \"@copilotkit/runtime\";\n * import Anthropic from \"@anthropic-ai/sdk\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * const anthropic = new Anthropic({\n * apiKey: \"<your-api-key>\",\n * });\n *\n * return new AnthropicAdapter({\n * anthropic,\n * promptCaching: {\n * enabled: true,\n * debug: true\n * }\n * });\n * ```\n */\nimport type { LanguageModel } from \"ai\";\nimport { createAnthropic } from \"@ai-sdk/anthropic\";\nimport type Anthropic from \"@anthropic-ai/sdk\";\nimport type {\n CopilotServiceAdapter,\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport {\n convertActionInputToAnthropicTool,\n convertMessageToAnthropicMessage,\n coalesceConsecutiveSameRoleMessages,\n limitMessagesToTokenCount,\n} from \"./utils\";\n\nimport { randomId, randomUUID } from \"@copilotkit/shared\";\nimport type { SdkClientLike } from \"../shared\";\nimport { convertServiceAdapterError, getSdkClientOptions } from \"../shared\";\n\nconst DEFAULT_MODEL = \"claude-opus-4-8\";\n\nexport interface AnthropicPromptCachingConfig {\n /**\n * Whether to enable prompt caching.\n */\n enabled: boolean;\n\n /**\n * Whether to enable debug logging for cache operations.\n */\n debug?: boolean;\n}\n\nexport interface AnthropicAdapterParams {\n /**\n * An optional Anthropic instance to use. If not provided, a new instance will be\n * created.\n */\n anthropic?: SdkClientLike;\n\n /**\n * The model to use.\n */\n model?: string;\n\n /**\n * Configuration for prompt caching.\n * See: https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching\n */\n promptCaching?: AnthropicPromptCachingConfig;\n\n /**\n * Optional maximum input token limit. Overrides the default limit\n * used when trimming messages to fit the context window.\n */\n maxInputTokens?: number;\n}\n\nexport class AnthropicAdapter implements CopilotServiceAdapter {\n public model: string = DEFAULT_MODEL;\n public provider = \"anthropic\";\n private promptCaching: AnthropicPromptCachingConfig;\n private maxInputTokens?: number;\n\n private _anthropic: SdkClientLike;\n public get anthropic(): SdkClientLike {\n return this._anthropic;\n }\n public get name() {\n return \"AnthropicAdapter\";\n }\n\n constructor(params?: AnthropicAdapterParams) {\n if (params?.anthropic) {\n this._anthropic = params.anthropic;\n }\n // If no instance provided, we'll lazy-load in ensureAnthropic()\n if (params?.model) {\n this.model = params.model;\n }\n this.promptCaching = params?.promptCaching || { enabled: false };\n this.maxInputTokens = params?.maxInputTokens;\n }\n\n getLanguageModel(): LanguageModel {\n const anthropic = this.ensureAnthropic();\n const options = getSdkClientOptions(anthropic);\n const provider = createAnthropic({\n baseURL: anthropic.baseURL,\n apiKey: anthropic.apiKey,\n headers: options.defaultHeaders,\n fetch: options.fetch,\n });\n return provider(this.model);\n }\n\n private ensureAnthropic(): SdkClientLike {\n if (!this._anthropic) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const Anthropic = require(\"@anthropic-ai/sdk\").default;\n this._anthropic = new Anthropic({});\n }\n return this._anthropic;\n }\n\n /**\n * Adds cache control to system prompt\n */\n private addSystemPromptCaching(\n system: string,\n debug: boolean = false,\n ):\n | string\n | Array<{\n type: \"text\";\n text: string;\n cache_control?: { type: \"ephemeral\" };\n }> {\n if (!this.promptCaching.enabled || !system) {\n return system;\n }\n\n const originalTextLength = system.length;\n\n if (debug) {\n console.log(\n `[ANTHROPIC CACHE DEBUG] Added cache control to system prompt (${originalTextLength} chars).`,\n );\n }\n\n return [\n {\n type: \"text\",\n text: system,\n cache_control: { type: \"ephemeral\" },\n },\n ];\n }\n\n /**\n * Adds cache control to the final message\n */\n private addIncrementalMessageCaching(\n messages: Anthropic.Messages.MessageParam[],\n debug: boolean = false,\n ): any[] {\n if (!this.promptCaching.enabled || messages.length === 0) {\n return messages;\n }\n\n const finalMessage = messages[messages.length - 1];\n const messageNumber = messages.length;\n\n if (\n Array.isArray(finalMessage.content) &&\n finalMessage.content.length > 0\n ) {\n const finalBlock = finalMessage.content[finalMessage.content.length - 1];\n\n const updatedMessages = [\n ...messages.slice(0, -1),\n {\n ...finalMessage,\n content: [\n ...finalMessage.content.slice(0, -1),\n { ...finalBlock, cache_control: { type: \"ephemeral\" } } as any,\n ],\n },\n ];\n\n if (debug) {\n console.log(\n `[ANTHROPIC CACHE DEBUG] Added cache control to final message (message ${messageNumber}).`,\n );\n }\n\n return updatedMessages;\n }\n\n return messages;\n }\n\n private shouldGenerateFallbackResponse(\n messages: Anthropic.Messages.MessageParam[],\n ): boolean {\n if (messages.length === 0) return false;\n\n const lastMessage = messages[messages.length - 1];\n\n // Check if the last message is a tool result\n const endsWithToolResult =\n lastMessage.role === \"user\" &&\n Array.isArray(lastMessage.content) &&\n lastMessage.content.some(\n (content: any) => content.type === \"tool_result\",\n );\n\n // Also check if we have a recent pattern of user message -> assistant tool use -> user tool result\n // This indicates a completed action that might not need a response\n if (messages.length >= 3 && endsWithToolResult) {\n const lastThree = messages.slice(-3);\n const hasRecentToolPattern =\n lastThree[0]?.role === \"user\" && // Initial user message\n lastThree[1]?.role === \"assistant\" && // Assistant tool use\n Array.isArray(lastThree[1].content) &&\n lastThree[1].content.some(\n (content: any) => content.type === \"tool_use\",\n ) &&\n lastThree[2]?.role === \"user\" && // Tool result\n Array.isArray(lastThree[2].content) &&\n lastThree[2].content.some(\n (content: any) => content.type === \"tool_result\",\n );\n\n return hasRecentToolPattern;\n }\n\n return endsWithToolResult;\n }\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n const {\n threadId,\n model = this.model,\n messages: rawMessages,\n actions,\n eventSource,\n forwardedParameters,\n } = request;\n const tools = actions.map(convertActionInputToAnthropicTool);\n const knownActionNames = new Set(actions.map((a) => a.name));\n\n const messages = [...rawMessages];\n\n // get the instruction message\n const instructionsMessage = messages.shift();\n const instructions = instructionsMessage.isTextMessage()\n ? instructionsMessage.content\n : \"\";\n\n // ALLOWLIST APPROACH:\n // 1. First, identify all valid tool_use calls (from assistant)\n // 2. Then, only keep tool_result blocks that correspond to these valid tool_use IDs\n // 3. Discard any other tool_result blocks\n\n // Step 1: Extract valid tool_use IDs\n const validToolUseIds = new Set<string>();\n\n for (const message of messages) {\n if (message.isActionExecutionMessage()) {\n validToolUseIds.add(message.id);\n }\n }\n\n // Step 2: Map each message to an Anthropic message, eliminating invalid tool_results\n const processedToolResultIds = new Set<string>();\n const anthropicMessages = messages\n .map((message) => {\n // For tool results, only include if they match a valid tool_use ID AND haven't been processed\n if (message.isResultMessage()) {\n // Skip if there's no corresponding tool_use\n if (!validToolUseIds.has(message.actionExecutionId)) {\n return null; // Will be filtered out later\n }\n\n // Skip if we've already processed a result for this tool_use ID\n if (processedToolResultIds.has(message.actionExecutionId)) {\n return null; // Will be filtered out later\n }\n\n // Mark this tool result as processed\n processedToolResultIds.add(message.actionExecutionId);\n\n return {\n role: \"user\",\n content: [\n {\n type: \"tool_result\",\n content: message.result || \"Action completed successfully\",\n tool_use_id: message.actionExecutionId,\n },\n ],\n };\n }\n\n // For non-tool-result messages, convert normally\n return convertMessageToAnthropicMessage(message);\n })\n .filter(Boolean) // Remove nulls\n .filter((msg) => {\n // Filter out assistant messages with empty text content\n if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n const hasEmptyTextOnly =\n msg.content.length === 1 &&\n msg.content[0].type === \"text\" &&\n (!(msg.content[0] as any).text ||\n (msg.content[0] as any).text.trim() === \"\");\n\n // Keep messages that have tool_use or non-empty text\n return !hasEmptyTextOnly;\n }\n return true;\n }) as Anthropic.Messages.MessageParam[];\n\n // Coalesce consecutive same-role messages so the Anthropic API receives alternating turns.\n // A mixed text+tool_use response is stored as separate TextMessage / ActionExecutionMessage\n // objects; they must be merged into one assistant message before dispatch.\n const coalescedMessages =\n coalesceConsecutiveSameRoleMessages(anthropicMessages);\n\n // Apply token limits\n const limitedMessages = limitMessagesToTokenCount(\n coalescedMessages,\n tools,\n model,\n this.maxInputTokens,\n );\n\n // Apply prompt caching if enabled\n const cachedSystemPrompt = this.addSystemPromptCaching(\n instructions,\n this.promptCaching.debug,\n );\n const cachedMessages = this.addIncrementalMessageCaching(\n limitedMessages,\n this.promptCaching.debug,\n );\n\n // We'll check if we need a fallback response after seeing what Anthropic returns\n // Role alternation is now enforced by coalesceConsecutiveSameRoleMessages above.\n\n let toolChoice: any = forwardedParameters?.toolChoice;\n if (forwardedParameters?.toolChoice === \"function\") {\n toolChoice = {\n type: \"tool\",\n name: forwardedParameters.toolChoiceFunctionName,\n };\n }\n\n try {\n const createParams = {\n system: cachedSystemPrompt,\n model,\n messages: cachedMessages,\n max_tokens: forwardedParameters?.maxTokens || 4096,\n ...(forwardedParameters?.temperature\n ? { temperature: forwardedParameters.temperature }\n : {}),\n ...(tools.length > 0 && { tools }),\n ...(toolChoice && { tool_choice: toolChoice }),\n stream: true,\n };\n\n // The public surface is structural so consumers who skip the optional\n // peer can still compile (see SdkClientLike); the SDK type is only\n // reachable here, inside a function body, where it is never emitted.\n const anthropic = this.ensureAnthropic() as Anthropic;\n const stream = await anthropic.messages.create(createParams);\n\n eventSource.stream(async (eventStream$) => {\n let mode: \"function\" | \"message\" | null = null;\n let didOutputText = false;\n let currentMessageId = randomId();\n let currentToolCallId = randomId();\n let filterThinkingTextBuffer = new FilterThinkingTextBuffer();\n let hasReceivedContent = false;\n\n try {\n for await (const chunk of stream as AsyncIterable<any>) {\n if (chunk.type === \"message_start\") {\n currentMessageId = chunk.message.id;\n } else if (chunk.type === \"content_block_start\") {\n if (chunk.content_block.type === \"text\") {\n hasReceivedContent = true;\n didOutputText = false;\n filterThinkingTextBuffer.reset();\n mode = \"message\";\n } else if (chunk.content_block.type === \"tool_use\") {\n if (!knownActionNames.has(chunk.content_block.name)) {\n // Unknown tool - skip execution to prevent crashes\n mode = null;\n continue;\n }\n hasReceivedContent = true;\n currentToolCallId = chunk.content_block.id;\n eventStream$.sendActionExecutionStart({\n actionExecutionId: currentToolCallId,\n actionName: chunk.content_block.name,\n parentMessageId: currentMessageId,\n });\n mode = \"function\";\n }\n } else if (chunk.type === \"content_block_delta\") {\n if (mode === null) {\n // Skip deltas for unknown/skipped content blocks\n continue;\n }\n if (chunk.delta.type === \"text_delta\") {\n const text = filterThinkingTextBuffer.onTextChunk(\n chunk.delta.text,\n );\n if (text.length > 0) {\n if (!didOutputText) {\n eventStream$.sendTextMessageStart({\n messageId: currentMessageId,\n });\n didOutputText = true;\n }\n eventStream$.sendTextMessageContent({\n messageId: currentMessageId,\n content: text,\n });\n }\n } else if (chunk.delta.type === \"input_json_delta\") {\n eventStream$.sendActionExecutionArgs({\n actionExecutionId: currentToolCallId,\n args: chunk.delta.partial_json,\n });\n }\n } else if (chunk.type === \"content_block_stop\") {\n if (mode === \"message\") {\n if (didOutputText) {\n eventStream$.sendTextMessageEnd({\n messageId: currentMessageId,\n });\n }\n } else if (mode === \"function\") {\n eventStream$.sendActionExecutionEnd({\n actionExecutionId: currentToolCallId,\n });\n }\n }\n }\n } catch (error) {\n throw convertServiceAdapterError(error, \"Anthropic\");\n }\n\n // Generate fallback response only if Anthropic produced no content\n if (\n !hasReceivedContent &&\n this.shouldGenerateFallbackResponse(cachedMessages)\n ) {\n // Extract the tool result content for a more contextual response\n let fallbackContent = \"Task completed successfully.\";\n const lastMessage = cachedMessages[cachedMessages.length - 1];\n if (\n lastMessage?.role === \"user\" &&\n Array.isArray(lastMessage.content)\n ) {\n const toolResult = lastMessage.content.find(\n (c: any) => c.type === \"tool_result\",\n );\n if (\n toolResult?.content &&\n toolResult.content !== \"Action completed successfully\"\n ) {\n fallbackContent = toolResult.content;\n }\n }\n\n currentMessageId = randomId();\n eventStream$.sendTextMessageStart({ messageId: currentMessageId });\n eventStream$.sendTextMessageContent({\n messageId: currentMessageId,\n content: fallbackContent,\n });\n eventStream$.sendTextMessageEnd({ messageId: currentMessageId });\n }\n\n eventStream$.complete();\n });\n } catch (error) {\n throw convertServiceAdapterError(error, \"Anthropic\");\n }\n\n return {\n threadId: threadId || randomUUID(),\n };\n }\n}\n\nconst THINKING_TAG = \"<thinking>\";\nconst THINKING_TAG_END = \"</thinking>\";\n\nclass FilterThinkingTextBuffer {\n private buffer: string;\n private didFilterThinkingTag: boolean = false;\n\n constructor() {\n this.buffer = \"\";\n }\n\n onTextChunk(text: string): string {\n this.buffer += text;\n if (this.didFilterThinkingTag) {\n return text;\n }\n const potentialTag = this.buffer.slice(0, THINKING_TAG.length);\n if (THINKING_TAG.startsWith(potentialTag)) {\n if (this.buffer.includes(THINKING_TAG_END)) {\n const end = this.buffer.indexOf(THINKING_TAG_END);\n const filteredText = this.buffer.slice(end + THINKING_TAG_END.length);\n this.buffer = filteredText;\n this.didFilterThinkingTag = true;\n return filteredText;\n } else {\n return \"\";\n }\n }\n return text;\n }\n\n reset() {\n this.buffer = \"\";\n this.didFilterThinkingTag = false;\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  require("reflect-metadata");
2
2
 
3
- //#region src/service-adapters/anthropic/utils.ts
3
+ //#region src/v1-deprecated/service-adapters/anthropic/utils.ts
4
4
  function limitMessagesToTokenCount(messages, tools, model, maxTokens) {
5
5
  maxTokens ||= MAX_TOKENS;
6
6
  const result = [];
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs","names":[],"sources":["../../../src/service-adapters/anthropic/utils.ts"],"sourcesContent":["import { Anthropic } from \"@anthropic-ai/sdk\";\nimport { ActionInput } from \"../../graphql/inputs/action.input\";\nimport { Message } from \"../../graphql/types/converted\";\n\nexport function limitMessagesToTokenCount(\n messages: any[],\n tools: any[],\n model: string,\n maxTokens?: number,\n): any[] {\n maxTokens ||= MAX_TOKENS;\n\n const result: any[] = [];\n const toolsNumTokens = countToolsTokens(model, tools);\n if (toolsNumTokens > maxTokens) {\n throw new Error(\n `Too many tokens in function definitions: ${toolsNumTokens} > ${maxTokens}`,\n );\n }\n maxTokens -= toolsNumTokens;\n\n for (const message of messages) {\n if (message.role === \"system\") {\n const numTokens = countMessageTokens(model, message);\n maxTokens -= numTokens;\n\n if (maxTokens < 0) {\n throw new Error(\"Not enough tokens for system message.\");\n }\n }\n }\n\n let cutoff: boolean = false;\n\n const reversedMessages = [...messages].toReversed();\n for (const message of reversedMessages) {\n if (message.role === \"system\") {\n result.unshift(message);\n continue;\n } else if (cutoff) {\n continue;\n }\n let numTokens = countMessageTokens(model, message);\n if (maxTokens < numTokens) {\n cutoff = true;\n continue;\n }\n result.unshift(message);\n maxTokens -= numTokens;\n }\n\n // Post-process: remove orphaned tool_result and tool_use blocks.\n // Token trimming may have removed the assistant message containing tool_use\n // while keeping the user message with tool_result (or vice versa),\n // which Anthropic rejects.\n\n // Collect all tool_use IDs from assistant messages\n const toolUseIds = new Set<string>();\n for (const msg of result) {\n if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_use\") {\n toolUseIds.add(block.id);\n }\n }\n }\n }\n\n // Collect all tool_result IDs from user messages\n const toolResultIds = new Set<string>();\n for (const msg of result) {\n if (msg.role === \"user\" && Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_result\") {\n toolResultIds.add(block.tool_use_id);\n }\n }\n }\n }\n\n // Filter orphaned blocks without mutating the original messages\n const filtered: any[] = [];\n for (const msg of result) {\n if (msg.role === \"user\" && Array.isArray(msg.content)) {\n const remaining = msg.content.filter(\n (block: any) =>\n block.type !== \"tool_result\" || toolUseIds.has(block.tool_use_id),\n );\n if (remaining.length === 0) continue;\n if (remaining.length !== msg.content.length) {\n filtered.push({ ...msg, content: remaining });\n } else {\n filtered.push(msg);\n }\n } else if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n const remaining = msg.content.filter(\n (block: any) =>\n block.type !== \"tool_use\" || toolResultIds.has(block.id),\n );\n if (remaining.length === 0) continue;\n if (remaining.length !== msg.content.length) {\n filtered.push({ ...msg, content: remaining });\n } else {\n filtered.push(msg);\n }\n } else {\n filtered.push(msg);\n }\n }\n\n return filtered;\n}\n\nconst MAX_TOKENS = 128000;\n\nfunction countToolsTokens(model: string, tools: any[]): number {\n if (tools.length === 0) {\n return 0;\n }\n const json = JSON.stringify(tools);\n return countTokens(model, json);\n}\n\nfunction countMessageTokens(model: string, message: any): number {\n return countTokens(model, JSON.stringify(message.content) || \"\");\n}\n\nfunction countTokens(model: string, text: string): number {\n return text.length / 3;\n}\n\nexport function convertActionInputToAnthropicTool(\n action: ActionInput,\n): Anthropic.Messages.Tool {\n return {\n name: action.name,\n description: action.description,\n input_schema: JSON.parse(action.jsonSchema),\n };\n}\n\nexport function convertMessageToAnthropicMessage(\n message: Message,\n): Anthropic.Messages.MessageParam {\n if (message.isTextMessage()) {\n if (message.role === \"system\") {\n return {\n role: \"assistant\",\n content: [\n {\n type: \"text\",\n text:\n \"THE FOLLOWING MESSAGE IS A SYSTEM MESSAGE: \" + message.content,\n },\n ],\n };\n } else {\n return {\n role: message.role === \"user\" ? \"user\" : \"assistant\",\n content: [{ type: \"text\", text: message.content }],\n };\n }\n } else if (message.isImageMessage()) {\n let mediaType: \"image/jpeg\" | \"image/png\" | \"image/webp\" | \"image/gif\";\n switch (message.format) {\n case \"jpeg\":\n mediaType = \"image/jpeg\";\n break;\n case \"png\":\n mediaType = \"image/png\";\n break;\n case \"webp\":\n mediaType = \"image/webp\";\n break;\n case \"gif\":\n mediaType = \"image/gif\";\n break;\n default:\n throw new Error(`Unsupported image format: ${message.format}`);\n }\n\n return {\n role: \"user\",\n content: [\n {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: mediaType,\n data: message.bytes,\n },\n },\n ],\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n role: \"assistant\",\n content: [\n {\n id: message.id,\n type: \"tool_use\",\n input: message.arguments,\n name: message.name,\n },\n ],\n };\n } else if (message.isResultMessage()) {\n return {\n role: \"user\",\n content: [\n {\n type: \"tool_result\",\n content: message.result || \"Action completed successfully\",\n tool_use_id: message.actionExecutionId,\n },\n ],\n };\n }\n}\n\n/**\n * Anthropic's Messages API requires alternating user/assistant roles.\n * CopilotKit stores a mixed text+tool_use response as separate TextMessage and\n * ActionExecutionMessage objects, which map to two consecutive assistant-role entries.\n * This function merges consecutive same-role messages by concatenating their content\n * arrays so the payload satisfies Anthropic's role-alternation constraint.\n */\nexport function coalesceConsecutiveSameRoleMessages(\n messages: Anthropic.Messages.MessageParam[],\n): Anthropic.Messages.MessageParam[] {\n const result: Anthropic.Messages.MessageParam[] = [];\n for (const msg of messages) {\n const prev = result[result.length - 1];\n if (\n prev &&\n prev.role === msg.role &&\n Array.isArray(prev.content) &&\n Array.isArray(msg.content)\n ) {\n (prev.content as any[]).push(...(msg.content as any[]));\n } else {\n result.push({\n ...msg,\n content: Array.isArray(msg.content)\n ? [...(msg.content as any[])]\n : msg.content,\n });\n }\n }\n return result;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.cjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/anthropic/utils.ts"],"sourcesContent":["import { Anthropic } from \"@anthropic-ai/sdk\";\nimport { ActionInput } from \"../../graphql/inputs/action.input\";\nimport { Message } from \"../../graphql/types/converted\";\n\nexport function limitMessagesToTokenCount(\n messages: any[],\n tools: any[],\n model: string,\n maxTokens?: number,\n): any[] {\n maxTokens ||= MAX_TOKENS;\n\n const result: any[] = [];\n const toolsNumTokens = countToolsTokens(model, tools);\n if (toolsNumTokens > maxTokens) {\n throw new Error(\n `Too many tokens in function definitions: ${toolsNumTokens} > ${maxTokens}`,\n );\n }\n maxTokens -= toolsNumTokens;\n\n for (const message of messages) {\n if (message.role === \"system\") {\n const numTokens = countMessageTokens(model, message);\n maxTokens -= numTokens;\n\n if (maxTokens < 0) {\n throw new Error(\"Not enough tokens for system message.\");\n }\n }\n }\n\n let cutoff: boolean = false;\n\n const reversedMessages = [...messages].toReversed();\n for (const message of reversedMessages) {\n if (message.role === \"system\") {\n result.unshift(message);\n continue;\n } else if (cutoff) {\n continue;\n }\n let numTokens = countMessageTokens(model, message);\n if (maxTokens < numTokens) {\n cutoff = true;\n continue;\n }\n result.unshift(message);\n maxTokens -= numTokens;\n }\n\n // Post-process: remove orphaned tool_result and tool_use blocks.\n // Token trimming may have removed the assistant message containing tool_use\n // while keeping the user message with tool_result (or vice versa),\n // which Anthropic rejects.\n\n // Collect all tool_use IDs from assistant messages\n const toolUseIds = new Set<string>();\n for (const msg of result) {\n if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_use\") {\n toolUseIds.add(block.id);\n }\n }\n }\n }\n\n // Collect all tool_result IDs from user messages\n const toolResultIds = new Set<string>();\n for (const msg of result) {\n if (msg.role === \"user\" && Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_result\") {\n toolResultIds.add(block.tool_use_id);\n }\n }\n }\n }\n\n // Filter orphaned blocks without mutating the original messages\n const filtered: any[] = [];\n for (const msg of result) {\n if (msg.role === \"user\" && Array.isArray(msg.content)) {\n const remaining = msg.content.filter(\n (block: any) =>\n block.type !== \"tool_result\" || toolUseIds.has(block.tool_use_id),\n );\n if (remaining.length === 0) continue;\n if (remaining.length !== msg.content.length) {\n filtered.push({ ...msg, content: remaining });\n } else {\n filtered.push(msg);\n }\n } else if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n const remaining = msg.content.filter(\n (block: any) =>\n block.type !== \"tool_use\" || toolResultIds.has(block.id),\n );\n if (remaining.length === 0) continue;\n if (remaining.length !== msg.content.length) {\n filtered.push({ ...msg, content: remaining });\n } else {\n filtered.push(msg);\n }\n } else {\n filtered.push(msg);\n }\n }\n\n return filtered;\n}\n\nconst MAX_TOKENS = 128000;\n\nfunction countToolsTokens(model: string, tools: any[]): number {\n if (tools.length === 0) {\n return 0;\n }\n const json = JSON.stringify(tools);\n return countTokens(model, json);\n}\n\nfunction countMessageTokens(model: string, message: any): number {\n return countTokens(model, JSON.stringify(message.content) || \"\");\n}\n\nfunction countTokens(model: string, text: string): number {\n return text.length / 3;\n}\n\nexport function convertActionInputToAnthropicTool(\n action: ActionInput,\n): Anthropic.Messages.Tool {\n return {\n name: action.name,\n description: action.description,\n input_schema: JSON.parse(action.jsonSchema),\n };\n}\n\nexport function convertMessageToAnthropicMessage(\n message: Message,\n): Anthropic.Messages.MessageParam {\n if (message.isTextMessage()) {\n if (message.role === \"system\") {\n return {\n role: \"assistant\",\n content: [\n {\n type: \"text\",\n text:\n \"THE FOLLOWING MESSAGE IS A SYSTEM MESSAGE: \" + message.content,\n },\n ],\n };\n } else {\n return {\n role: message.role === \"user\" ? \"user\" : \"assistant\",\n content: [{ type: \"text\", text: message.content }],\n };\n }\n } else if (message.isImageMessage()) {\n let mediaType: \"image/jpeg\" | \"image/png\" | \"image/webp\" | \"image/gif\";\n switch (message.format) {\n case \"jpeg\":\n mediaType = \"image/jpeg\";\n break;\n case \"png\":\n mediaType = \"image/png\";\n break;\n case \"webp\":\n mediaType = \"image/webp\";\n break;\n case \"gif\":\n mediaType = \"image/gif\";\n break;\n default:\n throw new Error(`Unsupported image format: ${message.format}`);\n }\n\n return {\n role: \"user\",\n content: [\n {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: mediaType,\n data: message.bytes,\n },\n },\n ],\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n role: \"assistant\",\n content: [\n {\n id: message.id,\n type: \"tool_use\",\n input: message.arguments,\n name: message.name,\n },\n ],\n };\n } else if (message.isResultMessage()) {\n return {\n role: \"user\",\n content: [\n {\n type: \"tool_result\",\n content: message.result || \"Action completed successfully\",\n tool_use_id: message.actionExecutionId,\n },\n ],\n };\n }\n}\n\n/**\n * Anthropic's Messages API requires alternating user/assistant roles.\n * CopilotKit stores a mixed text+tool_use response as separate TextMessage and\n * ActionExecutionMessage objects, which map to two consecutive assistant-role entries.\n * This function merges consecutive same-role messages by concatenating their content\n * arrays so the payload satisfies Anthropic's role-alternation constraint.\n */\nexport function coalesceConsecutiveSameRoleMessages(\n messages: Anthropic.Messages.MessageParam[],\n): Anthropic.Messages.MessageParam[] {\n const result: Anthropic.Messages.MessageParam[] = [];\n for (const msg of messages) {\n const prev = result[result.length - 1];\n if (\n prev &&\n prev.role === msg.role &&\n Array.isArray(prev.content) &&\n Array.isArray(msg.content)\n ) {\n (prev.content as any[]).push(...(msg.content as any[]));\n } else {\n result.push({\n ...msg,\n content: Array.isArray(msg.content)\n ? [...(msg.content as any[])]\n : msg.content,\n });\n }\n }\n return result;\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import "reflect-metadata";
2
- //#region src/service-adapters/anthropic/utils.ts
2
+ //#region src/v1-deprecated/service-adapters/anthropic/utils.ts
3
3
  function limitMessagesToTokenCount(messages, tools, model, maxTokens) {
4
4
  maxTokens ||= MAX_TOKENS;
5
5
  const result = [];
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","names":[],"sources":["../../../src/service-adapters/anthropic/utils.ts"],"sourcesContent":["import { Anthropic } from \"@anthropic-ai/sdk\";\nimport { ActionInput } from \"../../graphql/inputs/action.input\";\nimport { Message } from \"../../graphql/types/converted\";\n\nexport function limitMessagesToTokenCount(\n messages: any[],\n tools: any[],\n model: string,\n maxTokens?: number,\n): any[] {\n maxTokens ||= MAX_TOKENS;\n\n const result: any[] = [];\n const toolsNumTokens = countToolsTokens(model, tools);\n if (toolsNumTokens > maxTokens) {\n throw new Error(\n `Too many tokens in function definitions: ${toolsNumTokens} > ${maxTokens}`,\n );\n }\n maxTokens -= toolsNumTokens;\n\n for (const message of messages) {\n if (message.role === \"system\") {\n const numTokens = countMessageTokens(model, message);\n maxTokens -= numTokens;\n\n if (maxTokens < 0) {\n throw new Error(\"Not enough tokens for system message.\");\n }\n }\n }\n\n let cutoff: boolean = false;\n\n const reversedMessages = [...messages].toReversed();\n for (const message of reversedMessages) {\n if (message.role === \"system\") {\n result.unshift(message);\n continue;\n } else if (cutoff) {\n continue;\n }\n let numTokens = countMessageTokens(model, message);\n if (maxTokens < numTokens) {\n cutoff = true;\n continue;\n }\n result.unshift(message);\n maxTokens -= numTokens;\n }\n\n // Post-process: remove orphaned tool_result and tool_use blocks.\n // Token trimming may have removed the assistant message containing tool_use\n // while keeping the user message with tool_result (or vice versa),\n // which Anthropic rejects.\n\n // Collect all tool_use IDs from assistant messages\n const toolUseIds = new Set<string>();\n for (const msg of result) {\n if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_use\") {\n toolUseIds.add(block.id);\n }\n }\n }\n }\n\n // Collect all tool_result IDs from user messages\n const toolResultIds = new Set<string>();\n for (const msg of result) {\n if (msg.role === \"user\" && Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_result\") {\n toolResultIds.add(block.tool_use_id);\n }\n }\n }\n }\n\n // Filter orphaned blocks without mutating the original messages\n const filtered: any[] = [];\n for (const msg of result) {\n if (msg.role === \"user\" && Array.isArray(msg.content)) {\n const remaining = msg.content.filter(\n (block: any) =>\n block.type !== \"tool_result\" || toolUseIds.has(block.tool_use_id),\n );\n if (remaining.length === 0) continue;\n if (remaining.length !== msg.content.length) {\n filtered.push({ ...msg, content: remaining });\n } else {\n filtered.push(msg);\n }\n } else if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n const remaining = msg.content.filter(\n (block: any) =>\n block.type !== \"tool_use\" || toolResultIds.has(block.id),\n );\n if (remaining.length === 0) continue;\n if (remaining.length !== msg.content.length) {\n filtered.push({ ...msg, content: remaining });\n } else {\n filtered.push(msg);\n }\n } else {\n filtered.push(msg);\n }\n }\n\n return filtered;\n}\n\nconst MAX_TOKENS = 128000;\n\nfunction countToolsTokens(model: string, tools: any[]): number {\n if (tools.length === 0) {\n return 0;\n }\n const json = JSON.stringify(tools);\n return countTokens(model, json);\n}\n\nfunction countMessageTokens(model: string, message: any): number {\n return countTokens(model, JSON.stringify(message.content) || \"\");\n}\n\nfunction countTokens(model: string, text: string): number {\n return text.length / 3;\n}\n\nexport function convertActionInputToAnthropicTool(\n action: ActionInput,\n): Anthropic.Messages.Tool {\n return {\n name: action.name,\n description: action.description,\n input_schema: JSON.parse(action.jsonSchema),\n };\n}\n\nexport function convertMessageToAnthropicMessage(\n message: Message,\n): Anthropic.Messages.MessageParam {\n if (message.isTextMessage()) {\n if (message.role === \"system\") {\n return {\n role: \"assistant\",\n content: [\n {\n type: \"text\",\n text:\n \"THE FOLLOWING MESSAGE IS A SYSTEM MESSAGE: \" + message.content,\n },\n ],\n };\n } else {\n return {\n role: message.role === \"user\" ? \"user\" : \"assistant\",\n content: [{ type: \"text\", text: message.content }],\n };\n }\n } else if (message.isImageMessage()) {\n let mediaType: \"image/jpeg\" | \"image/png\" | \"image/webp\" | \"image/gif\";\n switch (message.format) {\n case \"jpeg\":\n mediaType = \"image/jpeg\";\n break;\n case \"png\":\n mediaType = \"image/png\";\n break;\n case \"webp\":\n mediaType = \"image/webp\";\n break;\n case \"gif\":\n mediaType = \"image/gif\";\n break;\n default:\n throw new Error(`Unsupported image format: ${message.format}`);\n }\n\n return {\n role: \"user\",\n content: [\n {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: mediaType,\n data: message.bytes,\n },\n },\n ],\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n role: \"assistant\",\n content: [\n {\n id: message.id,\n type: \"tool_use\",\n input: message.arguments,\n name: message.name,\n },\n ],\n };\n } else if (message.isResultMessage()) {\n return {\n role: \"user\",\n content: [\n {\n type: \"tool_result\",\n content: message.result || \"Action completed successfully\",\n tool_use_id: message.actionExecutionId,\n },\n ],\n };\n }\n}\n\n/**\n * Anthropic's Messages API requires alternating user/assistant roles.\n * CopilotKit stores a mixed text+tool_use response as separate TextMessage and\n * ActionExecutionMessage objects, which map to two consecutive assistant-role entries.\n * This function merges consecutive same-role messages by concatenating their content\n * arrays so the payload satisfies Anthropic's role-alternation constraint.\n */\nexport function coalesceConsecutiveSameRoleMessages(\n messages: Anthropic.Messages.MessageParam[],\n): Anthropic.Messages.MessageParam[] {\n const result: Anthropic.Messages.MessageParam[] = [];\n for (const msg of messages) {\n const prev = result[result.length - 1];\n if (\n prev &&\n prev.role === msg.role &&\n Array.isArray(prev.content) &&\n Array.isArray(msg.content)\n ) {\n (prev.content as any[]).push(...(msg.content as any[]));\n } else {\n result.push({\n ...msg,\n content: Array.isArray(msg.content)\n ? [...(msg.content as any[])]\n : msg.content,\n });\n }\n }\n return result;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.mjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/anthropic/utils.ts"],"sourcesContent":["import { Anthropic } from \"@anthropic-ai/sdk\";\nimport { ActionInput } from \"../../graphql/inputs/action.input\";\nimport { Message } from \"../../graphql/types/converted\";\n\nexport function limitMessagesToTokenCount(\n messages: any[],\n tools: any[],\n model: string,\n maxTokens?: number,\n): any[] {\n maxTokens ||= MAX_TOKENS;\n\n const result: any[] = [];\n const toolsNumTokens = countToolsTokens(model, tools);\n if (toolsNumTokens > maxTokens) {\n throw new Error(\n `Too many tokens in function definitions: ${toolsNumTokens} > ${maxTokens}`,\n );\n }\n maxTokens -= toolsNumTokens;\n\n for (const message of messages) {\n if (message.role === \"system\") {\n const numTokens = countMessageTokens(model, message);\n maxTokens -= numTokens;\n\n if (maxTokens < 0) {\n throw new Error(\"Not enough tokens for system message.\");\n }\n }\n }\n\n let cutoff: boolean = false;\n\n const reversedMessages = [...messages].toReversed();\n for (const message of reversedMessages) {\n if (message.role === \"system\") {\n result.unshift(message);\n continue;\n } else if (cutoff) {\n continue;\n }\n let numTokens = countMessageTokens(model, message);\n if (maxTokens < numTokens) {\n cutoff = true;\n continue;\n }\n result.unshift(message);\n maxTokens -= numTokens;\n }\n\n // Post-process: remove orphaned tool_result and tool_use blocks.\n // Token trimming may have removed the assistant message containing tool_use\n // while keeping the user message with tool_result (or vice versa),\n // which Anthropic rejects.\n\n // Collect all tool_use IDs from assistant messages\n const toolUseIds = new Set<string>();\n for (const msg of result) {\n if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_use\") {\n toolUseIds.add(block.id);\n }\n }\n }\n }\n\n // Collect all tool_result IDs from user messages\n const toolResultIds = new Set<string>();\n for (const msg of result) {\n if (msg.role === \"user\" && Array.isArray(msg.content)) {\n for (const block of msg.content) {\n if (block.type === \"tool_result\") {\n toolResultIds.add(block.tool_use_id);\n }\n }\n }\n }\n\n // Filter orphaned blocks without mutating the original messages\n const filtered: any[] = [];\n for (const msg of result) {\n if (msg.role === \"user\" && Array.isArray(msg.content)) {\n const remaining = msg.content.filter(\n (block: any) =>\n block.type !== \"tool_result\" || toolUseIds.has(block.tool_use_id),\n );\n if (remaining.length === 0) continue;\n if (remaining.length !== msg.content.length) {\n filtered.push({ ...msg, content: remaining });\n } else {\n filtered.push(msg);\n }\n } else if (msg.role === \"assistant\" && Array.isArray(msg.content)) {\n const remaining = msg.content.filter(\n (block: any) =>\n block.type !== \"tool_use\" || toolResultIds.has(block.id),\n );\n if (remaining.length === 0) continue;\n if (remaining.length !== msg.content.length) {\n filtered.push({ ...msg, content: remaining });\n } else {\n filtered.push(msg);\n }\n } else {\n filtered.push(msg);\n }\n }\n\n return filtered;\n}\n\nconst MAX_TOKENS = 128000;\n\nfunction countToolsTokens(model: string, tools: any[]): number {\n if (tools.length === 0) {\n return 0;\n }\n const json = JSON.stringify(tools);\n return countTokens(model, json);\n}\n\nfunction countMessageTokens(model: string, message: any): number {\n return countTokens(model, JSON.stringify(message.content) || \"\");\n}\n\nfunction countTokens(model: string, text: string): number {\n return text.length / 3;\n}\n\nexport function convertActionInputToAnthropicTool(\n action: ActionInput,\n): Anthropic.Messages.Tool {\n return {\n name: action.name,\n description: action.description,\n input_schema: JSON.parse(action.jsonSchema),\n };\n}\n\nexport function convertMessageToAnthropicMessage(\n message: Message,\n): Anthropic.Messages.MessageParam {\n if (message.isTextMessage()) {\n if (message.role === \"system\") {\n return {\n role: \"assistant\",\n content: [\n {\n type: \"text\",\n text:\n \"THE FOLLOWING MESSAGE IS A SYSTEM MESSAGE: \" + message.content,\n },\n ],\n };\n } else {\n return {\n role: message.role === \"user\" ? \"user\" : \"assistant\",\n content: [{ type: \"text\", text: message.content }],\n };\n }\n } else if (message.isImageMessage()) {\n let mediaType: \"image/jpeg\" | \"image/png\" | \"image/webp\" | \"image/gif\";\n switch (message.format) {\n case \"jpeg\":\n mediaType = \"image/jpeg\";\n break;\n case \"png\":\n mediaType = \"image/png\";\n break;\n case \"webp\":\n mediaType = \"image/webp\";\n break;\n case \"gif\":\n mediaType = \"image/gif\";\n break;\n default:\n throw new Error(`Unsupported image format: ${message.format}`);\n }\n\n return {\n role: \"user\",\n content: [\n {\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: mediaType,\n data: message.bytes,\n },\n },\n ],\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n role: \"assistant\",\n content: [\n {\n id: message.id,\n type: \"tool_use\",\n input: message.arguments,\n name: message.name,\n },\n ],\n };\n } else if (message.isResultMessage()) {\n return {\n role: \"user\",\n content: [\n {\n type: \"tool_result\",\n content: message.result || \"Action completed successfully\",\n tool_use_id: message.actionExecutionId,\n },\n ],\n };\n }\n}\n\n/**\n * Anthropic's Messages API requires alternating user/assistant roles.\n * CopilotKit stores a mixed text+tool_use response as separate TextMessage and\n * ActionExecutionMessage objects, which map to two consecutive assistant-role entries.\n * This function merges consecutive same-role messages by concatenating their content\n * arrays so the payload satisfies Anthropic's role-alternation constraint.\n */\nexport function coalesceConsecutiveSameRoleMessages(\n messages: Anthropic.Messages.MessageParam[],\n): Anthropic.Messages.MessageParam[] {\n const result: Anthropic.Messages.MessageParam[] = [];\n for (const msg of messages) {\n const prev = result[result.length - 1];\n if (\n prev &&\n prev.role === msg.role &&\n Array.isArray(prev.content) &&\n Array.isArray(msg.content)\n ) {\n (prev.content as any[]).push(...(msg.content as any[]));\n } else {\n result.push({\n ...msg,\n content: Array.isArray(msg.content)\n ? [...(msg.content as any[])]\n : msg.content,\n });\n }\n }\n return result;\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  require("reflect-metadata");
2
2
  const require_langchain_adapter = require('../langchain/langchain-adapter.cjs');
3
3
 
4
- //#region src/service-adapters/bedrock/bedrock-adapter.ts
4
+ //#region src/v1-deprecated/service-adapters/bedrock/bedrock-adapter.ts
5
5
  /**
6
6
  * Copilot Runtime adapter for AWS Bedrock.
7
7
  *
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock-adapter.cjs","names":["LangChainAdapter"],"sources":["../../../src/service-adapters/bedrock/bedrock-adapter.ts"],"sourcesContent":["/**\n * Copilot Runtime adapter for AWS Bedrock.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, BedrockAdapter } from \"@copilotkit/runtime\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * return new BedrockAdapter({\n * model: \"amazon.nova-lite-v1:0\",\n * region: \"us-east-1\",\n * credentials: {\n * accessKeyId: process.env.AWS_ACCESS_KEY_ID,\n * secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n * }\n * });\n * ```\n */\n\nimport { LangChainAdapter } from \"../langchain/langchain-adapter\";\n\nexport interface BedrockAdapterParams {\n /**\n * AWS Bedrock model ID to use.\n * @default \"amazon.nova-lite-v1:0\"\n */\n model?: string;\n\n /**\n * AWS region where Bedrock is available.\n * @default \"us-east-1\"\n */\n region?: string;\n\n /**\n * AWS credentials for Bedrock access.\n */\n credentials?: {\n accessKeyId?: string;\n secretAccessKey?: string;\n };\n}\n\nconst DEFAULT_MODEL = \"amazon.nova-lite-v1:0\";\n\nexport class BedrockAdapter extends LangChainAdapter {\n public provider = \"bedrock\";\n public model: string = DEFAULT_MODEL;\n constructor(options?: BedrockAdapterParams) {\n super({\n chainFn: async ({ messages, tools, threadId }) => {\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ChatBedrockConverse } = require(\"@langchain/aws\");\n\n this.model = options?.model ?? \"amazon.nova-lite-v1:0\";\n const model = new ChatBedrockConverse({\n model: this.model,\n region: options?.region ?? \"us-east-1\",\n credentials: options?.credentials\n ? {\n accessKeyId: options.credentials.accessKeyId,\n secretAccessKey: options.credentials.secretAccessKey,\n }\n : undefined,\n }).bindTools(tools);\n return model.stream(messages);\n },\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA6CA,MAAM,gBAAgB;AAEtB,IAAa,iBAAb,cAAoCA,2CAAiB;CAGnD,YAAY,SAAgC;AAC1C,QAAM,EACJ,SAAS,OAAO,EAAE,UAAU,OAAO,eAAe;GAGhD,MAAM,EAAE,wBAAwB,QAAQ,iBAAiB;AAEzD,QAAK,QAAQ,SAAS,SAAS;AAW/B,UAVc,IAAI,oBAAoB;IACpC,OAAO,KAAK;IACZ,QAAQ,SAAS,UAAU;IAC3B,aAAa,SAAS,cAClB;KACE,aAAa,QAAQ,YAAY;KACjC,iBAAiB,QAAQ,YAAY;KACtC,GACD;IACL,CAAC,CAAC,UAAU,MAAM,CACN,OAAO,SAAS;KAEhC,CAAC;kBAtBc;eACK"}
1
+ {"version":3,"file":"bedrock-adapter.cjs","names":["LangChainAdapter"],"sources":["../../../../src/v1-deprecated/service-adapters/bedrock/bedrock-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — BedrockAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * @copilotkit/runtime — BedrockAdapterParams:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * Copilot Runtime adapter for AWS Bedrock.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, BedrockAdapter } from \"@copilotkit/runtime\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * return new BedrockAdapter({\n * model: \"amazon.nova-lite-v1:0\",\n * region: \"us-east-1\",\n * credentials: {\n * accessKeyId: process.env.AWS_ACCESS_KEY_ID,\n * secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n * }\n * });\n * ```\n */\n\nimport { LangChainAdapter } from \"../langchain/langchain-adapter\";\n\nexport interface BedrockAdapterParams {\n /**\n * AWS Bedrock model ID to use.\n * @default \"amazon.nova-lite-v1:0\"\n */\n model?: string;\n\n /**\n * AWS region where Bedrock is available.\n * @default \"us-east-1\"\n */\n region?: string;\n\n /**\n * AWS credentials for Bedrock access.\n */\n credentials?: {\n accessKeyId?: string;\n secretAccessKey?: string;\n };\n}\n\nconst DEFAULT_MODEL = \"amazon.nova-lite-v1:0\";\n\nexport class BedrockAdapter extends LangChainAdapter {\n public provider = \"bedrock\";\n public model: string = DEFAULT_MODEL;\n constructor(options?: BedrockAdapterParams) {\n super({\n chainFn: async ({ messages, tools, threadId }) => {\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ChatBedrockConverse } = require(\"@langchain/aws\");\n\n this.model = options?.model ?? \"amazon.nova-lite-v1:0\";\n const model = new ChatBedrockConverse({\n model: this.model,\n region: options?.region ?? \"us-east-1\",\n credentials: options?.credentials\n ? {\n accessKeyId: options.credentials.accessKeyId,\n secretAccessKey: options.credentials.secretAccessKey,\n }\n : undefined,\n }).bindTools(tools);\n return model.stream(messages);\n },\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAuEA,MAAM,gBAAgB;AAEtB,IAAa,iBAAb,cAAoCA,2CAAiB;CAGnD,YAAY,SAAgC;AAC1C,QAAM,EACJ,SAAS,OAAO,EAAE,UAAU,OAAO,eAAe;GAGhD,MAAM,EAAE,wBAAwB,QAAQ,iBAAiB;AAEzD,QAAK,QAAQ,SAAS,SAAS;AAW/B,UAVc,IAAI,oBAAoB;IACpC,OAAO,KAAK;IACZ,QAAQ,SAAS,UAAU;IAC3B,aAAa,SAAS,cAClB;KACE,aAAa,QAAQ,YAAY;KACjC,iBAAiB,QAAQ,YAAY;KACtC,GACD;IACL,CAAC,CAAC,UAAU,MAAM,CACN,OAAO,SAAS;KAEhC,CAAC;kBAtBc;eACK"}
@@ -1,7 +1,7 @@
1
1
 
2
2
  import { LangChainAdapter } from "../langchain/langchain-adapter.cjs";
3
3
 
4
- //#region src/service-adapters/bedrock/bedrock-adapter.d.ts
4
+ //#region src/v1-deprecated/service-adapters/bedrock/bedrock-adapter.d.ts
5
5
  interface BedrockAdapterParams {
6
6
  /**
7
7
  * AWS Bedrock model ID to use.
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock-adapter.d.cts","names":[],"sources":["../../../src/service-adapters/bedrock/bedrock-adapter.ts"],"mappings":";;;;UAuBiB,oBAAA;EA2BO;;;;EAtBtB,KAAA;;;;;EAMA,MAAA;;;;EAKA,WAAA;IACE,WAAA;IACA,eAAA;EAAA;AAAA;AAAA,cAMS,cAAA,SAAuB,gBAAA;EAC3B,QAAA;EACA,KAAA;cACK,OAAA,GAAU,oBAAA;AAAA"}
1
+ {"version":3,"file":"bedrock-adapter.d.cts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/bedrock/bedrock-adapter.ts"],"mappings":";;;;UAiDiB,oBAAA;EA2BO;;;;EAtBtB,KAAA;;;;;EAMA,MAAA;;;;EAKA,WAAA;IACE,WAAA;IACA,eAAA;EAAA;AAAA;AAAA,cAMS,cAAA,SAAuB,gBAAA;EAC3B,QAAA;EACA,KAAA;cACK,OAAA,GAAU,oBAAA;AAAA"}
@@ -1,7 +1,7 @@
1
1
 
2
2
  import { LangChainAdapter } from "../langchain/langchain-adapter.mjs";
3
3
 
4
- //#region src/service-adapters/bedrock/bedrock-adapter.d.ts
4
+ //#region src/v1-deprecated/service-adapters/bedrock/bedrock-adapter.d.ts
5
5
  interface BedrockAdapterParams {
6
6
  /**
7
7
  * AWS Bedrock model ID to use.
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock-adapter.d.mts","names":[],"sources":["../../../src/service-adapters/bedrock/bedrock-adapter.ts"],"mappings":";;;;UAuBiB,oBAAA;EA2BO;;;;EAtBtB,KAAA;;;;;EAMA,MAAA;;;;EAKA,WAAA;IACE,WAAA;IACA,eAAA;EAAA;AAAA;AAAA,cAMS,cAAA,SAAuB,gBAAA;EAC3B,QAAA;EACA,KAAA;cACK,OAAA,GAAU,oBAAA;AAAA"}
1
+ {"version":3,"file":"bedrock-adapter.d.mts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/bedrock/bedrock-adapter.ts"],"mappings":";;;;UAiDiB,oBAAA;EA2BO;;;;EAtBtB,KAAA;;;;;EAMA,MAAA;;;;EAKA,WAAA;IACE,WAAA;IACA,eAAA;EAAA;AAAA;AAAA,cAMS,cAAA,SAAuB,gBAAA;EAC3B,QAAA;EACA,KAAA;cACK,OAAA,GAAU,oBAAA;AAAA"}
@@ -2,7 +2,7 @@ import "reflect-metadata";
2
2
  import { __require } from "../../_virtual/_rolldown/runtime.mjs";
3
3
  import { LangChainAdapter } from "../langchain/langchain-adapter.mjs";
4
4
 
5
- //#region src/service-adapters/bedrock/bedrock-adapter.ts
5
+ //#region src/v1-deprecated/service-adapters/bedrock/bedrock-adapter.ts
6
6
  /**
7
7
  * Copilot Runtime adapter for AWS Bedrock.
8
8
  *
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock-adapter.mjs","names":[],"sources":["../../../src/service-adapters/bedrock/bedrock-adapter.ts"],"sourcesContent":["/**\n * Copilot Runtime adapter for AWS Bedrock.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, BedrockAdapter } from \"@copilotkit/runtime\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * return new BedrockAdapter({\n * model: \"amazon.nova-lite-v1:0\",\n * region: \"us-east-1\",\n * credentials: {\n * accessKeyId: process.env.AWS_ACCESS_KEY_ID,\n * secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n * }\n * });\n * ```\n */\n\nimport { LangChainAdapter } from \"../langchain/langchain-adapter\";\n\nexport interface BedrockAdapterParams {\n /**\n * AWS Bedrock model ID to use.\n * @default \"amazon.nova-lite-v1:0\"\n */\n model?: string;\n\n /**\n * AWS region where Bedrock is available.\n * @default \"us-east-1\"\n */\n region?: string;\n\n /**\n * AWS credentials for Bedrock access.\n */\n credentials?: {\n accessKeyId?: string;\n secretAccessKey?: string;\n };\n}\n\nconst DEFAULT_MODEL = \"amazon.nova-lite-v1:0\";\n\nexport class BedrockAdapter extends LangChainAdapter {\n public provider = \"bedrock\";\n public model: string = DEFAULT_MODEL;\n constructor(options?: BedrockAdapterParams) {\n super({\n chainFn: async ({ messages, tools, threadId }) => {\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ChatBedrockConverse } = require(\"@langchain/aws\");\n\n this.model = options?.model ?? \"amazon.nova-lite-v1:0\";\n const model = new ChatBedrockConverse({\n model: this.model,\n region: options?.region ?? \"us-east-1\",\n credentials: options?.credentials\n ? {\n accessKeyId: options.credentials.accessKeyId,\n secretAccessKey: options.credentials.secretAccessKey,\n }\n : undefined,\n }).bindTools(tools);\n return model.stream(messages);\n },\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,MAAM,gBAAgB;AAEtB,IAAa,iBAAb,cAAoC,iBAAiB;CAGnD,YAAY,SAAgC;AAC1C,QAAM,EACJ,SAAS,OAAO,EAAE,UAAU,OAAO,eAAe;GAGhD,MAAM,EAAE,kCAAgC,iBAAiB;AAEzD,QAAK,QAAQ,SAAS,SAAS;AAW/B,UAVc,IAAI,oBAAoB;IACpC,OAAO,KAAK;IACZ,QAAQ,SAAS,UAAU;IAC3B,aAAa,SAAS,cAClB;KACE,aAAa,QAAQ,YAAY;KACjC,iBAAiB,QAAQ,YAAY;KACtC,GACD;IACL,CAAC,CAAC,UAAU,MAAM,CACN,OAAO,SAAS;KAEhC,CAAC;kBAtBc;eACK"}
1
+ {"version":3,"file":"bedrock-adapter.mjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/bedrock/bedrock-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — BedrockAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * @copilotkit/runtime — BedrockAdapterParams:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * Copilot Runtime adapter for AWS Bedrock.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, BedrockAdapter } from \"@copilotkit/runtime\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * return new BedrockAdapter({\n * model: \"amazon.nova-lite-v1:0\",\n * region: \"us-east-1\",\n * credentials: {\n * accessKeyId: process.env.AWS_ACCESS_KEY_ID,\n * secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n * }\n * });\n * ```\n */\n\nimport { LangChainAdapter } from \"../langchain/langchain-adapter\";\n\nexport interface BedrockAdapterParams {\n /**\n * AWS Bedrock model ID to use.\n * @default \"amazon.nova-lite-v1:0\"\n */\n model?: string;\n\n /**\n * AWS region where Bedrock is available.\n * @default \"us-east-1\"\n */\n region?: string;\n\n /**\n * AWS credentials for Bedrock access.\n */\n credentials?: {\n accessKeyId?: string;\n secretAccessKey?: string;\n };\n}\n\nconst DEFAULT_MODEL = \"amazon.nova-lite-v1:0\";\n\nexport class BedrockAdapter extends LangChainAdapter {\n public provider = \"bedrock\";\n public model: string = DEFAULT_MODEL;\n constructor(options?: BedrockAdapterParams) {\n super({\n chainFn: async ({ messages, tools, threadId }) => {\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { ChatBedrockConverse } = require(\"@langchain/aws\");\n\n this.model = options?.model ?? \"amazon.nova-lite-v1:0\";\n const model = new ChatBedrockConverse({\n model: this.model,\n region: options?.region ?? \"us-east-1\",\n credentials: options?.credentials\n ? {\n accessKeyId: options.credentials.accessKeyId,\n secretAccessKey: options.credentials.secretAccessKey,\n }\n : undefined,\n }).bindTools(tools);\n return model.stream(messages);\n },\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAuEA,MAAM,gBAAgB;AAEtB,IAAa,iBAAb,cAAoC,iBAAiB;CAGnD,YAAY,SAAgC;AAC1C,QAAM,EACJ,SAAS,OAAO,EAAE,UAAU,OAAO,eAAe;GAGhD,MAAM,EAAE,kCAAgC,iBAAiB;AAEzD,QAAK,QAAQ,SAAS,SAAS;AAW/B,UAVc,IAAI,oBAAoB;IACpC,OAAO,KAAK;IACZ,QAAQ,SAAS,UAAU;IAC3B,aAAa,SAAS,cAClB;KACE,aAAa,QAAQ,YAAY;KACjC,iBAAiB,QAAQ,YAAY;KACtC,GACD;IACL,CAAC,CAAC,UAAU,MAAM,CACN,OAAO,SAAS;KAEhC,CAAC;kBAtBc;eACK"}
@@ -2,7 +2,7 @@ require("reflect-metadata");
2
2
  const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
3
3
  let _copilotkit_shared = require("@copilotkit/shared");
4
4
 
5
- //#region src/service-adapters/empty/empty-adapter.ts
5
+ //#region src/v1-deprecated/service-adapters/empty/empty-adapter.ts
6
6
  var EmptyAdapter = class {
7
7
  async process(request) {
8
8
  return { threadId: request.threadId || (0, _copilotkit_shared.randomUUID)() };
@@ -1 +1 @@
1
- {"version":3,"file":"empty-adapter.cjs","names":[],"sources":["../../../src/service-adapters/empty/empty-adapter.ts"],"sourcesContent":["/**\n * CopilotKit Empty Adapter\n *\n * This adapter is meant to preserve adherence to runtime requirements, while doing nothing\n * Ideal if you don't want to connect an LLM the to the runtime, and only use your LangGraph agent.\n * Be aware that Copilot Suggestions will not work if you use this adapter\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, EmptyAdapter } from \"@copilotkit/runtime\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * return new EmptyAdapter();\n * ```\n */\nimport {\n CopilotServiceAdapter,\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\nexport class EmptyAdapter implements CopilotServiceAdapter {\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n return {\n threadId: request.threadId || randomUUID(),\n };\n }\n public get name() {\n return \"EmptyAdapter\";\n }\n}\n\nexport const ExperimentalEmptyAdapter = EmptyAdapter;\n"],"mappings":";;;;;AAwBA,IAAa,eAAb,MAA2D;CACzD,MAAM,QACJ,SAC+C;AAC/C,SAAO,EACL,UAAU,QAAQ,gDAAwB,EAC3C;;CAEH,IAAW,OAAO;AAChB,SAAO;;;AAIX,MAAa,2BAA2B"}
1
+ {"version":3,"file":"empty-adapter.cjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/empty/empty-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — EmptyAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * @copilotkit/runtime — ExperimentalEmptyAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * CopilotKit Empty Adapter\n *\n * This adapter is meant to preserve adherence to runtime requirements, while doing nothing\n * Ideal if you don't want to connect an LLM the to the runtime, and only use your LangGraph agent.\n * Be aware that Copilot Suggestions will not work if you use this adapter\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, EmptyAdapter } from \"@copilotkit/runtime\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * return new EmptyAdapter();\n * ```\n */\nimport type {\n CopilotServiceAdapter,\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\nexport class EmptyAdapter implements CopilotServiceAdapter {\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n return {\n threadId: request.threadId || randomUUID(),\n };\n }\n public get name() {\n return \"EmptyAdapter\";\n }\n}\n\nexport const ExperimentalEmptyAdapter = EmptyAdapter;\n"],"mappings":";;;;;AAkDA,IAAa,eAAb,MAA2D;CACzD,MAAM,QACJ,SAC+C;AAC/C,SAAO,EACL,UAAU,QAAQ,gDAAwB,EAC3C;;CAEH,IAAW,OAAO;AAChB,SAAO;;;AAIX,MAAa,2BAA2B"}
@@ -1,7 +1,7 @@
1
1
 
2
2
  import { CopilotRuntimeChatCompletionRequest, CopilotRuntimeChatCompletionResponse, CopilotServiceAdapter } from "../service-adapter.cjs";
3
3
 
4
- //#region src/service-adapters/empty/empty-adapter.d.ts
4
+ //#region src/v1-deprecated/service-adapters/empty/empty-adapter.d.ts
5
5
  declare class EmptyAdapter implements CopilotServiceAdapter {
6
6
  process(request: CopilotRuntimeChatCompletionRequest): Promise<CopilotRuntimeChatCompletionResponse>;
7
7
  get name(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"empty-adapter.d.cts","names":[],"sources":["../../../src/service-adapters/empty/empty-adapter.ts"],"mappings":";;;;cAwBa,YAAA,YAAwB,qBAAA;EAC7B,OAAA,CACJ,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;EAAA,IAKA,IAAA,CAAA;AAAA;AAAA,cAKA,wBAAA,SAAwB,YAAA"}
1
+ {"version":3,"file":"empty-adapter.d.cts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/empty/empty-adapter.ts"],"mappings":";;;;cAkDa,YAAA,YAAwB,qBAAA;EAC7B,OAAA,CACJ,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;EAAA,IAKA,IAAA,CAAA;AAAA;AAAA,cAKA,wBAAA,SAAwB,YAAA"}
@@ -1,7 +1,7 @@
1
1
 
2
2
  import { CopilotRuntimeChatCompletionRequest, CopilotRuntimeChatCompletionResponse, CopilotServiceAdapter } from "../service-adapter.mjs";
3
3
 
4
- //#region src/service-adapters/empty/empty-adapter.d.ts
4
+ //#region src/v1-deprecated/service-adapters/empty/empty-adapter.d.ts
5
5
  declare class EmptyAdapter implements CopilotServiceAdapter {
6
6
  process(request: CopilotRuntimeChatCompletionRequest): Promise<CopilotRuntimeChatCompletionResponse>;
7
7
  get name(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"empty-adapter.d.mts","names":[],"sources":["../../../src/service-adapters/empty/empty-adapter.ts"],"mappings":";;;;cAwBa,YAAA,YAAwB,qBAAA;EAC7B,OAAA,CACJ,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;EAAA,IAKA,IAAA,CAAA;AAAA;AAAA,cAKA,wBAAA,SAAwB,YAAA"}
1
+ {"version":3,"file":"empty-adapter.d.mts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/empty/empty-adapter.ts"],"mappings":";;;;cAkDa,YAAA,YAAwB,qBAAA;EAC7B,OAAA,CACJ,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;EAAA,IAKA,IAAA,CAAA;AAAA;AAAA,cAKA,wBAAA,SAAwB,YAAA"}
@@ -1,7 +1,7 @@
1
1
  import "reflect-metadata";
2
2
  import { randomUUID } from "@copilotkit/shared";
3
3
 
4
- //#region src/service-adapters/empty/empty-adapter.ts
4
+ //#region src/v1-deprecated/service-adapters/empty/empty-adapter.ts
5
5
  var EmptyAdapter = class {
6
6
  async process(request) {
7
7
  return { threadId: request.threadId || randomUUID() };
@@ -1 +1 @@
1
- {"version":3,"file":"empty-adapter.mjs","names":[],"sources":["../../../src/service-adapters/empty/empty-adapter.ts"],"sourcesContent":["/**\n * CopilotKit Empty Adapter\n *\n * This adapter is meant to preserve adherence to runtime requirements, while doing nothing\n * Ideal if you don't want to connect an LLM the to the runtime, and only use your LangGraph agent.\n * Be aware that Copilot Suggestions will not work if you use this adapter\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, EmptyAdapter } from \"@copilotkit/runtime\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * return new EmptyAdapter();\n * ```\n */\nimport {\n CopilotServiceAdapter,\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\nexport class EmptyAdapter implements CopilotServiceAdapter {\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n return {\n threadId: request.threadId || randomUUID(),\n };\n }\n public get name() {\n return \"EmptyAdapter\";\n }\n}\n\nexport const ExperimentalEmptyAdapter = EmptyAdapter;\n"],"mappings":";;;;AAwBA,IAAa,eAAb,MAA2D;CACzD,MAAM,QACJ,SAC+C;AAC/C,SAAO,EACL,UAAU,QAAQ,YAAY,YAAY,EAC3C;;CAEH,IAAW,OAAO;AAChB,SAAO;;;AAIX,MAAa,2BAA2B"}
1
+ {"version":3,"file":"empty-adapter.mjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/empty/empty-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — EmptyAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * @copilotkit/runtime — ExperimentalEmptyAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * CopilotKit Empty Adapter\n *\n * This adapter is meant to preserve adherence to runtime requirements, while doing nothing\n * Ideal if you don't want to connect an LLM the to the runtime, and only use your LangGraph agent.\n * Be aware that Copilot Suggestions will not work if you use this adapter\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, EmptyAdapter } from \"@copilotkit/runtime\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * return new EmptyAdapter();\n * ```\n */\nimport type {\n CopilotServiceAdapter,\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\nexport class EmptyAdapter implements CopilotServiceAdapter {\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n return {\n threadId: request.threadId || randomUUID(),\n };\n }\n public get name() {\n return \"EmptyAdapter\";\n }\n}\n\nexport const ExperimentalEmptyAdapter = EmptyAdapter;\n"],"mappings":";;;;AAkDA,IAAa,eAAb,MAA2D;CACzD,MAAM,QACJ,SAC+C;AAC/C,SAAO,EACL,UAAU,QAAQ,YAAY,YAAY,EAC3C;;CAEH,IAAW,OAAO;AAChB,SAAO;;;AAIX,MAAa,2BAA2B"}
@@ -2,7 +2,7 @@ require("reflect-metadata");
2
2
  let _copilotkit_shared = require("@copilotkit/shared");
3
3
  let rxjs = require("rxjs");
4
4
 
5
- //#region src/service-adapters/events.ts
5
+ //#region src/v1-deprecated/service-adapters/events.ts
6
6
  let RuntimeEventTypes = /* @__PURE__ */ function(RuntimeEventTypes) {
7
7
  RuntimeEventTypes["TextMessageStart"] = "TextMessageStart";
8
8
  RuntimeEventTypes["TextMessageContent"] = "TextMessageContent";
@@ -1 +1 @@
1
- {"version":3,"file":"events.cjs","names":[],"sources":["../../src/service-adapters/events.ts"],"sourcesContent":["import {\n Action,\n CopilotKitError,\n CopilotKitErrorCode,\n CopilotKitLowLevelError,\n ensureStructuredError,\n randomId,\n Severity,\n} from \"@copilotkit/shared\";\nimport { plainToInstance } from \"class-transformer\";\nimport {\n catchError,\n concat,\n concatMap,\n EMPTY,\n firstValueFrom,\n from,\n of,\n ReplaySubject,\n scan,\n Subject,\n} from \"rxjs\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\nimport {\n ActionExecutionMessage,\n ResultMessage,\n TextMessage,\n} from \"../graphql/types/converted\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport { generateHelpfulErrorMessage } from \"../lib/streaming\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n MetaEvent = \"MetaEvent\",\n RunError = \"RunError\",\n}\n\nexport enum RuntimeMetaEventName {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n LangGraphInterruptResumeEvent = \"LangGraphInterruptResumeEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport type RunTimeMetaEvent =\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptEvent;\n value: string;\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.CopilotKitLangGraphInterruptEvent;\n data: {\n value: string;\n messages: (TextMessage | ActionExecutionMessage | ResultMessage)[];\n };\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptResumeEvent;\n data: string;\n };\n\nexport type RuntimeErrorEvent = {\n type: RuntimeEventTypes.RunError;\n message: string;\n code?: string;\n};\n\nexport type RuntimeEvent =\n | {\n type: RuntimeEventTypes.TextMessageStart;\n messageId: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n messageId: string;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd; messageId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.ActionExecutionArgs;\n actionExecutionId: string;\n args: string;\n }\n | { type: RuntimeEventTypes.ActionExecutionEnd; actionExecutionId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }\n | RunTimeMetaEvent\n | RuntimeErrorEvent;\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n actionExecutionParentMessageId: string | null;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n constructor() {\n super();\n }\n\n sendTextMessageStart({\n messageId,\n parentMessageId,\n }: {\n messageId: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageStart,\n messageId,\n parentMessageId,\n });\n }\n\n sendTextMessageContent({\n messageId,\n content,\n }: {\n messageId: string;\n content: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n messageId,\n });\n }\n\n sendTextMessageEnd({ messageId }: { messageId: string }) {\n this.next({ type: RuntimeEventTypes.TextMessageEnd, messageId });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart({ messageId });\n this.sendTextMessageContent({ messageId, content });\n this.sendTextMessageEnd({ messageId });\n }\n\n sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n }\n\n sendActionExecutionArgs({\n actionExecutionId,\n args,\n }: {\n actionExecutionId: string;\n args: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n actionExecutionId,\n });\n }\n\n sendActionExecutionEnd({ actionExecutionId }: { actionExecutionId: string }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionEnd,\n actionExecutionId,\n });\n }\n\n sendActionExecution({\n actionExecutionId,\n actionName,\n args,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n args: string;\n parentMessageId?: string;\n }) {\n this.sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n this.sendActionExecutionArgs({ actionExecutionId, args });\n this.sendActionExecutionEnd({ actionExecutionId });\n }\n\n sendActionExecutionResult({\n actionExecutionId,\n actionName,\n result,\n error,\n }: {\n actionExecutionId: string;\n actionName: string;\n result?: string;\n error?: { code: string; message: string };\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result: ResultMessage.encodeResult(result, error),\n });\n }\n\n sendAgentStateMessage({\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n }: {\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n private errorHandler?: (error: any, context: any) => Promise<void>;\n private errorContext?: any;\n\n constructor(params?: {\n errorHandler?: (error: any, context: any) => Promise<void>;\n errorContext?: any;\n }) {\n this.errorHandler = params?.errorHandler;\n this.errorContext = params?.errorContext;\n }\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n}\n\nfunction convertStreamingErrorToStructured(error: any): CopilotKitError {\n // Determine a more helpful error message based on context\n let helpfulMessage = generateHelpfulErrorMessage(\n error,\n \"event streaming connection\",\n );\n\n // For network-related errors, use CopilotKitLowLevelError to preserve the original error\n if (\n error?.message?.includes(\"fetch failed\") ||\n error?.message?.includes(\"ECONNREFUSED\") ||\n error?.message?.includes(\"ENOTFOUND\") ||\n error?.message?.includes(\"ETIMEDOUT\") ||\n error?.message?.includes(\"terminated\") ||\n error?.cause?.code === \"UND_ERR_SOCKET\" ||\n error?.message?.includes(\"other side closed\") ||\n error?.code === \"UND_ERR_SOCKET\"\n ) {\n return new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(String(error)),\n url: \"event streaming connection\",\n message: helpfulMessage,\n });\n }\n\n // For all other errors, preserve the raw error in a basic CopilotKitError\n return new CopilotKitError({\n message: helpfulMessage,\n code: CopilotKitErrorCode.UNKNOWN,\n severity: Severity.CRITICAL,\n });\n}\n"],"mappings":";;;;;AAiCA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,IAAY,sEAAL;AACL;AACA;AACA"}
1
+ {"version":3,"file":"events.cjs","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"sourcesContent":["import {\n Action,\n CopilotKitError,\n CopilotKitErrorCode,\n CopilotKitLowLevelError,\n ensureStructuredError,\n randomId,\n Severity,\n} from \"@copilotkit/shared\";\nimport { plainToInstance } from \"class-transformer\";\nimport {\n catchError,\n concat,\n concatMap,\n EMPTY,\n firstValueFrom,\n from,\n of,\n ReplaySubject,\n scan,\n Subject,\n} from \"rxjs\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\nimport {\n ActionExecutionMessage,\n ResultMessage,\n TextMessage,\n} from \"../graphql/types/converted\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport { generateHelpfulErrorMessage } from \"../lib/streaming\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n MetaEvent = \"MetaEvent\",\n RunError = \"RunError\",\n}\n\nexport enum RuntimeMetaEventName {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n LangGraphInterruptResumeEvent = \"LangGraphInterruptResumeEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport type RunTimeMetaEvent =\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptEvent;\n value: string;\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.CopilotKitLangGraphInterruptEvent;\n data: {\n value: string;\n messages: (TextMessage | ActionExecutionMessage | ResultMessage)[];\n };\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptResumeEvent;\n data: string;\n };\n\nexport type RuntimeErrorEvent = {\n type: RuntimeEventTypes.RunError;\n message: string;\n code?: string;\n};\n\nexport type RuntimeEvent =\n | {\n type: RuntimeEventTypes.TextMessageStart;\n messageId: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n messageId: string;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd; messageId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.ActionExecutionArgs;\n actionExecutionId: string;\n args: string;\n }\n | { type: RuntimeEventTypes.ActionExecutionEnd; actionExecutionId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }\n | RunTimeMetaEvent\n | RuntimeErrorEvent;\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n actionExecutionParentMessageId: string | null;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n constructor() {\n super();\n }\n\n sendTextMessageStart({\n messageId,\n parentMessageId,\n }: {\n messageId: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageStart,\n messageId,\n parentMessageId,\n });\n }\n\n sendTextMessageContent({\n messageId,\n content,\n }: {\n messageId: string;\n content: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n messageId,\n });\n }\n\n sendTextMessageEnd({ messageId }: { messageId: string }) {\n this.next({ type: RuntimeEventTypes.TextMessageEnd, messageId });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart({ messageId });\n this.sendTextMessageContent({ messageId, content });\n this.sendTextMessageEnd({ messageId });\n }\n\n sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n }\n\n sendActionExecutionArgs({\n actionExecutionId,\n args,\n }: {\n actionExecutionId: string;\n args: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n actionExecutionId,\n });\n }\n\n sendActionExecutionEnd({ actionExecutionId }: { actionExecutionId: string }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionEnd,\n actionExecutionId,\n });\n }\n\n sendActionExecution({\n actionExecutionId,\n actionName,\n args,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n args: string;\n parentMessageId?: string;\n }) {\n this.sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n this.sendActionExecutionArgs({ actionExecutionId, args });\n this.sendActionExecutionEnd({ actionExecutionId });\n }\n\n sendActionExecutionResult({\n actionExecutionId,\n actionName,\n result,\n error,\n }: {\n actionExecutionId: string;\n actionName: string;\n result?: string;\n error?: { code: string; message: string };\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result: ResultMessage.encodeResult(result, error),\n });\n }\n\n sendAgentStateMessage({\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n }: {\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n private errorHandler?: (error: any, context: any) => Promise<void>;\n private errorContext?: any;\n\n constructor(params?: {\n errorHandler?: (error: any, context: any) => Promise<void>;\n errorContext?: any;\n }) {\n this.errorHandler = params?.errorHandler;\n this.errorContext = params?.errorContext;\n }\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n}\n\nfunction convertStreamingErrorToStructured(error: any): CopilotKitError {\n // Determine a more helpful error message based on context\n let helpfulMessage = generateHelpfulErrorMessage(\n error,\n \"event streaming connection\",\n );\n\n // For network-related errors, use CopilotKitLowLevelError to preserve the original error\n if (\n error?.message?.includes(\"fetch failed\") ||\n error?.message?.includes(\"ECONNREFUSED\") ||\n error?.message?.includes(\"ENOTFOUND\") ||\n error?.message?.includes(\"ETIMEDOUT\") ||\n error?.message?.includes(\"terminated\") ||\n error?.cause?.code === \"UND_ERR_SOCKET\" ||\n error?.message?.includes(\"other side closed\") ||\n error?.code === \"UND_ERR_SOCKET\"\n ) {\n return new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(String(error)),\n url: \"event streaming connection\",\n message: helpfulMessage,\n });\n }\n\n // For all other errors, preserve the raw error in a basic CopilotKitError\n return new CopilotKitError({\n message: helpfulMessage,\n code: CopilotKitErrorCode.UNKNOWN,\n severity: Severity.CRITICAL,\n });\n}\n"],"mappings":";;;;;AAiCA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,IAAY,sEAAL;AACL;AACA;AACA"}
@@ -2,7 +2,7 @@
2
2
  import { ActionExecutionMessage, ResultMessage, TextMessage } from "../graphql/types/converted/index.cjs";
3
3
  import { ReplaySubject } from "rxjs";
4
4
 
5
- //#region src/service-adapters/events.d.ts
5
+ //#region src/v1-deprecated/service-adapters/events.d.ts
6
6
  declare enum RuntimeEventTypes {
7
7
  TextMessageStart = "TextMessageStart",
8
8
  TextMessageContent = "TextMessageContent",
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.cts","names":[],"sources":["../../src/service-adapters/events.ts"],"mappings":"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"}
1
+ {"version":3,"file":"events.d.cts","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  import { ActionExecutionMessage, ResultMessage, TextMessage } from "../graphql/types/converted/index.mjs";
3
3
  import { ReplaySubject } from "rxjs";
4
4
 
5
- //#region src/service-adapters/events.d.ts
5
+ //#region src/v1-deprecated/service-adapters/events.d.ts
6
6
  declare enum RuntimeEventTypes {
7
7
  TextMessageStart = "TextMessageStart",
8
8
  TextMessageContent = "TextMessageContent",
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.mts","names":[],"sources":["../../src/service-adapters/events.ts"],"mappings":"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"}
1
+ {"version":3,"file":"events.d.mts","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"mappings":"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"}
@@ -2,7 +2,7 @@ import "reflect-metadata";
2
2
  import { CopilotKitError, CopilotKitErrorCode, CopilotKitLowLevelError } from "@copilotkit/shared";
3
3
  import { ReplaySubject } from "rxjs";
4
4
 
5
- //#region src/service-adapters/events.ts
5
+ //#region src/v1-deprecated/service-adapters/events.ts
6
6
  let RuntimeEventTypes = /* @__PURE__ */ function(RuntimeEventTypes) {
7
7
  RuntimeEventTypes["TextMessageStart"] = "TextMessageStart";
8
8
  RuntimeEventTypes["TextMessageContent"] = "TextMessageContent";
@@ -1 +1 @@
1
- {"version":3,"file":"events.mjs","names":[],"sources":["../../src/service-adapters/events.ts"],"sourcesContent":["import {\n Action,\n CopilotKitError,\n CopilotKitErrorCode,\n CopilotKitLowLevelError,\n ensureStructuredError,\n randomId,\n Severity,\n} from \"@copilotkit/shared\";\nimport { plainToInstance } from \"class-transformer\";\nimport {\n catchError,\n concat,\n concatMap,\n EMPTY,\n firstValueFrom,\n from,\n of,\n ReplaySubject,\n scan,\n Subject,\n} from \"rxjs\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\nimport {\n ActionExecutionMessage,\n ResultMessage,\n TextMessage,\n} from \"../graphql/types/converted\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport { generateHelpfulErrorMessage } from \"../lib/streaming\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n MetaEvent = \"MetaEvent\",\n RunError = \"RunError\",\n}\n\nexport enum RuntimeMetaEventName {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n LangGraphInterruptResumeEvent = \"LangGraphInterruptResumeEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport type RunTimeMetaEvent =\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptEvent;\n value: string;\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.CopilotKitLangGraphInterruptEvent;\n data: {\n value: string;\n messages: (TextMessage | ActionExecutionMessage | ResultMessage)[];\n };\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptResumeEvent;\n data: string;\n };\n\nexport type RuntimeErrorEvent = {\n type: RuntimeEventTypes.RunError;\n message: string;\n code?: string;\n};\n\nexport type RuntimeEvent =\n | {\n type: RuntimeEventTypes.TextMessageStart;\n messageId: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n messageId: string;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd; messageId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.ActionExecutionArgs;\n actionExecutionId: string;\n args: string;\n }\n | { type: RuntimeEventTypes.ActionExecutionEnd; actionExecutionId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }\n | RunTimeMetaEvent\n | RuntimeErrorEvent;\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n actionExecutionParentMessageId: string | null;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n constructor() {\n super();\n }\n\n sendTextMessageStart({\n messageId,\n parentMessageId,\n }: {\n messageId: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageStart,\n messageId,\n parentMessageId,\n });\n }\n\n sendTextMessageContent({\n messageId,\n content,\n }: {\n messageId: string;\n content: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n messageId,\n });\n }\n\n sendTextMessageEnd({ messageId }: { messageId: string }) {\n this.next({ type: RuntimeEventTypes.TextMessageEnd, messageId });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart({ messageId });\n this.sendTextMessageContent({ messageId, content });\n this.sendTextMessageEnd({ messageId });\n }\n\n sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n }\n\n sendActionExecutionArgs({\n actionExecutionId,\n args,\n }: {\n actionExecutionId: string;\n args: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n actionExecutionId,\n });\n }\n\n sendActionExecutionEnd({ actionExecutionId }: { actionExecutionId: string }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionEnd,\n actionExecutionId,\n });\n }\n\n sendActionExecution({\n actionExecutionId,\n actionName,\n args,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n args: string;\n parentMessageId?: string;\n }) {\n this.sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n this.sendActionExecutionArgs({ actionExecutionId, args });\n this.sendActionExecutionEnd({ actionExecutionId });\n }\n\n sendActionExecutionResult({\n actionExecutionId,\n actionName,\n result,\n error,\n }: {\n actionExecutionId: string;\n actionName: string;\n result?: string;\n error?: { code: string; message: string };\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result: ResultMessage.encodeResult(result, error),\n });\n }\n\n sendAgentStateMessage({\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n }: {\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n private errorHandler?: (error: any, context: any) => Promise<void>;\n private errorContext?: any;\n\n constructor(params?: {\n errorHandler?: (error: any, context: any) => Promise<void>;\n errorContext?: any;\n }) {\n this.errorHandler = params?.errorHandler;\n this.errorContext = params?.errorContext;\n }\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n}\n\nfunction convertStreamingErrorToStructured(error: any): CopilotKitError {\n // Determine a more helpful error message based on context\n let helpfulMessage = generateHelpfulErrorMessage(\n error,\n \"event streaming connection\",\n );\n\n // For network-related errors, use CopilotKitLowLevelError to preserve the original error\n if (\n error?.message?.includes(\"fetch failed\") ||\n error?.message?.includes(\"ECONNREFUSED\") ||\n error?.message?.includes(\"ENOTFOUND\") ||\n error?.message?.includes(\"ETIMEDOUT\") ||\n error?.message?.includes(\"terminated\") ||\n error?.cause?.code === \"UND_ERR_SOCKET\" ||\n error?.message?.includes(\"other side closed\") ||\n error?.code === \"UND_ERR_SOCKET\"\n ) {\n return new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(String(error)),\n url: \"event streaming connection\",\n message: helpfulMessage,\n });\n }\n\n // For all other errors, preserve the raw error in a basic CopilotKitError\n return new CopilotKitError({\n message: helpfulMessage,\n code: CopilotKitErrorCode.UNKNOWN,\n severity: Severity.CRITICAL,\n });\n}\n"],"mappings":";;;;;AAiCA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,IAAY,sEAAL;AACL;AACA;AACA"}
1
+ {"version":3,"file":"events.mjs","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"sourcesContent":["import {\n Action,\n CopilotKitError,\n CopilotKitErrorCode,\n CopilotKitLowLevelError,\n ensureStructuredError,\n randomId,\n Severity,\n} from \"@copilotkit/shared\";\nimport { plainToInstance } from \"class-transformer\";\nimport {\n catchError,\n concat,\n concatMap,\n EMPTY,\n firstValueFrom,\n from,\n of,\n ReplaySubject,\n scan,\n Subject,\n} from \"rxjs\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\nimport {\n ActionExecutionMessage,\n ResultMessage,\n TextMessage,\n} from \"../graphql/types/converted\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport { generateHelpfulErrorMessage } from \"../lib/streaming\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n MetaEvent = \"MetaEvent\",\n RunError = \"RunError\",\n}\n\nexport enum RuntimeMetaEventName {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n LangGraphInterruptResumeEvent = \"LangGraphInterruptResumeEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport type RunTimeMetaEvent =\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptEvent;\n value: string;\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.CopilotKitLangGraphInterruptEvent;\n data: {\n value: string;\n messages: (TextMessage | ActionExecutionMessage | ResultMessage)[];\n };\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptResumeEvent;\n data: string;\n };\n\nexport type RuntimeErrorEvent = {\n type: RuntimeEventTypes.RunError;\n message: string;\n code?: string;\n};\n\nexport type RuntimeEvent =\n | {\n type: RuntimeEventTypes.TextMessageStart;\n messageId: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n messageId: string;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd; messageId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.ActionExecutionArgs;\n actionExecutionId: string;\n args: string;\n }\n | { type: RuntimeEventTypes.ActionExecutionEnd; actionExecutionId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }\n | RunTimeMetaEvent\n | RuntimeErrorEvent;\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n actionExecutionParentMessageId: string | null;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n constructor() {\n super();\n }\n\n sendTextMessageStart({\n messageId,\n parentMessageId,\n }: {\n messageId: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageStart,\n messageId,\n parentMessageId,\n });\n }\n\n sendTextMessageContent({\n messageId,\n content,\n }: {\n messageId: string;\n content: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n messageId,\n });\n }\n\n sendTextMessageEnd({ messageId }: { messageId: string }) {\n this.next({ type: RuntimeEventTypes.TextMessageEnd, messageId });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart({ messageId });\n this.sendTextMessageContent({ messageId, content });\n this.sendTextMessageEnd({ messageId });\n }\n\n sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n }\n\n sendActionExecutionArgs({\n actionExecutionId,\n args,\n }: {\n actionExecutionId: string;\n args: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n actionExecutionId,\n });\n }\n\n sendActionExecutionEnd({ actionExecutionId }: { actionExecutionId: string }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionEnd,\n actionExecutionId,\n });\n }\n\n sendActionExecution({\n actionExecutionId,\n actionName,\n args,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n args: string;\n parentMessageId?: string;\n }) {\n this.sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n this.sendActionExecutionArgs({ actionExecutionId, args });\n this.sendActionExecutionEnd({ actionExecutionId });\n }\n\n sendActionExecutionResult({\n actionExecutionId,\n actionName,\n result,\n error,\n }: {\n actionExecutionId: string;\n actionName: string;\n result?: string;\n error?: { code: string; message: string };\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result: ResultMessage.encodeResult(result, error),\n });\n }\n\n sendAgentStateMessage({\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n }: {\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n private errorHandler?: (error: any, context: any) => Promise<void>;\n private errorContext?: any;\n\n constructor(params?: {\n errorHandler?: (error: any, context: any) => Promise<void>;\n errorContext?: any;\n }) {\n this.errorHandler = params?.errorHandler;\n this.errorContext = params?.errorContext;\n }\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n}\n\nfunction convertStreamingErrorToStructured(error: any): CopilotKitError {\n // Determine a more helpful error message based on context\n let helpfulMessage = generateHelpfulErrorMessage(\n error,\n \"event streaming connection\",\n );\n\n // For network-related errors, use CopilotKitLowLevelError to preserve the original error\n if (\n error?.message?.includes(\"fetch failed\") ||\n error?.message?.includes(\"ECONNREFUSED\") ||\n error?.message?.includes(\"ENOTFOUND\") ||\n error?.message?.includes(\"ETIMEDOUT\") ||\n error?.message?.includes(\"terminated\") ||\n error?.cause?.code === \"UND_ERR_SOCKET\" ||\n error?.message?.includes(\"other side closed\") ||\n error?.code === \"UND_ERR_SOCKET\"\n ) {\n return new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(String(error)),\n url: \"event streaming connection\",\n message: helpfulMessage,\n });\n }\n\n // For all other errors, preserve the raw error in a basic CopilotKitError\n return new CopilotKitError({\n message: helpfulMessage,\n code: CopilotKitErrorCode.UNKNOWN,\n severity: Severity.CRITICAL,\n });\n}\n"],"mappings":";;;;;AAiCA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,IAAY,sEAAL;AACL;AACA;AACA"}