@copilotkit/react-ui 0.18.0-mme-assistant-api.0 → 0.18.0-mme-function-call-labels.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/.turbo/turbo-build.log +30 -30
  2. package/CHANGELOG.md +29 -3
  3. package/dist/{chunk-Q7SIB42Y.mjs → chunk-5OZET2NZ.mjs} +2 -2
  4. package/dist/{chunk-FA66IWQ6.mjs → chunk-AK7UZHCU.mjs} +2 -2
  5. package/dist/chunk-CVC7E7LQ.mjs +119 -0
  6. package/dist/chunk-CVC7E7LQ.mjs.map +1 -0
  7. package/dist/{chunk-KDHWN43O.mjs → chunk-YZ4GW76L.mjs} +2 -2
  8. package/dist/components/chat/Chat.js +59 -7
  9. package/dist/components/chat/Chat.js.map +1 -1
  10. package/dist/components/chat/Chat.mjs +2 -2
  11. package/dist/components/chat/Messages.js +57 -5
  12. package/dist/components/chat/Messages.js.map +1 -1
  13. package/dist/components/chat/Messages.mjs +1 -1
  14. package/dist/components/chat/Popup.js +59 -7
  15. package/dist/components/chat/Popup.js.map +1 -1
  16. package/dist/components/chat/Popup.mjs +3 -3
  17. package/dist/components/chat/Sidebar.js +59 -7
  18. package/dist/components/chat/Sidebar.js.map +1 -1
  19. package/dist/components/chat/Sidebar.mjs +3 -3
  20. package/dist/components/chat/index.js +59 -7
  21. package/dist/components/chat/index.js.map +1 -1
  22. package/dist/components/chat/index.mjs +4 -4
  23. package/dist/components/index.js +59 -7
  24. package/dist/components/index.js.map +1 -1
  25. package/dist/components/index.mjs +4 -4
  26. package/dist/index.css +10 -0
  27. package/dist/index.css.map +1 -1
  28. package/dist/index.js +59 -7
  29. package/dist/index.js.map +1 -1
  30. package/dist/index.mjs +4 -4
  31. package/package.json +8 -8
  32. package/src/components/chat/Messages.tsx +149 -19
  33. package/src/css/messages.css +9 -0
  34. package/dist/chunk-3M4HWSE7.mjs +0 -67
  35. package/dist/chunk-3M4HWSE7.mjs.map +0 -1
  36. /package/dist/{chunk-Q7SIB42Y.mjs.map → chunk-5OZET2NZ.mjs.map} +0 -0
  37. /package/dist/{chunk-FA66IWQ6.mjs.map → chunk-AK7UZHCU.mjs.map} +0 -0
  38. /package/dist/{chunk-KDHWN43O.mjs.map → chunk-YZ4GW76L.mjs.map} +0 -0
@@ -1,5 +1,5 @@
1
1
 
2
- > @copilotkit/react-ui@0.18.0-mme-assistant-api.0 build /home/runner/work/CopilotKit/CopilotKit/CopilotKit/packages/react-ui
2
+ > @copilotkit/react-ui@0.18.0-mme-function-call-labels.2 build /home/runner/work/CopilotKit/CopilotKit/CopilotKit/packages/react-ui
3
3
  > tsup --clean
4
4
 
5
5
  CLI Building entry: src/index.tsx, src/components/index.ts, src/context/index.ts, src/hooks/index.ts, src/hooks/use-copy-to-clipboard.tsx, src/lib/utils.test.ts, src/lib/utils.ts, src/types/index.ts, src/types/types.ts, src/components/chat/Button.tsx, src/components/chat/Chat.tsx, src/components/chat/ChatContext.tsx, src/components/chat/CodeBlock.tsx, src/components/chat/Header.tsx, src/components/chat/Icons.tsx, src/components/chat/Input.tsx, src/components/chat/Markdown.tsx, src/components/chat/Messages.tsx, src/components/chat/Popup.tsx, src/components/chat/Response.tsx, src/components/chat/Sidebar.tsx, src/components/chat/Textarea.tsx, src/components/chat/Window.tsx, src/components/chat/index.tsx, src/components/chat/props.ts
@@ -23,10 +23,10 @@ Browserslist: caniuse-lite is outdated. Please run:
23
23
  ESM dist/chunk-JD7BAH7U.mjs 43.00 B
24
24
  ESM dist/chunk-P4GBO6MW.mjs 43.00 B
25
25
  ESM dist/chunk-WB3YULQ4.mjs 43.00 B
26
- ESM dist/chunk-KDHWN43O.mjs 528.00 B
27
- ESM dist/chunk-FA66IWQ6.mjs 1.01 KB
28
- ESM dist/chunk-Q7SIB42Y.mjs 2.49 KB
29
- ESM dist/chunk-3M4HWSE7.mjs 2.31 KB
26
+ ESM dist/chunk-YZ4GW76L.mjs 528.00 B
27
+ ESM dist/chunk-AK7UZHCU.mjs 1.01 KB
28
+ ESM dist/chunk-5OZET2NZ.mjs 2.49 KB
29
+ ESM dist/chunk-CVC7E7LQ.mjs 5.08 KB
30
30
  ESM dist/chunk-GWGHQNRI.mjs 1.84 KB
31
31
  ESM dist/chunk-Z34F3WLK.mjs 613.00 B
32
32
  ESM dist/chunk-B7DNOYVQ.mjs 3.80 KB
@@ -44,7 +44,7 @@ Browserslist: caniuse-lite is outdated. Please run:
44
44
  ESM dist/lib/utils.mjs 885.00 B
45
45
  ESM dist/chunk-MRXNTQOX.mjs 1.89 KB
46
46
  ESM dist/chunk-7NSRDJ5C.mjs 43.00 B
47
- ESM dist/index.css 19.65 KB
47
+ ESM dist/index.css 19.82 KB
48
48
  ESM dist/components/chat/props.mjs 69.00 B
49
49
  ESM dist/components/chat/Markdown.mjs 255.00 B
50
50
  ESM dist/components/chat/Messages.mjs 325.00 B
@@ -71,10 +71,10 @@ Browserslist: caniuse-lite is outdated. Please run:
71
71
  ESM dist/chunk-JD7BAH7U.mjs.map 71.00 B
72
72
  ESM dist/chunk-P4GBO6MW.mjs.map 71.00 B
73
73
  ESM dist/chunk-WB3YULQ4.mjs.map 71.00 B
74
- ESM dist/chunk-KDHWN43O.mjs.map 549.00 B
75
- ESM dist/chunk-FA66IWQ6.mjs.map 1.36 KB
76
- ESM dist/chunk-Q7SIB42Y.mjs.map 6.73 KB
77
- ESM dist/chunk-3M4HWSE7.mjs.map 5.04 KB
74
+ ESM dist/chunk-YZ4GW76L.mjs.map 549.00 B
75
+ ESM dist/chunk-AK7UZHCU.mjs.map 1.36 KB
76
+ ESM dist/chunk-5OZET2NZ.mjs.map 6.73 KB
77
+ ESM dist/chunk-CVC7E7LQ.mjs.map 12.08 KB
78
78
  ESM dist/chunk-GWGHQNRI.mjs.map 2.76 KB
79
79
  ESM dist/chunk-Z34F3WLK.mjs.map 854.00 B
80
80
  ESM dist/chunk-B7DNOYVQ.mjs.map 6.70 KB
@@ -92,7 +92,7 @@ Browserslist: caniuse-lite is outdated. Please run:
92
92
  ESM dist/lib/utils.mjs.map 1.49 KB
93
93
  ESM dist/chunk-MRXNTQOX.mjs.map 71.00 B
94
94
  ESM dist/chunk-7NSRDJ5C.mjs.map 71.00 B
95
- ESM dist/index.css.map 30.69 KB
95
+ ESM dist/index.css.map 30.93 KB
96
96
  ESM dist/components/chat/props.mjs.map 71.00 B
97
97
  ESM dist/components/chat/Markdown.mjs.map 71.00 B
98
98
  ESM dist/components/chat/Messages.mjs.map 71.00 B
@@ -110,10 +110,10 @@ Browserslist: caniuse-lite is outdated. Please run:
110
110
  ESM dist/components/chat/Header.mjs.map 71.00 B
111
111
  ESM dist/components/chat/Icons.mjs.map 71.00 B
112
112
  ESM dist/components/chat/Input.mjs.map 71.00 B
113
- ESM ⚡️ Build success in 1475ms
114
- CJS dist/index.js 33.02 KB
115
- CJS dist/index.css 19.65 KB
116
- CJS dist/components/index.js 33.05 KB
113
+ ESM ⚡️ Build success in 1407ms
114
+ CJS dist/index.js 35.97 KB
115
+ CJS dist/index.css 19.82 KB
116
+ CJS dist/components/index.js 36.00 KB
117
117
  CJS dist/context/index.js 803.00 B
118
118
  CJS dist/hooks/index.js 797.00 B
119
119
  CJS dist/hooks/use-copy-to-clipboard.js 2.32 KB
@@ -122,24 +122,24 @@ Browserslist: caniuse-lite is outdated. Please run:
122
122
  CJS dist/types/index.js 797.00 B
123
123
  CJS dist/types/types.js 797.00 B
124
124
  CJS dist/components/chat/Button.js 2.91 KB
125
- CJS dist/components/chat/Chat.js 31.68 KB
125
+ CJS dist/components/chat/Chat.js 34.64 KB
126
126
  CJS dist/components/chat/ChatContext.js 9.01 KB
127
127
  CJS dist/components/chat/CodeBlock.js 9.21 KB
128
128
  CJS dist/components/chat/Header.js 2.63 KB
129
129
  CJS dist/components/chat/Icons.js 9.51 KB
130
130
  CJS dist/components/chat/Input.js 5.26 KB
131
131
  CJS dist/components/chat/Markdown.js 11.00 KB
132
- CJS dist/components/chat/Messages.js 13.97 KB
133
- CJS dist/components/chat/Popup.js 32.08 KB
132
+ CJS dist/components/chat/Messages.js 16.93 KB
133
+ CJS dist/components/chat/Popup.js 35.04 KB
134
134
  CJS dist/components/chat/Response.js 2.67 KB
135
- CJS dist/components/chat/Sidebar.js 32.63 KB
135
+ CJS dist/components/chat/Sidebar.js 35.59 KB
136
136
  CJS dist/components/chat/Textarea.js 2.51 KB
137
137
  CJS dist/components/chat/Window.js 5.46 KB
138
- CJS dist/components/chat/index.js 33.03 KB
138
+ CJS dist/components/chat/index.js 35.99 KB
139
139
  CJS dist/components/chat/props.js 807.00 B
140
- CJS dist/index.js.map 51.42 KB
141
- CJS dist/index.css.map 30.69 KB
142
- CJS dist/components/index.js.map 51.35 KB
140
+ CJS dist/index.js.map 58.48 KB
141
+ CJS dist/index.css.map 30.93 KB
142
+ CJS dist/components/index.js.map 58.41 KB
143
143
  CJS dist/context/index.js.map 139.00 B
144
144
  CJS dist/hooks/index.js.map 137.00 B
145
145
  CJS dist/hooks/use-copy-to-clipboard.js.map 1.23 KB
@@ -148,23 +148,23 @@ Browserslist: caniuse-lite is outdated. Please run:
148
148
  CJS dist/types/index.js.map 137.00 B
149
149
  CJS dist/types/types.js.map 478.00 B
150
150
  CJS dist/components/chat/Button.js.map 5.70 KB
151
- CJS dist/components/chat/Chat.js.map 49.50 KB
151
+ CJS dist/components/chat/Chat.js.map 56.56 KB
152
152
  CJS dist/components/chat/ChatContext.js.map 12.69 KB
153
153
  CJS dist/components/chat/CodeBlock.js.map 13.35 KB
154
154
  CJS dist/components/chat/Header.js.map 5.19 KB
155
155
  CJS dist/components/chat/Icons.js.map 8.55 KB
156
156
  CJS dist/components/chat/Input.js.map 9.75 KB
157
157
  CJS dist/components/chat/Markdown.js.map 16.13 KB
158
- CJS dist/components/chat/Messages.js.map 25.57 KB
159
- CJS dist/components/chat/Popup.js.map 50.00 KB
158
+ CJS dist/components/chat/Messages.js.map 32.60 KB
159
+ CJS dist/components/chat/Popup.js.map 57.07 KB
160
160
  CJS dist/components/chat/Response.js.map 5.27 KB
161
- CJS dist/components/chat/Sidebar.js.map 50.83 KB
161
+ CJS dist/components/chat/Sidebar.js.map 57.89 KB
162
162
  CJS dist/components/chat/Textarea.js.map 2.83 KB
163
163
  CJS dist/components/chat/Window.js.map 6.76 KB
164
- CJS dist/components/chat/index.js.map 51.49 KB
164
+ CJS dist/components/chat/index.js.map 58.55 KB
165
165
  CJS dist/components/chat/props.js.map 884.00 B
166
- CJS ⚡️ Build success in 1499ms
167
- DTS ⚡️ Build success in 5859ms
166
+ CJS ⚡️ Build success in 1447ms
167
+ DTS ⚡️ Build success in 5907ms
168
168
  DTS dist/index.d.ts 411.00 B
169
169
  DTS dist/components/chat/props.d.ts 794.00 B
170
170
  DTS dist/components/chat/Popup.d.ts 269.00 B
package/CHANGELOG.md CHANGED
@@ -1,6 +1,20 @@
1
1
  # ui
2
2
 
3
- ## 0.18.0-mme-assistant-api.0
3
+ ## 0.18.0-mme-function-call-labels.2
4
+
5
+ ### Minor Changes
6
+
7
+ - be00d61: Alpha
8
+ - QA
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies [be00d61]
13
+ - Updated dependencies
14
+ - @copilotkit/react-core@0.21.0-mme-function-call-labels.2
15
+ - @copilotkit/shared@0.5.0-mme-function-call-labels.2
16
+
17
+ ## 0.18.0-mme-experimental-actions.1
4
18
 
5
19
  ### Minor Changes
6
20
 
@@ -9,8 +23,20 @@
9
23
  ### Patch Changes
10
24
 
11
25
  - Updated dependencies
12
- - @copilotkit/react-core@0.21.0-mme-assistant-api.0
13
- - @copilotkit/shared@0.5.0-mme-assistant-api.0
26
+ - @copilotkit/react-core@0.21.0-mme-experimental-actions.1
27
+ - @copilotkit/shared@0.5.0-mme-experimental-actions.1
28
+
29
+ ## 0.18.0-mme-experimental-actions.0
30
+
31
+ ### Minor Changes
32
+
33
+ - QA new action type
34
+
35
+ ### Patch Changes
36
+
37
+ - Updated dependencies
38
+ - @copilotkit/react-core@0.21.0-mme-experimental-actions.0
39
+ - @copilotkit/shared@0.5.0-mme-experimental-actions.0
14
40
 
15
41
  ## 0.17.1
16
42
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Messages
3
- } from "./chunk-3M4HWSE7.mjs";
3
+ } from "./chunk-CVC7E7LQ.mjs";
4
4
  import {
5
5
  ResponseButton
6
6
  } from "./chunk-Z34F3WLK.mjs";
@@ -89,4 +89,4 @@ var CopilotChat = ({
89
89
  export {
90
90
  CopilotChat
91
91
  };
92
- //# sourceMappingURL=chunk-Q7SIB42Y.mjs.map
92
+ //# sourceMappingURL=chunk-5OZET2NZ.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CopilotChat
3
- } from "./chunk-Q7SIB42Y.mjs";
3
+ } from "./chunk-5OZET2NZ.mjs";
4
4
  import {
5
5
  __spreadProps,
6
6
  __spreadValues
@@ -30,4 +30,4 @@ var CopilotSidebar = (props) => {
30
30
  export {
31
31
  CopilotSidebar
32
32
  };
33
- //# sourceMappingURL=chunk-FA66IWQ6.mjs.map
33
+ //# sourceMappingURL=chunk-AK7UZHCU.mjs.map
@@ -0,0 +1,119 @@
1
+ import {
2
+ Markdown
3
+ } from "./chunk-GWGHQNRI.mjs";
4
+ import {
5
+ useChatContext
6
+ } from "./chunk-OF66AL5Z.mjs";
7
+
8
+ // src/components/chat/Messages.tsx
9
+ import React, { useEffect, useMemo } from "react";
10
+ import { nanoid } from "nanoid";
11
+ import { decodeResult } from "@copilotkit/shared";
12
+ import { useCopilotContext } from "@copilotkit/react-core";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ var Messages = ({ messages, inProgress }) => {
15
+ const { entryPoints, chatComponentsCache } = useCopilotContext();
16
+ const context = useChatContext();
17
+ const initialMessages = useMemo(
18
+ () => makeInitialMessages(context.labels.initial),
19
+ [context.labels.initial]
20
+ );
21
+ messages = [...initialMessages, ...messages];
22
+ const functionResults = {};
23
+ for (let i = 0; i < messages.length; i++) {
24
+ if (messages[i].role === "assistant" && messages[i].function_call) {
25
+ const id = messages[i].id;
26
+ if (i + 1 < messages.length && messages[i + 1].role === "function") {
27
+ functionResults[id] = decodeResult(messages[i + 1].content || "");
28
+ }
29
+ }
30
+ }
31
+ const messagesEndRef = React.useRef(null);
32
+ const scrollToBottom = () => {
33
+ if (messagesEndRef.current) {
34
+ messagesEndRef.current.scrollIntoView({
35
+ behavior: "auto"
36
+ });
37
+ }
38
+ };
39
+ useEffect(() => {
40
+ scrollToBottom();
41
+ }, [messages]);
42
+ return /* @__PURE__ */ jsxs("div", { className: "copilotKitMessages", children: [
43
+ messages.map((message, index) => {
44
+ var _a, _b, _c, _d;
45
+ const isCurrentMessage = index === messages.length - 1;
46
+ if (message.role === "user") {
47
+ return /* @__PURE__ */ jsx("div", { className: "copilotKitMessage copilotKitUserMessage", children: message.content }, index);
48
+ } else if (message.role == "assistant") {
49
+ if (isCurrentMessage && inProgress && !message.content && !message.partialFunctionCall) {
50
+ return /* @__PURE__ */ jsx("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
51
+ } else if (message.function_call || message.partialFunctionCall) {
52
+ const functionCallName = ((_a = message.function_call) == null ? void 0 : _a.name) || ((_b = message.partialFunctionCall) == null ? void 0 : _b.name);
53
+ if (chatComponentsCache.current !== null && chatComponentsCache.current[functionCallName]) {
54
+ const render = chatComponentsCache.current[functionCallName];
55
+ if (typeof render === "string") {
56
+ if (isCurrentMessage && inProgress) {
57
+ return /* @__PURE__ */ jsxs("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
58
+ context.icons.spinnerIcon,
59
+ " ",
60
+ /* @__PURE__ */ jsx("span", { className: "inProgressLabel", children: render })
61
+ ] }, index);
62
+ } else {
63
+ return /* @__PURE__ */ jsx("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.labels.done }, index);
64
+ }
65
+ } else {
66
+ const args = ((_c = message.function_call) == null ? void 0 : _c.arguments) || ((_d = message.partialFunctionCall) == null ? void 0 : _d.arguments);
67
+ let status = "inProgress";
68
+ if (functionResults[message.id] !== void 0) {
69
+ status = "complete";
70
+ } else if (message.function_call) {
71
+ status = "executing";
72
+ }
73
+ const result = render({
74
+ status,
75
+ args,
76
+ result: functionResults[message.id]
77
+ });
78
+ if (typeof result === "string") {
79
+ return /* @__PURE__ */ jsxs("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
80
+ isCurrentMessage && inProgress && context.icons.spinnerIcon,
81
+ " ",
82
+ result
83
+ ] }, index);
84
+ } else {
85
+ return /* @__PURE__ */ jsx("div", { className: "copilotKitCustomAssistantMessage", children: result }, index);
86
+ }
87
+ }
88
+ } else if ((!inProgress || !isCurrentMessage) && message.function_call) {
89
+ return /* @__PURE__ */ jsx("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.labels.done }, index);
90
+ } else {
91
+ return /* @__PURE__ */ jsx("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
92
+ }
93
+ }
94
+ return /* @__PURE__ */ jsx("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: /* @__PURE__ */ jsx(Markdown, { content: message.content }) }, index);
95
+ }
96
+ }),
97
+ /* @__PURE__ */ jsx("div", { ref: messagesEndRef })
98
+ ] });
99
+ };
100
+ function makeInitialMessages(initial) {
101
+ let initialArray = [];
102
+ if (initial) {
103
+ if (Array.isArray(initial)) {
104
+ initialArray.push(...initial);
105
+ } else {
106
+ initialArray.push(initial);
107
+ }
108
+ }
109
+ return initialArray.map((message) => ({
110
+ id: nanoid(),
111
+ role: "assistant",
112
+ content: message
113
+ }));
114
+ }
115
+
116
+ export {
117
+ Messages
118
+ };
119
+ //# sourceMappingURL=chunk-CVC7E7LQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/chat/Messages.tsx"],"sourcesContent":["import React, { useEffect, useMemo } from \"react\";\nimport { MessagesProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\nimport { nanoid } from \"nanoid\";\nimport { Message, decodeResult } from \"@copilotkit/shared\";\nimport { Markdown } from \"./Markdown\";\nimport { useCopilotContext } from \"@copilotkit/react-core\";\n\nexport const Messages = ({ messages, inProgress }: MessagesProps) => {\n const { entryPoints, chatComponentsCache } = useCopilotContext();\n const context = useChatContext();\n const initialMessages = useMemo(\n () => makeInitialMessages(context.labels.initial),\n [context.labels.initial],\n );\n messages = [...initialMessages, ...messages];\n\n const functionResults: Record<string, string> = {};\n\n for (let i = 0; i < messages.length; i++) {\n if (messages[i].role === \"assistant\" && messages[i].function_call) {\n const id = messages[i].id;\n if (i + 1 < messages.length && messages[i + 1].role === \"function\") {\n functionResults[id] = decodeResult(messages[i + 1].content || \"\");\n }\n }\n }\n\n const messagesEndRef = React.useRef<HTMLDivElement>(null);\n\n const scrollToBottom = () => {\n if (messagesEndRef.current) {\n messagesEndRef.current.scrollIntoView({\n behavior: \"auto\",\n });\n }\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [messages]);\n\n return (\n <div className=\"copilotKitMessages\">\n {messages.map((message, index) => {\n const isCurrentMessage = index === messages.length - 1;\n\n if (message.role === \"user\") {\n return (\n <div key={index} className=\"copilotKitMessage copilotKitUserMessage\">\n {message.content}\n </div>\n );\n } else if (message.role == \"assistant\") {\n if (isCurrentMessage && inProgress && !message.content && !message.partialFunctionCall) {\n // The message is in progress and there is no content- show the spinner\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.icons.spinnerIcon}\n </div>\n );\n } else if (message.function_call || message.partialFunctionCall) {\n // Find the action that corresponds to the function call if any\n const functionCallName: string = (message.function_call?.name ||\n message.partialFunctionCall?.name)!;\n if (\n chatComponentsCache.current !== null &&\n chatComponentsCache.current[functionCallName]\n ) {\n const render = chatComponentsCache.current[functionCallName];\n\n // render a static string\n if (typeof render === \"string\") {\n // when render is static, we show it only when in progress\n if (isCurrentMessage && inProgress) {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.icons.spinnerIcon} <span className=\"inProgressLabel\">{render}</span>\n </div>\n );\n }\n // show done message\n else {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.labels.done}\n </div>\n );\n }\n }\n // render is a function\n else {\n const args =\n message.function_call?.arguments || message.partialFunctionCall?.arguments;\n let status = \"inProgress\";\n if (functionResults[message.id] !== undefined) {\n status = \"complete\";\n } else if (message.function_call) {\n status = \"executing\";\n }\n\n const result = render({\n status,\n args,\n result: functionResults[message.id],\n });\n\n if (typeof result === \"string\") {\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {isCurrentMessage && inProgress && context.icons.spinnerIcon} {result}\n </div>\n );\n } else {\n return (\n <div key={index} className=\"copilotKitCustomAssistantMessage\">\n {result}\n </div>\n );\n }\n }\n }\n // No render function found- show the default message\n else if ((!inProgress || !isCurrentMessage) && message.function_call) {\n // Done\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.labels.done}\n </div>\n );\n } else {\n // In progress\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n {context.icons.spinnerIcon}\n </div>\n );\n }\n }\n\n return (\n <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n <Markdown content={message.content} />\n </div>\n );\n\n // if (isCurrentMessage && inProgress && !message.content) {\n // // let inProgressLabel = \"\";\n\n // if (message.partialFunctionCall) {\n // for (const action of Object.values(entryPoints)) {\n // if (\n // (action as any).name === message.partialFunctionCall.name &&\n // (action as any).render\n // ) {\n // // // the label is a function, call it with the arguments\n // // if (typeof action.inProgressLabel === \"function\") {\n // // inProgressLabel = action.inProgressLabel(\n // // message.partialFunctionCall.arguments as any,\n // // // if function_call is undefined, the arguments are incomplete\n // // message.function_call !== undefined,\n // // );\n // // }\n // // // the label is a string\n // // else {\n // // // (don't do an additional type check so we get a compile error if we add a new type)\n // // inProgressLabel = action.inProgressLabel;\n // // }\n // }\n // }\n // }\n // return (\n // <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n // {context.icons.spinnerIcon}\n // {/* {inProgressLabel && <span className=\"inProgressLabel\">{inProgressLabel}</span>} */}\n // </div>\n // );\n // } else if (\n // (!inProgress || index != messages.length - 1) &&\n // !message.content &&\n // message.function_call\n // ) {\n // return (\n // <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n // {context.labels.done}\n // </div>\n // );\n // }\n // TODO: Add back partial message\n // This shows up when the assistant is executing a function\n //\n // else if (message.status === \"partial\") {\n // return (\n // <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n // {context.labels.thinking} {context.icons.spinnerIcon}\n // </div>\n // );\n // }\n // else {\n // return (\n // <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n // <Markdown content={message.content} />\n // </div>\n // );\n // }\n }\n // TODO: Add back function and error messages\n //\n // else if (message.role === \"function\" && message.status === \"success\") {\n // return (\n // <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n // {context.labels.done}\n // </div>\n // );\n // } else if (message.status === \"error\") {\n // return (\n // <div key={index} className={`copilotKitMessage copilotKitAssistantMessage`}>\n // {context.labels.error}\n // </div>\n // );\n // }\n })}\n <div ref={messagesEndRef} />\n </div>\n );\n};\n\nfunction makeInitialMessages(initial?: string | string[]): Message[] {\n let initialArray: string[] = [];\n if (initial) {\n if (Array.isArray(initial)) {\n initialArray.push(...initial);\n } else {\n initialArray.push(initial);\n }\n }\n\n return initialArray.map((message) => ({\n id: nanoid(),\n role: \"assistant\",\n content: message,\n }));\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CopilotChat
3
- } from "./chunk-Q7SIB42Y.mjs";
3
+ } from "./chunk-5OZET2NZ.mjs";
4
4
  import {
5
5
  __spreadProps,
6
6
  __spreadValues
@@ -18,4 +18,4 @@ var CopilotPopup = (props) => {
18
18
  export {
19
19
  CopilotPopup
20
20
  };
21
- //# sourceMappingURL=chunk-KDHWN43O.mjs.map
21
+ //# sourceMappingURL=chunk-YZ4GW76L.mjs.map
@@ -325,7 +325,7 @@ var ChatContextProvider = ({
325
325
  };
326
326
 
327
327
  // src/components/chat/Chat.tsx
328
- var import_react_core = require("@copilotkit/react-core");
328
+ var import_react_core2 = require("@copilotkit/react-core");
329
329
 
330
330
  // src/components/chat/Window.tsx
331
331
  var import_react2 = __toESM(require("react"));
@@ -463,6 +463,7 @@ var Header = ({ setOpen }) => {
463
463
  // src/components/chat/Messages.tsx
464
464
  var import_react5 = __toESM(require("react"));
465
465
  var import_nanoid = require("nanoid");
466
+ var import_shared = require("@copilotkit/shared");
466
467
 
467
468
  // src/components/chat/Markdown.tsx
468
469
  var import_react4 = require("react");
@@ -639,14 +640,25 @@ var components = {
639
640
  };
640
641
 
641
642
  // src/components/chat/Messages.tsx
643
+ var import_react_core = require("@copilotkit/react-core");
642
644
  var import_jsx_runtime8 = require("react/jsx-runtime");
643
645
  var Messages = ({ messages, inProgress }) => {
646
+ const { entryPoints, chatComponentsCache } = (0, import_react_core.useCopilotContext)();
644
647
  const context = useChatContext();
645
648
  const initialMessages = (0, import_react5.useMemo)(
646
649
  () => makeInitialMessages(context.labels.initial),
647
650
  [context.labels.initial]
648
651
  );
649
652
  messages = [...initialMessages, ...messages];
653
+ const functionResults = {};
654
+ for (let i = 0; i < messages.length; i++) {
655
+ if (messages[i].role === "assistant" && messages[i].function_call) {
656
+ const id = messages[i].id;
657
+ if (i + 1 < messages.length && messages[i + 1].role === "function") {
658
+ functionResults[id] = (0, import_shared.decodeResult)(messages[i + 1].content || "");
659
+ }
660
+ }
661
+ }
650
662
  const messagesEndRef = import_react5.default.useRef(null);
651
663
  const scrollToBottom = () => {
652
664
  if (messagesEndRef.current) {
@@ -660,17 +672,57 @@ var Messages = ({ messages, inProgress }) => {
660
672
  }, [messages]);
661
673
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "copilotKitMessages", children: [
662
674
  messages.map((message, index) => {
675
+ var _a, _b, _c, _d;
663
676
  const isCurrentMessage = index === messages.length - 1;
664
677
  if (message.role === "user") {
665
678
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "copilotKitMessage copilotKitUserMessage", children: message.content }, index);
666
679
  } else if (message.role == "assistant") {
667
- if (isCurrentMessage && inProgress && !message.content) {
680
+ if (isCurrentMessage && inProgress && !message.content && !message.partialFunctionCall) {
668
681
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
669
- } else if ((!inProgress || index != messages.length - 1) && !message.content && message.function_call) {
670
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.labels.done }, index);
671
- } else {
672
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Markdown, { content: message.content }) }, index);
682
+ } else if (message.function_call || message.partialFunctionCall) {
683
+ const functionCallName = ((_a = message.function_call) == null ? void 0 : _a.name) || ((_b = message.partialFunctionCall) == null ? void 0 : _b.name);
684
+ if (chatComponentsCache.current !== null && chatComponentsCache.current[functionCallName]) {
685
+ const render = chatComponentsCache.current[functionCallName];
686
+ if (typeof render === "string") {
687
+ if (isCurrentMessage && inProgress) {
688
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
689
+ context.icons.spinnerIcon,
690
+ " ",
691
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "inProgressLabel", children: render })
692
+ ] }, index);
693
+ } else {
694
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.labels.done }, index);
695
+ }
696
+ } else {
697
+ const args = ((_c = message.function_call) == null ? void 0 : _c.arguments) || ((_d = message.partialFunctionCall) == null ? void 0 : _d.arguments);
698
+ let status = "inProgress";
699
+ if (functionResults[message.id] !== void 0) {
700
+ status = "complete";
701
+ } else if (message.function_call) {
702
+ status = "executing";
703
+ }
704
+ const result = render({
705
+ status,
706
+ args,
707
+ result: functionResults[message.id]
708
+ });
709
+ if (typeof result === "string") {
710
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: [
711
+ isCurrentMessage && inProgress && context.icons.spinnerIcon,
712
+ " ",
713
+ result
714
+ ] }, index);
715
+ } else {
716
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "copilotKitCustomAssistantMessage", children: result }, index);
717
+ }
718
+ }
719
+ } else if ((!inProgress || !isCurrentMessage) && message.function_call) {
720
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.labels.done }, index);
721
+ } else {
722
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: context.icons.spinnerIcon }, index);
723
+ }
673
724
  }
725
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: `copilotKitMessage copilotKitAssistantMessage`, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Markdown, { content: message.content }) }, index);
674
726
  }
675
727
  }),
676
728
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { ref: messagesEndRef })
@@ -824,7 +876,7 @@ var CopilotChat = ({
824
876
  ResponseButton: ResponseButton2 = ResponseButton,
825
877
  className
826
878
  }) => {
827
- const { visibleMessages, append, reload, stop, isLoading, input, setInput } = (0, import_react_core.useCopilotChat)({
879
+ const { visibleMessages, append, reload, stop, isLoading, input, setInput } = (0, import_react_core2.useCopilotChat)({
828
880
  id: (0, import_nanoid2.nanoid)(),
829
881
  makeSystemMessage,
830
882
  additionalInstructions: instructions