@copilotkit/react-core 1.10.0-next.10 → 1.10.0-next.12
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 +15 -0
- package/dist/{chunk-LVWV62JZ.mjs → chunk-2PL3WCKM.mjs} +18 -17
- package/dist/chunk-2PL3WCKM.mjs.map +1 -0
- package/dist/chunk-3BASANUO.mjs +170 -0
- package/dist/chunk-3BASANUO.mjs.map +1 -0
- package/dist/{chunk-L6HQIJ74.mjs → chunk-7TFJCTYY.mjs} +8 -8
- package/dist/{chunk-2TSNHEIS.mjs → chunk-BVRWKRDI.mjs} +5 -5
- package/dist/{chunk-DLEXVOQE.mjs → chunk-GEKWHETN.mjs} +4 -4
- package/dist/{chunk-Q42NJFXR.mjs → chunk-IKWGQG5V.mjs} +4 -4
- package/dist/{chunk-JJDXTTEN.mjs → chunk-K4HXT453.mjs} +2 -2
- package/dist/{chunk-JBLMXZ3O.mjs → chunk-KH27ZS4Y.mjs} +6 -6
- package/dist/{chunk-QGE7U4NV.mjs → chunk-MO2BUFJD.mjs} +2 -2
- package/dist/{chunk-TWYUYC4F.mjs → chunk-MUDXTKXE.mjs} +6 -6
- package/dist/{chunk-COEUPDRL.mjs → chunk-OGXCE54J.mjs} +8 -8
- package/dist/{chunk-X2DNXTME.mjs → chunk-OPRDTF4S.mjs} +4 -4
- package/dist/chunk-PIF5KJYI.mjs +103 -0
- package/dist/chunk-PIF5KJYI.mjs.map +1 -0
- package/dist/{chunk-IHAZJF3V.mjs → chunk-PYPPRFZ6.mjs} +2 -2
- package/dist/{chunk-ADZDXHVC.mjs → chunk-Q573EMPD.mjs} +4 -4
- package/dist/chunk-WSXTUD36.mjs +759 -0
- package/dist/chunk-WSXTUD36.mjs.map +1 -0
- package/dist/components/copilot-provider/copilot-messages.mjs +3 -3
- package/dist/components/copilot-provider/copilotkit.js +1034 -63
- package/dist/components/copilot-provider/copilotkit.js.map +1 -1
- package/dist/components/copilot-provider/copilotkit.mjs +11 -8
- package/dist/components/copilot-provider/index.js +1034 -63
- package/dist/components/copilot-provider/index.js.map +1 -1
- package/dist/components/copilot-provider/index.mjs +11 -8
- package/dist/components/dev-console/console-trigger.d.ts +8 -0
- package/dist/components/dev-console/console-trigger.js +1131 -0
- package/dist/components/dev-console/console-trigger.js.map +1 -0
- package/dist/components/dev-console/console-trigger.mjs +13 -0
- package/dist/components/dev-console/console-trigger.mjs.map +1 -0
- package/dist/components/dev-console/developer-console-modal.d.ts +10 -0
- package/dist/components/dev-console/developer-console-modal.js +977 -0
- package/dist/components/dev-console/developer-console-modal.js.map +1 -0
- package/dist/components/dev-console/developer-console-modal.mjs +12 -0
- package/dist/components/dev-console/developer-console-modal.mjs.map +1 -0
- package/dist/components/dev-console/icons.d.ts +9 -0
- package/dist/components/dev-console/icons.js +131 -0
- package/dist/components/dev-console/icons.js.map +1 -0
- package/dist/components/dev-console/icons.mjs +16 -0
- package/dist/components/dev-console/icons.mjs.map +1 -0
- package/dist/components/error-boundary/error-boundary.mjs +2 -2
- package/dist/components/index.js +1034 -63
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +11 -8
- package/dist/context/index.mjs +4 -4
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +32 -29
- package/dist/hooks/use-chat.mjs +4 -4
- package/dist/hooks/use-coagent-state-render.mjs +2 -2
- package/dist/hooks/use-coagent.js.map +1 -1
- package/dist/hooks/use-coagent.mjs +16 -13
- package/dist/hooks/use-copilot-action.mjs +2 -2
- package/dist/hooks/use-copilot-authenticated-action.mjs +3 -3
- package/dist/hooks/use-copilot-chat-headless_c.js.map +1 -1
- package/dist/hooks/use-copilot-chat-headless_c.mjs +16 -13
- package/dist/hooks/use-copilot-chat.js.map +1 -1
- package/dist/hooks/use-copilot-chat.mjs +16 -13
- package/dist/hooks/use-copilot-chat_internal.js.map +1 -1
- package/dist/hooks/use-copilot-chat_internal.mjs +15 -12
- package/dist/hooks/use-langgraph-interrupt-render.mjs +1 -1
- package/dist/hooks/use-langgraph-interrupt.js.map +1 -1
- package/dist/hooks/use-langgraph-interrupt.mjs +16 -13
- package/dist/index.js +1131 -169
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +36 -33
- package/dist/lib/copilot-task.js.map +1 -1
- package/dist/lib/copilot-task.mjs +13 -10
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +13 -10
- package/dist/utils/extract.js.map +1 -1
- package/dist/utils/extract.mjs +11 -8
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +11 -8
- package/dist/utils/suggestions.js.map +1 -1
- package/dist/utils/suggestions.mjs +11 -8
- package/package.json +3 -3
- package/src/components/copilot-provider/copilotkit.tsx +5 -6
- package/src/components/dev-console/console-trigger.tsx +190 -0
- package/src/components/dev-console/developer-console-modal.tsx +866 -0
- package/src/components/dev-console/icons.tsx +101 -0
- package/dist/chunk-LVWV62JZ.mjs.map +0 -1
- /package/dist/{chunk-L6HQIJ74.mjs.map → chunk-7TFJCTYY.mjs.map} +0 -0
- /package/dist/{chunk-2TSNHEIS.mjs.map → chunk-BVRWKRDI.mjs.map} +0 -0
- /package/dist/{chunk-DLEXVOQE.mjs.map → chunk-GEKWHETN.mjs.map} +0 -0
- /package/dist/{chunk-Q42NJFXR.mjs.map → chunk-IKWGQG5V.mjs.map} +0 -0
- /package/dist/{chunk-JJDXTTEN.mjs.map → chunk-K4HXT453.mjs.map} +0 -0
- /package/dist/{chunk-JBLMXZ3O.mjs.map → chunk-KH27ZS4Y.mjs.map} +0 -0
- /package/dist/{chunk-QGE7U4NV.mjs.map → chunk-MO2BUFJD.mjs.map} +0 -0
- /package/dist/{chunk-TWYUYC4F.mjs.map → chunk-MUDXTKXE.mjs.map} +0 -0
- /package/dist/{chunk-COEUPDRL.mjs.map → chunk-OGXCE54J.mjs.map} +0 -0
- /package/dist/{chunk-X2DNXTME.mjs.map → chunk-OPRDTF4S.mjs.map} +0 -0
- /package/dist/{chunk-IHAZJF3V.mjs.map → chunk-PYPPRFZ6.mjs.map} +0 -0
- /package/dist/{chunk-ADZDXHVC.mjs.map → chunk-Q573EMPD.mjs.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -112,7 +112,7 @@ __export(src_exports, {
|
|
|
112
112
|
module.exports = __toCommonJS(src_exports);
|
|
113
113
|
|
|
114
114
|
// src/components/copilot-provider/copilotkit.tsx
|
|
115
|
-
var
|
|
115
|
+
var import_react12 = require("react");
|
|
116
116
|
|
|
117
117
|
// src/context/copilot-context.tsx
|
|
118
118
|
var import_react = __toESM(require("react"));
|
|
@@ -341,7 +341,7 @@ function setsHaveIntersection(setA, setB) {
|
|
|
341
341
|
|
|
342
342
|
// src/components/copilot-provider/copilotkit.tsx
|
|
343
343
|
var import_react_dom = require("react-dom");
|
|
344
|
-
var
|
|
344
|
+
var import_shared12 = require("@copilotkit/shared");
|
|
345
345
|
|
|
346
346
|
// src/hooks/use-flat-category-store.ts
|
|
347
347
|
var import_react3 = require("react");
|
|
@@ -1754,69 +1754,1028 @@ var CopilotErrorBoundary = class extends import_react9.default.Component {
|
|
|
1754
1754
|
}
|
|
1755
1755
|
};
|
|
1756
1756
|
|
|
1757
|
-
// src/components/
|
|
1757
|
+
// src/components/dev-console/console-trigger.tsx
|
|
1758
|
+
var import_react11 = require("react");
|
|
1759
|
+
|
|
1760
|
+
// src/components/dev-console/icons.tsx
|
|
1758
1761
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
1762
|
+
var ExclamationMarkTriangleIcon = () => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1763
|
+
"svg",
|
|
1764
|
+
{
|
|
1765
|
+
width: "13.3967723px",
|
|
1766
|
+
height: "12px",
|
|
1767
|
+
viewBox: "0 0 13.3967723 12",
|
|
1768
|
+
version: "1.1",
|
|
1769
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1770
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("g", { id: "exclamation-triangle", fill: "#CD2121", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1771
|
+
"path",
|
|
1772
|
+
{
|
|
1773
|
+
d: "M5.39935802,0.75 C5.97670802,-0.25 7.42007802,-0.25 7.99742802,0.75 L13.193588,9.75 C13.770888,10.75 13.049288,12 11.894588,12 L1.50223802,12 C0.34753802,12 -0.37414898,10.75 0.20319802,9.75 L5.39935802,0.75 Z M6.69838802,2.5 C7.11260802,2.5 7.44838802,2.83579 7.44838802,3.25 L7.44838802,6.25 C7.44838802,6.66421 7.11260802,7 6.69838802,7 C6.28417802,7 5.94838802,6.66421 5.94838802,6.25 L5.94838802,3.25 C5.94838802,2.83579 6.28417802,2.5 6.69838802,2.5 Z M6.69838802,10.5 C7.25067802,10.5 7.69838802,10.0523 7.69838802,9.5 C7.69838802,8.9477 7.25067802,8.5 6.69838802,8.5 C6.14610802,8.5 5.69838802,8.9477 5.69838802,9.5 C5.69838802,10.0523 6.14610802,10.5 6.69838802,10.5 Z",
|
|
1774
|
+
id: "Shape"
|
|
1775
|
+
}
|
|
1776
|
+
) }) })
|
|
1777
|
+
}
|
|
1778
|
+
);
|
|
1779
|
+
var CheckIcon = () => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1780
|
+
"svg",
|
|
1781
|
+
{
|
|
1782
|
+
width: "14px",
|
|
1783
|
+
height: "14px",
|
|
1784
|
+
viewBox: "0 0 14 14",
|
|
1785
|
+
version: "1.1",
|
|
1786
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1787
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("g", { id: "Group-2", transform: "translate(-118, 0)", fill: "#1BC030", fillRule: "nonzero", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("g", { id: "Group", transform: "translate(118, 0)", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1788
|
+
"path",
|
|
1789
|
+
{
|
|
1790
|
+
d: "M0,7 C0,3.13384615 3.13384615,0 7,0 C10.8661538,0 14,3.13384615 14,7 C14,10.8661538 10.8661538,14 7,14 C3.13384615,14 0,10.8661538 0,7 Z M9.59179487,5.69764103 C9.70905818,5.54139023 9.73249341,5.33388318 9.65303227,5.15541491 C9.57357113,4.97694665 9.40367989,4.85551619 9.20909814,4.83811118 C9.01451638,4.82070616 8.82577109,4.91005717 8.71589744,5.07158974 L6.39261538,8.32389744 L5.22666667,7.15794872 C5.01450582,6.96025518 4.68389046,6.9660885 4.47883563,7.17114332 C4.27378081,7.37619815 4.26794748,7.70681351 4.46564103,7.91897436 L6.08102564,9.53435897 C6.19289944,9.64614839 6.3482622,9.70310251 6.50588106,9.69010587 C6.66349993,9.67710922 6.80743532,9.59547613 6.89948718,9.46687179 L9.59179487,5.69764103 L9.59179487,5.69764103 Z",
|
|
1791
|
+
id: "Shape"
|
|
1792
|
+
}
|
|
1793
|
+
) }) }) })
|
|
1794
|
+
}
|
|
1795
|
+
);
|
|
1796
|
+
var CopilotKitIcon = () => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
1797
|
+
"svg",
|
|
1798
|
+
{
|
|
1799
|
+
width: "33px",
|
|
1800
|
+
height: "35px",
|
|
1801
|
+
viewBox: "0 0 33 35",
|
|
1802
|
+
version: "1.1",
|
|
1803
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
1804
|
+
children: [
|
|
1805
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("title", { children: "bd5c9079-929b-4d55-bdc9-16d1c8181b71" }),
|
|
1806
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("g", { id: "Page-1", stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
1807
|
+
"image",
|
|
1808
|
+
{
|
|
1809
|
+
x: "0",
|
|
1810
|
+
y: "0",
|
|
1811
|
+
width: "33",
|
|
1812
|
+
height: "35",
|
|
1813
|
+
xlinkHref: "data:image/png;base64,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"
|
|
1814
|
+
}
|
|
1815
|
+
) })
|
|
1816
|
+
]
|
|
1817
|
+
}
|
|
1818
|
+
);
|
|
1819
|
+
|
|
1820
|
+
// src/components/dev-console/developer-console-modal.tsx
|
|
1821
|
+
var import_shared11 = require("@copilotkit/shared");
|
|
1822
|
+
var import_react10 = require("react");
|
|
1823
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
1824
|
+
function DeveloperConsoleModal({ isOpen, onClose, hasApiKey }) {
|
|
1825
|
+
const context = useCopilotContext();
|
|
1826
|
+
const messagesContext = useCopilotMessagesContext();
|
|
1827
|
+
const [activeTab, setActiveTab] = (0, import_react10.useState)("actions");
|
|
1828
|
+
(0, import_react10.useEffect)(() => {
|
|
1829
|
+
const handleEscape = (e) => {
|
|
1830
|
+
if (e.key === "Escape") {
|
|
1831
|
+
onClose();
|
|
1832
|
+
}
|
|
1833
|
+
};
|
|
1834
|
+
if (isOpen) {
|
|
1835
|
+
document.addEventListener("keydown", handleEscape);
|
|
1836
|
+
document.body.style.overflow = "hidden";
|
|
1837
|
+
}
|
|
1838
|
+
return () => {
|
|
1839
|
+
document.removeEventListener("keydown", handleEscape);
|
|
1840
|
+
document.body.style.overflow = "unset";
|
|
1841
|
+
};
|
|
1842
|
+
}, [isOpen, onClose]);
|
|
1843
|
+
if (!isOpen)
|
|
1844
|
+
return null;
|
|
1845
|
+
const displayContext = hasApiKey ? context : {
|
|
1846
|
+
actions: {
|
|
1847
|
+
search_web: { name: "search_web", description: "Search the web for information" },
|
|
1848
|
+
send_email: { name: "send_email", description: "Send an email to a contact" },
|
|
1849
|
+
create_document: { name: "create_document", description: "Create a new document" },
|
|
1850
|
+
analyze_code: {
|
|
1851
|
+
name: "analyze_code",
|
|
1852
|
+
description: "Analyze code for issues and improvements"
|
|
1853
|
+
},
|
|
1854
|
+
generate_tests: {
|
|
1855
|
+
name: "generate_tests",
|
|
1856
|
+
description: "Generate unit tests for functions"
|
|
1857
|
+
}
|
|
1858
|
+
},
|
|
1859
|
+
getAllContext: () => [
|
|
1860
|
+
{
|
|
1861
|
+
content: "User preferences: dark mode enabled, TypeScript preferred",
|
|
1862
|
+
metadata: { source: "settings" }
|
|
1863
|
+
},
|
|
1864
|
+
{
|
|
1865
|
+
content: "Current project: Building a React application with CopilotKit",
|
|
1866
|
+
metadata: { source: "project" }
|
|
1867
|
+
},
|
|
1868
|
+
{
|
|
1869
|
+
content: "Recent activity: Implemented authentication system",
|
|
1870
|
+
metadata: { source: "activity" }
|
|
1871
|
+
},
|
|
1872
|
+
{
|
|
1873
|
+
content: "Development environment: VS Code, Node.js 18, React 18",
|
|
1874
|
+
metadata: { source: "environment" }
|
|
1875
|
+
}
|
|
1876
|
+
],
|
|
1877
|
+
coagentStates: {
|
|
1878
|
+
"main-agent": { status: "active", lastUpdate: Date.now() },
|
|
1879
|
+
"code-assistant": { status: "active", lastUpdate: Date.now() - 15e3 },
|
|
1880
|
+
"search-agent": { status: "idle", lastUpdate: Date.now() - 6e4 }
|
|
1881
|
+
},
|
|
1882
|
+
getDocumentsContext: () => [
|
|
1883
|
+
{
|
|
1884
|
+
content: "README.md: Project setup and installation instructions",
|
|
1885
|
+
metadata: { type: "documentation" }
|
|
1886
|
+
},
|
|
1887
|
+
{
|
|
1888
|
+
content: "API Documentation: CopilotKit integration guide",
|
|
1889
|
+
metadata: { type: "documentation" }
|
|
1890
|
+
},
|
|
1891
|
+
{
|
|
1892
|
+
content: "package.json: Project dependencies and scripts",
|
|
1893
|
+
metadata: { type: "configuration" }
|
|
1894
|
+
}
|
|
1895
|
+
]
|
|
1896
|
+
};
|
|
1897
|
+
const displayMessagesContext = hasApiKey ? messagesContext : {
|
|
1898
|
+
messages: [
|
|
1899
|
+
{
|
|
1900
|
+
id: "1",
|
|
1901
|
+
role: "user",
|
|
1902
|
+
content: "Help me implement a todo list with drag and drop functionality"
|
|
1903
|
+
},
|
|
1904
|
+
{
|
|
1905
|
+
id: "2",
|
|
1906
|
+
role: "assistant",
|
|
1907
|
+
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."
|
|
1908
|
+
},
|
|
1909
|
+
{ id: "3", role: "user", content: "Can you also add priority levels and due dates?" },
|
|
1910
|
+
{
|
|
1911
|
+
id: "4",
|
|
1912
|
+
role: "assistant",
|
|
1913
|
+
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."
|
|
1914
|
+
},
|
|
1915
|
+
{ id: "5", role: "user", content: "Perfect! How about adding categories or tags?" }
|
|
1916
|
+
]
|
|
1917
|
+
};
|
|
1918
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1919
|
+
"div",
|
|
1920
|
+
{
|
|
1921
|
+
style: {
|
|
1922
|
+
position: "fixed",
|
|
1923
|
+
top: 0,
|
|
1924
|
+
left: 0,
|
|
1925
|
+
right: 0,
|
|
1926
|
+
bottom: 0,
|
|
1927
|
+
zIndex: 9999,
|
|
1928
|
+
backgroundColor: "rgba(0, 0, 0, 0.3)",
|
|
1929
|
+
display: "flex",
|
|
1930
|
+
alignItems: "center",
|
|
1931
|
+
justifyContent: "center",
|
|
1932
|
+
padding: "16px"
|
|
1933
|
+
},
|
|
1934
|
+
onClick: onClose,
|
|
1935
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
1936
|
+
"div",
|
|
1937
|
+
{
|
|
1938
|
+
style: {
|
|
1939
|
+
width: "1152px",
|
|
1940
|
+
maxWidth: "95vw",
|
|
1941
|
+
height: "80vh",
|
|
1942
|
+
backgroundColor: "white",
|
|
1943
|
+
borderRadius: "12px",
|
|
1944
|
+
boxShadow: "0 25px 50px -12px rgba(0, 0, 0, 0.25)",
|
|
1945
|
+
display: "flex",
|
|
1946
|
+
flexDirection: "column",
|
|
1947
|
+
overflow: "hidden",
|
|
1948
|
+
position: "relative"
|
|
1949
|
+
},
|
|
1950
|
+
onClick: (e) => e.stopPropagation(),
|
|
1951
|
+
children: [
|
|
1952
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
1953
|
+
"div",
|
|
1954
|
+
{
|
|
1955
|
+
style: {
|
|
1956
|
+
display: "flex",
|
|
1957
|
+
alignItems: "center",
|
|
1958
|
+
justifyContent: "space-between",
|
|
1959
|
+
padding: "24px",
|
|
1960
|
+
borderBottom: "1px solid #e5e7eb",
|
|
1961
|
+
minHeight: "73px",
|
|
1962
|
+
flexShrink: 0,
|
|
1963
|
+
filter: !hasApiKey ? "blur(0.3px)" : "none",
|
|
1964
|
+
opacity: !hasApiKey ? 0.95 : 1
|
|
1965
|
+
},
|
|
1966
|
+
children: [
|
|
1967
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: "12px" }, children: [
|
|
1968
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CopilotKitIcon, {}),
|
|
1969
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1970
|
+
"h1",
|
|
1971
|
+
{
|
|
1972
|
+
style: {
|
|
1973
|
+
fontWeight: "bold",
|
|
1974
|
+
fontSize: "20px",
|
|
1975
|
+
color: "#1f2937",
|
|
1976
|
+
margin: 0
|
|
1977
|
+
},
|
|
1978
|
+
children: "Developer Console"
|
|
1979
|
+
}
|
|
1980
|
+
),
|
|
1981
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
1982
|
+
"span",
|
|
1983
|
+
{
|
|
1984
|
+
style: {
|
|
1985
|
+
fontSize: "14px",
|
|
1986
|
+
color: "#6b7280",
|
|
1987
|
+
backgroundColor: "#f3f4f6",
|
|
1988
|
+
padding: "4px 8px",
|
|
1989
|
+
borderRadius: "4px"
|
|
1990
|
+
},
|
|
1991
|
+
children: [
|
|
1992
|
+
"v",
|
|
1993
|
+
import_shared11.COPILOTKIT_VERSION
|
|
1994
|
+
]
|
|
1995
|
+
}
|
|
1996
|
+
)
|
|
1997
|
+
] }),
|
|
1998
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1999
|
+
"button",
|
|
2000
|
+
{
|
|
2001
|
+
onClick: onClose,
|
|
2002
|
+
style: {
|
|
2003
|
+
color: "#9ca3af",
|
|
2004
|
+
fontSize: "24px",
|
|
2005
|
+
fontWeight: "300",
|
|
2006
|
+
border: "none",
|
|
2007
|
+
background: "none",
|
|
2008
|
+
cursor: "pointer",
|
|
2009
|
+
padding: "4px"
|
|
2010
|
+
},
|
|
2011
|
+
onMouseEnter: (e) => e.currentTarget.style.color = "#4b5563",
|
|
2012
|
+
onMouseLeave: (e) => e.currentTarget.style.color = "#9ca3af",
|
|
2013
|
+
children: "\xD7"
|
|
2014
|
+
}
|
|
2015
|
+
)
|
|
2016
|
+
]
|
|
2017
|
+
}
|
|
2018
|
+
),
|
|
2019
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2020
|
+
"div",
|
|
2021
|
+
{
|
|
2022
|
+
style: {
|
|
2023
|
+
display: "flex",
|
|
2024
|
+
borderBottom: "1px solid #e5e7eb",
|
|
2025
|
+
backgroundColor: "#f9fafb",
|
|
2026
|
+
minHeight: "50px",
|
|
2027
|
+
flexShrink: 0,
|
|
2028
|
+
filter: !hasApiKey ? "blur(0.3px)" : "none",
|
|
2029
|
+
opacity: !hasApiKey ? 0.9 : 1
|
|
2030
|
+
},
|
|
2031
|
+
children: [
|
|
2032
|
+
{ id: "actions", label: "Actions", count: Object.keys(displayContext.actions).length },
|
|
2033
|
+
{ id: "readables", label: "Readables", count: displayContext.getAllContext().length },
|
|
2034
|
+
{
|
|
2035
|
+
id: "agent",
|
|
2036
|
+
label: "Agent Status",
|
|
2037
|
+
count: Object.keys(displayContext.coagentStates).length
|
|
2038
|
+
},
|
|
2039
|
+
{ id: "messages", label: "Messages", count: displayMessagesContext.messages.length },
|
|
2040
|
+
{
|
|
2041
|
+
id: "context",
|
|
2042
|
+
label: "Context",
|
|
2043
|
+
count: displayContext.getDocumentsContext([]).length
|
|
2044
|
+
}
|
|
2045
|
+
].map((tab) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2046
|
+
"button",
|
|
2047
|
+
{
|
|
2048
|
+
onClick: () => setActiveTab(tab.id),
|
|
2049
|
+
style: {
|
|
2050
|
+
padding: "12px 24px",
|
|
2051
|
+
fontSize: "14px",
|
|
2052
|
+
fontWeight: "500",
|
|
2053
|
+
border: "none",
|
|
2054
|
+
cursor: "pointer",
|
|
2055
|
+
backgroundColor: activeTab === tab.id ? "white" : "transparent",
|
|
2056
|
+
color: activeTab === tab.id ? "#2563eb" : "#6b7280",
|
|
2057
|
+
borderBottom: activeTab === tab.id ? "2px solid #2563eb" : "none",
|
|
2058
|
+
transition: "all 0.2s"
|
|
2059
|
+
},
|
|
2060
|
+
onMouseEnter: (e) => {
|
|
2061
|
+
if (activeTab !== tab.id) {
|
|
2062
|
+
e.currentTarget.style.color = "#1f2937";
|
|
2063
|
+
e.currentTarget.style.backgroundColor = "#f3f4f6";
|
|
2064
|
+
}
|
|
2065
|
+
},
|
|
2066
|
+
onMouseLeave: (e) => {
|
|
2067
|
+
if (activeTab !== tab.id) {
|
|
2068
|
+
e.currentTarget.style.color = "#6b7280";
|
|
2069
|
+
e.currentTarget.style.backgroundColor = "transparent";
|
|
2070
|
+
}
|
|
2071
|
+
},
|
|
2072
|
+
children: [
|
|
2073
|
+
tab.label,
|
|
2074
|
+
tab.count > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2075
|
+
"span",
|
|
2076
|
+
{
|
|
2077
|
+
style: {
|
|
2078
|
+
marginLeft: "8px",
|
|
2079
|
+
backgroundColor: "#e5e7eb",
|
|
2080
|
+
color: "#374151",
|
|
2081
|
+
padding: "2px 8px",
|
|
2082
|
+
borderRadius: "9999px",
|
|
2083
|
+
fontSize: "12px"
|
|
2084
|
+
},
|
|
2085
|
+
children: tab.count
|
|
2086
|
+
}
|
|
2087
|
+
)
|
|
2088
|
+
]
|
|
2089
|
+
},
|
|
2090
|
+
tab.id
|
|
2091
|
+
))
|
|
2092
|
+
}
|
|
2093
|
+
),
|
|
2094
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2095
|
+
"div",
|
|
2096
|
+
{
|
|
2097
|
+
style: {
|
|
2098
|
+
height: "calc(100% - 142px)",
|
|
2099
|
+
overflow: "auto",
|
|
2100
|
+
padding: "24px",
|
|
2101
|
+
backgroundColor: "#f9fafb",
|
|
2102
|
+
filter: !hasApiKey ? "blur(0.3px)" : "none",
|
|
2103
|
+
opacity: !hasApiKey ? 0.85 : 1
|
|
2104
|
+
},
|
|
2105
|
+
children: [
|
|
2106
|
+
activeTab === "actions" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ActionsTab, { context: displayContext }),
|
|
2107
|
+
activeTab === "readables" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ReadablesTab, { context: displayContext }),
|
|
2108
|
+
activeTab === "agent" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(AgentStatusTab, { context: displayContext }),
|
|
2109
|
+
activeTab === "messages" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(MessagesTab, { messagesContext: displayMessagesContext }),
|
|
2110
|
+
activeTab === "context" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ContextTab, { context: displayContext })
|
|
2111
|
+
]
|
|
2112
|
+
}
|
|
2113
|
+
),
|
|
2114
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2115
|
+
"div",
|
|
2116
|
+
{
|
|
2117
|
+
style: {
|
|
2118
|
+
padding: "16px 24px",
|
|
2119
|
+
borderTop: "1px solid #e5e7eb",
|
|
2120
|
+
backgroundColor: "white",
|
|
2121
|
+
display: "flex",
|
|
2122
|
+
justifyContent: "space-between",
|
|
2123
|
+
alignItems: "center",
|
|
2124
|
+
minHeight: "57px",
|
|
2125
|
+
flexShrink: 0,
|
|
2126
|
+
filter: !hasApiKey ? "blur(0.3px)" : "none",
|
|
2127
|
+
opacity: !hasApiKey ? 0.9 : 1
|
|
2128
|
+
},
|
|
2129
|
+
children: [
|
|
2130
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { fontSize: "14px", color: "#6b7280" }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2131
|
+
"a",
|
|
2132
|
+
{
|
|
2133
|
+
href: "https://github.com/CopilotKit/CopilotKit/issues",
|
|
2134
|
+
target: "_blank",
|
|
2135
|
+
rel: "noopener noreferrer",
|
|
2136
|
+
style: { color: "#2563eb", textDecoration: "none" },
|
|
2137
|
+
onMouseEnter: (e) => e.currentTarget.style.textDecoration = "underline",
|
|
2138
|
+
onMouseLeave: (e) => e.currentTarget.style.textDecoration = "none",
|
|
2139
|
+
children: "Report an issue"
|
|
2140
|
+
}
|
|
2141
|
+
) }),
|
|
2142
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { fontSize: "14px", color: "#6b7280" }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2143
|
+
"a",
|
|
2144
|
+
{
|
|
2145
|
+
href: "https://mcp.copilotkit.ai/",
|
|
2146
|
+
target: "_blank",
|
|
2147
|
+
rel: "noopener noreferrer",
|
|
2148
|
+
style: { color: "#2563eb", textDecoration: "none" },
|
|
2149
|
+
onMouseEnter: (e) => e.currentTarget.style.textDecoration = "underline",
|
|
2150
|
+
onMouseLeave: (e) => e.currentTarget.style.textDecoration = "none",
|
|
2151
|
+
children: "Add MCP Server \u2192"
|
|
2152
|
+
}
|
|
2153
|
+
) })
|
|
2154
|
+
]
|
|
2155
|
+
}
|
|
2156
|
+
),
|
|
2157
|
+
!hasApiKey && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2158
|
+
"div",
|
|
2159
|
+
{
|
|
2160
|
+
style: {
|
|
2161
|
+
position: "absolute",
|
|
2162
|
+
top: 0,
|
|
2163
|
+
left: 0,
|
|
2164
|
+
right: 0,
|
|
2165
|
+
bottom: 0,
|
|
2166
|
+
backgroundColor: "rgba(255, 255, 255, 0.2)",
|
|
2167
|
+
backdropFilter: "blur(2px)",
|
|
2168
|
+
WebkitBackdropFilter: "blur(2px)",
|
|
2169
|
+
display: "flex",
|
|
2170
|
+
alignItems: "center",
|
|
2171
|
+
justifyContent: "center",
|
|
2172
|
+
borderRadius: "12px",
|
|
2173
|
+
zIndex: 10
|
|
2174
|
+
},
|
|
2175
|
+
onClick: (e) => e.stopPropagation(),
|
|
2176
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2177
|
+
"button",
|
|
2178
|
+
{
|
|
2179
|
+
onClick: () => window.open("https://cloud.copilotkit.ai/sign-in", "_blank"),
|
|
2180
|
+
style: {
|
|
2181
|
+
// Following button system specifications
|
|
2182
|
+
height: "48px",
|
|
2183
|
+
padding: "12px 24px",
|
|
2184
|
+
backgroundColor: "#030507",
|
|
2185
|
+
// textPrimary token
|
|
2186
|
+
color: "#FFFFFF",
|
|
2187
|
+
borderRadius: "12px",
|
|
2188
|
+
// Medium radius token
|
|
2189
|
+
border: "none",
|
|
2190
|
+
cursor: "pointer",
|
|
2191
|
+
fontSize: "14px",
|
|
2192
|
+
// Medium Semi Bold typography
|
|
2193
|
+
fontWeight: "600",
|
|
2194
|
+
fontFamily: "'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif",
|
|
2195
|
+
lineHeight: "22px",
|
|
2196
|
+
boxShadow: "0 4px 16px rgba(3, 5, 7, 0.2), 0 1px 3px rgba(3, 5, 7, 0.1)",
|
|
2197
|
+
transition: "all 200ms ease",
|
|
2198
|
+
// 200ms ease as per specs
|
|
2199
|
+
display: "inline-flex",
|
|
2200
|
+
alignItems: "center",
|
|
2201
|
+
gap: "8px",
|
|
2202
|
+
textTransform: "uppercase",
|
|
2203
|
+
letterSpacing: "0.5px"
|
|
2204
|
+
},
|
|
2205
|
+
onMouseEnter: (e) => {
|
|
2206
|
+
e.currentTarget.style.backgroundColor = "#575758";
|
|
2207
|
+
e.currentTarget.style.transform = "translateY(-1px)";
|
|
2208
|
+
e.currentTarget.style.boxShadow = "0 6px 20px rgba(3, 5, 7, 0.25), 0 2px 4px rgba(3, 5, 7, 0.15)";
|
|
2209
|
+
},
|
|
2210
|
+
onMouseLeave: (e) => {
|
|
2211
|
+
e.currentTarget.style.backgroundColor = "#030507";
|
|
2212
|
+
e.currentTarget.style.transform = "translateY(0)";
|
|
2213
|
+
e.currentTarget.style.boxShadow = "0 4px 16px rgba(3, 5, 7, 0.2), 0 1px 3px rgba(3, 5, 7, 0.1)";
|
|
2214
|
+
},
|
|
2215
|
+
onMouseDown: (e) => {
|
|
2216
|
+
e.currentTarget.style.backgroundColor = "#858589";
|
|
2217
|
+
e.currentTarget.style.transform = "translateY(0)";
|
|
2218
|
+
},
|
|
2219
|
+
onMouseUp: (e) => {
|
|
2220
|
+
e.currentTarget.style.backgroundColor = "#575758";
|
|
2221
|
+
e.currentTarget.style.transform = "translateY(-1px)";
|
|
2222
|
+
},
|
|
2223
|
+
onFocus: (e) => {
|
|
2224
|
+
e.currentTarget.style.outline = "2px solid #BEC9FF";
|
|
2225
|
+
e.currentTarget.style.outlineOffset = "2px";
|
|
2226
|
+
},
|
|
2227
|
+
onBlur: (e) => {
|
|
2228
|
+
e.currentTarget.style.outline = "none";
|
|
2229
|
+
},
|
|
2230
|
+
children: [
|
|
2231
|
+
"Get API Key",
|
|
2232
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { style: { fontSize: "16px", marginLeft: "-4px" }, children: "\u2192" })
|
|
2233
|
+
]
|
|
2234
|
+
}
|
|
2235
|
+
)
|
|
2236
|
+
}
|
|
2237
|
+
)
|
|
2238
|
+
]
|
|
2239
|
+
}
|
|
2240
|
+
)
|
|
2241
|
+
}
|
|
2242
|
+
);
|
|
2243
|
+
}
|
|
2244
|
+
function ActionsTab({ context }) {
|
|
2245
|
+
const actions = Object.values(context.actions);
|
|
2246
|
+
if (actions.length === 0) {
|
|
2247
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
|
|
2248
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No actions available" }),
|
|
2249
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Actions will appear here when registered" })
|
|
2250
|
+
] });
|
|
2251
|
+
}
|
|
2252
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: actions.map((action, index) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2253
|
+
"div",
|
|
2254
|
+
{
|
|
2255
|
+
style: {
|
|
2256
|
+
backgroundColor: "white",
|
|
2257
|
+
padding: "16px",
|
|
2258
|
+
borderRadius: "8px",
|
|
2259
|
+
boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
|
|
2260
|
+
border: "1px solid #e5e7eb"
|
|
2261
|
+
},
|
|
2262
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2263
|
+
"div",
|
|
2264
|
+
{
|
|
2265
|
+
style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" },
|
|
2266
|
+
children: [
|
|
2267
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { flex: 1 }, children: [
|
|
2268
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h3", { style: { fontWeight: "600", color: "#1f2937", margin: "0 0 4px 0" }, children: action.name }),
|
|
2269
|
+
action.description && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { style: { fontSize: "14px", color: "#4b5563", margin: "0 0 12px 0" }, children: action.description }),
|
|
2270
|
+
action.parameters && action.parameters.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { marginTop: "12px" }, children: [
|
|
2271
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2272
|
+
"p",
|
|
2273
|
+
{
|
|
2274
|
+
style: {
|
|
2275
|
+
fontSize: "12px",
|
|
2276
|
+
fontWeight: "500",
|
|
2277
|
+
color: "#6b7280",
|
|
2278
|
+
textTransform: "uppercase",
|
|
2279
|
+
margin: "0 0 4px 0"
|
|
2280
|
+
},
|
|
2281
|
+
children: "Parameters:"
|
|
2282
|
+
}
|
|
2283
|
+
),
|
|
2284
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "4px" }, children: action.parameters.map((param, pIndex) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { fontSize: "14px" }, children: [
|
|
2285
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { style: { fontFamily: "monospace", color: "#374151" }, children: param.name }),
|
|
2286
|
+
param.required && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { style: { marginLeft: "4px", fontSize: "12px", color: "#ef4444" }, children: "*required" }),
|
|
2287
|
+
param.type && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { style: { marginLeft: "8px", fontSize: "12px", color: "#6b7280" }, children: [
|
|
2288
|
+
"(",
|
|
2289
|
+
param.type,
|
|
2290
|
+
")"
|
|
2291
|
+
] })
|
|
2292
|
+
] }, pIndex)) })
|
|
2293
|
+
] })
|
|
2294
|
+
] }),
|
|
2295
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { marginLeft: "16px" }, children: action.status === "available" ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(CheckIcon, {}) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ExclamationMarkTriangleIcon, {}) })
|
|
2296
|
+
]
|
|
2297
|
+
}
|
|
2298
|
+
)
|
|
2299
|
+
},
|
|
2300
|
+
index
|
|
2301
|
+
)) });
|
|
2302
|
+
}
|
|
2303
|
+
function ReadablesTab({ context }) {
|
|
2304
|
+
const readables = context.getAllContext();
|
|
2305
|
+
if (readables.length === 0) {
|
|
2306
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
|
|
2307
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No readable context available" }),
|
|
2308
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Readable context will appear here when provided" })
|
|
2309
|
+
] });
|
|
2310
|
+
}
|
|
2311
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: readables.map((readable, index) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2312
|
+
"div",
|
|
2313
|
+
{
|
|
2314
|
+
style: {
|
|
2315
|
+
backgroundColor: "white",
|
|
2316
|
+
padding: "16px",
|
|
2317
|
+
borderRadius: "8px",
|
|
2318
|
+
boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
|
|
2319
|
+
border: "1px solid #e5e7eb"
|
|
2320
|
+
},
|
|
2321
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2322
|
+
"div",
|
|
2323
|
+
{
|
|
2324
|
+
style: { display: "flex", alignItems: "flex-start", justifyContent: "space-between" },
|
|
2325
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { flex: 1 }, children: [
|
|
2326
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h3", { style: { fontWeight: "600", color: "#1f2937", margin: "0 0 4px 0" }, children: readable.name || `Readable ${index + 1}` }),
|
|
2327
|
+
readable.description && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { style: { fontSize: "14px", color: "#4b5563", margin: "0 0 12px 0" }, children: readable.description }),
|
|
2328
|
+
readable.value && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2329
|
+
"pre",
|
|
2330
|
+
{
|
|
2331
|
+
style: {
|
|
2332
|
+
marginTop: "12px",
|
|
2333
|
+
padding: "8px",
|
|
2334
|
+
backgroundColor: "#f9fafb",
|
|
2335
|
+
borderRadius: "4px",
|
|
2336
|
+
fontSize: "12px",
|
|
2337
|
+
overflowX: "auto",
|
|
2338
|
+
margin: "12px 0 0 0"
|
|
2339
|
+
},
|
|
2340
|
+
children: JSON.stringify(readable.value, null, 2)
|
|
2341
|
+
}
|
|
2342
|
+
)
|
|
2343
|
+
] })
|
|
2344
|
+
}
|
|
2345
|
+
)
|
|
2346
|
+
},
|
|
2347
|
+
index
|
|
2348
|
+
)) });
|
|
2349
|
+
}
|
|
2350
|
+
function AgentStatusTab({ context }) {
|
|
2351
|
+
const agentStates = context.coagentStates || {};
|
|
2352
|
+
const agentStateEntries = Object.entries(agentStates);
|
|
2353
|
+
if (agentStateEntries.length === 0) {
|
|
2354
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
|
|
2355
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No agent states available" }),
|
|
2356
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Agent states will appear here when agents are active" })
|
|
2357
|
+
] });
|
|
2358
|
+
}
|
|
2359
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "24px" }, children: agentStateEntries.map(([agentName, state]) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2360
|
+
"div",
|
|
2361
|
+
{
|
|
2362
|
+
style: {
|
|
2363
|
+
backgroundColor: "white",
|
|
2364
|
+
padding: "24px",
|
|
2365
|
+
borderRadius: "8px",
|
|
2366
|
+
boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
|
|
2367
|
+
border: "1px solid #e5e7eb"
|
|
2368
|
+
},
|
|
2369
|
+
children: [
|
|
2370
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2371
|
+
"div",
|
|
2372
|
+
{
|
|
2373
|
+
style: {
|
|
2374
|
+
display: "flex",
|
|
2375
|
+
alignItems: "center",
|
|
2376
|
+
justifyContent: "space-between",
|
|
2377
|
+
marginBottom: "16px"
|
|
2378
|
+
},
|
|
2379
|
+
children: [
|
|
2380
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h3", { style: { fontWeight: "600", fontSize: "18px", color: "#1f2937", margin: 0 }, children: agentName }),
|
|
2381
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2382
|
+
"span",
|
|
2383
|
+
{
|
|
2384
|
+
style: {
|
|
2385
|
+
padding: "4px 12px",
|
|
2386
|
+
borderRadius: "9999px",
|
|
2387
|
+
fontSize: "12px",
|
|
2388
|
+
fontWeight: "500",
|
|
2389
|
+
backgroundColor: state.status === "running" ? "#dcfce7" : state.status === "complete" ? "#dbeafe" : "#f3f4f6",
|
|
2390
|
+
color: state.status === "running" ? "#166534" : state.status === "complete" ? "#1e40af" : "#1f2937"
|
|
2391
|
+
},
|
|
2392
|
+
children: state.status || "idle"
|
|
2393
|
+
}
|
|
2394
|
+
)
|
|
2395
|
+
]
|
|
2396
|
+
}
|
|
2397
|
+
),
|
|
2398
|
+
state.state && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { marginBottom: "12px" }, children: [
|
|
2399
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2400
|
+
"p",
|
|
2401
|
+
{
|
|
2402
|
+
style: {
|
|
2403
|
+
fontSize: "12px",
|
|
2404
|
+
fontWeight: "500",
|
|
2405
|
+
color: "#6b7280",
|
|
2406
|
+
textTransform: "uppercase",
|
|
2407
|
+
margin: "0 0 4px 0"
|
|
2408
|
+
},
|
|
2409
|
+
children: "Current State:"
|
|
2410
|
+
}
|
|
2411
|
+
),
|
|
2412
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2413
|
+
"pre",
|
|
2414
|
+
{
|
|
2415
|
+
style: {
|
|
2416
|
+
padding: "12px",
|
|
2417
|
+
backgroundColor: "#f9fafb",
|
|
2418
|
+
borderRadius: "4px",
|
|
2419
|
+
fontSize: "12px",
|
|
2420
|
+
overflowX: "auto",
|
|
2421
|
+
margin: 0
|
|
2422
|
+
},
|
|
2423
|
+
children: JSON.stringify(state.state, null, 2)
|
|
2424
|
+
}
|
|
2425
|
+
)
|
|
2426
|
+
] }),
|
|
2427
|
+
state.running && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2428
|
+
"div",
|
|
2429
|
+
{
|
|
2430
|
+
style: {
|
|
2431
|
+
marginTop: "16px",
|
|
2432
|
+
display: "flex",
|
|
2433
|
+
alignItems: "center",
|
|
2434
|
+
fontSize: "14px",
|
|
2435
|
+
color: "#4b5563"
|
|
2436
|
+
},
|
|
2437
|
+
children: [
|
|
2438
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { marginRight: "8px" }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2439
|
+
"svg",
|
|
2440
|
+
{
|
|
2441
|
+
width: "16",
|
|
2442
|
+
height: "16",
|
|
2443
|
+
viewBox: "0 0 16 16",
|
|
2444
|
+
style: { animation: "spin 1s linear infinite" },
|
|
2445
|
+
children: [
|
|
2446
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("style", { children: `@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }` }),
|
|
2447
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2448
|
+
"circle",
|
|
2449
|
+
{
|
|
2450
|
+
cx: "8",
|
|
2451
|
+
cy: "8",
|
|
2452
|
+
r: "6",
|
|
2453
|
+
fill: "none",
|
|
2454
|
+
stroke: "#4b5563",
|
|
2455
|
+
strokeWidth: "2",
|
|
2456
|
+
strokeDasharray: "9 3"
|
|
2457
|
+
}
|
|
2458
|
+
)
|
|
2459
|
+
]
|
|
2460
|
+
}
|
|
2461
|
+
) }),
|
|
2462
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: "Agent is currently running..." })
|
|
2463
|
+
]
|
|
2464
|
+
}
|
|
2465
|
+
)
|
|
2466
|
+
]
|
|
2467
|
+
},
|
|
2468
|
+
agentName
|
|
2469
|
+
)) });
|
|
2470
|
+
}
|
|
2471
|
+
function MessagesTab({ messagesContext }) {
|
|
2472
|
+
const messages = messagesContext.messages || [];
|
|
2473
|
+
if (messages.length === 0) {
|
|
2474
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
|
|
2475
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No messages yet" }),
|
|
2476
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Messages will appear here as the conversation progresses" })
|
|
2477
|
+
] });
|
|
2478
|
+
}
|
|
2479
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: messages.map((message, index) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2480
|
+
"div",
|
|
2481
|
+
{
|
|
2482
|
+
style: {
|
|
2483
|
+
padding: "16px",
|
|
2484
|
+
borderRadius: "8px",
|
|
2485
|
+
backgroundColor: message.role === "user" ? "#eff6ff" : message.role === "assistant" ? "#f9fafb" : "#fefce8",
|
|
2486
|
+
border: `1px solid ${message.role === "user" ? "#c7d2fe" : message.role === "assistant" ? "#e5e7eb" : "#fde047"}`,
|
|
2487
|
+
marginLeft: message.role === "user" ? "48px" : "0",
|
|
2488
|
+
marginRight: message.role === "assistant" ? "48px" : "0"
|
|
2489
|
+
},
|
|
2490
|
+
children: [
|
|
2491
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2492
|
+
"div",
|
|
2493
|
+
{
|
|
2494
|
+
style: {
|
|
2495
|
+
display: "flex",
|
|
2496
|
+
alignItems: "flex-start",
|
|
2497
|
+
justifyContent: "space-between",
|
|
2498
|
+
marginBottom: "8px"
|
|
2499
|
+
},
|
|
2500
|
+
children: [
|
|
2501
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2502
|
+
"span",
|
|
2503
|
+
{
|
|
2504
|
+
style: {
|
|
2505
|
+
fontWeight: "500",
|
|
2506
|
+
fontSize: "14px",
|
|
2507
|
+
color: "#374151",
|
|
2508
|
+
textTransform: "capitalize"
|
|
2509
|
+
},
|
|
2510
|
+
children: message.role || "system"
|
|
2511
|
+
}
|
|
2512
|
+
),
|
|
2513
|
+
message.timestamp && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { style: { fontSize: "12px", color: "#6b7280" }, children: new Date(message.timestamp).toLocaleTimeString() })
|
|
2514
|
+
]
|
|
2515
|
+
}
|
|
2516
|
+
),
|
|
2517
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { fontSize: "14px", color: "#1f2937", whiteSpace: "pre-wrap" }, children: message.content || "" })
|
|
2518
|
+
]
|
|
2519
|
+
},
|
|
2520
|
+
index
|
|
2521
|
+
)) });
|
|
2522
|
+
}
|
|
2523
|
+
function ContextTab({ context }) {
|
|
2524
|
+
const documents = context.getDocumentsContext([]);
|
|
2525
|
+
if (documents.length === 0) {
|
|
2526
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { style: { textAlign: "center", padding: "48px 0", color: "#6b7280" }, children: [
|
|
2527
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { style: { fontSize: "18px", margin: "0 0 8px 0" }, children: "No document context available" }),
|
|
2528
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { style: { fontSize: "14px", margin: 0 }, children: "Document context will appear here when provided" })
|
|
2529
|
+
] });
|
|
2530
|
+
}
|
|
2531
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: documents.map((doc, index) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
2532
|
+
"div",
|
|
2533
|
+
{
|
|
2534
|
+
style: {
|
|
2535
|
+
backgroundColor: "white",
|
|
2536
|
+
padding: "16px",
|
|
2537
|
+
borderRadius: "8px",
|
|
2538
|
+
boxShadow: "0 1px 3px 0 rgba(0, 0, 0, 0.1)",
|
|
2539
|
+
border: "1px solid #e5e7eb"
|
|
2540
|
+
},
|
|
2541
|
+
children: [
|
|
2542
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h3", { style: { fontWeight: "600", color: "#1f2937", margin: "0 0 8px 0" }, children: doc.name || `Document ${index + 1}` }),
|
|
2543
|
+
doc.content && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
2544
|
+
"pre",
|
|
2545
|
+
{
|
|
2546
|
+
style: {
|
|
2547
|
+
padding: "12px",
|
|
2548
|
+
backgroundColor: "#f9fafb",
|
|
2549
|
+
borderRadius: "4px",
|
|
2550
|
+
fontSize: "12px",
|
|
2551
|
+
overflowX: "auto",
|
|
2552
|
+
margin: 0
|
|
2553
|
+
},
|
|
2554
|
+
children: doc.content
|
|
2555
|
+
}
|
|
2556
|
+
)
|
|
2557
|
+
]
|
|
2558
|
+
},
|
|
2559
|
+
index
|
|
2560
|
+
)) });
|
|
2561
|
+
}
|
|
2562
|
+
|
|
2563
|
+
// src/components/dev-console/console-trigger.tsx
|
|
2564
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
2565
|
+
function ConsoleTrigger({ position = "bottom-right" }) {
|
|
2566
|
+
const context = useCopilotContext();
|
|
2567
|
+
const hasApiKey = Boolean(context.copilotApiConfig.publicApiKey);
|
|
2568
|
+
const [isModalOpen, setIsModalOpen] = (0, import_react11.useState)(false);
|
|
2569
|
+
const [isHovered, setIsHovered] = (0, import_react11.useState)(false);
|
|
2570
|
+
const [isDragging, setIsDragging] = (0, import_react11.useState)(false);
|
|
2571
|
+
const [buttonPosition, setButtonPosition] = (0, import_react11.useState)(null);
|
|
2572
|
+
const [mounted, setMounted] = (0, import_react11.useState)(false);
|
|
2573
|
+
const dragRef = (0, import_react11.useRef)(null);
|
|
2574
|
+
const buttonRef = (0, import_react11.useRef)(null);
|
|
2575
|
+
(0, import_react11.useEffect)(() => {
|
|
2576
|
+
setMounted(true);
|
|
2577
|
+
if (typeof window !== "undefined" && !buttonPosition) {
|
|
2578
|
+
const buttonSize = 60;
|
|
2579
|
+
const margin = 24;
|
|
2580
|
+
const initialPosition = {
|
|
2581
|
+
x: margin,
|
|
2582
|
+
y: window.innerHeight - buttonSize - margin
|
|
2583
|
+
};
|
|
2584
|
+
setButtonPosition(initialPosition);
|
|
2585
|
+
}
|
|
2586
|
+
}, [position]);
|
|
2587
|
+
const handleMouseDown = (e) => {
|
|
2588
|
+
e.preventDefault();
|
|
2589
|
+
if (!buttonPosition)
|
|
2590
|
+
return;
|
|
2591
|
+
dragRef.current = {
|
|
2592
|
+
startX: e.clientX,
|
|
2593
|
+
startY: e.clientY,
|
|
2594
|
+
buttonX: buttonPosition.x,
|
|
2595
|
+
buttonY: buttonPosition.y
|
|
2596
|
+
};
|
|
2597
|
+
setIsDragging(true);
|
|
2598
|
+
};
|
|
2599
|
+
(0, import_react11.useEffect)(() => {
|
|
2600
|
+
if (!isDragging)
|
|
2601
|
+
return;
|
|
2602
|
+
const handleMouseMove = (e) => {
|
|
2603
|
+
e.preventDefault();
|
|
2604
|
+
e.stopPropagation();
|
|
2605
|
+
if (!dragRef.current)
|
|
2606
|
+
return;
|
|
2607
|
+
const deltaX = e.clientX - dragRef.current.startX;
|
|
2608
|
+
const deltaY = e.clientY - dragRef.current.startY;
|
|
2609
|
+
let newX = dragRef.current.buttonX + deltaX;
|
|
2610
|
+
let newY = dragRef.current.buttonY + deltaY;
|
|
2611
|
+
newX = Math.max(0, Math.min(newX, window.innerWidth - 60));
|
|
2612
|
+
newY = Math.max(0, Math.min(newY, window.innerHeight - 60));
|
|
2613
|
+
setButtonPosition({ x: newX, y: newY });
|
|
2614
|
+
};
|
|
2615
|
+
const handleMouseUp = (e) => {
|
|
2616
|
+
e.preventDefault();
|
|
2617
|
+
e.stopPropagation();
|
|
2618
|
+
setIsDragging(false);
|
|
2619
|
+
dragRef.current = null;
|
|
2620
|
+
};
|
|
2621
|
+
document.addEventListener("mousemove", handleMouseMove, { capture: true, passive: false });
|
|
2622
|
+
document.addEventListener("mouseup", handleMouseUp, { capture: true, passive: false });
|
|
2623
|
+
return () => {
|
|
2624
|
+
document.removeEventListener("mousemove", handleMouseMove, { capture: true });
|
|
2625
|
+
document.removeEventListener("mouseup", handleMouseUp, { capture: true });
|
|
2626
|
+
};
|
|
2627
|
+
}, [isDragging]);
|
|
2628
|
+
if (!mounted || !buttonPosition) {
|
|
2629
|
+
return null;
|
|
2630
|
+
}
|
|
2631
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
2632
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
2633
|
+
"button",
|
|
2634
|
+
{
|
|
2635
|
+
ref: buttonRef,
|
|
2636
|
+
onClick: () => {
|
|
2637
|
+
if (!isDragging) {
|
|
2638
|
+
setIsModalOpen(true);
|
|
2639
|
+
}
|
|
2640
|
+
},
|
|
2641
|
+
onMouseDown: handleMouseDown,
|
|
2642
|
+
onMouseEnter: () => setIsHovered(true),
|
|
2643
|
+
onMouseLeave: () => setIsHovered(false),
|
|
2644
|
+
style: {
|
|
2645
|
+
position: "fixed",
|
|
2646
|
+
left: `${buttonPosition.x}px`,
|
|
2647
|
+
top: `${buttonPosition.y}px`,
|
|
2648
|
+
zIndex: 2147483647,
|
|
2649
|
+
width: "60px",
|
|
2650
|
+
height: "60px",
|
|
2651
|
+
background: isDragging ? "#000000" : isHovered ? "#111111" : "#000000",
|
|
2652
|
+
color: "white",
|
|
2653
|
+
borderRadius: "50%",
|
|
2654
|
+
boxShadow: isDragging ? "0 8px 32px rgba(0, 0, 0, 0.6), 0 4px 16px rgba(0, 0, 0, 0.4)" : isHovered ? "0 12px 40px rgba(0, 0, 0, 0.7), 0 6px 20px rgba(0, 0, 0, 0.5)" : "0 6px 20px rgba(0, 0, 0, 0.5), 0 3px 10px rgba(0, 0, 0, 0.3)",
|
|
2655
|
+
transition: isDragging ? "none" : "all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
2656
|
+
display: "flex",
|
|
2657
|
+
alignItems: "center",
|
|
2658
|
+
justifyContent: "center",
|
|
2659
|
+
border: "none",
|
|
2660
|
+
cursor: isDragging ? "grabbing" : "grab",
|
|
2661
|
+
opacity: 1,
|
|
2662
|
+
userSelect: "none",
|
|
2663
|
+
transform: isDragging ? "scale(1.05)" : isHovered ? "scale(1.1)" : "scale(1)",
|
|
2664
|
+
backdropFilter: "blur(10px)",
|
|
2665
|
+
pointerEvents: "auto",
|
|
2666
|
+
isolation: "isolate"
|
|
2667
|
+
},
|
|
2668
|
+
title: hasApiKey ? "Open Developer Console (Drag to move)" : "Developer Console (API Key Required, Drag to move)",
|
|
2669
|
+
children: [
|
|
2670
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2671
|
+
"div",
|
|
2672
|
+
{
|
|
2673
|
+
style: {
|
|
2674
|
+
width: "28px",
|
|
2675
|
+
height: "28px",
|
|
2676
|
+
display: "flex",
|
|
2677
|
+
alignItems: "center",
|
|
2678
|
+
justifyContent: "center",
|
|
2679
|
+
filter: "drop-shadow(0 2px 4px rgba(0,0,0,0.2))"
|
|
2680
|
+
},
|
|
2681
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(CopilotKitIcon, {})
|
|
2682
|
+
}
|
|
2683
|
+
),
|
|
2684
|
+
!hasApiKey && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2685
|
+
"div",
|
|
2686
|
+
{
|
|
2687
|
+
style: {
|
|
2688
|
+
position: "absolute",
|
|
2689
|
+
top: "-2px",
|
|
2690
|
+
right: "-2px",
|
|
2691
|
+
width: "18px",
|
|
2692
|
+
height: "18px",
|
|
2693
|
+
background: "linear-gradient(135deg, #ff6b6b 0%, #ee5a24 100%)",
|
|
2694
|
+
borderRadius: "50%",
|
|
2695
|
+
display: "flex",
|
|
2696
|
+
alignItems: "center",
|
|
2697
|
+
justifyContent: "center",
|
|
2698
|
+
boxShadow: "0 2px 8px rgba(255, 107, 107, 0.4)",
|
|
2699
|
+
border: "2px solid white"
|
|
2700
|
+
},
|
|
2701
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { style: { fontSize: "10px", color: "white", fontWeight: "bold" }, children: "!" })
|
|
2702
|
+
}
|
|
2703
|
+
)
|
|
2704
|
+
]
|
|
2705
|
+
}
|
|
2706
|
+
),
|
|
2707
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
2708
|
+
DeveloperConsoleModal,
|
|
2709
|
+
{
|
|
2710
|
+
isOpen: isModalOpen,
|
|
2711
|
+
onClose: () => setIsModalOpen(false),
|
|
2712
|
+
hasApiKey
|
|
2713
|
+
}
|
|
2714
|
+
)
|
|
2715
|
+
] });
|
|
2716
|
+
}
|
|
2717
|
+
|
|
2718
|
+
// src/components/copilot-provider/copilotkit.tsx
|
|
2719
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
1759
2720
|
function CopilotKit(_a) {
|
|
1760
2721
|
var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
|
|
1761
2722
|
const enabled = shouldShowDevConsole(props.showDevConsole);
|
|
1762
|
-
return /* @__PURE__ */ (0,
|
|
2723
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ToastProvider, { enabled, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CopilotErrorBoundary, { publicApiKey: props.publicApiKey, showUsageBanner: enabled, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(CopilotKitInternal, __spreadProps(__spreadValues({}, props), { children })) }) });
|
|
1763
2724
|
}
|
|
1764
2725
|
function CopilotKitInternal(cpkProps) {
|
|
1765
2726
|
const _a = cpkProps, { children } = _a, props = __objRest(_a, ["children"]);
|
|
1766
2727
|
validateProps(cpkProps);
|
|
1767
|
-
const chatApiEndpoint = props.runtimeUrl ||
|
|
1768
|
-
const [actions, setActions] = (0,
|
|
1769
|
-
const [coAgentStateRenders, setCoAgentStateRenders] = (0,
|
|
1770
|
-
const chatComponentsCache = (0,
|
|
2728
|
+
const chatApiEndpoint = props.runtimeUrl || import_shared12.COPILOT_CLOUD_CHAT_URL;
|
|
2729
|
+
const [actions, setActions] = (0, import_react12.useState)({});
|
|
2730
|
+
const [coAgentStateRenders, setCoAgentStateRenders] = (0, import_react12.useState)({});
|
|
2731
|
+
const chatComponentsCache = (0, import_react12.useRef)({
|
|
1771
2732
|
actions: {},
|
|
1772
2733
|
coAgentStateRenders: {}
|
|
1773
2734
|
});
|
|
1774
2735
|
const { addElement, removeElement, printTree, getAllElements } = use_tree_default();
|
|
1775
|
-
const [isLoading, setIsLoading] = (0,
|
|
1776
|
-
const [chatInstructions, setChatInstructions] = (0,
|
|
1777
|
-
const [authStates, setAuthStates] = (0,
|
|
1778
|
-
const [extensions, setExtensions] = (0,
|
|
1779
|
-
const [additionalInstructions, setAdditionalInstructions] = (0,
|
|
2736
|
+
const [isLoading, setIsLoading] = (0, import_react12.useState)(false);
|
|
2737
|
+
const [chatInstructions, setChatInstructions] = (0, import_react12.useState)("");
|
|
2738
|
+
const [authStates, setAuthStates] = (0, import_react12.useState)({});
|
|
2739
|
+
const [extensions, setExtensions] = (0, import_react12.useState)({});
|
|
2740
|
+
const [additionalInstructions, setAdditionalInstructions] = (0, import_react12.useState)([]);
|
|
1780
2741
|
const {
|
|
1781
2742
|
addElement: addDocument,
|
|
1782
2743
|
removeElement: removeDocument,
|
|
1783
2744
|
allElements: allDocuments
|
|
1784
2745
|
} = use_flat_category_store_default();
|
|
1785
|
-
const
|
|
1786
|
-
const [usageBannerStatus, setUsageBannerStatus] = (0, import_react10.useState)(null);
|
|
1787
|
-
const setAction = (0, import_react10.useCallback)((id, action) => {
|
|
2746
|
+
const setAction = (0, import_react12.useCallback)((id, action) => {
|
|
1788
2747
|
setActions((prevPoints) => {
|
|
1789
2748
|
return __spreadProps(__spreadValues({}, prevPoints), {
|
|
1790
2749
|
[id]: action
|
|
1791
2750
|
});
|
|
1792
2751
|
});
|
|
1793
2752
|
}, []);
|
|
1794
|
-
const removeAction = (0,
|
|
2753
|
+
const removeAction = (0, import_react12.useCallback)((id) => {
|
|
1795
2754
|
setActions((prevPoints) => {
|
|
1796
2755
|
const newPoints = __spreadValues({}, prevPoints);
|
|
1797
2756
|
delete newPoints[id];
|
|
1798
2757
|
return newPoints;
|
|
1799
2758
|
});
|
|
1800
2759
|
}, []);
|
|
1801
|
-
const setCoAgentStateRender = (0,
|
|
2760
|
+
const setCoAgentStateRender = (0, import_react12.useCallback)((id, stateRender) => {
|
|
1802
2761
|
setCoAgentStateRenders((prevPoints) => {
|
|
1803
2762
|
return __spreadProps(__spreadValues({}, prevPoints), {
|
|
1804
2763
|
[id]: stateRender
|
|
1805
2764
|
});
|
|
1806
2765
|
});
|
|
1807
2766
|
}, []);
|
|
1808
|
-
const removeCoAgentStateRender = (0,
|
|
2767
|
+
const removeCoAgentStateRender = (0, import_react12.useCallback)((id) => {
|
|
1809
2768
|
setCoAgentStateRenders((prevPoints) => {
|
|
1810
2769
|
const newPoints = __spreadValues({}, prevPoints);
|
|
1811
2770
|
delete newPoints[id];
|
|
1812
2771
|
return newPoints;
|
|
1813
2772
|
});
|
|
1814
2773
|
}, []);
|
|
1815
|
-
const getContextString = (0,
|
|
2774
|
+
const getContextString = (0, import_react12.useCallback)(
|
|
1816
2775
|
(documents, categories) => {
|
|
1817
|
-
const documentsString = documents.map((
|
|
1818
|
-
return `${
|
|
1819
|
-
${
|
|
2776
|
+
const documentsString = documents.map((document2) => {
|
|
2777
|
+
return `${document2.name} (${document2.sourceApplication}):
|
|
2778
|
+
${document2.getContents()}`;
|
|
1820
2779
|
}).join("\n\n");
|
|
1821
2780
|
const nonDocumentStrings = printTree(categories);
|
|
1822
2781
|
return `${documentsString}
|
|
@@ -1825,46 +2784,46 @@ ${nonDocumentStrings}`;
|
|
|
1825
2784
|
},
|
|
1826
2785
|
[printTree]
|
|
1827
2786
|
);
|
|
1828
|
-
const addContext = (0,
|
|
2787
|
+
const addContext = (0, import_react12.useCallback)(
|
|
1829
2788
|
(context, parentId, categories = defaultCopilotContextCategories) => {
|
|
1830
2789
|
return addElement(context, categories, parentId);
|
|
1831
2790
|
},
|
|
1832
2791
|
[addElement]
|
|
1833
2792
|
);
|
|
1834
|
-
const removeContext = (0,
|
|
2793
|
+
const removeContext = (0, import_react12.useCallback)(
|
|
1835
2794
|
(id) => {
|
|
1836
2795
|
removeElement(id);
|
|
1837
2796
|
},
|
|
1838
2797
|
[removeElement]
|
|
1839
2798
|
);
|
|
1840
|
-
const getAllContext = (0,
|
|
2799
|
+
const getAllContext = (0, import_react12.useCallback)(() => {
|
|
1841
2800
|
return getAllElements();
|
|
1842
2801
|
}, [getAllElements]);
|
|
1843
|
-
const getFunctionCallHandler = (0,
|
|
2802
|
+
const getFunctionCallHandler = (0, import_react12.useCallback)(
|
|
1844
2803
|
(customEntryPoints) => {
|
|
1845
2804
|
return entryPointsToFunctionCallHandler(Object.values(customEntryPoints || actions));
|
|
1846
2805
|
},
|
|
1847
2806
|
[actions]
|
|
1848
2807
|
);
|
|
1849
|
-
const getDocumentsContext = (0,
|
|
2808
|
+
const getDocumentsContext = (0, import_react12.useCallback)(
|
|
1850
2809
|
(categories) => {
|
|
1851
2810
|
return allDocuments(categories);
|
|
1852
2811
|
},
|
|
1853
2812
|
[allDocuments]
|
|
1854
2813
|
);
|
|
1855
|
-
const addDocumentContext = (0,
|
|
2814
|
+
const addDocumentContext = (0, import_react12.useCallback)(
|
|
1856
2815
|
(documentPointer, categories = defaultCopilotContextCategories) => {
|
|
1857
2816
|
return addDocument(documentPointer, categories);
|
|
1858
2817
|
},
|
|
1859
2818
|
[addDocument]
|
|
1860
2819
|
);
|
|
1861
|
-
const removeDocumentContext = (0,
|
|
2820
|
+
const removeDocumentContext = (0, import_react12.useCallback)(
|
|
1862
2821
|
(documentId) => {
|
|
1863
2822
|
removeDocument(documentId);
|
|
1864
2823
|
},
|
|
1865
2824
|
[removeDocument]
|
|
1866
2825
|
);
|
|
1867
|
-
const copilotApiConfig = (0,
|
|
2826
|
+
const copilotApiConfig = (0, import_react12.useMemo)(() => {
|
|
1868
2827
|
var _a2, _b;
|
|
1869
2828
|
let cloud = void 0;
|
|
1870
2829
|
if (props.publicApiKey) {
|
|
@@ -1900,7 +2859,7 @@ ${nonDocumentStrings}`;
|
|
|
1900
2859
|
props.cloudRestrictToTopic,
|
|
1901
2860
|
props.guardrails_c
|
|
1902
2861
|
]);
|
|
1903
|
-
const headers = (0,
|
|
2862
|
+
const headers = (0, import_react12.useMemo)(() => {
|
|
1904
2863
|
const authHeaders = Object.values(authStates || {}).reduce((acc, state) => {
|
|
1905
2864
|
if (state.status === "authenticated" && state.authHeaders) {
|
|
1906
2865
|
return __spreadValues(__spreadValues({}, acc), Object.entries(state.authHeaders).reduce(
|
|
@@ -1912,7 +2871,7 @@ ${nonDocumentStrings}`;
|
|
|
1912
2871
|
}
|
|
1913
2872
|
return acc;
|
|
1914
2873
|
}, {});
|
|
1915
|
-
return __spreadValues(__spreadValues(__spreadValues({}, copilotApiConfig.headers || {}), copilotApiConfig.publicApiKey ? { [
|
|
2874
|
+
return __spreadValues(__spreadValues(__spreadValues({}, copilotApiConfig.headers || {}), copilotApiConfig.publicApiKey ? { [import_shared12.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: copilotApiConfig.publicApiKey } : {}), authHeaders);
|
|
1916
2875
|
}, [copilotApiConfig.headers, copilotApiConfig.publicApiKey, authStates]);
|
|
1917
2876
|
const runtimeClient = useCopilotRuntimeClient({
|
|
1918
2877
|
url: copilotApiConfig.chatApiEndpoint,
|
|
@@ -1922,14 +2881,14 @@ ${nonDocumentStrings}`;
|
|
|
1922
2881
|
showDevConsole: shouldShowDevConsole(props.showDevConsole),
|
|
1923
2882
|
onError: props.onError
|
|
1924
2883
|
});
|
|
1925
|
-
const [chatSuggestionConfiguration, setChatSuggestionConfiguration] = (0,
|
|
1926
|
-
const addChatSuggestionConfiguration = (0,
|
|
2884
|
+
const [chatSuggestionConfiguration, setChatSuggestionConfiguration] = (0, import_react12.useState)({});
|
|
2885
|
+
const addChatSuggestionConfiguration = (0, import_react12.useCallback)(
|
|
1927
2886
|
(id, suggestion) => {
|
|
1928
2887
|
setChatSuggestionConfiguration((prev) => __spreadProps(__spreadValues({}, prev), { [id]: suggestion }));
|
|
1929
2888
|
},
|
|
1930
2889
|
[setChatSuggestionConfiguration]
|
|
1931
2890
|
);
|
|
1932
|
-
const removeChatSuggestionConfiguration = (0,
|
|
2891
|
+
const removeChatSuggestionConfiguration = (0, import_react12.useCallback)(
|
|
1933
2892
|
(id) => {
|
|
1934
2893
|
setChatSuggestionConfiguration((prev) => {
|
|
1935
2894
|
const _a2 = prev, { [id]: _ } = _a2, rest = __objRest(_a2, [__restKey(id)]);
|
|
@@ -1938,10 +2897,10 @@ ${nonDocumentStrings}`;
|
|
|
1938
2897
|
},
|
|
1939
2898
|
[setChatSuggestionConfiguration]
|
|
1940
2899
|
);
|
|
1941
|
-
const [availableAgents, setAvailableAgents] = (0,
|
|
1942
|
-
const [coagentStates, setCoagentStates] = (0,
|
|
1943
|
-
const coagentStatesRef = (0,
|
|
1944
|
-
const setCoagentStatesWithRef = (0,
|
|
2900
|
+
const [availableAgents, setAvailableAgents] = (0, import_react12.useState)([]);
|
|
2901
|
+
const [coagentStates, setCoagentStates] = (0, import_react12.useState)({});
|
|
2902
|
+
const coagentStatesRef = (0, import_react12.useRef)({});
|
|
2903
|
+
const setCoagentStatesWithRef = (0, import_react12.useCallback)(
|
|
1945
2904
|
(value) => {
|
|
1946
2905
|
const newValue = typeof value === "function" ? value(coagentStatesRef.current) : value;
|
|
1947
2906
|
coagentStatesRef.current = newValue;
|
|
@@ -1951,8 +2910,8 @@ ${nonDocumentStrings}`;
|
|
|
1951
2910
|
},
|
|
1952
2911
|
[]
|
|
1953
2912
|
);
|
|
1954
|
-
const hasLoadedAgents = (0,
|
|
1955
|
-
(0,
|
|
2913
|
+
const hasLoadedAgents = (0, import_react12.useRef)(false);
|
|
2914
|
+
(0, import_react12.useEffect)(() => {
|
|
1956
2915
|
if (hasLoadedAgents.current)
|
|
1957
2916
|
return;
|
|
1958
2917
|
const fetchData = () => __async(this, null, function* () {
|
|
@@ -1971,8 +2930,8 @@ ${nonDocumentStrings}`;
|
|
|
1971
2930
|
agentName: props.agent
|
|
1972
2931
|
};
|
|
1973
2932
|
}
|
|
1974
|
-
const [agentSession, setAgentSession] = (0,
|
|
1975
|
-
(0,
|
|
2933
|
+
const [agentSession, setAgentSession] = (0, import_react12.useState)(initialAgentSession);
|
|
2934
|
+
(0, import_react12.useEffect)(() => {
|
|
1976
2935
|
if (props.agent) {
|
|
1977
2936
|
setAgentSession({
|
|
1978
2937
|
agentName: props.agent
|
|
@@ -1981,8 +2940,8 @@ ${nonDocumentStrings}`;
|
|
|
1981
2940
|
setAgentSession(null);
|
|
1982
2941
|
}
|
|
1983
2942
|
}, [props.agent]);
|
|
1984
|
-
const [internalThreadId, setInternalThreadId] = (0,
|
|
1985
|
-
const setThreadId = (0,
|
|
2943
|
+
const [internalThreadId, setInternalThreadId] = (0, import_react12.useState)(props.threadId || (0, import_shared12.randomUUID)());
|
|
2944
|
+
const setThreadId = (0, import_react12.useCallback)(
|
|
1986
2945
|
(value) => {
|
|
1987
2946
|
if (props.threadId) {
|
|
1988
2947
|
throw new Error("Cannot call setThreadId() when threadId is provided via props.");
|
|
@@ -1991,16 +2950,16 @@ ${nonDocumentStrings}`;
|
|
|
1991
2950
|
},
|
|
1992
2951
|
[props.threadId]
|
|
1993
2952
|
);
|
|
1994
|
-
(0,
|
|
2953
|
+
(0, import_react12.useEffect)(() => {
|
|
1995
2954
|
if (props.threadId !== void 0) {
|
|
1996
2955
|
setInternalThreadId(props.threadId);
|
|
1997
2956
|
}
|
|
1998
2957
|
}, [props.threadId]);
|
|
1999
|
-
const [runId, setRunId] = (0,
|
|
2000
|
-
const chatAbortControllerRef = (0,
|
|
2958
|
+
const [runId, setRunId] = (0, import_react12.useState)(null);
|
|
2959
|
+
const chatAbortControllerRef = (0, import_react12.useRef)(null);
|
|
2001
2960
|
const showDevConsole = shouldShowDevConsole(props.showDevConsole);
|
|
2002
|
-
const [langGraphInterruptAction, _setLangGraphInterruptAction] = (0,
|
|
2003
|
-
const setLangGraphInterruptAction = (0,
|
|
2961
|
+
const [langGraphInterruptAction, _setLangGraphInterruptAction] = (0, import_react12.useState)(null);
|
|
2962
|
+
const setLangGraphInterruptAction = (0, import_react12.useCallback)((action) => {
|
|
2004
2963
|
_setLangGraphInterruptAction((prev) => {
|
|
2005
2964
|
if (prev == null)
|
|
2006
2965
|
return action;
|
|
@@ -2013,23 +2972,23 @@ ${nonDocumentStrings}`;
|
|
|
2013
2972
|
return __spreadProps(__spreadValues(__spreadValues({}, prev), action), { event });
|
|
2014
2973
|
});
|
|
2015
2974
|
}, []);
|
|
2016
|
-
const removeLangGraphInterruptAction = (0,
|
|
2975
|
+
const removeLangGraphInterruptAction = (0, import_react12.useCallback)(() => {
|
|
2017
2976
|
setLangGraphInterruptAction(null);
|
|
2018
2977
|
}, []);
|
|
2019
|
-
const memoizedChildren = (0,
|
|
2020
|
-
const [bannerError, setBannerError] = (0,
|
|
2021
|
-
const agentLock = (0,
|
|
2978
|
+
const memoizedChildren = (0, import_react12.useMemo)(() => children, [children]);
|
|
2979
|
+
const [bannerError, setBannerError] = (0, import_react12.useState)(null);
|
|
2980
|
+
const agentLock = (0, import_react12.useMemo)(() => {
|
|
2022
2981
|
var _a2;
|
|
2023
2982
|
return (_a2 = props.agent) != null ? _a2 : null;
|
|
2024
2983
|
}, [props.agent]);
|
|
2025
|
-
const forwardedParameters = (0,
|
|
2984
|
+
const forwardedParameters = (0, import_react12.useMemo)(
|
|
2026
2985
|
() => {
|
|
2027
2986
|
var _a2;
|
|
2028
2987
|
return (_a2 = props.forwardedParameters) != null ? _a2 : {};
|
|
2029
2988
|
},
|
|
2030
2989
|
[props.forwardedParameters]
|
|
2031
2990
|
);
|
|
2032
|
-
const updateExtensions = (0,
|
|
2991
|
+
const updateExtensions = (0, import_react12.useCallback)(
|
|
2033
2992
|
(newExtensions) => {
|
|
2034
2993
|
setExtensions((prev) => {
|
|
2035
2994
|
const resolved = typeof newExtensions === "function" ? newExtensions(prev) : newExtensions;
|
|
@@ -2041,7 +3000,7 @@ ${nonDocumentStrings}`;
|
|
|
2041
3000
|
},
|
|
2042
3001
|
[setExtensions]
|
|
2043
3002
|
);
|
|
2044
|
-
const updateAuthStates = (0,
|
|
3003
|
+
const updateAuthStates = (0, import_react12.useCallback)(
|
|
2045
3004
|
(newAuthStates) => {
|
|
2046
3005
|
setAuthStates((prev) => {
|
|
2047
3006
|
const resolved = typeof newAuthStates === "function" ? newAuthStates(prev) : newAuthStates;
|
|
@@ -2053,7 +3012,7 @@ ${nonDocumentStrings}`;
|
|
|
2053
3012
|
},
|
|
2054
3013
|
[setAuthStates]
|
|
2055
3014
|
);
|
|
2056
|
-
return /* @__PURE__ */ (0,
|
|
3015
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
2057
3016
|
CopilotContext.Provider,
|
|
2058
3017
|
{
|
|
2059
3018
|
value: {
|
|
@@ -2111,8 +3070,11 @@ ${nonDocumentStrings}`;
|
|
|
2111
3070
|
setBannerError
|
|
2112
3071
|
},
|
|
2113
3072
|
children: [
|
|
2114
|
-
/* @__PURE__ */ (0,
|
|
2115
|
-
|
|
3073
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MessagesTapProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(CopilotMessages, { children: [
|
|
3074
|
+
memoizedChildren,
|
|
3075
|
+
showDevConsole && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ConsoleTrigger, {})
|
|
3076
|
+
] }) }),
|
|
3077
|
+
bannerError && showDevConsole && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
2116
3078
|
UsageBanner,
|
|
2117
3079
|
{
|
|
2118
3080
|
severity: bannerError.severity,
|
|
@@ -2157,27 +3119,27 @@ function formatFeatureName(featureName) {
|
|
|
2157
3119
|
function validateProps(props) {
|
|
2158
3120
|
const cloudFeatures = Object.keys(props).filter((key) => key.endsWith("_c"));
|
|
2159
3121
|
if (!props.runtimeUrl && !props.publicApiKey) {
|
|
2160
|
-
throw new
|
|
3122
|
+
throw new import_shared12.ConfigurationError("Missing required prop: 'runtimeUrl' or 'publicApiKey'");
|
|
2161
3123
|
}
|
|
2162
3124
|
if (cloudFeatures.length > 0 && !props.publicApiKey) {
|
|
2163
|
-
throw new
|
|
3125
|
+
throw new import_shared12.MissingPublicApiKeyError(
|
|
2164
3126
|
`Missing required prop: 'publicApiKey' to use cloud features: ${cloudFeatures.map(formatFeatureName).join(", ")}`
|
|
2165
3127
|
);
|
|
2166
3128
|
}
|
|
2167
3129
|
}
|
|
2168
3130
|
|
|
2169
3131
|
// src/hooks/use-copilot-chat_internal.ts
|
|
2170
|
-
var
|
|
3132
|
+
var import_react15 = require("react");
|
|
2171
3133
|
|
|
2172
3134
|
// src/hooks/use-chat.ts
|
|
2173
|
-
var
|
|
3135
|
+
var import_react13 = require("react");
|
|
2174
3136
|
var import_react_dom2 = require("react-dom");
|
|
2175
|
-
var
|
|
3137
|
+
var import_shared14 = require("@copilotkit/shared");
|
|
2176
3138
|
var import_runtime_client_gql7 = require("@copilotkit/runtime-client-gql");
|
|
2177
3139
|
|
|
2178
3140
|
// src/types/frontend-action.ts
|
|
2179
3141
|
var import_runtime_client_gql6 = require("@copilotkit/runtime-client-gql");
|
|
2180
|
-
var
|
|
3142
|
+
var import_shared13 = require("@copilotkit/shared");
|
|
2181
3143
|
function processActionsForRuntimeRequest(actions) {
|
|
2182
3144
|
const filteredActions = actions.filter(
|
|
2183
3145
|
(action) => action.available !== import_runtime_client_gql6.ActionInputAvailability.Disabled && action.disabled !== true && action.name !== "*" && action.available != "frontend" && !action.pairedAction
|
|
@@ -2193,7 +3155,7 @@ function processActionsForRuntimeRequest(actions) {
|
|
|
2193
3155
|
return {
|
|
2194
3156
|
name: action.name,
|
|
2195
3157
|
description: action.description || "",
|
|
2196
|
-
jsonSchema: JSON.stringify((0,
|
|
3158
|
+
jsonSchema: JSON.stringify((0, import_shared13.actionParametersToJsonSchema)(action.parameters || [])),
|
|
2197
3159
|
available
|
|
2198
3160
|
};
|
|
2199
3161
|
});
|
|
@@ -2228,7 +3190,7 @@ function useChat(options) {
|
|
|
2228
3190
|
langGraphInterruptAction,
|
|
2229
3191
|
setLangGraphInterruptAction
|
|
2230
3192
|
} = options;
|
|
2231
|
-
const runChatCompletionRef = (0,
|
|
3193
|
+
const runChatCompletionRef = (0, import_react13.useRef)();
|
|
2232
3194
|
const addErrorToast = useErrorToast();
|
|
2233
3195
|
const { setBannerError } = useToast();
|
|
2234
3196
|
const { onError } = useCopilotContext();
|
|
@@ -2259,14 +3221,14 @@ function useChat(options) {
|
|
|
2259
3221
|
console.error("Error in use-chat onError handler:", traceError);
|
|
2260
3222
|
}
|
|
2261
3223
|
});
|
|
2262
|
-
const agentSessionRef = (0,
|
|
3224
|
+
const agentSessionRef = (0, import_react13.useRef)(agentSession);
|
|
2263
3225
|
agentSessionRef.current = agentSession;
|
|
2264
|
-
const runIdRef = (0,
|
|
3226
|
+
const runIdRef = (0, import_react13.useRef)(runId);
|
|
2265
3227
|
runIdRef.current = runId;
|
|
2266
|
-
const extensionsRef = (0,
|
|
3228
|
+
const extensionsRef = (0, import_react13.useRef)(extensions);
|
|
2267
3229
|
extensionsRef.current = extensions;
|
|
2268
3230
|
const publicApiKey = copilotConfig.publicApiKey;
|
|
2269
|
-
const headers = __spreadValues(__spreadValues({}, copilotConfig.headers || {}), publicApiKey ? { [
|
|
3231
|
+
const headers = __spreadValues(__spreadValues({}, copilotConfig.headers || {}), publicApiKey ? { [import_shared14.COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: publicApiKey } : {});
|
|
2270
3232
|
const { showDevConsole } = useCopilotContext();
|
|
2271
3233
|
const runtimeClient = useCopilotRuntimeClient({
|
|
2272
3234
|
url: copilotConfig.chatApiEndpoint,
|
|
@@ -2275,7 +3237,7 @@ function useChat(options) {
|
|
|
2275
3237
|
credentials: copilotConfig.credentials,
|
|
2276
3238
|
showDevConsole
|
|
2277
3239
|
});
|
|
2278
|
-
const pendingAppendsRef = (0,
|
|
3240
|
+
const pendingAppendsRef = (0, import_react13.useRef)([]);
|
|
2279
3241
|
const runChatCompletion = useAsyncCallback(
|
|
2280
3242
|
(previousMessages) => __async(this, null, function* () {
|
|
2281
3243
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t;
|
|
@@ -2391,7 +3353,7 @@ function useChat(options) {
|
|
|
2391
3353
|
(metaEvents != null ? metaEvents : []).forEach((ev) => {
|
|
2392
3354
|
if (ev.name === import_runtime_client_gql7.MetaEventName.LangGraphInterruptEvent) {
|
|
2393
3355
|
let eventValue = (0, import_runtime_client_gql7.langGraphInterruptEvent)(ev).value;
|
|
2394
|
-
eventValue = (0,
|
|
3356
|
+
eventValue = (0, import_shared14.parseJson)(eventValue, eventValue);
|
|
2395
3357
|
setLangGraphInterruptAction({
|
|
2396
3358
|
event: __spreadProps(__spreadValues({}, (0, import_runtime_client_gql7.langGraphInterruptEvent)(ev)), {
|
|
2397
3359
|
value: eventValue
|
|
@@ -2419,9 +3381,9 @@ function useChat(options) {
|
|
|
2419
3381
|
content: guardrailsReason
|
|
2420
3382
|
})
|
|
2421
3383
|
];
|
|
2422
|
-
const guardrailsError = new
|
|
3384
|
+
const guardrailsError = new import_shared14.CopilotKitError({
|
|
2423
3385
|
message: `Guardrails validation failed: ${guardrailsReason}`,
|
|
2424
|
-
code:
|
|
3386
|
+
code: import_shared14.CopilotKitErrorCode.MISUSE
|
|
2425
3387
|
});
|
|
2426
3388
|
yield traceUIError(guardrailsError, {
|
|
2427
3389
|
statusReason: value.generateCopilotResponse.status.reason,
|
|
@@ -2437,11 +3399,11 @@ function useChat(options) {
|
|
|
2437
3399
|
const originalCode = (originalError == null ? void 0 : originalError.code) || ((_o = originalError == null ? void 0 : originalError.extensions) == null ? void 0 : _o.code);
|
|
2438
3400
|
const originalSeverity = (originalError == null ? void 0 : originalError.severity) || ((_p = originalError == null ? void 0 : originalError.extensions) == null ? void 0 : _p.severity);
|
|
2439
3401
|
const originalVisibility = (originalError == null ? void 0 : originalError.visibility) || ((_q = originalError == null ? void 0 : originalError.extensions) == null ? void 0 : _q.visibility);
|
|
2440
|
-
let errorCode =
|
|
2441
|
-
if (originalCode && Object.values(
|
|
3402
|
+
let errorCode = import_shared14.CopilotKitErrorCode.NETWORK_ERROR;
|
|
3403
|
+
if (originalCode && Object.values(import_shared14.CopilotKitErrorCode).includes(originalCode)) {
|
|
2442
3404
|
errorCode = originalCode;
|
|
2443
3405
|
}
|
|
2444
|
-
const structuredError = new
|
|
3406
|
+
const structuredError = new import_shared14.CopilotKitError({
|
|
2445
3407
|
message: errorMessage,
|
|
2446
3408
|
code: errorCode,
|
|
2447
3409
|
severity: originalSeverity,
|
|
@@ -2503,7 +3465,7 @@ function useChat(options) {
|
|
|
2503
3465
|
} else {
|
|
2504
3466
|
if (agentLock) {
|
|
2505
3467
|
setAgentSession({
|
|
2506
|
-
threadId: (0,
|
|
3468
|
+
threadId: (0, import_shared14.randomId)(),
|
|
2507
3469
|
agentName: agentLock,
|
|
2508
3470
|
nodeName: void 0
|
|
2509
3471
|
});
|
|
@@ -2590,7 +3552,7 @@ function useChat(options) {
|
|
|
2590
3552
|
if (pairedFeAction) {
|
|
2591
3553
|
const newExecutionMessage = new import_runtime_client_gql7.ActionExecutionMessage({
|
|
2592
3554
|
name: pairedFeAction.name,
|
|
2593
|
-
arguments: (0,
|
|
3555
|
+
arguments: (0, import_shared14.parseJson)(resultMessage.result, resultMessage.result),
|
|
2594
3556
|
status: message.status,
|
|
2595
3557
|
createdAt: message.createdAt,
|
|
2596
3558
|
parentMessageId: message.parentMessageId
|
|
@@ -2601,7 +3563,7 @@ function useChat(options) {
|
|
|
2601
3563
|
} else if (message.isResultMessage() && currentResultMessagePairedFeAction) {
|
|
2602
3564
|
const newExecutionMessage = new import_runtime_client_gql7.ActionExecutionMessage({
|
|
2603
3565
|
name: currentResultMessagePairedFeAction.name,
|
|
2604
|
-
arguments: (0,
|
|
3566
|
+
arguments: (0, import_shared14.parseJson)(message.result, message.result),
|
|
2605
3567
|
status: message.status,
|
|
2606
3568
|
createdAt: message.createdAt
|
|
2607
3569
|
});
|
|
@@ -2669,7 +3631,7 @@ function useChat(options) {
|
|
|
2669
3631
|
}),
|
|
2670
3632
|
[messages]
|
|
2671
3633
|
);
|
|
2672
|
-
(0,
|
|
3634
|
+
(0, import_react13.useEffect)(() => {
|
|
2673
3635
|
if (!isLoading && pendingAppendsRef.current.length > 0) {
|
|
2674
3636
|
const pending = pendingAppendsRef.current.splice(0);
|
|
2675
3637
|
const followUp = pending.some((p) => p.followUp);
|
|
@@ -2680,7 +3642,7 @@ function useChat(options) {
|
|
|
2680
3642
|
}
|
|
2681
3643
|
}
|
|
2682
3644
|
}, [isLoading, messages, setMessages, runChatCompletionAndHandleFunctionCall]);
|
|
2683
|
-
const composeAndFlushMetaEventsInput = (0,
|
|
3645
|
+
const composeAndFlushMetaEventsInput = (0, import_react13.useCallback)(
|
|
2684
3646
|
(metaEvents) => {
|
|
2685
3647
|
return metaEvents.reduce((acc, event) => {
|
|
2686
3648
|
if (!event)
|
|
@@ -2861,14 +3823,14 @@ function getPairedFeAction(actions, message) {
|
|
|
2861
3823
|
var import_runtime_client_gql8 = require("@copilotkit/runtime-client-gql");
|
|
2862
3824
|
|
|
2863
3825
|
// src/hooks/use-langgraph-interrupt-render.ts
|
|
2864
|
-
var
|
|
3826
|
+
var import_react14 = __toESM(require("react"));
|
|
2865
3827
|
var InterruptRenderer = ({ event, result, render, resolve }) => {
|
|
2866
3828
|
return render({ event, result, resolve });
|
|
2867
3829
|
};
|
|
2868
3830
|
function useLangGraphInterruptRender() {
|
|
2869
3831
|
const { langGraphInterruptAction, setLangGraphInterruptAction, agentSession } = useCopilotContext();
|
|
2870
|
-
const responseRef =
|
|
2871
|
-
const resolveInterrupt = (0,
|
|
3832
|
+
const responseRef = import_react14.default.useRef();
|
|
3833
|
+
const resolveInterrupt = (0, import_react14.useCallback)(
|
|
2872
3834
|
(response) => {
|
|
2873
3835
|
responseRef.current = response;
|
|
2874
3836
|
setTimeout(() => {
|
|
@@ -2891,7 +3853,7 @@ function useLangGraphInterruptRender() {
|
|
|
2891
3853
|
resolve: resolveInterrupt
|
|
2892
3854
|
});
|
|
2893
3855
|
}
|
|
2894
|
-
return
|
|
3856
|
+
return import_react14.default.createElement(InterruptRenderer, {
|
|
2895
3857
|
event,
|
|
2896
3858
|
result,
|
|
2897
3859
|
render,
|
|
@@ -2932,10 +3894,10 @@ function useCopilotChat(options = {}) {
|
|
|
2932
3894
|
runtimeClient
|
|
2933
3895
|
} = useCopilotContext();
|
|
2934
3896
|
const { messages, setMessages, suggestions, setSuggestions } = useCopilotMessagesContext();
|
|
2935
|
-
const [mcpServers, setLocalMcpServers] = (0,
|
|
2936
|
-
const suggestionsAbortControllerRef = (0,
|
|
2937
|
-
const isLoadingSuggestionsRef = (0,
|
|
2938
|
-
const abortSuggestions = (0,
|
|
3897
|
+
const [mcpServers, setLocalMcpServers] = (0, import_react15.useState)([]);
|
|
3898
|
+
const suggestionsAbortControllerRef = (0, import_react15.useRef)(null);
|
|
3899
|
+
const isLoadingSuggestionsRef = (0, import_react15.useRef)(false);
|
|
3900
|
+
const abortSuggestions = (0, import_react15.useCallback)(
|
|
2939
3901
|
(clear = true) => {
|
|
2940
3902
|
var _a2;
|
|
2941
3903
|
(_a2 = suggestionsAbortControllerRef.current) == null ? void 0 : _a2.abort("suggestions aborted by user");
|
|
@@ -2946,7 +3908,7 @@ function useCopilotChat(options = {}) {
|
|
|
2946
3908
|
},
|
|
2947
3909
|
[setSuggestions]
|
|
2948
3910
|
);
|
|
2949
|
-
const stableContext = (0,
|
|
3911
|
+
const stableContext = (0, import_react15.useMemo)(() => {
|
|
2950
3912
|
return {
|
|
2951
3913
|
actions,
|
|
2952
3914
|
copilotApiConfig,
|
|
@@ -2962,7 +3924,7 @@ function useCopilotChat(options = {}) {
|
|
|
2962
3924
|
messages.length,
|
|
2963
3925
|
Object.keys(chatSuggestionConfiguration).length
|
|
2964
3926
|
]);
|
|
2965
|
-
const generateSuggestionsFunc = (0,
|
|
3927
|
+
const generateSuggestionsFunc = (0, import_react15.useCallback)(() => __async(this, null, function* () {
|
|
2966
3928
|
if (globalSuggestionPromise) {
|
|
2967
3929
|
return globalSuggestionPromise;
|
|
2968
3930
|
}
|
|
@@ -2987,10 +3949,10 @@ function useCopilotChat(options = {}) {
|
|
|
2987
3949
|
}))();
|
|
2988
3950
|
return globalSuggestionPromise;
|
|
2989
3951
|
}), [stableContext, chatSuggestionConfiguration, setSuggestions, abortSuggestions]);
|
|
2990
|
-
const resetSuggestions = (0,
|
|
3952
|
+
const resetSuggestions = (0, import_react15.useCallback)(() => {
|
|
2991
3953
|
setSuggestions([]);
|
|
2992
3954
|
}, [setSuggestions]);
|
|
2993
|
-
(0,
|
|
3955
|
+
(0, import_react15.useEffect)(() => {
|
|
2994
3956
|
if (mcpServers.length > 0) {
|
|
2995
3957
|
const serversCopy = [...mcpServers];
|
|
2996
3958
|
copilotApiConfig.mcpServers = serversCopy;
|
|
@@ -3000,7 +3962,7 @@ function useCopilotChat(options = {}) {
|
|
|
3000
3962
|
copilotApiConfig.properties.mcpServers = serversCopy;
|
|
3001
3963
|
}
|
|
3002
3964
|
}, [mcpServers, copilotApiConfig]);
|
|
3003
|
-
const setMcpServers = (0,
|
|
3965
|
+
const setMcpServers = (0, import_react15.useCallback)((servers) => {
|
|
3004
3966
|
setLocalMcpServers(servers);
|
|
3005
3967
|
}, []);
|
|
3006
3968
|
const onCoAgentStateRender = useAsyncCallback(
|
|
@@ -3021,7 +3983,7 @@ function useCopilotChat(options = {}) {
|
|
|
3021
3983
|
}),
|
|
3022
3984
|
[coAgentStateRenders]
|
|
3023
3985
|
);
|
|
3024
|
-
const makeSystemMessageCallback = (0,
|
|
3986
|
+
const makeSystemMessageCallback = (0, import_react15.useCallback)(() => {
|
|
3025
3987
|
const systemMessageMaker = makeSystemMessage2 || defaultSystemMessage;
|
|
3026
3988
|
const contextString = getContextString([], defaultCopilotContextCategories);
|
|
3027
3989
|
return new import_runtime_client_gql8.TextMessage({
|
|
@@ -3029,7 +3991,7 @@ function useCopilotChat(options = {}) {
|
|
|
3029
3991
|
role: import_runtime_client_gql8.Role.System
|
|
3030
3992
|
});
|
|
3031
3993
|
}, [getContextString, makeSystemMessage2, chatInstructions]);
|
|
3032
|
-
const deleteMessage = (0,
|
|
3994
|
+
const deleteMessage = (0, import_react15.useCallback)(
|
|
3033
3995
|
(messageId) => {
|
|
3034
3996
|
setMessages((prev) => prev.filter((message) => message.id !== messageId));
|
|
3035
3997
|
},
|
|
@@ -3085,18 +4047,18 @@ function useCopilotChat(options = {}) {
|
|
|
3085
4047
|
[latestReload]
|
|
3086
4048
|
);
|
|
3087
4049
|
const latestStop = useUpdatedRef(stop);
|
|
3088
|
-
const latestStopFunc = (0,
|
|
4050
|
+
const latestStopFunc = (0, import_react15.useCallback)(() => {
|
|
3089
4051
|
return latestStop.current();
|
|
3090
4052
|
}, [latestStop]);
|
|
3091
4053
|
const latestDelete = useUpdatedRef(deleteMessage);
|
|
3092
|
-
const latestDeleteFunc = (0,
|
|
4054
|
+
const latestDeleteFunc = (0, import_react15.useCallback)(
|
|
3093
4055
|
(messageId) => {
|
|
3094
4056
|
return latestDelete.current(messageId);
|
|
3095
4057
|
},
|
|
3096
4058
|
[latestDelete]
|
|
3097
4059
|
);
|
|
3098
4060
|
const latestSetMessages = useUpdatedRef(setMessages);
|
|
3099
|
-
const latestSetMessagesFunc = (0,
|
|
4061
|
+
const latestSetMessagesFunc = (0, import_react15.useCallback)(
|
|
3100
4062
|
(messages2) => {
|
|
3101
4063
|
if (messages2.every((message) => message instanceof import_runtime_client_gql8.Message)) {
|
|
3102
4064
|
return latestSetMessages.current(messages2);
|
|
@@ -3109,7 +4071,7 @@ function useCopilotChat(options = {}) {
|
|
|
3109
4071
|
const latestRunChatCompletionFunc = useAsyncCallback(() => __async(this, null, function* () {
|
|
3110
4072
|
return yield latestRunChatCompletion.current();
|
|
3111
4073
|
}), [latestRunChatCompletion]);
|
|
3112
|
-
const reset = (0,
|
|
4074
|
+
const reset = (0, import_react15.useCallback)(() => {
|
|
3113
4075
|
latestStopFunc();
|
|
3114
4076
|
setMessages([]);
|
|
3115
4077
|
setRunId(null);
|
|
@@ -3132,7 +4094,7 @@ function useCopilotChat(options = {}) {
|
|
|
3132
4094
|
resetSuggestions
|
|
3133
4095
|
]);
|
|
3134
4096
|
const latestReset = useUpdatedRef(reset);
|
|
3135
|
-
const latestResetFunc = (0,
|
|
4097
|
+
const latestResetFunc = (0, import_react15.useCallback)(() => {
|
|
3136
4098
|
return latestReset.current();
|
|
3137
4099
|
}, [latestReset]);
|
|
3138
4100
|
const interrupt = useLangGraphInterruptRender();
|
|
@@ -3159,8 +4121,8 @@ function useCopilotChat(options = {}) {
|
|
|
3159
4121
|
};
|
|
3160
4122
|
}
|
|
3161
4123
|
function useUpdatedRef(value) {
|
|
3162
|
-
const ref = (0,
|
|
3163
|
-
(0,
|
|
4124
|
+
const ref = (0, import_react15.useRef)(value);
|
|
4125
|
+
(0, import_react15.useEffect)(() => {
|
|
3164
4126
|
ref.current = value;
|
|
3165
4127
|
}, [value]);
|
|
3166
4128
|
return ref;
|
|
@@ -3219,8 +4181,8 @@ function useCopilotChat2(options = {}) {
|
|
|
3219
4181
|
}
|
|
3220
4182
|
|
|
3221
4183
|
// src/hooks/use-copilot-chat-headless_c.ts
|
|
3222
|
-
var
|
|
3223
|
-
var
|
|
4184
|
+
var import_react16 = require("react");
|
|
4185
|
+
var import_shared15 = require("@copilotkit/shared");
|
|
3224
4186
|
var createNonFunctionalReturn = () => ({
|
|
3225
4187
|
visibleMessages: [],
|
|
3226
4188
|
messages: [],
|
|
@@ -3259,20 +4221,20 @@ function useCopilotChatHeadless_c(options = {}) {
|
|
|
3259
4221
|
const { copilotApiConfig, setBannerError } = useCopilotContext();
|
|
3260
4222
|
const hasPublicApiKey = Boolean(copilotApiConfig.publicApiKey);
|
|
3261
4223
|
const internalResult = useCopilotChat(options);
|
|
3262
|
-
(0,
|
|
4224
|
+
(0, import_react16.useEffect)(() => {
|
|
3263
4225
|
if (!hasPublicApiKey) {
|
|
3264
4226
|
setBannerError(
|
|
3265
|
-
new
|
|
4227
|
+
new import_shared15.CopilotKitError({
|
|
3266
4228
|
message: (
|
|
3267
4229
|
// add link to documentation here
|
|
3268
4230
|
"You're using useCopilotChatHeadless_c, a subscription-only feature, which offers extensive headless chat capabilities. To continue, you'll need to provide a free subscription key."
|
|
3269
4231
|
),
|
|
3270
|
-
code:
|
|
3271
|
-
severity:
|
|
3272
|
-
visibility:
|
|
4232
|
+
code: import_shared15.CopilotKitErrorCode.MISSING_PUBLIC_API_KEY_ERROR,
|
|
4233
|
+
severity: import_shared15.Severity.WARNING,
|
|
4234
|
+
visibility: import_shared15.ErrorVisibility.BANNER
|
|
3273
4235
|
})
|
|
3274
4236
|
);
|
|
3275
|
-
|
|
4237
|
+
import_shared15.styledConsole.logCopilotKitPlatformMessage();
|
|
3276
4238
|
} else {
|
|
3277
4239
|
setBannerError(null);
|
|
3278
4240
|
}
|
|
@@ -3284,13 +4246,13 @@ function useCopilotChatHeadless_c(options = {}) {
|
|
|
3284
4246
|
}
|
|
3285
4247
|
|
|
3286
4248
|
// src/hooks/use-copilot-action.ts
|
|
3287
|
-
var
|
|
3288
|
-
var
|
|
4249
|
+
var import_shared16 = require("@copilotkit/shared");
|
|
4250
|
+
var import_react17 = require("react");
|
|
3289
4251
|
function useCopilotAction(action, dependencies) {
|
|
3290
4252
|
const { setAction, removeAction, actions, chatComponentsCache } = useCopilotContext();
|
|
3291
|
-
const idRef = (0,
|
|
3292
|
-
const renderAndWaitRef = (0,
|
|
3293
|
-
const activatingMessageIdRef = (0,
|
|
4253
|
+
const idRef = (0, import_react17.useRef)((0, import_shared16.randomId)());
|
|
4254
|
+
const renderAndWaitRef = (0, import_react17.useRef)(null);
|
|
4255
|
+
const activatingMessageIdRef = (0, import_react17.useRef)(null);
|
|
3294
4256
|
const { addToast } = useToast();
|
|
3295
4257
|
action = __spreadValues({}, action);
|
|
3296
4258
|
if (
|
|
@@ -3352,7 +4314,7 @@ function useCopilotAction(action, dependencies) {
|
|
|
3352
4314
|
return renderAndWait(waitProps);
|
|
3353
4315
|
}
|
|
3354
4316
|
}
|
|
3355
|
-
return (0,
|
|
4317
|
+
return (0, import_react17.createElement)(import_react17.Fragment);
|
|
3356
4318
|
};
|
|
3357
4319
|
}
|
|
3358
4320
|
if (dependencies === void 0) {
|
|
@@ -3367,7 +4329,7 @@ function useCopilotAction(action, dependencies) {
|
|
|
3367
4329
|
}
|
|
3368
4330
|
}
|
|
3369
4331
|
}
|
|
3370
|
-
(0,
|
|
4332
|
+
(0, import_react17.useEffect)(() => {
|
|
3371
4333
|
const hasDuplicate = Object.values(actions).some(
|
|
3372
4334
|
(otherAction) => otherAction.name === action.name && otherAction !== actions[idRef.current]
|
|
3373
4335
|
);
|
|
@@ -3379,7 +4341,7 @@ function useCopilotAction(action, dependencies) {
|
|
|
3379
4341
|
});
|
|
3380
4342
|
}
|
|
3381
4343
|
}, [actions]);
|
|
3382
|
-
(0,
|
|
4344
|
+
(0, import_react17.useEffect)(() => {
|
|
3383
4345
|
setAction(idRef.current, action);
|
|
3384
4346
|
if (chatComponentsCache.current !== null && action.render !== void 0) {
|
|
3385
4347
|
chatComponentsCache.current.actions[action.name] = action.render;
|
|
@@ -3408,8 +4370,8 @@ function isFrontendAction(action) {
|
|
|
3408
4370
|
}
|
|
3409
4371
|
|
|
3410
4372
|
// src/hooks/use-coagent-state-render.ts
|
|
3411
|
-
var
|
|
3412
|
-
var
|
|
4373
|
+
var import_react18 = require("react");
|
|
4374
|
+
var import_shared17 = require("@copilotkit/shared");
|
|
3413
4375
|
function useCoAgentStateRender(action, dependencies) {
|
|
3414
4376
|
const {
|
|
3415
4377
|
setCoAgentStateRender,
|
|
@@ -3417,13 +4379,13 @@ function useCoAgentStateRender(action, dependencies) {
|
|
|
3417
4379
|
coAgentStateRenders,
|
|
3418
4380
|
chatComponentsCache,
|
|
3419
4381
|
availableAgents
|
|
3420
|
-
} = (0,
|
|
3421
|
-
const idRef = (0,
|
|
4382
|
+
} = (0, import_react18.useContext)(CopilotContext);
|
|
4383
|
+
const idRef = (0, import_react18.useRef)((0, import_shared17.randomId)());
|
|
3422
4384
|
const { setBannerError, addToast } = useToast();
|
|
3423
|
-
(0,
|
|
4385
|
+
(0, import_react18.useEffect)(() => {
|
|
3424
4386
|
if ((availableAgents == null ? void 0 : availableAgents.length) && !availableAgents.some((a) => a.name === action.name)) {
|
|
3425
4387
|
const message = `(useCoAgentStateRender): Agent "${action.name}" not found. Make sure the agent exists and is properly configured.`;
|
|
3426
|
-
const agentError = new
|
|
4388
|
+
const agentError = new import_shared17.CopilotKitAgentDiscoveryError({
|
|
3427
4389
|
agentName: action.name,
|
|
3428
4390
|
availableAgents: availableAgents.map((a) => ({ name: a.name, id: a.id }))
|
|
3429
4391
|
});
|
|
@@ -3441,7 +4403,7 @@ function useCoAgentStateRender(action, dependencies) {
|
|
|
3441
4403
|
}
|
|
3442
4404
|
}
|
|
3443
4405
|
}
|
|
3444
|
-
(0,
|
|
4406
|
+
(0, import_react18.useEffect)(() => {
|
|
3445
4407
|
const currentId = idRef.current;
|
|
3446
4408
|
const hasDuplicate = Object.entries(coAgentStateRenders).some(([id, otherAction]) => {
|
|
3447
4409
|
if (id === currentId)
|
|
@@ -3465,7 +4427,7 @@ function useCoAgentStateRender(action, dependencies) {
|
|
|
3465
4427
|
});
|
|
3466
4428
|
}
|
|
3467
4429
|
}, [coAgentStateRenders]);
|
|
3468
|
-
(0,
|
|
4430
|
+
(0, import_react18.useEffect)(() => {
|
|
3469
4431
|
setCoAgentStateRender(idRef.current, action);
|
|
3470
4432
|
if (chatComponentsCache.current !== null && action.render !== void 0) {
|
|
3471
4433
|
chatComponentsCache.current.coAgentStateRenders[key] = action.render;
|
|
@@ -3485,12 +4447,12 @@ function useCoAgentStateRender(action, dependencies) {
|
|
|
3485
4447
|
}
|
|
3486
4448
|
|
|
3487
4449
|
// src/hooks/use-make-copilot-document-readable.ts
|
|
3488
|
-
var
|
|
3489
|
-
function useMakeCopilotDocumentReadable(
|
|
4450
|
+
var import_react19 = require("react");
|
|
4451
|
+
function useMakeCopilotDocumentReadable(document2, categories, dependencies = []) {
|
|
3490
4452
|
const { addDocumentContext, removeDocumentContext } = useCopilotContext();
|
|
3491
|
-
const idRef = (0,
|
|
3492
|
-
(0,
|
|
3493
|
-
const id = addDocumentContext(
|
|
4453
|
+
const idRef = (0, import_react19.useRef)();
|
|
4454
|
+
(0, import_react19.useEffect)(() => {
|
|
4455
|
+
const id = addDocumentContext(document2, categories);
|
|
3494
4456
|
idRef.current = id;
|
|
3495
4457
|
return () => {
|
|
3496
4458
|
removeDocumentContext(id);
|
|
@@ -3500,7 +4462,7 @@ function useMakeCopilotDocumentReadable(document, categories, dependencies = [])
|
|
|
3500
4462
|
}
|
|
3501
4463
|
|
|
3502
4464
|
// src/hooks/use-copilot-readable.ts
|
|
3503
|
-
var
|
|
4465
|
+
var import_react20 = require("react");
|
|
3504
4466
|
function convertToJSON(description, value) {
|
|
3505
4467
|
return `${description}: ${typeof value === "string" ? value : JSON.stringify(value)}`;
|
|
3506
4468
|
}
|
|
@@ -3513,10 +4475,10 @@ function useCopilotReadable({
|
|
|
3513
4475
|
available = "enabled"
|
|
3514
4476
|
}, dependencies) {
|
|
3515
4477
|
const { addContext, removeContext } = useCopilotContext();
|
|
3516
|
-
const idRef = (0,
|
|
4478
|
+
const idRef = (0, import_react20.useRef)();
|
|
3517
4479
|
convert = convert || convertToJSON;
|
|
3518
4480
|
const information = convert(description, value);
|
|
3519
|
-
(0,
|
|
4481
|
+
(0, import_react20.useEffect)(() => {
|
|
3520
4482
|
if (available === "disabled")
|
|
3521
4483
|
return;
|
|
3522
4484
|
const id = addContext(information, parentId, categories);
|
|
@@ -3529,20 +4491,20 @@ function useCopilotReadable({
|
|
|
3529
4491
|
}
|
|
3530
4492
|
|
|
3531
4493
|
// src/hooks/use-coagent.ts
|
|
3532
|
-
var
|
|
3533
|
-
var
|
|
4494
|
+
var import_react21 = require("react");
|
|
4495
|
+
var import_shared18 = require("@copilotkit/shared");
|
|
3534
4496
|
function useCoAgent(options) {
|
|
3535
4497
|
const context = useCopilotContext();
|
|
3536
4498
|
const { availableAgents } = context;
|
|
3537
4499
|
const { setBannerError } = useToast();
|
|
3538
|
-
const lastLoadedThreadId = (0,
|
|
3539
|
-
const lastLoadedState = (0,
|
|
4500
|
+
const lastLoadedThreadId = (0, import_react21.useRef)();
|
|
4501
|
+
const lastLoadedState = (0, import_react21.useRef)();
|
|
3540
4502
|
const { name } = options;
|
|
3541
|
-
(0,
|
|
4503
|
+
(0, import_react21.useEffect)(() => {
|
|
3542
4504
|
if ((availableAgents == null ? void 0 : availableAgents.length) && !availableAgents.some((a) => a.name === name)) {
|
|
3543
4505
|
const message = `(useCoAgent): Agent "${name}" not found. Make sure the agent exists and is properly configured.`;
|
|
3544
4506
|
console.warn(message);
|
|
3545
|
-
const agentError = new
|
|
4507
|
+
const agentError = new import_shared18.CopilotKitAgentDiscoveryError({
|
|
3546
4508
|
agentName: name,
|
|
3547
4509
|
availableAgents: availableAgents.map((a) => ({ name: a.name, id: a.id }))
|
|
3548
4510
|
});
|
|
@@ -3560,7 +4522,7 @@ function useCoAgent(options) {
|
|
|
3560
4522
|
credentials: copilotApiConfig.credentials,
|
|
3561
4523
|
showDevConsole: context.showDevConsole
|
|
3562
4524
|
});
|
|
3563
|
-
const setState = (0,
|
|
4525
|
+
const setState = (0, import_react21.useCallback)(
|
|
3564
4526
|
(newState) => {
|
|
3565
4527
|
let coagentState = getCoagentState({ coagentStates, name, options });
|
|
3566
4528
|
const updatedState = typeof newState === "function" ? newState(coagentState.state) : newState;
|
|
@@ -3572,7 +4534,7 @@ function useCoAgent(options) {
|
|
|
3572
4534
|
},
|
|
3573
4535
|
[coagentStates, name]
|
|
3574
4536
|
);
|
|
3575
|
-
(0,
|
|
4537
|
+
(0, import_react21.useEffect)(() => {
|
|
3576
4538
|
const fetchAgentState = () => __async(this, null, function* () {
|
|
3577
4539
|
var _a, _b, _c, _d;
|
|
3578
4540
|
if (!threadId || threadId === lastLoadedThreadId.current)
|
|
@@ -3590,13 +4552,13 @@ function useCoAgent(options) {
|
|
|
3590
4552
|
if (((_d = (_c = result.data) == null ? void 0 : _c.loadAgentState) == null ? void 0 : _d.threadExists) && newState && newState != "{}") {
|
|
3591
4553
|
lastLoadedState.current = newState;
|
|
3592
4554
|
lastLoadedThreadId.current = threadId;
|
|
3593
|
-
const fetchedState = (0,
|
|
4555
|
+
const fetchedState = (0, import_shared18.parseJson)(newState, {});
|
|
3594
4556
|
isExternalStateManagement(options) ? options.setState(fetchedState) : setState(fetchedState);
|
|
3595
4557
|
}
|
|
3596
4558
|
});
|
|
3597
4559
|
void fetchAgentState();
|
|
3598
4560
|
}, [threadId]);
|
|
3599
|
-
(0,
|
|
4561
|
+
(0, import_react21.useEffect)(() => {
|
|
3600
4562
|
if (isExternalStateManagement(options)) {
|
|
3601
4563
|
setState(options.state);
|
|
3602
4564
|
} else if (coagentStates[name] === void 0) {
|
|
@@ -3607,7 +4569,7 @@ function useCoAgent(options) {
|
|
|
3607
4569
|
// reset initialstate on reset
|
|
3608
4570
|
coagentStates[name] === void 0
|
|
3609
4571
|
]);
|
|
3610
|
-
(0,
|
|
4572
|
+
(0, import_react21.useEffect)(() => {
|
|
3611
4573
|
const newConfig = options.config ? options.config : options.configurable ? { configurable: options.configurable } : void 0;
|
|
3612
4574
|
if (newConfig === void 0)
|
|
3613
4575
|
return;
|
|
@@ -3639,7 +4601,7 @@ function useCoAgent(options) {
|
|
|
3639
4601
|
}),
|
|
3640
4602
|
[name, context, sendMessage, runChatCompletion]
|
|
3641
4603
|
);
|
|
3642
|
-
return (0,
|
|
4604
|
+
return (0, import_react21.useMemo)(() => {
|
|
3643
4605
|
const coagentState = getCoagentState({ coagentStates, name, options });
|
|
3644
4606
|
return {
|
|
3645
4607
|
name,
|
|
@@ -3736,28 +4698,28 @@ var getCoagentState = ({
|
|
|
3736
4698
|
};
|
|
3737
4699
|
|
|
3738
4700
|
// src/hooks/use-copilot-authenticated-action.ts
|
|
3739
|
-
var
|
|
3740
|
-
var
|
|
4701
|
+
var import_react22 = require("react");
|
|
4702
|
+
var import_react23 = __toESM(require("react"));
|
|
3741
4703
|
function useCopilotAuthenticatedAction_c(action, dependencies) {
|
|
3742
4704
|
const { authConfig_c, authStates_c, setAuthStates_c } = useCopilotContext();
|
|
3743
|
-
const pendingActionRef = (0,
|
|
3744
|
-
const executeAction2 = (0,
|
|
4705
|
+
const pendingActionRef = (0, import_react22.useRef)(null);
|
|
4706
|
+
const executeAction2 = (0, import_react22.useCallback)(
|
|
3745
4707
|
(props) => {
|
|
3746
4708
|
if (typeof action.render === "function") {
|
|
3747
4709
|
return action.render(props);
|
|
3748
4710
|
}
|
|
3749
|
-
return action.render ||
|
|
4711
|
+
return action.render || import_react23.default.createElement(import_react22.Fragment);
|
|
3750
4712
|
},
|
|
3751
4713
|
[action]
|
|
3752
4714
|
);
|
|
3753
|
-
const wrappedRender = (0,
|
|
4715
|
+
const wrappedRender = (0, import_react22.useCallback)(
|
|
3754
4716
|
(props) => {
|
|
3755
4717
|
const isAuthenticated = Object.values(authStates_c || {}).some(
|
|
3756
4718
|
(state) => state.status === "authenticated"
|
|
3757
4719
|
);
|
|
3758
4720
|
if (!isAuthenticated) {
|
|
3759
4721
|
pendingActionRef.current = props;
|
|
3760
|
-
return (authConfig_c == null ? void 0 : authConfig_c.SignInComponent) ?
|
|
4722
|
+
return (authConfig_c == null ? void 0 : authConfig_c.SignInComponent) ? import_react23.default.createElement(authConfig_c.SignInComponent, {
|
|
3761
4723
|
onSignInComplete: (authState) => {
|
|
3762
4724
|
setAuthStates_c == null ? void 0 : setAuthStates_c((prev) => __spreadProps(__spreadValues({}, prev), { [action.name]: authState }));
|
|
3763
4725
|
if (pendingActionRef.current) {
|
|
@@ -3765,7 +4727,7 @@ function useCopilotAuthenticatedAction_c(action, dependencies) {
|
|
|
3765
4727
|
pendingActionRef.current = null;
|
|
3766
4728
|
}
|
|
3767
4729
|
}
|
|
3768
|
-
}) :
|
|
4730
|
+
}) : import_react23.default.createElement(import_react22.Fragment);
|
|
3769
4731
|
}
|
|
3770
4732
|
return executeAction2(props);
|
|
3771
4733
|
},
|
|
@@ -3780,29 +4742,29 @@ function useCopilotAuthenticatedAction_c(action, dependencies) {
|
|
|
3780
4742
|
}
|
|
3781
4743
|
|
|
3782
4744
|
// src/hooks/use-langgraph-interrupt.ts
|
|
3783
|
-
var
|
|
3784
|
-
var
|
|
4745
|
+
var import_react24 = require("react");
|
|
4746
|
+
var import_shared19 = require("@copilotkit/shared");
|
|
3785
4747
|
function useLangGraphInterrupt(action, dependencies) {
|
|
3786
4748
|
var _a;
|
|
3787
|
-
const { setLangGraphInterruptAction, removeLangGraphInterruptAction, langGraphInterruptAction } = (0,
|
|
4749
|
+
const { setLangGraphInterruptAction, removeLangGraphInterruptAction, langGraphInterruptAction } = (0, import_react24.useContext)(CopilotContext);
|
|
3788
4750
|
const { runChatCompletion } = useCopilotChat();
|
|
3789
4751
|
const { addToast } = useToast();
|
|
3790
|
-
const actionId = (0,
|
|
3791
|
-
const hasAction = (0,
|
|
4752
|
+
const actionId = (0, import_shared19.dataToUUID)(JSON.stringify(action), "lgAction");
|
|
4753
|
+
const hasAction = (0, import_react24.useMemo)(
|
|
3792
4754
|
() => Boolean(langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.id),
|
|
3793
4755
|
[langGraphInterruptAction]
|
|
3794
4756
|
);
|
|
3795
|
-
const isCurrentAction = (0,
|
|
4757
|
+
const isCurrentAction = (0, import_react24.useMemo)(
|
|
3796
4758
|
() => (langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.id) && (langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.id) === actionId,
|
|
3797
4759
|
[langGraphInterruptAction]
|
|
3798
4760
|
);
|
|
3799
|
-
(0,
|
|
4761
|
+
(0, import_react24.useEffect)(() => {
|
|
3800
4762
|
var _a2;
|
|
3801
4763
|
if (hasAction && isCurrentAction && ((_a2 = langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.event) == null ? void 0 : _a2.response)) {
|
|
3802
4764
|
runChatCompletion();
|
|
3803
4765
|
}
|
|
3804
4766
|
}, [(_a = langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.event) == null ? void 0 : _a.response, runChatCompletion, hasAction, isCurrentAction]);
|
|
3805
|
-
(0,
|
|
4767
|
+
(0, import_react24.useEffect)(() => {
|
|
3806
4768
|
if (!action)
|
|
3807
4769
|
return;
|
|
3808
4770
|
if (hasAction && !isCurrentAction && !action.enabled) {
|
|
@@ -3827,10 +4789,10 @@ function useLangGraphInterrupt(action, dependencies) {
|
|
|
3827
4789
|
}
|
|
3828
4790
|
|
|
3829
4791
|
// src/hooks/use-copilot-additional-instructions.ts
|
|
3830
|
-
var
|
|
4792
|
+
var import_react25 = require("react");
|
|
3831
4793
|
function useCopilotAdditionalInstructions({ instructions, available = "enabled" }, dependencies) {
|
|
3832
4794
|
const { setAdditionalInstructions } = useCopilotContext();
|
|
3833
|
-
(0,
|
|
4795
|
+
(0, import_react25.useEffect)(() => {
|
|
3834
4796
|
if (available === "disabled")
|
|
3835
4797
|
return;
|
|
3836
4798
|
setAdditionalInstructions((prevInstructions) => [...prevInstructions || [], instructions]);
|