@copilotkit/react-core 0.25.0 → 0.36.0-mme-pre.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 (150) hide show
  1. package/.turbo/turbo-build.log +184 -165
  2. package/CHANGELOG.md +22 -0
  3. package/dist/{chunk-72BJ3A3S.mjs → chunk-2C4UBKRR.mjs} +2 -2
  4. package/dist/{chunk-KTUNGBJF.mjs → chunk-2DKLSG5S.mjs} +2 -2
  5. package/dist/{chunk-4NNFSZOY.mjs → chunk-32T4S22Q.mjs} +3 -3
  6. package/dist/chunk-32T4S22Q.mjs.map +1 -0
  7. package/dist/{chunk-CGT3AVYT.mjs → chunk-7YTDTTX5.mjs} +6 -4
  8. package/dist/chunk-7YTDTTX5.mjs.map +1 -0
  9. package/dist/{chunk-ZIR7KCEA.mjs → chunk-B5CULQRZ.mjs} +2 -2
  10. package/dist/chunk-B5CULQRZ.mjs.map +1 -0
  11. package/dist/chunk-BTJD4QON.mjs +122 -0
  12. package/dist/chunk-BTJD4QON.mjs.map +1 -0
  13. package/dist/chunk-CYDWEPFL.mjs +1 -0
  14. package/dist/{chunk-6ARSX7BW.mjs → chunk-FHGMPFKO.mjs} +2 -2
  15. package/dist/{chunk-PC6FY3LD.mjs → chunk-GJGYNK46.mjs} +2 -2
  16. package/dist/{chunk-7LVVZQRG.mjs → chunk-JWANHQCM.mjs} +22 -6
  17. package/dist/chunk-JWANHQCM.mjs.map +1 -0
  18. package/dist/{chunk-M6WULIFO.mjs → chunk-L3LL6N7J.mjs} +5 -5
  19. package/dist/{chunk-6VF626RG.mjs → chunk-S2YA76YW.mjs} +5 -5
  20. package/dist/{chunk-MRXNTQOX.mjs → chunk-SKC7AJIV.mjs} +3 -1
  21. package/dist/chunk-SKC7AJIV.mjs.map +1 -0
  22. package/dist/{chunk-OWBDHSLH.mjs → chunk-T6UD6AJ2.mjs} +9 -4
  23. package/dist/chunk-T6UD6AJ2.mjs.map +1 -0
  24. package/dist/{chunk-O35YOIHC.mjs → chunk-TW5FS2QT.mjs} +8 -3
  25. package/dist/chunk-TW5FS2QT.mjs.map +1 -0
  26. package/dist/{chunk-VUY2K2DI.mjs → chunk-YWITCRBI.mjs} +2 -2
  27. package/dist/{chunk-MZ5UN3BY.mjs → chunk-ZFS5SQUT.mjs} +2 -2
  28. package/dist/components/copilot-provider/copilotkit-props.d.ts +18 -12
  29. package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
  30. package/dist/components/copilot-provider/copilotkit.d.ts +0 -20
  31. package/dist/components/copilot-provider/copilotkit.js +24 -3
  32. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  33. package/dist/components/copilot-provider/copilotkit.mjs +4 -4
  34. package/dist/components/copilot-provider/index.js +24 -3
  35. package/dist/components/copilot-provider/index.js.map +1 -1
  36. package/dist/components/copilot-provider/index.mjs +4 -4
  37. package/dist/components/index.js +24 -3
  38. package/dist/components/index.js.map +1 -1
  39. package/dist/components/index.mjs +4 -4
  40. package/dist/context/copilot-context.d.ts +14 -0
  41. package/dist/context/copilot-context.js +6 -1
  42. package/dist/context/copilot-context.js.map +1 -1
  43. package/dist/context/copilot-context.mjs +2 -2
  44. package/dist/context/index.d.ts +1 -0
  45. package/dist/context/index.js +6 -1
  46. package/dist/context/index.js.map +1 -1
  47. package/dist/context/index.mjs +2 -2
  48. package/dist/hooks/index.d.ts +1 -0
  49. package/dist/hooks/index.js +10 -3
  50. package/dist/hooks/index.js.map +1 -1
  51. package/dist/hooks/index.mjs +12 -12
  52. package/dist/hooks/use-chat.d.ts +1 -0
  53. package/dist/hooks/use-chat.js +4 -2
  54. package/dist/hooks/use-chat.js.map +1 -1
  55. package/dist/hooks/use-chat.mjs +3 -3
  56. package/dist/hooks/use-copilot-action.js +6 -1
  57. package/dist/hooks/use-copilot-action.js.map +1 -1
  58. package/dist/hooks/use-copilot-action.mjs +3 -3
  59. package/dist/hooks/use-copilot-chat.d.ts +1 -0
  60. package/dist/hooks/use-copilot-chat.js +10 -3
  61. package/dist/hooks/use-copilot-chat.js.map +1 -1
  62. package/dist/hooks/use-copilot-chat.mjs +7 -7
  63. package/dist/hooks/use-copilot-readable.js +6 -1
  64. package/dist/hooks/use-copilot-readable.js.map +1 -1
  65. package/dist/hooks/use-copilot-readable.mjs +3 -3
  66. package/dist/hooks/use-flat-category-store.mjs +1 -1
  67. package/dist/hooks/use-make-copilot-actionable.js +6 -1
  68. package/dist/hooks/use-make-copilot-actionable.js.map +1 -1
  69. package/dist/hooks/use-make-copilot-actionable.mjs +3 -3
  70. package/dist/hooks/use-make-copilot-document-readable.js +6 -1
  71. package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
  72. package/dist/hooks/use-make-copilot-document-readable.mjs +3 -3
  73. package/dist/hooks/use-make-copilot-readable.js +6 -1
  74. package/dist/hooks/use-make-copilot-readable.js.map +1 -1
  75. package/dist/hooks/use-make-copilot-readable.mjs +3 -3
  76. package/dist/hooks/use-tree.mjs +2 -2
  77. package/dist/index.d.ts +2 -0
  78. package/dist/index.js +143 -8
  79. package/dist/index.js.map +1 -1
  80. package/dist/index.mjs +20 -15
  81. package/dist/lib/copilot-task.d.ts +98 -1
  82. package/dist/lib/copilot-task.js +9 -2
  83. package/dist/lib/copilot-task.js.map +1 -1
  84. package/dist/lib/copilot-task.mjs +6 -6
  85. package/dist/lib/index.d.ts +1 -0
  86. package/dist/lib/index.js +9 -2
  87. package/dist/lib/index.js.map +1 -1
  88. package/dist/lib/index.mjs +6 -6
  89. package/dist/openai-assistants/hooks/index.js +6 -1
  90. package/dist/openai-assistants/hooks/index.js.map +1 -1
  91. package/dist/openai-assistants/hooks/index.mjs +6 -6
  92. package/dist/openai-assistants/hooks/use-assistants.mjs +2 -2
  93. package/dist/openai-assistants/hooks/use-copilot-chat-v2.js +6 -1
  94. package/dist/openai-assistants/hooks/use-copilot-chat-v2.js.map +1 -1
  95. package/dist/openai-assistants/hooks/use-copilot-chat-v2.mjs +6 -6
  96. package/dist/openai-assistants/index.js +6 -1
  97. package/dist/openai-assistants/index.js.map +1 -1
  98. package/dist/openai-assistants/index.mjs +6 -6
  99. package/dist/openai-assistants/utils/index.mjs +2 -2
  100. package/dist/openai-assistants/utils/process-message-stream.mjs +2 -2
  101. package/dist/types/chat-suggestion-configuration.d.ts +22 -0
  102. package/dist/types/chat-suggestion-configuration.js +19 -0
  103. package/dist/types/chat-suggestion-configuration.js.map +1 -0
  104. package/dist/types/chat-suggestion-configuration.mjs +1 -0
  105. package/dist/types/chat-suggestion-configuration.mjs.map +1 -0
  106. package/dist/types/index.d.ts +1 -0
  107. package/dist/types/index.js.map +1 -1
  108. package/dist/utils/extract.d.ts +37 -0
  109. package/dist/utils/extract.js +245 -0
  110. package/dist/utils/extract.js.map +1 -0
  111. package/dist/utils/extract.mjs +15 -0
  112. package/dist/utils/extract.mjs.map +1 -0
  113. package/dist/utils/fetch-chat-completion.d.ts +8 -1
  114. package/dist/utils/fetch-chat-completion.js +4 -2
  115. package/dist/utils/fetch-chat-completion.js.map +1 -1
  116. package/dist/utils/fetch-chat-completion.mjs +2 -2
  117. package/dist/utils/index.d.ts +9 -0
  118. package/dist/utils/index.js +267 -0
  119. package/dist/utils/index.js.map +1 -0
  120. package/dist/utils/index.mjs +23 -0
  121. package/dist/utils/index.mjs.map +1 -0
  122. package/package.json +4 -4
  123. package/src/components/copilot-provider/copilotkit-props.tsx +20 -12
  124. package/src/components/copilot-provider/copilotkit.tsx +62 -21
  125. package/src/context/copilot-context.tsx +24 -1
  126. package/src/hooks/use-chat.ts +2 -2
  127. package/src/hooks/use-copilot-readable.ts +94 -0
  128. package/src/index.tsx +1 -6
  129. package/src/lib/copilot-task.ts +97 -1
  130. package/src/types/chat-suggestion-configuration.ts +23 -0
  131. package/src/types/index.ts +1 -0
  132. package/src/utils/extract.ts +164 -0
  133. package/src/utils/fetch-chat-completion.ts +5 -1
  134. package/src/utils/index.ts +8 -0
  135. package/typedoc.json +4 -0
  136. package/dist/chunk-4NNFSZOY.mjs.map +0 -1
  137. package/dist/chunk-7LVVZQRG.mjs.map +0 -1
  138. package/dist/chunk-CGT3AVYT.mjs.map +0 -1
  139. package/dist/chunk-O35YOIHC.mjs.map +0 -1
  140. package/dist/chunk-OWBDHSLH.mjs.map +0 -1
  141. package/dist/chunk-ZIR7KCEA.mjs.map +0 -1
  142. /package/dist/{chunk-72BJ3A3S.mjs.map → chunk-2C4UBKRR.mjs.map} +0 -0
  143. /package/dist/{chunk-KTUNGBJF.mjs.map → chunk-2DKLSG5S.mjs.map} +0 -0
  144. /package/dist/{chunk-MRXNTQOX.mjs.map → chunk-CYDWEPFL.mjs.map} +0 -0
  145. /package/dist/{chunk-6ARSX7BW.mjs.map → chunk-FHGMPFKO.mjs.map} +0 -0
  146. /package/dist/{chunk-PC6FY3LD.mjs.map → chunk-GJGYNK46.mjs.map} +0 -0
  147. /package/dist/{chunk-M6WULIFO.mjs.map → chunk-L3LL6N7J.mjs.map} +0 -0
  148. /package/dist/{chunk-6VF626RG.mjs.map → chunk-S2YA76YW.mjs.map} +0 -0
  149. /package/dist/{chunk-VUY2K2DI.mjs.map → chunk-YWITCRBI.mjs.map} +0 -0
  150. /package/dist/{chunk-MZ5UN3BY.mjs.map → chunk-ZFS5SQUT.mjs.map} +0 -0
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __export = (target, all) => {
23
+ for (var name in all)
24
+ __defProp(target, name, { get: all[name], enumerable: true });
25
+ };
26
+ var __copyProps = (to, from, except, desc) => {
27
+ if (from && typeof from === "object" || typeof from === "function") {
28
+ for (let key of __getOwnPropNames(from))
29
+ if (!__hasOwnProp.call(to, key) && key !== except)
30
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
31
+ }
32
+ return to;
33
+ };
34
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
35
+ // If the importer is in node compatibility mode or this is not an ESM
36
+ // file that has been converted to a CommonJS file using a Babel-
37
+ // compatible transform (i.e. "__esModule" has not been set), then set
38
+ // "default" to the CommonJS "module.exports" for node compatibility.
39
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
40
+ mod
41
+ ));
42
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
43
+ var __async = (__this, __arguments, generator) => {
44
+ return new Promise((resolve, reject) => {
45
+ var fulfilled = (value) => {
46
+ try {
47
+ step(generator.next(value));
48
+ } catch (e) {
49
+ reject(e);
50
+ }
51
+ };
52
+ var rejected = (value) => {
53
+ try {
54
+ step(generator.throw(value));
55
+ } catch (e) {
56
+ reject(e);
57
+ }
58
+ };
59
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
60
+ step((generator = generator.apply(__this, __arguments)).next());
61
+ });
62
+ };
63
+
64
+ // src/utils/extract.ts
65
+ var extract_exports = {};
66
+ __export(extract_exports, {
67
+ extract: () => extract
68
+ });
69
+ module.exports = __toCommonJS(extract_exports);
70
+ var import_shared3 = require("@copilotkit/shared");
71
+
72
+ // src/components/copilot-provider/copilotkit.tsx
73
+ var import_react = require("react");
74
+ var import_shared = require("@copilotkit/shared");
75
+ var import_jsx_runtime = require("react/jsx-runtime");
76
+ var defaultCopilotContextCategories = ["global"];
77
+
78
+ // src/utils/fetch-chat-completion.ts
79
+ var import_shared2 = require("@copilotkit/shared");
80
+ function fetchChatCompletion(_0) {
81
+ return __async(this, arguments, function* ({
82
+ copilotConfig,
83
+ model,
84
+ messages,
85
+ tools,
86
+ temperature,
87
+ headers,
88
+ body,
89
+ signal,
90
+ toolChoice
91
+ }) {
92
+ temperature || (temperature = 0.5);
93
+ tools || (tools = []);
94
+ const cleanedMessages = messages.map((message) => {
95
+ const { content, role, name, function_call } = message;
96
+ return { content, role, name, function_call };
97
+ });
98
+ toolChoice || (toolChoice = "auto");
99
+ const response = yield fetch(copilotConfig.chatApiEndpoint, {
100
+ method: "POST",
101
+ headers: __spreadValues(__spreadValues({
102
+ "Content-Type": "application/json"
103
+ }, copilotConfig.headers), headers ? __spreadValues({}, headers) : {}),
104
+ body: JSON.stringify(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({
105
+ model,
106
+ messages: cleanedMessages,
107
+ stream: true
108
+ }, tools.length ? { tools } : {}), temperature ? { temperature } : {}), tools.length != 0 ? { tool_choice: toolChoice } : {}), copilotConfig.body), copilotConfig.backendOnlyProps), excludeBackendOnlyProps(copilotConfig)), body ? __spreadValues({}, body) : {}), copilotConfig.cloud ? { cloud: copilotConfig.cloud } : {})),
109
+ signal
110
+ });
111
+ return response;
112
+ });
113
+ }
114
+ function excludeBackendOnlyProps(copilotConfig) {
115
+ var _a;
116
+ const backendOnlyProps = (_a = copilotConfig.backendOnlyProps) != null ? _a : {};
117
+ if (Object.keys(backendOnlyProps).length > 0) {
118
+ return {
119
+ [import_shared2.EXCLUDE_FROM_FORWARD_PROPS_KEYS]: Object.keys(backendOnlyProps)
120
+ };
121
+ } else {
122
+ return {};
123
+ }
124
+ }
125
+ function fetchAndDecodeChatCompletion(params) {
126
+ return __async(this, null, function* () {
127
+ const response = yield fetchChatCompletion(params);
128
+ if (!response.ok || !response.body) {
129
+ response.events = null;
130
+ } else {
131
+ const events = yield (0, import_shared2.decodeChatCompletion)((0, import_shared2.parseChatCompletion)(response.body));
132
+ response.events = events;
133
+ }
134
+ return response;
135
+ });
136
+ }
137
+
138
+ // src/utils/extract.ts
139
+ var import_untruncate_json = __toESM(require("untruncate-json"));
140
+ function extract(_0) {
141
+ return __async(this, arguments, function* ({
142
+ context,
143
+ instructions,
144
+ parameters,
145
+ include,
146
+ data,
147
+ abortSignal,
148
+ stream
149
+ }) {
150
+ var _a, _b;
151
+ const { messages } = context;
152
+ const action = {
153
+ name: "extract",
154
+ parameters,
155
+ handler: (args) => {
156
+ }
157
+ };
158
+ const includeReadable = (_a = include == null ? void 0 : include.readable) != null ? _a : false;
159
+ const includeMessages = (_b = include == null ? void 0 : include.messages) != null ? _b : false;
160
+ let contextString = "";
161
+ if (data) {
162
+ contextString = (typeof data === "string" ? data : JSON.stringify(data)) + "\n\n";
163
+ }
164
+ if (includeReadable) {
165
+ contextString += context.getContextString([], defaultCopilotContextCategories);
166
+ }
167
+ const systemMessage = {
168
+ id: "system",
169
+ content: makeSystemMessage(contextString, instructions),
170
+ role: "system"
171
+ };
172
+ const headers = __spreadValues(__spreadValues({}, context.copilotApiConfig.headers || {}), context.copilotApiConfig.publicApiKey ? { [import_shared3.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: context.copilotApiConfig.publicApiKey } : {});
173
+ const response = yield fetchAndDecodeChatCompletion({
174
+ copilotConfig: context.copilotApiConfig,
175
+ messages: includeMessages ? [systemMessage, ...messages] : [systemMessage],
176
+ tools: context.getChatCompletionFunctionDescriptions({ extract: action }),
177
+ headers,
178
+ body: context.copilotApiConfig.body,
179
+ toolChoice: { type: "function", function: { name: "extract" } },
180
+ signal: abortSignal
181
+ });
182
+ if (!response.events) {
183
+ throw new Error("extract() failed: Could not fetch chat completion");
184
+ }
185
+ const reader = response.events.getReader();
186
+ let isInitial = true;
187
+ while (true) {
188
+ const { done, value } = yield reader.read();
189
+ if (done) {
190
+ break;
191
+ }
192
+ if (value.type === "partial") {
193
+ try {
194
+ let partialArguments = JSON.parse((0, import_untruncate_json.default)(value.arguments));
195
+ stream == null ? void 0 : stream({
196
+ status: isInitial ? "initial" : "inProgress",
197
+ args: partialArguments
198
+ });
199
+ isInitial = false;
200
+ } catch (e) {
201
+ }
202
+ }
203
+ if (value.type === "function") {
204
+ stream == null ? void 0 : stream({
205
+ status: "complete",
206
+ args: value.arguments
207
+ });
208
+ return value.arguments;
209
+ }
210
+ }
211
+ throw new Error("extract() failed: No function call occurred");
212
+ });
213
+ }
214
+ function makeSystemMessage(contextString, instructions) {
215
+ return `
216
+ Please act as an efficient, competent, conscientious, and industrious professional assistant.
217
+
218
+ Help the user achieve their goals, and you do so in a way that is as efficient as possible, without unnecessary fluff, but also without sacrificing professionalism.
219
+ Always be polite and respectful, and prefer brevity over verbosity.
220
+
221
+ The user has provided you with the following context:
222
+ \`\`\`
223
+ ${contextString}
224
+ \`\`\`
225
+
226
+ They have also provided you with a function you MUST call to initiate actions on their behalf.
227
+
228
+ Please assist them as best you can.
229
+
230
+ This is not a conversation, so please do not ask questions. Just call the function without saying anything else.
231
+
232
+ The user has given you the following task to complete:
233
+
234
+ \`\`\`
235
+ ${instructions}
236
+ \`\`\`
237
+
238
+ Any additional messages provided are for providing context only and should not be used to ask questions or engage in conversation.
239
+ `;
240
+ }
241
+ // Annotate the CommonJS export names for ESM import in node:
242
+ 0 && (module.exports = {
243
+ extract
244
+ });
245
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/extract.ts","../../src/components/copilot-provider/copilotkit.tsx","../../src/utils/fetch-chat-completion.ts"],"sourcesContent":["import {\n Action,\n COPILOT_CLOUD_PUBLIC_API_KEY_HEADER,\n MappedParameterTypes,\n Message,\n Parameter,\n} from \"@copilotkit/shared\";\nimport { CopilotContextParams } from \"../context\";\nimport { defaultCopilotContextCategories } from \"../components\";\nimport { fetchAndDecodeChatCompletion } from \"./fetch-chat-completion\";\nimport untruncateJson from \"untruncate-json\";\n\ninterface InitialState<T extends Parameter[] | [] = []> {\n status: \"initial\";\n args: Partial<MappedParameterTypes<T>>;\n}\n\ninterface InProgressState<T extends Parameter[] | [] = []> {\n status: \"inProgress\";\n args: Partial<MappedParameterTypes<T>>;\n}\n\ninterface CompleteState<T extends Parameter[] | [] = []> {\n status: \"complete\";\n args: MappedParameterTypes<T>;\n}\n\ntype StreamHandlerArgs<T extends Parameter[] | [] = []> =\n | InitialState<T>\n | InProgressState<T>\n | CompleteState<T>;\n\ninterface ExtractOptions<T extends Parameter[]> {\n context: CopilotContextParams;\n instructions: string;\n parameters: T;\n include?: IncludeOptions;\n data?: any;\n abortSignal?: AbortSignal;\n stream?: (args: StreamHandlerArgs<T>) => void;\n}\n\ninterface IncludeOptions {\n readable?: boolean;\n messages?: boolean;\n}\n\nexport async function extract<const T extends Parameter[]>({\n context,\n instructions,\n parameters,\n include,\n data,\n abortSignal,\n stream,\n}: ExtractOptions<T>): Promise<MappedParameterTypes<T>> {\n const { messages } = context;\n\n const action: Action<any> = {\n name: \"extract\",\n parameters,\n handler: (args: any) => {},\n };\n\n const includeReadable = include?.readable ?? false;\n const includeMessages = include?.messages ?? false;\n\n let contextString = \"\";\n\n if (data) {\n contextString = (typeof data === \"string\" ? data : JSON.stringify(data)) + \"\\n\\n\";\n }\n\n if (includeReadable) {\n contextString += context.getContextString([], defaultCopilotContextCategories);\n }\n\n const systemMessage: Message = {\n id: \"system\",\n content: makeSystemMessage(contextString, instructions),\n role: \"system\",\n };\n\n const headers = {\n ...(context.copilotApiConfig.headers || {}),\n ...(context.copilotApiConfig.publicApiKey\n ? { [COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: context.copilotApiConfig.publicApiKey }\n : {}),\n };\n\n const response = await fetchAndDecodeChatCompletion({\n copilotConfig: context.copilotApiConfig,\n messages: includeMessages ? [systemMessage, ...messages] : [systemMessage],\n tools: context.getChatCompletionFunctionDescriptions({ extract: action }),\n headers,\n body: context.copilotApiConfig.body,\n toolChoice: { type: \"function\", function: { name: \"extract\" } },\n signal: abortSignal,\n });\n\n if (!response.events) {\n throw new Error(\"extract() failed: Could not fetch chat completion\");\n }\n\n const reader = response.events.getReader();\n let isInitial = true;\n\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) {\n break;\n }\n\n if (value.type === \"partial\") {\n try {\n let partialArguments = JSON.parse(untruncateJson(value.arguments));\n stream?.({\n status: isInitial ? \"initial\" : \"inProgress\",\n args: partialArguments as Partial<MappedParameterTypes<T>>,\n });\n isInitial = false;\n } catch (e) {}\n }\n\n if (value.type === \"function\") {\n stream?.({\n status: \"complete\",\n args: value.arguments as MappedParameterTypes<T>,\n });\n return value.arguments as MappedParameterTypes<T>;\n }\n }\n\n throw new Error(\"extract() failed: No function call occurred\");\n}\n\nfunction makeSystemMessage(contextString: string, instructions: string): string {\n return `\nPlease act as an efficient, competent, conscientious, and industrious professional assistant.\n\nHelp the user achieve their goals, and you do so in a way that is as efficient as possible, without unnecessary fluff, but also without sacrificing professionalism.\nAlways be polite and respectful, and prefer brevity over verbosity.\n\nThe user has provided you with the following context:\n\\`\\`\\`\n${contextString}\n\\`\\`\\`\n\nThey have also provided you with a function you MUST call to initiate actions on their behalf.\n\nPlease assist them as best you can.\n\nThis is not a conversation, so please do not ask questions. Just call the function without saying anything else.\n\nThe user has given you the following task to complete:\n\n\\`\\`\\`\n${instructions}\n\\`\\`\\`\n\nAny additional messages provided are for providing context only and should not be used to ask questions or engage in conversation.\n`;\n}\n","/**\n * Provides the Copilot context to its children.\n * \n * <img\n * referrerPolicy=\"no-referrer-when-downgrade\"\n * src=\"https://static.scarf.sh/a.png?x-pxid=a9b290bb-38f9-4518-ac3b-8f54fdbf43be\"\n * />\n * \n * This component provides the Copilot context to its children.\n * It can be configured either with a chat API endpoint or a `CopilotApiConfig`.\n * \n * <Note>\n * The backend can use OpenAI, or you can bring your own LLM. For examples of the\n * backend api implementation, see `examples/next-openai` or the [runtime\n * docs](https://docs.copilotkit.ai/getting-started/quickstart-runtime).\n * </Note>\n * \n * <RequestExample>\n * ```jsx CopilotKit Example\n * import { CopilotKit } from \"@copilotkit/react-core\";\n * \n * <CopilotKit \n * runtimeUrl=\"https://your.copilotkit.api\">\n * <YourApp/>\n * </CopilotKit>\n * ```\n * </RequestExample>\n * \n * ## Example usage\n * \n * ```jsx\n * <CopilotKit publicApiKey=\"the api key or self host (see below)\">\n * <App />\n * </CopilotKit>\n```\n */\nimport { Ref, useCallback, useRef, useState } from \"react\";\nimport {\n CopilotContext,\n CopilotApiConfig,\n InChatRenderFunction,\n} from \"../../context/copilot-context\";\nimport useTree from \"../../hooks/use-tree\";\nimport { CopilotChatSuggestionConfiguration, DocumentPointer } from \"../../types\";\n\nimport {\n COPILOT_CLOUD_CHAT_URL,\n CopilotCloudConfig,\n FunctionCallHandler,\n Message,\n actionToChatCompletionFunction,\n} from \"@copilotkit/shared\";\n\nimport { FrontendAction } from \"../../types/frontend-action\";\nimport useFlatCategoryStore from \"../../hooks/use-flat-category-store\";\nimport { CopilotKitProps } from \"./copilotkit-props\";\nimport { ToolDefinition } from \"@copilotkit/shared\";\n\nexport function CopilotKit({ children, ...props }: CopilotKitProps) {\n // Compute all the functions and properties that we need to pass\n // to the CopilotContext.\n\n if (!props.runtimeUrl && !props.url && !props.publicApiKey) {\n throw new Error(\"Please provide either a url or a publicApiKey to the CopilotKit component.\");\n }\n\n const chatApiEndpoint = props.runtimeUrl || props.url || COPILOT_CLOUD_CHAT_URL;\n\n const [entryPoints, setEntryPoints] = useState<Record<string, FrontendAction<any>>>({});\n const chatComponentsCache = useRef<Record<string, InChatRenderFunction | string>>({});\n const { addElement, removeElement, printTree } = useTree();\n const [messages, setMessages] = useState<Message[]>([]);\n\n const {\n addElement: addDocument,\n removeElement: removeDocument,\n allElements: allDocuments,\n } = useFlatCategoryStore<DocumentPointer>();\n\n const setEntryPoint = useCallback((id: string, entryPoint: FrontendAction<any>) => {\n setEntryPoints((prevPoints) => {\n return {\n ...prevPoints,\n [id]: entryPoint,\n };\n });\n }, []);\n\n const removeEntryPoint = useCallback((id: string) => {\n setEntryPoints((prevPoints) => {\n const newPoints = { ...prevPoints };\n delete newPoints[id];\n return newPoints;\n });\n }, []);\n\n const getContextString = useCallback(\n (documents: DocumentPointer[], categories: string[]) => {\n const documentsString = documents\n .map((document) => {\n return `${document.name} (${document.sourceApplication}):\\n${document.getContents()}`;\n })\n .join(\"\\n\\n\");\n\n const nonDocumentStrings = printTree(categories);\n\n return `${documentsString}\\n\\n${nonDocumentStrings}`;\n },\n [printTree],\n );\n\n const addContext = useCallback(\n (\n context: string,\n parentId?: string,\n categories: string[] = defaultCopilotContextCategories,\n ) => {\n return addElement(context, categories, parentId);\n },\n [addElement],\n );\n\n const removeContext = useCallback(\n (id: string) => {\n removeElement(id);\n },\n [removeElement],\n );\n\n const getChatCompletionFunctionDescriptions = useCallback(\n (customEntryPoints?: Record<string, FrontendAction<any>>) => {\n return entryPointsToChatCompletionFunctions(Object.values(customEntryPoints || entryPoints));\n },\n [entryPoints],\n );\n\n const getFunctionCallHandler = useCallback(\n (customEntryPoints?: Record<string, FrontendAction<any>>) => {\n return entryPointsToFunctionCallHandler(Object.values(customEntryPoints || entryPoints));\n },\n [entryPoints],\n );\n\n const getDocumentsContext = useCallback(\n (categories: string[]) => {\n return allDocuments(categories);\n },\n [allDocuments],\n );\n\n const addDocumentContext = useCallback(\n (documentPointer: DocumentPointer, categories: string[] = defaultCopilotContextCategories) => {\n return addDocument(documentPointer, categories);\n },\n [addDocument],\n );\n\n const removeDocumentContext = useCallback(\n (documentId: string) => {\n removeDocument(documentId);\n },\n [removeDocument],\n );\n\n if (!props.publicApiKey) {\n if (props.cloudRestrictToTopic) {\n throw new Error(\n \"To use the cloudRestrictToTopic feature, please sign up at https://copilotkit.ai and provide a publicApiKey.\",\n );\n }\n }\n\n let cloud: CopilotCloudConfig | undefined = undefined;\n if (props.publicApiKey) {\n cloud = {\n guardrails: {\n input: {\n restrictToTopic: {\n enabled: props.cloudRestrictToTopic ? true : false,\n validTopics: props.cloudRestrictToTopic?.validTopics || [],\n invalidTopics: props.cloudRestrictToTopic?.invalidTopics || [],\n },\n },\n },\n };\n }\n\n // get the appropriate CopilotApiConfig from the props\n const copilotApiConfig: CopilotApiConfig = {\n publicApiKey: props.publicApiKey,\n ...(cloud ? { cloud } : {}),\n chatApiEndpoint: chatApiEndpoint,\n chatApiEndpointV2: `${props.url}/v2`,\n headers: props.headers || {},\n body: {\n ...props.body,\n ...props.backendOnlyProps,\n },\n transcribeAudioUrl: props.transcribeAudioUrl,\n textToSpeechUrl: props.textToSpeechUrl,\n };\n\n const [chatSuggestionConfiguration, setChatSuggestionConfiguration] = useState<{\n [key: string]: CopilotChatSuggestionConfiguration;\n }>({});\n\n const addChatSuggestionConfiguration = (\n id: string,\n suggestion: CopilotChatSuggestionConfiguration,\n ) => {\n setChatSuggestionConfiguration((prev) => ({ ...prev, [id]: suggestion }));\n };\n\n const removeChatSuggestionConfiguration = (id: string) => {\n setChatSuggestionConfiguration((prev) => {\n const { [id]: _, ...rest } = prev;\n return rest;\n });\n };\n\n return (\n <CopilotContext.Provider\n value={{\n entryPoints,\n chatComponentsCache,\n getChatCompletionFunctionDescriptions,\n getFunctionCallHandler,\n setEntryPoint,\n removeEntryPoint,\n getContextString,\n addContext,\n removeContext,\n getDocumentsContext,\n addDocumentContext,\n removeDocumentContext,\n copilotApiConfig: copilotApiConfig,\n messages,\n setMessages,\n chatSuggestionConfiguration,\n addChatSuggestionConfiguration,\n removeChatSuggestionConfiguration,\n }}\n >\n {children}\n </CopilotContext.Provider>\n );\n}\n\nexport const defaultCopilotContextCategories = [\"global\"];\n\nfunction entryPointsToChatCompletionFunctions(actions: FrontendAction<any>[]): ToolDefinition[] {\n return actions.map(actionToChatCompletionFunction);\n}\n\nfunction entryPointsToFunctionCallHandler(actions: FrontendAction<any>[]): FunctionCallHandler {\n return async (chatMessages, functionCall) => {\n let actionsByFunctionName: Record<string, FrontendAction<any>> = {};\n for (let action of actions) {\n actionsByFunctionName[action.name] = action;\n }\n\n const action = actionsByFunctionName[functionCall.name || \"\"];\n if (action) {\n let functionCallArguments: Record<string, any>[] = [];\n if (functionCall.arguments) {\n functionCallArguments = JSON.parse(functionCall.arguments);\n }\n return await action.handler(functionCallArguments);\n }\n };\n}\n","import {\n Message,\n ToolDefinition,\n ChatCompletionEvent,\n decodeChatCompletion,\n parseChatCompletion,\n decodeChatCompletionAsText,\n EXCLUDE_FROM_FORWARD_PROPS_KEYS,\n} from \"@copilotkit/shared\";\nimport { CopilotApiConfig } from \"../context\";\n\nexport interface FetchChatCompletionParams {\n copilotConfig: CopilotApiConfig;\n model?: string;\n messages: Message[];\n tools?: ToolDefinition[];\n temperature?: number;\n maxTokens?: number;\n headers?: Record<string, string> | Headers;\n body?: object;\n signal?: AbortSignal;\n toolChoice?: string | { type: \"function\"; function: { name: string } };\n}\n\nexport async function fetchChatCompletion({\n copilotConfig,\n model,\n messages,\n tools,\n temperature,\n headers,\n body,\n signal,\n toolChoice,\n}: FetchChatCompletionParams): Promise<Response> {\n temperature ||= 0.5;\n tools ||= [];\n\n // clean up any extra properties from messages\n const cleanedMessages = messages.map((message) => {\n const { content, role, name, function_call } = message;\n return { content, role, name, function_call };\n });\n\n toolChoice ||= \"auto\";\n\n const response = await fetch(copilotConfig.chatApiEndpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...copilotConfig.headers,\n ...(headers ? { ...headers } : {}),\n },\n body: JSON.stringify({\n model,\n messages: cleanedMessages,\n stream: true,\n ...(tools.length ? { tools } : {}),\n ...(temperature ? { temperature } : {}),\n ...(tools.length != 0 ? { tool_choice: toolChoice } : {}),\n ...copilotConfig.body,\n ...copilotConfig.backendOnlyProps,\n ...excludeBackendOnlyProps(copilotConfig),\n ...(body ? { ...body } : {}),\n ...(copilotConfig.cloud ? { cloud: copilotConfig.cloud } : {}),\n }),\n signal,\n });\n\n return response;\n}\n\nfunction excludeBackendOnlyProps(copilotConfig: any) {\n const backendOnlyProps = copilotConfig.backendOnlyProps ?? {};\n if (Object.keys(backendOnlyProps).length > 0) {\n return {\n [EXCLUDE_FROM_FORWARD_PROPS_KEYS]: Object.keys(backendOnlyProps),\n };\n } else {\n return {};\n }\n}\n\nexport interface DecodedChatCompletionResponse extends Response {\n events: ReadableStream<ChatCompletionEvent> | null;\n}\n\nexport async function fetchAndDecodeChatCompletion(\n params: FetchChatCompletionParams,\n): Promise<DecodedChatCompletionResponse> {\n const response = await fetchChatCompletion(params);\n if (!response.ok || !response.body) {\n (response as any).events = null;\n } else {\n const events = await decodeChatCompletion(parseChatCompletion(response.body));\n (response as any).events = events;\n }\n return response as any;\n}\n\nexport interface DecodedChatCompletionResponseAsText extends Response {\n events: ReadableStream<string> | null;\n}\n\nexport async function fetchAndDecodeChatCompletionAsText(\n params: FetchChatCompletionParams,\n): Promise<DecodedChatCompletionResponseAsText> {\n const response = await fetchChatCompletion(params);\n if (!response.ok || !response.body) {\n (response as any).events = null;\n } else {\n const events = await decodeChatCompletionAsText(\n decodeChatCompletion(parseChatCompletion(response.body)),\n );\n (response as any).events = events;\n }\n\n return response as any;\n}\n"],"mappings":"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","names":["import_shared","import_shared","untruncateJson"]}
@@ -0,0 +1,15 @@
1
+ import {
2
+ extract
3
+ } from "../chunk-BTJD4QON.mjs";
4
+ import "../chunk-JD7BAH7U.mjs";
5
+ import "../chunk-SPCZTZCY.mjs";
6
+ import "../chunk-JWANHQCM.mjs";
7
+ import "../chunk-YULKJPY3.mjs";
8
+ import "../chunk-YWITCRBI.mjs";
9
+ import "../chunk-7YTDTTX5.mjs";
10
+ import "../chunk-TW5FS2QT.mjs";
11
+ import "../chunk-SKC7AJIV.mjs";
12
+ export {
13
+ extract
14
+ };
15
+ //# sourceMappingURL=extract.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -4,6 +4,7 @@ import '../types/frontend-action.js';
4
4
  import 'react';
5
5
  import '../hooks/use-tree.js';
6
6
  import '../types/document-pointer.js';
7
+ import '../types/chat-suggestion-configuration.js';
7
8
 
8
9
  interface FetchChatCompletionParams {
9
10
  copilotConfig: CopilotApiConfig;
@@ -15,8 +16,14 @@ interface FetchChatCompletionParams {
15
16
  headers?: Record<string, string> | Headers;
16
17
  body?: object;
17
18
  signal?: AbortSignal;
19
+ toolChoice?: string | {
20
+ type: "function";
21
+ function: {
22
+ name: string;
23
+ };
24
+ };
18
25
  }
19
- declare function fetchChatCompletion({ copilotConfig, model, messages, tools, temperature, headers, body, signal, }: FetchChatCompletionParams): Promise<Response>;
26
+ declare function fetchChatCompletion({ copilotConfig, model, messages, tools, temperature, headers, body, signal, toolChoice, }: FetchChatCompletionParams): Promise<Response>;
20
27
  interface DecodedChatCompletionResponse extends Response {
21
28
  events: ReadableStream<ChatCompletionEvent> | null;
22
29
  }
@@ -69,7 +69,8 @@ function fetchChatCompletion(_0) {
69
69
  temperature,
70
70
  headers,
71
71
  body,
72
- signal
72
+ signal,
73
+ toolChoice
73
74
  }) {
74
75
  temperature || (temperature = 0.5);
75
76
  tools || (tools = []);
@@ -77,6 +78,7 @@ function fetchChatCompletion(_0) {
77
78
  const { content, role, name, function_call } = message;
78
79
  return { content, role, name, function_call };
79
80
  });
81
+ toolChoice || (toolChoice = "auto");
80
82
  const response = yield fetch(copilotConfig.chatApiEndpoint, {
81
83
  method: "POST",
82
84
  headers: __spreadValues(__spreadValues({
@@ -86,7 +88,7 @@ function fetchChatCompletion(_0) {
86
88
  model,
87
89
  messages: cleanedMessages,
88
90
  stream: true
89
- }, tools.length ? { tools } : {}), temperature ? { temperature } : {}), tools.length != 0 ? { tool_choice: "auto" } : {}), copilotConfig.body), copilotConfig.backendOnlyProps), excludeBackendOnlyProps(copilotConfig)), body ? __spreadValues({}, body) : {}), copilotConfig.cloud ? { cloud: copilotConfig.cloud } : {})),
91
+ }, tools.length ? { tools } : {}), temperature ? { temperature } : {}), tools.length != 0 ? { tool_choice: toolChoice } : {}), copilotConfig.body), copilotConfig.backendOnlyProps), excludeBackendOnlyProps(copilotConfig)), body ? __spreadValues({}, body) : {}), copilotConfig.cloud ? { cloud: copilotConfig.cloud } : {})),
90
92
  signal
91
93
  });
92
94
  return response;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/fetch-chat-completion.ts"],"sourcesContent":["import {\n Message,\n ToolDefinition,\n ChatCompletionEvent,\n decodeChatCompletion,\n parseChatCompletion,\n decodeChatCompletionAsText,\n EXCLUDE_FROM_FORWARD_PROPS_KEYS,\n} from \"@copilotkit/shared\";\nimport { CopilotApiConfig } from \"../context\";\n\nexport interface FetchChatCompletionParams {\n copilotConfig: CopilotApiConfig;\n model?: string;\n messages: Message[];\n tools?: ToolDefinition[];\n temperature?: number;\n maxTokens?: number;\n headers?: Record<string, string> | Headers;\n body?: object;\n signal?: AbortSignal;\n}\n\nexport async function fetchChatCompletion({\n copilotConfig,\n model,\n messages,\n tools,\n temperature,\n headers,\n body,\n signal,\n}: FetchChatCompletionParams): Promise<Response> {\n temperature ||= 0.5;\n tools ||= [];\n\n // clean up any extra properties from messages\n const cleanedMessages = messages.map((message) => {\n const { content, role, name, function_call } = message;\n return { content, role, name, function_call };\n });\n\n const response = await fetch(copilotConfig.chatApiEndpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...copilotConfig.headers,\n ...(headers ? { ...headers } : {}),\n },\n body: JSON.stringify({\n model,\n messages: cleanedMessages,\n stream: true,\n ...(tools.length ? { tools } : {}),\n ...(temperature ? { temperature } : {}),\n ...(tools.length != 0 ? { tool_choice: \"auto\" } : {}),\n ...copilotConfig.body,\n ...copilotConfig.backendOnlyProps,\n ...excludeBackendOnlyProps(copilotConfig),\n ...(body ? { ...body } : {}),\n ...(copilotConfig.cloud ? { cloud: copilotConfig.cloud } : {}),\n }),\n signal,\n });\n\n return response;\n}\n\nfunction excludeBackendOnlyProps(copilotConfig: any) {\n const backendOnlyProps = copilotConfig.backendOnlyProps ?? {};\n if (Object.keys(backendOnlyProps).length > 0) {\n return {\n [EXCLUDE_FROM_FORWARD_PROPS_KEYS]: Object.keys(backendOnlyProps),\n };\n } else {\n return {};\n }\n}\n\nexport interface DecodedChatCompletionResponse extends Response {\n events: ReadableStream<ChatCompletionEvent> | null;\n}\n\nexport async function fetchAndDecodeChatCompletion(\n params: FetchChatCompletionParams,\n): Promise<DecodedChatCompletionResponse> {\n const response = await fetchChatCompletion(params);\n if (!response.ok || !response.body) {\n (response as any).events = null;\n } else {\n const events = await decodeChatCompletion(parseChatCompletion(response.body));\n (response as any).events = events;\n }\n return response as any;\n}\n\nexport interface DecodedChatCompletionResponseAsText extends Response {\n events: ReadableStream<string> | null;\n}\n\nexport async function fetchAndDecodeChatCompletionAsText(\n params: FetchChatCompletionParams,\n): Promise<DecodedChatCompletionResponseAsText> {\n const response = await fetchChatCompletion(params);\n if (!response.ok || !response.body) {\n (response as any).events = null;\n } else {\n const events = await decodeChatCompletionAsText(\n decodeChatCompletion(parseChatCompletion(response.body)),\n );\n (response as any).events = events;\n }\n\n return response as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAQO;AAeP,SAAsB,oBAAoB,IASO;AAAA,6CATP;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAiD;AAC/C,kCAAgB;AAChB,sBAAU,CAAC;AAGX,UAAM,kBAAkB,SAAS,IAAI,CAAC,YAAY;AAChD,YAAM,EAAE,SAAS,MAAM,MAAM,cAAc,IAAI;AAC/C,aAAO,EAAE,SAAS,MAAM,MAAM,cAAc;AAAA,IAC9C,CAAC;AAED,UAAM,WAAW,MAAM,MAAM,cAAc,iBAAiB;AAAA,MAC1D,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,SACb,cAAc,UACb,UAAU,mBAAK,WAAY,CAAC;AAAA,MAElC,MAAM,KAAK,UAAU;AAAA,QACnB;AAAA,QACA,UAAU;AAAA,QACV,QAAQ;AAAA,SACJ,MAAM,SAAS,EAAE,MAAM,IAAI,CAAC,IAC5B,cAAc,EAAE,YAAY,IAAI,CAAC,IACjC,MAAM,UAAU,IAAI,EAAE,aAAa,OAAO,IAAI,CAAC,IAChD,cAAc,OACd,cAAc,mBACd,wBAAwB,aAAa,IACpC,OAAO,mBAAK,QAAS,CAAC,IACtB,cAAc,QAAQ,EAAE,OAAO,cAAc,MAAM,IAAI,CAAC,EAC7D;AAAA,MACD;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAAA;AAEA,SAAS,wBAAwB,eAAoB;AApErD;AAqEE,QAAM,oBAAmB,mBAAc,qBAAd,YAAkC,CAAC;AAC5D,MAAI,OAAO,KAAK,gBAAgB,EAAE,SAAS,GAAG;AAC5C,WAAO;AAAA,MACL,CAAC,6CAA+B,GAAG,OAAO,KAAK,gBAAgB;AAAA,IACjE;AAAA,EACF,OAAO;AACL,WAAO,CAAC;AAAA,EACV;AACF;AAMA,SAAsB,6BACpB,QACwC;AAAA;AACxC,UAAM,WAAW,MAAM,oBAAoB,MAAM;AACjD,QAAI,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM;AAClC,MAAC,SAAiB,SAAS;AAAA,IAC7B,OAAO;AACL,YAAM,SAAS,UAAM,wCAAqB,mCAAoB,SAAS,IAAI,CAAC;AAC5E,MAAC,SAAiB,SAAS;AAAA,IAC7B;AACA,WAAO;AAAA,EACT;AAAA;AAMA,SAAsB,mCACpB,QAC8C;AAAA;AAC9C,UAAM,WAAW,MAAM,oBAAoB,MAAM;AACjD,QAAI,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM;AAClC,MAAC,SAAiB,SAAS;AAAA,IAC7B,OAAO;AACL,YAAM,SAAS,UAAM;AAAA,YACnB,wCAAqB,mCAAoB,SAAS,IAAI,CAAC;AAAA,MACzD;AACA,MAAC,SAAiB,SAAS;AAAA,IAC7B;AAEA,WAAO;AAAA,EACT;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/fetch-chat-completion.ts"],"sourcesContent":["import {\n Message,\n ToolDefinition,\n ChatCompletionEvent,\n decodeChatCompletion,\n parseChatCompletion,\n decodeChatCompletionAsText,\n EXCLUDE_FROM_FORWARD_PROPS_KEYS,\n} from \"@copilotkit/shared\";\nimport { CopilotApiConfig } from \"../context\";\n\nexport interface FetchChatCompletionParams {\n copilotConfig: CopilotApiConfig;\n model?: string;\n messages: Message[];\n tools?: ToolDefinition[];\n temperature?: number;\n maxTokens?: number;\n headers?: Record<string, string> | Headers;\n body?: object;\n signal?: AbortSignal;\n toolChoice?: string | { type: \"function\"; function: { name: string } };\n}\n\nexport async function fetchChatCompletion({\n copilotConfig,\n model,\n messages,\n tools,\n temperature,\n headers,\n body,\n signal,\n toolChoice,\n}: FetchChatCompletionParams): Promise<Response> {\n temperature ||= 0.5;\n tools ||= [];\n\n // clean up any extra properties from messages\n const cleanedMessages = messages.map((message) => {\n const { content, role, name, function_call } = message;\n return { content, role, name, function_call };\n });\n\n toolChoice ||= \"auto\";\n\n const response = await fetch(copilotConfig.chatApiEndpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...copilotConfig.headers,\n ...(headers ? { ...headers } : {}),\n },\n body: JSON.stringify({\n model,\n messages: cleanedMessages,\n stream: true,\n ...(tools.length ? { tools } : {}),\n ...(temperature ? { temperature } : {}),\n ...(tools.length != 0 ? { tool_choice: toolChoice } : {}),\n ...copilotConfig.body,\n ...copilotConfig.backendOnlyProps,\n ...excludeBackendOnlyProps(copilotConfig),\n ...(body ? { ...body } : {}),\n ...(copilotConfig.cloud ? { cloud: copilotConfig.cloud } : {}),\n }),\n signal,\n });\n\n return response;\n}\n\nfunction excludeBackendOnlyProps(copilotConfig: any) {\n const backendOnlyProps = copilotConfig.backendOnlyProps ?? {};\n if (Object.keys(backendOnlyProps).length > 0) {\n return {\n [EXCLUDE_FROM_FORWARD_PROPS_KEYS]: Object.keys(backendOnlyProps),\n };\n } else {\n return {};\n }\n}\n\nexport interface DecodedChatCompletionResponse extends Response {\n events: ReadableStream<ChatCompletionEvent> | null;\n}\n\nexport async function fetchAndDecodeChatCompletion(\n params: FetchChatCompletionParams,\n): Promise<DecodedChatCompletionResponse> {\n const response = await fetchChatCompletion(params);\n if (!response.ok || !response.body) {\n (response as any).events = null;\n } else {\n const events = await decodeChatCompletion(parseChatCompletion(response.body));\n (response as any).events = events;\n }\n return response as any;\n}\n\nexport interface DecodedChatCompletionResponseAsText extends Response {\n events: ReadableStream<string> | null;\n}\n\nexport async function fetchAndDecodeChatCompletionAsText(\n params: FetchChatCompletionParams,\n): Promise<DecodedChatCompletionResponseAsText> {\n const response = await fetchChatCompletion(params);\n if (!response.ok || !response.body) {\n (response as any).events = null;\n } else {\n const events = await decodeChatCompletionAsText(\n decodeChatCompletion(parseChatCompletion(response.body)),\n );\n (response as any).events = events;\n }\n\n return response as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAQO;AAgBP,SAAsB,oBAAoB,IAUO;AAAA,6CAVP;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAiD;AAC/C,kCAAgB;AAChB,sBAAU,CAAC;AAGX,UAAM,kBAAkB,SAAS,IAAI,CAAC,YAAY;AAChD,YAAM,EAAE,SAAS,MAAM,MAAM,cAAc,IAAI;AAC/C,aAAO,EAAE,SAAS,MAAM,MAAM,cAAc;AAAA,IAC9C,CAAC;AAED,gCAAe;AAEf,UAAM,WAAW,MAAM,MAAM,cAAc,iBAAiB;AAAA,MAC1D,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,SACb,cAAc,UACb,UAAU,mBAAK,WAAY,CAAC;AAAA,MAElC,MAAM,KAAK,UAAU;AAAA,QACnB;AAAA,QACA,UAAU;AAAA,QACV,QAAQ;AAAA,SACJ,MAAM,SAAS,EAAE,MAAM,IAAI,CAAC,IAC5B,cAAc,EAAE,YAAY,IAAI,CAAC,IACjC,MAAM,UAAU,IAAI,EAAE,aAAa,WAAW,IAAI,CAAC,IACpD,cAAc,OACd,cAAc,mBACd,wBAAwB,aAAa,IACpC,OAAO,mBAAK,QAAS,CAAC,IACtB,cAAc,QAAQ,EAAE,OAAO,cAAc,MAAM,IAAI,CAAC,EAC7D;AAAA,MACD;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAAA;AAEA,SAAS,wBAAwB,eAAoB;AAxErD;AAyEE,QAAM,oBAAmB,mBAAc,qBAAd,YAAkC,CAAC;AAC5D,MAAI,OAAO,KAAK,gBAAgB,EAAE,SAAS,GAAG;AAC5C,WAAO;AAAA,MACL,CAAC,6CAA+B,GAAG,OAAO,KAAK,gBAAgB;AAAA,IACjE;AAAA,EACF,OAAO;AACL,WAAO,CAAC;AAAA,EACV;AACF;AAMA,SAAsB,6BACpB,QACwC;AAAA;AACxC,UAAM,WAAW,MAAM,oBAAoB,MAAM;AACjD,QAAI,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM;AAClC,MAAC,SAAiB,SAAS;AAAA,IAC7B,OAAO;AACL,YAAM,SAAS,UAAM,wCAAqB,mCAAoB,SAAS,IAAI,CAAC;AAC5E,MAAC,SAAiB,SAAS;AAAA,IAC7B;AACA,WAAO;AAAA,EACT;AAAA;AAMA,SAAsB,mCACpB,QAC8C;AAAA;AAC9C,UAAM,WAAW,MAAM,oBAAoB,MAAM;AACjD,QAAI,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM;AAClC,MAAC,SAAiB,SAAS;AAAA,IAC7B,OAAO;AACL,YAAM,SAAS,UAAM;AAAA,YACnB,wCAAqB,mCAAoB,SAAS,IAAI,CAAC;AAAA,MACzD;AACA,MAAC,SAAiB,SAAS;AAAA,IAC7B;AAEA,WAAO;AAAA,EACT;AAAA;","names":[]}
@@ -2,8 +2,8 @@ import {
2
2
  fetchAndDecodeChatCompletion,
3
3
  fetchAndDecodeChatCompletionAsText,
4
4
  fetchChatCompletion
5
- } from "../chunk-CGT3AVYT.mjs";
6
- import "../chunk-MRXNTQOX.mjs";
5
+ } from "../chunk-7YTDTTX5.mjs";
6
+ import "../chunk-SKC7AJIV.mjs";
7
7
  export {
8
8
  fetchAndDecodeChatCompletion,
9
9
  fetchAndDecodeChatCompletionAsText,
@@ -0,0 +1,9 @@
1
+ export { FetchChatCompletionParams, fetchAndDecodeChatCompletion, fetchAndDecodeChatCompletionAsText, fetchChatCompletion } from './fetch-chat-completion.js';
2
+ export { extract } from './extract.js';
3
+ import '@copilotkit/shared';
4
+ import '../context/copilot-context.js';
5
+ import '../types/frontend-action.js';
6
+ import 'react';
7
+ import '../hooks/use-tree.js';
8
+ import '../types/document-pointer.js';
9
+ import '../types/chat-suggestion-configuration.js';