@copilotkit/react-core 1.51.4-next.7 → 1.51.4
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 +26 -0
- package/README.md +18 -12
- package/dist/{chunk-6ESSSQ7Q.mjs → chunk-2RSAYTXH.mjs} +6 -3
- package/dist/chunk-2RSAYTXH.mjs.map +1 -0
- package/dist/chunk-3LZZ4RVM.mjs +37 -0
- package/dist/{chunk-ABWT4DRT.mjs.map → chunk-3LZZ4RVM.mjs.map} +1 -1
- package/dist/{chunk-QDES5PDW.mjs → chunk-4ZQYMC5F.mjs} +2 -2
- package/dist/{chunk-QDES5PDW.mjs.map → chunk-4ZQYMC5F.mjs.map} +1 -1
- package/dist/{chunk-VKNLTZJE.mjs → chunk-6ABVYB2U.mjs} +28 -19
- package/dist/chunk-6ABVYB2U.mjs.map +1 -0
- package/dist/{chunk-6PUNP7CD.mjs → chunk-6AWG5FWL.mjs} +2 -2
- package/dist/chunk-6AWG5FWL.mjs.map +1 -0
- package/dist/{chunk-C3YJYDK4.mjs → chunk-7GIBHX6X.mjs} +8 -2
- package/dist/chunk-7GIBHX6X.mjs.map +1 -0
- package/dist/{chunk-PIF5KJYI.mjs → chunk-7PJKPWMD.mjs} +15 -6
- package/dist/chunk-7PJKPWMD.mjs.map +1 -0
- package/dist/{chunk-7JTI6ZL4.mjs → chunk-7U3DNFBF.mjs} +6 -3
- package/dist/chunk-7U3DNFBF.mjs.map +1 -0
- package/dist/{chunk-KNJHRVKW.mjs → chunk-AAGMWZCN.mjs} +45 -14
- package/dist/chunk-AAGMWZCN.mjs.map +1 -0
- package/dist/{chunk-AFNWX62Q.mjs → chunk-C7HSVDHD.mjs} +10 -4
- package/dist/chunk-C7HSVDHD.mjs.map +1 -0
- package/dist/{chunk-ZYTXB6HH.mjs → chunk-CZT7JUIM.mjs} +4 -2
- package/dist/chunk-CZT7JUIM.mjs.map +1 -0
- package/dist/{chunk-BKMJ4LC7.mjs → chunk-G7SUZGGB.mjs} +19 -12
- package/dist/chunk-G7SUZGGB.mjs.map +1 -0
- package/dist/{chunk-7IBF6RBW.mjs → chunk-GY3FQICF.mjs} +2 -2
- package/dist/{chunk-QD7EID4N.mjs → chunk-IHMMKEFG.mjs} +16 -11
- package/dist/chunk-IHMMKEFG.mjs.map +1 -0
- package/dist/{chunk-YYN33GSG.mjs → chunk-K5OXUXCG.mjs} +14 -11
- package/dist/chunk-K5OXUXCG.mjs.map +1 -0
- package/dist/{chunk-6ZLPNY7X.mjs → chunk-L7GPCF2V.mjs} +6 -2
- package/dist/{chunk-6ZLPNY7X.mjs.map → chunk-L7GPCF2V.mjs.map} +1 -1
- package/dist/{chunk-LHERIF3L.mjs → chunk-LD34IXVT.mjs} +8 -5
- package/dist/chunk-LD34IXVT.mjs.map +1 -0
- package/dist/{chunk-7DTB7S5V.mjs → chunk-LNGBARXE.mjs} +5 -2
- package/dist/chunk-LNGBARXE.mjs.map +1 -0
- package/dist/{chunk-DQXCQWSG.mjs → chunk-LRPWSPXG.mjs} +85 -50
- package/dist/chunk-LRPWSPXG.mjs.map +1 -0
- package/dist/{chunk-NBK4KBLX.mjs → chunk-MBJ7OLYI.mjs} +9 -5
- package/dist/chunk-MBJ7OLYI.mjs.map +1 -0
- package/dist/{chunk-MA3CUMCY.mjs → chunk-P6ZPE4XJ.mjs} +3 -3
- package/dist/{chunk-MA3CUMCY.mjs.map → chunk-P6ZPE4XJ.mjs.map} +1 -1
- package/dist/{chunk-77IVITG3.mjs → chunk-QXZTCGF4.mjs} +9 -4
- package/dist/chunk-QXZTCGF4.mjs.map +1 -0
- package/dist/{chunk-VP43SLSZ.mjs → chunk-R2DP4APC.mjs} +10 -5
- package/dist/chunk-R2DP4APC.mjs.map +1 -0
- package/dist/{chunk-RKTVJRK7.mjs → chunk-R7BV32X4.mjs} +5 -2
- package/dist/chunk-R7BV32X4.mjs.map +1 -0
- package/dist/{chunk-YCG6SNAU.mjs → chunk-SBRCWA4S.mjs} +186 -32
- package/dist/chunk-SBRCWA4S.mjs.map +1 -0
- package/dist/{chunk-LMHB2D4J.mjs → chunk-SK2XMJUD.mjs} +13 -4
- package/dist/chunk-SK2XMJUD.mjs.map +1 -0
- package/dist/{chunk-HE22TZMF.mjs → chunk-SLM6CLAH.mjs} +16 -7
- package/dist/chunk-SLM6CLAH.mjs.map +1 -0
- package/dist/{chunk-XDFVCQD3.mjs → chunk-SYGQHN3H.mjs} +1 -1
- package/dist/{chunk-XDFVCQD3.mjs.map → chunk-SYGQHN3H.mjs.map} +1 -1
- package/dist/{chunk-4RRMC7L2.mjs → chunk-SYMT73HM.mjs} +16 -5
- package/dist/chunk-SYMT73HM.mjs.map +1 -0
- package/dist/{chunk-SRJT5VVY.mjs → chunk-TFZXOEY4.mjs} +6 -4
- package/dist/{chunk-SRJT5VVY.mjs.map → chunk-TFZXOEY4.mjs.map} +1 -1
- package/dist/{chunk-4CEQJ2X6.mjs → chunk-TPN7WC53.mjs} +4 -2
- package/dist/{chunk-4CEQJ2X6.mjs.map → chunk-TPN7WC53.mjs.map} +1 -1
- package/dist/{chunk-VGL3DGUW.mjs → chunk-UA23VX5J.mjs} +4 -2
- package/dist/chunk-UA23VX5J.mjs.map +1 -0
- package/dist/{chunk-VV56AVPB.mjs → chunk-V42VL2JR.mjs} +15 -4
- package/dist/chunk-V42VL2JR.mjs.map +1 -0
- package/dist/{chunk-RBGVEVWY.mjs → chunk-VZ4NSOFQ.mjs} +4 -4
- package/dist/chunk-VZ4NSOFQ.mjs.map +1 -0
- package/dist/{chunk-WF65O6HX.mjs → chunk-WRALJIW5.mjs} +18 -5
- package/dist/chunk-WRALJIW5.mjs.map +1 -0
- package/dist/{chunk-PMAFHQ7P.mjs → chunk-WV2EA7SX.mjs} +1 -1
- package/dist/chunk-WV2EA7SX.mjs.map +1 -0
- package/dist/{chunk-EFL5OBKN.mjs → chunk-ZP2IMXFY.mjs} +10 -4
- package/dist/chunk-ZP2IMXFY.mjs.map +1 -0
- package/dist/components/CopilotListeners.js +11 -2
- package/dist/components/CopilotListeners.js.map +1 -1
- package/dist/components/CopilotListeners.mjs +2 -2
- package/dist/components/copilot-provider/copilot-messages.d.ts +1 -1
- package/dist/components/copilot-provider/copilot-messages.js +22 -7
- 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.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.js +179 -84
- package/dist/components/copilot-provider/copilotkit.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.mjs +16 -16
- package/dist/components/copilot-provider/index.js +179 -84
- package/dist/components/copilot-provider/index.js.map +1 -1
- package/dist/components/copilot-provider/index.mjs +16 -16
- package/dist/components/dev-console/console-trigger.d.ts +1 -1
- package/dist/components/dev-console/console-trigger.js +227 -42
- package/dist/components/dev-console/console-trigger.js.map +1 -1
- package/dist/components/dev-console/console-trigger.mjs +24 -8
- package/dist/components/dev-console/console-trigger.mjs.map +1 -1
- package/dist/components/dev-console/developer-console-modal.d.ts +1 -1
- package/dist/components/dev-console/developer-console-modal.js +206 -37
- package/dist/components/dev-console/developer-console-modal.js.map +1 -1
- package/dist/components/dev-console/developer-console-modal.mjs +3 -3
- package/dist/components/dev-console/icons.js +14 -5
- package/dist/components/dev-console/icons.js.map +1 -1
- package/dist/components/dev-console/icons.mjs +1 -1
- package/dist/components/error-boundary/error-boundary.d.ts +1 -1
- package/dist/components/error-boundary/error-boundary.js +9 -2
- package/dist/components/error-boundary/error-boundary.js.map +1 -1
- package/dist/components/error-boundary/error-boundary.mjs +5 -5
- 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.js +179 -84
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +16 -16
- package/dist/components/toast/toast-provider.js +9 -3
- 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 +5 -1
- package/dist/components/usage-banner.js.map +1 -1
- package/dist/components/usage-banner.mjs +1 -1
- package/dist/context/coagent-state-renders-context.d.ts +1 -1
- package/dist/context/coagent-state-renders-context.js +15 -10
- package/dist/context/coagent-state-renders-context.js.map +1 -1
- package/dist/context/coagent-state-renders-context.mjs +1 -1
- package/dist/context/copilot-context.js +9 -3
- package/dist/context/copilot-context.js.map +1 -1
- package/dist/context/copilot-context.mjs +1 -1
- package/dist/context/index.js +31 -15
- package/dist/context/index.js.map +1 -1
- package/dist/context/index.mjs +3 -3
- package/dist/context/threads-context.d.ts +1 -1
- package/dist/context/threads-context.js +7 -2
- package/dist/context/threads-context.js.map +1 -1
- package/dist/context/threads-context.mjs +1 -1
- package/dist/hooks/index.js +162 -61
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +25 -25
- package/dist/hooks/use-coagent-state-render-bridge.helpers.js +7 -1
- package/dist/hooks/use-coagent-state-render-bridge.helpers.js.map +1 -1
- package/dist/hooks/use-coagent-state-render-bridge.helpers.mjs +1 -1
- package/dist/hooks/use-coagent-state-render-bridge.js +31 -15
- package/dist/hooks/use-coagent-state-render-bridge.js.map +1 -1
- package/dist/hooks/use-coagent-state-render-bridge.mjs +6 -6
- package/dist/hooks/use-coagent-state-render-registry.js +14 -3
- package/dist/hooks/use-coagent-state-render-registry.js.map +1 -1
- package/dist/hooks/use-coagent-state-render-registry.mjs +2 -2
- package/dist/hooks/use-coagent-state-render.js +34 -21
- package/dist/hooks/use-coagent-state-render.js.map +1 -1
- package/dist/hooks/use-coagent-state-render.mjs +4 -4
- package/dist/hooks/use-coagent.js +3 -1
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +1 -1
- package/dist/hooks/use-configure-chat-suggestions.js.map +1 -1
- package/dist/hooks/use-configure-chat-suggestions.mjs.map +1 -1
- package/dist/hooks/use-copilot-action.js +13 -9
- 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.d.ts +1 -1
- package/dist/hooks/use-copilot-additional-instructions.js +26 -7
- 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 +25 -13
- package/dist/hooks/use-copilot-authenticated-action.js.map +1 -1
- package/dist/hooks/use-copilot-authenticated-action.mjs +6 -6
- package/dist/hooks/use-copilot-chat-headless_c.js +81 -27
- package/dist/hooks/use-copilot-chat-headless_c.js.map +1 -1
- package/dist/hooks/use-copilot-chat-headless_c.mjs +11 -11
- package/dist/hooks/use-copilot-chat-suggestions.js.map +1 -1
- package/dist/hooks/use-copilot-chat-suggestions.mjs +1 -1
- package/dist/hooks/use-copilot-chat.js +81 -27
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +11 -11
- package/dist/hooks/use-copilot-chat_internal.js +81 -27
- package/dist/hooks/use-copilot-chat_internal.js.map +1 -1
- package/dist/hooks/use-copilot-chat_internal.mjs +10 -10
- package/dist/hooks/use-copilot-runtime-client.js +4 -1
- 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-default-tool.js +17 -10
- package/dist/hooks/use-default-tool.js.map +1 -1
- package/dist/hooks/use-default-tool.mjs +5 -5
- package/dist/hooks/use-flat-category-store.js +13 -10
- package/dist/hooks/use-flat-category-store.js.map +1 -1
- package/dist/hooks/use-flat-category-store.mjs +1 -1
- package/dist/hooks/use-frontend-tool.js.map +1 -1
- package/dist/hooks/use-frontend-tool.mjs +1 -1
- package/dist/hooks/use-human-in-the-loop.js.map +1 -1
- package/dist/hooks/use-human-in-the-loop.mjs +1 -1
- package/dist/hooks/use-langgraph-interrupt-render.js +22 -5
- package/dist/hooks/use-langgraph-interrupt-render.js.map +1 -1
- package/dist/hooks/use-langgraph-interrupt-render.mjs +4 -4
- package/dist/hooks/use-langgraph-interrupt.js +19 -4
- package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
- package/dist/hooks/use-langgraph-interrupt.mjs +3 -3
- package/dist/hooks/use-make-copilot-document-readable.js +9 -3
- 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/hooks/use-render-tool-call.d.ts +1 -1
- package/dist/hooks/use-render-tool-call.js +13 -9
- package/dist/hooks/use-render-tool-call.js.map +1 -1
- package/dist/hooks/use-render-tool-call.mjs +1 -1
- package/dist/hooks/use-tree.js +4 -1
- package/dist/hooks/use-tree.js.map +1 -1
- package/dist/hooks/use-tree.mjs +1 -1
- package/dist/index.js +311 -130
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +35 -35
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/lib/copilot-task.js +10 -3
- package/dist/lib/copilot-task.js.map +1 -1
- package/dist/lib/copilot-task.mjs +18 -18
- package/dist/lib/index.js +10 -3
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +18 -18
- package/dist/lib/status-checker.js.map +1 -1
- package/dist/lib/status-checker.mjs +1 -1
- package/dist/types/coagent-action.js.map +1 -1
- package/dist/types/frontend-action.js +3 -1
- package/dist/types/frontend-action.js.map +1 -1
- package/dist/types/frontend-action.mjs +1 -1
- package/dist/types/interrupt-action.js.map +1 -1
- package/dist/v2/index.umd.js.map +1 -1
- package/jest.config.js +1 -0
- package/package.json +7 -8
- package/src/__mocks__/analytics-node.js +9 -0
- package/src/components/CopilotListeners.tsx +21 -5
- package/src/components/copilot-provider/__tests__/copilotkit-error.test.tsx +3 -1
- package/src/components/copilot-provider/copilot-messages.tsx +36 -11
- package/src/components/copilot-provider/copilotkit-props.tsx +4 -1
- package/src/components/copilot-provider/copilotkit.tsx +116 -50
- package/src/components/dev-console/console-trigger.tsx +39 -10
- package/src/components/dev-console/developer-console-modal.tsx +207 -57
- package/src/components/dev-console/icons.tsx +6 -1
- package/src/components/error-boundary/error-boundary.tsx +10 -2
- package/src/components/error-boundary/error-utils.tsx +8 -3
- package/src/components/toast/toast-provider.tsx +16 -6
- package/src/components/usage-banner.tsx +9 -2
- package/src/context/coagent-state-renders-context.tsx +24 -12
- package/src/context/copilot-context.tsx +48 -15
- package/src/context/index.ts +8 -2
- package/src/context/threads-context.tsx +14 -3
- package/src/hooks/__tests__/use-coagent-state-render-bridge.helpers.test.ts +11 -4
- package/src/hooks/__tests__/use-coagent-state-render.e2e.test.tsx +175 -47
- package/src/hooks/__tests__/use-coagent-state-render.test.tsx +31 -10
- package/src/hooks/__tests__/use-frontend-tool-remount.e2e.test.tsx +10 -2
- package/src/hooks/use-coagent-state-render-bridge.helpers.ts +49 -16
- package/src/hooks/use-coagent-state-render-bridge.tsx +30 -13
- package/src/hooks/use-coagent-state-render-registry.ts +36 -21
- package/src/hooks/use-coagent-state-render.ts +30 -19
- package/src/hooks/use-coagent.ts +15 -4
- package/src/hooks/use-configure-chat-suggestions.tsx +14 -4
- package/src/hooks/use-copilot-action.ts +12 -3
- package/src/hooks/use-copilot-additional-instructions.ts +17 -4
- package/src/hooks/use-copilot-authenticated-action.ts +4 -1
- package/src/hooks/use-copilot-chat-headless_c.ts +8 -2
- package/src/hooks/use-copilot-chat-suggestions.tsx +14 -4
- package/src/hooks/use-copilot-chat.ts +3 -1
- package/src/hooks/use-copilot-chat_internal.ts +72 -19
- package/src/hooks/use-copilot-runtime-client.ts +20 -6
- package/src/hooks/use-default-tool.ts +8 -2
- package/src/hooks/use-flat-category-store.ts +15 -11
- package/src/hooks/use-frontend-tool.ts +35 -25
- package/src/hooks/use-human-in-the-loop.ts +21 -5
- package/src/hooks/use-langgraph-interrupt-render.ts +13 -2
- package/src/hooks/use-langgraph-interrupt.ts +13 -3
- package/src/hooks/use-render-tool-call.ts +20 -11
- package/src/hooks/use-tree.ts +20 -5
- package/src/lib/copilot-task.ts +20 -6
- package/src/lib/status-checker.ts +4 -1
- package/src/types/coagent-action.ts +6 -2
- package/src/types/frontend-action.ts +16 -5
- package/src/types/interrupt-action.ts +15 -5
- package/tsconfig.json +1 -1
- package/dist/chunk-4RRMC7L2.mjs.map +0 -1
- package/dist/chunk-6ESSSQ7Q.mjs.map +0 -1
- package/dist/chunk-6PUNP7CD.mjs.map +0 -1
- package/dist/chunk-77IVITG3.mjs.map +0 -1
- package/dist/chunk-7DTB7S5V.mjs.map +0 -1
- package/dist/chunk-7JTI6ZL4.mjs.map +0 -1
- package/dist/chunk-ABWT4DRT.mjs +0 -24
- package/dist/chunk-AFNWX62Q.mjs.map +0 -1
- package/dist/chunk-BKMJ4LC7.mjs.map +0 -1
- package/dist/chunk-C3YJYDK4.mjs.map +0 -1
- package/dist/chunk-DQXCQWSG.mjs.map +0 -1
- package/dist/chunk-EFL5OBKN.mjs.map +0 -1
- package/dist/chunk-HE22TZMF.mjs.map +0 -1
- package/dist/chunk-KNJHRVKW.mjs.map +0 -1
- package/dist/chunk-LHERIF3L.mjs.map +0 -1
- package/dist/chunk-LMHB2D4J.mjs.map +0 -1
- package/dist/chunk-NBK4KBLX.mjs.map +0 -1
- package/dist/chunk-PIF5KJYI.mjs.map +0 -1
- package/dist/chunk-PMAFHQ7P.mjs.map +0 -1
- package/dist/chunk-QD7EID4N.mjs.map +0 -1
- package/dist/chunk-RBGVEVWY.mjs.map +0 -1
- package/dist/chunk-RKTVJRK7.mjs.map +0 -1
- package/dist/chunk-VGL3DGUW.mjs.map +0 -1
- package/dist/chunk-VKNLTZJE.mjs.map +0 -1
- package/dist/chunk-VP43SLSZ.mjs.map +0 -1
- package/dist/chunk-VV56AVPB.mjs.map +0 -1
- package/dist/chunk-WF65O6HX.mjs.map +0 -1
- package/dist/chunk-YCG6SNAU.mjs.map +0 -1
- package/dist/chunk-YYN33GSG.mjs.map +0 -1
- package/dist/chunk-ZYTXB6HH.mjs.map +0 -1
- /package/dist/{chunk-7IBF6RBW.mjs.map → chunk-GY3FQICF.mjs.map} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
processActionsForRuntimeRequest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TPN7WC53.mjs";
|
|
4
4
|
import {
|
|
5
5
|
defaultCopilotContextCategories
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-LRPWSPXG.mjs";
|
|
7
7
|
import {
|
|
8
8
|
__async,
|
|
9
9
|
__spreadValues
|
|
@@ -44,7 +44,10 @@ var CopilotTask = class {
|
|
|
44
44
|
contextString = (typeof data === "string" ? data : JSON.stringify(data)) + "\n\n";
|
|
45
45
|
}
|
|
46
46
|
if (this.includeCopilotReadable) {
|
|
47
|
-
contextString += context.getContextString(
|
|
47
|
+
contextString += context.getContextString(
|
|
48
|
+
[],
|
|
49
|
+
defaultCopilotContextCategories
|
|
50
|
+
);
|
|
48
51
|
}
|
|
49
52
|
const systemMessage = new TextMessage({
|
|
50
53
|
content: taskSystemMessage(contextString, this.instructions),
|
|
@@ -63,7 +66,9 @@ var CopilotTask = class {
|
|
|
63
66
|
actions: processActionsForRuntimeRequest(Object.values(actions)),
|
|
64
67
|
url: window.location.href
|
|
65
68
|
},
|
|
66
|
-
messages: convertMessagesToGqlInput(
|
|
69
|
+
messages: convertMessagesToGqlInput(
|
|
70
|
+
filterAgentStateMessages(messages)
|
|
71
|
+
),
|
|
67
72
|
metadata: {
|
|
68
73
|
requestType: CopilotRequestType.Task
|
|
69
74
|
},
|
|
@@ -117,4 +122,4 @@ ${instructions}
|
|
|
117
122
|
export {
|
|
118
123
|
CopilotTask
|
|
119
124
|
};
|
|
120
|
-
//# sourceMappingURL=chunk-
|
|
125
|
+
//# sourceMappingURL=chunk-R2DP4APC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/copilot-task.ts"],"sourcesContent":["/**\n * This class is used to execute one-off tasks, for example on button press. It can use the context available via [useCopilotReadable](/reference/hooks/useCopilotReadable) and the actions provided by [useCopilotAction](/reference/hooks/useCopilotAction), or you can provide your own context and actions.\n *\n * ## Example\n * In the simplest case, use CopilotTask in the context of your app by giving it instructions on what to do.\n *\n * ```tsx\n * import { CopilotTask, useCopilotContext } from \"@copilotkit/react-core\";\n *\n * export function MyComponent() {\n * const context = useCopilotContext();\n *\n * const task = new CopilotTask({\n * instructions: \"Set a random message\",\n * actions: [\n * {\n * name: \"setMessage\",\n * description: \"Set the message.\",\n * argumentAnnotations: [\n * {\n * name: \"message\",\n * type: \"string\",\n * description:\n * \"A message to display.\",\n * required: true,\n * },\n * ],\n * }\n * ]\n * });\n *\n * const executeTask = async () => {\n * await task.run(context, action);\n * }\n *\n * return (\n * <>\n * <button onClick={executeTask}>\n * Execute task\n * </button>\n * </>\n * )\n * }\n * ```\n *\n * Have a look at the [Presentation Example App](https://github.com/CopilotKit/CopilotKit/blob/main/src/v1.x/examples/next-openai/src/app/presentation/page.tsx) for a more complete example.\n */\n\nimport {\n ActionExecutionMessage,\n CopilotRuntimeClient,\n Message,\n Role,\n TextMessage,\n convertGqlOutputToMessages,\n convertMessagesToGqlInput,\n filterAgentStateMessages,\n CopilotRequestType,\n ForwardedParametersInput,\n} from \"@copilotkit/runtime-client-gql\";\nimport {\n FrontendAction,\n processActionsForRuntimeRequest,\n} from \"../types/frontend-action\";\nimport { CopilotContextParams } from \"../context\";\nimport { defaultCopilotContextCategories } from \"../components\";\n\nexport interface CopilotTaskConfig {\n /**\n * The instructions to be given to the assistant.\n */\n instructions: string;\n /**\n * An array of action definitions that can be called.\n */\n actions?: FrontendAction<any>[];\n /**\n * Whether to include the copilot readable context in the task.\n */\n includeCopilotReadable?: boolean;\n\n /**\n * Whether to include actions defined via useCopilotAction in the task.\n */\n includeCopilotActions?: boolean;\n\n /**\n * The forwarded parameters to use for the task.\n */\n forwardedParameters?: ForwardedParametersInput;\n}\n\nexport class CopilotTask<T = any> {\n private instructions: string;\n private actions: FrontendAction<any>[];\n private includeCopilotReadable: boolean;\n private includeCopilotActions: boolean;\n private forwardedParameters?: ForwardedParametersInput;\n constructor(config: CopilotTaskConfig) {\n this.instructions = config.instructions;\n this.actions = config.actions || [];\n this.includeCopilotReadable = config.includeCopilotReadable !== false;\n this.includeCopilotActions = config.includeCopilotActions !== false;\n this.forwardedParameters = config.forwardedParameters;\n }\n\n /**\n * Run the task.\n * @param context The CopilotContext to use for the task. Use `useCopilotContext` to obtain the current context.\n * @param data The data to use for the task.\n */\n async run(context: CopilotContextParams, data?: T): Promise<void> {\n const actions = this.includeCopilotActions\n ? Object.assign({}, context.actions)\n : {};\n\n // merge functions into entry points\n for (const fn of this.actions) {\n actions[fn.name] = fn;\n }\n\n let contextString = \"\";\n\n if (data) {\n contextString =\n (typeof data === \"string\" ? data : JSON.stringify(data)) + \"\\n\\n\";\n }\n\n if (this.includeCopilotReadable) {\n contextString += context.getContextString(\n [],\n defaultCopilotContextCategories,\n );\n }\n\n const systemMessage = new TextMessage({\n content: taskSystemMessage(contextString, this.instructions),\n role: Role.System,\n });\n\n const messages: Message[] = [systemMessage];\n\n const runtimeClient = new CopilotRuntimeClient({\n url: context.copilotApiConfig.chatApiEndpoint,\n publicApiKey: context.copilotApiConfig.publicApiKey,\n headers: context.copilotApiConfig.headers,\n credentials: context.copilotApiConfig.credentials,\n });\n\n const response = await runtimeClient\n .generateCopilotResponse({\n data: {\n frontend: {\n actions: processActionsForRuntimeRequest(Object.values(actions)),\n url: window.location.href,\n },\n messages: convertMessagesToGqlInput(\n filterAgentStateMessages(messages),\n ),\n metadata: {\n requestType: CopilotRequestType.Task,\n },\n forwardedParameters: {\n // if forwardedParameters is provided, use it\n toolChoice: \"required\",\n ...(this.forwardedParameters ?? {}),\n },\n },\n properties: context.copilotApiConfig.properties,\n })\n .toPromise();\n\n const functionCallHandler = context.getFunctionCallHandler(actions);\n const functionCalls = convertGqlOutputToMessages(\n response.data?.generateCopilotResponse?.messages || [],\n ).filter((m): m is ActionExecutionMessage => m.isActionExecutionMessage());\n\n for (const functionCall of functionCalls) {\n await functionCallHandler({\n messages,\n name: functionCall.name,\n args: functionCall.arguments,\n });\n }\n }\n}\n\nfunction taskSystemMessage(\n contextString: string,\n instructions: string,\n): 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 functions you can 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 a function without saying anything else.\n\nThe user has given you the following task to complete:\n\n\\`\\`\\`\n${instructions}\n\\`\\`\\`\n`;\n}\n"],"mappings":";;;;;;;;;;;;AAgDA;AAAA,EAEE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AAiCA,IAAM,cAAN,MAA2B;AAAA,EAMhC,YAAY,QAA2B;AACrC,SAAK,eAAe,OAAO;AAC3B,SAAK,UAAU,OAAO,WAAW,CAAC;AAClC,SAAK,yBAAyB,OAAO,2BAA2B;AAChE,SAAK,wBAAwB,OAAO,0BAA0B;AAC9D,SAAK,sBAAsB,OAAO;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOM,IAAI,SAA+B,MAAyB;AAAA;AA/GpE;AAgHI,YAAM,UAAU,KAAK,wBACjB,OAAO,OAAO,CAAC,GAAG,QAAQ,OAAO,IACjC,CAAC;AAGL,iBAAW,MAAM,KAAK,SAAS;AAC7B,gBAAQ,GAAG,IAAI,IAAI;AAAA,MACrB;AAEA,UAAI,gBAAgB;AAEpB,UAAI,MAAM;AACR,yBACG,OAAO,SAAS,WAAW,OAAO,KAAK,UAAU,IAAI,KAAK;AAAA,MAC/D;AAEA,UAAI,KAAK,wBAAwB;AAC/B,yBAAiB,QAAQ;AAAA,UACvB,CAAC;AAAA,UACD;AAAA,QACF;AAAA,MACF;AAEA,YAAM,gBAAgB,IAAI,YAAY;AAAA,QACpC,SAAS,kBAAkB,eAAe,KAAK,YAAY;AAAA,QAC3D,MAAM,KAAK;AAAA,MACb,CAAC;AAED,YAAM,WAAsB,CAAC,aAAa;AAE1C,YAAM,gBAAgB,IAAI,qBAAqB;AAAA,QAC7C,KAAK,QAAQ,iBAAiB;AAAA,QAC9B,cAAc,QAAQ,iBAAiB;AAAA,QACvC,SAAS,QAAQ,iBAAiB;AAAA,QAClC,aAAa,QAAQ,iBAAiB;AAAA,MACxC,CAAC;AAED,YAAM,WAAW,MAAM,cACpB,wBAAwB;AAAA,QACvB,MAAM;AAAA,UACJ,UAAU;AAAA,YACR,SAAS,gCAAgC,OAAO,OAAO,OAAO,CAAC;AAAA,YAC/D,KAAK,OAAO,SAAS;AAAA,UACvB;AAAA,UACA,UAAU;AAAA,YACR,yBAAyB,QAAQ;AAAA,UACnC;AAAA,UACA,UAAU;AAAA,YACR,aAAa,mBAAmB;AAAA,UAClC;AAAA,UACA,qBAAqB;AAAA;AAAA,YAEnB,YAAY;AAAA,cACR,UAAK,wBAAL,YAA4B,CAAC;AAAA,QAErC;AAAA,QACA,YAAY,QAAQ,iBAAiB;AAAA,MACvC,CAAC,EACA,UAAU;AAEb,YAAM,sBAAsB,QAAQ,uBAAuB,OAAO;AAClE,YAAM,gBAAgB;AAAA,UACpB,oBAAS,SAAT,mBAAe,4BAAf,mBAAwC,aAAY,CAAC;AAAA,MACvD,EAAE,OAAO,CAAC,MAAmC,EAAE,yBAAyB,CAAC;AAEzE,iBAAW,gBAAgB,eAAe;AACxC,cAAM,oBAAoB;AAAA,UACxB;AAAA,UACA,MAAM,aAAa;AAAA,UACnB,MAAM,aAAa;AAAA,QACrB,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AACF;AAEA,SAAS,kBACP,eACA,cACQ;AACR,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA;AAAA;AAAA;AAGF;","names":[]}
|
|
@@ -118,7 +118,10 @@ var useTree = () => {
|
|
|
118
118
|
if (index !== 0) {
|
|
119
119
|
output += "\n";
|
|
120
120
|
}
|
|
121
|
-
output += printNode(
|
|
121
|
+
output += printNode(
|
|
122
|
+
node,
|
|
123
|
+
`${treeIndentationRepresentation(index, 0)}. `
|
|
124
|
+
);
|
|
122
125
|
});
|
|
123
126
|
return output;
|
|
124
127
|
},
|
|
@@ -140,4 +143,4 @@ function setsHaveIntersection(setA, setB) {
|
|
|
140
143
|
export {
|
|
141
144
|
use_tree_default
|
|
142
145
|
};
|
|
143
|
-
//# sourceMappingURL=chunk-
|
|
146
|
+
//# sourceMappingURL=chunk-R7BV32X4.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks/use-tree.ts"],"sourcesContent":["import { randomId } from \"@copilotkit/shared\";\nimport { useCallback, useReducer } from \"react\";\n\nexport type TreeNodeId = string;\n\nexport interface TreeNode {\n id: TreeNodeId;\n value: string;\n children: TreeNode[];\n parentId?: TreeNodeId;\n categories: Set<string>;\n}\n\nexport type Tree = TreeNode[];\n\nexport interface UseTreeReturn {\n tree: Tree;\n addElement: (\n value: string,\n categories: string[],\n parentId?: TreeNodeId,\n ) => TreeNodeId;\n printTree: (categories: string[]) => string;\n removeElement: (id: TreeNodeId) => void;\n getAllElements: () => Tree;\n}\n\nconst findNode = (nodes: Tree, id: TreeNodeId): TreeNode | undefined => {\n for (const node of nodes) {\n if (node.id === id) {\n return node;\n }\n const result = findNode(node.children, id);\n if (result) {\n return result;\n }\n }\n return undefined;\n};\n\nconst removeNode = (nodes: Tree, id: TreeNodeId): Tree => {\n return nodes.reduce((result: Tree, node) => {\n if (node.id !== id) {\n const newNode = { ...node, children: removeNode(node.children, id) };\n result.push(newNode);\n }\n return result;\n }, []);\n};\n\nconst addNode = (\n nodes: Tree,\n newNode: TreeNode,\n parentId?: TreeNodeId,\n): Tree => {\n if (!parentId) {\n return [...nodes, newNode];\n }\n return nodes.map((node) => {\n if (node.id === parentId) {\n return { ...node, children: [...node.children, newNode] };\n } else if (node.children.length) {\n return { ...node, children: addNode(node.children, newNode, parentId) };\n }\n return node;\n });\n};\n\nconst treeIndentationRepresentation = (\n index: number,\n indentLevel: number,\n): string => {\n if (indentLevel === 0) {\n return (index + 1).toString();\n } else if (indentLevel === 1) {\n return String.fromCharCode(65 + index); // 65 is the ASCII value for 'A'\n } else if (indentLevel === 2) {\n return String.fromCharCode(97 + index); // 97 is the ASCII value for 'a'\n } else {\n return \"-\";\n }\n};\n\nconst printNode = (node: TreeNode, prefix = \"\", indentLevel = 0): string => {\n const indent = \" \".repeat(3).repeat(indentLevel);\n\n const prefixPlusIndentLength = prefix.length + indent.length;\n const subsequentLinesPrefix = \" \".repeat(prefixPlusIndentLength);\n\n const valueLines = node.value.split(\"\\n\");\n\n const outputFirstLine = `${indent}${prefix}${valueLines[0]}`;\n const outputSubsequentLines = valueLines\n .slice(1)\n .map((line) => `${subsequentLinesPrefix}${line}`)\n .join(\"\\n\");\n\n let output = `${outputFirstLine}\\n`;\n if (outputSubsequentLines) {\n output += `${outputSubsequentLines}\\n`;\n }\n\n const childPrePrefix = \" \".repeat(prefix.length);\n\n node.children.forEach(\n (child, index) =>\n (output += printNode(\n child,\n `${childPrePrefix}${treeIndentationRepresentation(index, indentLevel + 1)}. `,\n indentLevel + 1,\n )),\n );\n return output;\n};\n\n// Action types\ntype Action =\n | {\n type: \"ADD_NODE\";\n value: string;\n parentId?: string;\n id: string;\n categories: string[];\n }\n | { type: \"REMOVE_NODE\"; id: string };\n\n// Reducer function\nfunction treeReducer(state: Tree, action: Action): Tree {\n switch (action.type) {\n case \"ADD_NODE\": {\n const { value, parentId, id: newNodeId } = action;\n const newNode: TreeNode = {\n id: newNodeId,\n value,\n children: [],\n categories: new Set(action.categories),\n };\n\n try {\n return addNode(state, newNode, parentId);\n } catch (error) {\n console.error(`Error while adding node with id ${newNodeId}: ${error}`);\n return state;\n }\n }\n case \"REMOVE_NODE\":\n return removeNode(state, action.id);\n default:\n return state;\n }\n}\n\n// useTree hook\nconst useTree = (): UseTreeReturn => {\n const [tree, dispatch] = useReducer(treeReducer, []);\n\n const addElement = useCallback(\n (value: string, categories: string[], parentId?: string): TreeNodeId => {\n const newNodeId = randomId(); // Generate new ID outside of dispatch\n dispatch({\n type: \"ADD_NODE\",\n value,\n parentId,\n id: newNodeId,\n categories: categories,\n });\n return newNodeId; // Return the new ID\n },\n [],\n );\n\n const removeElement = useCallback((id: TreeNodeId): void => {\n dispatch({ type: \"REMOVE_NODE\", id });\n }, []);\n\n const getAllElements = useCallback(() => {\n return tree;\n }, [tree]);\n\n const printTree = useCallback(\n (categories: string[]): string => {\n const categoriesSet = new Set(categories);\n\n let output = \"\";\n tree.forEach((node, index) => {\n // if the node does not have any of the desired categories, continue to the next node\n if (!setsHaveIntersection(categoriesSet, node.categories)) {\n return;\n }\n\n // add a new line before each node except the first one\n if (index !== 0) {\n output += \"\\n\";\n }\n\n output += printNode(\n node,\n `${treeIndentationRepresentation(index, 0)}. `,\n );\n });\n return output;\n },\n [tree],\n );\n\n return { tree, addElement, printTree, removeElement, getAllElements };\n};\n\nexport default useTree;\n\nfunction setsHaveIntersection<T>(setA: Set<T>, setB: Set<T>): boolean {\n const [smallerSet, largerSet] =\n setA.size <= setB.size ? [setA, setB] : [setB, setA];\n\n for (let item of smallerSet) {\n if (largerSet.has(item)) {\n return true;\n }\n }\n\n return false;\n}\n"],"mappings":";;;;;;AAAA,SAAS,gBAAgB;AACzB,SAAS,aAAa,kBAAkB;AAuCxC,IAAM,aAAa,CAAC,OAAa,OAAyB;AACxD,SAAO,MAAM,OAAO,CAAC,QAAc,SAAS;AAC1C,QAAI,KAAK,OAAO,IAAI;AAClB,YAAM,UAAU,iCAAK,OAAL,EAAW,UAAU,WAAW,KAAK,UAAU,EAAE,EAAE;AACnE,aAAO,KAAK,OAAO;AAAA,IACrB;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP;AAEA,IAAM,UAAU,CACd,OACA,SACA,aACS;AACT,MAAI,CAAC,UAAU;AACb,WAAO,CAAC,GAAG,OAAO,OAAO;AAAA,EAC3B;AACA,SAAO,MAAM,IAAI,CAAC,SAAS;AACzB,QAAI,KAAK,OAAO,UAAU;AACxB,aAAO,iCAAK,OAAL,EAAW,UAAU,CAAC,GAAG,KAAK,UAAU,OAAO,EAAE;AAAA,IAC1D,WAAW,KAAK,SAAS,QAAQ;AAC/B,aAAO,iCAAK,OAAL,EAAW,UAAU,QAAQ,KAAK,UAAU,SAAS,QAAQ,EAAE;AAAA,IACxE;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAEA,IAAM,gCAAgC,CACpC,OACA,gBACW;AACX,MAAI,gBAAgB,GAAG;AACrB,YAAQ,QAAQ,GAAG,SAAS;AAAA,EAC9B,WAAW,gBAAgB,GAAG;AAC5B,WAAO,OAAO,aAAa,KAAK,KAAK;AAAA,EACvC,WAAW,gBAAgB,GAAG;AAC5B,WAAO,OAAO,aAAa,KAAK,KAAK;AAAA,EACvC,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,IAAM,YAAY,CAAC,MAAgB,SAAS,IAAI,cAAc,MAAc;AAC1E,QAAM,SAAS,IAAI,OAAO,CAAC,EAAE,OAAO,WAAW;AAE/C,QAAM,yBAAyB,OAAO,SAAS,OAAO;AACtD,QAAM,wBAAwB,IAAI,OAAO,sBAAsB;AAE/D,QAAM,aAAa,KAAK,MAAM,MAAM,IAAI;AAExC,QAAM,kBAAkB,GAAG,SAAS,SAAS,WAAW,CAAC;AACzD,QAAM,wBAAwB,WAC3B,MAAM,CAAC,EACP,IAAI,CAAC,SAAS,GAAG,wBAAwB,MAAM,EAC/C,KAAK,IAAI;AAEZ,MAAI,SAAS,GAAG;AAAA;AAChB,MAAI,uBAAuB;AACzB,cAAU,GAAG;AAAA;AAAA,EACf;AAEA,QAAM,iBAAiB,IAAI,OAAO,OAAO,MAAM;AAE/C,OAAK,SAAS;AAAA,IACZ,CAAC,OAAO,UACL,UAAU;AAAA,MACT;AAAA,MACA,GAAG,iBAAiB,8BAA8B,OAAO,cAAc,CAAC;AAAA,MACxE,cAAc;AAAA,IAChB;AAAA,EACJ;AACA,SAAO;AACT;AAcA,SAAS,YAAY,OAAa,QAAsB;AACtD,UAAQ,OAAO,MAAM;AAAA,IACnB,KAAK,YAAY;AACf,YAAM,EAAE,OAAO,UAAU,IAAI,UAAU,IAAI;AAC3C,YAAM,UAAoB;AAAA,QACxB,IAAI;AAAA,QACJ;AAAA,QACA,UAAU,CAAC;AAAA,QACX,YAAY,IAAI,IAAI,OAAO,UAAU;AAAA,MACvC;AAEA,UAAI;AACF,eAAO,QAAQ,OAAO,SAAS,QAAQ;AAAA,MACzC,SAAS,OAAP;AACA,gBAAQ,MAAM,mCAAmC,cAAc,OAAO;AACtE,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,KAAK;AACH,aAAO,WAAW,OAAO,OAAO,EAAE;AAAA,IACpC;AACE,aAAO;AAAA,EACX;AACF;AAGA,IAAM,UAAU,MAAqB;AACnC,QAAM,CAAC,MAAM,QAAQ,IAAI,WAAW,aAAa,CAAC,CAAC;AAEnD,QAAM,aAAa;AAAA,IACjB,CAAC,OAAe,YAAsB,aAAkC;AACtE,YAAM,YAAY,SAAS;AAC3B,eAAS;AAAA,QACP,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,IAAI;AAAA,QACJ;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,gBAAgB,YAAY,CAAC,OAAyB;AAC1D,aAAS,EAAE,MAAM,eAAe,GAAG,CAAC;AAAA,EACtC,GAAG,CAAC,CAAC;AAEL,QAAM,iBAAiB,YAAY,MAAM;AACvC,WAAO;AAAA,EACT,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,YAAY;AAAA,IAChB,CAAC,eAAiC;AAChC,YAAM,gBAAgB,IAAI,IAAI,UAAU;AAExC,UAAI,SAAS;AACb,WAAK,QAAQ,CAAC,MAAM,UAAU;AAE5B,YAAI,CAAC,qBAAqB,eAAe,KAAK,UAAU,GAAG;AACzD;AAAA,QACF;AAGA,YAAI,UAAU,GAAG;AACf,oBAAU;AAAA,QACZ;AAEA,kBAAU;AAAA,UACR;AAAA,UACA,GAAG,8BAA8B,OAAO,CAAC;AAAA,QAC3C;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA,IACA,CAAC,IAAI;AAAA,EACP;AAEA,SAAO,EAAE,MAAM,YAAY,WAAW,eAAe,eAAe;AACtE;AAEA,IAAO,mBAAQ;AAEf,SAAS,qBAAwB,MAAc,MAAuB;AACpE,QAAM,CAAC,YAAY,SAAS,IAC1B,KAAK,QAAQ,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI;AAErD,WAAS,QAAQ,YAAY;AAC3B,QAAI,UAAU,IAAI,IAAI,GAAG;AACvB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -2,10 +2,10 @@ import {
|
|
|
2
2
|
CheckIcon,
|
|
3
3
|
CopilotKitIcon,
|
|
4
4
|
ExclamationMarkTriangleIcon
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-7PJKPWMD.mjs";
|
|
6
6
|
import {
|
|
7
7
|
useCopilotContext
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-C7HSVDHD.mjs";
|
|
9
9
|
import {
|
|
10
10
|
useCopilotMessagesContext
|
|
11
11
|
} from "./chunk-DMLQZG75.mjs";
|
|
@@ -14,7 +14,11 @@ import {
|
|
|
14
14
|
import { COPILOTKIT_VERSION } from "@copilotkit/shared";
|
|
15
15
|
import { useEffect, useState } from "react";
|
|
16
16
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
17
|
-
function DeveloperConsoleModal({
|
|
17
|
+
function DeveloperConsoleModal({
|
|
18
|
+
isOpen,
|
|
19
|
+
onClose,
|
|
20
|
+
hasApiKey
|
|
21
|
+
}) {
|
|
18
22
|
const context = useCopilotContext();
|
|
19
23
|
const messagesContext = useCopilotMessagesContext();
|
|
20
24
|
const [activeTab, setActiveTab] = useState("actions");
|
|
@@ -37,9 +41,18 @@ function DeveloperConsoleModal({ isOpen, onClose, hasApiKey }) {
|
|
|
37
41
|
return null;
|
|
38
42
|
const displayContext = hasApiKey ? context : {
|
|
39
43
|
actions: {
|
|
40
|
-
search_web: {
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
search_web: {
|
|
45
|
+
name: "search_web",
|
|
46
|
+
description: "Search the web for information"
|
|
47
|
+
},
|
|
48
|
+
send_email: {
|
|
49
|
+
name: "send_email",
|
|
50
|
+
description: "Send an email to a contact"
|
|
51
|
+
},
|
|
52
|
+
create_document: {
|
|
53
|
+
name: "create_document",
|
|
54
|
+
description: "Create a new document"
|
|
55
|
+
},
|
|
43
56
|
analyze_code: {
|
|
44
57
|
name: "analyze_code",
|
|
45
58
|
description: "Analyze code for issues and improvements"
|
|
@@ -69,7 +82,10 @@ function DeveloperConsoleModal({ isOpen, onClose, hasApiKey }) {
|
|
|
69
82
|
],
|
|
70
83
|
coagentStates: {
|
|
71
84
|
"main-agent": { status: "active", lastUpdate: Date.now() },
|
|
72
|
-
"code-assistant": {
|
|
85
|
+
"code-assistant": {
|
|
86
|
+
status: "active",
|
|
87
|
+
lastUpdate: Date.now() - 15e3
|
|
88
|
+
},
|
|
73
89
|
"search-agent": { status: "idle", lastUpdate: Date.now() - 6e4 }
|
|
74
90
|
},
|
|
75
91
|
getDocumentsContext: () => [
|
|
@@ -99,13 +115,21 @@ function DeveloperConsoleModal({ isOpen, onClose, hasApiKey }) {
|
|
|
99
115
|
role: "assistant",
|
|
100
116
|
content: "I'll help you create a todo list with drag and drop. Let me start by setting up the basic components and then add the drag and drop functionality using React DnD."
|
|
101
117
|
},
|
|
102
|
-
{
|
|
118
|
+
{
|
|
119
|
+
id: "3",
|
|
120
|
+
role: "user",
|
|
121
|
+
content: "Can you also add priority levels and due dates?"
|
|
122
|
+
},
|
|
103
123
|
{
|
|
104
124
|
id: "4",
|
|
105
125
|
role: "assistant",
|
|
106
126
|
content: "Absolutely! I'll enhance the todo items with priority levels (high, medium, low) and due date functionality. This will make your todo list much more powerful for task management."
|
|
107
127
|
},
|
|
108
|
-
{
|
|
128
|
+
{
|
|
129
|
+
id: "5",
|
|
130
|
+
role: "user",
|
|
131
|
+
content: "Perfect! How about adding categories or tags?"
|
|
132
|
+
}
|
|
109
133
|
]
|
|
110
134
|
};
|
|
111
135
|
return /* @__PURE__ */ jsx(
|
|
@@ -222,14 +246,26 @@ function DeveloperConsoleModal({ isOpen, onClose, hasApiKey }) {
|
|
|
222
246
|
opacity: !hasApiKey ? 0.9 : 1
|
|
223
247
|
},
|
|
224
248
|
children: [
|
|
225
|
-
{
|
|
226
|
-
|
|
249
|
+
{
|
|
250
|
+
id: "actions",
|
|
251
|
+
label: "Actions",
|
|
252
|
+
count: Object.keys(displayContext.actions).length
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
id: "readables",
|
|
256
|
+
label: "Readables",
|
|
257
|
+
count: displayContext.getAllContext().length
|
|
258
|
+
},
|
|
227
259
|
{
|
|
228
260
|
id: "agent",
|
|
229
261
|
label: "Agent Status",
|
|
230
262
|
count: Object.keys(displayContext.coagentStates).length
|
|
231
263
|
},
|
|
232
|
-
{
|
|
264
|
+
{
|
|
265
|
+
id: "messages",
|
|
266
|
+
label: "Messages",
|
|
267
|
+
count: displayMessagesContext.messages.length
|
|
268
|
+
},
|
|
233
269
|
{
|
|
234
270
|
id: "context",
|
|
235
271
|
label: "Context",
|
|
@@ -455,11 +491,35 @@ function ActionsTab({ context }) {
|
|
|
455
491
|
children: /* @__PURE__ */ jsxs(
|
|
456
492
|
"div",
|
|
457
493
|
{
|
|
458
|
-
style: {
|
|
494
|
+
style: {
|
|
495
|
+
display: "flex",
|
|
496
|
+
alignItems: "flex-start",
|
|
497
|
+
justifyContent: "space-between"
|
|
498
|
+
},
|
|
459
499
|
children: [
|
|
460
500
|
/* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
|
|
461
|
-
/* @__PURE__ */ jsx(
|
|
462
|
-
|
|
501
|
+
/* @__PURE__ */ jsx(
|
|
502
|
+
"h3",
|
|
503
|
+
{
|
|
504
|
+
style: {
|
|
505
|
+
fontWeight: "600",
|
|
506
|
+
color: "#1f2937",
|
|
507
|
+
margin: "0 0 4px 0"
|
|
508
|
+
},
|
|
509
|
+
children: action.name
|
|
510
|
+
}
|
|
511
|
+
),
|
|
512
|
+
action.description && /* @__PURE__ */ jsx(
|
|
513
|
+
"p",
|
|
514
|
+
{
|
|
515
|
+
style: {
|
|
516
|
+
fontSize: "14px",
|
|
517
|
+
color: "#4b5563",
|
|
518
|
+
margin: "0 0 12px 0"
|
|
519
|
+
},
|
|
520
|
+
children: action.description
|
|
521
|
+
}
|
|
522
|
+
),
|
|
463
523
|
action.parameters && action.parameters.length > 0 && /* @__PURE__ */ jsxs("div", { style: { marginTop: "12px" }, children: [
|
|
464
524
|
/* @__PURE__ */ jsx(
|
|
465
525
|
"p",
|
|
@@ -474,15 +534,56 @@ function ActionsTab({ context }) {
|
|
|
474
534
|
children: "Parameters:"
|
|
475
535
|
}
|
|
476
536
|
),
|
|
477
|
-
/* @__PURE__ */ jsx(
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
537
|
+
/* @__PURE__ */ jsx(
|
|
538
|
+
"div",
|
|
539
|
+
{
|
|
540
|
+
style: {
|
|
541
|
+
display: "flex",
|
|
542
|
+
flexDirection: "column",
|
|
543
|
+
gap: "4px"
|
|
544
|
+
},
|
|
545
|
+
children: action.parameters.map(
|
|
546
|
+
(param, pIndex) => /* @__PURE__ */ jsxs("div", { style: { fontSize: "14px" }, children: [
|
|
547
|
+
/* @__PURE__ */ jsx(
|
|
548
|
+
"span",
|
|
549
|
+
{
|
|
550
|
+
style: {
|
|
551
|
+
fontFamily: "monospace",
|
|
552
|
+
color: "#374151"
|
|
553
|
+
},
|
|
554
|
+
children: param.name
|
|
555
|
+
}
|
|
556
|
+
),
|
|
557
|
+
param.required && /* @__PURE__ */ jsx(
|
|
558
|
+
"span",
|
|
559
|
+
{
|
|
560
|
+
style: {
|
|
561
|
+
marginLeft: "4px",
|
|
562
|
+
fontSize: "12px",
|
|
563
|
+
color: "#ef4444"
|
|
564
|
+
},
|
|
565
|
+
children: "*required"
|
|
566
|
+
}
|
|
567
|
+
),
|
|
568
|
+
param.type && /* @__PURE__ */ jsxs(
|
|
569
|
+
"span",
|
|
570
|
+
{
|
|
571
|
+
style: {
|
|
572
|
+
marginLeft: "8px",
|
|
573
|
+
fontSize: "12px",
|
|
574
|
+
color: "#6b7280"
|
|
575
|
+
},
|
|
576
|
+
children: [
|
|
577
|
+
"(",
|
|
578
|
+
param.type,
|
|
579
|
+
")"
|
|
580
|
+
]
|
|
581
|
+
}
|
|
582
|
+
)
|
|
583
|
+
] }, pIndex)
|
|
584
|
+
)
|
|
585
|
+
}
|
|
586
|
+
)
|
|
486
587
|
] })
|
|
487
588
|
] }),
|
|
488
589
|
/* @__PURE__ */ jsx("div", { style: { marginLeft: "16px" }, children: action.status === "available" ? /* @__PURE__ */ jsx(CheckIcon, {}) : /* @__PURE__ */ jsx(ExclamationMarkTriangleIcon, {}) })
|
|
@@ -514,10 +615,34 @@ function ReadablesTab({ context }) {
|
|
|
514
615
|
children: /* @__PURE__ */ jsx(
|
|
515
616
|
"div",
|
|
516
617
|
{
|
|
517
|
-
style: {
|
|
618
|
+
style: {
|
|
619
|
+
display: "flex",
|
|
620
|
+
alignItems: "flex-start",
|
|
621
|
+
justifyContent: "space-between"
|
|
622
|
+
},
|
|
518
623
|
children: /* @__PURE__ */ jsxs("div", { style: { flex: 1 }, children: [
|
|
519
|
-
/* @__PURE__ */ jsx(
|
|
520
|
-
|
|
624
|
+
/* @__PURE__ */ jsx(
|
|
625
|
+
"h3",
|
|
626
|
+
{
|
|
627
|
+
style: {
|
|
628
|
+
fontWeight: "600",
|
|
629
|
+
color: "#1f2937",
|
|
630
|
+
margin: "0 0 4px 0"
|
|
631
|
+
},
|
|
632
|
+
children: readable.name || `Readable ${index + 1}`
|
|
633
|
+
}
|
|
634
|
+
),
|
|
635
|
+
readable.description && /* @__PURE__ */ jsx(
|
|
636
|
+
"p",
|
|
637
|
+
{
|
|
638
|
+
style: {
|
|
639
|
+
fontSize: "14px",
|
|
640
|
+
color: "#4b5563",
|
|
641
|
+
margin: "0 0 12px 0"
|
|
642
|
+
},
|
|
643
|
+
children: readable.description
|
|
644
|
+
}
|
|
645
|
+
),
|
|
521
646
|
readable.value && /* @__PURE__ */ jsx(
|
|
522
647
|
"pre",
|
|
523
648
|
{
|
|
@@ -570,7 +695,18 @@ function AgentStatusTab({ context }) {
|
|
|
570
695
|
marginBottom: "16px"
|
|
571
696
|
},
|
|
572
697
|
children: [
|
|
573
|
-
/* @__PURE__ */ jsx(
|
|
698
|
+
/* @__PURE__ */ jsx(
|
|
699
|
+
"h3",
|
|
700
|
+
{
|
|
701
|
+
style: {
|
|
702
|
+
fontWeight: "600",
|
|
703
|
+
fontSize: "18px",
|
|
704
|
+
color: "#1f2937",
|
|
705
|
+
margin: 0
|
|
706
|
+
},
|
|
707
|
+
children: agentName
|
|
708
|
+
}
|
|
709
|
+
),
|
|
574
710
|
/* @__PURE__ */ jsx(
|
|
575
711
|
"span",
|
|
576
712
|
{
|
|
@@ -661,7 +797,9 @@ function AgentStatusTab({ context }) {
|
|
|
661
797
|
agentName
|
|
662
798
|
)) });
|
|
663
799
|
}
|
|
664
|
-
function MessagesTab({
|
|
800
|
+
function MessagesTab({
|
|
801
|
+
messagesContext
|
|
802
|
+
}) {
|
|
665
803
|
const messages = messagesContext.messages || [];
|
|
666
804
|
if (messages.length === 0) {
|
|
667
805
|
return /* @__PURE__ */ jsxs("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
|
|
@@ -707,7 +845,17 @@ function MessagesTab({ messagesContext }) {
|
|
|
707
845
|
]
|
|
708
846
|
}
|
|
709
847
|
),
|
|
710
|
-
/* @__PURE__ */ jsx(
|
|
848
|
+
/* @__PURE__ */ jsx(
|
|
849
|
+
"div",
|
|
850
|
+
{
|
|
851
|
+
style: {
|
|
852
|
+
fontSize: "14px",
|
|
853
|
+
color: "#1f2937",
|
|
854
|
+
whiteSpace: "pre-wrap"
|
|
855
|
+
},
|
|
856
|
+
children: message.content || ""
|
|
857
|
+
}
|
|
858
|
+
)
|
|
711
859
|
]
|
|
712
860
|
},
|
|
713
861
|
index
|
|
@@ -732,7 +880,13 @@ function ContextTab({ context }) {
|
|
|
732
880
|
border: "1px solid #e5e7eb"
|
|
733
881
|
},
|
|
734
882
|
children: [
|
|
735
|
-
/* @__PURE__ */ jsx(
|
|
883
|
+
/* @__PURE__ */ jsx(
|
|
884
|
+
"h3",
|
|
885
|
+
{
|
|
886
|
+
style: { fontWeight: "600", color: "#1f2937", margin: "0 0 8px 0" },
|
|
887
|
+
children: doc.name || `Document ${index + 1}`
|
|
888
|
+
}
|
|
889
|
+
),
|
|
736
890
|
doc.content && /* @__PURE__ */ jsx(
|
|
737
891
|
"pre",
|
|
738
892
|
{
|
|
@@ -756,4 +910,4 @@ function ContextTab({ context }) {
|
|
|
756
910
|
export {
|
|
757
911
|
DeveloperConsoleModal
|
|
758
912
|
};
|
|
759
|
-
//# sourceMappingURL=chunk-
|
|
913
|
+
//# sourceMappingURL=chunk-SBRCWA4S.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/dev-console/developer-console-modal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCopilotContext } from \"../../context/copilot-context\";\nimport { useCopilotMessagesContext } from \"../../context/copilot-messages-context\";\nimport { COPILOTKIT_VERSION } from \"@copilotkit/shared\";\nimport { useEffect, useState } from \"react\";\nimport {\n CheckIcon,\n CopilotKitIcon,\n ExclamationMarkTriangleIcon,\n} from \"./icons\";\n\n// Type definitions for the developer console\ninterface ActionParameter {\n name: string;\n required?: boolean;\n type?: string;\n}\n\ninterface Action {\n name: string;\n description?: string;\n parameters?: ActionParameter[];\n status?: string;\n}\n\ninterface Readable {\n name?: string;\n description?: string;\n value?: any;\n content?: string;\n metadata?: Record<string, any>;\n}\n\ninterface AgentState {\n status?: string;\n state?: any;\n running?: boolean;\n lastUpdate?: number;\n}\n\ninterface Message {\n id?: string;\n role?: \"user\" | \"assistant\" | \"system\";\n content?: string;\n timestamp?: number;\n [key: string]: any; // Allow additional properties from CopilotKit\n}\n\ninterface Document {\n name?: string;\n content?: string;\n metadata?: Record<string, any>;\n}\n\ninterface DisplayContext {\n actions: Record<string, Action>;\n getAllContext: () => Readable[];\n coagentStates: Record<string, AgentState>;\n getDocumentsContext: (args?: any[]) => Document[];\n}\n\ninterface MessagesContext {\n messages: Message[];\n}\n\ninterface DeveloperConsoleModalProps {\n isOpen: boolean;\n onClose: () => void;\n hasApiKey: boolean;\n}\n\nexport function DeveloperConsoleModal({\n isOpen,\n onClose,\n hasApiKey,\n}: DeveloperConsoleModalProps) {\n const context = useCopilotContext();\n const messagesContext = useCopilotMessagesContext();\n const [activeTab, setActiveTab] = useState(\"actions\");\n\n // Handle escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"hidden\";\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"unset\";\n };\n }, [isOpen, onClose]);\n\n if (!isOpen) return null;\n\n // Create mock data for preview when no API key\n const displayContext: DisplayContext = hasApiKey\n ? (context as DisplayContext)\n : {\n actions: {\n search_web: {\n name: \"search_web\",\n description: \"Search the web for information\",\n },\n send_email: {\n name: \"send_email\",\n description: \"Send an email to a contact\",\n },\n create_document: {\n name: \"create_document\",\n description: \"Create a new document\",\n },\n analyze_code: {\n name: \"analyze_code\",\n description: \"Analyze code for issues and improvements\",\n },\n generate_tests: {\n name: \"generate_tests\",\n description: \"Generate unit tests for functions\",\n },\n },\n getAllContext: () => [\n {\n content:\n \"User preferences: dark mode enabled, TypeScript preferred\",\n metadata: { source: \"settings\" },\n },\n {\n content:\n \"Current project: Building a React application with CopilotKit\",\n metadata: { source: \"project\" },\n },\n {\n content: \"Recent activity: Implemented authentication system\",\n metadata: { source: \"activity\" },\n },\n {\n content: \"Development environment: VS Code, Node.js 18, React 18\",\n metadata: { source: \"environment\" },\n },\n ],\n coagentStates: {\n \"main-agent\": { status: \"active\", lastUpdate: Date.now() },\n \"code-assistant\": {\n status: \"active\",\n lastUpdate: Date.now() - 15000,\n },\n \"search-agent\": { status: \"idle\", lastUpdate: Date.now() - 60000 },\n },\n getDocumentsContext: () => [\n {\n content: \"README.md: Project setup and installation instructions\",\n metadata: { type: \"documentation\" },\n },\n {\n content: \"API Documentation: CopilotKit integration guide\",\n metadata: { type: \"documentation\" },\n },\n {\n content: \"package.json: Project dependencies and scripts\",\n metadata: { type: \"configuration\" },\n },\n ],\n };\n\n const displayMessagesContext: MessagesContext = hasApiKey\n ? (messagesContext as MessagesContext)\n : {\n messages: [\n {\n id: \"1\",\n role: \"user\",\n content:\n \"Help me implement a todo list with drag and drop functionality\",\n },\n {\n id: \"2\",\n role: \"assistant\",\n content:\n \"I'll help you create a todo list with drag and drop. Let me start by setting up the basic components and then add the drag and drop functionality using React DnD.\",\n },\n {\n id: \"3\",\n role: \"user\",\n content: \"Can you also add priority levels and due dates?\",\n },\n {\n id: \"4\",\n role: \"assistant\",\n content:\n \"Absolutely! I'll enhance the todo items with priority levels (high, medium, low) and due date functionality. This will make your todo list much more powerful for task management.\",\n },\n {\n id: \"5\",\n role: \"user\",\n content: \"Perfect! How about adding categories or tags?\",\n },\n ],\n };\n\n return (\n <div\n style={{\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 9999,\n backgroundColor: \"rgba(0, 0, 0, 0.3)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"16px\",\n }}\n onClick={onClose}\n >\n <div\n style={{\n width: \"1152px\",\n maxWidth: \"95vw\",\n height: \"80vh\",\n backgroundColor: \"white\",\n borderRadius: \"12px\",\n boxShadow: \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\",\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n position: \"relative\",\n }}\n onClick={(e) => e.stopPropagation()}\n >\n {/* Header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"24px\",\n borderBottom: \"1px solid #e5e7eb\",\n minHeight: \"73px\",\n flexShrink: 0,\n filter: !hasApiKey ? \"blur(0.3px)\" : \"none\",\n opacity: !hasApiKey ? 0.95 : 1,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}>\n <CopilotKitIcon />\n <h1\n style={{\n fontWeight: \"bold\",\n fontSize: \"20px\",\n color: \"#1f2937\",\n margin: 0,\n }}\n >\n Inspector\n </h1>\n <span\n style={{\n fontSize: \"14px\",\n color: \"#6b7280\",\n backgroundColor: \"#f3f4f6\",\n padding: \"4px 8px\",\n borderRadius: \"4px\",\n }}\n >\n v{COPILOTKIT_VERSION}\n </span>\n </div>\n <button\n onClick={onClose}\n style={{\n color: \"#9ca3af\",\n fontSize: \"24px\",\n fontWeight: \"300\",\n border: \"none\",\n background: \"none\",\n cursor: \"pointer\",\n padding: \"4px\",\n }}\n onMouseEnter={(e) => (e.currentTarget.style.color = \"#4b5563\")}\n onMouseLeave={(e) => (e.currentTarget.style.color = \"#9ca3af\")}\n >\n ×\n </button>\n </div>\n\n {/* Tab Navigation */}\n <div\n style={{\n display: \"flex\",\n borderBottom: \"1px solid #e5e7eb\",\n backgroundColor: \"#f9fafb\",\n minHeight: \"50px\",\n flexShrink: 0,\n filter: !hasApiKey ? \"blur(0.3px)\" : \"none\",\n opacity: !hasApiKey ? 0.9 : 1,\n }}\n >\n {[\n {\n id: \"actions\",\n label: \"Actions\",\n count: Object.keys(displayContext.actions).length,\n },\n {\n id: \"readables\",\n label: \"Readables\",\n count: displayContext.getAllContext().length,\n },\n {\n id: \"agent\",\n label: \"Agent Status\",\n count: Object.keys(displayContext.coagentStates).length,\n },\n {\n id: \"messages\",\n label: \"Messages\",\n count: displayMessagesContext.messages.length,\n },\n {\n id: \"context\",\n label: \"Context\",\n count: displayContext.getDocumentsContext([]).length,\n },\n ].map((tab) => (\n <button\n key={tab.id}\n onClick={() => setActiveTab(tab.id)}\n style={{\n padding: \"12px 24px\",\n fontSize: \"14px\",\n fontWeight: \"500\",\n border: \"none\",\n cursor: \"pointer\",\n backgroundColor: activeTab === tab.id ? \"white\" : \"transparent\",\n color: activeTab === tab.id ? \"#2563eb\" : \"#6b7280\",\n borderBottom:\n activeTab === tab.id ? \"2px solid #2563eb\" : \"none\",\n transition: \"all 0.2s\",\n }}\n onMouseEnter={(e) => {\n if (activeTab !== tab.id) {\n e.currentTarget.style.color = \"#1f2937\";\n e.currentTarget.style.backgroundColor = \"#f3f4f6\";\n }\n }}\n onMouseLeave={(e) => {\n if (activeTab !== tab.id) {\n e.currentTarget.style.color = \"#6b7280\";\n e.currentTarget.style.backgroundColor = \"transparent\";\n }\n }}\n >\n {tab.label}\n {tab.count > 0 && (\n <span\n style={{\n marginLeft: \"8px\",\n backgroundColor: \"#e5e7eb\",\n color: \"#374151\",\n padding: \"2px 8px\",\n borderRadius: \"9999px\",\n fontSize: \"12px\",\n }}\n >\n {tab.count}\n </span>\n )}\n </button>\n ))}\n </div>\n\n {/* Content */}\n <div\n style={{\n height: \"calc(100% - 142px)\",\n overflow: \"auto\",\n padding: \"24px\",\n backgroundColor: \"#f9fafb\",\n filter: !hasApiKey ? \"blur(0.3px)\" : \"none\",\n opacity: !hasApiKey ? 0.85 : 1,\n }}\n >\n {activeTab === \"actions\" && <ActionsTab context={displayContext} />}\n {activeTab === \"readables\" && (\n <ReadablesTab context={displayContext} />\n )}\n {activeTab === \"agent\" && <AgentStatusTab context={displayContext} />}\n {activeTab === \"messages\" && (\n <MessagesTab messagesContext={displayMessagesContext} />\n )}\n {activeTab === \"context\" && <ContextTab context={displayContext} />}\n </div>\n\n {/* Footer */}\n <div\n style={{\n padding: \"16px 24px\",\n borderTop: \"1px solid #e5e7eb\",\n backgroundColor: \"white\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n minHeight: \"57px\",\n flexShrink: 0,\n filter: !hasApiKey ? \"blur(0.3px)\" : \"none\",\n opacity: !hasApiKey ? 0.9 : 1,\n }}\n >\n <div style={{ fontSize: \"14px\", color: \"#6b7280\" }}>\n <a\n href=\"https://github.com/CopilotKit/CopilotKit/issues\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{ color: \"#2563eb\", textDecoration: \"none\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.textDecoration = \"underline\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.textDecoration = \"none\")\n }\n >\n Report an issue\n </a>\n </div>\n <div style={{ fontSize: \"14px\", color: \"#6b7280\" }}>\n <a\n href=\"https://mcp.copilotkit.ai/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{ color: \"#2563eb\", textDecoration: \"none\" }}\n onMouseEnter={(e) =>\n (e.currentTarget.style.textDecoration = \"underline\")\n }\n onMouseLeave={(e) =>\n (e.currentTarget.style.textDecoration = \"none\")\n }\n >\n Add MCP Server →\n </a>\n </div>\n </div>\n\n {/* Enhanced CTA Overlay */}\n {!hasApiKey && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(255, 255, 255, 0.2)\",\n backdropFilter: \"blur(2px)\",\n WebkitBackdropFilter: \"blur(2px)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: \"12px\",\n zIndex: 10,\n }}\n onClick={(e) => e.stopPropagation()}\n >\n <button\n onClick={() =>\n window.open(\"https://cloud.copilotkit.ai/sign-in\", \"_blank\")\n }\n style={{\n // Following button system specifications\n height: \"48px\",\n padding: \"12px 24px\",\n backgroundColor: \"#030507\", // textPrimary token\n color: \"#FFFFFF\",\n borderRadius: \"12px\", // Medium radius token\n border: \"none\",\n cursor: \"pointer\",\n fontSize: \"14px\", // Medium Semi Bold typography\n fontWeight: \"600\",\n fontFamily:\n \"'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif\",\n lineHeight: \"22px\",\n boxShadow:\n \"0 4px 16px rgba(3, 5, 7, 0.2), 0 1px 3px rgba(3, 5, 7, 0.1)\",\n transition: \"all 200ms ease\", // 200ms ease as per specs\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"8px\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.5px\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = \"#575758\"; // textSecondary token for hover\n e.currentTarget.style.transform = \"translateY(-1px)\";\n e.currentTarget.style.boxShadow =\n \"0 6px 20px rgba(3, 5, 7, 0.25), 0 2px 4px rgba(3, 5, 7, 0.15)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"#030507\";\n e.currentTarget.style.transform = \"translateY(0)\";\n e.currentTarget.style.boxShadow =\n \"0 4px 16px rgba(3, 5, 7, 0.2), 0 1px 3px rgba(3, 5, 7, 0.1)\";\n }}\n onMouseDown={(e) => {\n e.currentTarget.style.backgroundColor = \"#858589\"; // textDisabled token for pressed\n e.currentTarget.style.transform = \"translateY(0)\";\n }}\n onMouseUp={(e) => {\n e.currentTarget.style.backgroundColor = \"#575758\";\n e.currentTarget.style.transform = \"translateY(-1px)\";\n }}\n onFocus={(e) => {\n e.currentTarget.style.outline = \"2px solid #BEC9FF\";\n e.currentTarget.style.outlineOffset = \"2px\";\n }}\n onBlur={(e) => {\n e.currentTarget.style.outline = \"none\";\n }}\n >\n Get License Key\n <span style={{ fontSize: \"16px\", marginLeft: \"-4px\" }}>→</span>\n </button>\n </div>\n )}\n </div>\n </div>\n );\n}\n\n// Tab Components\nfunction ActionsTab({ context }: { context: DisplayContext }) {\n const actions = Object.values(context.actions);\n\n if (actions.length === 0) {\n return (\n <div style={{ textAlign: \"center\", padding: \"48px 0\", color: \"#6b7280\" }}>\n <p style={{ fontSize: \"18px\", margin: \"0 0 8px 0\" }}>\n No actions available\n </p>\n <p style={{ fontSize: \"14px\", margin: 0 }}>\n Actions will appear here when registered\n </p>\n </div>\n );\n }\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"16px\" }}>\n {actions.map((action: Action, index: number) => (\n <div\n key={index}\n style={{\n backgroundColor: \"white\",\n padding: \"16px\",\n borderRadius: \"8px\",\n boxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1)\",\n border: \"1px solid #e5e7eb\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n }}\n >\n <div style={{ flex: 1 }}>\n <h3\n style={{\n fontWeight: \"600\",\n color: \"#1f2937\",\n margin: \"0 0 4px 0\",\n }}\n >\n {action.name}\n </h3>\n {action.description && (\n <p\n style={{\n fontSize: \"14px\",\n color: \"#4b5563\",\n margin: \"0 0 12px 0\",\n }}\n >\n {action.description}\n </p>\n )}\n {action.parameters && action.parameters.length > 0 && (\n <div style={{ marginTop: \"12px\" }}>\n <p\n style={{\n fontSize: \"12px\",\n fontWeight: \"500\",\n color: \"#6b7280\",\n textTransform: \"uppercase\",\n margin: \"0 0 4px 0\",\n }}\n >\n Parameters:\n </p>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"4px\",\n }}\n >\n {action.parameters.map(\n (param: ActionParameter, pIndex: number) => (\n <div key={pIndex} style={{ fontSize: \"14px\" }}>\n <span\n style={{\n fontFamily: \"monospace\",\n color: \"#374151\",\n }}\n >\n {param.name}\n </span>\n {param.required && (\n <span\n style={{\n marginLeft: \"4px\",\n fontSize: \"12px\",\n color: \"#ef4444\",\n }}\n >\n *required\n </span>\n )}\n {param.type && (\n <span\n style={{\n marginLeft: \"8px\",\n fontSize: \"12px\",\n color: \"#6b7280\",\n }}\n >\n ({param.type})\n </span>\n )}\n </div>\n ),\n )}\n </div>\n </div>\n )}\n </div>\n <div style={{ marginLeft: \"16px\" }}>\n {action.status === \"available\" ? (\n <CheckIcon />\n ) : (\n <ExclamationMarkTriangleIcon />\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nfunction ReadablesTab({ context }: { context: DisplayContext }) {\n const readables = context.getAllContext();\n\n if (readables.length === 0) {\n return (\n <div style={{ textAlign: \"center\", padding: \"48px 0\", color: \"#6b7280\" }}>\n <p style={{ fontSize: \"18px\", margin: \"0 0 8px 0\" }}>\n No readable context available\n </p>\n <p style={{ fontSize: \"14px\", margin: 0 }}>\n Readable context will appear here when provided\n </p>\n </div>\n );\n }\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"16px\" }}>\n {readables.map((readable: Readable, index: number) => (\n <div\n key={index}\n style={{\n backgroundColor: \"white\",\n padding: \"16px\",\n borderRadius: \"8px\",\n boxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1)\",\n border: \"1px solid #e5e7eb\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n }}\n >\n <div style={{ flex: 1 }}>\n <h3\n style={{\n fontWeight: \"600\",\n color: \"#1f2937\",\n margin: \"0 0 4px 0\",\n }}\n >\n {readable.name || `Readable ${index + 1}`}\n </h3>\n {readable.description && (\n <p\n style={{\n fontSize: \"14px\",\n color: \"#4b5563\",\n margin: \"0 0 12px 0\",\n }}\n >\n {readable.description}\n </p>\n )}\n {readable.value && (\n <pre\n style={{\n marginTop: \"12px\",\n padding: \"8px\",\n backgroundColor: \"#f9fafb\",\n borderRadius: \"4px\",\n fontSize: \"12px\",\n overflowX: \"auto\",\n margin: \"12px 0 0 0\",\n }}\n >\n {JSON.stringify(readable.value, null, 2)}\n </pre>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nfunction AgentStatusTab({ context }: { context: DisplayContext }) {\n const agentStates = context.coagentStates || {};\n const agentStateEntries = Object.entries(agentStates);\n\n if (agentStateEntries.length === 0) {\n return (\n <div style={{ textAlign: \"center\", padding: \"48px 0\", color: \"#6b7280\" }}>\n <p style={{ fontSize: \"18px\", margin: \"0 0 8px 0\" }}>\n No agent states available\n </p>\n <p style={{ fontSize: \"14px\", margin: 0 }}>\n Agent states will appear here when agents are active\n </p>\n </div>\n );\n }\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"24px\" }}>\n {agentStateEntries.map(([agentName, state]: [string, AgentState]) => (\n <div\n key={agentName}\n style={{\n backgroundColor: \"white\",\n padding: \"24px\",\n borderRadius: \"8px\",\n boxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1)\",\n border: \"1px solid #e5e7eb\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"16px\",\n }}\n >\n <h3\n style={{\n fontWeight: \"600\",\n fontSize: \"18px\",\n color: \"#1f2937\",\n margin: 0,\n }}\n >\n {agentName}\n </h3>\n <span\n style={{\n padding: \"4px 12px\",\n borderRadius: \"9999px\",\n fontSize: \"12px\",\n fontWeight: \"500\",\n backgroundColor:\n state.status === \"running\"\n ? \"#dcfce7\"\n : state.status === \"complete\"\n ? \"#dbeafe\"\n : \"#f3f4f6\",\n color:\n state.status === \"running\"\n ? \"#166534\"\n : state.status === \"complete\"\n ? \"#1e40af\"\n : \"#1f2937\",\n }}\n >\n {state.status || \"idle\"}\n </span>\n </div>\n\n {state.state && (\n <div style={{ marginBottom: \"12px\" }}>\n <p\n style={{\n fontSize: \"12px\",\n fontWeight: \"500\",\n color: \"#6b7280\",\n textTransform: \"uppercase\",\n margin: \"0 0 4px 0\",\n }}\n >\n Current State:\n </p>\n <pre\n style={{\n padding: \"12px\",\n backgroundColor: \"#f9fafb\",\n borderRadius: \"4px\",\n fontSize: \"12px\",\n overflowX: \"auto\",\n margin: 0,\n }}\n >\n {JSON.stringify(state.state, null, 2)}\n </pre>\n </div>\n )}\n\n {state.running && (\n <div\n style={{\n marginTop: \"16px\",\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"14px\",\n color: \"#4b5563\",\n }}\n >\n <div style={{ marginRight: \"8px\" }}>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n style={{ animation: \"spin 1s linear infinite\" }}\n >\n <style>{`@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }`}</style>\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n fill=\"none\"\n stroke=\"#4b5563\"\n strokeWidth=\"2\"\n strokeDasharray=\"9 3\"\n />\n </svg>\n </div>\n <span>Agent is currently running...</span>\n </div>\n )}\n </div>\n ))}\n </div>\n );\n}\n\nfunction MessagesTab({\n messagesContext,\n}: {\n messagesContext: MessagesContext;\n}) {\n const messages = messagesContext.messages || [];\n\n if (messages.length === 0) {\n return (\n <div style={{ textAlign: \"center\", padding: \"48px 0\", color: \"#6b7280\" }}>\n <p style={{ fontSize: \"18px\", margin: \"0 0 8px 0\" }}>No messages yet</p>\n <p style={{ fontSize: \"14px\", margin: 0 }}>\n Messages will appear here as the conversation progresses\n </p>\n </div>\n );\n }\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"16px\" }}>\n {messages.map((message: Message, index: number) => (\n <div\n key={index}\n style={{\n padding: \"16px\",\n borderRadius: \"8px\",\n backgroundColor:\n message.role === \"user\"\n ? \"#eff6ff\"\n : message.role === \"assistant\"\n ? \"#f9fafb\"\n : \"#fefce8\",\n border: `1px solid ${message.role === \"user\" ? \"#c7d2fe\" : message.role === \"assistant\" ? \"#e5e7eb\" : \"#fde047\"}`,\n marginLeft: message.role === \"user\" ? \"48px\" : \"0\",\n marginRight: message.role === \"assistant\" ? \"48px\" : \"0\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n marginBottom: \"8px\",\n }}\n >\n <span\n style={{\n fontWeight: \"500\",\n fontSize: \"14px\",\n color: \"#374151\",\n textTransform: \"capitalize\",\n }}\n >\n {message.role || \"system\"}\n </span>\n {message.timestamp && (\n <span style={{ fontSize: \"12px\", color: \"#6b7280\" }}>\n {new Date(message.timestamp).toLocaleTimeString()}\n </span>\n )}\n </div>\n <div\n style={{\n fontSize: \"14px\",\n color: \"#1f2937\",\n whiteSpace: \"pre-wrap\",\n }}\n >\n {message.content || \"\"}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nfunction ContextTab({ context }: { context: DisplayContext }) {\n const documents = context.getDocumentsContext([]);\n\n if (documents.length === 0) {\n return (\n <div style={{ textAlign: \"center\", padding: \"48px 0\", color: \"#6b7280\" }}>\n <p style={{ fontSize: \"18px\", margin: \"0 0 8px 0\" }}>\n No document context available\n </p>\n <p style={{ fontSize: \"14px\", margin: 0 }}>\n Document context will appear here when provided\n </p>\n </div>\n );\n }\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"16px\" }}>\n {documents.map((doc: Document, index: number) => (\n <div\n key={index}\n style={{\n backgroundColor: \"white\",\n padding: \"16px\",\n borderRadius: \"8px\",\n boxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1)\",\n border: \"1px solid #e5e7eb\",\n }}\n >\n <h3\n style={{ fontWeight: \"600\", color: \"#1f2937\", margin: \"0 0 8px 0\" }}\n >\n {doc.name || `Document ${index + 1}`}\n </h3>\n {doc.content && (\n <pre\n style={{\n padding: \"12px\",\n backgroundColor: \"#f9fafb\",\n borderRadius: \"4px\",\n fontSize: \"12px\",\n overflowX: \"auto\",\n margin: 0,\n }}\n >\n {doc.content}\n </pre>\n )}\n </div>\n ))}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
// src/context/threads-context.tsx
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
createContext,
|
|
4
|
+
useContext,
|
|
5
|
+
useState
|
|
6
|
+
} from "react";
|
|
3
7
|
import { randomUUID } from "@copilotkit/shared";
|
|
4
8
|
import { jsx } from "react/jsx-runtime";
|
|
5
|
-
var ThreadsContext = createContext(
|
|
6
|
-
|
|
9
|
+
var ThreadsContext = createContext(
|
|
10
|
+
void 0
|
|
11
|
+
);
|
|
12
|
+
function ThreadsProvider({
|
|
13
|
+
children,
|
|
14
|
+
threadId: explicitThreadId
|
|
15
|
+
}) {
|
|
7
16
|
const [internalThreadId, setThreadId] = useState(() => randomUUID());
|
|
8
17
|
const threadId = explicitThreadId != null ? explicitThreadId : internalThreadId;
|
|
9
18
|
return /* @__PURE__ */ jsx(
|
|
@@ -30,4 +39,4 @@ export {
|
|
|
30
39
|
ThreadsProvider,
|
|
31
40
|
useThreads
|
|
32
41
|
};
|
|
33
|
-
//# sourceMappingURL=chunk-
|
|
42
|
+
//# sourceMappingURL=chunk-SK2XMJUD.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/context/threads-context.tsx"],"sourcesContent":["import React, {\n createContext,\n useContext,\n useState,\n ReactNode,\n SetStateAction,\n} from \"react\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\nexport interface ThreadsContextValue {\n threadId: string;\n setThreadId: (value: SetStateAction<string>) => void;\n}\n\nconst ThreadsContext = createContext<ThreadsContextValue | undefined>(\n undefined,\n);\n\nexport interface ThreadsProviderProps {\n children: ReactNode;\n threadId?: string;\n}\n\nexport function ThreadsProvider({\n children,\n threadId: explicitThreadId,\n}: ThreadsProviderProps) {\n const [internalThreadId, setThreadId] = useState<string>(() => randomUUID());\n\n const threadId = explicitThreadId ?? internalThreadId;\n\n return (\n <ThreadsContext.Provider\n value={{\n threadId,\n setThreadId,\n }}\n >\n {children}\n </ThreadsContext.Provider>\n );\n}\n\nexport function useThreads() {\n const context = useContext(ThreadsContext);\n if (!context) {\n throw new Error(\"useThreads must be used within ThreadsProvider\");\n }\n return context;\n}\n\nexport { ThreadsContext };\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,kBAAkB;AAyBvB;AAlBJ,IAAM,iBAAiB;AAAA,EACrB;AACF;AAOO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,UAAU;AACZ,GAAyB;AACvB,QAAM,CAAC,kBAAkB,WAAW,IAAI,SAAiB,MAAM,WAAW,CAAC;AAE3E,QAAM,WAAW,8CAAoB;AAErC,SACE;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAEO,SAAS,aAAa;AAC3B,QAAM,UAAU,WAAW,cAAc;AACzC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AACA,SAAO;AACT;","names":[]}
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-ICIK2BSB.mjs";
|
|
4
4
|
import {
|
|
5
5
|
useToast
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZP2IMXFY.mjs";
|
|
7
7
|
import {
|
|
8
8
|
useCopilotContext
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-C7HSVDHD.mjs";
|
|
10
10
|
import {
|
|
11
11
|
CopilotMessagesContext
|
|
12
12
|
} from "./chunk-DMLQZG75.mjs";
|
|
@@ -40,7 +40,9 @@ function useMessagesTap() {
|
|
|
40
40
|
throw new Error("useMessagesTap must be used inside <MessagesTapProvider>");
|
|
41
41
|
return tap;
|
|
42
42
|
}
|
|
43
|
-
function MessagesTapProvider({
|
|
43
|
+
function MessagesTapProvider({
|
|
44
|
+
children
|
|
45
|
+
}) {
|
|
44
46
|
const messagesRef = useRef([]);
|
|
45
47
|
const tapRef = useRef({
|
|
46
48
|
getMessagesFromTap: () => messagesRef.current,
|
|
@@ -93,10 +95,14 @@ function CopilotMessages({ children }) {
|
|
|
93
95
|
const originalError = extensions == null ? void 0 : extensions.originalError;
|
|
94
96
|
if (originalError == null ? void 0 : originalError.stack) {
|
|
95
97
|
if (originalError.stack.includes("CopilotApiDiscoveryError")) {
|
|
96
|
-
return new CopilotKitApiDiscoveryError({
|
|
98
|
+
return new CopilotKitApiDiscoveryError({
|
|
99
|
+
message: originalError.message
|
|
100
|
+
});
|
|
97
101
|
}
|
|
98
102
|
if (originalError.stack.includes("CopilotKitRemoteEndpointDiscoveryError")) {
|
|
99
|
-
return new CopilotKitRemoteEndpointDiscoveryError({
|
|
103
|
+
return new CopilotKitRemoteEndpointDiscoveryError({
|
|
104
|
+
message: originalError.message
|
|
105
|
+
});
|
|
100
106
|
}
|
|
101
107
|
if (originalError.stack.includes("CopilotKitAgentDiscoveryError")) {
|
|
102
108
|
return new CopilotKitAgentDiscoveryError({
|
|
@@ -122,7 +128,10 @@ function CopilotMessages({ children }) {
|
|
|
122
128
|
const visibility = extensions == null ? void 0 : extensions.visibility;
|
|
123
129
|
const isDev = shouldShowDevConsole(showDevConsole);
|
|
124
130
|
if (!isDev) {
|
|
125
|
-
console.error(
|
|
131
|
+
console.error(
|
|
132
|
+
"CopilotKit Error (hidden in production):",
|
|
133
|
+
gqlError.message
|
|
134
|
+
);
|
|
126
135
|
return;
|
|
127
136
|
}
|
|
128
137
|
if (visibility === ErrorVisibility.SILENT) {
|
|
@@ -183,4 +192,4 @@ export {
|
|
|
183
192
|
MessagesTapProvider,
|
|
184
193
|
CopilotMessages
|
|
185
194
|
};
|
|
186
|
-
//# sourceMappingURL=chunk-
|
|
195
|
+
//# sourceMappingURL=chunk-SLM6CLAH.mjs.map
|