@copilotkit/react-core 1.9.2-next.2 → 1.9.2-next.21
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.
- package/CHANGELOG.md +162 -0
- package/dist/{chunk-UHQMV2CE.mjs → chunk-36MGCCPZ.mjs} +2 -2
- package/dist/{chunk-CCESTGAM.mjs → chunk-3OQM3NEK.mjs} +2 -2
- package/dist/{chunk-OUSWPVDT.mjs → chunk-4URMLOBR.mjs} +4 -4
- package/dist/chunk-57K2ZJ5F.mjs +348 -0
- package/dist/chunk-57K2ZJ5F.mjs.map +1 -0
- package/dist/{chunk-LZDDYZEY.mjs → chunk-5BSUSFHM.mjs} +2 -2
- package/dist/{chunk-C6F6EQNA.mjs → chunk-BVK7PLK6.mjs} +2 -2
- package/dist/{chunk-CMKIDDQL.mjs → chunk-DDIBJUWK.mjs} +11 -8
- package/dist/{chunk-CMKIDDQL.mjs.map → chunk-DDIBJUWK.mjs.map} +1 -1
- package/dist/{chunk-NNSXCFQO.mjs → chunk-DGON3GZX.mjs} +42 -8
- package/dist/chunk-DGON3GZX.mjs.map +1 -0
- package/dist/{chunk-6KGEF242.mjs → chunk-DKZTPL66.mjs} +3 -2
- package/dist/chunk-DKZTPL66.mjs.map +1 -0
- package/dist/{chunk-LDACFA2B.mjs → chunk-FN3UA2ZE.mjs} +3 -3
- package/dist/{chunk-RUY6MLHA.mjs → chunk-JWAXDYOW.mjs} +36 -6
- package/dist/chunk-JWAXDYOW.mjs.map +1 -0
- package/dist/{chunk-2FW7HH6W.mjs → chunk-KIXKBJUV.mjs} +3 -3
- package/dist/{chunk-MGIXEJWG.mjs → chunk-MTAJI7HV.mjs} +181 -68
- package/dist/chunk-MTAJI7HV.mjs.map +1 -0
- package/dist/{chunk-L6QAOAE4.mjs → chunk-N2M65NJ2.mjs} +69 -25
- package/dist/chunk-N2M65NJ2.mjs.map +1 -0
- package/dist/{chunk-T42PN5VN.mjs → chunk-NJA5ZLAZ.mjs} +29 -10
- package/dist/chunk-NJA5ZLAZ.mjs.map +1 -0
- package/dist/{chunk-4I7PLQF7.mjs → chunk-QKEH3O4S.mjs} +5 -5
- package/dist/{chunk-FRZZPPIV.mjs → chunk-RAQK4M64.mjs} +2 -2
- package/dist/{chunk-QQZLIEXK.mjs → chunk-SJJNFYGQ.mjs} +3 -3
- package/dist/{chunk-Q5D5XQFA.mjs → chunk-VDADWRS3.mjs} +2 -2
- package/dist/chunk-YAF2LATQ.mjs +310 -0
- package/dist/chunk-YAF2LATQ.mjs.map +1 -0
- package/dist/components/copilot-provider/copilot-messages.js +40 -5
- package/dist/components/copilot-provider/copilot-messages.js.map +1 -1
- package/dist/components/copilot-provider/copilot-messages.mjs +3 -3
- package/dist/components/copilot-provider/copilotkit-props.d.ts +27 -3
- package/dist/components/copilot-provider/copilotkit-props.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.d.ts +1 -1
- package/dist/components/copilot-provider/copilotkit.js +385 -254
- package/dist/components/copilot-provider/copilotkit.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.mjs +10 -10
- package/dist/components/copilot-provider/index.d.ts +1 -1
- package/dist/components/copilot-provider/index.js +385 -254
- package/dist/components/copilot-provider/index.js.map +1 -1
- package/dist/components/copilot-provider/index.mjs +10 -10
- package/dist/components/error-boundary/error-boundary.js +135 -146
- package/dist/components/error-boundary/error-boundary.js.map +1 -1
- package/dist/components/error-boundary/error-boundary.mjs +4 -4
- package/dist/components/error-boundary/error-utils.js.map +1 -1
- package/dist/components/error-boundary/error-utils.mjs +2 -2
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +385 -254
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +10 -10
- package/dist/components/toast/toast-provider.js +118 -85
- package/dist/components/toast/toast-provider.js.map +1 -1
- package/dist/components/toast/toast-provider.mjs +1 -1
- package/dist/components/usage-banner.js +135 -146
- package/dist/components/usage-banner.js.map +1 -1
- package/dist/components/usage-banner.mjs +1 -1
- package/dist/context/copilot-context.d.ts +1 -1
- package/dist/context/copilot-context.js +2 -1
- package/dist/context/copilot-context.js.map +1 -1
- package/dist/context/copilot-context.mjs +1 -1
- package/dist/context/index.d.ts +1 -1
- package/dist/context/index.js +2 -1
- package/dist/context/index.js.map +1 -1
- package/dist/context/index.mjs +1 -1
- package/dist/{copilot-context-f9b2b4c3.d.ts → copilot-context-3ab4fdf5.d.ts} +6 -2
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.js +232 -71
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +32 -32
- package/dist/hooks/use-chat.d.ts +1 -1
- package/dist/hooks/use-chat.js +295 -156
- package/dist/hooks/use-chat.js.map +1 -1
- package/dist/hooks/use-chat.mjs +6 -6
- package/dist/hooks/use-coagent-state-render.js +2 -1
- package/dist/hooks/use-coagent-state-render.js.map +1 -1
- package/dist/hooks/use-coagent-state-render.mjs +3 -3
- package/dist/hooks/use-coagent.d.ts +1 -1
- package/dist/hooks/use-coagent.js +207 -65
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +14 -14
- package/dist/hooks/use-copilot-action.js +27 -7
- package/dist/hooks/use-copilot-action.js.map +1 -1
- package/dist/hooks/use-copilot-action.mjs +4 -4
- package/dist/hooks/use-copilot-additional-instructions.js +2 -1
- package/dist/hooks/use-copilot-additional-instructions.js.map +1 -1
- package/dist/hooks/use-copilot-additional-instructions.mjs +2 -2
- package/dist/hooks/use-copilot-authenticated-action.js +27 -7
- package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
- package/dist/hooks/use-copilot-authenticated-action.mjs +5 -5
- package/dist/hooks/use-copilot-chat.d.ts +1 -1
- package/dist/hooks/use-copilot-chat.js +204 -65
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +13 -13
- package/dist/hooks/use-copilot-readable.js +2 -1
- package/dist/hooks/use-copilot-readable.js.map +1 -1
- package/dist/hooks/use-copilot-readable.mjs +2 -2
- package/dist/hooks/use-copilot-runtime-client.d.ts +2 -0
- package/dist/hooks/use-copilot-runtime-client.js +52 -2
- package/dist/hooks/use-copilot-runtime-client.js.map +1 -1
- package/dist/hooks/use-copilot-runtime-client.mjs +2 -2
- package/dist/hooks/use-langgraph-interrupt-render.js +2 -1
- package/dist/hooks/use-langgraph-interrupt-render.js.map +1 -1
- package/dist/hooks/use-langgraph-interrupt-render.mjs +2 -2
- package/dist/hooks/use-langgraph-interrupt.d.ts +1 -1
- package/dist/hooks/use-langgraph-interrupt.js +204 -65
- package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
- package/dist/hooks/use-langgraph-interrupt.mjs +14 -14
- package/dist/hooks/use-make-copilot-document-readable.js +2 -1
- package/dist/hooks/use-make-copilot-document-readable.js.map +1 -1
- package/dist/hooks/use-make-copilot-document-readable.mjs +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +582 -321
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +33 -33
- package/dist/lib/copilot-task.d.ts +1 -1
- package/dist/lib/copilot-task.js.map +1 -1
- package/dist/lib/copilot-task.mjs +11 -11
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +11 -11
- package/dist/types/interrupt-action.d.ts +1 -1
- package/dist/utils/extract.d.ts +1 -1
- package/dist/utils/extract.js.map +1 -1
- package/dist/utils/extract.mjs +10 -10
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +10 -10
- package/jest.config.js +7 -3
- package/package.json +4 -3
- package/src/components/copilot-provider/__tests__/copilotkit-error.test.tsx +75 -0
- package/src/components/copilot-provider/copilot-messages.tsx +47 -6
- package/src/components/copilot-provider/copilotkit-props.tsx +27 -1
- package/src/components/copilot-provider/copilotkit.tsx +64 -18
- package/src/components/toast/toast-provider.tsx +49 -24
- package/src/components/usage-banner.tsx +144 -147
- package/src/context/copilot-context.tsx +8 -2
- package/src/hooks/use-chat.ts +247 -61
- package/src/hooks/use-coagent.ts +5 -0
- package/src/hooks/use-copilot-action.ts +51 -9
- package/src/hooks/use-copilot-runtime-client.ts +41 -40
- package/tsconfig.json +4 -8
- package/tsup.config.ts +6 -6
- package/dist/chunk-6KGEF242.mjs.map +0 -1
- package/dist/chunk-HD2GE3DK.mjs +0 -359
- package/dist/chunk-HD2GE3DK.mjs.map +0 -1
- package/dist/chunk-L6QAOAE4.mjs.map +0 -1
- package/dist/chunk-MGIXEJWG.mjs.map +0 -1
- package/dist/chunk-NNSXCFQO.mjs.map +0 -1
- package/dist/chunk-RUY6MLHA.mjs.map +0 -1
- package/dist/chunk-T42PN5VN.mjs.map +0 -1
- package/dist/chunk-VRXANACV.mjs +0 -277
- package/dist/chunk-VRXANACV.mjs.map +0 -1
- package/dist/utils/utils.test.d.ts +0 -2
- package/dist/utils/utils.test.js +0 -9
- package/dist/utils/utils.test.js.map +0 -1
- package/dist/utils/utils.test.mjs +0 -7
- package/dist/utils/utils.test.mjs.map +0 -1
- /package/dist/{chunk-UHQMV2CE.mjs.map → chunk-36MGCCPZ.mjs.map} +0 -0
- /package/dist/{chunk-CCESTGAM.mjs.map → chunk-3OQM3NEK.mjs.map} +0 -0
- /package/dist/{chunk-OUSWPVDT.mjs.map → chunk-4URMLOBR.mjs.map} +0 -0
- /package/dist/{chunk-LZDDYZEY.mjs.map → chunk-5BSUSFHM.mjs.map} +0 -0
- /package/dist/{chunk-C6F6EQNA.mjs.map → chunk-BVK7PLK6.mjs.map} +0 -0
- /package/dist/{chunk-LDACFA2B.mjs.map → chunk-FN3UA2ZE.mjs.map} +0 -0
- /package/dist/{chunk-2FW7HH6W.mjs.map → chunk-KIXKBJUV.mjs.map} +0 -0
- /package/dist/{chunk-4I7PLQF7.mjs.map → chunk-QKEH3O4S.mjs.map} +0 -0
- /package/dist/{chunk-FRZZPPIV.mjs.map → chunk-RAQK4M64.mjs.map} +0 -0
- /package/dist/{chunk-QQZLIEXK.mjs.map → chunk-SJJNFYGQ.mjs.map} +0 -0
- /package/dist/{chunk-Q5D5XQFA.mjs.map → chunk-VDADWRS3.mjs.map} +0 -0
|
@@ -12,21 +12,53 @@ import {
|
|
|
12
12
|
CopilotKitAgentDiscoveryError,
|
|
13
13
|
CopilotKitError,
|
|
14
14
|
CopilotKitErrorCode,
|
|
15
|
-
|
|
15
|
+
CopilotErrorHandler,
|
|
16
|
+
CopilotErrorEvent,
|
|
16
17
|
} from "@copilotkit/shared";
|
|
17
18
|
import { shouldShowDevConsole } from "../utils/dev-console";
|
|
18
19
|
|
|
19
20
|
export interface CopilotRuntimeClientHookOptions extends CopilotRuntimeClientOptions {
|
|
20
21
|
showDevConsole?: boolean;
|
|
22
|
+
onError?: CopilotErrorHandler;
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
export const useCopilotRuntimeClient = (options: CopilotRuntimeClientHookOptions) => {
|
|
24
26
|
const { setBannerError } = useToast();
|
|
25
|
-
const { showDevConsole, ...runtimeOptions } = options;
|
|
27
|
+
const { showDevConsole, onError, ...runtimeOptions } = options;
|
|
26
28
|
|
|
27
29
|
// Deduplication state for structured errors
|
|
28
30
|
const lastStructuredErrorRef = useRef<{ message: string; timestamp: number } | null>(null);
|
|
29
31
|
|
|
32
|
+
// Helper function to trace UI errors
|
|
33
|
+
const traceUIError = async (error: CopilotKitError, originalError?: any) => {
|
|
34
|
+
// Just check if onError and publicApiKey are defined
|
|
35
|
+
if (!onError || !runtimeOptions.publicApiKey) return;
|
|
36
|
+
|
|
37
|
+
try {
|
|
38
|
+
const errorEvent: CopilotErrorEvent = {
|
|
39
|
+
type: "error",
|
|
40
|
+
timestamp: Date.now(),
|
|
41
|
+
context: {
|
|
42
|
+
source: "ui",
|
|
43
|
+
request: {
|
|
44
|
+
operation: "runtimeClient",
|
|
45
|
+
url: runtimeOptions.url,
|
|
46
|
+
startTime: Date.now(),
|
|
47
|
+
},
|
|
48
|
+
technical: {
|
|
49
|
+
environment: "browser",
|
|
50
|
+
userAgent: typeof navigator !== "undefined" ? navigator.userAgent : undefined,
|
|
51
|
+
stackTrace: originalError instanceof Error ? originalError.stack : undefined,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
error,
|
|
55
|
+
};
|
|
56
|
+
await onError(errorEvent);
|
|
57
|
+
} catch (error) {
|
|
58
|
+
console.error("Error in onError handler:", error);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
30
62
|
const runtimeClient = useMemo(() => {
|
|
31
63
|
return new CopilotRuntimeClient({
|
|
32
64
|
...runtimeOptions,
|
|
@@ -46,7 +78,6 @@ export const useCopilotRuntimeClient = (options: CopilotRuntimeClientHookOptions
|
|
|
46
78
|
return;
|
|
47
79
|
}
|
|
48
80
|
|
|
49
|
-
// Respect showDevConsole setting for ALL errors
|
|
50
81
|
if (!isDev) {
|
|
51
82
|
console.error("CopilotKit Error (hidden in production):", gqlError.message);
|
|
52
83
|
return;
|
|
@@ -68,6 +99,8 @@ export const useCopilotRuntimeClient = (options: CopilotRuntimeClientHookOptions
|
|
|
68
99
|
const ckError = createStructuredError(gqlError);
|
|
69
100
|
if (ckError) {
|
|
70
101
|
setBannerError(ckError);
|
|
102
|
+
// Trace the error
|
|
103
|
+
traceUIError(ckError, gqlError);
|
|
71
104
|
} else {
|
|
72
105
|
// Fallback for unstructured errors
|
|
73
106
|
const fallbackError = new CopilotKitError({
|
|
@@ -75,6 +108,8 @@ export const useCopilotRuntimeClient = (options: CopilotRuntimeClientHookOptions
|
|
|
75
108
|
code: CopilotKitErrorCode.UNKNOWN,
|
|
76
109
|
});
|
|
77
110
|
setBannerError(fallbackError);
|
|
111
|
+
// Trace the fallback error
|
|
112
|
+
traceUIError(fallbackError, gqlError);
|
|
78
113
|
}
|
|
79
114
|
};
|
|
80
115
|
|
|
@@ -91,6 +126,8 @@ export const useCopilotRuntimeClient = (options: CopilotRuntimeClientHookOptions
|
|
|
91
126
|
code: CopilotKitErrorCode.UNKNOWN,
|
|
92
127
|
});
|
|
93
128
|
setBannerError(fallbackError);
|
|
129
|
+
// Trace the non-GraphQL error
|
|
130
|
+
traceUIError(fallbackError, error);
|
|
94
131
|
}
|
|
95
132
|
}
|
|
96
133
|
},
|
|
@@ -104,47 +141,11 @@ export const useCopilotRuntimeClient = (options: CopilotRuntimeClientHookOptions
|
|
|
104
141
|
setBannerError(warningError);
|
|
105
142
|
},
|
|
106
143
|
});
|
|
107
|
-
}, [runtimeOptions, setBannerError, showDevConsole]);
|
|
144
|
+
}, [runtimeOptions, setBannerError, showDevConsole, onError]);
|
|
108
145
|
|
|
109
146
|
return runtimeClient;
|
|
110
147
|
};
|
|
111
148
|
|
|
112
|
-
// Helper to determine if error should show as banner based on structured error system
|
|
113
|
-
function shouldShowAsBanner(gqlError: GraphQLError): boolean {
|
|
114
|
-
const extensions = gqlError.extensions;
|
|
115
|
-
if (!extensions) return false;
|
|
116
|
-
|
|
117
|
-
// Primary: Check error code and use structured config
|
|
118
|
-
const code = extensions.code as CopilotKitErrorCode;
|
|
119
|
-
if (code && ERROR_CONFIG[code]?.visibility === ErrorVisibility.BANNER) {
|
|
120
|
-
return true;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Fallback: Check for API key errors which should always be banners
|
|
124
|
-
const errorMessage = gqlError.message.toLowerCase();
|
|
125
|
-
if (
|
|
126
|
-
errorMessage.includes("api key") ||
|
|
127
|
-
errorMessage.includes("401") ||
|
|
128
|
-
errorMessage.includes("unauthorized") ||
|
|
129
|
-
errorMessage.includes("authentication") ||
|
|
130
|
-
errorMessage.includes("incorrect api key")
|
|
131
|
-
) {
|
|
132
|
-
return true;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
// Legacy: Check by stack trace for discovery errors (for backward compatibility)
|
|
136
|
-
const originalError = extensions.originalError as any;
|
|
137
|
-
if (originalError?.stack) {
|
|
138
|
-
return (
|
|
139
|
-
originalError.stack.includes("CopilotApiDiscoveryError") ||
|
|
140
|
-
originalError.stack.includes("CopilotKitRemoteEndpointDiscoveryError") ||
|
|
141
|
-
originalError.stack.includes("CopilotKitAgentDiscoveryError")
|
|
142
|
-
);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
return false;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
149
|
// Create appropriate structured error from GraphQL error
|
|
149
150
|
function createStructuredError(gqlError: GraphQLError): CopilotKitError | null {
|
|
150
151
|
const extensions = gqlError.extensions;
|
package/tsconfig.json
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"extends": "../../utilities/tsconfig/react-library.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"types": ["jest"]
|
|
5
|
+
},
|
|
3
6
|
"include": ["."],
|
|
4
|
-
"exclude": [
|
|
5
|
-
"dist",
|
|
6
|
-
"build",
|
|
7
|
-
"node_modules",
|
|
8
|
-
"**/*.test.ts",
|
|
9
|
-
"**/*.test.tsx",
|
|
10
|
-
"**/__tests__/*"
|
|
11
|
-
]
|
|
7
|
+
"exclude": ["dist", "build", "node_modules"]
|
|
12
8
|
}
|
package/tsup.config.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { defineConfig, Options } from "tsup";
|
|
2
2
|
|
|
3
3
|
export default defineConfig((options: Options) => ({
|
|
4
|
-
entry: [
|
|
4
|
+
entry: [
|
|
5
|
+
"src/**/*.{ts,tsx}",
|
|
6
|
+
"!src/**/*.test.{ts,tsx}",
|
|
7
|
+
"!src/**/__tests__/**/*",
|
|
8
|
+
"!src/**/*.spec.{ts,tsx}",
|
|
9
|
+
],
|
|
5
10
|
format: ["esm", "cjs"],
|
|
6
11
|
dts: true,
|
|
7
12
|
minify: false,
|
|
8
13
|
external: ["react"],
|
|
9
14
|
sourcemap: true,
|
|
10
|
-
exclude: [
|
|
11
|
-
"**/*.test.ts", // Exclude TypeScript test files
|
|
12
|
-
"**/*.test.tsx", // Exclude TypeScript React test files
|
|
13
|
-
"**/__tests__/*", // Exclude any files inside a __tests__ directory
|
|
14
|
-
],
|
|
15
15
|
...options,
|
|
16
16
|
}));
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/context/copilot-context.tsx"],"sourcesContent":["import { CopilotCloudConfig, FunctionCallHandler } from \"@copilotkit/shared\";\nimport {\n ActionRenderProps,\n CatchAllActionRenderProps,\n FrontendAction,\n} from \"../types/frontend-action\";\nimport React from \"react\";\nimport { TreeNodeId, Tree } from \"../hooks/use-tree\";\nimport { DocumentPointer } from \"../types\";\nimport { CopilotChatSuggestionConfiguration } from \"../types/chat-suggestion-configuration\";\nimport { CoAgentStateRender, CoAgentStateRenderProps } from \"../types/coagent-action\";\nimport { CoagentState } from \"../types/coagent-state\";\nimport {\n CopilotRuntimeClient,\n ExtensionsInput,\n ForwardedParametersInput,\n} from \"@copilotkit/runtime-client-gql\";\nimport { Agent } from \"@copilotkit/runtime-client-gql\";\nimport {\n LangGraphInterruptAction,\n LangGraphInterruptActionSetter,\n} from \"../types/interrupt-action\";\n\n/**\n * Interface for the configuration of the Copilot API.\n */\nexport interface CopilotApiConfig {\n /**\n * The public API key for Copilot Cloud.\n */\n publicApiKey?: string;\n\n /**\n * The configuration for Copilot Cloud.\n */\n cloud?: CopilotCloudConfig;\n\n /**\n * The endpoint for the chat API.\n */\n chatApiEndpoint: string;\n\n /**\n * The endpoint for the Copilot transcribe audio service.\n */\n transcribeAudioUrl?: string;\n\n /**\n * The endpoint for the Copilot text to speech service.\n */\n textToSpeechUrl?: string;\n\n /**\n * additional headers to be sent with the request\n * @default {}\n * @example\n * ```\n * {\n * 'Authorization': 'Bearer your_token_here'\n * }\n * ```\n */\n headers: Record<string, string>;\n\n /**\n * Custom properties to be sent with the request\n * @default {}\n * @example\n * ```\n * {\n * 'user_id': 'user_id'\n * }\n * ```\n */\n properties?: Record<string, any>;\n\n /**\n * Indicates whether the user agent should send or receive cookies from the other domain\n * in the case of cross-origin requests.\n */\n credentials?: RequestCredentials;\n\n /**\n * Optional configuration for connecting to Model Context Protocol (MCP) servers.\n * This is typically derived from the CopilotKitProps and used internally.\n * @experimental\n */\n mcpServers?: Array<{ endpoint: string; apiKey?: string }>;\n}\n\nexport type InChatRenderFunction<TProps = ActionRenderProps<any> | CatchAllActionRenderProps<any>> =\n (props: TProps) => string | JSX.Element;\nexport type CoagentInChatRenderFunction = (\n props: CoAgentStateRenderProps<any>,\n) => string | JSX.Element | undefined | null;\n\nexport interface ChatComponentsCache {\n actions: Record<string, InChatRenderFunction | string>;\n coAgentStateRenders: Record<string, CoagentInChatRenderFunction | string>;\n}\n\nexport interface AgentSession {\n agentName: string;\n threadId?: string;\n nodeName?: string;\n}\n\nexport interface AuthState {\n status: \"authenticated\" | \"unauthenticated\";\n authHeaders: Record<string, string>;\n userId?: string;\n metadata?: Record<string, any>;\n}\n\nexport type ActionName = string;\nexport type ContextTree = Tree;\n\nexport interface CopilotContextParams {\n // function-calling\n actions: Record<string, FrontendAction<any>>;\n setAction: (id: string, action: FrontendAction<any>) => void;\n removeAction: (id: string) => void;\n\n // coagent actions\n coAgentStateRenders: Record<string, CoAgentStateRender<any>>;\n setCoAgentStateRender: (id: string, stateRender: CoAgentStateRender<any>) => void;\n removeCoAgentStateRender: (id: string) => void;\n\n chatComponentsCache: React.RefObject<ChatComponentsCache>;\n\n getFunctionCallHandler: (\n customEntryPoints?: Record<string, FrontendAction<any>>,\n ) => FunctionCallHandler;\n\n // text context\n addContext: (context: string, parentId?: string, categories?: string[]) => TreeNodeId;\n removeContext: (id: TreeNodeId) => void;\n getAllContext: () => Tree;\n getContextString: (documents: DocumentPointer[], categories: string[]) => string;\n\n // document context\n addDocumentContext: (documentPointer: DocumentPointer, categories?: string[]) => TreeNodeId;\n removeDocumentContext: (documentId: string) => void;\n getDocumentsContext: (categories: string[]) => DocumentPointer[];\n\n isLoading: boolean;\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\n\n chatSuggestionConfiguration: { [key: string]: CopilotChatSuggestionConfiguration };\n addChatSuggestionConfiguration: (\n id: string,\n suggestion: CopilotChatSuggestionConfiguration,\n ) => void;\n removeChatSuggestionConfiguration: (id: string) => void;\n\n chatInstructions: string;\n setChatInstructions: React.Dispatch<React.SetStateAction<string>>;\n\n additionalInstructions?: string[];\n setAdditionalInstructions: React.Dispatch<React.SetStateAction<string[]>>;\n\n // api endpoints\n copilotApiConfig: CopilotApiConfig;\n\n showDevConsole: boolean;\n\n // agents\n coagentStates: Record<string, CoagentState>;\n setCoagentStates: React.Dispatch<React.SetStateAction<Record<string, CoagentState>>>;\n coagentStatesRef: React.RefObject<Record<string, CoagentState>>;\n setCoagentStatesWithRef: (\n value:\n | Record<string, CoagentState>\n | ((prev: Record<string, CoagentState>) => Record<string, CoagentState>),\n ) => void;\n\n agentSession: AgentSession | null;\n setAgentSession: React.Dispatch<React.SetStateAction<AgentSession | null>>;\n\n agentLock: string | null;\n\n threadId: string;\n setThreadId: React.Dispatch<React.SetStateAction<string>>;\n\n runId: string | null;\n setRunId: React.Dispatch<React.SetStateAction<string | null>>;\n\n // The chat abort controller can be used to stop generation globally,\n // i.e. when using `stop()` from `useChat`\n chatAbortControllerRef: React.MutableRefObject<AbortController | null>;\n\n // runtime\n runtimeClient: CopilotRuntimeClient;\n\n /**\n * The forwarded parameters to use for the task.\n */\n forwardedParameters?: Pick<ForwardedParametersInput, \"temperature\">;\n availableAgents: Agent[];\n\n /**\n * The auth states for the CopilotKit.\n */\n authStates_c?: Record<ActionName, AuthState>;\n setAuthStates_c?: React.Dispatch<React.SetStateAction<Record<ActionName, AuthState>>>;\n\n /**\n * The auth config for the CopilotKit.\n */\n authConfig_c?: {\n SignInComponent: React.ComponentType<{\n onSignInComplete: (authState: AuthState) => void;\n }>;\n };\n\n extensions: ExtensionsInput;\n setExtensions: React.Dispatch<React.SetStateAction<ExtensionsInput>>;\n langGraphInterruptAction: LangGraphInterruptAction | null;\n setLangGraphInterruptAction: LangGraphInterruptActionSetter;\n removeLangGraphInterruptAction: () => void;\n}\n\nconst emptyCopilotContext: CopilotContextParams = {\n actions: {},\n setAction: () => {},\n removeAction: () => {},\n\n coAgentStateRenders: {},\n setCoAgentStateRender: () => {},\n removeCoAgentStateRender: () => {},\n\n chatComponentsCache: { current: { actions: {}, coAgentStateRenders: {} } },\n getContextString: (documents: DocumentPointer[], categories: string[]) =>\n returnAndThrowInDebug(\"\"),\n addContext: () => \"\",\n removeContext: () => {},\n getAllContext: () => [],\n\n getFunctionCallHandler: () => returnAndThrowInDebug(async () => {}),\n\n isLoading: false,\n setIsLoading: () => returnAndThrowInDebug(false),\n\n chatInstructions: \"\",\n setChatInstructions: () => returnAndThrowInDebug(\"\"),\n\n additionalInstructions: [],\n setAdditionalInstructions: () => returnAndThrowInDebug([]),\n\n getDocumentsContext: (categories: string[]) => returnAndThrowInDebug([]),\n addDocumentContext: () => returnAndThrowInDebug(\"\"),\n removeDocumentContext: () => {},\n runtimeClient: {} as any,\n\n copilotApiConfig: new (class implements CopilotApiConfig {\n get chatApiEndpoint(): string {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n }\n\n get headers(): Record<string, string> {\n return {};\n }\n get body(): Record<string, any> {\n return {};\n }\n })(),\n\n chatSuggestionConfiguration: {},\n addChatSuggestionConfiguration: () => {},\n removeChatSuggestionConfiguration: () => {},\n showDevConsole: false,\n coagentStates: {},\n setCoagentStates: () => {},\n coagentStatesRef: { current: {} },\n setCoagentStatesWithRef: () => {},\n agentSession: null,\n setAgentSession: () => {},\n forwardedParameters: {},\n agentLock: null,\n threadId: \"\",\n setThreadId: () => {},\n runId: null,\n setRunId: () => {},\n chatAbortControllerRef: { current: null },\n availableAgents: [],\n extensions: {},\n setExtensions: () => {},\n langGraphInterruptAction: null,\n setLangGraphInterruptAction: () => null,\n removeLangGraphInterruptAction: () => null,\n};\n\nexport const CopilotContext = React.createContext<CopilotContextParams>(emptyCopilotContext);\n\nexport function useCopilotContext(): CopilotContextParams {\n const context = React.useContext(CopilotContext);\n if (context === emptyCopilotContext) {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n }\n return context;\n}\n\nfunction returnAndThrowInDebug<T>(_value: T): T {\n throw new Error(\"Remember to wrap your app in a `<CopilotKit> {...} </CopilotKit>` !!!\");\n}\n"],"mappings":";;;;;AAMA,OAAO,WAAW;AAwNlB,IAAM,sBAA4C;AAAA,EAChD,SAAS,CAAC;AAAA,EACV,WAAW,MAAM;AAAA,EAAC;AAAA,EAClB,cAAc,MAAM;AAAA,EAAC;AAAA,EAErB,qBAAqB,CAAC;AAAA,EACtB,uBAAuB,MAAM;AAAA,EAAC;AAAA,EAC9B,0BAA0B,MAAM;AAAA,EAAC;AAAA,EAEjC,qBAAqB,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,qBAAqB,CAAC,EAAE,EAAE;AAAA,EACzE,kBAAkB,CAAC,WAA8B,eAC/C,sBAAsB,EAAE;AAAA,EAC1B,YAAY,MAAM;AAAA,EAClB,eAAe,MAAM;AAAA,EAAC;AAAA,EACtB,eAAe,MAAM,CAAC;AAAA,EAEtB,wBAAwB,MAAM,sBAAsB,MAAY;AAAA,EAAC,EAAC;AAAA,EAElE,WAAW;AAAA,EACX,cAAc,MAAM,sBAAsB,KAAK;AAAA,EAE/C,kBAAkB;AAAA,EAClB,qBAAqB,MAAM,sBAAsB,EAAE;AAAA,EAEnD,wBAAwB,CAAC;AAAA,EACzB,2BAA2B,MAAM,sBAAsB,CAAC,CAAC;AAAA,EAEzD,qBAAqB,CAAC,eAAyB,sBAAsB,CAAC,CAAC;AAAA,EACvE,oBAAoB,MAAM,sBAAsB,EAAE;AAAA,EAClD,uBAAuB,MAAM;AAAA,EAAC;AAAA,EAC9B,eAAe,CAAC;AAAA,EAEhB,kBAAkB,IAAK,MAAkC;AAAA,IACvD,IAAI,kBAA0B;AAC5B,YAAM,IAAI,MAAM,uEAAuE;AAAA,IACzF;AAAA,IAEA,IAAI,UAAkC;AACpC,aAAO,CAAC;AAAA,IACV;AAAA,IACA,IAAI,OAA4B;AAC9B,aAAO,CAAC;AAAA,IACV;AAAA,EACF,EAAG;AAAA,EAEH,6BAA6B,CAAC;AAAA,EAC9B,gCAAgC,MAAM;AAAA,EAAC;AAAA,EACvC,mCAAmC,MAAM;AAAA,EAAC;AAAA,EAC1C,gBAAgB;AAAA,EAChB,eAAe,CAAC;AAAA,EAChB,kBAAkB,MAAM;AAAA,EAAC;AAAA,EACzB,kBAAkB,EAAE,SAAS,CAAC,EAAE;AAAA,EAChC,yBAAyB,MAAM;AAAA,EAAC;AAAA,EAChC,cAAc;AAAA,EACd,iBAAiB,MAAM;AAAA,EAAC;AAAA,EACxB,qBAAqB,CAAC;AAAA,EACtB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,aAAa,MAAM;AAAA,EAAC;AAAA,EACpB,OAAO;AAAA,EACP,UAAU,MAAM;AAAA,EAAC;AAAA,EACjB,wBAAwB,EAAE,SAAS,KAAK;AAAA,EACxC,iBAAiB,CAAC;AAAA,EAClB,YAAY,CAAC;AAAA,EACb,eAAe,MAAM;AAAA,EAAC;AAAA,EACtB,0BAA0B;AAAA,EAC1B,6BAA6B,MAAM;AAAA,EACnC,gCAAgC,MAAM;AACxC;AAEO,IAAM,iBAAiB,MAAM,cAAoC,mBAAmB;AAEpF,SAAS,oBAA0C;AACxD,QAAM,UAAU,MAAM,WAAW,cAAc;AAC/C,MAAI,YAAY,qBAAqB;AACnC,UAAM,IAAI,MAAM,uEAAuE;AAAA,EACzF;AACA,SAAO;AACT;AAEA,SAAS,sBAAyB,QAAc;AAC9C,QAAM,IAAI,MAAM,uEAAuE;AACzF;","names":[]}
|
package/dist/chunk-HD2GE3DK.mjs
DELETED
|
@@ -1,359 +0,0 @@
|
|
|
1
|
-
// src/components/usage-banner.tsx
|
|
2
|
-
import { Severity, ERROR_NAMES, ErrorVisibility } from "@copilotkit/shared";
|
|
3
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
-
var defaultIcons = {
|
|
5
|
-
[Severity.CRITICAL]: /* @__PURE__ */ jsxs(
|
|
6
|
-
"svg",
|
|
7
|
-
{
|
|
8
|
-
viewBox: "0 0 24 24",
|
|
9
|
-
width: "18",
|
|
10
|
-
height: "18",
|
|
11
|
-
stroke: "currentColor",
|
|
12
|
-
strokeWidth: "2.5",
|
|
13
|
-
fill: "none",
|
|
14
|
-
strokeLinecap: "round",
|
|
15
|
-
strokeLinejoin: "round",
|
|
16
|
-
children: [
|
|
17
|
-
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
18
|
-
/* @__PURE__ */ jsx("line", { x1: "15", y1: "9", x2: "9", y2: "15" }),
|
|
19
|
-
/* @__PURE__ */ jsx("line", { x1: "9", y1: "9", x2: "15", y2: "15" })
|
|
20
|
-
]
|
|
21
|
-
}
|
|
22
|
-
),
|
|
23
|
-
[Severity.WARNING]: /* @__PURE__ */ jsxs(
|
|
24
|
-
"svg",
|
|
25
|
-
{
|
|
26
|
-
viewBox: "0 0 24 24",
|
|
27
|
-
width: "18",
|
|
28
|
-
height: "18",
|
|
29
|
-
stroke: "currentColor",
|
|
30
|
-
strokeWidth: "2.5",
|
|
31
|
-
fill: "none",
|
|
32
|
-
strokeLinecap: "round",
|
|
33
|
-
strokeLinejoin: "round",
|
|
34
|
-
children: [
|
|
35
|
-
/* @__PURE__ */ jsx("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z" }),
|
|
36
|
-
/* @__PURE__ */ jsx("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
|
|
37
|
-
/* @__PURE__ */ jsx("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
|
|
38
|
-
]
|
|
39
|
-
}
|
|
40
|
-
),
|
|
41
|
-
[Severity.INFO]: /* @__PURE__ */ jsxs(
|
|
42
|
-
"svg",
|
|
43
|
-
{
|
|
44
|
-
viewBox: "0 0 24 24",
|
|
45
|
-
width: "18",
|
|
46
|
-
height: "18",
|
|
47
|
-
stroke: "currentColor",
|
|
48
|
-
strokeWidth: "2.5",
|
|
49
|
-
fill: "none",
|
|
50
|
-
strokeLinecap: "round",
|
|
51
|
-
strokeLinejoin: "round",
|
|
52
|
-
children: [
|
|
53
|
-
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "10" }),
|
|
54
|
-
/* @__PURE__ */ jsx("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
|
|
55
|
-
/* @__PURE__ */ jsx("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })
|
|
56
|
-
]
|
|
57
|
-
}
|
|
58
|
-
)
|
|
59
|
-
};
|
|
60
|
-
function UsageBanner({
|
|
61
|
-
severity = Severity.CRITICAL,
|
|
62
|
-
message = "",
|
|
63
|
-
icon,
|
|
64
|
-
onClose,
|
|
65
|
-
actions
|
|
66
|
-
}) {
|
|
67
|
-
if (!message || !severity) {
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
const parseMessage = (rawMessage) => {
|
|
71
|
-
const linkRegex = /\[([^\]]+)\]\(([^)]+)\)/g;
|
|
72
|
-
const matches = Array.from(rawMessage.matchAll(linkRegex));
|
|
73
|
-
if (matches.length > 0) {
|
|
74
|
-
let cleanMessage2 = rawMessage.replace(/\.\s*See more:\s*\[([^\]]+)\]\(([^)]+)\)/g, ".").replace(/See more:\s*\[([^\]]+)\]\(([^)]+)\)/g, "").trim();
|
|
75
|
-
return cleanMessage2;
|
|
76
|
-
}
|
|
77
|
-
return rawMessage;
|
|
78
|
-
};
|
|
79
|
-
const cleanMessage = parseMessage(message);
|
|
80
|
-
const Icon = icon || defaultIcons[severity];
|
|
81
|
-
const themeConfigs = {
|
|
82
|
-
[Severity.INFO]: {
|
|
83
|
-
bg: "linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%)",
|
|
84
|
-
border: "#93c5fd",
|
|
85
|
-
text: "#1e40af",
|
|
86
|
-
icon: "#3b82f6",
|
|
87
|
-
primaryBtn: "#3b82f6",
|
|
88
|
-
primaryBtnHover: "#2563eb"
|
|
89
|
-
},
|
|
90
|
-
[Severity.WARNING]: {
|
|
91
|
-
bg: "linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%)",
|
|
92
|
-
border: "#fbbf24",
|
|
93
|
-
text: "#92400e",
|
|
94
|
-
icon: "#f59e0b",
|
|
95
|
-
primaryBtn: "#f59e0b",
|
|
96
|
-
primaryBtnHover: "#d97706"
|
|
97
|
-
},
|
|
98
|
-
[Severity.CRITICAL]: {
|
|
99
|
-
bg: "linear-gradient(135deg, #fef2f2 0%, #fecaca 100%)",
|
|
100
|
-
border: "#f87171",
|
|
101
|
-
text: "#991b1b",
|
|
102
|
-
icon: "#ef4444",
|
|
103
|
-
primaryBtn: "#ef4444",
|
|
104
|
-
primaryBtnHover: "#dc2626"
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
const themeConfig = themeConfigs[severity] || themeConfigs[Severity.CRITICAL];
|
|
108
|
-
return /* @__PURE__ */ jsxs(
|
|
109
|
-
"div",
|
|
110
|
-
{
|
|
111
|
-
style: {
|
|
112
|
-
position: "fixed",
|
|
113
|
-
bottom: "20px",
|
|
114
|
-
left: "50%",
|
|
115
|
-
transform: "translateX(-50%)",
|
|
116
|
-
maxWidth: "min(95vw, 680px)",
|
|
117
|
-
width: "100%",
|
|
118
|
-
zIndex: 1e4,
|
|
119
|
-
animation: "bannerSlideIn 0.4s cubic-bezier(0.16, 1, 0.3, 1)"
|
|
120
|
-
},
|
|
121
|
-
children: [
|
|
122
|
-
/* @__PURE__ */ jsx("style", { children: `
|
|
123
|
-
@keyframes bannerSlideIn {
|
|
124
|
-
from {
|
|
125
|
-
opacity: 0;
|
|
126
|
-
transform: translateX(-50%) translateY(10px);
|
|
127
|
-
}
|
|
128
|
-
to {
|
|
129
|
-
opacity: 1;
|
|
130
|
-
transform: translateX(-50%) translateY(0);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
` }),
|
|
134
|
-
/* @__PURE__ */ jsxs(
|
|
135
|
-
"div",
|
|
136
|
-
{
|
|
137
|
-
style: {
|
|
138
|
-
display: "flex",
|
|
139
|
-
alignItems: "flex-start",
|
|
140
|
-
gap: "14px",
|
|
141
|
-
borderRadius: "16px",
|
|
142
|
-
border: `1px solid ${themeConfig.border}`,
|
|
143
|
-
background: themeConfig.bg,
|
|
144
|
-
padding: "18px 20px",
|
|
145
|
-
boxShadow: "0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)",
|
|
146
|
-
position: "relative",
|
|
147
|
-
backdropFilter: "blur(10px)",
|
|
148
|
-
WebkitBackdropFilter: "blur(10px)"
|
|
149
|
-
},
|
|
150
|
-
children: [
|
|
151
|
-
onClose && /* @__PURE__ */ jsx(
|
|
152
|
-
"button",
|
|
153
|
-
{
|
|
154
|
-
onClick: onClose,
|
|
155
|
-
style: {
|
|
156
|
-
position: "absolute",
|
|
157
|
-
top: "12px",
|
|
158
|
-
right: "12px",
|
|
159
|
-
background: "rgba(255, 255, 255, 0.8)",
|
|
160
|
-
border: "none",
|
|
161
|
-
color: themeConfig.text,
|
|
162
|
-
cursor: "pointer",
|
|
163
|
-
fontSize: "18px",
|
|
164
|
-
lineHeight: "1",
|
|
165
|
-
padding: "6px",
|
|
166
|
-
borderRadius: "8px",
|
|
167
|
-
opacity: 0.7,
|
|
168
|
-
transition: "all 0.2s ease",
|
|
169
|
-
display: "flex",
|
|
170
|
-
alignItems: "center",
|
|
171
|
-
justifyContent: "center",
|
|
172
|
-
width: "28px",
|
|
173
|
-
height: "28px"
|
|
174
|
-
},
|
|
175
|
-
title: "Close",
|
|
176
|
-
onMouseOver: (e) => {
|
|
177
|
-
e.currentTarget.style.opacity = "1";
|
|
178
|
-
e.currentTarget.style.background = "rgba(255, 255, 255, 1)";
|
|
179
|
-
e.currentTarget.style.transform = "scale(1.05)";
|
|
180
|
-
},
|
|
181
|
-
onMouseOut: (e) => {
|
|
182
|
-
e.currentTarget.style.opacity = "0.7";
|
|
183
|
-
e.currentTarget.style.background = "rgba(255, 255, 255, 0.8)";
|
|
184
|
-
e.currentTarget.style.transform = "scale(1)";
|
|
185
|
-
},
|
|
186
|
-
children: "\xD7"
|
|
187
|
-
}
|
|
188
|
-
),
|
|
189
|
-
/* @__PURE__ */ jsx(
|
|
190
|
-
"div",
|
|
191
|
-
{
|
|
192
|
-
style: {
|
|
193
|
-
color: themeConfig.icon,
|
|
194
|
-
flexShrink: 0,
|
|
195
|
-
marginTop: "1px",
|
|
196
|
-
padding: "6px",
|
|
197
|
-
borderRadius: "10px",
|
|
198
|
-
background: "rgba(255, 255, 255, 0.7)",
|
|
199
|
-
display: "flex",
|
|
200
|
-
alignItems: "center",
|
|
201
|
-
justifyContent: "center"
|
|
202
|
-
},
|
|
203
|
-
children: Icon
|
|
204
|
-
}
|
|
205
|
-
),
|
|
206
|
-
/* @__PURE__ */ jsxs("div", { style: { flex: 1, paddingRight: onClose ? "40px" : "0" }, children: [
|
|
207
|
-
/* @__PURE__ */ jsx(
|
|
208
|
-
"div",
|
|
209
|
-
{
|
|
210
|
-
style: {
|
|
211
|
-
fontSize: "15px",
|
|
212
|
-
fontWeight: 600,
|
|
213
|
-
color: themeConfig.text,
|
|
214
|
-
lineHeight: "1.5",
|
|
215
|
-
marginBottom: actions ? "12px" : "0",
|
|
216
|
-
fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
|
|
217
|
-
},
|
|
218
|
-
children: cleanMessage
|
|
219
|
-
}
|
|
220
|
-
),
|
|
221
|
-
actions && /* @__PURE__ */ jsxs(
|
|
222
|
-
"div",
|
|
223
|
-
{
|
|
224
|
-
style: {
|
|
225
|
-
display: "flex",
|
|
226
|
-
gap: "10px",
|
|
227
|
-
flexWrap: "wrap"
|
|
228
|
-
},
|
|
229
|
-
children: [
|
|
230
|
-
actions.secondary && /* @__PURE__ */ jsx(
|
|
231
|
-
"button",
|
|
232
|
-
{
|
|
233
|
-
onClick: actions.secondary.onClick,
|
|
234
|
-
style: {
|
|
235
|
-
borderRadius: "10px",
|
|
236
|
-
padding: "8px 16px",
|
|
237
|
-
fontSize: "14px",
|
|
238
|
-
fontWeight: 500,
|
|
239
|
-
color: themeConfig.text,
|
|
240
|
-
backgroundColor: "rgba(255, 255, 255, 0.8)",
|
|
241
|
-
border: `1.5px solid ${themeConfig.border}`,
|
|
242
|
-
cursor: "pointer",
|
|
243
|
-
transition: "all 0.2s ease",
|
|
244
|
-
fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
|
|
245
|
-
},
|
|
246
|
-
onMouseOver: (e) => {
|
|
247
|
-
e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 1)";
|
|
248
|
-
e.currentTarget.style.transform = "translateY(-1px)";
|
|
249
|
-
e.currentTarget.style.boxShadow = "0 4px 12px rgba(0, 0, 0, 0.15)";
|
|
250
|
-
},
|
|
251
|
-
onMouseOut: (e) => {
|
|
252
|
-
e.currentTarget.style.backgroundColor = "rgba(255, 255, 255, 0.8)";
|
|
253
|
-
e.currentTarget.style.transform = "translateY(0)";
|
|
254
|
-
e.currentTarget.style.boxShadow = "none";
|
|
255
|
-
},
|
|
256
|
-
children: actions.secondary.label
|
|
257
|
-
}
|
|
258
|
-
),
|
|
259
|
-
actions.primary && /* @__PURE__ */ jsx(
|
|
260
|
-
"button",
|
|
261
|
-
{
|
|
262
|
-
onClick: actions.primary.onClick,
|
|
263
|
-
style: {
|
|
264
|
-
borderRadius: "10px",
|
|
265
|
-
padding: "8px 16px",
|
|
266
|
-
fontSize: "14px",
|
|
267
|
-
fontWeight: 600,
|
|
268
|
-
color: "#fff",
|
|
269
|
-
backgroundColor: themeConfig.primaryBtn,
|
|
270
|
-
border: "none",
|
|
271
|
-
cursor: "pointer",
|
|
272
|
-
transition: "all 0.2s ease",
|
|
273
|
-
boxShadow: "0 4px 12px rgba(0, 0, 0, 0.15)",
|
|
274
|
-
fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif"
|
|
275
|
-
},
|
|
276
|
-
onMouseOver: (e) => {
|
|
277
|
-
e.currentTarget.style.backgroundColor = themeConfig.primaryBtnHover;
|
|
278
|
-
e.currentTarget.style.transform = "translateY(-1px)";
|
|
279
|
-
e.currentTarget.style.boxShadow = "0 6px 16px rgba(0, 0, 0, 0.2)";
|
|
280
|
-
},
|
|
281
|
-
onMouseOut: (e) => {
|
|
282
|
-
e.currentTarget.style.backgroundColor = themeConfig.primaryBtn;
|
|
283
|
-
e.currentTarget.style.transform = "translateY(0)";
|
|
284
|
-
e.currentTarget.style.boxShadow = "0 4px 12px rgba(0, 0, 0, 0.15)";
|
|
285
|
-
},
|
|
286
|
-
children: actions.primary.label
|
|
287
|
-
}
|
|
288
|
-
)
|
|
289
|
-
]
|
|
290
|
-
}
|
|
291
|
-
)
|
|
292
|
-
] })
|
|
293
|
-
]
|
|
294
|
-
}
|
|
295
|
-
)
|
|
296
|
-
]
|
|
297
|
-
}
|
|
298
|
-
);
|
|
299
|
-
}
|
|
300
|
-
function renderCopilotKitUsage(error, onClose) {
|
|
301
|
-
if (error.visibility !== ErrorVisibility.BANNER) {
|
|
302
|
-
return null;
|
|
303
|
-
}
|
|
304
|
-
const extractUrlFromMessage = (message) => {
|
|
305
|
-
const linkRegex = /\[([^\]]+)\]\(([^)]+)\)/g;
|
|
306
|
-
const match = linkRegex.exec(message);
|
|
307
|
-
return match ? match[2] : null;
|
|
308
|
-
};
|
|
309
|
-
const getErrorActions = (error2) => {
|
|
310
|
-
switch (error2.name) {
|
|
311
|
-
case ERROR_NAMES.MISSING_PUBLIC_API_KEY_ERROR:
|
|
312
|
-
return {
|
|
313
|
-
primary: {
|
|
314
|
-
label: "Sign In",
|
|
315
|
-
onClick: () => window.location.href = "https://cloud.copilotkit.ai"
|
|
316
|
-
}
|
|
317
|
-
};
|
|
318
|
-
case ERROR_NAMES.UPGRADE_REQUIRED_ERROR:
|
|
319
|
-
return {
|
|
320
|
-
primary: {
|
|
321
|
-
label: "Upgrade",
|
|
322
|
-
onClick: () => window.location.href = "https://copilotkit.ai/"
|
|
323
|
-
}
|
|
324
|
-
};
|
|
325
|
-
case ERROR_NAMES.COPILOT_API_DISCOVERY_ERROR:
|
|
326
|
-
case ERROR_NAMES.COPILOT_REMOTE_ENDPOINT_DISCOVERY_ERROR:
|
|
327
|
-
case ERROR_NAMES.COPILOT_KIT_AGENT_DISCOVERY_ERROR:
|
|
328
|
-
return {
|
|
329
|
-
primary: {
|
|
330
|
-
label: "View Docs",
|
|
331
|
-
onClick: () => {
|
|
332
|
-
var _a;
|
|
333
|
-
const urlFromMessage = extractUrlFromMessage(error2.message);
|
|
334
|
-
const urlFromExtensions = (_a = error2.extensions) == null ? void 0 : _a.troubleshootingUrl;
|
|
335
|
-
const url = urlFromMessage || urlFromExtensions || "https://docs.copilotkit.ai/troubleshooting/common-issues";
|
|
336
|
-
window.open(url, "_blank");
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
};
|
|
340
|
-
default:
|
|
341
|
-
return void 0;
|
|
342
|
-
}
|
|
343
|
-
};
|
|
344
|
-
return /* @__PURE__ */ jsx(
|
|
345
|
-
UsageBanner,
|
|
346
|
-
{
|
|
347
|
-
severity: error.severity || Severity.CRITICAL,
|
|
348
|
-
message: error.message,
|
|
349
|
-
onClose,
|
|
350
|
-
actions: getErrorActions(error)
|
|
351
|
-
}
|
|
352
|
-
);
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
export {
|
|
356
|
-
UsageBanner,
|
|
357
|
-
renderCopilotKitUsage
|
|
358
|
-
};
|
|
359
|
-
//# sourceMappingURL=chunk-HD2GE3DK.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/usage-banner.tsx"],"sourcesContent":["import { Severity, CopilotKitError, ERROR_NAMES, ErrorVisibility } from \"@copilotkit/shared\";\n\ninterface UsageBannerProps {\n severity?: Severity;\n message?: string;\n icon?: 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\nconst defaultIcons: Record<Severity, JSX.Element> = {\n [Severity.CRITICAL]: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" />\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n ),\n [Severity.WARNING]: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n ),\n [Severity.INFO]: (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"18\"\n height=\"18\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n ),\n};\n\nexport function UsageBanner({\n severity = Severity.CRITICAL,\n message = \"\",\n icon,\n onClose,\n actions,\n}: UsageBannerProps) {\n if (!message || !severity) {\n return null;\n }\n\n // Parse markdown links from message and clean it up\n const parseMessage = (rawMessage: string) => {\n // Extract markdown links: [text](url)\n const linkRegex = /\\[([^\\]]+)\\]\\(([^)]+)\\)/g;\n const matches = Array.from(rawMessage.matchAll(linkRegex));\n\n if (matches.length > 0) {\n // Remove \"See more:\" and markdown links from the main message\n let cleanMessage = rawMessage\n .replace(/\\.\\s*See more:\\s*\\[([^\\]]+)\\]\\(([^)]+)\\)/g, \".\")\n .replace(/See more:\\s*\\[([^\\]]+)\\]\\(([^)]+)\\)/g, \"\")\n .trim();\n\n return cleanMessage;\n }\n\n return rawMessage;\n };\n\n const cleanMessage = parseMessage(message);\n const Icon = icon || defaultIcons[severity];\n\n const themeConfigs = {\n [Severity.INFO]: {\n bg: \"linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%)\",\n border: \"#93c5fd\",\n text: \"#1e40af\",\n icon: \"#3b82f6\",\n primaryBtn: \"#3b82f6\",\n primaryBtnHover: \"#2563eb\",\n },\n [Severity.WARNING]: {\n bg: \"linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%)\",\n border: \"#fbbf24\",\n text: \"#92400e\",\n icon: \"#f59e0b\",\n primaryBtn: \"#f59e0b\",\n primaryBtnHover: \"#d97706\",\n },\n [Severity.CRITICAL]: {\n bg: \"linear-gradient(135deg, #fef2f2 0%, #fecaca 100%)\",\n border: \"#f87171\",\n text: \"#991b1b\",\n icon: \"#ef4444\",\n primaryBtn: \"#ef4444\",\n primaryBtnHover: \"#dc2626\",\n },\n };\n\n const themeConfig = themeConfigs[severity] || themeConfigs[Severity.CRITICAL];\n\n return (\n <div\n style={{\n position: \"fixed\",\n bottom: \"20px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n maxWidth: \"min(95vw, 680px)\",\n width: \"100%\",\n zIndex: 10000,\n animation: \"bannerSlideIn 0.4s cubic-bezier(0.16, 1, 0.3, 1)\",\n }}\n >\n <style>\n {`\n @keyframes bannerSlideIn {\n from {\n opacity: 0;\n transform: translateX(-50%) translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n }\n `}\n </style>\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"14px\",\n borderRadius: \"16px\",\n border: `1px solid ${themeConfig.border}`,\n background: themeConfig.bg,\n padding: \"18px 20px\",\n boxShadow: \"0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)\",\n position: \"relative\",\n backdropFilter: \"blur(10px)\",\n WebkitBackdropFilter: \"blur(10px)\",\n }}\n >\n {/* Close button */}\n {onClose && (\n <button\n onClick={onClose}\n style={{\n position: \"absolute\",\n top: \"12px\",\n right: \"12px\",\n background: \"rgba(255, 255, 255, 0.8)\",\n border: \"none\",\n color: themeConfig.text,\n cursor: \"pointer\",\n fontSize: \"18px\",\n lineHeight: \"1\",\n padding: \"6px\",\n borderRadius: \"8px\",\n opacity: 0.7,\n transition: \"all 0.2s ease\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"28px\",\n height: \"28px\",\n }}\n title=\"Close\"\n onMouseOver={(e) => {\n e.currentTarget.style.opacity = \"1\";\n e.currentTarget.style.background = \"rgba(255, 255, 255, 1)\";\n e.currentTarget.style.transform = \"scale(1.05)\";\n }}\n onMouseOut={(e) => {\n e.currentTarget.style.opacity = \"0.7\";\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.8)\";\n e.currentTarget.style.transform = \"scale(1)\";\n }}\n >\n ×\n </button>\n )}\n\n {/* Icon */}\n <div\n style={{\n color: themeConfig.icon,\n flexShrink: 0,\n marginTop: \"1px\",\n padding: \"6px\",\n borderRadius: \"10px\",\n background: \"rgba(255, 255, 255, 0.7)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n >\n {Icon}\n </div>\n\n {/* Content */}\n <div style={{ flex: 1, paddingRight: onClose ? \"40px\" : \"0\" }}>\n {/* Message */}\n <div\n style={{\n fontSize: \"15px\",\n fontWeight: 600,\n color: themeConfig.text,\n lineHeight: \"1.5\",\n marginBottom: actions ? \"12px\" : \"0\",\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n }}\n >\n {cleanMessage}\n </div>\n\n {/* Actions */}\n {actions && (\n <div\n style={{\n display: \"flex\",\n gap: \"10px\",\n flexWrap: \"wrap\",\n }}\n >\n {actions.secondary && (\n <button\n onClick={actions.secondary.onClick}\n style={{\n borderRadius: \"10px\",\n padding: \"8px 16px\",\n fontSize: \"14px\",\n fontWeight: 500,\n color: themeConfig.text,\n backgroundColor: \"rgba(255, 255, 255, 0.8)\",\n border: `1.5px solid ${themeConfig.border}`,\n cursor: \"pointer\",\n transition: \"all 0.2s ease\",\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n }}\n onMouseOver={(e) => {\n e.currentTarget.style.backgroundColor = \"rgba(255, 255, 255, 1)\";\n e.currentTarget.style.transform = \"translateY(-1px)\";\n e.currentTarget.style.boxShadow = \"0 4px 12px rgba(0, 0, 0, 0.15)\";\n }}\n onMouseOut={(e) => {\n e.currentTarget.style.backgroundColor = \"rgba(255, 255, 255, 0.8)\";\n e.currentTarget.style.transform = \"translateY(0)\";\n e.currentTarget.style.boxShadow = \"none\";\n }}\n >\n {actions.secondary.label}\n </button>\n )}\n {actions.primary && (\n <button\n onClick={actions.primary.onClick}\n style={{\n borderRadius: \"10px\",\n padding: \"8px 16px\",\n fontSize: \"14px\",\n fontWeight: 600,\n color: \"#fff\",\n backgroundColor: themeConfig.primaryBtn,\n border: \"none\",\n cursor: \"pointer\",\n transition: \"all 0.2s ease\",\n boxShadow: \"0 4px 12px rgba(0, 0, 0, 0.15)\",\n fontFamily: \"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",\n }}\n onMouseOver={(e) => {\n e.currentTarget.style.backgroundColor = themeConfig.primaryBtnHover;\n e.currentTarget.style.transform = \"translateY(-1px)\";\n e.currentTarget.style.boxShadow = \"0 6px 16px rgba(0, 0, 0, 0.2)\";\n }}\n onMouseOut={(e) => {\n e.currentTarget.style.backgroundColor = themeConfig.primaryBtn;\n e.currentTarget.style.transform = \"translateY(0)\";\n e.currentTarget.style.boxShadow = \"0 4px 12px rgba(0, 0, 0, 0.15)\";\n }}\n >\n {actions.primary.label}\n </button>\n )}\n </div>\n )}\n </div>\n </div>\n </div>\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 // Extract URL from markdown links in the message\n const extractUrlFromMessage = (message: string): string | null => {\n const linkRegex = /\\[([^\\]]+)\\]\\(([^)]+)\\)/g;\n const match = linkRegex.exec(message);\n return match ? match[2] : null;\n };\n\n // Get action button based on error type\n const getErrorActions = (error: CopilotKitError) => {\n switch (error.name) {\n case ERROR_NAMES.MISSING_PUBLIC_API_KEY_ERROR:\n return {\n primary: {\n label: \"Sign In\",\n onClick: () => (window.location.href = \"https://cloud.copilotkit.ai\"),\n },\n };\n case ERROR_NAMES.UPGRADE_REQUIRED_ERROR:\n return {\n primary: {\n label: \"Upgrade\",\n onClick: () => (window.location.href = \"https://copilotkit.ai/\"),\n },\n };\n case ERROR_NAMES.COPILOT_API_DISCOVERY_ERROR:\n case ERROR_NAMES.COPILOT_REMOTE_ENDPOINT_DISCOVERY_ERROR:\n case ERROR_NAMES.COPILOT_KIT_AGENT_DISCOVERY_ERROR:\n return {\n primary: {\n label: \"View Docs\",\n onClick: () => {\n // Try to get URL from the error message first, then extensions, then default\n const urlFromMessage = extractUrlFromMessage(error.message);\n const urlFromExtensions = (error.extensions as any)?.troubleshootingUrl;\n const url =\n urlFromMessage ||\n urlFromExtensions ||\n \"https://docs.copilotkit.ai/troubleshooting/common-issues\";\n window.open(url, \"_blank\");\n },\n },\n };\n default:\n return undefined;\n }\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":["cleanMessage","error"]}
|