@copilotkit/runtime 1.50.0-beta.2 → 1.50.0-beta.4

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 (252) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/chunk-27JKTS6P.mjs +1704 -0
  3. package/dist/chunk-27JKTS6P.mjs.map +1 -0
  4. package/dist/chunk-2GPTVDTO.mjs +25 -0
  5. package/dist/chunk-2GPTVDTO.mjs.map +1 -0
  6. package/dist/chunk-2OZAGFV3.mjs +43 -0
  7. package/dist/chunk-2OZAGFV3.mjs.map +1 -0
  8. package/dist/chunk-3AJVKDZX.mjs +3097 -0
  9. package/dist/chunk-3AJVKDZX.mjs.map +1 -0
  10. package/dist/chunk-45RCC3ZS.mjs +25 -0
  11. package/dist/chunk-45RCC3ZS.mjs.map +1 -0
  12. package/dist/chunk-4EHJ4XFJ.mjs +25 -0
  13. package/dist/chunk-4EHJ4XFJ.mjs.map +1 -0
  14. package/dist/chunk-4IANB4TC.mjs +25 -0
  15. package/dist/chunk-4IANB4TC.mjs.map +1 -0
  16. package/dist/chunk-4KES76K3.mjs +74 -0
  17. package/dist/chunk-4KES76K3.mjs.map +1 -0
  18. package/dist/chunk-4OGE3SLW.mjs +3100 -0
  19. package/dist/chunk-4OGE3SLW.mjs.map +1 -0
  20. package/dist/chunk-54YJBMCP.mjs +3097 -0
  21. package/dist/chunk-54YJBMCP.mjs.map +1 -0
  22. package/dist/chunk-62NE5S6M.mjs +226 -0
  23. package/dist/chunk-62NE5S6M.mjs.map +1 -0
  24. package/dist/chunk-6ER4SZYH.mjs +74 -0
  25. package/dist/chunk-6ER4SZYH.mjs.map +1 -0
  26. package/dist/chunk-6TNSLHVR.mjs +74 -0
  27. package/dist/chunk-6TNSLHVR.mjs.map +1 -0
  28. package/dist/chunk-6XRUR5UK.mjs +1 -0
  29. package/dist/chunk-6XRUR5UK.mjs.map +1 -0
  30. package/dist/chunk-7V4BK7TZ.mjs +25 -0
  31. package/dist/chunk-7V4BK7TZ.mjs.map +1 -0
  32. package/dist/chunk-7YZIEXD2.mjs +74 -0
  33. package/dist/chunk-7YZIEXD2.mjs.map +1 -0
  34. package/dist/chunk-A4XHOAFU.mjs +25 -0
  35. package/dist/chunk-A4XHOAFU.mjs.map +1 -0
  36. package/dist/chunk-A555KEAD.mjs +6020 -0
  37. package/dist/chunk-A555KEAD.mjs.map +1 -0
  38. package/dist/chunk-AF73TFTX.mjs +74 -0
  39. package/dist/chunk-AF73TFTX.mjs.map +1 -0
  40. package/dist/chunk-AMUJQ6IR.mjs +50 -0
  41. package/dist/chunk-AMUJQ6IR.mjs.map +1 -0
  42. package/dist/chunk-AQG2SVCA.mjs +25 -0
  43. package/dist/chunk-AQG2SVCA.mjs.map +1 -0
  44. package/dist/chunk-BJZHMXND.mjs +74 -0
  45. package/dist/chunk-BJZHMXND.mjs.map +1 -0
  46. package/dist/chunk-CB2OJXF6.mjs +25 -0
  47. package/dist/chunk-CB2OJXF6.mjs.map +1 -0
  48. package/dist/chunk-CEOMFPJU.mjs +6020 -0
  49. package/dist/chunk-CEOMFPJU.mjs.map +1 -0
  50. package/dist/chunk-CZVLR7CC.mjs +175 -0
  51. package/dist/chunk-CZVLR7CC.mjs.map +1 -0
  52. package/dist/chunk-DCEEHMLJ.mjs +1127 -0
  53. package/dist/chunk-DCEEHMLJ.mjs.map +1 -0
  54. package/dist/chunk-DE3CLKUG.mjs +25 -0
  55. package/dist/chunk-DE3CLKUG.mjs.map +1 -0
  56. package/dist/chunk-DTPRUTNV.mjs +25 -0
  57. package/dist/chunk-DTPRUTNV.mjs.map +1 -0
  58. package/dist/chunk-ERUOA47O.mjs +626 -0
  59. package/dist/chunk-ERUOA47O.mjs.map +1 -0
  60. package/dist/chunk-ESSRC64W.mjs +74 -0
  61. package/dist/chunk-ESSRC64W.mjs.map +1 -0
  62. package/dist/chunk-FHD4JECV.mjs +33 -0
  63. package/dist/chunk-FHD4JECV.mjs.map +1 -0
  64. package/dist/chunk-GRAN6K6N.mjs +25 -0
  65. package/dist/chunk-GRAN6K6N.mjs.map +1 -0
  66. package/dist/chunk-I27F2UPA.mjs +175 -0
  67. package/dist/chunk-I27F2UPA.mjs.map +1 -0
  68. package/dist/chunk-IAZKTOQW.mjs +25 -0
  69. package/dist/chunk-IAZKTOQW.mjs.map +1 -0
  70. package/dist/chunk-J6XZ5MFB.mjs +25 -0
  71. package/dist/chunk-J6XZ5MFB.mjs.map +1 -0
  72. package/dist/chunk-JJ32MA4C.mjs +73 -0
  73. package/dist/chunk-JJ32MA4C.mjs.map +1 -0
  74. package/dist/chunk-JJY4ZTHQ.mjs +25 -0
  75. package/dist/chunk-JJY4ZTHQ.mjs.map +1 -0
  76. package/dist/chunk-KEYLBFU2.mjs +3117 -0
  77. package/dist/chunk-KEYLBFU2.mjs.map +1 -0
  78. package/dist/chunk-KQ53L4WZ.mjs +3094 -0
  79. package/dist/chunk-KQ53L4WZ.mjs.map +1 -0
  80. package/dist/chunk-KTELVQ67.mjs +3098 -0
  81. package/dist/chunk-KTELVQ67.mjs.map +1 -0
  82. package/dist/chunk-LPEPX6NH.mjs +25 -0
  83. package/dist/chunk-LPEPX6NH.mjs.map +1 -0
  84. package/dist/chunk-MDXE55DK.mjs +3117 -0
  85. package/dist/chunk-MDXE55DK.mjs.map +1 -0
  86. package/dist/chunk-MMFUVOXH.mjs +73 -0
  87. package/dist/chunk-MMFUVOXH.mjs.map +1 -0
  88. package/dist/chunk-N3Y4U66N.mjs +253 -0
  89. package/dist/chunk-N3Y4U66N.mjs.map +1 -0
  90. package/dist/chunk-O7UYB4MH.mjs +25 -0
  91. package/dist/chunk-O7UYB4MH.mjs.map +1 -0
  92. package/dist/chunk-OFNVQHNM.mjs +3089 -0
  93. package/dist/chunk-OFNVQHNM.mjs.map +1 -0
  94. package/dist/chunk-OFSV5GET.mjs +3074 -0
  95. package/dist/chunk-OFSV5GET.mjs.map +1 -0
  96. package/dist/chunk-OMRST67R.mjs +25 -0
  97. package/dist/chunk-OMRST67R.mjs.map +1 -0
  98. package/dist/chunk-OWIGJONH.mjs +275 -0
  99. package/dist/chunk-OWIGJONH.mjs.map +1 -0
  100. package/dist/chunk-PRZHE74A.mjs +25 -0
  101. package/dist/chunk-PRZHE74A.mjs.map +1 -0
  102. package/dist/chunk-PTYRVXXP.mjs +80 -0
  103. package/dist/chunk-PTYRVXXP.mjs.map +1 -0
  104. package/dist/chunk-R22B5CCO.mjs +25 -0
  105. package/dist/chunk-R22B5CCO.mjs.map +1 -0
  106. package/dist/chunk-SHBDMA63.mjs +141 -0
  107. package/dist/chunk-SHBDMA63.mjs.map +1 -0
  108. package/dist/chunk-SPVXBPRA.mjs +74 -0
  109. package/dist/chunk-SPVXBPRA.mjs.map +1 -0
  110. package/dist/chunk-T72G46ME.mjs +25 -0
  111. package/dist/chunk-T72G46ME.mjs.map +1 -0
  112. package/dist/chunk-TGELROPU.mjs +25 -0
  113. package/dist/chunk-TGELROPU.mjs.map +1 -0
  114. package/dist/chunk-UNX4IAAD.mjs +25 -0
  115. package/dist/chunk-UNX4IAAD.mjs.map +1 -0
  116. package/dist/chunk-V4DHVC7M.mjs +3085 -0
  117. package/dist/chunk-V4DHVC7M.mjs.map +1 -0
  118. package/dist/chunk-VVRFOB66.mjs +25 -0
  119. package/dist/chunk-VVRFOB66.mjs.map +1 -0
  120. package/dist/chunk-W6NVBYM6.mjs +80 -0
  121. package/dist/chunk-W6NVBYM6.mjs.map +1 -0
  122. package/dist/chunk-W7MBACGC.mjs +74 -0
  123. package/dist/chunk-W7MBACGC.mjs.map +1 -0
  124. package/dist/chunk-WMD4XZZS.mjs +25 -0
  125. package/dist/chunk-WMD4XZZS.mjs.map +1 -0
  126. package/dist/chunk-WX2ZNCRT.mjs +74 -0
  127. package/dist/chunk-WX2ZNCRT.mjs.map +1 -0
  128. package/dist/chunk-XWBDEXDA.mjs +153 -0
  129. package/dist/chunk-XWBDEXDA.mjs.map +1 -0
  130. package/dist/chunk-Y2Z62E2T.mjs +74 -0
  131. package/dist/chunk-Y2Z62E2T.mjs.map +1 -0
  132. package/dist/chunk-YO4I6RVI.mjs +25 -0
  133. package/dist/chunk-YO4I6RVI.mjs.map +1 -0
  134. package/dist/chunk-Z6Q5IW6I.mjs +3098 -0
  135. package/dist/chunk-Z6Q5IW6I.mjs.map +1 -0
  136. package/dist/chunk-Z726O3G2.mjs +25 -0
  137. package/dist/chunk-Z726O3G2.mjs.map +1 -0
  138. package/dist/chunk-ZE4SMZZR.mjs +3097 -0
  139. package/dist/chunk-ZE4SMZZR.mjs.map +1 -0
  140. package/dist/chunk-ZULZB33C.mjs +73 -0
  141. package/dist/chunk-ZULZB33C.mjs.map +1 -0
  142. package/dist/chunk-ZVRGXMY7.mjs +25 -0
  143. package/dist/chunk-ZVRGXMY7.mjs.map +1 -0
  144. package/dist/chunk-ZZ35WBYQ.mjs +25 -0
  145. package/dist/chunk-ZZ35WBYQ.mjs.map +1 -0
  146. package/dist/graphql/message-conversion/index.d.ts +18 -0
  147. package/dist/graphql/message-conversion/index.js +725 -0
  148. package/dist/graphql/message-conversion/index.js.map +1 -0
  149. package/dist/graphql/message-conversion/index.mjs +245 -0
  150. package/dist/graphql/message-conversion/index.mjs.map +1 -0
  151. package/dist/graphql/types/base/index.d.ts +6 -0
  152. package/dist/graphql/types/base/index.js +63 -0
  153. package/dist/graphql/types/base/index.js.map +1 -0
  154. package/dist/graphql/types/base/index.mjs +8 -0
  155. package/dist/graphql/types/base/index.mjs.map +1 -0
  156. package/dist/graphql/types/converted/index.d.ts +2 -0
  157. package/dist/graphql/types/converted/index.js +200 -0
  158. package/dist/graphql/types/converted/index.js.map +1 -0
  159. package/dist/graphql/types/converted/index.mjs +19 -0
  160. package/dist/graphql/types/converted/index.mjs.map +1 -0
  161. package/dist/groq-adapter-540da9c3.d.ts +331 -0
  162. package/dist/groq-adapter-a6f5e9d2.d.ts +331 -0
  163. package/dist/groq-adapter-c8aec5c5.d.ts +321 -0
  164. package/dist/index-96b330da.d.ts +119 -0
  165. package/dist/index-adbd78f1.d.ts +154 -0
  166. package/dist/index.d.ts +71 -281
  167. package/dist/index.js +294 -277
  168. package/dist/index.js.map +1 -1
  169. package/dist/index.mjs +287 -266
  170. package/dist/index.mjs.map +1 -1
  171. package/dist/langgraph.d.ts +284 -0
  172. package/dist/langgraph.js +211 -0
  173. package/dist/langgraph.js.map +1 -0
  174. package/dist/langgraph.mjs +206 -0
  175. package/dist/langgraph.mjs.map +1 -0
  176. package/dist/langserve-0c6100e3.d.ts +257 -0
  177. package/dist/langserve-978d5790.d.ts +243 -0
  178. package/dist/langserve-9fc76ce5.d.ts +243 -0
  179. package/dist/lib/cloud/index.d.ts +6 -0
  180. package/dist/lib/cloud/index.js +18 -0
  181. package/dist/lib/cloud/index.js.map +1 -0
  182. package/dist/lib/cloud/index.mjs +1 -0
  183. package/dist/lib/cloud/index.mjs.map +1 -0
  184. package/dist/lib/index.d.ts +212 -0
  185. package/dist/lib/index.js +7843 -0
  186. package/dist/lib/index.js.map +1 -0
  187. package/dist/lib/index.mjs +76 -0
  188. package/dist/lib/index.mjs.map +1 -0
  189. package/dist/lib/integrations/index.d.ts +34 -0
  190. package/dist/lib/integrations/index.js +3052 -0
  191. package/dist/lib/integrations/index.js.map +1 -0
  192. package/dist/lib/integrations/index.mjs +37 -0
  193. package/dist/lib/integrations/index.mjs.map +1 -0
  194. package/dist/lib/integrations/nest/index.d.ts +15 -0
  195. package/dist/lib/integrations/nest/index.js +2959 -0
  196. package/dist/lib/integrations/nest/index.js.map +1 -0
  197. package/dist/lib/integrations/nest/index.mjs +14 -0
  198. package/dist/lib/integrations/nest/index.mjs.map +1 -0
  199. package/dist/lib/integrations/node-express/index.d.ts +15 -0
  200. package/dist/lib/integrations/node-express/index.js +2959 -0
  201. package/dist/lib/integrations/node-express/index.js.map +1 -0
  202. package/dist/lib/integrations/node-express/index.mjs +14 -0
  203. package/dist/lib/integrations/node-express/index.mjs.map +1 -0
  204. package/dist/lib/integrations/node-http/index.d.ts +15 -0
  205. package/dist/lib/integrations/node-http/index.js +2945 -0
  206. package/dist/lib/integrations/node-http/index.js.map +1 -0
  207. package/dist/lib/integrations/node-http/index.mjs +13 -0
  208. package/dist/lib/integrations/node-http/index.mjs.map +1 -0
  209. package/dist/service-adapters/index.d.ts +162 -0
  210. package/dist/service-adapters/index.js +1787 -0
  211. package/dist/service-adapters/index.js.map +1 -0
  212. package/dist/service-adapters/index.mjs +34 -0
  213. package/dist/service-adapters/index.mjs.map +1 -0
  214. package/dist/service-adapters/shared/index.d.ts +9 -0
  215. package/dist/service-adapters/shared/index.js +72 -0
  216. package/dist/service-adapters/shared/index.js.map +1 -0
  217. package/dist/service-adapters/shared/index.mjs +8 -0
  218. package/dist/service-adapters/shared/index.mjs.map +1 -0
  219. package/dist/shared-0a7346ce.d.ts +466 -0
  220. package/dist/shared-35c6eb04.d.ts +448 -0
  221. package/dist/shared-9ed1dc31.d.ts +414 -0
  222. package/dist/shared-da5708fe.d.ts +449 -0
  223. package/dist/utils/index.d.ts +65 -0
  224. package/dist/utils/index.js +175 -0
  225. package/dist/utils/index.js.map +1 -0
  226. package/dist/utils/index.mjs +12 -0
  227. package/dist/utils/index.mjs.map +1 -0
  228. package/dist/v2/index.d.ts +1 -0
  229. package/dist/v2/index.js +7 -0
  230. package/dist/v2/index.js.map +1 -1
  231. package/dist/v2/index.mjs +1 -0
  232. package/dist/v2/index.mjs.map +1 -1
  233. package/package.json +50 -17
  234. package/src/langgraph.ts +1 -0
  235. package/src/lib/index.ts +41 -1
  236. package/src/lib/integrations/node-http/index.ts +129 -10
  237. package/src/lib/runtime/agent-integrations/{langgraph.agent.ts → langgraph/agent.ts} +5 -30
  238. package/src/lib/runtime/agent-integrations/langgraph/consts.ts +34 -0
  239. package/src/lib/runtime/agent-integrations/langgraph/index.ts +2 -0
  240. package/src/lib/runtime/copilot-runtime.ts +17 -40
  241. package/src/service-adapters/anthropic/anthropic-adapter.ts +16 -3
  242. package/src/service-adapters/bedrock/bedrock-adapter.ts +4 -1
  243. package/src/service-adapters/experimental/ollama/ollama-adapter.ts +2 -1
  244. package/src/service-adapters/google/google-genai-adapter.ts +9 -4
  245. package/src/service-adapters/groq/groq-adapter.ts +16 -3
  246. package/src/service-adapters/langchain/langchain-adapter.ts +5 -3
  247. package/src/service-adapters/langchain/langserve.ts +2 -1
  248. package/src/service-adapters/openai/openai-adapter.ts +17 -3
  249. package/src/service-adapters/openai/openai-assistant-adapter.ts +26 -11
  250. package/src/service-adapters/unify/unify-adapter.ts +3 -1
  251. package/src/v2/index.ts +1 -0
  252. package/tsup.config.ts +5 -2
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/index.ts","../../src/graphql/types/response-status.type.ts","../../src/utils/failed-response-status-reasons.ts"],"sourcesContent":["export * from \"./failed-response-status-reasons\";\n","import { GraphQLJSON } from \"graphql-scalars\";\nimport { Field, InterfaceType, ObjectType, createUnionType, registerEnumType } from \"type-graphql\";\n\nexport enum ResponseStatusCode {\n Pending = \"pending\",\n Success = \"success\",\n Failed = \"failed\",\n}\n\nregisterEnumType(ResponseStatusCode, {\n name: \"ResponseStatusCode\",\n});\n\n@InterfaceType({\n resolveType(value) {\n if (value.code === ResponseStatusCode.Success) {\n return SuccessResponseStatus;\n } else if (value.code === ResponseStatusCode.Failed) {\n return FailedResponseStatus;\n } else if (value.code === ResponseStatusCode.Pending) {\n return PendingResponseStatus;\n }\n return undefined;\n },\n})\n@ObjectType()\nabstract class BaseResponseStatus {\n @Field(() => ResponseStatusCode)\n code: ResponseStatusCode;\n}\n\n@ObjectType({ implements: BaseResponseStatus })\nexport class PendingResponseStatus extends BaseResponseStatus {\n code: ResponseStatusCode = ResponseStatusCode.Pending;\n}\n\n@ObjectType({ implements: BaseResponseStatus })\nexport class SuccessResponseStatus extends BaseResponseStatus {\n code: ResponseStatusCode = ResponseStatusCode.Success;\n}\n\nexport enum FailedResponseStatusReason {\n GUARDRAILS_VALIDATION_FAILED = \"GUARDRAILS_VALIDATION_FAILED\",\n MESSAGE_STREAM_INTERRUPTED = \"MESSAGE_STREAM_INTERRUPTED\",\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n}\n\nregisterEnumType(FailedResponseStatusReason, {\n name: \"FailedResponseStatusReason\",\n});\n\n@ObjectType({ implements: BaseResponseStatus })\nexport class FailedResponseStatus extends BaseResponseStatus {\n code: ResponseStatusCode = ResponseStatusCode.Failed;\n\n @Field(() => FailedResponseStatusReason)\n reason: FailedResponseStatusReason;\n\n @Field(() => GraphQLJSON, { nullable: true })\n details?: Record<string, any> = null;\n}\n\nexport const ResponseStatusUnion = createUnionType({\n name: \"ResponseStatus\",\n types: () => [PendingResponseStatus, SuccessResponseStatus, FailedResponseStatus] as const,\n});\n","import {\n FailedResponseStatus,\n FailedResponseStatusReason,\n} from \"../graphql/types/response-status.type\";\n\nexport class GuardrailsValidationFailureResponse extends FailedResponseStatus {\n reason = FailedResponseStatusReason.GUARDRAILS_VALIDATION_FAILED;\n declare details: {\n guardrailsReason: string;\n };\n\n constructor({ guardrailsReason }) {\n super();\n this.details = {\n guardrailsReason,\n };\n }\n}\n\nexport class MessageStreamInterruptedResponse extends FailedResponseStatus {\n reason = FailedResponseStatusReason.MESSAGE_STREAM_INTERRUPTED;\n declare details: {\n messageId: string;\n description: string;\n };\n\n constructor({ messageId }: { messageId: string }) {\n super();\n this.details = {\n messageId,\n description: \"Check the message for mode details\",\n };\n }\n}\n\nexport class UnknownErrorResponse extends FailedResponseStatus {\n reason = FailedResponseStatusReason.UNKNOWN_ERROR;\n declare details: {\n description?: string;\n originalError?: {\n code?: string;\n statusCode?: number;\n severity?: string;\n visibility?: string;\n originalErrorType?: string;\n extensions?: any;\n };\n };\n\n constructor({\n description,\n originalError,\n }: {\n description?: string;\n originalError?: {\n code?: string;\n statusCode?: number;\n severity?: string;\n visibility?: string;\n originalErrorType?: string;\n extensions?: any;\n };\n }) {\n super();\n this.details = {\n description,\n originalError,\n };\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACAA,6BAA4B;AAC5B,0BAAoF;;;;;;;;;;;;;;;;;;UAExEA,qBAAAA;;;;GAAAA,uBAAAA,qBAAAA,CAAAA,EAAAA;IAMZC,sCAAiBD,oBAAoB;EACnCE,MAAM;AACR,CAAA;AAeA,IAAeC,qBAAf,6BAAeA,oBAAAA;EAEbC;AACF,GAHA;;MACGC,2BAAM,MAAML,kBAAAA;;GADAG,mBAAAA,WAAAA,QAAAA,MAAAA;AAAAA,qBAAAA,aAAAA;MAbdG,mCAAc;IACbC,YAAYC,OAAK;AACf,UAAIA,MAAMJ,SAAI,WAAiC;AAC7C,eAAOK;MACT,WAAWD,MAAMJ,SAAI,UAAgC;AACnD,eAAOM;MACT,WAAWF,MAAMJ,SAAI,WAAiC;AACpD,eAAOO;MACT;AACA,aAAOC;IACT;EACF,CAAA;MACCC,gCAAAA;GACcV,kBAAAA;AAMR,IAAMQ,wBAAN,cAAoCR,mBAAAA;EACzCC,OAAAA;AACF;AAFaO;AAAAA,wBAAAA,aAAAA;MADZE,gCAAW;IAAEC,YAAYX;EAAmB,CAAA;GAChCQ,qBAAAA;AAKN,IAAMF,wBAAN,cAAoCN,mBAAAA;EACzCC,OAAAA;AACF;AAFaK;AAAAA,wBAAAA,aAAAA;MADZI,gCAAW;IAAEC,YAAYX;EAAmB,CAAA;GAChCM,qBAAAA;;UAIDM,6BAAAA;;;;GAAAA,+BAAAA,6BAAAA,CAAAA,EAAAA;IAMZd,sCAAiBc,4BAA4B;EAC3Cb,MAAM;AACR,CAAA;AAGO,IAAMQ,uBAAN,cAAmCP,mBAAAA;EACxCC,OAAAA;EAGAY;EAGAC,UAAgC;AAClC;AARaP;;MAGVL,2BAAM,MAAMU,0BAAAA;;GAHFL,qBAAAA,WAAAA,UAAAA,MAAAA;;MAMVL,2BAAM,MAAMa,oCAAa;IAAEC,UAAU;EAAK,CAAA;qCACjC,WAAA,cAAA,SAAA,MAAA;GAPCT,qBAAAA,WAAAA,WAAAA,MAAAA;AAAAA,uBAAAA,aAAAA;MADZG,gCAAW;IAAEC,YAAYX;EAAmB,CAAA;GAChCO,oBAAAA;AAUN,IAAMU,0BAAsBC,qCAAgB;EACjDnB,MAAM;EACNoB,OAAO,MAAM;IAACX;IAAuBF;IAAuBC;;AAC9D,CAAA;;;AC5DO,IAAMa,sCAAN,cAAkDC,qBAAAA;EACvDC,SAASC,2BAA2BC;EAKpCC,YAAY,EAAEC,iBAAgB,GAAI;AAChC,UAAK;AACL,SAAKC,UAAU;MACbD;IACF;EACF;AACF;AAZaN;AAcN,IAAMQ,mCAAN,cAA+CP,qBAAAA;EACpDC,SAASC,2BAA2BM;EAMpCJ,YAAY,EAAEK,UAAS,GAA2B;AAChD,UAAK;AACL,SAAKH,UAAU;MACbG;MACAC,aAAa;IACf;EACF;AACF;AAdaH;AAgBN,IAAMI,uBAAN,cAAmCX,qBAAAA;EACxCC,SAASC,2BAA2BU;EAapCR,YAAY,EACVM,aACAG,cAAa,GAWZ;AACD,UAAK;AACL,SAAKP,UAAU;MACbI;MACAG;IACF;EACF;AACF;AAlCaF;","names":["ResponseStatusCode","registerEnumType","name","BaseResponseStatus","code","Field","InterfaceType","resolveType","value","SuccessResponseStatus","FailedResponseStatus","PendingResponseStatus","undefined","ObjectType","implements","FailedResponseStatusReason","reason","details","GraphQLJSON","nullable","ResponseStatusUnion","createUnionType","types","GuardrailsValidationFailureResponse","FailedResponseStatus","reason","FailedResponseStatusReason","GUARDRAILS_VALIDATION_FAILED","constructor","guardrailsReason","details","MessageStreamInterruptedResponse","MESSAGE_STREAM_INTERRUPTED","messageId","description","UnknownErrorResponse","UNKNOWN_ERROR","originalError"]}
@@ -0,0 +1,12 @@
1
+ import {
2
+ GuardrailsValidationFailureResponse,
3
+ MessageStreamInterruptedResponse,
4
+ UnknownErrorResponse
5
+ } from "../chunk-XWBDEXDA.mjs";
6
+ import "../chunk-FHD4JECV.mjs";
7
+ export {
8
+ GuardrailsValidationFailureResponse,
9
+ MessageStreamInterruptedResponse,
10
+ UnknownErrorResponse
11
+ };
12
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1 +1,2 @@
1
1
  export * from '@copilotkitnext/runtime';
2
+ export * from '@copilotkitnext/agent';
package/dist/v2/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require('reflect-metadata');
4
4
  var runtime = require('@copilotkitnext/runtime');
5
+ var agent = require('@copilotkitnext/agent');
5
6
 
6
7
 
7
8
 
@@ -11,5 +12,11 @@ Object.keys(runtime).forEach(function (k) {
11
12
  get: function () { return runtime[k]; }
12
13
  });
13
14
  });
15
+ Object.keys(agent).forEach(function (k) {
16
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
17
+ enumerable: true,
18
+ get: function () { return agent[k]; }
19
+ });
20
+ });
14
21
  //# sourceMappingURL=out.js.map
15
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/v2/index.ts"],"names":[],"mappings":";AAAA,OAAO;AACP,cAAc","sourcesContent":["import \"reflect-metadata\";\nexport * from \"@copilotkitnext/runtime\";\n"]}
1
+ {"version":3,"sources":["../../src/v2/index.ts"],"names":[],"mappings":";AAAA,OAAO;AACP,cAAc;AACd,cAAc","sourcesContent":["import \"reflect-metadata\";\nexport * from \"@copilotkitnext/runtime\";\nexport * from \"@copilotkitnext/agent\";\n"]}
package/dist/v2/index.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  import 'reflect-metadata';
2
2
  export * from '@copilotkitnext/runtime';
3
+ export * from '@copilotkitnext/agent';
3
4
  //# sourceMappingURL=out.js.map
4
5
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/v2/index.ts"],"names":[],"mappings":";AAAA,OAAO;AACP,cAAc","sourcesContent":["import \"reflect-metadata\";\nexport * from \"@copilotkitnext/runtime\";\n"]}
1
+ {"version":3,"sources":["../../src/v2/index.ts"],"names":[],"mappings":";AAAA,OAAO;AACP,cAAc;AACd,cAAc","sourcesContent":["import \"reflect-metadata\";\nexport * from \"@copilotkitnext/runtime\";\nexport * from \"@copilotkitnext/agent\";\n"]}
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "publishConfig": {
10
10
  "access": "public"
11
11
  },
12
- "version": "1.50.0-beta.2",
12
+ "version": "1.50.0-beta.4",
13
13
  "sideEffects": false,
14
14
  "main": "./dist/index.js",
15
15
  "module": "./dist/index.mjs",
@@ -23,6 +23,11 @@
23
23
  "import": "./dist/v2/index.mjs",
24
24
  "require": "./dist/v2/index.js",
25
25
  "types": "./dist/v2/index.d.ts"
26
+ },
27
+ "./langgraph": {
28
+ "import": "./dist/langgraph.mjs",
29
+ "require": "./dist/langgraph.js",
30
+ "types": "./dist/langgraph.d.ts"
26
31
  }
27
32
  },
28
33
  "types": "./dist/index.d.ts",
@@ -41,29 +46,21 @@
41
46
  "tsup": "^6.7.0",
42
47
  "typescript": "^5.2.3",
43
48
  "vitest": "^3.2.4",
44
- "zod-to-json-schema": "^3.23.5",
45
- "eslint-config-custom": "1.4.6",
46
- "tsconfig": "1.4.6"
49
+ "tsconfig": "1.4.6",
50
+ "eslint-config-custom": "1.4.6"
47
51
  },
48
52
  "dependencies": {
49
- "@anthropic-ai/sdk": "^0.57.0",
50
- "@copilotkitnext/agent": "0.0.23",
51
- "@copilotkitnext/runtime": "0.0.23",
53
+ "@copilotkitnext/agent": "0.0.24",
54
+ "@copilotkitnext/runtime": "0.0.24",
52
55
  "@graphql-yoga/plugin-defer-stream": "^3.3.1",
53
- "@langchain/aws": "^0.1.9",
54
- "@langchain/community": "^0.3.29",
56
+ "@hono/node-server": "^1.13.5",
55
57
  "@langchain/core": "^0.3.38",
56
- "@langchain/google-gauth": "^0.1.0",
57
- "@langchain/langgraph-sdk": "^0.0.70",
58
- "@langchain/openai": "^0.4.2",
59
58
  "@scarf/scarf": "^1.3.0",
60
59
  "class-transformer": "^0.5.1",
61
60
  "class-validator": "^0.14.1",
62
61
  "graphql": "^16.8.1",
63
62
  "graphql-scalars": "^1.23.0",
64
63
  "graphql-yoga": "^5.3.1",
65
- "groq-sdk": "^0.5.0",
66
- "@hono/node-server": "^1.13.5",
67
64
  "hono": "^4.10.3",
68
65
  "langchain": "^0.3.3",
69
66
  "openai": "^4.85.1",
@@ -74,18 +71,54 @@
74
71
  "rxjs": "7.8.1",
75
72
  "type-graphql": "2.0.0-rc.1",
76
73
  "zod": "^3.23.3",
77
- "@copilotkit/shared": "1.50.0-beta.2"
74
+ "@copilotkit/shared": "1.50.0-beta.4"
78
75
  },
79
76
  "peerDependencies": {
80
- "@ag-ui/client": ">=0.0.39",
77
+ "@anthropic-ai/sdk": "^0.57.0",
78
+ "@ag-ui/client": "^0.0.41",
81
79
  "@ag-ui/core": ">=0.0.39",
82
80
  "@ag-ui/encoder": ">=0.0.39",
83
81
  "@ag-ui/langgraph": ">=0.0.18",
84
- "@ag-ui/proto": ">=0.0.39"
82
+ "@ag-ui/proto": ">=0.0.39",
83
+ "@langchain/aws": "^0.1.9",
84
+ "@langchain/community": "^0.3.58",
85
+ "@langchain/google-gauth": "^0.1.0",
86
+ "@langchain/langgraph-sdk": "^0.0.70",
87
+ "@langchain/openai": "^0.4.2",
88
+ "groq-sdk": "^0.5.0",
89
+ "langchain": "^0.3.3",
90
+ "openai": "^4.85.1"
85
91
  },
86
92
  "peerDependenciesMeta": {
93
+ "@anthropic-ai/sdk": {
94
+ "optional": true
95
+ },
87
96
  "@ag-ui/langgraph": {
88
97
  "optional": true
98
+ },
99
+ "@langchain/aws": {
100
+ "optional": true
101
+ },
102
+ "@langchain/community": {
103
+ "optional": true
104
+ },
105
+ "@langchain/google-gauth": {
106
+ "optional": true
107
+ },
108
+ "@langchain/langgraph-sdk": {
109
+ "optional": true
110
+ },
111
+ "@langchain/openai": {
112
+ "optional": true
113
+ },
114
+ "groq-sdk": {
115
+ "optional": true
116
+ },
117
+ "langchain": {
118
+ "optional": true
119
+ },
120
+ "openai": {
121
+ "optional": true
89
122
  }
90
123
  },
91
124
  "keywords": [
@@ -0,0 +1 @@
1
+ export * from "./lib/runtime/agent-integrations/langgraph";
package/src/lib/index.ts CHANGED
@@ -8,4 +8,44 @@ export * from "./integrations";
8
8
  export * from "./logger";
9
9
  export * from "./runtime/copilot-runtime";
10
10
  export * from "./runtime/mcp-tools-utils";
11
- export * from "./runtime/agent-integrations/langgraph.agent";
11
+
12
+ // The below re-exports "dummy" classes and types, to get a deprecation warning redirecting the users to import these from the correct, new route
13
+
14
+ /**
15
+ * @deprecated LangGraphAgent import from @copilotkit/runtime is deprecated. Please import it from @copilotkit/runtime/langgraph instead
16
+ */
17
+ export class LangGraphAgent {
18
+ constructor() {
19
+ throw new Error(
20
+ "LangGraphAgent import from @copilotkit/runtime is deprecated. Please import it from @copilotkit/runtime/langgraph instead",
21
+ );
22
+ }
23
+ }
24
+
25
+ /**
26
+ * @deprecated LangGraphHttpAgent import from @copilotkit/runtime is deprecated. Please import it from @copilotkit/runtime/langgraph instead
27
+ */
28
+ export class LangGraphHttpAgent {
29
+ constructor() {
30
+ throw new Error(
31
+ "LangGraphHttpAgent import from @copilotkit/runtime is deprecated. Please import it from @copilotkit/runtime/langgraph instead",
32
+ );
33
+ }
34
+ }
35
+
36
+ /**
37
+ * @deprecated TextMessageEvents import from @copilotkit/runtime is deprecated. Please import it from @copilotkit/runtime/langgraph instead
38
+ */
39
+ export type TextMessageEvents = any;
40
+ /**
41
+ * @deprecated ToolCallEvents import from @copilotkit/runtime is deprecated. Please import it from @copilotkit/runtime/langgraph instead
42
+ */
43
+ export type ToolCallEvents = any;
44
+ /**
45
+ * @deprecated CustomEventNames import from @copilotkit/runtime is deprecated. Please import it from @copilotkit/runtime/langgraph instead
46
+ */
47
+ export type CustomEventNames = any;
48
+ /**
49
+ * @deprecated PredictStateTool import from @copilotkit/runtime is deprecated. Please import it from @copilotkit/runtime/langgraph instead
50
+ */
51
+ export type PredictStateTool = any;
@@ -4,6 +4,8 @@ import { createCopilotEndpointSingleRoute } from "@copilotkitnext/runtime";
4
4
  import { IncomingMessage, ServerResponse } from "http";
5
5
  import { Readable } from "node:stream";
6
6
 
7
+ type IncomingWithBody = IncomingMessage & { body?: unknown; complete?: boolean };
8
+
7
9
  export function readableStreamToNodeStream(webStream: ReadableStream): Readable {
8
10
  const reader = webStream.getReader();
9
11
 
@@ -24,7 +26,10 @@ export function readableStreamToNodeStream(webStream: ReadableStream): Readable
24
26
  }
25
27
 
26
28
  function getFullUrl(req: IncomingMessage): string {
27
- const path = req.url || "/";
29
+ const expressPath =
30
+ (req as any).originalUrl ??
31
+ ((req as any).baseUrl ? `${(req as any).baseUrl}${req.url ?? ""}` : undefined);
32
+ const path = expressPath || req.url || "/";
28
33
  const host =
29
34
  (req.headers["x-forwarded-host"] as string) || (req.headers.host as string) || "localhost";
30
35
  const proto =
@@ -34,6 +39,61 @@ function getFullUrl(req: IncomingMessage): string {
34
39
  return `${proto}://${host}${path}`;
35
40
  }
36
41
 
42
+ function toHeaders(rawHeaders: IncomingMessage["headers"]): Headers {
43
+ const headers = new Headers();
44
+
45
+ for (const [key, value] of Object.entries(rawHeaders)) {
46
+ if (value === undefined) continue;
47
+
48
+ if (Array.isArray(value)) {
49
+ value.forEach((entry) => headers.append(key, entry));
50
+ continue;
51
+ }
52
+
53
+ headers.append(key, value);
54
+ }
55
+
56
+ return headers;
57
+ }
58
+
59
+ function isStreamConsumed(req: IncomingWithBody): boolean {
60
+ const readableState = (req as any)._readableState;
61
+
62
+ return Boolean(
63
+ req.readableEnded || req.complete || readableState?.ended || readableState?.endEmitted,
64
+ );
65
+ }
66
+
67
+ function synthesizeBodyFromParsedBody(
68
+ parsedBody: unknown,
69
+ headers: Headers,
70
+ ): { body: BodyInit | null; contentType?: string } {
71
+ if (parsedBody === null || parsedBody === undefined) {
72
+ return { body: null };
73
+ }
74
+
75
+ if (parsedBody instanceof Buffer || parsedBody instanceof Uint8Array) {
76
+ return { body: parsedBody };
77
+ }
78
+
79
+ if (typeof parsedBody === "string") {
80
+ return { body: parsedBody, contentType: headers.get("content-type") ?? "text/plain" };
81
+ }
82
+
83
+ return {
84
+ body: JSON.stringify(parsedBody),
85
+ contentType: "application/json",
86
+ };
87
+ }
88
+
89
+ function isDisturbedOrLockedError(error: unknown): boolean {
90
+ return (
91
+ error instanceof TypeError &&
92
+ typeof error.message === "string" &&
93
+ (error.message.includes("disturbed") || error.message.includes("locked"))
94
+ );
95
+ }
96
+
37
97
  export function copilotRuntimeNodeHttpEndpoint(options: CreateCopilotRuntimeServerOptions) {
38
98
  const commonConfig = getCommonConfig(options);
39
99
 
@@ -64,19 +124,78 @@ export function copilotRuntimeNodeHttpEndpoint(options: CreateCopilotRuntimeServ
64
124
  basePath: options.baseUrl ?? options.endpoint,
65
125
  });
66
126
 
67
- return async function handler(req: IncomingMessage, res: ServerResponse) {
127
+ return async function handler(req: IncomingWithBody, res: ServerResponse) {
68
128
  const url = getFullUrl(req);
69
129
  const hasBody = req.method !== "GET" && req.method !== "HEAD";
70
130
 
71
- const request = new Request(url, {
72
- method: req.method,
73
- headers: req.headers as any,
74
- body: hasBody ? (req as any) : undefined,
75
- // Node/undici extension
76
- duplex: hasBody ? "half" : undefined,
77
- } as any);
131
+ const baseHeaders = toHeaders(req.headers);
132
+ const parsedBody = req.body;
133
+
134
+ const streamConsumed = isStreamConsumed(req) || parsedBody !== undefined;
135
+ const canStream = hasBody && !streamConsumed;
78
136
 
79
- const response = await honoApp.fetch(request);
137
+ let requestBody: BodyInit | null | undefined = undefined;
138
+ let useDuplex = false;
139
+
140
+ if (hasBody && canStream) {
141
+ requestBody = req as unknown as BodyInit;
142
+ useDuplex = true;
143
+ }
144
+
145
+ if (hasBody && streamConsumed) {
146
+ if (parsedBody !== undefined) {
147
+ const synthesized = synthesizeBodyFromParsedBody(parsedBody, baseHeaders);
148
+ requestBody = synthesized.body ?? undefined;
149
+ baseHeaders.delete("content-length");
150
+
151
+ if (synthesized.contentType) {
152
+ baseHeaders.set("content-type", synthesized.contentType);
153
+ }
154
+
155
+ logger.debug("Request stream already consumed; using parsed req.body to rebuild request.");
156
+ } else {
157
+ logger.warn("Request stream consumed with no available body; sending empty payload.");
158
+ requestBody = undefined;
159
+ }
160
+ }
161
+
162
+ const buildRequest = (body: BodyInit | null | undefined, headers: Headers, duplex: boolean) =>
163
+ new Request(url, {
164
+ method: req.method,
165
+ headers,
166
+ body,
167
+ duplex: duplex ? "half" : undefined,
168
+ } as RequestInit);
169
+
170
+ let response: Response;
171
+ try {
172
+ response = await honoApp.fetch(buildRequest(requestBody, baseHeaders, useDuplex));
173
+ } catch (error) {
174
+ if (isDisturbedOrLockedError(error) && hasBody) {
175
+ logger.warn(
176
+ "Encountered disturbed/locked request body; rebuilding request using parsed body or empty payload.",
177
+ );
178
+
179
+ const fallbackHeaders = new Headers(baseHeaders);
180
+ let fallbackBody: BodyInit | null | undefined;
181
+
182
+ if (parsedBody !== undefined) {
183
+ const synthesized = synthesizeBodyFromParsedBody(parsedBody, fallbackHeaders);
184
+ fallbackBody = synthesized.body ?? undefined;
185
+ fallbackHeaders.delete("content-length");
186
+
187
+ if (synthesized.contentType) {
188
+ fallbackHeaders.set("content-type", synthesized.contentType);
189
+ }
190
+ } else {
191
+ fallbackBody = undefined;
192
+ }
193
+
194
+ response = await honoApp.fetch(buildRequest(fallbackBody, fallbackHeaders, false));
195
+ } else {
196
+ throw error;
197
+ }
198
+ }
80
199
 
81
200
  res.statusCode = response.status;
82
201
  response.headers.forEach((value, key) => {
@@ -1,16 +1,5 @@
1
- import {
2
- RunAgentInput,
3
- EventType,
4
- CustomEvent,
5
- TextMessageStartEvent,
6
- TextMessageContentEvent,
7
- TextMessageEndEvent,
8
- ToolCallStartEvent,
9
- ToolCallArgsEvent,
10
- ToolCallEndEvent,
11
- } from "@ag-ui/client";
12
1
  import { map } from "rxjs";
13
- import { LangGraphEventTypes } from "../../../agents/langgraph/events";
2
+ import { LangGraphEventTypes } from "../../../../agents/langgraph/events";
14
3
  import { RawEvent } from "@ag-ui/core";
15
4
  import {
16
5
  LangGraphAgent as AGUILangGraphAgent,
@@ -31,25 +20,11 @@ interface CopilotKitStateEnrichment {
31
20
  };
32
21
  }
33
22
 
34
- export interface PredictStateTool {
35
- tool: string;
36
- state_key: string;
37
- tool_argument: string;
38
- }
39
-
40
- export type TextMessageEvents =
41
- | TextMessageStartEvent
42
- | TextMessageContentEvent
43
- | TextMessageEndEvent;
23
+ import { RunAgentInput, EventType, CustomEvent } from "@ag-ui/client";
44
24
 
45
- export type ToolCallEvents = ToolCallStartEvent | ToolCallArgsEvent | ToolCallEndEvent;
46
-
47
- export enum CustomEventNames {
48
- CopilotKitManuallyEmitMessage = "copilotkit_manually_emit_message",
49
- CopilotKitManuallyEmitToolCall = "copilotkit_manually_emit_tool_call",
50
- CopilotKitManuallyEmitIntermediateState = "copilotkit_manually_emit_intermediate_state",
51
- CopilotKitExit = "copilotkit_exit",
52
- }
25
+ // Import and re-export from separate file to maintain API compatibility
26
+ import { CustomEventNames, TextMessageEvents, ToolCallEvents, PredictStateTool } from "./consts";
27
+ export { CustomEventNames };
53
28
 
54
29
  export class LangGraphAgent extends AGUILangGraphAgent {
55
30
  constructor(config: LangGraphAgentConfig) {
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Constants for LangGraph integration.
3
+ * This file is separate from langgraph.agent.ts to avoid pulling in @ag-ui/langgraph
4
+ * when only these constants are needed.
5
+ */
6
+
7
+ import {
8
+ TextMessageStartEvent,
9
+ TextMessageContentEvent,
10
+ TextMessageEndEvent,
11
+ ToolCallStartEvent,
12
+ ToolCallArgsEvent,
13
+ ToolCallEndEvent,
14
+ } from "@ag-ui/client";
15
+
16
+ export type TextMessageEvents =
17
+ | TextMessageStartEvent
18
+ | TextMessageContentEvent
19
+ | TextMessageEndEvent;
20
+
21
+ export type ToolCallEvents = ToolCallStartEvent | ToolCallArgsEvent | ToolCallEndEvent;
22
+
23
+ export enum CustomEventNames {
24
+ CopilotKitManuallyEmitMessage = "copilotkit_manually_emit_message",
25
+ CopilotKitManuallyEmitToolCall = "copilotkit_manually_emit_tool_call",
26
+ CopilotKitManuallyEmitIntermediateState = "copilotkit_manually_emit_intermediate_state",
27
+ CopilotKitExit = "copilotkit_exit",
28
+ }
29
+
30
+ export interface PredictStateTool {
31
+ tool: string;
32
+ state_key: string;
33
+ tool_argument: string;
34
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./consts";
2
+ export * from "./agent";
@@ -34,10 +34,7 @@ import {
34
34
  } from "@copilotkitnext/runtime";
35
35
 
36
36
  import { MessageInput } from "../../graphql/inputs/message.input";
37
- import { ActionInput } from "../../graphql/inputs/action.input";
38
- import { RuntimeEventSource } from "../../service-adapters/events";
39
37
  import { Message } from "../../graphql/types/converted";
40
- import { ForwardedParametersInput } from "../../graphql/inputs/forwarded-parameters.input";
41
38
 
42
39
  import {
43
40
  EndpointType,
@@ -46,19 +43,7 @@ import {
46
43
  LangGraphPlatformEndpoint,
47
44
  } from "./types";
48
45
 
49
- import { GraphQLContext } from "../integrations/shared";
50
- import { AgentSessionInput } from "../../graphql/inputs/agent-session.input";
51
- import { AgentStateInput } from "../../graphql/inputs/agent-state.input";
52
- import { Agent } from "../../graphql/types/agents-response.type";
53
- import { ExtensionsInput } from "../../graphql/inputs/extensions.input";
54
- import { ExtensionsResponse } from "../../graphql/types/extensions-response.type";
55
- import { MetaEventInput } from "../../graphql/inputs/meta-event.input";
56
- import {
57
- CopilotObservabilityConfig,
58
- LLMRequestData,
59
- LLMResponseData,
60
- LLMErrorData,
61
- } from "../observability";
46
+ import { CopilotObservabilityConfig, LLMRequestData, LLMResponseData } from "../observability";
62
47
  import { AbstractAgent } from "@ag-ui/client";
63
48
 
64
49
  // +++ MCP Imports +++
@@ -67,10 +52,7 @@ import {
67
52
  MCPEndpointConfig,
68
53
  MCPTool,
69
54
  extractParametersFromSchema,
70
- convertMCPToolsToActions,
71
- generateMcpToolInstructions,
72
55
  } from "./mcp-tools-utils";
73
- import { LangGraphAgent } from "./agent-integrations/langgraph.agent";
74
56
  import { BasicAgent, BasicAgentConfiguration } from "@copilotkitnext/agent";
75
57
  // Define the function type alias here or import if defined elsewhere
76
58
  type CreateMCPClientFunction = (config: MCPEndpointConfig) => Promise<MCPClient>;
@@ -324,8 +306,10 @@ export class CopilotRuntime<const T extends Parameter[] | [] = []> {
324
306
  params?: CopilotRuntimeConstructorParams<T> & PartialBy<CopilotRuntimeOptions, "agents">,
325
307
  ) {
326
308
  const agents = params?.agents ?? {};
309
+ const endpointAgents = this.assignEndpointsToAgents(params?.remoteEndpoints ?? []);
310
+
327
311
  this.runtimeArgs = {
328
- agents: { ...this.assignEndpointsToAgents(params?.remoteEndpoints ?? []), ...agents },
312
+ agents: { ...endpointAgents, ...agents },
329
313
  runner: params?.runner ?? new InMemoryAgentRunnerVNext(),
330
314
  // TODO: add support for transcriptionService from CopilotRuntimeOptionsVNext once it is ready
331
315
  // transcriptionService: params?.transcriptionService,
@@ -347,28 +331,21 @@ export class CopilotRuntime<const T extends Parameter[] | [] = []> {
347
331
 
348
332
  private assignEndpointsToAgents(
349
333
  endpoints: CopilotRuntimeConstructorParams<T>["remoteEndpoints"],
350
- ) {
351
- return endpoints.reduce((acc, endpoint) => {
352
- if (resolveEndpointType(endpoint) == EndpointType.LangGraphPlatform) {
353
- let lgAgents = {};
354
- const lgEndpoint = endpoint as LangGraphPlatformEndpoint;
355
- lgEndpoint.agents.forEach((agent) => {
356
- const graphId = agent.assistantId ?? agent.name;
357
- lgAgents[graphId] = new LangGraphAgent({
358
- deploymentUrl: lgEndpoint.deploymentUrl,
359
- langsmithApiKey: lgEndpoint.langsmithApiKey,
360
- graphId,
361
- });
362
- });
334
+ ): Record<string, AbstractAgent> {
335
+ let result: Record<string, AbstractAgent> = {};
363
336
 
364
- return {
365
- ...acc,
366
- ...lgAgents,
367
- };
368
- }
337
+ if (
338
+ endpoints.some((endpoint) => resolveEndpointType(endpoint) == EndpointType.LangGraphPlatform)
339
+ ) {
340
+ throw new CopilotKitMisuseError({
341
+ message:
342
+ "LangGraphPlatformEndpoint in remoteEndpoints is deprecated. " +
343
+ 'Please use the "agents" option instead with LangGraphAgent from "@copilotkit/runtime/langgraph". ' +
344
+ 'Example: agents: { myAgent: new LangGraphAgent({ deploymentUrl: "...", graphId: "..." }) }',
345
+ });
346
+ }
369
347
 
370
- return acc;
371
- }, {});
348
+ return result;
372
349
  }
373
350
 
374
351
  handleServiceAdapter(serviceAdapter: CopilotServiceAdapter) {
@@ -22,7 +22,7 @@
22
22
  * });
23
23
  * ```
24
24
  */
25
- import Anthropic from "@anthropic-ai/sdk";
25
+ import type Anthropic from "@anthropic-ai/sdk";
26
26
  import {
27
27
  CopilotServiceAdapter,
28
28
  CopilotRuntimeChatCompletionRequest,
@@ -84,13 +84,25 @@ export class AnthropicAdapter implements CopilotServiceAdapter {
84
84
  }
85
85
 
86
86
  constructor(params?: AnthropicAdapterParams) {
87
- this._anthropic = params?.anthropic || new Anthropic({});
87
+ if (params?.anthropic) {
88
+ this._anthropic = params.anthropic;
89
+ }
90
+ // If no instance provided, we'll lazy-load in ensureAnthropic()
88
91
  if (params?.model) {
89
92
  this.model = params.model;
90
93
  }
91
94
  this.promptCaching = params?.promptCaching || { enabled: false };
92
95
  }
93
96
 
97
+ private ensureAnthropic(): Anthropic {
98
+ if (!this._anthropic) {
99
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
100
+ const Anthropic = require("@anthropic-ai/sdk").default;
101
+ this._anthropic = new Anthropic({});
102
+ }
103
+ return this._anthropic;
104
+ }
105
+
94
106
  /**
95
107
  * Adds cache control to system prompt
96
108
  */
@@ -306,7 +318,8 @@ export class AnthropicAdapter implements CopilotServiceAdapter {
306
318
  stream: true,
307
319
  };
308
320
 
309
- const stream = await this.anthropic.messages.create(createParams);
321
+ const anthropic = this.ensureAnthropic();
322
+ const stream = await anthropic.messages.create(createParams);
310
323
 
311
324
  eventSource.stream(async (eventStream$) => {
312
325
  let mode: "function" | "message" | null = null;
@@ -19,7 +19,6 @@
19
19
  * ```
20
20
  */
21
21
 
22
- import { ChatBedrockConverse } from "@langchain/aws";
23
22
  import { LangChainAdapter } from "../langchain/langchain-adapter";
24
23
 
25
24
  export interface BedrockAdapterParams {
@@ -52,6 +51,10 @@ export class BedrockAdapter extends LangChainAdapter {
52
51
  constructor(options?: BedrockAdapterParams) {
53
52
  super({
54
53
  chainFn: async ({ messages, tools, threadId }) => {
54
+ // Lazy require for optional peer dependency
55
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
56
+ const { ChatBedrockConverse } = require("@langchain/aws");
57
+
55
58
  this.model = options?.model ?? "amazon.nova-lite-v1:0";
56
59
  const model = new ChatBedrockConverse({
57
60
  model: this.model,