@copilotkit/react-core 1.10.0-next.11 → 1.10.0-next.13

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 (114) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/{chunk-ADZDXHVC.mjs → chunk-2GRWTU7W.mjs} +4 -4
  3. package/dist/chunk-3BASANUO.mjs +170 -0
  4. package/dist/chunk-3BASANUO.mjs.map +1 -0
  5. package/dist/{chunk-LVWV62JZ.mjs → chunk-5P46WS5M.mjs} +32 -26
  6. package/dist/chunk-5P46WS5M.mjs.map +1 -0
  7. package/dist/{chunk-OKRZF3DD.mjs → chunk-6ZLPNY7X.mjs} +2 -2
  8. package/dist/{chunk-OKRZF3DD.mjs.map → chunk-6ZLPNY7X.mjs.map} +1 -1
  9. package/dist/{chunk-COEUPDRL.mjs → chunk-BEFEBKKI.mjs} +8 -8
  10. package/dist/{chunk-QGE7U4NV.mjs → chunk-F26O2HTO.mjs} +3 -3
  11. package/dist/chunk-F26O2HTO.mjs.map +1 -0
  12. package/dist/{chunk-DLEXVOQE.mjs → chunk-GEKWHETN.mjs} +4 -4
  13. package/dist/{chunk-L6HQIJ74.mjs → chunk-JY3STRON.mjs} +8 -8
  14. package/dist/{chunk-JJDXTTEN.mjs → chunk-K4HXT453.mjs} +2 -2
  15. package/dist/{chunk-JBLMXZ3O.mjs → chunk-KH27ZS4Y.mjs} +6 -6
  16. package/dist/{chunk-TWYUYC4F.mjs → chunk-MUDXTKXE.mjs} +6 -6
  17. package/dist/{chunk-Q42NJFXR.mjs → chunk-N4VN2B5S.mjs} +5 -5
  18. package/dist/{chunk-2TSNHEIS.mjs → chunk-NTH42BY5.mjs} +5 -5
  19. package/dist/{chunk-X2DNXTME.mjs → chunk-OPRDTF4S.mjs} +4 -4
  20. package/dist/chunk-PIF5KJYI.mjs +103 -0
  21. package/dist/chunk-PIF5KJYI.mjs.map +1 -0
  22. package/dist/chunk-WSXTUD36.mjs +759 -0
  23. package/dist/chunk-WSXTUD36.mjs.map +1 -0
  24. package/dist/{chunk-IHAZJF3V.mjs → chunk-YIBUNEBN.mjs} +2 -2
  25. package/dist/chunk-YIBUNEBN.mjs.map +1 -0
  26. package/dist/components/copilot-provider/copilot-messages.mjs +3 -3
  27. package/dist/components/copilot-provider/copilotkit-props.d.ts +9 -1
  28. package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
  29. package/dist/components/copilot-provider/copilotkit.js +1047 -71
  30. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  31. package/dist/components/copilot-provider/copilotkit.mjs +11 -8
  32. package/dist/components/copilot-provider/index.js +1047 -71
  33. package/dist/components/copilot-provider/index.js.map +1 -1
  34. package/dist/components/copilot-provider/index.mjs +11 -8
  35. package/dist/components/dev-console/console-trigger.d.ts +8 -0
  36. package/dist/components/dev-console/console-trigger.js +1131 -0
  37. package/dist/components/dev-console/console-trigger.js.map +1 -0
  38. package/dist/components/dev-console/console-trigger.mjs +13 -0
  39. package/dist/components/dev-console/console-trigger.mjs.map +1 -0
  40. package/dist/components/dev-console/developer-console-modal.d.ts +10 -0
  41. package/dist/components/dev-console/developer-console-modal.js +977 -0
  42. package/dist/components/dev-console/developer-console-modal.js.map +1 -0
  43. package/dist/components/dev-console/developer-console-modal.mjs +12 -0
  44. package/dist/components/dev-console/developer-console-modal.mjs.map +1 -0
  45. package/dist/components/dev-console/icons.d.ts +9 -0
  46. package/dist/components/dev-console/icons.js +131 -0
  47. package/dist/components/dev-console/icons.js.map +1 -0
  48. package/dist/components/dev-console/icons.mjs +16 -0
  49. package/dist/components/dev-console/icons.mjs.map +1 -0
  50. package/dist/components/error-boundary/error-boundary.js +1 -1
  51. package/dist/components/error-boundary/error-boundary.js.map +1 -1
  52. package/dist/components/error-boundary/error-boundary.mjs +2 -2
  53. package/dist/components/index.js +1047 -71
  54. package/dist/components/index.js.map +1 -1
  55. package/dist/components/index.mjs +11 -8
  56. package/dist/components/usage-banner.js +1 -1
  57. package/dist/components/usage-banner.js.map +1 -1
  58. package/dist/components/usage-banner.mjs +1 -1
  59. package/dist/context/index.mjs +4 -4
  60. package/dist/hooks/index.js +1 -1
  61. package/dist/hooks/index.js.map +1 -1
  62. package/dist/hooks/index.mjs +32 -29
  63. package/dist/hooks/use-chat.mjs +4 -4
  64. package/dist/hooks/use-coagent-state-render.mjs +2 -2
  65. package/dist/hooks/use-coagent.js.map +1 -1
  66. package/dist/hooks/use-coagent.mjs +16 -13
  67. package/dist/hooks/use-copilot-action.mjs +2 -2
  68. package/dist/hooks/use-copilot-authenticated-action.mjs +3 -3
  69. package/dist/hooks/use-copilot-chat-headless_c.js +1 -1
  70. package/dist/hooks/use-copilot-chat-headless_c.js.map +1 -1
  71. package/dist/hooks/use-copilot-chat-headless_c.mjs +16 -13
  72. package/dist/hooks/use-copilot-chat.d.ts +42 -3
  73. package/dist/hooks/use-copilot-chat.js.map +1 -1
  74. package/dist/hooks/use-copilot-chat.mjs +16 -13
  75. package/dist/hooks/use-copilot-chat_internal.js.map +1 -1
  76. package/dist/hooks/use-copilot-chat_internal.mjs +15 -12
  77. package/dist/hooks/use-langgraph-interrupt-render.mjs +1 -1
  78. package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
  79. package/dist/hooks/use-langgraph-interrupt.mjs +16 -13
  80. package/dist/index.js +1145 -178
  81. package/dist/index.js.map +1 -1
  82. package/dist/index.mjs +36 -33
  83. package/dist/lib/copilot-task.js.map +1 -1
  84. package/dist/lib/copilot-task.mjs +13 -10
  85. package/dist/lib/index.js.map +1 -1
  86. package/dist/lib/index.mjs +13 -10
  87. package/dist/utils/extract.js.map +1 -1
  88. package/dist/utils/extract.mjs +11 -8
  89. package/dist/utils/index.js.map +1 -1
  90. package/dist/utils/index.mjs +11 -8
  91. package/dist/utils/suggestions.js.map +1 -1
  92. package/dist/utils/suggestions.mjs +11 -8
  93. package/package.json +3 -3
  94. package/src/components/copilot-provider/copilotkit-props.tsx +10 -1
  95. package/src/components/copilot-provider/copilotkit.tsx +25 -16
  96. package/src/components/dev-console/console-trigger.tsx +190 -0
  97. package/src/components/dev-console/developer-console-modal.tsx +866 -0
  98. package/src/components/dev-console/icons.tsx +101 -0
  99. package/src/components/usage-banner.tsx +1 -1
  100. package/src/hooks/use-copilot-chat-headless_c.ts +79 -9
  101. package/src/hooks/use-copilot-chat.ts +42 -3
  102. package/dist/chunk-IHAZJF3V.mjs.map +0 -1
  103. package/dist/chunk-LVWV62JZ.mjs.map +0 -1
  104. package/dist/chunk-QGE7U4NV.mjs.map +0 -1
  105. /package/dist/{chunk-ADZDXHVC.mjs.map → chunk-2GRWTU7W.mjs.map} +0 -0
  106. /package/dist/{chunk-COEUPDRL.mjs.map → chunk-BEFEBKKI.mjs.map} +0 -0
  107. /package/dist/{chunk-DLEXVOQE.mjs.map → chunk-GEKWHETN.mjs.map} +0 -0
  108. /package/dist/{chunk-L6HQIJ74.mjs.map → chunk-JY3STRON.mjs.map} +0 -0
  109. /package/dist/{chunk-JJDXTTEN.mjs.map → chunk-K4HXT453.mjs.map} +0 -0
  110. /package/dist/{chunk-JBLMXZ3O.mjs.map → chunk-KH27ZS4Y.mjs.map} +0 -0
  111. /package/dist/{chunk-TWYUYC4F.mjs.map → chunk-MUDXTKXE.mjs.map} +0 -0
  112. /package/dist/{chunk-Q42NJFXR.mjs.map → chunk-N4VN2B5S.mjs.map} +0 -0
  113. /package/dist/{chunk-2TSNHEIS.mjs.map → chunk-NTH42BY5.mjs.map} +0 -0
  114. /package/dist/{chunk-X2DNXTME.mjs.map → chunk-OPRDTF4S.mjs.map} +0 -0
@@ -0,0 +1,1131 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var __async = (__this, __arguments, generator) => {
31
+ return new Promise((resolve, reject) => {
32
+ var fulfilled = (value) => {
33
+ try {
34
+ step(generator.next(value));
35
+ } catch (e) {
36
+ reject(e);
37
+ }
38
+ };
39
+ var rejected = (value) => {
40
+ try {
41
+ step(generator.throw(value));
42
+ } catch (e) {
43
+ reject(e);
44
+ }
45
+ };
46
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
47
+ step((generator = generator.apply(__this, __arguments)).next());
48
+ });
49
+ };
50
+
51
+ // src/components/dev-console/console-trigger.tsx
52
+ var console_trigger_exports = {};
53
+ __export(console_trigger_exports, {
54
+ ConsoleTrigger: () => ConsoleTrigger
55
+ });
56
+ module.exports = __toCommonJS(console_trigger_exports);
57
+ var import_react4 = require("react");
58
+
59
+ // src/context/copilot-context.tsx
60
+ var import_react = __toESM(require("react"));
61
+ var emptyCopilotContext = {
62
+ actions: {},
63
+ setAction: () => {
64
+ },
65
+ removeAction: () => {
66
+ },
67
+ coAgentStateRenders: {},
68
+ setCoAgentStateRender: () => {
69
+ },
70
+ removeCoAgentStateRender: () => {
71
+ },
72
+ chatComponentsCache: { current: { actions: {}, coAgentStateRenders: {} } },
73
+ getContextString: (documents, categories) => returnAndThrowInDebug(""),
74
+ addContext: () => "",
75
+ removeContext: () => {
76
+ },
77
+ getAllContext: () => [],
78
+ getFunctionCallHandler: () => returnAndThrowInDebug(() => __async(void 0, null, function* () {
79
+ })),
80
+ isLoading: false,
81
+ setIsLoading: () => returnAndThrowInDebug(false),
82
+ chatInstructions: "",
83
+ setChatInstructions: () => returnAndThrowInDebug(""),
84
+ additionalInstructions: [],
85
+ setAdditionalInstructions: () => returnAndThrowInDebug([]),
86
+ getDocumentsContext: (categories) => returnAndThrowInDebug([]),
87
+ addDocumentContext: () => returnAndThrowInDebug(""),
88
+ removeDocumentContext: () => {
89
+ },
90
+ runtimeClient: {},
91
+ copilotApiConfig: new class {
92
+ get chatApiEndpoint() {
93
+ throw new Error("Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!");
94
+ }
95
+ get headers() {
96
+ return {};
97
+ }
98
+ get body() {
99
+ return {};
100
+ }
101
+ }(),
102
+ chatSuggestionConfiguration: {},
103
+ addChatSuggestionConfiguration: () => {
104
+ },
105
+ removeChatSuggestionConfiguration: () => {
106
+ },
107
+ showDevConsole: false,
108
+ coagentStates: {},
109
+ setCoagentStates: () => {
110
+ },
111
+ coagentStatesRef: { current: {} },
112
+ setCoagentStatesWithRef: () => {
113
+ },
114
+ agentSession: null,
115
+ setAgentSession: () => {
116
+ },
117
+ forwardedParameters: {},
118
+ agentLock: null,
119
+ threadId: "",
120
+ setThreadId: () => {
121
+ },
122
+ runId: null,
123
+ setRunId: () => {
124
+ },
125
+ chatAbortControllerRef: { current: null },
126
+ availableAgents: [],
127
+ extensions: {},
128
+ setExtensions: () => {
129
+ },
130
+ langGraphInterruptAction: null,
131
+ setLangGraphInterruptAction: () => null,
132
+ removeLangGraphInterruptAction: () => null,
133
+ onError: void 0,
134
+ bannerError: null,
135
+ setBannerError: () => {
136
+ }
137
+ };
138
+ var CopilotContext = import_react.default.createContext(emptyCopilotContext);
139
+ function useCopilotContext() {
140
+ const context = import_react.default.useContext(CopilotContext);
141
+ if (context === emptyCopilotContext) {
142
+ throw new Error("Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!");
143
+ }
144
+ return context;
145
+ }
146
+ function returnAndThrowInDebug(_value) {
147
+ throw new Error("Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!");
148
+ }
149
+
150
+ // src/components/dev-console/icons.tsx
151
+ var import_jsx_runtime = require("react/jsx-runtime");
152
+ var ExclamationMarkTriangleIcon = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
153
+ "svg",
154
+ {
155
+ width: "13.3967723px",
156
+ height: "12px",
157
+ viewBox: "0 0 13.3967723 12",
158
+ version: "1.1",
159
+ xmlns: "http://www.w3.org/2000/svg",
160
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { id: "exclamation-triangle", fill: "#CD2121", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
161
+ "path",
162
+ {
163
+ d: "M5.39935802,0.75 C5.97670802,-0.25 7.42007802,-0.25 7.99742802,0.75 L13.193588,9.75 C13.770888,10.75 13.049288,12 11.894588,12 L1.50223802,12 C0.34753802,12 -0.37414898,10.75 0.20319802,9.75 L5.39935802,0.75 Z M6.69838802,2.5 C7.11260802,2.5 7.44838802,2.83579 7.44838802,3.25 L7.44838802,6.25 C7.44838802,6.66421 7.11260802,7 6.69838802,7 C6.28417802,7 5.94838802,6.66421 5.94838802,6.25 L5.94838802,3.25 C5.94838802,2.83579 6.28417802,2.5 6.69838802,2.5 Z M6.69838802,10.5 C7.25067802,10.5 7.69838802,10.0523 7.69838802,9.5 C7.69838802,8.9477 7.25067802,8.5 6.69838802,8.5 C6.14610802,8.5 5.69838802,8.9477 5.69838802,9.5 C5.69838802,10.0523 6.14610802,10.5 6.69838802,10.5 Z",
164
+ id: "Shape"
165
+ }
166
+ ) }) })
167
+ }
168
+ );
169
+ var CheckIcon = () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
170
+ "svg",
171
+ {
172
+ width: "14px",
173
+ height: "14px",
174
+ viewBox: "0 0 14 14",
175
+ version: "1.1",
176
+ xmlns: "http://www.w3.org/2000/svg",
177
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { id: "Group-2", transform: "translate(-118, 0)", fill: "#1BC030", fillRule: "nonzero", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { id: "Group", transform: "translate(118, 0)", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
178
+ "path",
179
+ {
180
+ d: "M0,7 C0,3.13384615 3.13384615,0 7,0 C10.8661538,0 14,3.13384615 14,7 C14,10.8661538 10.8661538,14 7,14 C3.13384615,14 0,10.8661538 0,7 Z M9.59179487,5.69764103 C9.70905818,5.54139023 9.73249341,5.33388318 9.65303227,5.15541491 C9.57357113,4.97694665 9.40367989,4.85551619 9.20909814,4.83811118 C9.01451638,4.82070616 8.82577109,4.91005717 8.71589744,5.07158974 L6.39261538,8.32389744 L5.22666667,7.15794872 C5.01450582,6.96025518 4.68389046,6.9660885 4.47883563,7.17114332 C4.27378081,7.37619815 4.26794748,7.70681351 4.46564103,7.91897436 L6.08102564,9.53435897 C6.19289944,9.64614839 6.3482622,9.70310251 6.50588106,9.69010587 C6.66349993,9.67710922 6.80743532,9.59547613 6.89948718,9.46687179 L9.59179487,5.69764103 L9.59179487,5.69764103 Z",
181
+ id: "Shape"
182
+ }
183
+ ) }) }) })
184
+ }
185
+ );
186
+ var CopilotKitIcon = () => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
187
+ "svg",
188
+ {
189
+ width: "33px",
190
+ height: "35px",
191
+ viewBox: "0 0 33 35",
192
+ version: "1.1",
193
+ xmlns: "http://www.w3.org/2000/svg",
194
+ children: [
195
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("title", { children: "bd5c9079-929b-4d55-bdc9-16d1c8181b71" }),
196
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
197
+ "image",
198
+ {
199
+ x: "0",
200
+ y: "0",
201
+ width: "33",
202
+ height: "35",
203
+ xlinkHref: "data:image/png;base64,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"
204
+ }
205
+ ) })
206
+ ]
207
+ }
208
+ );
209
+
210
+ // src/context/copilot-messages-context.tsx
211
+ var import_react2 = __toESM(require("react"));
212
+ var emptyCopilotContext2 = {
213
+ messages: [],
214
+ setMessages: () => [],
215
+ // suggestions state
216
+ suggestions: [],
217
+ setSuggestions: () => []
218
+ };
219
+ var CopilotMessagesContext = import_react2.default.createContext(emptyCopilotContext2);
220
+ function useCopilotMessagesContext() {
221
+ const context = import_react2.default.useContext(CopilotMessagesContext);
222
+ if (context === emptyCopilotContext2) {
223
+ throw new Error(
224
+ "A messages consuming component was not wrapped with `<CopilotMessages> {...} </CopilotMessages>`"
225
+ );
226
+ }
227
+ return context;
228
+ }
229
+
230
+ // src/components/dev-console/developer-console-modal.tsx
231
+ var import_shared = require("@copilotkit/shared");
232
+ var import_react3 = require("react");
233
+ var import_jsx_runtime2 = require("react/jsx-runtime");
234
+ function DeveloperConsoleModal({ isOpen, onClose, hasApiKey }) {
235
+ const context = useCopilotContext();
236
+ const messagesContext = useCopilotMessagesContext();
237
+ const [activeTab, setActiveTab] = (0, import_react3.useState)("actions");
238
+ (0, import_react3.useEffect)(() => {
239
+ const handleEscape = (e) => {
240
+ if (e.key === "Escape") {
241
+ onClose();
242
+ }
243
+ };
244
+ if (isOpen) {
245
+ document.addEventListener("keydown", handleEscape);
246
+ document.body.style.overflow = "hidden";
247
+ }
248
+ return () => {
249
+ document.removeEventListener("keydown", handleEscape);
250
+ document.body.style.overflow = "unset";
251
+ };
252
+ }, [isOpen, onClose]);
253
+ if (!isOpen)
254
+ return null;
255
+ const displayContext = hasApiKey ? context : {
256
+ actions: {
257
+ search_web: { name: "search_web", description: "Search the web for information" },
258
+ send_email: { name: "send_email", description: "Send an email to a contact" },
259
+ create_document: { name: "create_document", description: "Create a new document" },
260
+ analyze_code: {
261
+ name: "analyze_code",
262
+ description: "Analyze code for issues and improvements"
263
+ },
264
+ generate_tests: {
265
+ name: "generate_tests",
266
+ description: "Generate unit tests for functions"
267
+ }
268
+ },
269
+ getAllContext: () => [
270
+ {
271
+ content: "User preferences: dark mode enabled, TypeScript preferred",
272
+ metadata: { source: "settings" }
273
+ },
274
+ {
275
+ content: "Current project: Building a React application with CopilotKit",
276
+ metadata: { source: "project" }
277
+ },
278
+ {
279
+ content: "Recent activity: Implemented authentication system",
280
+ metadata: { source: "activity" }
281
+ },
282
+ {
283
+ content: "Development environment: VS Code, Node.js 18, React 18",
284
+ metadata: { source: "environment" }
285
+ }
286
+ ],
287
+ coagentStates: {
288
+ "main-agent": { status: "active", lastUpdate: Date.now() },
289
+ "code-assistant": { status: "active", lastUpdate: Date.now() - 15e3 },
290
+ "search-agent": { status: "idle", lastUpdate: Date.now() - 6e4 }
291
+ },
292
+ getDocumentsContext: () => [
293
+ {
294
+ content: "README.md: Project setup and installation instructions",
295
+ metadata: { type: "documentation" }
296
+ },
297
+ {
298
+ content: "API Documentation: CopilotKit integration guide",
299
+ metadata: { type: "documentation" }
300
+ },
301
+ {
302
+ content: "package.json: Project dependencies and scripts",
303
+ metadata: { type: "configuration" }
304
+ }
305
+ ]
306
+ };
307
+ const displayMessagesContext = hasApiKey ? messagesContext : {
308
+ messages: [
309
+ {
310
+ id: "1",
311
+ role: "user",
312
+ content: "Help me implement a todo list with drag and drop functionality"
313
+ },
314
+ {
315
+ id: "2",
316
+ role: "assistant",
317
+ content: "I'll help you create a todo list with drag and drop. Let me start by setting up the basic components and then add the drag and drop functionality using React DnD."
318
+ },
319
+ { id: "3", role: "user", content: "Can you also add priority levels and due dates?" },
320
+ {
321
+ id: "4",
322
+ role: "assistant",
323
+ content: "Absolutely! I'll enhance the todo items with priority levels (high, medium, low) and due date functionality. This will make your todo list much more powerful for task management."
324
+ },
325
+ { id: "5", role: "user", content: "Perfect! How about adding categories or tags?" }
326
+ ]
327
+ };
328
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
329
+ "div",
330
+ {
331
+ style: {
332
+ position: "fixed",
333
+ top: 0,
334
+ left: 0,
335
+ right: 0,
336
+ bottom: 0,
337
+ zIndex: 9999,
338
+ backgroundColor: "rgba(0, 0, 0, 0.3)",
339
+ display: "flex",
340
+ alignItems: "center",
341
+ justifyContent: "center",
342
+ padding: "16px"
343
+ },
344
+ onClick: onClose,
345
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
346
+ "div",
347
+ {
348
+ style: {
349
+ width: "1152px",
350
+ maxWidth: "95vw",
351
+ height: "80vh",
352
+ backgroundColor: "white",
353
+ borderRadius: "12px",
354
+ boxShadow: "0 25px 50px -12px rgba(0, 0, 0, 0.25)",
355
+ display: "flex",
356
+ flexDirection: "column",
357
+ overflow: "hidden",
358
+ position: "relative"
359
+ },
360
+ onClick: (e) => e.stopPropagation(),
361
+ children: [
362
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
363
+ "div",
364
+ {
365
+ style: {
366
+ display: "flex",
367
+ alignItems: "center",
368
+ justifyContent: "space-between",
369
+ padding: "24px",
370
+ borderBottom: "1px solid #e5e7eb",
371
+ minHeight: "73px",
372
+ flexShrink: 0,
373
+ filter: !hasApiKey ? "blur(0.3px)" : "none",
374
+ opacity: !hasApiKey ? 0.95 : 1
375
+ },
376
+ children: [
377
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "12px" }, children: [
378
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CopilotKitIcon, {}),
379
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
380
+ "h1",
381
+ {
382
+ style: {
383
+ fontWeight: "bold",
384
+ fontSize: "20px",
385
+ color: "#1f2937",
386
+ margin: 0
387
+ },
388
+ children: "Developer Console"
389
+ }
390
+ ),
391
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
392
+ "span",
393
+ {
394
+ style: {
395
+ fontSize: "14px",
396
+ color: "#6b7280",
397
+ backgroundColor: "#f3f4f6",
398
+ padding: "4px 8px",
399
+ borderRadius: "4px"
400
+ },
401
+ children: [
402
+ "v",
403
+ import_shared.COPILOTKIT_VERSION
404
+ ]
405
+ }
406
+ )
407
+ ] }),
408
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
409
+ "button",
410
+ {
411
+ onClick: onClose,
412
+ style: {
413
+ color: "#9ca3af",
414
+ fontSize: "24px",
415
+ fontWeight: "300",
416
+ border: "none",
417
+ background: "none",
418
+ cursor: "pointer",
419
+ padding: "4px"
420
+ },
421
+ onMouseEnter: (e) => e.currentTarget.style.color = "#4b5563",
422
+ onMouseLeave: (e) => e.currentTarget.style.color = "#9ca3af",
423
+ children: "\xD7"
424
+ }
425
+ )
426
+ ]
427
+ }
428
+ ),
429
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
430
+ "div",
431
+ {
432
+ style: {
433
+ display: "flex",
434
+ borderBottom: "1px solid #e5e7eb",
435
+ backgroundColor: "#f9fafb",
436
+ minHeight: "50px",
437
+ flexShrink: 0,
438
+ filter: !hasApiKey ? "blur(0.3px)" : "none",
439
+ opacity: !hasApiKey ? 0.9 : 1
440
+ },
441
+ children: [
442
+ { id: "actions", label: "Actions", count: Object.keys(displayContext.actions).length },
443
+ { id: "readables", label: "Readables", count: displayContext.getAllContext().length },
444
+ {
445
+ id: "agent",
446
+ label: "Agent Status",
447
+ count: Object.keys(displayContext.coagentStates).length
448
+ },
449
+ { id: "messages", label: "Messages", count: displayMessagesContext.messages.length },
450
+ {
451
+ id: "context",
452
+ label: "Context",
453
+ count: displayContext.getDocumentsContext([]).length
454
+ }
455
+ ].map((tab) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
456
+ "button",
457
+ {
458
+ onClick: () => setActiveTab(tab.id),
459
+ style: {
460
+ padding: "12px 24px",
461
+ fontSize: "14px",
462
+ fontWeight: "500",
463
+ border: "none",
464
+ cursor: "pointer",
465
+ backgroundColor: activeTab === tab.id ? "white" : "transparent",
466
+ color: activeTab === tab.id ? "#2563eb" : "#6b7280",
467
+ borderBottom: activeTab === tab.id ? "2px solid #2563eb" : "none",
468
+ transition: "all 0.2s"
469
+ },
470
+ onMouseEnter: (e) => {
471
+ if (activeTab !== tab.id) {
472
+ e.currentTarget.style.color = "#1f2937";
473
+ e.currentTarget.style.backgroundColor = "#f3f4f6";
474
+ }
475
+ },
476
+ onMouseLeave: (e) => {
477
+ if (activeTab !== tab.id) {
478
+ e.currentTarget.style.color = "#6b7280";
479
+ e.currentTarget.style.backgroundColor = "transparent";
480
+ }
481
+ },
482
+ children: [
483
+ tab.label,
484
+ tab.count > 0 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
485
+ "span",
486
+ {
487
+ style: {
488
+ marginLeft: "8px",
489
+ backgroundColor: "#e5e7eb",
490
+ color: "#374151",
491
+ padding: "2px 8px",
492
+ borderRadius: "9999px",
493
+ fontSize: "12px"
494
+ },
495
+ children: tab.count
496
+ }
497
+ )
498
+ ]
499
+ },
500
+ tab.id
501
+ ))
502
+ }
503
+ ),
504
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
505
+ "div",
506
+ {
507
+ style: {
508
+ height: "calc(100% - 142px)",
509
+ overflow: "auto",
510
+ padding: "24px",
511
+ backgroundColor: "#f9fafb",
512
+ filter: !hasApiKey ? "blur(0.3px)" : "none",
513
+ opacity: !hasApiKey ? 0.85 : 1
514
+ },
515
+ children: [
516
+ activeTab === "actions" && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ActionsTab, { context: displayContext }),
517
+ activeTab === "readables" && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ReadablesTab, { context: displayContext }),
518
+ activeTab === "agent" && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(AgentStatusTab, { context: displayContext }),
519
+ activeTab === "messages" && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(MessagesTab, { messagesContext: displayMessagesContext }),
520
+ activeTab === "context" && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ContextTab, { context: displayContext })
521
+ ]
522
+ }
523
+ ),
524
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
525
+ "div",
526
+ {
527
+ style: {
528
+ padding: "16px 24px",
529
+ borderTop: "1px solid #e5e7eb",
530
+ backgroundColor: "white",
531
+ display: "flex",
532
+ justifyContent: "space-between",
533
+ alignItems: "center",
534
+ minHeight: "57px",
535
+ flexShrink: 0,
536
+ filter: !hasApiKey ? "blur(0.3px)" : "none",
537
+ opacity: !hasApiKey ? 0.9 : 1
538
+ },
539
+ children: [
540
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { fontSize: "14px", color: "#6b7280" }, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
541
+ "a",
542
+ {
543
+ href: "https://github.com/CopilotKit/CopilotKit/issues",
544
+ target: "_blank",
545
+ rel: "noopener noreferrer",
546
+ style: { color: "#2563eb", textDecoration: "none" },
547
+ onMouseEnter: (e) => e.currentTarget.style.textDecoration = "underline",
548
+ onMouseLeave: (e) => e.currentTarget.style.textDecoration = "none",
549
+ children: "Report an issue"
550
+ }
551
+ ) }),
552
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { fontSize: "14px", color: "#6b7280" }, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
553
+ "a",
554
+ {
555
+ href: "https://mcp.copilotkit.ai/",
556
+ target: "_blank",
557
+ rel: "noopener noreferrer",
558
+ style: { color: "#2563eb", textDecoration: "none" },
559
+ onMouseEnter: (e) => e.currentTarget.style.textDecoration = "underline",
560
+ onMouseLeave: (e) => e.currentTarget.style.textDecoration = "none",
561
+ children: "Add MCP Server \u2192"
562
+ }
563
+ ) })
564
+ ]
565
+ }
566
+ ),
567
+ !hasApiKey && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
568
+ "div",
569
+ {
570
+ style: {
571
+ position: "absolute",
572
+ top: 0,
573
+ left: 0,
574
+ right: 0,
575
+ bottom: 0,
576
+ backgroundColor: "rgba(255, 255, 255, 0.2)",
577
+ backdropFilter: "blur(2px)",
578
+ WebkitBackdropFilter: "blur(2px)",
579
+ display: "flex",
580
+ alignItems: "center",
581
+ justifyContent: "center",
582
+ borderRadius: "12px",
583
+ zIndex: 10
584
+ },
585
+ onClick: (e) => e.stopPropagation(),
586
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
587
+ "button",
588
+ {
589
+ onClick: () => window.open("https://cloud.copilotkit.ai/sign-in", "_blank"),
590
+ style: {
591
+ // Following button system specifications
592
+ height: "48px",
593
+ padding: "12px 24px",
594
+ backgroundColor: "#030507",
595
+ // textPrimary token
596
+ color: "#FFFFFF",
597
+ borderRadius: "12px",
598
+ // Medium radius token
599
+ border: "none",
600
+ cursor: "pointer",
601
+ fontSize: "14px",
602
+ // Medium Semi Bold typography
603
+ fontWeight: "600",
604
+ fontFamily: "'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif",
605
+ lineHeight: "22px",
606
+ boxShadow: "0 4px 16px rgba(3, 5, 7, 0.2), 0 1px 3px rgba(3, 5, 7, 0.1)",
607
+ transition: "all 200ms ease",
608
+ // 200ms ease as per specs
609
+ display: "inline-flex",
610
+ alignItems: "center",
611
+ gap: "8px",
612
+ textTransform: "uppercase",
613
+ letterSpacing: "0.5px"
614
+ },
615
+ onMouseEnter: (e) => {
616
+ e.currentTarget.style.backgroundColor = "#575758";
617
+ e.currentTarget.style.transform = "translateY(-1px)";
618
+ e.currentTarget.style.boxShadow = "0 6px 20px rgba(3, 5, 7, 0.25), 0 2px 4px rgba(3, 5, 7, 0.15)";
619
+ },
620
+ onMouseLeave: (e) => {
621
+ e.currentTarget.style.backgroundColor = "#030507";
622
+ e.currentTarget.style.transform = "translateY(0)";
623
+ e.currentTarget.style.boxShadow = "0 4px 16px rgba(3, 5, 7, 0.2), 0 1px 3px rgba(3, 5, 7, 0.1)";
624
+ },
625
+ onMouseDown: (e) => {
626
+ e.currentTarget.style.backgroundColor = "#858589";
627
+ e.currentTarget.style.transform = "translateY(0)";
628
+ },
629
+ onMouseUp: (e) => {
630
+ e.currentTarget.style.backgroundColor = "#575758";
631
+ e.currentTarget.style.transform = "translateY(-1px)";
632
+ },
633
+ onFocus: (e) => {
634
+ e.currentTarget.style.outline = "2px solid #BEC9FF";
635
+ e.currentTarget.style.outlineOffset = "2px";
636
+ },
637
+ onBlur: (e) => {
638
+ e.currentTarget.style.outline = "none";
639
+ },
640
+ children: [
641
+ "Get API Key",
642
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: { fontSize: "16px", marginLeft: "-4px" }, children: "\u2192" })
643
+ ]
644
+ }
645
+ )
646
+ }
647
+ )
648
+ ]
649
+ }
650
+ )
651
+ }
652
+ );
653
+ }
654
+ function ActionsTab({ context }) {
655
+ const actions = Object.values(context.actions);
656
+ if (actions.length === 0) {
657
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
658
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No actions available" }),
659
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Actions will appear here when registered" })
660
+ ] });
661
+ }
662
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: actions.map((action, index) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
663
+ "div",
664
+ {
665
+ style: {
666
+ backgroundColor: "white",
667
+ padding: "16px",
668
+ borderRadius: "8px",
669
+ boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
670
+ border: "1px solid #e5e7eb"
671
+ },
672
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
673
+ "div",
674
+ {
675
+ style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" },
676
+ children: [
677
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { flex: 1 }, children: [
678
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("h3", { style: { fontWeight: "600", color: "#1f2937", margin: "0 0 4px 0" }, children: action.name }),
679
+ action.description && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: { fontSize: "14px", color: "#4b5563", margin: "0 0 12px 0" }, children: action.description }),
680
+ action.parameters && action.parameters.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { marginTop: "12px" }, children: [
681
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
682
+ "p",
683
+ {
684
+ style: {
685
+ fontSize: "12px",
686
+ fontWeight: "500",
687
+ color: "#6b7280",
688
+ textTransform: "uppercase",
689
+ margin: "0 0 4px 0"
690
+ },
691
+ children: "Parameters:"
692
+ }
693
+ ),
694
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: action.parameters.map((param, pIndex) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { fontSize: "14px" }, children: [
695
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: { fontFamily: "monospace", color: "#374151" }, children: param.name }),
696
+ param.required && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: { marginLeft: "4px", fontSize: "12px", color: "#ef4444" }, children: "*required" }),
697
+ param.type && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("span", { style: { marginLeft: "8px", fontSize: "12px", color: "#6b7280" }, children: [
698
+ "(",
699
+ param.type,
700
+ ")"
701
+ ] })
702
+ ] }, pIndex)) })
703
+ ] })
704
+ ] }),
705
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { marginLeft: "16px" }, children: action.status === "available" ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CheckIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ExclamationMarkTriangleIcon, {}) })
706
+ ]
707
+ }
708
+ )
709
+ },
710
+ index
711
+ )) });
712
+ }
713
+ function ReadablesTab({ context }) {
714
+ const readables = context.getAllContext();
715
+ if (readables.length === 0) {
716
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
717
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No readable context available" }),
718
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Readable context will appear here when provided" })
719
+ ] });
720
+ }
721
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: readables.map((readable, index) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
722
+ "div",
723
+ {
724
+ style: {
725
+ backgroundColor: "white",
726
+ padding: "16px",
727
+ borderRadius: "8px",
728
+ boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
729
+ border: "1px solid #e5e7eb"
730
+ },
731
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
732
+ "div",
733
+ {
734
+ style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" },
735
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { flex: 1 }, children: [
736
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("h3", { style: { fontWeight: "600", color: "#1f2937", margin: "0 0 4px 0" }, children: readable.name || `Readable ${index + 1}` }),
737
+ readable.description && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: { fontSize: "14px", color: "#4b5563", margin: "0 0 12px 0" }, children: readable.description }),
738
+ readable.value && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
739
+ "pre",
740
+ {
741
+ style: {
742
+ marginTop: "12px",
743
+ padding: "8px",
744
+ backgroundColor: "#f9fafb",
745
+ borderRadius: "4px",
746
+ fontSize: "12px",
747
+ overflowX: "auto",
748
+ margin: "12px 0 0 0"
749
+ },
750
+ children: JSON.stringify(readable.value, null, 2)
751
+ }
752
+ )
753
+ ] })
754
+ }
755
+ )
756
+ },
757
+ index
758
+ )) });
759
+ }
760
+ function AgentStatusTab({ context }) {
761
+ const agentStates = context.coagentStates || {};
762
+ const agentStateEntries = Object.entries(agentStates);
763
+ if (agentStateEntries.length === 0) {
764
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
765
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No agent states available" }),
766
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Agent states will appear here when agents are active" })
767
+ ] });
768
+ }
769
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "24px" }, children: agentStateEntries.map(([agentName, state]) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
770
+ "div",
771
+ {
772
+ style: {
773
+ backgroundColor: "white",
774
+ padding: "24px",
775
+ borderRadius: "8px",
776
+ boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
777
+ border: "1px solid #e5e7eb"
778
+ },
779
+ children: [
780
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
781
+ "div",
782
+ {
783
+ style: {
784
+ display: "flex",
785
+ alignItems: "center",
786
+ justifyContent: "space-between",
787
+ marginBottom: "16px"
788
+ },
789
+ children: [
790
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("h3", { style: { fontWeight: "600", fontSize: "18px", color: "#1f2937", margin: 0 }, children: agentName }),
791
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
792
+ "span",
793
+ {
794
+ style: {
795
+ padding: "4px 12px",
796
+ borderRadius: "9999px",
797
+ fontSize: "12px",
798
+ fontWeight: "500",
799
+ backgroundColor: state.status === "running" ? "#dcfce7" : state.status === "complete" ? "#dbeafe" : "#f3f4f6",
800
+ color: state.status === "running" ? "#166534" : state.status === "complete" ? "#1e40af" : "#1f2937"
801
+ },
802
+ children: state.status || "idle"
803
+ }
804
+ )
805
+ ]
806
+ }
807
+ ),
808
+ state.state && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { marginBottom: "12px" }, children: [
809
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
810
+ "p",
811
+ {
812
+ style: {
813
+ fontSize: "12px",
814
+ fontWeight: "500",
815
+ color: "#6b7280",
816
+ textTransform: "uppercase",
817
+ margin: "0 0 4px 0"
818
+ },
819
+ children: "Current State:"
820
+ }
821
+ ),
822
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
823
+ "pre",
824
+ {
825
+ style: {
826
+ padding: "12px",
827
+ backgroundColor: "#f9fafb",
828
+ borderRadius: "4px",
829
+ fontSize: "12px",
830
+ overflowX: "auto",
831
+ margin: 0
832
+ },
833
+ children: JSON.stringify(state.state, null, 2)
834
+ }
835
+ )
836
+ ] }),
837
+ state.running && /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
838
+ "div",
839
+ {
840
+ style: {
841
+ marginTop: "16px",
842
+ display: "flex",
843
+ alignItems: "center",
844
+ fontSize: "14px",
845
+ color: "#4b5563"
846
+ },
847
+ children: [
848
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { marginRight: "8px" }, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
849
+ "svg",
850
+ {
851
+ width: "16",
852
+ height: "16",
853
+ viewBox: "0 0 16 16",
854
+ style: { animation: "spin 1s linear infinite" },
855
+ children: [
856
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("style", { children: `@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }` }),
857
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
858
+ "circle",
859
+ {
860
+ cx: "8",
861
+ cy: "8",
862
+ r: "6",
863
+ fill: "none",
864
+ stroke: "#4b5563",
865
+ strokeWidth: "2",
866
+ strokeDasharray: "9 3"
867
+ }
868
+ )
869
+ ]
870
+ }
871
+ ) }),
872
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { children: "Agent is currently running..." })
873
+ ]
874
+ }
875
+ )
876
+ ]
877
+ },
878
+ agentName
879
+ )) });
880
+ }
881
+ function MessagesTab({ messagesContext }) {
882
+ const messages = messagesContext.messages || [];
883
+ if (messages.length === 0) {
884
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
885
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No messages yet" }),
886
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Messages will appear here as the conversation progresses" })
887
+ ] });
888
+ }
889
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: messages.map((message, index) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
890
+ "div",
891
+ {
892
+ style: {
893
+ padding: "16px",
894
+ borderRadius: "8px",
895
+ backgroundColor: message.role === "user" ? "#eff6ff" : message.role === "assistant" ? "#f9fafb" : "#fefce8",
896
+ border: `1px solid ${message.role === "user" ? "#c7d2fe" : message.role === "assistant" ? "#e5e7eb" : "#fde047"}`,
897
+ marginLeft: message.role === "user" ? "48px" : "0",
898
+ marginRight: message.role === "assistant" ? "48px" : "0"
899
+ },
900
+ children: [
901
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
902
+ "div",
903
+ {
904
+ style: {
905
+ display: "flex",
906
+ alignItems: "flex-start",
907
+ justifyContent: "space-between",
908
+ marginBottom: "8px"
909
+ },
910
+ children: [
911
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
912
+ "span",
913
+ {
914
+ style: {
915
+ fontWeight: "500",
916
+ fontSize: "14px",
917
+ color: "#374151",
918
+ textTransform: "capitalize"
919
+ },
920
+ children: message.role || "system"
921
+ }
922
+ ),
923
+ message.timestamp && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { style: { fontSize: "12px", color: "#6b7280" }, children: new Date(message.timestamp).toLocaleTimeString() })
924
+ ]
925
+ }
926
+ ),
927
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { fontSize: "14px", color: "#1f2937", whiteSpace: "pre-wrap" }, children: message.content || "" })
928
+ ]
929
+ },
930
+ index
931
+ )) });
932
+ }
933
+ function ContextTab({ context }) {
934
+ const documents = context.getDocumentsContext([]);
935
+ if (documents.length === 0) {
936
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
937
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No document context available" }),
938
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Document context will appear here when provided" })
939
+ ] });
940
+ }
941
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: documents.map((doc, index) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
942
+ "div",
943
+ {
944
+ style: {
945
+ backgroundColor: "white",
946
+ padding: "16px",
947
+ borderRadius: "8px",
948
+ boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
949
+ border: "1px solid #e5e7eb"
950
+ },
951
+ children: [
952
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("h3", { style: { fontWeight: "600", color: "#1f2937", margin: "0 0 8px 0" }, children: doc.name || `Document ${index + 1}` }),
953
+ doc.content && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
954
+ "pre",
955
+ {
956
+ style: {
957
+ padding: "12px",
958
+ backgroundColor: "#f9fafb",
959
+ borderRadius: "4px",
960
+ fontSize: "12px",
961
+ overflowX: "auto",
962
+ margin: 0
963
+ },
964
+ children: doc.content
965
+ }
966
+ )
967
+ ]
968
+ },
969
+ index
970
+ )) });
971
+ }
972
+
973
+ // src/components/dev-console/console-trigger.tsx
974
+ var import_jsx_runtime3 = require("react/jsx-runtime");
975
+ function ConsoleTrigger({ position = "bottom-right" }) {
976
+ const context = useCopilotContext();
977
+ const hasApiKey = Boolean(context.copilotApiConfig.publicApiKey);
978
+ const [isModalOpen, setIsModalOpen] = (0, import_react4.useState)(false);
979
+ const [isHovered, setIsHovered] = (0, import_react4.useState)(false);
980
+ const [isDragging, setIsDragging] = (0, import_react4.useState)(false);
981
+ const [buttonPosition, setButtonPosition] = (0, import_react4.useState)(null);
982
+ const [mounted, setMounted] = (0, import_react4.useState)(false);
983
+ const dragRef = (0, import_react4.useRef)(null);
984
+ const buttonRef = (0, import_react4.useRef)(null);
985
+ (0, import_react4.useEffect)(() => {
986
+ setMounted(true);
987
+ if (typeof window !== "undefined" && !buttonPosition) {
988
+ const buttonSize = 60;
989
+ const margin = 24;
990
+ const initialPosition = {
991
+ x: margin,
992
+ y: window.innerHeight - buttonSize - margin
993
+ };
994
+ setButtonPosition(initialPosition);
995
+ }
996
+ }, [position]);
997
+ const handleMouseDown = (e) => {
998
+ e.preventDefault();
999
+ if (!buttonPosition)
1000
+ return;
1001
+ dragRef.current = {
1002
+ startX: e.clientX,
1003
+ startY: e.clientY,
1004
+ buttonX: buttonPosition.x,
1005
+ buttonY: buttonPosition.y
1006
+ };
1007
+ setIsDragging(true);
1008
+ };
1009
+ (0, import_react4.useEffect)(() => {
1010
+ if (!isDragging)
1011
+ return;
1012
+ const handleMouseMove = (e) => {
1013
+ e.preventDefault();
1014
+ e.stopPropagation();
1015
+ if (!dragRef.current)
1016
+ return;
1017
+ const deltaX = e.clientX - dragRef.current.startX;
1018
+ const deltaY = e.clientY - dragRef.current.startY;
1019
+ let newX = dragRef.current.buttonX + deltaX;
1020
+ let newY = dragRef.current.buttonY + deltaY;
1021
+ newX = Math.max(0, Math.min(newX, window.innerWidth - 60));
1022
+ newY = Math.max(0, Math.min(newY, window.innerHeight - 60));
1023
+ setButtonPosition({ x: newX, y: newY });
1024
+ };
1025
+ const handleMouseUp = (e) => {
1026
+ e.preventDefault();
1027
+ e.stopPropagation();
1028
+ setIsDragging(false);
1029
+ dragRef.current = null;
1030
+ };
1031
+ document.addEventListener("mousemove", handleMouseMove, { capture: true, passive: false });
1032
+ document.addEventListener("mouseup", handleMouseUp, { capture: true, passive: false });
1033
+ return () => {
1034
+ document.removeEventListener("mousemove", handleMouseMove, { capture: true });
1035
+ document.removeEventListener("mouseup", handleMouseUp, { capture: true });
1036
+ };
1037
+ }, [isDragging]);
1038
+ if (!mounted || !buttonPosition) {
1039
+ return null;
1040
+ }
1041
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
1042
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
1043
+ "button",
1044
+ {
1045
+ ref: buttonRef,
1046
+ onClick: () => {
1047
+ if (!isDragging) {
1048
+ setIsModalOpen(true);
1049
+ }
1050
+ },
1051
+ onMouseDown: handleMouseDown,
1052
+ onMouseEnter: () => setIsHovered(true),
1053
+ onMouseLeave: () => setIsHovered(false),
1054
+ style: {
1055
+ position: "fixed",
1056
+ left: `${buttonPosition.x}px`,
1057
+ top: `${buttonPosition.y}px`,
1058
+ zIndex: 2147483647,
1059
+ width: "60px",
1060
+ height: "60px",
1061
+ background: isDragging ? "#000000" : isHovered ? "#111111" : "#000000",
1062
+ color: "white",
1063
+ borderRadius: "50%",
1064
+ boxShadow: isDragging ? "0 8px 32px rgba(0, 0, 0, 0.6), 0 4px 16px rgba(0, 0, 0, 0.4)" : isHovered ? "0 12px 40px rgba(0, 0, 0, 0.7), 0 6px 20px rgba(0, 0, 0, 0.5)" : "0 6px 20px rgba(0, 0, 0, 0.5), 0 3px 10px rgba(0, 0, 0, 0.3)",
1065
+ transition: isDragging ? "none" : "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
1066
+ display: "flex",
1067
+ alignItems: "center",
1068
+ justifyContent: "center",
1069
+ border: "none",
1070
+ cursor: isDragging ? "grabbing" : "grab",
1071
+ opacity: 1,
1072
+ userSelect: "none",
1073
+ transform: isDragging ? "scale(1.05)" : isHovered ? "scale(1.1)" : "scale(1)",
1074
+ backdropFilter: "blur(10px)",
1075
+ pointerEvents: "auto",
1076
+ isolation: "isolate"
1077
+ },
1078
+ title: hasApiKey ? "Open Developer Console (Drag to move)" : "Developer Console (API Key Required, Drag to move)",
1079
+ children: [
1080
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1081
+ "div",
1082
+ {
1083
+ style: {
1084
+ width: "28px",
1085
+ height: "28px",
1086
+ display: "flex",
1087
+ alignItems: "center",
1088
+ justifyContent: "center",
1089
+ filter: "drop-shadow(0 2px 4px rgba(0,0,0,0.2))"
1090
+ },
1091
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(CopilotKitIcon, {})
1092
+ }
1093
+ ),
1094
+ !hasApiKey && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1095
+ "div",
1096
+ {
1097
+ style: {
1098
+ position: "absolute",
1099
+ top: "-2px",
1100
+ right: "-2px",
1101
+ width: "18px",
1102
+ height: "18px",
1103
+ background: "linear-gradient(135deg, #ff6b6b 0%, #ee5a24 100%)",
1104
+ borderRadius: "50%",
1105
+ display: "flex",
1106
+ alignItems: "center",
1107
+ justifyContent: "center",
1108
+ boxShadow: "0 2px 8px rgba(255, 107, 107, 0.4)",
1109
+ border: "2px solid white"
1110
+ },
1111
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { style: { fontSize: "10px", color: "white", fontWeight: "bold" }, children: "!" })
1112
+ }
1113
+ )
1114
+ ]
1115
+ }
1116
+ ),
1117
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
1118
+ DeveloperConsoleModal,
1119
+ {
1120
+ isOpen: isModalOpen,
1121
+ onClose: () => setIsModalOpen(false),
1122
+ hasApiKey
1123
+ }
1124
+ )
1125
+ ] });
1126
+ }
1127
+ // Annotate the CommonJS export names for ESM import in node:
1128
+ 0 && (module.exports = {
1129
+ ConsoleTrigger
1130
+ });
1131
+ //# sourceMappingURL=console-trigger.js.map