@copilotkit/react-core 0.0.0-fix-surface-agui-stream-errors-20250730142248 → 0.0.0-fix-runtime-reorder-and-validate-tool-20250813140844

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 (140) hide show
  1. package/CHANGELOG.md +132 -3
  2. package/dist/{chunk-TTI4Z6GK.mjs → chunk-4DIHOVZE.mjs} +13 -13
  3. package/dist/chunk-4DIHOVZE.mjs.map +1 -0
  4. package/dist/{chunk-PHIMGB3K.mjs → chunk-4ISB3H6B.mjs} +33 -27
  5. package/dist/chunk-4ISB3H6B.mjs.map +1 -0
  6. package/dist/{chunk-AWFAFFO5.mjs → chunk-6ZLPNY7X.mjs} +7 -3
  7. package/dist/chunk-6ZLPNY7X.mjs.map +1 -0
  8. package/dist/{chunk-GEKWHETN.mjs → chunk-DLEXVOQE.mjs} +4 -4
  9. package/dist/{chunk-VH45SC6Z.mjs → chunk-F5UYV4IS.mjs} +4 -4
  10. package/dist/{chunk-GRCHDHC4.mjs → chunk-FVW3ESBU.mjs} +30 -11
  11. package/dist/chunk-FVW3ESBU.mjs.map +1 -0
  12. package/dist/chunk-IK3NNGZA.mjs +34 -0
  13. package/dist/chunk-IK3NNGZA.mjs.map +1 -0
  14. package/dist/{chunk-K4HXT453.mjs → chunk-JJDXTTEN.mjs} +2 -2
  15. package/dist/{chunk-VSH4JSN3.mjs → chunk-KMSLAFNT.mjs} +13 -7
  16. package/dist/chunk-KMSLAFNT.mjs.map +1 -0
  17. package/dist/chunk-KOGKA4V5.mjs +170 -0
  18. package/dist/chunk-KOGKA4V5.mjs.map +1 -0
  19. package/dist/{chunk-ZTZJIDRJ.mjs → chunk-L3I57GMV.mjs} +5 -5
  20. package/dist/chunk-PIF5KJYI.mjs +103 -0
  21. package/dist/chunk-PIF5KJYI.mjs.map +1 -0
  22. package/dist/chunk-QXSEHCPY.mjs +759 -0
  23. package/dist/chunk-QXSEHCPY.mjs.map +1 -0
  24. package/dist/{chunk-FTP6FDYS.mjs → chunk-TPTXRDFZ.mjs} +5 -5
  25. package/dist/{chunk-MUDXTKXE.mjs → chunk-TWYUYC4F.mjs} +6 -6
  26. package/dist/{chunk-KH27ZS4Y.mjs → chunk-V5PU37CB.mjs} +11 -10
  27. package/dist/chunk-V5PU37CB.mjs.map +1 -0
  28. package/dist/{chunk-OPRDTF4S.mjs → chunk-X2DNXTME.mjs} +4 -4
  29. package/dist/components/copilot-provider/copilot-messages.mjs +3 -3
  30. package/dist/components/copilot-provider/copilotkit-props.d.ts +10 -2
  31. package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
  32. package/dist/components/copilot-provider/copilotkit.js +1052 -72
  33. package/dist/components/copilot-provider/copilotkit.js.map +1 -1
  34. package/dist/components/copilot-provider/copilotkit.mjs +11 -8
  35. package/dist/components/copilot-provider/index.js +1052 -72
  36. package/dist/components/copilot-provider/index.js.map +1 -1
  37. package/dist/components/copilot-provider/index.mjs +11 -8
  38. package/dist/components/dev-console/console-trigger.d.ts +8 -0
  39. package/dist/components/dev-console/console-trigger.js +1131 -0
  40. package/dist/components/dev-console/console-trigger.js.map +1 -0
  41. package/dist/components/dev-console/console-trigger.mjs +13 -0
  42. package/dist/components/dev-console/developer-console-modal.d.ts +10 -0
  43. package/dist/components/dev-console/developer-console-modal.js +977 -0
  44. package/dist/components/dev-console/developer-console-modal.js.map +1 -0
  45. package/dist/components/dev-console/developer-console-modal.mjs +12 -0
  46. package/dist/components/dev-console/developer-console-modal.mjs.map +1 -0
  47. package/dist/components/dev-console/icons.d.ts +9 -0
  48. package/dist/components/dev-console/icons.js +131 -0
  49. package/dist/components/dev-console/icons.js.map +1 -0
  50. package/dist/components/dev-console/icons.mjs +16 -0
  51. package/dist/components/dev-console/icons.mjs.map +1 -0
  52. package/dist/components/error-boundary/error-boundary.js +6 -2
  53. package/dist/components/error-boundary/error-boundary.js.map +1 -1
  54. package/dist/components/error-boundary/error-boundary.mjs +2 -2
  55. package/dist/components/index.js +1052 -72
  56. package/dist/components/index.js.map +1 -1
  57. package/dist/components/index.mjs +11 -8
  58. package/dist/components/usage-banner.d.ts +2 -1
  59. package/dist/components/usage-banner.js +6 -2
  60. package/dist/components/usage-banner.js.map +1 -1
  61. package/dist/components/usage-banner.mjs +1 -1
  62. package/dist/context/index.mjs +4 -4
  63. package/dist/hooks/index.d.ts +5 -5
  64. package/dist/hooks/index.js +65 -31
  65. package/dist/hooks/index.js.map +1 -1
  66. package/dist/hooks/index.mjs +34 -31
  67. package/dist/hooks/use-chat.d.ts +1 -0
  68. package/dist/hooks/use-chat.js +5 -4
  69. package/dist/hooks/use-chat.js.map +1 -1
  70. package/dist/hooks/use-chat.mjs +4 -4
  71. package/dist/hooks/use-coagent-state-render.mjs +2 -2
  72. package/dist/hooks/use-coagent.d.ts +1 -1
  73. package/dist/hooks/use-coagent.js +25 -11
  74. package/dist/hooks/use-coagent.js.map +1 -1
  75. package/dist/hooks/use-coagent.mjs +16 -13
  76. package/dist/hooks/use-copilot-action.mjs +2 -2
  77. package/dist/hooks/use-copilot-authenticated-action.mjs +3 -3
  78. package/dist/hooks/use-copilot-chat-headless_c.d.ts +33 -0
  79. package/dist/hooks/{use-copilot-chat-light.js → use-copilot-chat-headless_c.js} +95 -24
  80. package/dist/hooks/use-copilot-chat-headless_c.js.map +1 -0
  81. package/dist/hooks/{use-copilot-chat-light.mjs → use-copilot-chat-headless_c.mjs} +22 -16
  82. package/dist/hooks/use-copilot-chat-headless_c.mjs.map +1 -0
  83. package/dist/hooks/use-copilot-chat.d.ts +85 -4
  84. package/dist/hooks/use-copilot-chat.js +45 -66
  85. package/dist/hooks/use-copilot-chat.js.map +1 -1
  86. package/dist/hooks/use-copilot-chat.mjs +16 -16
  87. package/dist/hooks/use-copilot-chat_internal.d.ts +102 -12
  88. package/dist/hooks/use-copilot-chat_internal.js +20 -6
  89. package/dist/hooks/use-copilot-chat_internal.js.map +1 -1
  90. package/dist/hooks/use-copilot-chat_internal.mjs +15 -12
  91. package/dist/hooks/use-langgraph-interrupt-render.mjs +1 -1
  92. package/dist/hooks/use-langgraph-interrupt.js +20 -6
  93. package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
  94. package/dist/hooks/use-langgraph-interrupt.mjs +16 -13
  95. package/dist/index.d.ts +3 -3
  96. package/dist/index.js +1210 -205
  97. package/dist/index.js.map +1 -1
  98. package/dist/index.mjs +38 -35
  99. package/dist/lib/copilot-task.js.map +1 -1
  100. package/dist/lib/copilot-task.mjs +13 -10
  101. package/dist/lib/index.js.map +1 -1
  102. package/dist/lib/index.mjs +13 -10
  103. package/dist/utils/extract.js.map +1 -1
  104. package/dist/utils/extract.mjs +11 -8
  105. package/dist/utils/index.js.map +1 -1
  106. package/dist/utils/index.mjs +11 -8
  107. package/dist/utils/suggestions.js.map +1 -1
  108. package/dist/utils/suggestions.mjs +11 -8
  109. package/package.json +3 -3
  110. package/src/components/copilot-provider/copilotkit-props.tsx +11 -2
  111. package/src/components/copilot-provider/copilotkit.tsx +25 -16
  112. package/src/components/dev-console/console-trigger.tsx +190 -0
  113. package/src/components/dev-console/developer-console-modal.tsx +866 -0
  114. package/src/components/dev-console/icons.tsx +101 -0
  115. package/src/components/usage-banner.tsx +8 -3
  116. package/src/hooks/index.ts +6 -7
  117. package/src/hooks/use-chat.ts +7 -3
  118. package/src/hooks/use-coagent.ts +6 -11
  119. package/src/hooks/use-copilot-chat-headless_c.ts +257 -0
  120. package/src/hooks/use-copilot-chat.ts +103 -154
  121. package/src/hooks/use-copilot-chat_internal.ts +128 -15
  122. package/dist/chunk-AWFAFFO5.mjs.map +0 -1
  123. package/dist/chunk-GRCHDHC4.mjs.map +0 -1
  124. package/dist/chunk-KH27ZS4Y.mjs.map +0 -1
  125. package/dist/chunk-MWHILKQH.mjs +0 -18
  126. package/dist/chunk-MWHILKQH.mjs.map +0 -1
  127. package/dist/chunk-PHIMGB3K.mjs.map +0 -1
  128. package/dist/chunk-TTI4Z6GK.mjs.map +0 -1
  129. package/dist/chunk-VSH4JSN3.mjs.map +0 -1
  130. package/dist/hooks/use-copilot-chat-light.d.ts +0 -211
  131. package/dist/hooks/use-copilot-chat-light.js.map +0 -1
  132. package/src/hooks/use-copilot-chat-light.ts +0 -219
  133. /package/dist/{chunk-GEKWHETN.mjs.map → chunk-DLEXVOQE.mjs.map} +0 -0
  134. /package/dist/{chunk-VH45SC6Z.mjs.map → chunk-F5UYV4IS.mjs.map} +0 -0
  135. /package/dist/{chunk-K4HXT453.mjs.map → chunk-JJDXTTEN.mjs.map} +0 -0
  136. /package/dist/{chunk-ZTZJIDRJ.mjs.map → chunk-L3I57GMV.mjs.map} +0 -0
  137. /package/dist/{chunk-FTP6FDYS.mjs.map → chunk-TPTXRDFZ.mjs.map} +0 -0
  138. /package/dist/{chunk-MUDXTKXE.mjs.map → chunk-TWYUYC4F.mjs.map} +0 -0
  139. /package/dist/{chunk-OPRDTF4S.mjs.map → chunk-X2DNXTME.mjs.map} +0 -0
  140. /package/dist/{hooks/use-copilot-chat-light.mjs.map → components/dev-console/console-trigger.mjs.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,6 +1,56 @@
1
1
  # ui
2
2
 
3
- ## 0.0.0-fix-surface-agui-stream-errors-20250730142248
3
+ ## 0.0.0-fix-runtime-reorder-and-validate-tool-20250813140844
4
+
5
+ ### Patch Changes
6
+
7
+ - db5bbda: - fix: allow disabling of default cpk system message
8
+ - chore: set up direct fastapi usage on coagents starter poetry demo
9
+ - @copilotkit/runtime-client-gql@0.0.0-fix-runtime-reorder-and-validate-tool-20250813140844
10
+ - @copilotkit/shared@0.0.0-fix-runtime-reorder-and-validate-tool-20250813140844
11
+
12
+ ## 1.10.2-next.0
13
+
14
+ ### Patch Changes
15
+
16
+ - db5bbda: - fix: allow disabling of default cpk system message
17
+ - chore: set up direct fastapi usage on coagents starter poetry demo
18
+ - @copilotkit/runtime-client-gql@1.10.2-next.0
19
+ - @copilotkit/shared@1.10.2-next.0
20
+
21
+ ## 1.10.1
22
+
23
+ ### Patch Changes
24
+
25
+ - Updated dependencies [76e2603]
26
+ - Updated dependencies [7bf9dfa]
27
+ - @copilotkit/runtime-client-gql@1.10.1
28
+ - @copilotkit/shared@1.10.1
29
+
30
+ ## 1.10.1-next.2
31
+
32
+ ### Patch Changes
33
+
34
+ - @copilotkit/runtime-client-gql@1.10.1-next.2
35
+ - @copilotkit/shared@1.10.1-next.2
36
+
37
+ ## 1.10.1-next.1
38
+
39
+ ### Patch Changes
40
+
41
+ - Updated dependencies [76e2603]
42
+ - @copilotkit/runtime-client-gql@1.10.1-next.1
43
+ - @copilotkit/shared@1.10.1-next.1
44
+
45
+ ## 1.10.1-next.0
46
+
47
+ ### Patch Changes
48
+
49
+ - Updated dependencies [7bf9dfa]
50
+ - @copilotkit/runtime-client-gql@1.10.1-next.0
51
+ - @copilotkit/shared@1.10.1-next.0
52
+
53
+ ## 1.10.0
4
54
 
5
55
  ### Minor Changes
6
56
 
@@ -26,11 +76,90 @@
26
76
  ### Patch Changes
27
77
 
28
78
  - 967d0ab: - refactor(chat): separate useCopilotChat into internal implementation and public API
79
+ - 6d1de58: - fix: address issues that would cause headless UI breaking changes in the next release
80
+
81
+ Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
82
+
83
+ - fix: more fixes addressing breaking changes in new Headless UI
84
+
85
+ Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
86
+
87
+ - chore: address linting issues
88
+
89
+ Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
90
+
91
+ - chore: fixing branding and docs
92
+
93
+ Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
94
+
95
+ - chore: more docs fixing
96
+
97
+ Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
98
+
29
99
  - 6de24ce: - fix rerender issues by moving suggestions to the messages context
100
+ - b64555d: - feat: adds dev console
30
101
  - Updated dependencies [a8c0263]
31
102
  - Updated dependencies [8674da1]
32
- - @copilotkit/shared@0.0.0-fix-surface-agui-stream-errors-20250730142248
33
- - @copilotkit/runtime-client-gql@0.0.0-fix-surface-agui-stream-errors-20250730142248
103
+ - Updated dependencies [6d1de58]
104
+ - @copilotkit/shared@1.10.0
105
+ - @copilotkit/runtime-client-gql@1.10.0
106
+
107
+ ## 1.10.0-next.13
108
+
109
+ ### Patch Changes
110
+
111
+ - @copilotkit/runtime-client-gql@1.10.0-next.13
112
+ - @copilotkit/shared@1.10.0-next.13
113
+
114
+ ## 1.10.0-next.12
115
+
116
+ ### Patch Changes
117
+
118
+ - b64555d: - feat: adds dev console
119
+ - @copilotkit/runtime-client-gql@1.10.0-next.12
120
+ - @copilotkit/shared@1.10.0-next.12
121
+
122
+ ## 1.10.0-next.11
123
+
124
+ ### Patch Changes
125
+
126
+ - @copilotkit/runtime-client-gql@1.10.0-next.11
127
+ - @copilotkit/shared@1.10.0-next.11
128
+
129
+ ## 1.10.0-next.10
130
+
131
+ ### Patch Changes
132
+
133
+ - 6d1de58: - fix: address issues that would cause headless UI breaking changes in the next release
134
+
135
+ Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
136
+
137
+ - fix: more fixes addressing breaking changes in new Headless UI
138
+
139
+ Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
140
+
141
+ - chore: address linting issues
142
+
143
+ Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
144
+
145
+ - chore: fixing branding and docs
146
+
147
+ Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
148
+
149
+ - chore: more docs fixing
150
+
151
+ Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
152
+
153
+ - Updated dependencies [6d1de58]
154
+ - @copilotkit/shared@1.10.0-next.10
155
+ - @copilotkit/runtime-client-gql@1.10.0-next.10
156
+
157
+ ## 1.10.0-next.9
158
+
159
+ ### Patch Changes
160
+
161
+ - @copilotkit/runtime-client-gql@1.10.0-next.9
162
+ - @copilotkit/shared@1.10.0-next.9
34
163
 
35
164
  ## 1.10.0-next.8
36
165
 
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  useCopilotChat
3
- } from "./chunk-GRCHDHC4.mjs";
3
+ } from "./chunk-FVW3ESBU.mjs";
4
4
  import {
5
5
  useMessagesTap
6
- } from "./chunk-MUDXTKXE.mjs";
7
- import {
8
- useCopilotRuntimeClient
9
- } from "./chunk-FAUNHSQU.mjs";
6
+ } from "./chunk-TWYUYC4F.mjs";
10
7
  import {
11
8
  useAsyncCallback
12
9
  } from "./chunk-N4WEHORG.mjs";
13
10
  import {
14
- useToast
15
- } from "./chunk-EFL5OBKN.mjs";
11
+ useCopilotRuntimeClient
12
+ } from "./chunk-FAUNHSQU.mjs";
16
13
  import {
17
14
  useCopilotContext
18
15
  } from "./chunk-TEMLWRRT.mjs";
16
+ import {
17
+ useToast
18
+ } from "./chunk-EFL5OBKN.mjs";
19
19
  import {
20
20
  __async,
21
21
  __spreadProps,
@@ -45,7 +45,7 @@ function useCoAgent(options) {
45
45
  }, [availableAgents]);
46
46
  const { getMessagesFromTap } = useMessagesTap();
47
47
  const { coagentStates, coagentStatesRef, setCoagentStatesWithRef, threadId, copilotApiConfig } = context;
48
- const { appendMessage, runChatCompletion } = useCopilotChat();
48
+ const { sendMessage, runChatCompletion } = useCopilotChat();
49
49
  const headers = __spreadValues({}, copilotApiConfig.headers || {});
50
50
  const runtimeClient = useCopilotRuntimeClient({
51
51
  url: copilotApiConfig.chatApiEndpoint,
@@ -129,9 +129,9 @@ function useCoAgent(options) {
129
129
  }, [JSON.stringify(options.config), JSON.stringify(options.configurable)]);
130
130
  const runAgentCallback = useAsyncCallback(
131
131
  (hint) => __async(this, null, function* () {
132
- yield runAgent(name, context, getMessagesFromTap(), appendMessage, runChatCompletion, hint);
132
+ yield runAgent(name, context, getMessagesFromTap(), sendMessage, runChatCompletion, hint);
133
133
  }),
134
- [name, context, appendMessage, runChatCompletion]
134
+ [name, context, sendMessage, runChatCompletion]
135
135
  );
136
136
  return useMemo(() => {
137
137
  const coagentState = getCoagentState({ coagentStates, name, options });
@@ -173,7 +173,7 @@ function stopAgent(name, context) {
173
173
  console.warn(`No agent session found for ${name}`);
174
174
  }
175
175
  }
176
- function runAgent(name, context, messages, appendMessage, runChatCompletion, hint) {
176
+ function runAgent(name, context, messages, sendMessage, runChatCompletion, hint) {
177
177
  return __async(this, null, function* () {
178
178
  var _a, _b;
179
179
  const { agentSession, setAgentSession } = context;
@@ -193,7 +193,7 @@ function runAgent(name, context, messages, appendMessage, runChatCompletion, hin
193
193
  if (hint) {
194
194
  const hintMessage = hint({ previousState, currentState: state });
195
195
  if (hintMessage) {
196
- yield appendMessage(hintMessage);
196
+ yield sendMessage(hintMessage);
197
197
  } else {
198
198
  yield runChatCompletion();
199
199
  }
@@ -235,4 +235,4 @@ export {
235
235
  stopAgent,
236
236
  runAgent
237
237
  };
238
- //# sourceMappingURL=chunk-TTI4Z6GK.mjs.map
238
+ //# sourceMappingURL=chunk-4DIHOVZE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/use-coagent.ts"],"sourcesContent":["/**\n * <Callout type=\"info\">\n * Usage of this hook assumes some additional setup in your application, for more information\n * on that see the CoAgents <span className=\"text-blue-500\">[getting started guide](/coagents/quickstart/langgraph)</span>.\n * </Callout>\n * <Frame className=\"my-12\">\n * <img\n * src=\"https://cdn.copilotkit.ai/docs/copilotkit/images/coagents/SharedStateCoAgents.gif\"\n * alt=\"CoAgents demonstration\"\n * className=\"w-auto\"\n * />\n * </Frame>\n *\n * This hook is used to integrate an agent into your application. With its use, you can\n * render and update the state of an agent, allowing for a dynamic and interactive experience.\n * We call these shared state experiences agentic copilots, or CoAgents for short.\n *\n * ## Usage\n *\n * ### Simple Usage\n *\n * ```tsx\n * import { useCoAgent } from \"@copilotkit/react-core\";\n *\n * type AgentState = {\n * count: number;\n * }\n *\n * const agent = useCoAgent<AgentState>({\n * name: \"my-agent\",\n * initialState: {\n * count: 0,\n * },\n * });\n *\n * ```\n *\n * `useCoAgent` returns an object with the following properties:\n *\n * ```tsx\n * const {\n * name, // The name of the agent currently being used.\n * nodeName, // The name of the current LangGraph node.\n * state, // The current state of the agent.\n * setState, // A function to update the state of the agent.\n * running, // A boolean indicating if the agent is currently running.\n * start, // A function to start the agent.\n * stop, // A function to stop the agent.\n * run, // A function to re-run the agent. Takes a HintFunction to inform the agent why it is being re-run.\n * } = agent;\n * ```\n *\n * Finally we can leverage these properties to create reactive experiences with the agent!\n *\n * ```tsx\n * const { state, setState } = useCoAgent<AgentState>({\n * name: \"my-agent\",\n * initialState: {\n * count: 0,\n * },\n * });\n *\n * return (\n * <div>\n * <p>Count: {state.count}</p>\n * <button onClick={() => setState({ count: state.count + 1 })}>Increment</button>\n * </div>\n * );\n * ```\n *\n * This reactivity is bidirectional, meaning that changes to the state from the agent will be reflected in the UI and vice versa.\n *\n * ## Parameters\n * <PropertyReference name=\"options\" type=\"UseCoagentOptions<T>\" required>\n * The options to use when creating the coagent.\n * <PropertyReference name=\"name\" type=\"string\" required>\n * The name of the agent to use.\n * </PropertyReference>\n * <PropertyReference name=\"initialState\" type=\"T | any\">\n * The initial state of the agent.\n * </PropertyReference>\n * <PropertyReference name=\"state\" type=\"T | any\">\n * State to manage externally if you are using this hook with external state management.\n * </PropertyReference>\n * <PropertyReference name=\"setState\" type=\"(newState: T | ((prevState: T | undefined) => T)) => void\">\n * A function to update the state of the agent if you are using this hook with external state management.\n * </PropertyReference>\n * </PropertyReference>\n */\n\nimport { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { CopilotContextParams, useCopilotContext } from \"../context\";\nimport { CoagentState } from \"../types/coagent-state\";\nimport { useCopilotChat } from \"./use-copilot-chat_internal\";\nimport { Message } from \"@copilotkit/shared\";\nimport { useAsyncCallback } from \"../components/error-boundary/error-utils\";\nimport { useToast } from \"../components/toast/toast-provider\";\nimport { useCopilotRuntimeClient } from \"./use-copilot-runtime-client\";\nimport { parseJson, CopilotKitAgentDiscoveryError } from \"@copilotkit/shared\";\nimport { useMessagesTap } from \"../components/copilot-provider/copilot-messages\";\nimport { Message as GqlMessage } from \"@copilotkit/runtime-client-gql\";\n\ninterface UseCoagentOptionsBase {\n /**\n * The name of the agent being used.\n */\n name: string;\n /**\n * @deprecated - use \"config.configurable\"\n * Config to pass to a LangGraph Agent\n */\n configurable?: Record<string, any>;\n /**\n * Config to pass to a LangGraph Agent\n */\n config?: {\n configurable?: Record<string, any>;\n [key: string]: any;\n };\n}\n\ninterface WithInternalStateManagementAndInitial<T> extends UseCoagentOptionsBase {\n /**\n * The initial state of the agent.\n */\n initialState: T;\n}\n\ninterface WithInternalStateManagement extends UseCoagentOptionsBase {\n /**\n * Optional initialState with default type any\n */\n initialState?: any;\n}\n\ninterface WithExternalStateManagement<T> extends UseCoagentOptionsBase {\n /**\n * The current state of the agent.\n */\n state: T;\n /**\n * A function to update the state of the agent.\n */\n setState: (newState: T | ((prevState: T | undefined) => T)) => void;\n}\n\ntype UseCoagentOptions<T> =\n | WithInternalStateManagementAndInitial<T>\n | WithInternalStateManagement\n | WithExternalStateManagement<T>;\n\nexport interface UseCoagentReturnType<T> {\n /**\n * The name of the agent being used.\n */\n name: string;\n /**\n * The name of the current LangGraph node.\n */\n nodeName?: string;\n /**\n * The ID of the thread the agent is running in.\n */\n threadId?: string;\n /**\n * A boolean indicating if the agent is currently running.\n */\n running: boolean;\n /**\n * The current state of the agent.\n */\n state: T;\n /**\n * A function to update the state of the agent.\n */\n setState: (newState: T | ((prevState: T | undefined) => T)) => void;\n /**\n * A function to start the agent.\n */\n start: () => void;\n /**\n * A function to stop the agent.\n */\n stop: () => void;\n /**\n * A function to re-run the agent. The hint function can be used to provide a hint to the agent\n * about why it is being re-run again.\n */\n run: (hint?: HintFunction) => Promise<void>;\n}\n\nexport interface HintFunctionParams {\n /**\n * The previous state of the agent.\n */\n previousState: any;\n /**\n * The current state of the agent.\n */\n currentState: any;\n}\n\nexport type HintFunction = (params: HintFunctionParams) => Message | undefined;\n\n/**\n * This hook is used to integrate an agent into your application. With its use, you can\n * render and update the state of the agent, allowing for a dynamic and interactive experience.\n * We call these shared state experiences \"agentic copilots\". To get started using agentic copilots, which\n * we refer to as CoAgents, checkout the documentation at https://docs.copilotkit.ai/coagents/quickstart/langgraph.\n */\nexport function useCoAgent<T = any>(options: UseCoagentOptions<T>): UseCoagentReturnType<T> {\n const context = useCopilotContext();\n const { availableAgents } = context;\n const { setBannerError } = useToast();\n const lastLoadedThreadId = useRef<string>();\n const lastLoadedState = useRef<any>();\n\n const { name } = options;\n useEffect(() => {\n if (availableAgents?.length && !availableAgents.some((a) => a.name === name)) {\n const message = `(useCoAgent): Agent \"${name}\" not found. Make sure the agent exists and is properly configured.`;\n console.warn(message);\n\n // Route to banner instead of toast for consistency\n const agentError = new CopilotKitAgentDiscoveryError({\n agentName: name,\n availableAgents: availableAgents.map((a) => ({ name: a.name, id: a.id })),\n });\n setBannerError(agentError);\n }\n }, [availableAgents]);\n\n const { getMessagesFromTap } = useMessagesTap();\n\n const { coagentStates, coagentStatesRef, setCoagentStatesWithRef, threadId, copilotApiConfig } =\n context;\n const { sendMessage, runChatCompletion } = useCopilotChat();\n const headers = {\n ...(copilotApiConfig.headers || {}),\n };\n\n const runtimeClient = useCopilotRuntimeClient({\n url: copilotApiConfig.chatApiEndpoint,\n publicApiKey: copilotApiConfig.publicApiKey,\n headers,\n credentials: copilotApiConfig.credentials,\n showDevConsole: context.showDevConsole,\n });\n\n // if we manage state internally, we need to provide a function to set the state\n const setState = useCallback(\n (newState: T | ((prevState: T | undefined) => T)) => {\n // coagentStatesRef.current || {}\n let coagentState: CoagentState = getCoagentState({ coagentStates, name, options });\n const updatedState =\n typeof newState === \"function\" ? (newState as Function)(coagentState.state) : newState;\n\n setCoagentStatesWithRef({\n ...coagentStatesRef.current,\n [name]: {\n ...coagentState,\n state: updatedState,\n },\n });\n },\n [coagentStates, name],\n );\n\n useEffect(() => {\n const fetchAgentState = async () => {\n if (!threadId || threadId === lastLoadedThreadId.current) return;\n\n const result = await runtimeClient.loadAgentState({\n threadId,\n agentName: name,\n });\n\n // Runtime client handles errors automatically via handleGQLErrors\n if (result.error) {\n return; // Don't process data on error\n }\n\n const newState = result.data?.loadAgentState?.state;\n if (newState === lastLoadedState.current) return;\n\n if (result.data?.loadAgentState?.threadExists && newState && newState != \"{}\") {\n lastLoadedState.current = newState;\n lastLoadedThreadId.current = threadId;\n const fetchedState = parseJson(newState, {});\n isExternalStateManagement(options)\n ? options.setState(fetchedState)\n : setState(fetchedState);\n }\n };\n void fetchAgentState();\n }, [threadId]);\n\n // Sync internal state with external state if state management is external\n useEffect(() => {\n if (isExternalStateManagement(options)) {\n setState(options.state);\n } else if (coagentStates[name] === undefined) {\n setState(options.initialState === undefined ? {} : options.initialState);\n }\n }, [\n isExternalStateManagement(options) ? JSON.stringify(options.state) : undefined,\n // reset initialstate on reset\n coagentStates[name] === undefined,\n ]);\n\n // Sync config when runtime configuration changes\n useEffect(() => {\n const newConfig = options.config\n ? options.config\n : options.configurable\n ? { configurable: options.configurable }\n : undefined;\n\n if (newConfig === undefined) return;\n\n setCoagentStatesWithRef((prev) => {\n const existing = prev[name] ?? {\n name,\n state: isInternalStateManagementWithInitial(options) ? options.initialState : {},\n config: {},\n running: false,\n active: false,\n threadId: undefined,\n nodeName: undefined,\n runId: undefined,\n };\n\n if (JSON.stringify(existing.config) === JSON.stringify(newConfig)) {\n return prev;\n }\n\n return {\n ...prev,\n [name]: {\n ...existing,\n config: newConfig,\n },\n };\n });\n }, [JSON.stringify(options.config), JSON.stringify(options.configurable)]);\n\n const runAgentCallback = useAsyncCallback(\n async (hint?: HintFunction) => {\n await runAgent(name, context, getMessagesFromTap(), sendMessage, runChatCompletion, hint);\n },\n [name, context, sendMessage, runChatCompletion],\n );\n\n // Return the state and setState function\n return useMemo(() => {\n const coagentState = getCoagentState({ coagentStates, name, options });\n return {\n name,\n nodeName: coagentState.nodeName,\n threadId: coagentState.threadId,\n running: coagentState.running,\n state: coagentState.state,\n setState: isExternalStateManagement(options) ? options.setState : setState,\n start: () => startAgent(name, context),\n stop: () => stopAgent(name, context),\n run: runAgentCallback,\n };\n }, [name, coagentStates, options, setState, runAgentCallback]);\n}\n\nexport function startAgent(name: string, context: CopilotContextParams) {\n const { setAgentSession } = context;\n setAgentSession({\n agentName: name,\n });\n}\n\nexport function stopAgent(name: string, context: CopilotContextParams) {\n const { agentSession, setAgentSession } = context;\n if (agentSession && agentSession.agentName === name) {\n setAgentSession(null);\n context.setCoagentStates((prevAgentStates) => {\n return {\n ...prevAgentStates,\n [name]: {\n ...prevAgentStates[name],\n running: false,\n active: false,\n threadId: undefined,\n nodeName: undefined,\n runId: undefined,\n },\n };\n });\n } else {\n console.warn(`No agent session found for ${name}`);\n }\n}\n\nexport async function runAgent(\n name: string,\n context: CopilotContextParams,\n messages: GqlMessage[],\n sendMessage: (message: Message) => Promise<void>,\n runChatCompletion: () => Promise<Message[]>,\n hint?: HintFunction,\n) {\n const { agentSession, setAgentSession } = context;\n if (!agentSession || agentSession.agentName !== name) {\n setAgentSession({\n agentName: name,\n });\n }\n\n let previousState: any = null;\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i];\n if (message.isAgentStateMessage() && message.agentName === name) {\n previousState = message.state;\n }\n }\n\n let state = context.coagentStatesRef.current?.[name]?.state || {};\n\n if (hint) {\n const hintMessage = hint({ previousState, currentState: state });\n if (hintMessage) {\n await sendMessage(hintMessage);\n } else {\n await runChatCompletion();\n }\n } else {\n await runChatCompletion();\n }\n}\n\nconst isExternalStateManagement = <T>(\n options: UseCoagentOptions<T>,\n): options is WithExternalStateManagement<T> => {\n return \"state\" in options && \"setState\" in options;\n};\n\nconst isInternalStateManagementWithInitial = <T>(\n options: UseCoagentOptions<T>,\n): options is WithInternalStateManagementAndInitial<T> => {\n return \"initialState\" in options;\n};\n\nconst getCoagentState = <T>({\n coagentStates,\n name,\n options,\n}: {\n coagentStates: Record<string, CoagentState>;\n name: string;\n options: UseCoagentOptions<T>;\n}) => {\n if (coagentStates[name]) {\n return coagentStates[name];\n } else {\n return {\n name,\n state: isInternalStateManagementWithInitial<T>(options) ? options.initialState : {},\n config: options.config\n ? options.config\n : options.configurable\n ? { configurable: options.configurable }\n : {},\n running: false,\n active: false,\n threadId: undefined,\n nodeName: undefined,\n runId: undefined,\n };\n }\n};\n"],"mappings":"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","names":[]}
@@ -1,35 +1,35 @@
1
- import {
2
- CopilotMessages,
3
- MessagesTapProvider
4
- } from "./chunk-MUDXTKXE.mjs";
5
1
  import {
6
2
  CopilotErrorBoundary
7
- } from "./chunk-ZTZJIDRJ.mjs";
3
+ } from "./chunk-L3I57GMV.mjs";
8
4
  import {
9
- StatusChecker
10
- } from "./chunk-PMAFHQ7P.mjs";
5
+ ConsoleTrigger
6
+ } from "./chunk-KOGKA4V5.mjs";
7
+ import {
8
+ CopilotMessages,
9
+ MessagesTapProvider
10
+ } from "./chunk-TWYUYC4F.mjs";
11
11
  import {
12
12
  use_flat_category_store_default
13
13
  } from "./chunk-5FHSUKQL.mjs";
14
14
  import {
15
15
  use_tree_default
16
16
  } from "./chunk-RKTVJRK7.mjs";
17
+ import {
18
+ UsageBanner,
19
+ getErrorActions
20
+ } from "./chunk-6ZLPNY7X.mjs";
17
21
  import {
18
22
  useCopilotRuntimeClient
19
23
  } from "./chunk-FAUNHSQU.mjs";
20
24
  import {
21
25
  shouldShowDevConsole
22
26
  } from "./chunk-ICIK2BSB.mjs";
23
- import {
24
- ToastProvider
25
- } from "./chunk-EFL5OBKN.mjs";
26
- import {
27
- UsageBanner,
28
- getErrorActions
29
- } from "./chunk-AWFAFFO5.mjs";
30
27
  import {
31
28
  CopilotContext
32
29
  } from "./chunk-TEMLWRRT.mjs";
30
+ import {
31
+ ToastProvider
32
+ } from "./chunk-EFL5OBKN.mjs";
33
33
  import {
34
34
  __async,
35
35
  __objRest,
@@ -198,11 +198,13 @@ import { jsx, jsxs } from "react/jsx-runtime";
198
198
  function CopilotKit(_a) {
199
199
  var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
200
200
  const enabled = shouldShowDevConsole(props.showDevConsole);
201
- return /* @__PURE__ */ jsx(ToastProvider, { enabled, children: /* @__PURE__ */ jsx(CopilotErrorBoundary, { publicApiKey: props.publicApiKey, showUsageBanner: enabled, children: /* @__PURE__ */ jsx(CopilotKitInternal, __spreadProps(__spreadValues({}, props), { children })) }) });
201
+ const publicApiKey = props.publicApiKey || props.publicLicenseKey;
202
+ return /* @__PURE__ */ jsx(ToastProvider, { enabled, children: /* @__PURE__ */ jsx(CopilotErrorBoundary, { publicApiKey, showUsageBanner: enabled, children: /* @__PURE__ */ jsx(CopilotKitInternal, __spreadProps(__spreadValues({}, props), { children })) }) });
202
203
  }
203
204
  function CopilotKitInternal(cpkProps) {
204
205
  const _a = cpkProps, { children } = _a, props = __objRest(_a, ["children"]);
205
206
  validateProps(cpkProps);
207
+ const publicApiKey = props.publicLicenseKey || props.publicApiKey;
206
208
  const chatApiEndpoint = props.runtimeUrl || COPILOT_CLOUD_CHAT_URL;
207
209
  const [actions, setActions] = useState({});
208
210
  const [coAgentStateRenders, setCoAgentStateRenders] = useState({});
@@ -221,8 +223,6 @@ function CopilotKitInternal(cpkProps) {
221
223
  removeElement: removeDocument,
222
224
  allElements: allDocuments
223
225
  } = use_flat_category_store_default();
224
- const statusChecker = useMemo(() => new StatusChecker(), []);
225
- const [usageBannerStatus, setUsageBannerStatus] = useState(null);
226
226
  const setAction = useCallback((id, action) => {
227
227
  setActions((prevPoints) => {
228
228
  return __spreadProps(__spreadValues({}, prevPoints), {
@@ -306,7 +306,7 @@ ${nonDocumentStrings}`;
306
306
  const copilotApiConfig = useMemo(() => {
307
307
  var _a2, _b;
308
308
  let cloud = void 0;
309
- if (props.publicApiKey) {
309
+ if (publicApiKey) {
310
310
  cloud = {
311
311
  guardrails: {
312
312
  input: {
@@ -320,7 +320,7 @@ ${nonDocumentStrings}`;
320
320
  };
321
321
  }
322
322
  return __spreadProps(__spreadValues({
323
- publicApiKey: props.publicApiKey
323
+ publicApiKey
324
324
  }, cloud ? { cloud } : {}), {
325
325
  chatApiEndpoint,
326
326
  headers: props.headers || {},
@@ -330,7 +330,7 @@ ${nonDocumentStrings}`;
330
330
  credentials: props.credentials
331
331
  });
332
332
  }, [
333
- props.publicApiKey,
333
+ publicApiKey,
334
334
  props.headers,
335
335
  props.properties,
336
336
  props.transcribeAudioUrl,
@@ -355,7 +355,7 @@ ${nonDocumentStrings}`;
355
355
  }, [copilotApiConfig.headers, copilotApiConfig.publicApiKey, authStates]);
356
356
  const runtimeClient = useCopilotRuntimeClient({
357
357
  url: copilotApiConfig.chatApiEndpoint,
358
- publicApiKey: copilotApiConfig.publicApiKey,
358
+ publicApiKey,
359
359
  headers,
360
360
  credentials: copilotApiConfig.credentials,
361
361
  showDevConsole: shouldShowDevConsole(props.showDevConsole),
@@ -550,7 +550,10 @@ ${nonDocumentStrings}`;
550
550
  setBannerError
551
551
  },
552
552
  children: [
553
- /* @__PURE__ */ jsx(MessagesTapProvider, { children: /* @__PURE__ */ jsx(CopilotMessages, { children: memoizedChildren }) }),
553
+ /* @__PURE__ */ jsx(MessagesTapProvider, { children: /* @__PURE__ */ jsxs(CopilotMessages, { children: [
554
+ memoizedChildren,
555
+ showDevConsole && /* @__PURE__ */ jsx(ConsoleTrigger, {})
556
+ ] }) }),
554
557
  bannerError && showDevConsole && /* @__PURE__ */ jsx(
555
558
  UsageBanner,
556
559
  {
@@ -595,12 +598,15 @@ function formatFeatureName(featureName) {
595
598
  }
596
599
  function validateProps(props) {
597
600
  const cloudFeatures = Object.keys(props).filter((key) => key.endsWith("_c"));
598
- if (!props.runtimeUrl && !props.publicApiKey) {
599
- throw new ConfigurationError("Missing required prop: 'runtimeUrl' or 'publicApiKey'");
601
+ const hasApiKey = props.publicApiKey || props.publicLicenseKey;
602
+ if (!props.runtimeUrl && !hasApiKey) {
603
+ throw new ConfigurationError(
604
+ "Missing required prop: 'runtimeUrl' or 'publicApiKey' or 'publicLicenseKey'"
605
+ );
600
606
  }
601
- if (cloudFeatures.length > 0 && !props.publicApiKey) {
607
+ if (cloudFeatures.length > 0 && !hasApiKey) {
602
608
  throw new MissingPublicApiKeyError(
603
- `Missing required prop: 'publicApiKey' to use cloud features: ${cloudFeatures.map(formatFeatureName).join(", ")}`
609
+ `Missing required prop: 'publicApiKey' or 'publicLicenseKey' to use cloud features: ${cloudFeatures.map(formatFeatureName).join(", ")}`
604
610
  );
605
611
  }
606
612
  }
@@ -747,4 +753,4 @@ export {
747
753
  CopilotKitInternal,
748
754
  defaultCopilotContextCategories
749
755
  };
750
- //# sourceMappingURL=chunk-PHIMGB3K.mjs.map
756
+ //# sourceMappingURL=chunk-4ISB3H6B.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/extract.ts","../src/components/copilot-provider/copilotkit.tsx","../src/utils/suggestions.ts"],"sourcesContent":["import {\n Action,\n COPILOT_CLOUD_PUBLIC_API_KEY_HEADER,\n MappedParameterTypes,\n Parameter,\n actionParametersToJsonSchema,\n} from \"@copilotkit/shared\";\nimport {\n ActionExecutionMessage,\n Message,\n Role,\n TextMessage,\n convertGqlOutputToMessages,\n CopilotRequestType,\n ForwardedParametersInput,\n} from \"@copilotkit/runtime-client-gql\";\nimport { CopilotContextParams, CopilotMessagesContextParams } from \"../context\";\nimport { defaultCopilotContextCategories } from \"../components\";\nimport { CopilotRuntimeClient } from \"@copilotkit/runtime-client-gql\";\nimport {\n convertMessagesToGqlInput,\n filterAgentStateMessages,\n} from \"@copilotkit/runtime-client-gql\";\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 & CopilotMessagesContextParams;\n instructions: string;\n parameters: T;\n include?: IncludeOptions;\n data?: any;\n abortSignal?: AbortSignal;\n stream?: (args: StreamHandlerArgs<T>) => void;\n requestType?: CopilotRequestType;\n forwardedParameters?: ForwardedParametersInput;\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 requestType = CopilotRequestType.Task,\n forwardedParameters,\n}: ExtractOptions<T>): Promise<MappedParameterTypes<T>> {\n const { messages } = context;\n\n const action: Action<any> = {\n name: \"extract\",\n description: instructions,\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 = new TextMessage({\n content: makeSystemMessage(contextString, instructions),\n role: Role.System,\n });\n\n const instructionsMessage: Message = new TextMessage({\n content: makeInstructionsMessage(instructions),\n role: Role.User,\n });\n\n const response = context.runtimeClient.asStream(\n context.runtimeClient.generateCopilotResponse({\n data: {\n frontend: {\n actions: [\n {\n name: action.name,\n description: action.description || \"\",\n jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters || [])),\n },\n ],\n url: window.location.href,\n },\n\n messages: convertMessagesToGqlInput(\n includeMessages\n ? [systemMessage, instructionsMessage, ...filterAgentStateMessages(messages)]\n : [systemMessage, instructionsMessage],\n ),\n metadata: {\n requestType: requestType,\n },\n forwardedParameters: {\n ...(forwardedParameters ?? {}),\n toolChoice: \"function\",\n toolChoiceFunctionName: action.name,\n },\n },\n properties: context.copilotApiConfig.properties,\n signal: abortSignal,\n }),\n );\n\n const reader = response.getReader();\n\n let isInitial = true;\n\n let actionExecutionMessage: ActionExecutionMessage | undefined = undefined;\n\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) {\n break;\n }\n\n if (abortSignal?.aborted) {\n throw new Error(\"Aborted\");\n }\n\n actionExecutionMessage = convertGqlOutputToMessages(\n value.generateCopilotResponse.messages,\n ).find((msg) => msg.isActionExecutionMessage()) as ActionExecutionMessage | undefined;\n\n if (!actionExecutionMessage) {\n continue;\n }\n\n stream?.({\n status: isInitial ? \"initial\" : \"inProgress\",\n args: actionExecutionMessage.arguments as Partial<MappedParameterTypes<T>>,\n });\n\n isInitial = false;\n }\n\n if (!actionExecutionMessage) {\n throw new Error(\"extract() failed: No function call occurred\");\n }\n\n stream?.({\n status: \"complete\",\n args: actionExecutionMessage.arguments as MappedParameterTypes<T>,\n });\n\n return actionExecutionMessage.arguments as MappedParameterTypes<T>;\n}\n\n// We need to put this in a user message since some LLMs need\n// at least one user message to function\nfunction makeInstructionsMessage(instructions: string): string {\n return `\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\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 called extract 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`;\n}\n","/**\n * This component will typically wrap your entire application (or a sub-tree of your application where you want to have a copilot). It provides the copilot context to all other components and hooks.\n *\n * ## Example\n *\n * You can find more information about self-hosting CopilotKit [here](/guides/self-hosting).\n *\n * ```tsx\n * import { CopilotKit } from \"@copilotkit/react-core\";\n *\n * <CopilotKit runtimeUrl=\"<your-runtime-url>\">\n * // ... your app ...\n * </CopilotKit>\n * ```\n */\n\nimport { useCallback, useEffect, useMemo, useRef, useState, SetStateAction } from \"react\";\nimport {\n CopilotContext,\n CopilotApiConfig,\n ChatComponentsCache,\n AgentSession,\n AuthState,\n} from \"../../context/copilot-context\";\nimport useTree from \"../../hooks/use-tree\";\nimport { CopilotChatSuggestionConfiguration, DocumentPointer } from \"../../types\";\nimport { flushSync } from \"react-dom\";\nimport {\n COPILOT_CLOUD_CHAT_URL,\n CopilotCloudConfig,\n FunctionCallHandler,\n COPILOT_CLOUD_PUBLIC_API_KEY_HEADER,\n randomUUID,\n ConfigurationError,\n MissingPublicApiKeyError,\n CopilotKitError,\n} from \"@copilotkit/shared\";\nimport { FrontendAction } from \"../../types/frontend-action\";\nimport useFlatCategoryStore from \"../../hooks/use-flat-category-store\";\nimport { CopilotKitProps } from \"./copilotkit-props\";\nimport { CoAgentStateRender } from \"../../types/coagent-action\";\nimport { CoagentState } from \"../../types/coagent-state\";\nimport { CopilotMessages, MessagesTapProvider } from \"./copilot-messages\";\nimport { ToastProvider } from \"../toast/toast-provider\";\nimport { getErrorActions, UsageBanner } from \"../usage-banner\";\nimport { useCopilotRuntimeClient } from \"../../hooks/use-copilot-runtime-client\";\nimport { shouldShowDevConsole } from \"../../utils\";\nimport { CopilotErrorBoundary } from \"../error-boundary/error-boundary\";\nimport { Agent, ExtensionsInput } from \"@copilotkit/runtime-client-gql\";\nimport {\n LangGraphInterruptAction,\n LangGraphInterruptActionSetterArgs,\n} from \"../../types/interrupt-action\";\nimport { ConsoleTrigger } from \"../dev-console/console-trigger\";\n\nexport function CopilotKit({ children, ...props }: CopilotKitProps) {\n const enabled = shouldShowDevConsole(props.showDevConsole);\n\n // Use API key if provided, otherwise use the license key\n const publicApiKey = props.publicApiKey || props.publicLicenseKey;\n\n return (\n <ToastProvider enabled={enabled}>\n <CopilotErrorBoundary publicApiKey={publicApiKey} showUsageBanner={enabled}>\n <CopilotKitInternal {...props}>{children}</CopilotKitInternal>\n </CopilotErrorBoundary>\n </ToastProvider>\n );\n}\n\nexport function CopilotKitInternal(cpkProps: CopilotKitProps) {\n const { children, ...props } = cpkProps;\n\n /**\n * This will throw an error if the props are invalid.\n */\n validateProps(cpkProps);\n\n // Use license key as API key if provided, otherwise use the API key\n const publicApiKey = props.publicLicenseKey || props.publicApiKey;\n\n const chatApiEndpoint = props.runtimeUrl || COPILOT_CLOUD_CHAT_URL;\n\n const [actions, setActions] = useState<Record<string, FrontendAction<any>>>({});\n const [coAgentStateRenders, setCoAgentStateRenders] = useState<\n Record<string, CoAgentStateRender<any>>\n >({});\n\n const chatComponentsCache = useRef<ChatComponentsCache>({\n actions: {},\n coAgentStateRenders: {},\n });\n\n const { addElement, removeElement, printTree, getAllElements } = useTree();\n const [isLoading, setIsLoading] = useState(false);\n const [chatInstructions, setChatInstructions] = useState(\"\");\n const [authStates, setAuthStates] = useState<Record<string, AuthState>>({});\n const [extensions, setExtensions] = useState<ExtensionsInput>({});\n const [additionalInstructions, setAdditionalInstructions] = useState<string[]>([]);\n\n const {\n addElement: addDocument,\n removeElement: removeDocument,\n allElements: allDocuments,\n } = useFlatCategoryStore<DocumentPointer>();\n\n // Compute all the functions and properties that we need to pass\n const setAction = useCallback((id: string, action: FrontendAction<any>) => {\n setActions((prevPoints) => {\n return {\n ...prevPoints,\n [id]: action,\n };\n });\n }, []);\n\n const removeAction = useCallback((id: string) => {\n setActions((prevPoints) => {\n const newPoints = { ...prevPoints };\n delete newPoints[id];\n return newPoints;\n });\n }, []);\n\n const setCoAgentStateRender = useCallback((id: string, stateRender: CoAgentStateRender<any>) => {\n setCoAgentStateRenders((prevPoints) => {\n return {\n ...prevPoints,\n [id]: stateRender,\n };\n });\n }, []);\n\n const removeCoAgentStateRender = useCallback((id: string) => {\n setCoAgentStateRenders((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 getAllContext = useCallback(() => {\n return getAllElements();\n }, [getAllElements]);\n\n const getFunctionCallHandler = useCallback(\n (customEntryPoints?: Record<string, FrontendAction<any>>) => {\n return entryPointsToFunctionCallHandler(Object.values(customEntryPoints || actions));\n },\n [actions],\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 // get the appropriate CopilotApiConfig from the props\n const copilotApiConfig: CopilotApiConfig = useMemo(() => {\n let cloud: CopilotCloudConfig | undefined = undefined;\n if (publicApiKey) {\n cloud = {\n guardrails: {\n input: {\n restrictToTopic: {\n enabled: Boolean(props.guardrails_c),\n validTopics: props.guardrails_c?.validTopics || [],\n invalidTopics: props.guardrails_c?.invalidTopics || [],\n },\n },\n },\n };\n }\n\n return {\n publicApiKey: publicApiKey,\n ...(cloud ? { cloud } : {}),\n chatApiEndpoint: chatApiEndpoint,\n headers: props.headers || {},\n properties: props.properties || {},\n transcribeAudioUrl: props.transcribeAudioUrl,\n textToSpeechUrl: props.textToSpeechUrl,\n credentials: props.credentials,\n };\n }, [\n publicApiKey,\n props.headers,\n props.properties,\n props.transcribeAudioUrl,\n props.textToSpeechUrl,\n props.credentials,\n props.cloudRestrictToTopic,\n props.guardrails_c,\n ]);\n\n const headers = useMemo(() => {\n const authHeaders = Object.values(authStates || {}).reduce((acc, state) => {\n if (state.status === \"authenticated\" && state.authHeaders) {\n return {\n ...acc,\n ...Object.entries(state.authHeaders).reduce(\n (headers, [key, value]) => ({\n ...headers,\n [key.startsWith(\"X-Custom-\") ? key : `X-Custom-${key}`]: value,\n }),\n {},\n ),\n };\n }\n return acc;\n }, {});\n\n return {\n ...(copilotApiConfig.headers || {}),\n ...(copilotApiConfig.publicApiKey\n ? { [COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: copilotApiConfig.publicApiKey }\n : {}),\n ...authHeaders,\n };\n }, [copilotApiConfig.headers, copilotApiConfig.publicApiKey, authStates]);\n\n const runtimeClient = useCopilotRuntimeClient({\n url: copilotApiConfig.chatApiEndpoint,\n publicApiKey: publicApiKey,\n headers,\n credentials: copilotApiConfig.credentials,\n showDevConsole: shouldShowDevConsole(props.showDevConsole),\n onError: props.onError,\n });\n\n const [chatSuggestionConfiguration, setChatSuggestionConfiguration] = useState<{\n [key: string]: CopilotChatSuggestionConfiguration;\n }>({});\n\n const addChatSuggestionConfiguration = useCallback(\n (id: string, suggestion: CopilotChatSuggestionConfiguration) => {\n setChatSuggestionConfiguration((prev) => ({ ...prev, [id]: suggestion }));\n },\n [setChatSuggestionConfiguration],\n );\n\n const removeChatSuggestionConfiguration = useCallback(\n (id: string) => {\n setChatSuggestionConfiguration((prev) => {\n const { [id]: _, ...rest } = prev;\n return rest;\n });\n },\n [setChatSuggestionConfiguration],\n );\n\n const [availableAgents, setAvailableAgents] = useState<Agent[]>([]);\n const [coagentStates, setCoagentStates] = useState<Record<string, CoagentState>>({});\n const coagentStatesRef = useRef<Record<string, CoagentState>>({});\n const setCoagentStatesWithRef = useCallback(\n (\n value:\n | Record<string, CoagentState>\n | ((prev: Record<string, CoagentState>) => Record<string, CoagentState>),\n ) => {\n const newValue = typeof value === \"function\" ? value(coagentStatesRef.current) : value;\n coagentStatesRef.current = newValue;\n setCoagentStates((prev) => {\n return newValue;\n });\n },\n [],\n );\n const hasLoadedAgents = useRef(false);\n\n useEffect(() => {\n if (hasLoadedAgents.current) return;\n\n const fetchData = async () => {\n const result = await runtimeClient.availableAgents();\n if (result.data?.availableAgents) {\n setAvailableAgents(result.data.availableAgents.agents);\n }\n hasLoadedAgents.current = true;\n };\n void fetchData();\n }, []);\n\n let initialAgentSession: AgentSession | null = null;\n if (props.agent) {\n initialAgentSession = {\n agentName: props.agent,\n };\n }\n\n const [agentSession, setAgentSession] = useState<AgentSession | null>(initialAgentSession);\n\n // Update agentSession when props.agent changes\n useEffect(() => {\n if (props.agent) {\n setAgentSession({\n agentName: props.agent,\n });\n } else {\n setAgentSession(null);\n }\n }, [props.agent]);\n\n const [internalThreadId, setInternalThreadId] = useState<string>(props.threadId || randomUUID());\n const setThreadId = useCallback(\n (value: SetStateAction<string>) => {\n if (props.threadId) {\n throw new Error(\"Cannot call setThreadId() when threadId is provided via props.\");\n }\n setInternalThreadId(value);\n },\n [props.threadId],\n );\n\n // update the internal threadId if the props.threadId changes\n useEffect(() => {\n if (props.threadId !== undefined) {\n setInternalThreadId(props.threadId);\n }\n }, [props.threadId]);\n\n const [runId, setRunId] = useState<string | null>(null);\n\n const chatAbortControllerRef = useRef<AbortController | null>(null);\n\n const showDevConsole = shouldShowDevConsole(props.showDevConsole);\n\n const [langGraphInterruptAction, _setLangGraphInterruptAction] =\n useState<LangGraphInterruptAction | null>(null);\n const setLangGraphInterruptAction = useCallback((action: LangGraphInterruptActionSetterArgs) => {\n _setLangGraphInterruptAction((prev) => {\n if (prev == null) return action as LangGraphInterruptAction;\n if (action == null) return null;\n let event = prev.event;\n if (action.event) {\n // @ts-ignore\n event = { ...prev.event, ...action.event };\n }\n return { ...prev, ...action, event };\n });\n }, []);\n const removeLangGraphInterruptAction = useCallback((): void => {\n setLangGraphInterruptAction(null);\n }, []);\n\n const memoizedChildren = useMemo(() => children, [children]);\n const [bannerError, setBannerError] = useState<CopilotKitError | null>(null);\n\n const agentLock = useMemo(() => props.agent ?? null, [props.agent]);\n\n const forwardedParameters = useMemo(\n () => props.forwardedParameters ?? {},\n [props.forwardedParameters],\n );\n\n const updateExtensions = useCallback(\n (newExtensions: SetStateAction<ExtensionsInput>) => {\n setExtensions((prev: ExtensionsInput) => {\n const resolved = typeof newExtensions === \"function\" ? newExtensions(prev) : newExtensions;\n const isSameLength = Object.keys(resolved).length === Object.keys(prev).length;\n const isEqual =\n isSameLength &&\n // @ts-ignore\n Object.entries(resolved).every(([key, value]) => prev[key] === value);\n\n return isEqual ? prev : resolved;\n });\n },\n [setExtensions],\n );\n\n const updateAuthStates = useCallback(\n (newAuthStates: SetStateAction<Record<string, AuthState>>) => {\n setAuthStates((prev) => {\n const resolved = typeof newAuthStates === \"function\" ? newAuthStates(prev) : newAuthStates;\n const isSameLength = Object.keys(resolved).length === Object.keys(prev).length;\n const isEqual =\n isSameLength &&\n // @ts-ignore\n Object.entries(resolved).every(([key, value]) => prev[key] === value);\n\n return isEqual ? prev : resolved;\n });\n },\n [setAuthStates],\n );\n\n return (\n <CopilotContext.Provider\n value={{\n actions,\n chatComponentsCache,\n getFunctionCallHandler,\n setAction,\n removeAction,\n coAgentStateRenders,\n setCoAgentStateRender,\n removeCoAgentStateRender,\n getContextString,\n addContext,\n removeContext,\n getAllContext,\n getDocumentsContext,\n addDocumentContext,\n removeDocumentContext,\n copilotApiConfig: copilotApiConfig,\n isLoading,\n setIsLoading,\n chatSuggestionConfiguration,\n addChatSuggestionConfiguration,\n removeChatSuggestionConfiguration,\n chatInstructions,\n setChatInstructions,\n additionalInstructions,\n setAdditionalInstructions,\n showDevConsole,\n coagentStates,\n setCoagentStates,\n coagentStatesRef,\n setCoagentStatesWithRef,\n agentSession,\n setAgentSession,\n runtimeClient,\n forwardedParameters,\n agentLock,\n threadId: internalThreadId,\n setThreadId,\n runId,\n setRunId,\n chatAbortControllerRef,\n availableAgents,\n authConfig_c: props.authConfig_c,\n authStates_c: authStates,\n setAuthStates_c: updateAuthStates,\n extensions,\n setExtensions: updateExtensions,\n langGraphInterruptAction,\n setLangGraphInterruptAction,\n removeLangGraphInterruptAction,\n onError: props.onError,\n bannerError,\n setBannerError,\n }}\n >\n <MessagesTapProvider>\n <CopilotMessages>\n {memoizedChildren}\n {showDevConsole && <ConsoleTrigger />}\n </CopilotMessages>\n </MessagesTapProvider>\n {bannerError && showDevConsole && (\n <UsageBanner\n severity={bannerError.severity}\n message={bannerError.message}\n onClose={() => setBannerError(null)}\n actions={getErrorActions(bannerError)}\n />\n )}\n </CopilotContext.Provider>\n );\n}\n\nexport const defaultCopilotContextCategories = [\"global\"];\n\nfunction entryPointsToFunctionCallHandler(actions: FrontendAction<any>[]): FunctionCallHandler {\n return async ({ name, args }: { name: string; args: Record<string, any> }) => {\n let actionsByFunctionName: Record<string, FrontendAction<any>> = {};\n for (let action of actions) {\n actionsByFunctionName[action.name] = action;\n }\n\n const action = actionsByFunctionName[name];\n let result: any = undefined;\n if (action) {\n await new Promise<void>((resolve, reject) => {\n flushSync(async () => {\n try {\n result = await action.handler?.(args);\n resolve();\n } catch (error) {\n reject(error);\n }\n });\n });\n await new Promise((resolve) => setTimeout(resolve, 20));\n }\n return result;\n };\n}\n\nfunction formatFeatureName(featureName: string): string {\n return featureName\n .replace(/_c$/, \"\")\n .split(\"_\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(\" \");\n}\n\nfunction validateProps(props: CopilotKitProps): never | void {\n const cloudFeatures = Object.keys(props).filter((key) => key.endsWith(\"_c\"));\n\n // Check if we have either a runtimeUrl or one of the API keys\n const hasApiKey = props.publicApiKey || props.publicLicenseKey;\n\n if (!props.runtimeUrl && !hasApiKey) {\n throw new ConfigurationError(\n \"Missing required prop: 'runtimeUrl' or 'publicApiKey' or 'publicLicenseKey'\",\n );\n }\n\n if (cloudFeatures.length > 0 && !hasApiKey) {\n throw new MissingPublicApiKeyError(\n `Missing required prop: 'publicApiKey' or 'publicLicenseKey' to use cloud features: ${cloudFeatures\n .map(formatFeatureName)\n .join(\", \")}`,\n );\n }\n}\n","/**\n * Suggestions utility functions for CopilotKit\n *\n * This module handles the generation of chat suggestions with optimized error handling\n * and streaming validation to prevent infinite retry loops and console spam.\n */\n\nimport { extract } from \"./extract\";\nimport { actionParametersToJsonSchema } from \"@copilotkit/shared\";\nimport { CopilotRequestType } from \"@copilotkit/runtime-client-gql\";\nimport { CopilotContextParams, CopilotMessagesContextParams } from \"../context\";\nimport { CopilotChatSuggestionConfiguration } from \"../types\";\n\nexport interface SuggestionItem {\n title: string;\n message: string;\n partial?: boolean;\n className?: string;\n}\n\nexport const reloadSuggestions = async (\n context: CopilotContextParams & CopilotMessagesContextParams,\n chatSuggestionConfiguration: { [key: string]: CopilotChatSuggestionConfiguration },\n setCurrentSuggestions: (suggestions: SuggestionItem[]) => void,\n abortControllerRef: React.MutableRefObject<AbortController | null>,\n): Promise<void> => {\n const abortController = abortControllerRef.current;\n\n // Early abort check\n if (abortController?.signal.aborted) {\n return;\n }\n\n // Abort-aware suggestion setter with safety checks to prevent race conditions\n const setSuggestionsIfNotAborted = (suggestions: SuggestionItem[]) => {\n if (!abortController?.signal.aborted && abortControllerRef.current === abortController) {\n setCurrentSuggestions(suggestions);\n }\n };\n\n try {\n const tools = JSON.stringify(\n Object.values(context.actions).map((action) => ({\n name: action.name,\n description: action.description,\n jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters)),\n })),\n );\n\n const allSuggestions: SuggestionItem[] = [];\n let hasSuccessfulSuggestions = false;\n let hasErrors = false; // Track if any errors occurred\n let lastError: Error | null = null; // Track the last error for better error reporting\n\n // Get enabled configurations\n const enabledConfigs = Object.values(chatSuggestionConfiguration).filter(\n (config) => config.instructions && config.instructions.trim().length > 0,\n );\n\n if (enabledConfigs.length === 0) {\n return;\n }\n\n // Clear existing suggestions\n setSuggestionsIfNotAborted([]);\n\n // Generate suggestions for each configuration\n for (const config of enabledConfigs) {\n // Check if aborted before each configuration\n if (abortController?.signal.aborted) {\n setSuggestionsIfNotAborted([]);\n return;\n }\n\n try {\n const result = await extract({\n context,\n instructions:\n \"Suggest what the user could say next. Provide clear, highly relevant suggestions. Do not literally suggest function calls. \",\n data: `${config.instructions}\\n\\nAvailable tools: ${tools}\\n\\n`,\n requestType: CopilotRequestType.Task,\n parameters: [\n {\n name: \"suggestions\",\n type: \"object[]\",\n attributes: [\n {\n name: \"title\",\n description:\n \"The title of the suggestion. This is shown as a button and should be short.\",\n type: \"string\",\n },\n {\n name: \"message\",\n description:\n \"The message to send when the suggestion is clicked. This should be a clear, complete sentence and will be sent as an instruction to the AI.\",\n type: \"string\",\n },\n ],\n },\n ],\n include: {\n messages: true,\n readable: true,\n },\n abortSignal: abortController?.signal,\n stream: ({ status, args }: { status: string; args: any }) => {\n // Check abort status in stream callback\n if (abortController?.signal.aborted) {\n return;\n }\n\n const suggestions = args.suggestions || [];\n const newSuggestions: SuggestionItem[] = [];\n\n for (let i = 0; i < suggestions.length; i++) {\n // Respect max suggestions limit\n if (config.maxSuggestions !== undefined && i >= config.maxSuggestions) {\n break;\n }\n\n const suggestion = suggestions[i];\n\n // Skip completely empty or invalid objects during streaming\n if (!suggestion || typeof suggestion !== \"object\") {\n continue;\n }\n\n const { title, message } = suggestion;\n\n // During streaming, be permissive but require at least a meaningful title\n const hasValidTitle = title && typeof title === \"string\" && title.trim().length > 0;\n const hasValidMessage =\n message && typeof message === \"string\" && message.trim().length > 0;\n\n // During streaming, we need at least a title to show something useful\n if (!hasValidTitle) {\n continue;\n }\n\n // Mark as partial if this is the last suggestion and streaming isn't complete\n const partial = i === suggestions.length - 1 && status !== \"complete\";\n\n newSuggestions.push({\n title: title.trim(),\n message: hasValidMessage ? message.trim() : \"\", // Use title as fallback\n partial,\n className: config.className,\n });\n }\n\n // Update suggestions with current batch\n setSuggestionsIfNotAborted([...allSuggestions, ...newSuggestions]);\n },\n });\n\n // Process final results with strict validation\n if (result?.suggestions && Array.isArray(result.suggestions)) {\n const validSuggestions = result.suggestions\n .filter(\n (suggestion: any) =>\n suggestion &&\n typeof suggestion.title === \"string\" &&\n suggestion.title.trim().length > 0,\n )\n .map((suggestion: any) => ({\n title: suggestion.title.trim(),\n message:\n suggestion.message &&\n typeof suggestion.message === \"string\" &&\n suggestion.message.trim()\n ? suggestion.message.trim()\n : suggestion.title.trim(),\n }));\n\n if (validSuggestions.length > 0) {\n allSuggestions.push(...validSuggestions);\n hasSuccessfulSuggestions = true;\n }\n }\n } catch (error) {\n // Simple error handling - just continue with next config, don't log here\n hasErrors = true;\n lastError = error instanceof Error ? error : new Error(String(error));\n }\n }\n\n // Display any successful suggestions we got\n if (hasSuccessfulSuggestions && allSuggestions.length > 0) {\n // Remove duplicates based on message content\n const uniqueSuggestions = allSuggestions.filter(\n (suggestion, index, self) =>\n index === self.findIndex((s) => s.message === suggestion.message),\n );\n\n setSuggestionsIfNotAborted(uniqueSuggestions);\n } else if (hasErrors) {\n // If we had errors but no successful suggestions, throw an error with details\n const errorMessage = lastError\n ? lastError.message\n : \"Failed to generate suggestions due to API errors\";\n throw new Error(errorMessage);\n }\n } catch (error) {\n // Top-level error handler - re-throw to allow caller to handle\n throw error;\n }\n};\n"],"mappings":"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","names":["actionParametersToJsonSchema","CopilotRequestType","_a","headers","action","CopilotRequestType","actionParametersToJsonSchema"]}
@@ -183,8 +183,12 @@ var getErrorActions = (error) => {
183
183
  case CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR:
184
184
  return {
185
185
  primary: {
186
- label: "Get Free API Key",
187
- onClick: () => window.open("https://cloud.copilotkit.ai", "_blank", "noopener,noreferrer")
186
+ label: "Show me how",
187
+ onClick: () => window.open(
188
+ "https://docs.copilotkit.ai/premium#how-do-i-get-access-to-premium-features",
189
+ "_blank",
190
+ "noopener,noreferrer"
191
+ )
188
192
  }
189
193
  };
190
194
  case CopilotKitErrorCode.UPGRADE_REQUIRED_ERROR:
@@ -218,4 +222,4 @@ export {
218
222
  getErrorActions,
219
223
  renderCopilotKitUsage
220
224
  };
221
- //# sourceMappingURL=chunk-AWFAFFO5.mjs.map
225
+ //# sourceMappingURL=chunk-6ZLPNY7X.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/usage-banner.tsx"],"sourcesContent":["import {\n Severity,\n CopilotKitError,\n ErrorVisibility,\n CopilotKitErrorCode,\n} from \"@copilotkit/shared\";\nimport React from \"react\";\n\ninterface UsageBannerProps {\n severity?: Severity;\n message?: string | React.ReactNode;\n onClose?: () => void;\n actions?: {\n primary?: {\n label: string;\n onClick: () => void;\n };\n secondary?: {\n label: string;\n onClick: () => void;\n };\n };\n}\n\nexport function UsageBanner({\n severity = Severity.CRITICAL,\n message = \"\",\n onClose,\n actions,\n}: UsageBannerProps) {\n if (!message || !severity) {\n return null;\n }\n\n const themes = {\n [Severity.INFO]: {\n bg: \"#f8fafc\",\n border: \"#e2e8f0\",\n text: \"#475569\",\n accent: \"#3b82f6\",\n },\n [Severity.WARNING]: {\n bg: \"#fffbeb\",\n border: \"#fbbf24\",\n text: \"#92400e\",\n accent: \"#f59e0b\",\n },\n [Severity.CRITICAL]: {\n bg: \"#fef2f2\",\n border: \"#fecaca\",\n text: \"#dc2626\",\n accent: \"#ef4444\",\n },\n };\n\n const theme = themes[severity];\n\n return (\n <>\n <style>\n {`\n @keyframes slideUp {\n from { opacity: 0; transform: translateX(-50%) translateY(8px); }\n to { opacity: 1; transform: translateX(-50%) translateY(0); }\n }\n \n .usage-banner {\n position: fixed;\n bottom: 24px;\n left: 50%;\n transform: translateX(-50%);\n width: min(600px, calc(100vw - 32px));\n z-index: 10000;\n animation: slideUp 0.2s cubic-bezier(0.16, 1, 0.3, 1);\n }\n \n .banner-content {\n background: linear-gradient(135deg, ${theme.bg} 0%, ${theme.bg}f5 100%);\n border: 1px solid ${theme.border};\n border-radius: 12px;\n padding: 18px 20px;\n box-shadow: \n 0 4px 24px rgba(0, 0, 0, 0.08),\n 0 2px 8px rgba(0, 0, 0, 0.04),\n inset 0 1px 0 rgba(255, 255, 255, 0.7);\n display: flex;\n align-items: center;\n gap: 16px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;\n backdrop-filter: blur(12px);\n position: relative;\n overflow: hidden;\n }\n \n .banner-content::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 1px;\n background: linear-gradient(90deg, transparent, ${theme.accent}40, transparent);\n }\n \n .banner-message {\n color: ${theme.text};\n font-size: 14px;\n line-height: 1.5;\n font-weight: 500;\n flex: 1;\n letter-spacing: -0.01em;\n }\n \n .close-btn {\n background: rgba(0, 0, 0, 0.05);\n border: none;\n color: ${theme.text};\n cursor: pointer;\n padding: 0;\n border-radius: 6px;\n opacity: 0.6;\n transition: all 0.15s cubic-bezier(0.16, 1, 0.3, 1);\n font-size: 14px;\n line-height: 1;\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n \n .close-btn:hover {\n opacity: 1;\n background: rgba(0, 0, 0, 0.08);\n transform: scale(1.05);\n }\n \n .btn-primary {\n background: linear-gradient(135deg, ${theme.accent} 0%, ${theme.accent}e6 100%);\n color: white;\n border: none;\n border-radius: 8px;\n padding: 10px 18px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.15s cubic-bezier(0.16, 1, 0.3, 1);\n font-family: inherit;\n flex-shrink: 0;\n box-shadow: \n 0 2px 8px ${theme.accent}30,\n inset 0 1px 0 rgba(255, 255, 255, 0.2);\n letter-spacing: -0.01em;\n }\n \n .btn-primary:hover {\n transform: translateY(-1px) scale(1.02);\n box-shadow: \n 0 4px 12px ${theme.accent}40,\n inset 0 1px 0 rgba(255, 255, 255, 0.25);\n }\n \n .btn-primary:active {\n transform: translateY(0) scale(0.98);\n transition: all 0.08s cubic-bezier(0.16, 1, 0.3, 1);\n }\n \n @media (max-width: 640px) {\n .usage-banner {\n width: calc(100vw - 24px);\n }\n \n .banner-content {\n padding: 16px;\n gap: 12px;\n }\n \n .banner-message {\n font-size: 13px;\n line-height: 1.45;\n }\n \n .btn-primary {\n padding: 8px 14px;\n font-size: 12px;\n }\n \n .close-btn {\n width: 22px;\n height: 22px;\n font-size: 12px;\n }\n }\n `}\n </style>\n\n <div className=\"usage-banner\">\n <div className=\"banner-content\">\n <div className=\"banner-message\">{message}</div>\n {actions?.primary && (\n <button className=\"btn-primary\" onClick={actions.primary.onClick}>\n {actions.primary.label}\n </button>\n )}\n {onClose && (\n <button className=\"close-btn\" onClick={onClose} title=\"Close\">\n ×\n </button>\n )}\n </div>\n </div>\n </>\n );\n}\n\n// Get action button based on error type\nexport const getErrorActions = (error: CopilotKitError) => {\n switch (error.code) {\n case CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR:\n return {\n primary: {\n label: \"Show me how\",\n onClick: () =>\n window.open(\n \"https://docs.copilotkit.ai/premium#how-do-i-get-access-to-premium-features\",\n \"_blank\",\n \"noopener,noreferrer\",\n ),\n },\n };\n case CopilotKitErrorCode.UPGRADE_REQUIRED_ERROR:\n return {\n primary: {\n label: \"Upgrade\",\n onClick: () =>\n window.open(\"https://cloud.copilotkit.ai\", \"_blank\", \"noopener,noreferrer\"),\n },\n };\n default:\n return undefined;\n }\n};\n\nexport function renderCopilotKitUsage(error: CopilotKitError, onClose?: () => void) {\n // Route based on error visibility level\n if (error.visibility !== ErrorVisibility.BANNER) {\n return null;\n }\n\n return (\n <UsageBanner\n severity={error.severity || Severity.CRITICAL}\n message={error.message}\n onClose={onClose}\n actions={getErrorActions(error)}\n />\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,9 +1,9 @@
1
- import {
2
- useToast
3
- } from "./chunk-EFL5OBKN.mjs";
4
1
  import {
5
2
  CopilotContext
6
3
  } from "./chunk-TEMLWRRT.mjs";
4
+ import {
5
+ useToast
6
+ } from "./chunk-EFL5OBKN.mjs";
7
7
 
8
8
  // src/hooks/use-coagent-state-render.ts
9
9
  import { useRef, useContext, useEffect } from "react";
@@ -85,4 +85,4 @@ function useCoAgentStateRender(action, dependencies) {
85
85
  export {
86
86
  useCoAgentStateRender
87
87
  };
88
- //# sourceMappingURL=chunk-GEKWHETN.mjs.map
88
+ //# sourceMappingURL=chunk-DLEXVOQE.mjs.map
@@ -1,9 +1,9 @@
1
+ import {
2
+ defaultCopilotContextCategories
3
+ } from "./chunk-4ISB3H6B.mjs";
1
4
  import {
2
5
  processActionsForRuntimeRequest
3
6
  } from "./chunk-4CEQJ2X6.mjs";
4
- import {
5
- defaultCopilotContextCategories
6
- } from "./chunk-PHIMGB3K.mjs";
7
7
  import {
8
8
  __async,
9
9
  __spreadValues
@@ -117,4 +117,4 @@ ${instructions}
117
117
  export {
118
118
  CopilotTask
119
119
  };
120
- //# sourceMappingURL=chunk-VH45SC6Z.mjs.map
120
+ //# sourceMappingURL=chunk-F5UYV4IS.mjs.map