@copilotkit/runtime 1.50.0 → 1.50.1-next.1

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 (224) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/index.d.ts +5 -1
  3. package/dist/index.js +10 -4
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +10 -4
  6. package/dist/index.mjs.map +1 -1
  7. package/package.json +2 -2
  8. package/src/service-adapters/google/google-genai-adapter.ts +19 -4
  9. package/dist/chunk-27JKTS6P.mjs +0 -1704
  10. package/dist/chunk-27JKTS6P.mjs.map +0 -1
  11. package/dist/chunk-2GPTVDTO.mjs +0 -25
  12. package/dist/chunk-2GPTVDTO.mjs.map +0 -1
  13. package/dist/chunk-2OZAGFV3.mjs +0 -43
  14. package/dist/chunk-2OZAGFV3.mjs.map +0 -1
  15. package/dist/chunk-3AJVKDZX.mjs +0 -3097
  16. package/dist/chunk-3AJVKDZX.mjs.map +0 -1
  17. package/dist/chunk-45RCC3ZS.mjs +0 -25
  18. package/dist/chunk-45RCC3ZS.mjs.map +0 -1
  19. package/dist/chunk-4EHJ4XFJ.mjs +0 -25
  20. package/dist/chunk-4EHJ4XFJ.mjs.map +0 -1
  21. package/dist/chunk-4IANB4TC.mjs +0 -25
  22. package/dist/chunk-4IANB4TC.mjs.map +0 -1
  23. package/dist/chunk-4KES76K3.mjs +0 -74
  24. package/dist/chunk-4KES76K3.mjs.map +0 -1
  25. package/dist/chunk-4OGE3SLW.mjs +0 -3100
  26. package/dist/chunk-4OGE3SLW.mjs.map +0 -1
  27. package/dist/chunk-54YJBMCP.mjs +0 -3097
  28. package/dist/chunk-54YJBMCP.mjs.map +0 -1
  29. package/dist/chunk-62NE5S6M.mjs +0 -226
  30. package/dist/chunk-62NE5S6M.mjs.map +0 -1
  31. package/dist/chunk-6ER4SZYH.mjs +0 -74
  32. package/dist/chunk-6ER4SZYH.mjs.map +0 -1
  33. package/dist/chunk-6TNSLHVR.mjs +0 -74
  34. package/dist/chunk-6TNSLHVR.mjs.map +0 -1
  35. package/dist/chunk-6XRUR5UK.mjs +0 -1
  36. package/dist/chunk-6XRUR5UK.mjs.map +0 -1
  37. package/dist/chunk-7V4BK7TZ.mjs +0 -25
  38. package/dist/chunk-7V4BK7TZ.mjs.map +0 -1
  39. package/dist/chunk-7YZIEXD2.mjs +0 -74
  40. package/dist/chunk-7YZIEXD2.mjs.map +0 -1
  41. package/dist/chunk-A4XHOAFU.mjs +0 -25
  42. package/dist/chunk-A4XHOAFU.mjs.map +0 -1
  43. package/dist/chunk-A555KEAD.mjs +0 -6020
  44. package/dist/chunk-A555KEAD.mjs.map +0 -1
  45. package/dist/chunk-AF73TFTX.mjs +0 -74
  46. package/dist/chunk-AF73TFTX.mjs.map +0 -1
  47. package/dist/chunk-AMUJQ6IR.mjs +0 -50
  48. package/dist/chunk-AMUJQ6IR.mjs.map +0 -1
  49. package/dist/chunk-AQG2SVCA.mjs +0 -25
  50. package/dist/chunk-AQG2SVCA.mjs.map +0 -1
  51. package/dist/chunk-BJZHMXND.mjs +0 -74
  52. package/dist/chunk-BJZHMXND.mjs.map +0 -1
  53. package/dist/chunk-CB2OJXF6.mjs +0 -25
  54. package/dist/chunk-CB2OJXF6.mjs.map +0 -1
  55. package/dist/chunk-CEOMFPJU.mjs +0 -6020
  56. package/dist/chunk-CEOMFPJU.mjs.map +0 -1
  57. package/dist/chunk-CZVLR7CC.mjs +0 -175
  58. package/dist/chunk-CZVLR7CC.mjs.map +0 -1
  59. package/dist/chunk-DCEEHMLJ.mjs +0 -1127
  60. package/dist/chunk-DCEEHMLJ.mjs.map +0 -1
  61. package/dist/chunk-DE3CLKUG.mjs +0 -25
  62. package/dist/chunk-DE3CLKUG.mjs.map +0 -1
  63. package/dist/chunk-DTPRUTNV.mjs +0 -25
  64. package/dist/chunk-DTPRUTNV.mjs.map +0 -1
  65. package/dist/chunk-ERUOA47O.mjs +0 -626
  66. package/dist/chunk-ERUOA47O.mjs.map +0 -1
  67. package/dist/chunk-ESSRC64W.mjs +0 -74
  68. package/dist/chunk-ESSRC64W.mjs.map +0 -1
  69. package/dist/chunk-FHD4JECV.mjs +0 -33
  70. package/dist/chunk-FHD4JECV.mjs.map +0 -1
  71. package/dist/chunk-GRAN6K6N.mjs +0 -25
  72. package/dist/chunk-GRAN6K6N.mjs.map +0 -1
  73. package/dist/chunk-I27F2UPA.mjs +0 -175
  74. package/dist/chunk-I27F2UPA.mjs.map +0 -1
  75. package/dist/chunk-IAZKTOQW.mjs +0 -25
  76. package/dist/chunk-IAZKTOQW.mjs.map +0 -1
  77. package/dist/chunk-J6XZ5MFB.mjs +0 -25
  78. package/dist/chunk-J6XZ5MFB.mjs.map +0 -1
  79. package/dist/chunk-JJ32MA4C.mjs +0 -73
  80. package/dist/chunk-JJ32MA4C.mjs.map +0 -1
  81. package/dist/chunk-JJY4ZTHQ.mjs +0 -25
  82. package/dist/chunk-JJY4ZTHQ.mjs.map +0 -1
  83. package/dist/chunk-KEYLBFU2.mjs +0 -3117
  84. package/dist/chunk-KEYLBFU2.mjs.map +0 -1
  85. package/dist/chunk-KQ53L4WZ.mjs +0 -3094
  86. package/dist/chunk-KQ53L4WZ.mjs.map +0 -1
  87. package/dist/chunk-KTELVQ67.mjs +0 -3098
  88. package/dist/chunk-KTELVQ67.mjs.map +0 -1
  89. package/dist/chunk-LPEPX6NH.mjs +0 -25
  90. package/dist/chunk-LPEPX6NH.mjs.map +0 -1
  91. package/dist/chunk-MDXE55DK.mjs +0 -3117
  92. package/dist/chunk-MDXE55DK.mjs.map +0 -1
  93. package/dist/chunk-MMFUVOXH.mjs +0 -73
  94. package/dist/chunk-MMFUVOXH.mjs.map +0 -1
  95. package/dist/chunk-N3Y4U66N.mjs +0 -253
  96. package/dist/chunk-N3Y4U66N.mjs.map +0 -1
  97. package/dist/chunk-O7UYB4MH.mjs +0 -25
  98. package/dist/chunk-O7UYB4MH.mjs.map +0 -1
  99. package/dist/chunk-OFNVQHNM.mjs +0 -3089
  100. package/dist/chunk-OFNVQHNM.mjs.map +0 -1
  101. package/dist/chunk-OFSV5GET.mjs +0 -3074
  102. package/dist/chunk-OFSV5GET.mjs.map +0 -1
  103. package/dist/chunk-OMRST67R.mjs +0 -25
  104. package/dist/chunk-OMRST67R.mjs.map +0 -1
  105. package/dist/chunk-OWIGJONH.mjs +0 -275
  106. package/dist/chunk-OWIGJONH.mjs.map +0 -1
  107. package/dist/chunk-PRZHE74A.mjs +0 -25
  108. package/dist/chunk-PRZHE74A.mjs.map +0 -1
  109. package/dist/chunk-PTYRVXXP.mjs +0 -80
  110. package/dist/chunk-PTYRVXXP.mjs.map +0 -1
  111. package/dist/chunk-R22B5CCO.mjs +0 -25
  112. package/dist/chunk-R22B5CCO.mjs.map +0 -1
  113. package/dist/chunk-SHBDMA63.mjs +0 -141
  114. package/dist/chunk-SHBDMA63.mjs.map +0 -1
  115. package/dist/chunk-SPVXBPRA.mjs +0 -74
  116. package/dist/chunk-SPVXBPRA.mjs.map +0 -1
  117. package/dist/chunk-T72G46ME.mjs +0 -25
  118. package/dist/chunk-T72G46ME.mjs.map +0 -1
  119. package/dist/chunk-TGELROPU.mjs +0 -25
  120. package/dist/chunk-TGELROPU.mjs.map +0 -1
  121. package/dist/chunk-UNX4IAAD.mjs +0 -25
  122. package/dist/chunk-UNX4IAAD.mjs.map +0 -1
  123. package/dist/chunk-V4DHVC7M.mjs +0 -3085
  124. package/dist/chunk-V4DHVC7M.mjs.map +0 -1
  125. package/dist/chunk-VVRFOB66.mjs +0 -25
  126. package/dist/chunk-VVRFOB66.mjs.map +0 -1
  127. package/dist/chunk-W6NVBYM6.mjs +0 -80
  128. package/dist/chunk-W6NVBYM6.mjs.map +0 -1
  129. package/dist/chunk-W7MBACGC.mjs +0 -74
  130. package/dist/chunk-W7MBACGC.mjs.map +0 -1
  131. package/dist/chunk-WMD4XZZS.mjs +0 -25
  132. package/dist/chunk-WMD4XZZS.mjs.map +0 -1
  133. package/dist/chunk-WX2ZNCRT.mjs +0 -74
  134. package/dist/chunk-WX2ZNCRT.mjs.map +0 -1
  135. package/dist/chunk-XWBDEXDA.mjs +0 -153
  136. package/dist/chunk-XWBDEXDA.mjs.map +0 -1
  137. package/dist/chunk-Y2Z62E2T.mjs +0 -74
  138. package/dist/chunk-Y2Z62E2T.mjs.map +0 -1
  139. package/dist/chunk-YO4I6RVI.mjs +0 -25
  140. package/dist/chunk-YO4I6RVI.mjs.map +0 -1
  141. package/dist/chunk-Z6Q5IW6I.mjs +0 -3098
  142. package/dist/chunk-Z6Q5IW6I.mjs.map +0 -1
  143. package/dist/chunk-Z726O3G2.mjs +0 -25
  144. package/dist/chunk-Z726O3G2.mjs.map +0 -1
  145. package/dist/chunk-ZE4SMZZR.mjs +0 -3097
  146. package/dist/chunk-ZE4SMZZR.mjs.map +0 -1
  147. package/dist/chunk-ZULZB33C.mjs +0 -73
  148. package/dist/chunk-ZULZB33C.mjs.map +0 -1
  149. package/dist/chunk-ZVRGXMY7.mjs +0 -25
  150. package/dist/chunk-ZVRGXMY7.mjs.map +0 -1
  151. package/dist/chunk-ZZ35WBYQ.mjs +0 -25
  152. package/dist/chunk-ZZ35WBYQ.mjs.map +0 -1
  153. package/dist/graphql/message-conversion/index.d.ts +0 -18
  154. package/dist/graphql/message-conversion/index.js +0 -725
  155. package/dist/graphql/message-conversion/index.js.map +0 -1
  156. package/dist/graphql/message-conversion/index.mjs +0 -245
  157. package/dist/graphql/message-conversion/index.mjs.map +0 -1
  158. package/dist/graphql/types/base/index.d.ts +0 -6
  159. package/dist/graphql/types/base/index.js +0 -63
  160. package/dist/graphql/types/base/index.js.map +0 -1
  161. package/dist/graphql/types/base/index.mjs +0 -8
  162. package/dist/graphql/types/base/index.mjs.map +0 -1
  163. package/dist/graphql/types/converted/index.d.ts +0 -2
  164. package/dist/graphql/types/converted/index.js +0 -200
  165. package/dist/graphql/types/converted/index.js.map +0 -1
  166. package/dist/graphql/types/converted/index.mjs +0 -19
  167. package/dist/graphql/types/converted/index.mjs.map +0 -1
  168. package/dist/groq-adapter-540da9c3.d.ts +0 -331
  169. package/dist/groq-adapter-a6f5e9d2.d.ts +0 -331
  170. package/dist/groq-adapter-c8aec5c5.d.ts +0 -321
  171. package/dist/index-96b330da.d.ts +0 -119
  172. package/dist/index-adbd78f1.d.ts +0 -154
  173. package/dist/langserve-0c6100e3.d.ts +0 -257
  174. package/dist/langserve-978d5790.d.ts +0 -243
  175. package/dist/langserve-9fc76ce5.d.ts +0 -243
  176. package/dist/lib/cloud/index.d.ts +0 -6
  177. package/dist/lib/cloud/index.js +0 -18
  178. package/dist/lib/cloud/index.js.map +0 -1
  179. package/dist/lib/cloud/index.mjs +0 -1
  180. package/dist/lib/cloud/index.mjs.map +0 -1
  181. package/dist/lib/index.d.ts +0 -212
  182. package/dist/lib/index.js +0 -7843
  183. package/dist/lib/index.js.map +0 -1
  184. package/dist/lib/index.mjs +0 -76
  185. package/dist/lib/index.mjs.map +0 -1
  186. package/dist/lib/integrations/index.d.ts +0 -34
  187. package/dist/lib/integrations/index.js +0 -3052
  188. package/dist/lib/integrations/index.js.map +0 -1
  189. package/dist/lib/integrations/index.mjs +0 -37
  190. package/dist/lib/integrations/index.mjs.map +0 -1
  191. package/dist/lib/integrations/nest/index.d.ts +0 -15
  192. package/dist/lib/integrations/nest/index.js +0 -2959
  193. package/dist/lib/integrations/nest/index.js.map +0 -1
  194. package/dist/lib/integrations/nest/index.mjs +0 -14
  195. package/dist/lib/integrations/nest/index.mjs.map +0 -1
  196. package/dist/lib/integrations/node-express/index.d.ts +0 -15
  197. package/dist/lib/integrations/node-express/index.js +0 -2959
  198. package/dist/lib/integrations/node-express/index.js.map +0 -1
  199. package/dist/lib/integrations/node-express/index.mjs +0 -14
  200. package/dist/lib/integrations/node-express/index.mjs.map +0 -1
  201. package/dist/lib/integrations/node-http/index.d.ts +0 -15
  202. package/dist/lib/integrations/node-http/index.js +0 -2945
  203. package/dist/lib/integrations/node-http/index.js.map +0 -1
  204. package/dist/lib/integrations/node-http/index.mjs +0 -13
  205. package/dist/lib/integrations/node-http/index.mjs.map +0 -1
  206. package/dist/service-adapters/index.d.ts +0 -162
  207. package/dist/service-adapters/index.js +0 -1787
  208. package/dist/service-adapters/index.js.map +0 -1
  209. package/dist/service-adapters/index.mjs +0 -34
  210. package/dist/service-adapters/index.mjs.map +0 -1
  211. package/dist/service-adapters/shared/index.d.ts +0 -9
  212. package/dist/service-adapters/shared/index.js +0 -72
  213. package/dist/service-adapters/shared/index.js.map +0 -1
  214. package/dist/service-adapters/shared/index.mjs +0 -8
  215. package/dist/service-adapters/shared/index.mjs.map +0 -1
  216. package/dist/shared-0a7346ce.d.ts +0 -466
  217. package/dist/shared-35c6eb04.d.ts +0 -448
  218. package/dist/shared-9ed1dc31.d.ts +0 -414
  219. package/dist/shared-da5708fe.d.ts +0 -449
  220. package/dist/utils/index.d.ts +0 -65
  221. package/dist/utils/index.js +0 -175
  222. package/dist/utils/index.js.map +0 -1
  223. package/dist/utils/index.mjs +0 -12
  224. package/dist/utils/index.mjs.map +0 -1
@@ -1,626 +0,0 @@
1
- import {
2
- LangChainAdapter
3
- } from "./chunk-DCEEHMLJ.mjs";
4
- import {
5
- convertServiceAdapterError
6
- } from "./chunk-AMUJQ6IR.mjs";
7
- import {
8
- __name
9
- } from "./chunk-FHD4JECV.mjs";
10
-
11
- // src/service-adapters/langchain/langserve.ts
12
- import { RemoteRunnable } from "langchain/runnables/remote";
13
- var RemoteChain = class {
14
- name;
15
- description;
16
- chainUrl;
17
- parameters;
18
- parameterType;
19
- constructor(options) {
20
- this.name = options.name;
21
- this.description = options.description;
22
- this.chainUrl = options.chainUrl;
23
- this.parameters = options.parameters;
24
- this.parameterType = options.parameterType || "multi";
25
- }
26
- async toAction() {
27
- if (!this.parameters) {
28
- await this.inferLangServeParameters();
29
- }
30
- return {
31
- name: this.name,
32
- description: this.description,
33
- parameters: this.parameters,
34
- handler: async (args) => {
35
- const runnable = new RemoteRunnable({
36
- url: this.chainUrl
37
- });
38
- let input;
39
- if (this.parameterType === "single") {
40
- input = args[Object.keys(args)[0]];
41
- } else {
42
- input = args;
43
- }
44
- return await runnable.invoke(input);
45
- }
46
- };
47
- }
48
- async inferLangServeParameters() {
49
- const supportedTypes = [
50
- "string",
51
- "number",
52
- "boolean"
53
- ];
54
- let schemaUrl = this.chainUrl.replace(/\/+$/, "") + "/input_schema";
55
- let schema = await fetch(schemaUrl).then((res) => res.json()).catch(() => {
56
- throw new Error("Failed to fetch langserve schema at " + schemaUrl);
57
- });
58
- if (supportedTypes.includes(schema.type)) {
59
- this.parameterType = "single";
60
- this.parameters = [
61
- {
62
- name: "input",
63
- type: schema.type,
64
- description: "The input to the chain"
65
- }
66
- ];
67
- } else if (schema.type === "object") {
68
- this.parameterType = "multi";
69
- this.parameters = Object.keys(schema.properties).map((key) => {
70
- var _a;
71
- let property = schema.properties[key];
72
- if (!supportedTypes.includes(property.type)) {
73
- throw new Error("Unsupported schema type");
74
- }
75
- return {
76
- name: key,
77
- type: property.type,
78
- description: property.description || "",
79
- required: ((_a = schema.required) == null ? void 0 : _a.includes(key)) || false
80
- };
81
- });
82
- } else {
83
- throw new Error("Unsupported schema type");
84
- }
85
- }
86
- };
87
- __name(RemoteChain, "RemoteChain");
88
-
89
- // src/service-adapters/anthropic/anthropic-adapter.ts
90
- import Anthropic from "@anthropic-ai/sdk";
91
-
92
- // src/service-adapters/anthropic/utils.ts
93
- function limitMessagesToTokenCount(messages, tools, model, maxTokens) {
94
- maxTokens || (maxTokens = MAX_TOKENS);
95
- const result = [];
96
- const toolsNumTokens = countToolsTokens(model, tools);
97
- if (toolsNumTokens > maxTokens) {
98
- throw new Error(`Too many tokens in function definitions: ${toolsNumTokens} > ${maxTokens}`);
99
- }
100
- maxTokens -= toolsNumTokens;
101
- for (const message of messages) {
102
- if (message.role === "system") {
103
- const numTokens = countMessageTokens(model, message);
104
- maxTokens -= numTokens;
105
- if (maxTokens < 0) {
106
- throw new Error("Not enough tokens for system message.");
107
- }
108
- }
109
- }
110
- let cutoff = false;
111
- const reversedMessages = [
112
- ...messages
113
- ].reverse();
114
- for (const message of reversedMessages) {
115
- if (message.role === "system") {
116
- result.unshift(message);
117
- continue;
118
- } else if (cutoff) {
119
- continue;
120
- }
121
- let numTokens = countMessageTokens(model, message);
122
- if (maxTokens < numTokens) {
123
- cutoff = true;
124
- continue;
125
- }
126
- result.unshift(message);
127
- maxTokens -= numTokens;
128
- }
129
- return result;
130
- }
131
- __name(limitMessagesToTokenCount, "limitMessagesToTokenCount");
132
- var MAX_TOKENS = 128e3;
133
- function countToolsTokens(model, tools) {
134
- if (tools.length === 0) {
135
- return 0;
136
- }
137
- const json = JSON.stringify(tools);
138
- return countTokens(model, json);
139
- }
140
- __name(countToolsTokens, "countToolsTokens");
141
- function countMessageTokens(model, message) {
142
- return countTokens(model, JSON.stringify(message.content) || "");
143
- }
144
- __name(countMessageTokens, "countMessageTokens");
145
- function countTokens(model, text) {
146
- return text.length / 3;
147
- }
148
- __name(countTokens, "countTokens");
149
- function convertActionInputToAnthropicTool(action) {
150
- return {
151
- name: action.name,
152
- description: action.description,
153
- input_schema: JSON.parse(action.jsonSchema)
154
- };
155
- }
156
- __name(convertActionInputToAnthropicTool, "convertActionInputToAnthropicTool");
157
- function convertMessageToAnthropicMessage(message) {
158
- if (message.isTextMessage()) {
159
- if (message.role === "system") {
160
- return {
161
- role: "assistant",
162
- content: [
163
- {
164
- type: "text",
165
- text: "THE FOLLOWING MESSAGE IS A SYSTEM MESSAGE: " + message.content
166
- }
167
- ]
168
- };
169
- } else {
170
- return {
171
- role: message.role === "user" ? "user" : "assistant",
172
- content: [
173
- {
174
- type: "text",
175
- text: message.content
176
- }
177
- ]
178
- };
179
- }
180
- } else if (message.isImageMessage()) {
181
- let mediaType;
182
- switch (message.format) {
183
- case "jpeg":
184
- mediaType = "image/jpeg";
185
- break;
186
- case "png":
187
- mediaType = "image/png";
188
- break;
189
- case "webp":
190
- mediaType = "image/webp";
191
- break;
192
- case "gif":
193
- mediaType = "image/gif";
194
- break;
195
- default:
196
- throw new Error(`Unsupported image format: ${message.format}`);
197
- }
198
- return {
199
- role: "user",
200
- content: [
201
- {
202
- type: "image",
203
- source: {
204
- type: "base64",
205
- media_type: mediaType,
206
- data: message.bytes
207
- }
208
- }
209
- ]
210
- };
211
- } else if (message.isActionExecutionMessage()) {
212
- return {
213
- role: "assistant",
214
- content: [
215
- {
216
- id: message.id,
217
- type: "tool_use",
218
- input: message.arguments,
219
- name: message.name
220
- }
221
- ]
222
- };
223
- } else if (message.isResultMessage()) {
224
- return {
225
- role: "user",
226
- content: [
227
- {
228
- type: "tool_result",
229
- content: message.result || "Action completed successfully",
230
- tool_use_id: message.actionExecutionId
231
- }
232
- ]
233
- };
234
- }
235
- }
236
- __name(convertMessageToAnthropicMessage, "convertMessageToAnthropicMessage");
237
-
238
- // src/service-adapters/anthropic/anthropic-adapter.ts
239
- import { randomId, randomUUID } from "@copilotkit/shared";
240
- var DEFAULT_MODEL = "claude-3-5-sonnet-latest";
241
- var AnthropicAdapter = class {
242
- model = DEFAULT_MODEL;
243
- provider = "anthropic";
244
- promptCaching;
245
- _anthropic;
246
- get anthropic() {
247
- return this._anthropic;
248
- }
249
- get name() {
250
- return "AnthropicAdapter";
251
- }
252
- constructor(params) {
253
- this._anthropic = (params == null ? void 0 : params.anthropic) || new Anthropic({});
254
- if (params == null ? void 0 : params.model) {
255
- this.model = params.model;
256
- }
257
- this.promptCaching = (params == null ? void 0 : params.promptCaching) || {
258
- enabled: false
259
- };
260
- }
261
- /**
262
- * Adds cache control to system prompt
263
- */
264
- addSystemPromptCaching(system, debug = false) {
265
- if (!this.promptCaching.enabled || !system) {
266
- return system;
267
- }
268
- const originalTextLength = system.length;
269
- if (debug) {
270
- console.log(`[ANTHROPIC CACHE DEBUG] Added cache control to system prompt (${originalTextLength} chars).`);
271
- }
272
- return [
273
- {
274
- type: "text",
275
- text: system,
276
- cache_control: {
277
- type: "ephemeral"
278
- }
279
- }
280
- ];
281
- }
282
- /**
283
- * Adds cache control to the final message
284
- */
285
- addIncrementalMessageCaching(messages, debug = false) {
286
- if (!this.promptCaching.enabled || messages.length === 0) {
287
- return messages;
288
- }
289
- const finalMessage = messages[messages.length - 1];
290
- const messageNumber = messages.length;
291
- if (Array.isArray(finalMessage.content) && finalMessage.content.length > 0) {
292
- const finalBlock = finalMessage.content[finalMessage.content.length - 1];
293
- const updatedMessages = [
294
- ...messages.slice(0, -1),
295
- {
296
- ...finalMessage,
297
- content: [
298
- ...finalMessage.content.slice(0, -1),
299
- {
300
- ...finalBlock,
301
- cache_control: {
302
- type: "ephemeral"
303
- }
304
- }
305
- ]
306
- }
307
- ];
308
- if (debug) {
309
- console.log(`[ANTHROPIC CACHE DEBUG] Added cache control to final message (message ${messageNumber}).`);
310
- }
311
- return updatedMessages;
312
- }
313
- return messages;
314
- }
315
- shouldGenerateFallbackResponse(messages) {
316
- var _a, _b, _c;
317
- if (messages.length === 0)
318
- return false;
319
- const lastMessage = messages[messages.length - 1];
320
- const endsWithToolResult = lastMessage.role === "user" && Array.isArray(lastMessage.content) && lastMessage.content.some((content) => content.type === "tool_result");
321
- if (messages.length >= 3 && endsWithToolResult) {
322
- const lastThree = messages.slice(-3);
323
- const hasRecentToolPattern = ((_a = lastThree[0]) == null ? void 0 : _a.role) === "user" && // Initial user message
324
- ((_b = lastThree[1]) == null ? void 0 : _b.role) === "assistant" && // Assistant tool use
325
- Array.isArray(lastThree[1].content) && lastThree[1].content.some((content) => content.type === "tool_use") && ((_c = lastThree[2]) == null ? void 0 : _c.role) === "user" && // Tool result
326
- Array.isArray(lastThree[2].content) && lastThree[2].content.some((content) => content.type === "tool_result");
327
- return hasRecentToolPattern;
328
- }
329
- return endsWithToolResult;
330
- }
331
- async process(request) {
332
- const { threadId, model = this.model, messages: rawMessages, actions, eventSource, forwardedParameters } = request;
333
- const tools = actions.map(convertActionInputToAnthropicTool);
334
- const messages = [
335
- ...rawMessages
336
- ];
337
- const instructionsMessage = messages.shift();
338
- const instructions = instructionsMessage.isTextMessage() ? instructionsMessage.content : "";
339
- const validToolUseIds = /* @__PURE__ */ new Set();
340
- for (const message of messages) {
341
- if (message.isActionExecutionMessage()) {
342
- validToolUseIds.add(message.id);
343
- }
344
- }
345
- const processedToolResultIds = /* @__PURE__ */ new Set();
346
- const anthropicMessages = messages.map((message) => {
347
- if (message.isResultMessage()) {
348
- if (!validToolUseIds.has(message.actionExecutionId)) {
349
- return null;
350
- }
351
- if (processedToolResultIds.has(message.actionExecutionId)) {
352
- return null;
353
- }
354
- processedToolResultIds.add(message.actionExecutionId);
355
- return {
356
- role: "user",
357
- content: [
358
- {
359
- type: "tool_result",
360
- content: message.result || "Action completed successfully",
361
- tool_use_id: message.actionExecutionId
362
- }
363
- ]
364
- };
365
- }
366
- return convertMessageToAnthropicMessage(message);
367
- }).filter(Boolean).filter((msg) => {
368
- if (msg.role === "assistant" && Array.isArray(msg.content)) {
369
- const hasEmptyTextOnly = msg.content.length === 1 && msg.content[0].type === "text" && (!msg.content[0].text || msg.content[0].text.trim() === "");
370
- return !hasEmptyTextOnly;
371
- }
372
- return true;
373
- });
374
- const limitedMessages = limitMessagesToTokenCount(anthropicMessages, tools, model);
375
- const cachedSystemPrompt = this.addSystemPromptCaching(instructions, this.promptCaching.debug);
376
- const cachedMessages = this.addIncrementalMessageCaching(limitedMessages, this.promptCaching.debug);
377
- let toolChoice = forwardedParameters == null ? void 0 : forwardedParameters.toolChoice;
378
- if ((forwardedParameters == null ? void 0 : forwardedParameters.toolChoice) === "function") {
379
- toolChoice = {
380
- type: "tool",
381
- name: forwardedParameters.toolChoiceFunctionName
382
- };
383
- }
384
- try {
385
- const createParams = {
386
- system: cachedSystemPrompt,
387
- model: this.model,
388
- messages: cachedMessages,
389
- max_tokens: (forwardedParameters == null ? void 0 : forwardedParameters.maxTokens) || 1024,
390
- ...(forwardedParameters == null ? void 0 : forwardedParameters.temperature) ? {
391
- temperature: forwardedParameters.temperature
392
- } : {},
393
- ...tools.length > 0 && {
394
- tools
395
- },
396
- ...toolChoice && {
397
- tool_choice: toolChoice
398
- },
399
- stream: true
400
- };
401
- const stream = await this.anthropic.messages.create(createParams);
402
- eventSource.stream(async (eventStream$) => {
403
- let mode = null;
404
- let didOutputText = false;
405
- let currentMessageId = randomId();
406
- let currentToolCallId = randomId();
407
- let filterThinkingTextBuffer = new FilterThinkingTextBuffer();
408
- let hasReceivedContent = false;
409
- try {
410
- for await (const chunk of stream) {
411
- if (chunk.type === "message_start") {
412
- currentMessageId = chunk.message.id;
413
- } else if (chunk.type === "content_block_start") {
414
- hasReceivedContent = true;
415
- if (chunk.content_block.type === "text") {
416
- didOutputText = false;
417
- filterThinkingTextBuffer.reset();
418
- mode = "message";
419
- } else if (chunk.content_block.type === "tool_use") {
420
- currentToolCallId = chunk.content_block.id;
421
- eventStream$.sendActionExecutionStart({
422
- actionExecutionId: currentToolCallId,
423
- actionName: chunk.content_block.name,
424
- parentMessageId: currentMessageId
425
- });
426
- mode = "function";
427
- }
428
- } else if (chunk.type === "content_block_delta") {
429
- if (chunk.delta.type === "text_delta") {
430
- const text = filterThinkingTextBuffer.onTextChunk(chunk.delta.text);
431
- if (text.length > 0) {
432
- if (!didOutputText) {
433
- eventStream$.sendTextMessageStart({
434
- messageId: currentMessageId
435
- });
436
- didOutputText = true;
437
- }
438
- eventStream$.sendTextMessageContent({
439
- messageId: currentMessageId,
440
- content: text
441
- });
442
- }
443
- } else if (chunk.delta.type === "input_json_delta") {
444
- eventStream$.sendActionExecutionArgs({
445
- actionExecutionId: currentToolCallId,
446
- args: chunk.delta.partial_json
447
- });
448
- }
449
- } else if (chunk.type === "content_block_stop") {
450
- if (mode === "message") {
451
- if (didOutputText) {
452
- eventStream$.sendTextMessageEnd({
453
- messageId: currentMessageId
454
- });
455
- }
456
- } else if (mode === "function") {
457
- eventStream$.sendActionExecutionEnd({
458
- actionExecutionId: currentToolCallId
459
- });
460
- }
461
- }
462
- }
463
- } catch (error) {
464
- throw convertServiceAdapterError(error, "Anthropic");
465
- }
466
- if (!hasReceivedContent && this.shouldGenerateFallbackResponse(cachedMessages)) {
467
- let fallbackContent = "Task completed successfully.";
468
- const lastMessage = cachedMessages[cachedMessages.length - 1];
469
- if ((lastMessage == null ? void 0 : lastMessage.role) === "user" && Array.isArray(lastMessage.content)) {
470
- const toolResult = lastMessage.content.find((c) => c.type === "tool_result");
471
- if ((toolResult == null ? void 0 : toolResult.content) && toolResult.content !== "Action completed successfully") {
472
- fallbackContent = toolResult.content;
473
- }
474
- }
475
- currentMessageId = randomId();
476
- eventStream$.sendTextMessageStart({
477
- messageId: currentMessageId
478
- });
479
- eventStream$.sendTextMessageContent({
480
- messageId: currentMessageId,
481
- content: fallbackContent
482
- });
483
- eventStream$.sendTextMessageEnd({
484
- messageId: currentMessageId
485
- });
486
- }
487
- eventStream$.complete();
488
- });
489
- } catch (error) {
490
- throw convertServiceAdapterError(error, "Anthropic");
491
- }
492
- return {
493
- threadId: threadId || randomUUID()
494
- };
495
- }
496
- };
497
- __name(AnthropicAdapter, "AnthropicAdapter");
498
- var THINKING_TAG = "<thinking>";
499
- var THINKING_TAG_END = "</thinking>";
500
- var FilterThinkingTextBuffer = /* @__PURE__ */ __name(class FilterThinkingTextBuffer2 {
501
- buffer;
502
- didFilterThinkingTag = false;
503
- constructor() {
504
- this.buffer = "";
505
- }
506
- onTextChunk(text) {
507
- this.buffer += text;
508
- if (this.didFilterThinkingTag) {
509
- return text;
510
- }
511
- const potentialTag = this.buffer.slice(0, THINKING_TAG.length);
512
- if (THINKING_TAG.startsWith(potentialTag)) {
513
- if (this.buffer.includes(THINKING_TAG_END)) {
514
- const end = this.buffer.indexOf(THINKING_TAG_END);
515
- const filteredText = this.buffer.slice(end + THINKING_TAG_END.length);
516
- this.buffer = filteredText;
517
- this.didFilterThinkingTag = true;
518
- return filteredText;
519
- } else {
520
- return "";
521
- }
522
- }
523
- return text;
524
- }
525
- reset() {
526
- this.buffer = "";
527
- this.didFilterThinkingTag = false;
528
- }
529
- }, "FilterThinkingTextBuffer");
530
-
531
- // src/service-adapters/experimental/ollama/ollama-adapter.ts
532
- import { Ollama } from "@langchain/community/llms/ollama";
533
- import { randomId as randomId2, randomUUID as randomUUID2 } from "@copilotkit/shared";
534
- var DEFAULT_MODEL2 = "llama3:latest";
535
- var ExperimentalOllamaAdapter = class {
536
- model;
537
- provider = "ollama";
538
- get name() {
539
- return "OllamaAdapter";
540
- }
541
- constructor(options) {
542
- if (options == null ? void 0 : options.model) {
543
- this.model = options.model;
544
- } else {
545
- this.model = DEFAULT_MODEL2;
546
- }
547
- }
548
- async process(request) {
549
- const { messages, actions, eventSource } = request;
550
- const ollama = new Ollama({
551
- model: this.model
552
- });
553
- const contents = messages.filter((m) => m.isTextMessage()).map((m) => m.content);
554
- const _stream = await ollama.stream(contents);
555
- eventSource.stream(async (eventStream$) => {
556
- const currentMessageId = randomId2();
557
- eventStream$.sendTextMessageStart({
558
- messageId: currentMessageId
559
- });
560
- for await (const chunkText of _stream) {
561
- eventStream$.sendTextMessageContent({
562
- messageId: currentMessageId,
563
- content: chunkText
564
- });
565
- }
566
- eventStream$.sendTextMessageEnd({
567
- messageId: currentMessageId
568
- });
569
- eventStream$.complete();
570
- });
571
- return {
572
- threadId: request.threadId || randomUUID2()
573
- };
574
- }
575
- };
576
- __name(ExperimentalOllamaAdapter, "ExperimentalOllamaAdapter");
577
-
578
- // src/service-adapters/bedrock/bedrock-adapter.ts
579
- import { ChatBedrockConverse } from "@langchain/aws";
580
- var DEFAULT_MODEL3 = "amazon.nova-lite-v1:0";
581
- var BedrockAdapter = class extends LangChainAdapter {
582
- provider = "bedrock";
583
- model = DEFAULT_MODEL3;
584
- constructor(options) {
585
- super({
586
- chainFn: async ({ messages, tools, threadId }) => {
587
- this.model = (options == null ? void 0 : options.model) ?? "amazon.nova-lite-v1:0";
588
- const model = new ChatBedrockConverse({
589
- model: this.model,
590
- region: (options == null ? void 0 : options.region) ?? "us-east-1",
591
- credentials: (options == null ? void 0 : options.credentials) ? {
592
- accessKeyId: options.credentials.accessKeyId,
593
- secretAccessKey: options.credentials.secretAccessKey
594
- } : void 0
595
- }).bindTools(tools);
596
- return model.stream(messages);
597
- }
598
- });
599
- }
600
- };
601
- __name(BedrockAdapter, "BedrockAdapter");
602
-
603
- // src/service-adapters/empty/empty-adapter.ts
604
- import { randomUUID as randomUUID3 } from "@copilotkit/shared";
605
- var EmptyAdapter = class {
606
- async process(request) {
607
- return {
608
- threadId: request.threadId || randomUUID3()
609
- };
610
- }
611
- get name() {
612
- return "EmptyAdapter";
613
- }
614
- };
615
- __name(EmptyAdapter, "EmptyAdapter");
616
- var ExperimentalEmptyAdapter = EmptyAdapter;
617
-
618
- export {
619
- RemoteChain,
620
- AnthropicAdapter,
621
- ExperimentalOllamaAdapter,
622
- BedrockAdapter,
623
- EmptyAdapter,
624
- ExperimentalEmptyAdapter
625
- };
626
- //# sourceMappingURL=chunk-ERUOA47O.mjs.map