@superinterface/react 1.1.5 → 1.1.7
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/dist/index.d.ts +16 -8
- package/dist/index.js +29 -31
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { Message as Message$1, MessagesPage, RunsPage, Run } from './types/index.js';
|
|
3
|
+
import { UseFormProps } from 'react-hook-form';
|
|
3
4
|
import * as _tanstack_query_core_build_legacy_queryClient_bm_z2rsD from '@tanstack/query-core/build/legacy/queryClient-bm-z2rsD';
|
|
4
5
|
import { InfiniteData, UseInfiniteQueryOptions, UseMutationOptions } from '@tanstack/react-query';
|
|
5
6
|
import * as _tanstack_react_query_build_legacy_types from '@tanstack/react-query/build/legacy/types';
|
|
@@ -8,30 +9,37 @@ import * as react from 'react';
|
|
|
8
9
|
import * as hast_util_to_jsx_runtime_lib_components from 'hast-util-to-jsx-runtime/lib/components';
|
|
9
10
|
import OpenAI from 'openai';
|
|
10
11
|
|
|
11
|
-
type Args$
|
|
12
|
+
type Args$b = {
|
|
12
13
|
children?: React.ReactNode;
|
|
13
14
|
[key: string]: any;
|
|
14
15
|
};
|
|
15
|
-
declare const Messages: ({ children, ...args }: Args$
|
|
16
|
+
declare const Messages: ({ children, ...args }: Args$b) => react_jsx_runtime.JSX.Element;
|
|
16
17
|
|
|
17
|
-
type Args$
|
|
18
|
+
type Args$a = {
|
|
18
19
|
message: Message$1;
|
|
19
20
|
};
|
|
20
|
-
declare const Message: ({ message, }: Args$
|
|
21
|
+
declare const Message: ({ message, }: Args$a) => react_jsx_runtime.JSX.Element;
|
|
21
22
|
|
|
22
|
-
type Args$
|
|
23
|
+
type Args$9 = {
|
|
23
24
|
emptyStateSuggestions?: string[];
|
|
24
25
|
suggestions?: string[];
|
|
25
26
|
[key: string]: any;
|
|
26
27
|
};
|
|
27
|
-
declare const Suggestions: ({ emptyStateSuggestions, suggestions, ...args }: Args$
|
|
28
|
+
declare const Suggestions: ({ emptyStateSuggestions, suggestions, ...args }: Args$9) => react_jsx_runtime.JSX.Element | null;
|
|
29
|
+
|
|
30
|
+
type Args$8 = {
|
|
31
|
+
suggestion: string;
|
|
32
|
+
[key: string]: any;
|
|
33
|
+
};
|
|
34
|
+
declare const Suggestion: ({ suggestion, ...args }: Args$8) => react_jsx_runtime.JSX.Element;
|
|
28
35
|
|
|
29
36
|
type Args$7 = {
|
|
30
37
|
[key: string]: any;
|
|
31
38
|
} | {
|
|
32
39
|
children?: React.ReactNode;
|
|
40
|
+
useFormProps: UseFormProps;
|
|
33
41
|
};
|
|
34
|
-
declare const Form: ({ children, ...args }?: Args$7) => react_jsx_runtime.JSX.Element;
|
|
42
|
+
declare const Form: ({ children, useFormProps, ...args }?: Args$7) => react_jsx_runtime.JSX.Element;
|
|
35
43
|
|
|
36
44
|
type Args$6 = {
|
|
37
45
|
[key: string]: any;
|
|
@@ -568,4 +576,4 @@ type Args = {
|
|
|
568
576
|
};
|
|
569
577
|
declare const FunctionBase: ({ fn, runStep, title, }: Args) => react_jsx_runtime.JSX.Element;
|
|
570
578
|
|
|
571
|
-
export { AssistantAvatarContext, AssistantNameContext, Form, FunctionBase, FunctionComponentsContext, MarkdownContext, Message, Messages, Suggestions, SuperinterfaceProvider, useCreateMessage, useIsRunActive, useLatestMessage, useMarkdownContext, useMessages, useThreadLifecycles };
|
|
579
|
+
export { AssistantAvatarContext, AssistantNameContext, Form, FunctionBase, FunctionComponentsContext, MarkdownContext, Message, Messages, Suggestion, Suggestions, SuperinterfaceProvider, useCreateMessage, useIsRunActive, useLatestMessage, useMarkdownContext, useMessages, useThreadLifecycles };
|
package/dist/index.js
CHANGED
|
@@ -38,6 +38,7 @@ __export(src_exports, {
|
|
|
38
38
|
MarkdownContext: () => MarkdownContext,
|
|
39
39
|
Message: () => Message,
|
|
40
40
|
Messages: () => Messages,
|
|
41
|
+
Suggestion: () => Suggestion,
|
|
41
42
|
Suggestions: () => Suggestions,
|
|
42
43
|
SuperinterfaceProvider: () => SuperinterfaceProvider,
|
|
43
44
|
useCreateMessage: () => useCreateMessage,
|
|
@@ -1460,7 +1461,7 @@ var MessageGroup = ({
|
|
|
1460
1461
|
size: "1"
|
|
1461
1462
|
}
|
|
1462
1463
|
) : /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(AssistantAvatar, {}),
|
|
1463
|
-
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_themes24.Box, { children: [
|
|
1464
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_themes24.Box, { grow: "1", children: [
|
|
1464
1465
|
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Name, { children: messageGroup.role === "user" ? "You" : assistantNameContext }),
|
|
1465
1466
|
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1466
1467
|
Content2,
|
|
@@ -1615,7 +1616,7 @@ var Messages = ({
|
|
|
1615
1616
|
var import_react26 = require("react");
|
|
1616
1617
|
var import_themes30 = require("@radix-ui/themes");
|
|
1617
1618
|
|
|
1618
|
-
// src/components/suggestions/
|
|
1619
|
+
// src/components/suggestions/Suggestion/index.tsx
|
|
1619
1620
|
var import_react_icons5 = require("@radix-ui/react-icons");
|
|
1620
1621
|
var import_themes29 = require("@radix-ui/themes");
|
|
1621
1622
|
|
|
@@ -1636,7 +1637,7 @@ var useCreateMessage = (args = () => {
|
|
|
1636
1637
|
};
|
|
1637
1638
|
};
|
|
1638
1639
|
|
|
1639
|
-
// src/components/suggestions/
|
|
1640
|
+
// src/components/suggestions/Suggestion/index.tsx
|
|
1640
1641
|
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
1641
1642
|
var Suggestion = ({
|
|
1642
1643
|
suggestion,
|
|
@@ -1698,12 +1699,8 @@ var Suggestions = ({
|
|
|
1698
1699
|
return null;
|
|
1699
1700
|
if (!latestMessageProps.latestMessage && emptyStateSuggestions.length > 0) {
|
|
1700
1701
|
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
1701
|
-
import_themes30.
|
|
1702
|
+
import_themes30.Flex,
|
|
1702
1703
|
{
|
|
1703
|
-
columns: {
|
|
1704
|
-
initial: "1",
|
|
1705
|
-
md: "2"
|
|
1706
|
-
},
|
|
1707
1704
|
gap: "2",
|
|
1708
1705
|
py: "2",
|
|
1709
1706
|
children: emptyStateSuggestions.map((suggestion) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
@@ -1719,12 +1716,8 @@ var Suggestions = ({
|
|
|
1719
1716
|
}
|
|
1720
1717
|
if (latestMessageProps.latestMessage.role === "assistant") {
|
|
1721
1718
|
return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
1722
|
-
import_themes30.
|
|
1719
|
+
import_themes30.Flex,
|
|
1723
1720
|
{
|
|
1724
|
-
columns: {
|
|
1725
|
-
initial: "3",
|
|
1726
|
-
md: "4"
|
|
1727
|
-
},
|
|
1728
1721
|
gap: "2",
|
|
1729
1722
|
py: "2",
|
|
1730
1723
|
children: suggestions.map((suggestion) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
@@ -1745,8 +1738,6 @@ var Suggestions = ({
|
|
|
1745
1738
|
var import_themes32 = require("@radix-ui/themes");
|
|
1746
1739
|
var import_react28 = require("react");
|
|
1747
1740
|
var import_react_hook_form = require("react-hook-form");
|
|
1748
|
-
var import_zod = require("zod");
|
|
1749
|
-
var import_zod2 = require("@hookform/resolvers/zod");
|
|
1750
1741
|
var import_react_use2 = require("react-use");
|
|
1751
1742
|
|
|
1752
1743
|
// src/components/textareas/TextareaBase/index.tsx
|
|
@@ -1809,21 +1800,27 @@ var Submit = ({
|
|
|
1809
1800
|
import_themes31.Button,
|
|
1810
1801
|
{
|
|
1811
1802
|
type: "submit",
|
|
1812
|
-
color: "gray",
|
|
1813
|
-
highContrast: true,
|
|
1814
1803
|
radius: "large",
|
|
1815
|
-
disabled:
|
|
1804
|
+
disabled: isDisabled,
|
|
1816
1805
|
children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Spinner, {}) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_react_icons6.ArrowUpIcon, {})
|
|
1817
1806
|
}
|
|
1818
1807
|
);
|
|
1819
1808
|
|
|
1820
|
-
// src/components/messages/Form/index.
|
|
1821
|
-
var
|
|
1809
|
+
// src/components/messages/Form/lib/useFormProps/index.ts
|
|
1810
|
+
var import_zod = require("zod");
|
|
1811
|
+
var import_zod2 = require("@hookform/resolvers/zod");
|
|
1822
1812
|
var schema = import_zod.z.object({
|
|
1823
|
-
content: import_zod.z.string().min(1)
|
|
1813
|
+
content: import_zod.z.string().min(1)
|
|
1824
1814
|
});
|
|
1815
|
+
var useFormProps = {
|
|
1816
|
+
resolver: (0, import_zod2.zodResolver)(schema)
|
|
1817
|
+
};
|
|
1818
|
+
|
|
1819
|
+
// src/components/messages/Form/index.tsx
|
|
1820
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
1825
1821
|
var Form = ({
|
|
1826
1822
|
children,
|
|
1823
|
+
useFormProps: useFormProps2 = useFormProps,
|
|
1827
1824
|
...args
|
|
1828
1825
|
} = {}) => {
|
|
1829
1826
|
const {
|
|
@@ -1831,9 +1828,7 @@ var Form = ({
|
|
|
1831
1828
|
handleSubmit,
|
|
1832
1829
|
formState: { errors, isSubmitting },
|
|
1833
1830
|
reset
|
|
1834
|
-
} = (0, import_react_hook_form.useForm)(
|
|
1835
|
-
resolver: (0, import_zod2.zodResolver)(schema)
|
|
1836
|
-
});
|
|
1831
|
+
} = (0, import_react_hook_form.useForm)(useFormProps2);
|
|
1837
1832
|
const { isRunActive: isRunActive2 } = useIsRunActive(args);
|
|
1838
1833
|
const isLoading = (0, import_react28.useMemo)(() => isRunActive2 || isSubmitting, [
|
|
1839
1834
|
isRunActive2,
|
|
@@ -1858,19 +1853,19 @@ var Form = ({
|
|
|
1858
1853
|
(_a = latestMessage == null ? void 0 : latestMessage.metadata) == null ? void 0 : _a.isBlocking
|
|
1859
1854
|
);
|
|
1860
1855
|
}, [latestMessage, isLoading]);
|
|
1861
|
-
const
|
|
1862
|
-
const
|
|
1856
|
+
const isSubmitDisabled = (0, import_react28.useMemo)(() => isDisabled || isLoading, [isDisabled, isLoading]);
|
|
1857
|
+
const isDisabledPrevious = (0, import_react_use2.usePrevious)(isDisabled);
|
|
1863
1858
|
const textareaRef = (0, import_react28.useRef)(null);
|
|
1864
1859
|
const textareaProps = register("content");
|
|
1865
1860
|
(0, import_react28.useEffect)(() => {
|
|
1866
|
-
if (
|
|
1861
|
+
if (isDisabled)
|
|
1867
1862
|
return;
|
|
1868
|
-
if (!
|
|
1863
|
+
if (!isDisabledPrevious)
|
|
1869
1864
|
return;
|
|
1870
1865
|
if (!textareaRef.current)
|
|
1871
1866
|
return;
|
|
1872
1867
|
textareaRef.current.focus();
|
|
1873
|
-
}, [
|
|
1868
|
+
}, [isDisabled, isDisabledPrevious, textareaProps]);
|
|
1874
1869
|
const assistantNameContext = (0, import_react28.useContext)(AssistantNameContext);
|
|
1875
1870
|
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
1876
1871
|
import_themes32.Container,
|
|
@@ -1917,10 +1912,12 @@ var Form = ({
|
|
|
1917
1912
|
{
|
|
1918
1913
|
minRows: 1,
|
|
1919
1914
|
placeholder: `Message ${assistantNameContext}...`,
|
|
1920
|
-
disabled:
|
|
1915
|
+
disabled: isDisabled,
|
|
1921
1916
|
onKeyDown: (e) => {
|
|
1922
1917
|
if (e.key === "Enter" && !e.shiftKey) {
|
|
1923
1918
|
e.preventDefault();
|
|
1919
|
+
if (isSubmitDisabled)
|
|
1920
|
+
return;
|
|
1924
1921
|
handleSubmit(onSubmit)();
|
|
1925
1922
|
}
|
|
1926
1923
|
},
|
|
@@ -1945,7 +1942,7 @@ var Form = ({
|
|
|
1945
1942
|
Submit,
|
|
1946
1943
|
{
|
|
1947
1944
|
isLoading,
|
|
1948
|
-
isDisabled
|
|
1945
|
+
isDisabled: isSubmitDisabled
|
|
1949
1946
|
}
|
|
1950
1947
|
)
|
|
1951
1948
|
}
|
|
@@ -2031,6 +2028,7 @@ var useMarkdownContext = () => (0, import_react30.useContext)(MarkdownContext);
|
|
|
2031
2028
|
MarkdownContext,
|
|
2032
2029
|
Message,
|
|
2033
2030
|
Messages,
|
|
2031
|
+
Suggestion,
|
|
2034
2032
|
Suggestions,
|
|
2035
2033
|
SuperinterfaceProvider,
|
|
2036
2034
|
useCreateMessage,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components/messages/Messages/index.tsx","../src/hooks/misc/useInfiniteScroll/index.tsx","../src/hooks/misc/useThrottledEffect/index.tsx","../src/components/skeletons/MessagesSkeleton/index.tsx","../src/components/skeletons/Skeleton/index.tsx","../src/components/messageGroups/MessagesGroupBase/index.tsx","../src/components/messageGroups/MessagesGroupBase/Name.tsx","../src/hooks/messages/useMessages/index.tsx","../src/hooks/core/useSuperinterfaceContext/index.ts","../src/contexts/core/SuperinterfaceContext/index.tsx","../src/hooks/messages/useMessages/lib/queryOptions/queryKey.ts","../src/hooks/messages/useMessages/lib/queryOptions/index.ts","../src/hooks/runs/useRuns/lib/queryOptions/queryKey.ts","../src/hooks/runs/useRuns/lib/queryOptions/index.ts","../src/lib/core/fillOption.ts","../src/lib/optimistic/optimisticId.ts","../src/hooks/messages/useCreateMessage/lib/mutationOptions/onMutate/data.ts","../src/hooks/messages/useCreateMessage/lib/mutationOptions/onMutate/index.ts","../src/hooks/messages/useCreateMessage/lib/mutationOptions/onError.ts","../src/hooks/messages/useCreateMessage/lib/mutationOptions/onSettled.ts","../src/hooks/messages/useCreateMessage/lib/mutationOptions/index.ts","../src/hooks/runs/useCreateRun/lib/mutationOptions/onMutate.ts","../src/hooks/runs/useCreateRun/lib/mutationOptions/onSuccess.ts","../src/hooks/runs/useCreateRun/lib/mutationOptions/onSettled.ts","../src/hooks/runs/useCreateRun/lib/mutationOptions/index.ts","../src/hooks/actions/useHandleAction/lib/mutationOptions/onMutate.ts","../src/hooks/actions/useHandleAction/lib/mutationOptions/onSettled.ts","../src/hooks/actions/useHandleAction/lib/mutationOptions/index.ts","../src/hooks/metas/useMeta/index.ts","../src/lib/core/extendOptions.ts","../src/hooks/runs/useManageRuns/index.tsx","../src/hooks/messages/useLatestMessage/index.ts","../src/hooks/runs/useLatestRun/index.ts","../src/hooks/runs/useRuns/index.tsx","../src/hooks/runs/useRuns/lib/getRuns.ts","../src/hooks/runs/useCreateRun/index.ts","../src/lib/optimistic/isOptimistic.ts","../src/hooks/runs/useIsRunActive/index.tsx","../src/lib/runs/isRunEditingMessage/index.ts","../src/hooks/runs/usePolling/index.tsx","../src/hooks/runs/usePolling/lib/refetch.ts","../src/hooks/actions/useManageActions/index.tsx","../src/hooks/actions/useHandleAction/index.tsx","../src/hooks/threads/useThreadLifecycles/index.tsx","../src/hooks/messageGroups/useMessageGroups/index.ts","../src/hooks/messageGroups/useMessageGroups/lib/messageGroups/index.ts","../src/lib/messages/order.ts","../src/hooks/messageGroups/useMessageGroups/lib/messageGroups/newGroup/newGroupItem.ts","../src/hooks/messageGroups/useMessageGroups/lib/messageGroups/newGroup/index.ts","../src/components/messages/Messages/Content/MessageGroup/index.tsx","../src/components/messageGroups/MessagesGroupBase/AssistantAvatar.tsx","../src/contexts/assistants/AssistantAvatarContext/index.tsx","../src/contexts/assistants/AssistantNameContext/index.tsx","../src/components/messages/Messages/Content/MessageGroup/Content/index.tsx","../src/components/messages/Message/index.tsx","../src/components/runSteps/RunSteps/index.tsx","../src/components/runSteps/RunStep/ToolCalls/index.tsx","../src/components/runSteps/RunStep/ToolCalls/ToolCall/index.tsx","../src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/index.tsx","../src/contexts/functions/FunctionComponentsContext/index.tsx","../src/components/functions/FunctionBase/index.tsx","../src/components/toolCalls/ToolCallBase/index.tsx","../src/components/toolCalls/ToolCallBase/ToolCallTitle.tsx","../src/components/functions/FunctionBase/Icon.tsx","../src/components/functions/FunctionBase/Content.tsx","../src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/DefaultFunction/lib/title.ts","../src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/DefaultFunction/index.tsx","../src/components/runSteps/RunStep/ToolCalls/ToolCall/CodeInterpreter/index.tsx","../src/components/runSteps/RunStep/ToolCalls/Starting/index.tsx","../src/components/runSteps/RunStep/index.tsx","../src/components/messages/Message/TextContent/index.tsx","../src/contexts/markdown/MarkdownContext/index.ts","../src/contexts/markdown/MarkdownContext/lib/components/Paragraph.tsx","../src/contexts/markdown/MarkdownContext/lib/components/Link.tsx","../src/contexts/markdown/MarkdownContext/lib/components/UnorderedList.tsx","../src/contexts/markdown/MarkdownContext/lib/components/OrderedList.tsx","../src/contexts/markdown/MarkdownContext/lib/components/ListItem.tsx","../src/contexts/markdown/MarkdownContext/lib/components/Strong.tsx","../src/contexts/markdown/MarkdownContext/lib/components/index.tsx","../src/components/messages/Messages/Content/index.tsx","../src/components/messages/Messages/ProgressMessage/index.tsx","../src/components/skeletons/StartingContentSkeleton/index.tsx","../src/components/skeletons/StartingSkeleton/index.tsx","../src/components/suggestions/Suggestions/index.tsx","../src/components/suggestions/Suggestions/Suggestion/index.tsx","../src/hooks/messages/useCreateMessage/index.ts","../src/components/messages/Form/index.tsx","../src/components/textareas/TextareaBase/index.tsx","../src/components/messages/Form/Submit/index.tsx","../src/components/spinners/Spinner/index.tsx","../src/components/core/SuperinterfaceProvider/index.tsx","../src/lib/misc/merge/index.ts","../src/lib/misc/merge/customizer.ts","../src/hooks/markdown/useMarkdownContext/index.ts"],"sourcesContent":["export { Messages } from '@/components/messages/Messages'\nexport { Message } from '@/components/messages/Message'\nexport { Suggestions } from '@/components/suggestions/Suggestions'\nexport { Form } from '@/components/messages/Form'\nexport { useThreadLifecycles } from '@/hooks/threads/useThreadLifecycles'\nexport { useMessages } from '@/hooks/messages/useMessages'\nexport { useLatestMessage } from '@/hooks/messages/useLatestMessage'\nexport { useCreateMessage } from '@/hooks/messages/useCreateMessage'\nexport { useIsRunActive } from '@/hooks/runs/useIsRunActive'\nexport { SuperinterfaceProvider } from '@/components/core/SuperinterfaceProvider'\nexport { AssistantAvatarContext } from '@/contexts/assistants/AssistantAvatarContext'\nexport { AssistantNameContext } from '@/contexts/assistants/AssistantNameContext'\nexport { FunctionComponentsContext } from '@/contexts/functions/FunctionComponentsContext'\nexport { MarkdownContext } from '@/contexts/markdown/MarkdownContext'\nexport { useMarkdownContext } from '@/hooks/markdown/useMarkdownContext'\nexport { FunctionBase } from '@/components/functions/FunctionBase'\n","'use client'\n\nimport {\n Flex,\n} from '@radix-ui/themes'\nimport { useInfiniteScroll } from '@/hooks/misc/useInfiniteScroll'\nimport { MessagesSkeleton } from '@/components/skeletons/MessagesSkeleton'\nimport { useMessages } from '@/hooks/messages/useMessages'\nimport { useThreadLifecycles } from '@/hooks/threads/useThreadLifecycles'\nimport { useLatestMessage } from '@/hooks/messages/useLatestMessage'\nimport { useIsRunActive } from '@/hooks/runs/useIsRunActive'\nimport { Content } from './Content'\nimport { ProgressMessage } from './ProgressMessage'\n\ntype Args = {\n children?: React.ReactNode\n [key: string]: any\n}\n\nexport const Messages = ({\n children,\n ...args\n}: Args) => {\n const {\n messages,\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n } = useMessages(args)\n\n useThreadLifecycles(args)\n\n const { containerRef, loaderRef } = useInfiniteScroll({\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n })\n\n const { isRunActive } = useIsRunActive(args)\n const { latestMessage } = useLatestMessage(args)\n\n return (\n <Flex\n ref={containerRef}\n direction=\"column-reverse\"\n className=\"overflow-auto\"\n grow=\"1\"\n p=\"2\"\n >\n <Flex\n shrink=\"0\"\n height=\"1\"\n />\n\n <ProgressMessage\n latestMessage={latestMessage}\n isRunActive={isRunActive}\n />\n\n {children}\n\n <Content\n messages={messages}\n />\n\n {hasNextPage && (\n <MessagesSkeleton\n ref={loaderRef}\n />\n )}\n\n <Flex\n shrink=\"0\"\n grow=\"1\"\n />\n </Flex>\n )\n}\n","import { useRef } from 'react'\nimport { useInView } from 'react-intersection-observer'\nimport { useThrottledEffect } from '@/hooks/misc/useThrottledEffect'\n\ntype Args = {\n isFetchingNextPage: boolean\n hasNextPage: boolean\n fetchNextPage: () => void\n}\n\nexport const useInfiniteScroll = ({\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n}: Args) => {\n const containerRef = useRef(null)\n\n const { ref: loaderRef, inView } = useInView({\n root: containerRef.current,\n rootMargin: '0px',\n threshold: 0.1,\n })\n\n useThrottledEffect(\n () => {\n if (isFetchingNextPage) return\n if (!inView) return\n if (!hasNextPage) return\n\n console.log('Fetching next page')\n fetchNextPage()\n },\n 500,\n [inView, isFetchingNextPage, hasNextPage, fetchNextPage]\n )\n\n return {\n containerRef,\n loaderRef,\n inView,\n }\n}\n","import _ from 'lodash'\nimport { useRef, useEffect, useCallback } from 'react'\n\nexport const useThrottledEffect = (cb: Function, delay: number, additionalDeps: any[]) => {\n const cbRef = useRef(cb)\n\n const throttledCb = useCallback(\n _.throttle((...args: any[]) => cbRef.current(...args), delay, {\n leading: true,\n trailing: true,\n }),\n [delay]\n )\n useEffect(() => {\n cbRef.current = cb\n })\n // set additionalDeps to execute effect, when other values change (not only on delay change)\n useEffect(throttledCb, [throttledCb, ...additionalDeps])\n}\n","import { forwardRef } from 'react'\nimport {\n Flex,\n Avatar,\n Box,\n} from '@radix-ui/themes'\nimport { Skeleton } from '@/components/skeletons/Skeleton'\nimport { MessagesGroupBase } from '@/components/messageGroups/MessagesGroupBase'\nimport { Name } from '@/components/messageGroups/MessagesGroupBase/Name'\n\nexport const MessagesSkeleton = forwardRef(function MessagesSkeleton(_props, ref) {\n return (\n <MessagesGroupBase\n // @ts-ignore-next-line\n ref={ref}\n >\n <Avatar\n fallback={<Flex />}\n size=\"1\"\n className=\"animate-pulse\"\n />\n\n <Box\n pb=\"3\"\n >\n <Name>\n <Skeleton\n height=\"1\"\n className=\"w-[128px]\"\n />\n </Name>\n\n <Skeleton\n height=\"2\"\n className=\"w-[256px]\"\n />\n\n <Skeleton\n height=\"2\"\n className=\"w-[256px] mt-2\"\n />\n\n <Skeleton\n height=\"2\"\n className=\"w-[256px] mt-2\"\n />\n </Box>\n </MessagesGroupBase>\n )\n})\n","import { Flex } from '@radix-ui/themes'\n\ntype Props = {\n height: string\n className: string\n}\n\nexport const Skeleton = ({\n className,\n ...rest\n}: Props) => (\n // @ts-ignore-next-line\n <Flex\n className={`animate-pulse rounded-3 bg-gray-5 ${className}`}\n {...rest}\n />\n)\n","import { forwardRef } from 'react'\nimport {\n Flex,\n Container,\n} from '@radix-ui/themes'\n\ntype Args = {\n children: React.ReactNode\n}\n\nexport const MessagesGroupBase = forwardRef(function MessagesGroupBase({\n children,\n}: Args, ref) {\n return (\n <Container\n // @ts-ignore-next-line\n ref={ref}\n size=\"2\"\n grow=\"0\"\n >\n <Flex\n shrink=\"0\"\n gap=\"3\"\n >\n {children}\n </Flex>\n </Container>\n )\n})\n","import {\n Flex,\n Text,\n} from '@radix-ui/themes'\n\ntype Args = {\n children: React.ReactNode\n}\n\nexport const Name = ({\n children,\n}: Args) => (\n <Flex\n height=\"5\"\n align=\"center\"\n >\n <Text\n size=\"2\"\n weight=\"bold\"\n >\n {children}\n </Text>\n </Flex>\n)\n","import { useMemo } from 'react'\nimport {\n InfiniteData,\n UseInfiniteQueryOptions,\n useInfiniteQuery,\n} from '@tanstack/react-query'\nimport { Message, MessagesPage } from '@/types'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { useMeta } from '@/hooks/metas/useMeta'\nimport { extendOptions } from '@/lib/core/extendOptions'\n\ntype Args = UseInfiniteQueryOptions<InfiniteData<MessagesPage>> | {}\n\nconst messages = ({\n props,\n}: {\n props: {\n data: InfiniteData<MessagesPage> | undefined\n },\n}) => {\n if (!props.data) return []\n\n return props.data.pages.reduce<Message[]>((acc, page) => (\n acc.concat(page.data)\n ), [])\n}\n\nexport const useMessages = (args: Args = {}) => {\n const { meta } = useMeta()\n const superinterfaceContext = useSuperinterfaceContext()\n\n // @ts-ignore-next-line\n const props = useInfiniteQuery(extendOptions({\n defaultOptions: superinterfaceContext.queryOptions.messages,\n args,\n meta,\n }))\n\n return useMemo(() => ({\n ...props,\n // @ts-ignore-next-line\n messages: messages({ props }),\n }), [props])\n}\n","import { useContext } from 'react'\nimport { SuperinterfaceContext } from '@/contexts/core/SuperinterfaceContext'\n\nexport const useSuperinterfaceContext = () => (\n useContext(SuperinterfaceContext)\n)\n","'use client'\nimport { createContext } from 'react'\nimport { queryOptions as messages } from '@/hooks/messages/useMessages/lib/queryOptions'\nimport { queryOptions as runs } from '@/hooks/runs/useRuns/lib/queryOptions'\nimport { mutationOptions as createMessage } from '@/hooks/messages/useCreateMessage/lib/mutationOptions'\nimport { mutationOptions as createRun } from '@/hooks/runs/useCreateRun/lib/mutationOptions'\nimport { mutationOptions as handleAction } from '@/hooks/actions/useHandleAction/lib/mutationOptions'\n\nexport const SuperinterfaceContext = createContext({\n queryOptions: {\n messages,\n runs,\n },\n mutationOptions: {\n createMessage,\n createRun,\n handleAction,\n },\n})\n","export const queryKey = ['messages']\n","import { MessagesPage } from '@/types'\nimport { queryKey } from './queryKey'\n\nexport const queryOptions = {\n queryKey,\n initialPageParam: undefined,\n getNextPageParam: (lastPage: MessagesPage) => {\n if (!lastPage.hasNextPage) return null\n\n return lastPage.lastId\n },\n}\n","export const queryKey = ['runs']\n","import _ from 'lodash'\nimport { RunsPage } from '@/types'\nimport { queryKey } from './queryKey'\n\nexport const queryOptions = {\n queryKey,\n initialPageParam: undefined,\n getNextPageParam: (lastPage: RunsPage) => {\n if (!lastPage.hasNextPage) return null\n\n return lastPage.lastId\n },\n limit: 10,\n}\n","const extended = [\n 'enabled',\n 'queryKey',\n]\n\nexport const fillOption = ({\n value,\n key,\n meta,\n args,\n}: any) => {\n if (typeof value === 'function' && extended.includes(key)) {\n return value({\n meta,\n ...args\n })\n }\n\n return value\n}\n","import { uid } from 'radash'\n\nexport const optimisticId = () => (\n `-${uid(24)}`\n)\n","import OpenAI from 'openai'\nimport { optimisticId } from '@/lib/optimistic/optimisticId'\nimport { Args as NewMessageArgs } from '../mutationFn'\n\ntype Args = {\n newMessage: NewMessageArgs\n}\n\nexport const data = ({\n newMessage,\n}: Args) => (prevData: any) => {\n const message = {\n id: optimisticId(),\n role: 'user' as OpenAI.Beta.Threads.Messages.ThreadMessage['role'],\n created_at: +new Date(),\n object: 'thread.message' as OpenAI.Beta.Threads.Messages.ThreadMessage['object'],\n content: [\n {\n type: 'text',\n text: {\n annotations: [],\n value: newMessage.content,\n },\n } as OpenAI.Beta.Threads.Messages.MessageContentText,\n ],\n run_id: null,\n assistant_id: null,\n thread_id: null,\n file_ids: [],\n metadata: {},\n runSteps: [],\n }\n\n if (!prevData) {\n return {\n pageParams: [],\n pages: [\n {\n data: [message],\n hasNextPage: false,\n lastId: message.id,\n },\n ],\n }\n }\n\n const [latestPage, ...pagesRest] = prevData.pages\n\n return {\n ...prevData,\n pages: [\n {\n ...latestPage,\n data: [\n message,\n ...latestPage.data,\n ],\n },\n ...pagesRest,\n ],\n }\n}\n","import { fillOption } from '@/lib/core/fillOption'\nimport { Args } from '../mutationFn'\nimport { data } from './data'\n\nexport const onMutate = async (\n newMessage: Args,\n context: any,\n) => {\n await context.meta.queryClient.cancelQueries(\n fillOption({\n value: context.meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: newMessage,\n })\n )\n\n const prevMessages = context.meta.queryClient.getQueryData(\n fillOption({\n value: context.meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: newMessage,\n })\n )\n\n context.meta.queryClient.setQueryData(\n fillOption({\n value: context.meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: newMessage,\n }),\n data({ newMessage })\n )\n\n return {\n prevMessages,\n newMessage,\n meta: context.meta,\n }\n}\n","import { Args as NewMessageArgs } from './mutationFn'\n\ntype Context = {\n prevMessages: any\n} | undefined\n\nexport const onError = async (\n _error: any,\n newMessage: NewMessageArgs,\n context: Context\n) => {\n if (!context) {\n return\n }\n\n // TODO\n}\n","import { Response } from './mutationFn'\nimport { fillOption } from '@/lib/core/fillOption'\n\ntype Variables = any\n\ntype Context = {\n meta: any\n}\n\nexport const onSettled = async (\n _data: Response,\n _error: any,\n variables: Variables,\n context: Context,\n) => {\n await context.meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: context.meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n })\n await context.meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: context.meta.superinterfaceContext.queryOptions.runs.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n })\n}\n","import { onMutate } from './onMutate'\nimport { onError } from './onError'\nimport { onSettled } from './onSettled'\n\nexport const mutationOptions = {\n onMutate,\n onError,\n onSettled,\n}\n","import { Args } from './mutationFn'\n\nexport const onMutate = async (\n _newRun: Args,\n context: any,\n) => (\n context\n)\n","import { Response } from './mutationFn'\nimport { fillOption } from '@/lib/core/fillOption'\n\ntype Variables = any\n\ntype Context = {\n meta: any\n}\n\nexport const onSuccess = async (\n data: Response,\n variables: Variables,\n context: Context,\n) => (\n context.meta.queryClient.setQueryData(\n fillOption({\n value: context.meta.superinterfaceContext.queryOptions.runs.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n (prevData: any) => {\n if (!prevData) {\n return {\n pageParams: [],\n pages: [\n {\n data: [data.run],\n hasNextPage: false,\n lastId: data.run.id,\n },\n ],\n }\n }\n\n const [latestPage, ...pagesRest] = prevData.pages\n\n return {\n ...prevData,\n pages: [\n {\n ...latestPage,\n data: [\n data.run,\n ...latestPage.data,\n ],\n },\n ...pagesRest,\n ],\n }\n }\n )\n)\n","import { Response } from './mutationFn'\nimport { fillOption } from '@/lib/core/fillOption'\n\ntype Variables = any\n\ntype Context = {\n meta: any\n}\n\nexport const onSettled = async (\n _data: Response,\n _error: any,\n variables: Variables,\n context: Context,\n) => {\n await context.meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: context.meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n })\n\n await context.meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: context.meta.superinterfaceContext.queryOptions.runs.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n })\n}\n","import { onMutate } from './onMutate'\nimport { onSuccess } from './onSuccess'\nimport { onSettled } from './onSettled'\n\nexport const mutationOptions = {\n onMutate,\n onSuccess,\n onSettled,\n}\n","import { Args } from './mutationFn'\n\nexport const onMutate = async (\n _newRun: Args,\n context: any,\n) => (\n context\n)\n","import { Response } from './mutationFn'\nimport { fillOption } from '@/lib/core/fillOption'\n\ntype Variables = any\n\ntype Context = {\n meta: any\n}\n\nexport const onSettled = async (\n _data: Response,\n _error: any,\n variables: Variables,\n context: Context,\n) => {\n await context.meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: context.meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n })\n await context.meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: context.meta.superinterfaceContext.queryOptions.runs.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n })\n}\n","import { onMutate } from './onMutate'\nimport { onSettled } from './onSettled'\n\nexport const mutationOptions = {\n onMutate,\n onSettled,\n}\n","import {\n useQueryClient,\n} from '@tanstack/react-query'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\n\nexport const useMeta = () => {\n const superinterfaceContext = useSuperinterfaceContext()\n const queryClient = useQueryClient()\n\n return {\n meta: {\n queryClient,\n superinterfaceContext,\n },\n }\n}\n","import { mapValues } from 'radash'\nimport { merge } from 'lodash'\nimport { fillOption } from '@/lib/core/fillOption'\n\ntype Args = {\n defaultOptions: any\n args: any\n meta: any\n}\n\ntype FillArgs = {\n options: any\n args: any\n meta: any\n}\n\nconst fill = ({ options, meta, args }: FillArgs) => (\n mapValues(options, (value, key: string) => {\n if (key === 'onMutate') {\n return async (...args: any) => {\n // @ts-ignore-next-line\n return value(...args, { meta })\n }\n }\n\n\n return fillOption({\n value,\n key,\n meta,\n args,\n })\n })\n)\n\nexport const extendOptions = ({\n defaultOptions,\n args,\n meta,\n}: Args) => {\n const options = merge(defaultOptions, args)\n\n return {\n meta,\n ...fill({ options, meta, args }),\n }\n}\n","import { useEffect } from 'react'\nimport { useLatestMessage } from '@/hooks/messages/useLatestMessage'\nimport { useLatestRun } from '@/hooks/runs/useLatestRun'\nimport { useCreateRun } from '@/hooks/runs/useCreateRun'\nimport { isOptimistic } from '@/lib/optimistic/isOptimistic'\n\ntype Args = {\n [key: string]: any\n}\n\nexport const useManageRuns = (args: Args) => {\n const latestRunProps = useLatestRun(args)\n const latestMessageProps = useLatestMessage(args)\n // @ts-ignore-next-line\n const createRunProps = useCreateRun(args)\n\n useEffect(() => {\n if (createRunProps.isPending) return\n if (latestRunProps.isFetching) return\n if (latestMessageProps.isFetching) return\n\n if (!latestMessageProps.latestMessage) return\n if (latestMessageProps.latestMessage.role !== 'user') return\n if (isOptimistic({ id: latestMessageProps.latestMessage.id })) return\n\n if (!latestRunProps.latestRun || (latestMessageProps.latestMessage.created_at > latestRunProps.latestRun.created_at)) {\n // @ts-ignore-next-line\n createRunProps.createRun(args)\n }\n }, [\n createRunProps,\n latestRunProps,\n latestMessageProps,\n ])\n\n return null\n}\n","import {\n UseInfiniteQueryOptions,\n InfiniteData,\n} from '@tanstack/react-query'\nimport { useMemo } from 'react'\nimport { useMessages } from '@/hooks/messages/useMessages'\nimport { MessagesPage } from '@/types'\n\ntype Args = UseInfiniteQueryOptions<InfiniteData<MessagesPage>> | {}\n\nexport const useLatestMessage = (args: Args = {}) => {\n const props = useMessages(args)\n\n return useMemo(() => ({\n ...props,\n latestMessage: props.messages[0] || null,\n }), [props])\n}\n","import {\n UseInfiniteQueryOptions,\n InfiniteData,\n} from '@tanstack/react-query'\nimport { useMemo } from 'react'\nimport { useRuns } from '@/hooks/runs/useRuns'\nimport { RunsPage } from '@/types'\n\ntype Args = UseInfiniteQueryOptions<InfiniteData<RunsPage>> | {}\n\nexport const useLatestRun = (args: Args = {}) => {\n const props = useRuns(args)\n\n return useMemo(() => ({\n ...props,\n latestRun: props.runs[0],\n }), [props])\n}\n","import { useMemo } from 'react'\nimport {\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n InfiniteData,\n} from '@tanstack/react-query'\nimport { getRuns } from './lib/getRuns'\nimport { RunsPage } from '@/types'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { extendOptions } from '@/lib/core/extendOptions'\nimport { useMeta } from '@/hooks/metas/useMeta'\n\ntype Args = UseInfiniteQueryOptions<InfiniteData<RunsPage>> | {}\n\nexport const useRuns = (args: Args = {}) => {\n const { meta } = useMeta()\n const superinterfaceContext = useSuperinterfaceContext()\n\n // @ts-ignore-next-line\n const props = useInfiniteQuery(extendOptions({\n defaultOptions: superinterfaceContext.queryOptions.runs,\n args,\n meta,\n }))\n\n return useMemo(() => ({\n ...props,\n // @ts-ignore-next-line\n runs: getRuns({ data: props.data }),\n }), [props])\n}\n","import { InfiniteData } from '@tanstack/react-query'\nimport { RunsPage, Run } from '@/types'\n\ntype Args = {\n data: InfiniteData<RunsPage> | undefined\n}\n\nexport const getRuns = ({\n data,\n}: Args) => {\n if (!data) return []\n\n return data.pages.reduce<Run[]>((acc, page) => (\n acc.concat(page.data)\n ), [])\n}\n","import {\n UseMutationOptions,\n useMutation,\n} from '@tanstack/react-query'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { Run } from '@/types'\nimport { extendOptions } from '@/lib/core/extendOptions'\nimport { useMeta } from '@/hooks/metas/useMeta'\n\ntype Args = (args: any) => UseMutationOptions<{ run: Run }>\n\n// @ts-ignore-next-line\nexport const useCreateRun = (args: Args = () => {}) => {\n const superinterfaceContext = useSuperinterfaceContext()\n const { meta } = useMeta()\n\n const props = useMutation(extendOptions({\n defaultOptions: superinterfaceContext.mutationOptions.createRun,\n args,\n meta,\n }))\n\n return {\n ...props,\n createRun: props.mutate,\n }\n}\n","import _ from 'lodash'\n\ntype Args = {\n id: string\n}\n\nexport const isOptimistic = ({\n id,\n}: Args) => (\n _.startsWith(id, '-')\n)\n","import { useMemo } from 'react'\nimport { useIsMutating } from '@tanstack/react-query'\nimport { useLatestRun } from '@/hooks/runs/useLatestRun'\nimport { useLatestMessage } from '@/hooks/messages/useLatestMessage'\nimport { isRunEditingMessage } from '@/lib/runs/isRunEditingMessage'\n\nconst statuses = [\n 'queued',\n 'in_progress',\n 'cancelling',\n 'requires_action',\n]\n\nconst isRunActive = ({\n latestRunProps,\n latestMessageProps,\n isMutating,\n}: {\n latestRunProps: ReturnType<typeof useLatestRun>,\n latestMessageProps: ReturnType<typeof useLatestMessage>,\n isMutating: number,\n}) => {\n // @ts-ignore-next-line\n if (latestMessageProps.latestMessage?.metadata?.isBlocking) return false\n if (isMutating > 0) return true\n if (!latestRunProps.latestRun) return false\n if (statuses.includes(latestRunProps.latestRun.status)) return true\n\n return isRunEditingMessage({ message: latestMessageProps.latestMessage })\n}\n\ntype Args = {\n [key: string]: any\n}\n\nexport const useIsRunActive = (args: Args) => {\n const latestRunProps = useLatestRun(args)\n const latestMessageProps = useLatestMessage(args)\n const isMutating = useIsMutating()\n\n return useMemo(() => ({\n ...latestRunProps,\n isRunActive: isRunActive({\n latestRunProps,\n latestMessageProps,\n isMutating,\n }),\n }), [latestRunProps, latestMessageProps, isMutating])\n}\n","import OpenAI from 'openai'\nimport _ from 'lodash'\n\ntype Args = {\n message: OpenAI.Beta.Threads.ThreadMessage\n}\n\nexport const isRunEditingMessage = ({\n message,\n}: Args) => {\n if (!message) return false\n if (message.role === 'user') return false\n if (!message.run_id) return false\n\n const hasContent = _.some(message.content, (content) => (\n content.type !== 'text' ||\n (content.type === 'text' && content.text?.value !== '')\n ))\n\n return !hasContent\n}\n","import { useIsRunActive } from '@/hooks/runs/useIsRunActive'\nimport { useInterval } from 'react-use'\nimport { useMeta } from '@/hooks/metas/useMeta'\nimport { refetch } from './lib/refetch'\n\ntype Args = {\n [key: string]: any\n} | {}\n\nexport const usePolling = (args: Args = {}) => {\n const { meta } = useMeta()\n\n const isRunActiveProps = useIsRunActive(args)\n\n useInterval(() => {\n refetch({\n args,\n meta,\n })\n\n console.log('poll refetched')\n },\n isRunActiveProps.isRunActive ? 3000 : null\n )\n\n return null\n}\n","import { fillOption } from '@/lib/core/fillOption'\n\ntype Args = {\n meta: any\n args: any\n}\n\nexport const refetch = async ({\n meta,\n args,\n}: Args) => {\n await meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta,\n args,\n }),\n })\n\n await meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: meta.superinterfaceContext.queryOptions.runs.queryKey,\n key: 'queryKey',\n meta,\n args,\n }),\n })\n}\n","import { useEffect } from 'react'\nimport { useLatestRun } from '@/hooks/runs/useLatestRun'\nimport { useHandleAction } from '@/hooks/actions/useHandleAction'\n\ntype Args = {\n [key: string]: any\n}\n\nexport const useManageActions = (args: Args) => {\n const latestRunProps = useLatestRun(args)\n // @ts-ignore-next-line\n const handleActionProps = useHandleAction(args)\n\n useEffect(() => {\n if (handleActionProps.isPending) return\n if (latestRunProps.isFetching) return\n if (!latestRunProps.latestRun) return\n if (latestRunProps.latestRun.status !== 'requires_action') return\n\n console.log('requires action', {\n latestRunProps,\n })\n\n // @ts-ignore-next-line\n handleActionProps.handleAction({\n latestRun: latestRunProps.latestRun,\n ...args,\n })\n }, [handleActionProps, latestRunProps])\n\n return null\n}\n","import {\n UseMutationOptions,\n useMutation,\n} from '@tanstack/react-query'\nimport { extendOptions } from '@/lib/core/extendOptions'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { Run } from '@/types'\nimport { useMeta } from '@/hooks/metas/useMeta'\n\ntype Args = (args: any) => UseMutationOptions<{ run: Run }>\n\n// @ts-ignore-next-line\nexport const useHandleAction = (args: Args = () => {}) => {\n const superinterfaceContext = useSuperinterfaceContext()\n const { meta } = useMeta()\n\n const props = useMutation(extendOptions({\n defaultOptions: superinterfaceContext.mutationOptions.handleAction,\n args,\n meta,\n }))\n\n return {\n ...props,\n handleAction: props.mutate,\n }\n}\n","import { useManageRuns } from '@/hooks/runs/useManageRuns'\nimport { usePolling } from '@/hooks/runs/usePolling'\nimport { useManageActions } from '@/hooks/actions/useManageActions'\n\ntype Args = {\n [key: string]: any\n}\n\nexport const useThreadLifecycles = (args: Args) => {\n useManageRuns(args)\n useManageActions(args)\n usePolling(args)\n\n return null\n}\n","import { useMemo } from 'react'\nimport { messageGroups as getMessageGroups } from './lib/messageGroups'\nimport { Message } from '@/types'\n\ntype Args = {\n messages: Message[]\n}\n\nexport const useMessageGroups = ({\n messages,\n}: Args) => (\n useMemo(\n () => ({\n messageGroups: getMessageGroups({ messages }),\n }),\n [messages]\n )\n)\n","import _ from 'lodash'\nimport { last } from 'radash'\nimport { Message, MessageGroup } from '@/types'\nimport { order } from '@/lib/messages/order'\nimport { newGroup } from './newGroup'\n\ntype Args = {\n messages: Message[]\n}\n\nexport const messageGroups = ({\n messages,\n}: Args) =>\n _.reduce(\n order({ messages }),\n (groups: MessageGroup[], message: Message) => {\n const group = last(groups)\n\n if (!group) return newGroup({ groups, message })\n\n if (group.role !== message.role) {\n return newGroup({\n groups,\n message,\n })\n }\n\n return [\n ..._.dropRight(groups),\n {\n ...group,\n messages: [...group.messages, message],\n },\n ]\n },\n []\n )\n","import { sort } from 'radash'\nimport { Message } from '@/types'\n\ntype Args = {\n messages: Message[]\n}\n\nexport const order = ({ messages }: Args) =>\n sort(messages, m => m.created_at, true)\n","import { Message } from '@/types'\n\ntype Args = {\n message: Message\n}\n\nexport const newGroupItem = ({ message }: Args) => ({\n id: message.id,\n role: message.role,\n createdAt: message.created_at,\n messages: [message],\n})\n","import { Message, MessageGroup } from '@/types'\nimport { newGroupItem } from './newGroupItem'\n\ntype Args = {\n groups: MessageGroup[]\n message: Message\n}\n\nexport const newGroup = ({ groups, message }: Args) => [\n ...groups,\n newGroupItem({\n message,\n }),\n]\n","import { useContext } from 'react'\nimport {\n Box,\n Avatar,\n} from '@radix-ui/themes'\nimport {\n PersonIcon,\n} from '@radix-ui/react-icons'\nimport { MessagesGroupBase } from '@/components/messageGroups/MessagesGroupBase'\nimport { Name } from '@/components/messageGroups/MessagesGroupBase/Name'\nimport { AssistantAvatar } from '@/components/messageGroups/MessagesGroupBase/AssistantAvatar'\nimport { AssistantNameContext } from '@/contexts/assistants/AssistantNameContext'\nimport { MessageGroup as MessageGroupType } from '@/types'\nimport { Content } from './Content'\n\ntype Args = {\n messageGroup: MessageGroupType\n}\n\nexport const MessageGroup = ({\n messageGroup,\n}: Args) => {\n const assistantNameContext = useContext(AssistantNameContext)\n\n return (\n <MessagesGroupBase>\n {messageGroup.role === 'user' ? (\n <Avatar\n fallback={<PersonIcon />}\n size=\"1\"\n />\n ) : (\n <AssistantAvatar />\n )}\n\n <Box>\n <Name>\n {messageGroup.role === 'user' ? 'You' : assistantNameContext}\n </Name>\n\n <Content\n messageGroup={messageGroup}\n />\n </Box>\n </MessagesGroupBase>\n )\n}\n","'use client'\nimport { useContext } from 'react'\nimport {\n Flex,\n} from '@radix-ui/themes'\nimport { AssistantAvatarContext } from '@/contexts/assistants/AssistantAvatarContext'\n\nexport const AssistantAvatar = () => {\n const AssistantAvatarContextValue = useContext(AssistantAvatarContext)\n\n return (\n <Flex\n shrink=\"0\"\n className=\"rounded-3 overflow-hidden h-[24px] w-[24px]\"\n >\n {AssistantAvatarContextValue}\n </Flex>\n )\n}\n","'use client'\nimport { createContext } from 'react'\nimport {\n Avatar,\n} from '@radix-ui/themes'\nimport {\n LightningBoltIcon,\n} from '@radix-ui/react-icons'\n\nexport const AssistantAvatarContext = createContext(\n <Avatar\n fallback={<LightningBoltIcon />}\n size=\"1\"\n />\n)\n","'use client'\nimport { createContext } from 'react'\n\nexport const AssistantNameContext = createContext('Assistant')\n","import { Flex } from '@radix-ui/themes'\nimport { MessageGroup } from '@/types'\nimport { Message } from '@/components/messages/Message'\n\ntype Args = {\n messageGroup: MessageGroup\n}\n\nexport const Content = ({\n messageGroup,\n}: Args) => (\n <Flex\n direction=\"column-reverse\"\n >\n {messageGroup.messages.map((message) => (\n <Message\n key={message.id}\n message={message}\n />\n ))}\n </Flex>\n)\n","import _ from 'lodash'\nimport { useMemo } from 'react'\nimport {\n Box,\n} from '@radix-ui/themes'\nimport { Message as MessageType } from '@/types'\nimport { RunSteps } from '@/components/runSteps/RunSteps'\nimport { TextContent } from './TextContent'\n\ntype Args = {\n message: MessageType\n}\n\nexport const Message = ({\n message,\n}: Args) => {\n const [olderRunSteps, laterRunSteps] = useMemo(() => {\n if (!message.runSteps.length) return [[], []]\n\n const messageCreationRunStepIndex = message.runSteps.findIndex((runStep) => {\n if (runStep.step_details.type !== 'message_creation') return\n\n return runStep.step_details.message_creation.message_id === message.id\n })\n\n let nextRunStepIndex = message.runSteps.slice(0, messageCreationRunStepIndex).findLastIndex((runStep) => (\n runStep.step_details.type === 'message_creation'\n ))\n if (nextRunStepIndex === -1) {\n nextRunStepIndex = 0\n }\n const laterRunSteps = message.runSteps.slice(nextRunStepIndex, messageCreationRunStepIndex)\n\n const prevRunStepIndex = message.runSteps.slice(messageCreationRunStepIndex + 1).findIndex((runStep) => (\n runStep.step_details.type === 'message_creation'\n ))\n\n let olderRunSteps\n\n if (prevRunStepIndex === -1) {\n olderRunSteps = message.runSteps.slice(messageCreationRunStepIndex + 1)\n } else {\n olderRunSteps = message.runSteps.slice(messageCreationRunStepIndex + 1, messageCreationRunStepIndex + prevRunStepIndex)\n }\n\n return [olderRunSteps, laterRunSteps]\n\n }, [message])\n\n return (\n <Box>\n <RunSteps\n runSteps={olderRunSteps}\n />\n\n {message.content.map((content, index) => (\n <Box\n key={index}\n >\n {content.type === 'text' && (\n <TextContent content={content} />\n )}\n </Box>\n ))}\n\n <RunSteps\n runSteps={laterRunSteps}\n />\n </Box>\n )\n}\n","import OpenAI from 'openai'\nimport { Flex } from '@radix-ui/themes'\nimport { RunStep } from '@/components/runSteps/RunStep'\n\ntype Args = {\n runSteps: OpenAI.Beta.Threads.Runs.RunStep[]\n}\n\nexport const RunSteps = ({\n runSteps,\n}: Args) => (\n <Flex\n direction=\"column-reverse\"\n >\n {runSteps.map((runStep) => (\n <RunStep\n key={runStep.id}\n runStep={runStep}\n />\n ))}\n </Flex>\n)\n","import OpenAI from 'openai'\nimport {\n Flex,\n} from '@radix-ui/themes'\nimport { ToolCall } from './ToolCall'\nimport { Starting } from './Starting'\n\ntype Args = {\n stepDetails: OpenAI.Beta.Threads.Runs.ToolCallsStepDetails\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const ToolCalls = ({\n stepDetails,\n runStep,\n}: Args) => (\n <Flex\n direction=\"column\"\n >\n {!stepDetails.tool_calls.length && (\n <Starting />\n )}\n {stepDetails.tool_calls.map((toolCall) => (\n <ToolCall\n key={toolCall.id}\n toolCall={toolCall}\n runStep={runStep}\n />\n ))}\n </Flex>\n)\n","import OpenAI from 'openai'\nimport {\n Flex,\n} from '@radix-ui/themes'\nimport { Fn } from './Fn'\nimport { CodeInterpreter } from './CodeInterpreter'\n\ntype ToolCall = OpenAI.Beta.Threads.Runs.CodeToolCall\n | OpenAI.Beta.Threads.Runs.RetrievalToolCall\n | OpenAI.Beta.Threads.Runs.FunctionToolCall\n\ntype Args = {\n toolCall: ToolCall\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const ToolCall = ({\n toolCall,\n runStep,\n}: Args) => {\n if (toolCall.type === 'function') {\n return (\n <Fn\n fn={toolCall.function}\n runStep={runStep}\n />\n )\n }\n\n if (toolCall.type === 'code_interpreter') {\n return (\n <CodeInterpreter\n codeInterpreter={toolCall.code_interpreter}\n runStep={runStep}\n />\n )\n }\n\n return (\n <Flex>\n {toolCall.type}\n </Flex>\n )\n}\n","import { useContext } from 'react'\nimport OpenAI from 'openai'\n// import { Availabilities } from './Availabilities'\n// import { Scores } from './Scores'\nimport { FunctionComponentsContext } from '@/contexts/functions/FunctionComponentsContext'\nimport { DefaultFunction } from './DefaultFunction'\n\ntype Args = {\n fn: OpenAI.Beta.Threads.Runs.FunctionToolCall.Function\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const Fn = ({\n fn,\n runStep,\n}: Args) => {\n const functionComponentsContext = useContext(FunctionComponentsContext)\n const Component = functionComponentsContext[fn.name] || DefaultFunction\n\n return (\n // @ts-ignore-next-line\n <Component\n fn={fn}\n runStep={runStep}\n />\n )\n}\n","'use client'\nimport { createContext } from 'react'\n\ntype FunctionComponents = {\n [key: string]: React.ReactNode\n}\n\nexport const FunctionComponentsContext = createContext({} as FunctionComponents)\n","import OpenAI from 'openai'\nimport {\n PopoverRoot,\n PopoverContent,\n} from '@radix-ui/themes'\nimport { ToolCallBase } from '@/components/toolCalls/ToolCallBase'\nimport { ToolCallTitle } from '@/components/toolCalls/ToolCallBase/ToolCallTitle'\nimport { Icon } from './Icon'\nimport { Content } from './Content'\n\ntype Args = {\n fn: OpenAI.Beta.Threads.Runs.FunctionToolCall.Function\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n title: string\n}\n\nexport const FunctionBase = ({\n fn,\n runStep,\n title,\n}: Args) => (\n <PopoverRoot>\n <ToolCallBase>\n <Icon runStep={runStep} />\n <ToolCallTitle>\n {title}\n </ToolCallTitle>\n </ToolCallBase>\n <PopoverContent\n className=\"max-h-[500px]\"\n >\n <Content fn={fn} />\n </PopoverContent>\n </PopoverRoot>\n)\n","import {\n Flex,\n Button,\n PopoverTrigger\n} from '@radix-ui/themes'\n\ntype Args = {\n children: React.ReactNode\n}\n\nexport const ToolCallBase = ({\n children,\n}: Args) => (\n <Flex\n py=\"1\"\n ml=\"-2\"\n >\n <PopoverTrigger>\n <Button\n size=\"1\"\n color=\"gold\"\n variant=\"outline\"\n style={{\n boxShadow: 'none',\n }}\n >\n {children}\n </Button>\n </PopoverTrigger>\n </Flex>\n)\n","import {\n Text,\n} from '@radix-ui/themes'\n\ntype Args = {\n children: React.ReactNode\n}\n\nexport const ToolCallTitle = ({\n children,\n}: Args) => (\n <Text\n weight=\"regular\"\n >\n {children}\n </Text>\n)\n","import OpenAI from 'openai'\nimport {\n CircleIcon,\n CircleBackslashIcon,\n CheckCircledIcon,\n} from '@radix-ui/react-icons'\n\ntype Args = {\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const Icon = ({\n runStep,\n}: Args) => {\n if (runStep.completed_at) {\n return (\n <CheckCircledIcon />\n )\n } else if (runStep.cancelled_at) {\n return (\n <CircleBackslashIcon />\n )\n } else {\n return (\n <CircleIcon />\n )\n }\n}\n","import { useMemo } from 'react'\nimport { Code, Box } from '@radix-ui/themes'\nimport OpenAI from 'openai'\n\ntype Args = {\n fn: OpenAI.Beta.Threads.Runs.FunctionToolCall.Function\n}\n\nexport const Content = ({\n fn,\n}: Args) => {\n const args = useMemo(() => {\n let result = null\n\n try {\n result = JSON.parse(fn.arguments)\n } catch (error) {\n console.error(error)\n }\n\n return result\n }, [fn])\n\n const output = useMemo(() => {\n if (!fn.output) {\n return null\n }\n\n let result = null\n\n try {\n result = JSON.parse(fn.output)\n } catch (error) {\n console.error(error)\n }\n\n return result\n }, [fn])\n\n if (!args) {\n return null\n }\n\n return (\n <Code\n variant=\"ghost\"\n color=\"gold\"\n className=\"whitespace-pre break-words\"\n >\n <Box>\n {args && JSON.stringify(args, null, 2)}\n </Box>\n <Box>\n {output && JSON.stringify(output, null, 2)}\n </Box>\n </Code>\n )\n}\n","import OpenAI from 'openai'\n\ntype Args = {\n fn: OpenAI.Beta.Threads.Runs.FunctionToolCall.Function\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const title = ({\n fn,\n runStep,\n}: Args) => {\n if (runStep.completed_at) {\n return `Finished ${fn.name}`\n } else if (runStep.cancelled_at) {\n return `Cancelled ${fn.name}`\n } else {\n return `Calling ${fn.name}`\n }\n}\n","import OpenAI from 'openai'\nimport { FunctionBase } from '@/components/functions/FunctionBase'\nimport { title } from './lib/title'\n\ntype Args = {\n fn: OpenAI.Beta.Threads.Runs.FunctionToolCall.Function\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const DefaultFunction = ({\n fn,\n runStep,\n}: Args) => (\n <FunctionBase\n fn={fn}\n runStep={runStep}\n title={title({ runStep, fn })}\n />\n)\n","import OpenAI from 'openai'\nimport {\n Flex,\n} from '@radix-ui/themes'\n\ntype Args = {\n codeInterpreter: OpenAI.Beta.Threads.Runs.CodeToolCall.CodeInterpreter\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const CodeInterpreter = ({\n codeInterpreter,\n}: Args) => (\n <Flex>\n {codeInterpreter.input}\n </Flex>\n)\n","import {\n PopoverRoot,\n PopoverContent,\n Text,\n} from '@radix-ui/themes'\nimport {\n CircleIcon,\n} from '@radix-ui/react-icons'\nimport { ToolCallBase } from '@/components/toolCalls/ToolCallBase'\nimport { ToolCallTitle } from '@/components/toolCalls/ToolCallBase/ToolCallTitle'\n\nexport const Starting = () => (\n <PopoverRoot>\n <ToolCallBase>\n <CircleIcon />\n <ToolCallTitle>\n Starting actions\n </ToolCallTitle>\n </ToolCallBase>\n <PopoverContent\n className=\"max-h-[500px]\"\n >\n <Text>\n Getting ready to connect to domain API\n </Text>\n </PopoverContent>\n </PopoverRoot>\n)\n","import OpenAI from 'openai'\nimport { ToolCalls } from './ToolCalls'\n\ntype Args = {\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const RunStep = ({\n runStep,\n}: Args) => {\n if (runStep.step_details.type === 'tool_calls') {\n return (\n <ToolCalls\n stepDetails={runStep.step_details}\n runStep={runStep}\n />\n )\n }\n\n return null\n}\n","import { useContext } from 'react'\nimport OpenAI from 'openai'\nimport Markdown from 'react-markdown'\nimport { MarkdownContext } from '@/contexts/markdown/MarkdownContext'\n\ntype Args = {\n content: OpenAI.Beta.Threads.Messages.MessageContentText\n}\n\nexport const TextContent = ({\n content,\n}: Args) => {\n const markdownContext = useContext(MarkdownContext)\n\n return (\n <Markdown\n {...markdownContext}\n >\n {content.text.value}\n </Markdown>\n )\n}\n","'use client'\nimport { createContext } from 'react'\nimport { components } from './lib/components'\n\nexport const MarkdownContext = createContext({\n remarkPlugins: [] as any[],\n components,\n})\n","import {\n Box,\n Text,\n} from '@radix-ui/themes'\n\nexport const Paragraph = ({ children }: JSX.IntrinsicElements['p']) => (\n <Box\n pb=\"3\"\n >\n <Text\n size=\"3\"\n className=\"whitespace-pre-line break-words\"\n >\n {children}\n </Text>\n </Box>\n)\n","import {\n Link as RadixLink,\n} from '@radix-ui/themes'\n\ntype Args = JSX.IntrinsicElements['a']\n\nexport const Link = ({ children, href }: Args) => (\n <RadixLink\n href={href}\n >\n {children}\n </RadixLink>\n)\n","import {\n Box,\n} from '@radix-ui/themes'\n\nexport const UnorderedList = ({ children }: JSX.IntrinsicElements['ul']) => (\n <Box\n pb=\"3\"\n asChild\n >\n <ul\n className=\"list-inside\"\n >\n {children}\n </ul>\n </Box>\n)\n","import {\n Box,\n} from '@radix-ui/themes'\n\nexport const OrderedList = ({ children }: JSX.IntrinsicElements['ul']) => (\n <Box\n pb=\"3\"\n asChild\n >\n <ol\n className=\"list-inside\"\n >\n {children}\n </ol>\n </Box>\n)\n","import {\n Box,\n} from '@radix-ui/themes'\n\nexport const ListItem = ({ children }: JSX.IntrinsicElements['li']) => (\n <Box\n pb=\"1\"\n >\n <li>\n {children}\n </li>\n </Box>\n)\n","import {\n Strong as RadixStrong,\n} from '@radix-ui/themes'\n\nexport const Strong = ({ children }: JSX.IntrinsicElements['strong']) => (\n <RadixStrong>\n {children}\n </RadixStrong>\n)\n","import { Components } from 'react-markdown'\nimport { Paragraph } from './Paragraph'\nimport { Link } from './Link'\nimport { UnorderedList } from './UnorderedList'\nimport { OrderedList } from './OrderedList'\nimport { ListItem } from './ListItem'\nimport { Strong } from './Strong'\n\nexport const components: Components = {\n p: Paragraph,\n a: Link,\n strong: Strong,\n ul: UnorderedList,\n ol: OrderedList,\n li: ListItem,\n}\n","import { useMessageGroups } from '@/hooks/messageGroups/useMessageGroups'\nimport { Message } from '@/types'\nimport { MessageGroup } from './MessageGroup'\n\ntype Args = {\n messages: Message[]\n}\n\nexport const Content = ({\n messages,\n}: Args) => {\n const { messageGroups } = useMessageGroups({\n messages,\n })\n\n return (\n <>\n {messageGroups.map((messageGroup) => (\n <MessageGroup\n key={messageGroup.id}\n messageGroup={messageGroup}\n />\n ))}\n </>\n )\n}\n","import { Box } from '@radix-ui/themes'\nimport { MessagesGroupBase } from '@/components/messageGroups/MessagesGroupBase'\nimport { StartingContentSkeleton } from '@/components/skeletons/StartingContentSkeleton'\nimport { StartingSkeleton } from '@/components/skeletons/StartingSkeleton'\nimport { Message } from '@/types'\n\ntype Args = {\n latestMessage: Message | null\n isRunActive: boolean\n}\n\nexport const ProgressMessage = ({\n latestMessage,\n isRunActive,\n}: Args) => {\n if (!latestMessage) return null\n if (!isRunActive) return null\n\n if (latestMessage.role === 'user') {\n return (\n <StartingSkeleton />\n )\n }\n\n return (\n <MessagesGroupBase>\n <Box pl=\"5\" />\n <StartingContentSkeleton />\n </MessagesGroupBase>\n )\n}\n","import {\n Box,\n} from '@radix-ui/themes'\n\nexport const StartingContentSkeleton = () => (\n <Box\n height=\"4\"\n width=\"4\"\n shrink=\"0\"\n mt=\"1\"\n className=\"animate-pulse bg-gray-12 rounded-3\"\n />\n)\n","import { useContext } from 'react'\nimport { Box } from '@radix-ui/themes'\nimport { StartingContentSkeleton } from '@/components/skeletons/StartingContentSkeleton'\nimport { MessagesGroupBase } from '@/components/messageGroups/MessagesGroupBase'\nimport { Name } from '@/components/messageGroups/MessagesGroupBase/Name'\nimport { AssistantAvatar } from '@/components/messageGroups/MessagesGroupBase/AssistantAvatar'\nimport { AssistantNameContext } from '@/contexts/assistants/AssistantNameContext'\n\ntype Args = {\n children?: React.ReactNode\n}\n\nexport const StartingSkeleton = ({\n children,\n}: Args) => {\n const assistantNameContext = useContext(AssistantNameContext)\n\n return (\n <MessagesGroupBase>\n <AssistantAvatar />\n\n <Box>\n <Name>\n {assistantNameContext}\n </Name>\n\n {children}\n\n <StartingContentSkeleton />\n </Box>\n </MessagesGroupBase>\n )\n}\n","import { useMemo } from 'react'\nimport {\n Grid,\n} from '@radix-ui/themes'\nimport { useLatestMessage } from '@/hooks/messages/useLatestMessage'\nimport { useIsRunActive } from '@/hooks/runs/useIsRunActive'\nimport { Suggestion } from './Suggestion'\n\ntype Args = {\n emptyStateSuggestions?: string[]\n suggestions?: string[]\n [key: string]: any\n}\n\nexport const Suggestions = ({\n emptyStateSuggestions = [],\n suggestions = [],\n ...args\n}: Args) => {\n const latestMessageProps = useLatestMessage(args)\n const isRunActiveProps = useIsRunActive(args)\n\n const isDisabled = useMemo(() => (\n // @ts-ignore-next-line\n latestMessageProps.latestMessage?.metadata?.isBlocking ||\n isRunActiveProps.isRunActive\n ), [latestMessageProps, isRunActiveProps])\n\n if (latestMessageProps.isLoading) return null\n if (isDisabled) return null\n\n if (!latestMessageProps.latestMessage && emptyStateSuggestions.length > 0) {\n return (\n <Grid\n columns={{\n initial: \"1\",\n md: \"2\",\n }}\n gap=\"2\"\n py=\"2\"\n >\n {emptyStateSuggestions.map((suggestion) => (\n <Suggestion\n key={suggestion}\n suggestion={suggestion}\n {...args}\n />\n ))}\n </Grid>\n )\n }\n\n if (latestMessageProps.latestMessage.role === 'assistant') {\n return (\n <Grid\n columns={{\n initial: \"3\",\n md: \"4\",\n }}\n gap=\"2\"\n py=\"2\"\n >\n {suggestions.map((suggestion) => (\n <Suggestion\n key={suggestion}\n suggestion={suggestion}\n {...args}\n />\n ))}\n </Grid>\n )\n }\n\n return null\n}\n","import {\n ArrowUpIcon,\n} from '@radix-ui/react-icons'\nimport {\n Text,\n Button,\n} from '@radix-ui/themes'\nimport { useCreateMessage } from '@/hooks/messages/useCreateMessage'\nimport { useIsRunActive } from '@/hooks/runs/useIsRunActive'\n\ntype Args = {\n suggestion: string\n [key: string]: any\n}\n\nexport const Suggestion = ({\n suggestion,\n ...args\n}: Args) => {\n const {\n createMessage,\n // @ts-ignore-next-line\n } = useCreateMessage(args)\n\n const { isRunActive } = useIsRunActive(args)\n\n return (\n <Button\n variant=\"soft\"\n style={{\n justifyContent: 'space-between',\n }}\n onClick={() => {\n // @ts-ignore-next-line\n createMessage({\n content: suggestion,\n ...args,\n })\n }}\n disabled={isRunActive}\n >\n <Text\n size=\"1\"\n weight=\"regular\"\n >\n {suggestion}\n </Text>\n\n <ArrowUpIcon />\n </Button>\n )\n}\n","import {\n UseMutationOptions,\n useMutation,\n} from '@tanstack/react-query'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { Message } from '@/types'\nimport { extendOptions } from '@/lib/core/extendOptions'\nimport { useMeta } from '@/hooks/metas/useMeta'\n\ntype Args = (args: any) => UseMutationOptions<{ message: Message }>\n\n// @ts-ignore-next-line\nexport const useCreateMessage = (args: Args = () => {}) => {\n const superinterfaceContext = useSuperinterfaceContext()\n const { meta } = useMeta()\n\n const props = useMutation(extendOptions({\n defaultOptions: superinterfaceContext.mutationOptions.createMessage,\n args,\n meta,\n }))\n\n return {\n ...props,\n createMessage: props.mutateAsync,\n }\n}\n","import {\n Container,\n Flex,\n Text,\n} from '@radix-ui/themes'\nimport { useRef, useEffect, useMemo, useContext } from 'react'\nimport { useForm, SubmitHandler } from 'react-hook-form'\nimport { z } from 'zod'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { usePrevious } from 'react-use'\nimport { useIsRunActive } from '@/hooks/runs/useIsRunActive'\nimport { TextareaBase } from '@/components/textareas/TextareaBase'\nimport { useLatestMessage } from '@/hooks/messages/useLatestMessage'\nimport { useCreateMessage } from '@/hooks/messages/useCreateMessage'\nimport { AssistantNameContext } from '@/contexts/assistants/AssistantNameContext'\nimport { Submit } from './Submit'\n\nexport const schema = z.object({\n content: z.string().min(1).max(300),\n})\n\ntype Inputs = {\n content: string\n}\n\ntype Args = {\n [key: string]: any\n} | {\n children?: React.ReactNode\n}\n\nexport const Form = ({\n children,\n ...args\n}: Args = {}) => {\n const {\n register,\n handleSubmit,\n formState: { errors, isSubmitting },\n reset,\n } = useForm<Inputs>({\n resolver: zodResolver(schema),\n })\n\n const { isRunActive } = useIsRunActive(args)\n\n const isLoading = useMemo(() => (\n isRunActive || isSubmitting\n ), [\n isRunActive,\n isSubmitting,\n ])\n\n const {\n createMessage,\n // @ts-ignore-next-line\n } = useCreateMessage(args)\n\n const onSubmit: SubmitHandler<Inputs> = async (data) => {\n reset()\n // @ts-ignore-next-line\n await createMessage({\n content: data.content,\n ...args,\n })\n }\n\n const { latestMessage } = useLatestMessage(args)\n\n const isDisabled = useMemo(() => (\n // @ts-ignore-next-line\n latestMessage?.metadata?.isBlocking\n ), [latestMessage, isLoading])\n\n const isInputDisabled = useMemo(() => (\n isLoading || isDisabled || false\n ), [isLoading, isDisabled])\n\n const isInputDisabledPrevious = usePrevious(isInputDisabled)\n\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n const textareaProps = register('content')\n\n useEffect(() => {\n if (isInputDisabled) return\n if (!isInputDisabledPrevious) return\n if (!textareaRef.current) return\n\n textareaRef.current.focus()\n }, [isInputDisabled, isInputDisabledPrevious, textareaProps])\n\n const assistantNameContext = useContext(AssistantNameContext)\n\n return (\n <Container\n size=\"2\"\n px=\"2\"\n grow=\"0\"\n >\n {children}\n\n <Flex\n direction=\"column\"\n shrink=\"0\"\n >\n <Flex\n direction=\"column\"\n shrink=\"0\"\n pb=\"4\"\n >\n <form\n onSubmit={handleSubmit(onSubmit)}\n >\n <Flex\n className={`rounded-3 border-gray-5 border border-solid ${errors.content ? 'border-red-9 bg-red-2' : ''}`}\n p=\"2\"\n pl=\"4\"\n >\n <Text\n size=\"2\"\n className=\"grow\"\n >\n <Flex\n grow=\"1\"\n direction=\"column\"\n >\n <TextareaBase\n minRows={1}\n placeholder={`Message ${assistantNameContext}...`}\n disabled={isLoading || isDisabled}\n onKeyDown={(e: any) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n handleSubmit(onSubmit)()\n }\n }}\n autoFocus\n {...textareaProps}\n ref={(e: any) => {\n textareaProps.ref(e)\n // @ts-ignore-next-line\n textareaRef.current = e\n }}\n />\n </Flex>\n </Text>\n\n <Flex\n shrink=\"0\"\n align=\"end\"\n >\n <Submit\n isLoading={isLoading}\n isDisabled={isDisabled}\n />\n </Flex>\n </Flex>\n </form>\n </Flex>\n </Flex>\n </Container>\n )\n}\n","import { forwardRef } from 'react'\nimport TextareaAutosize from 'react-textarea-autosize'\n\nconst UPSCALE_RATIO = 16 / 14\n\ntype Props = React.ComponentProps<typeof TextareaAutosize>\n\nexport const TextareaBase = forwardRef(function TextareaBase(props: Props, ref) {\n return (\n <TextareaAutosize\n // @ts-ignore-next-line\n ref={ref}\n className=\"textarea-base\"\n style={{\n resize: 'none',\n fontSize: `${14 * UPSCALE_RATIO}px`,\n lineHeight: `${24 * UPSCALE_RATIO}px`,\n transform: `scale(${1 / UPSCALE_RATIO})`,\n margin: `0 ${(-100 * UPSCALE_RATIO + 100) / 2}%`,\n width: `${100 * UPSCALE_RATIO}%`,\n maxWidth: `${100 * UPSCALE_RATIO}%`,\n flexGrow: 1,\n display: 'flex',\n }}\n {...props}\n />\n )\n})\n","import {\n ArrowUpIcon,\n} from '@radix-ui/react-icons'\nimport {\n Button,\n} from '@radix-ui/themes'\nimport {\n Spinner,\n} from '@/components/spinners/Spinner'\n\ntype Args = {\n isLoading: boolean\n isDisabled: boolean\n}\n\nexport const Submit = ({\n isLoading,\n isDisabled\n}: Args) => (\n <Button\n type=\"submit\"\n color=\"gray\"\n highContrast\n radius=\"large\"\n disabled={isLoading || isDisabled}\n >\n {isLoading ? <Spinner /> : <ArrowUpIcon />}\n </Button>\n)\n","export const Spinner = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4 animate-spin\"\n {...props}\n >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n)\n","import { useState } from 'react'\nimport {\n InfiniteData,\n UseInfiniteQueryOptions,\n UseMutationOptions,\n} from '@tanstack/react-query'\nimport { merge } from '@/lib/misc/merge'\nimport { Message, Run, MessagesPage, RunsPage } from '@/types'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { SuperinterfaceContext } from '@/contexts/core/SuperinterfaceContext'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\n\ntype Args = {\n children: React.ReactNode\n queryOptions: {\n messages: UseInfiniteQueryOptions<InfiniteData<MessagesPage>>\n runs: UseInfiniteQueryOptions<InfiniteData<RunsPage>>\n },\n mutationOptions: {\n createMessage: UseMutationOptions<{ message: Message }>\n createRun: UseMutationOptions<{ run: Run }>\n handleAction: UseMutationOptions<{ run: Run }>\n },\n}\n\nexport const SuperinterfaceProvider = ({\n children,\n ...rest\n}: Args) => {\n const [queryClient] = useState(\n () =>\n new QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n // With SSR, we usually want to set some default staleTime\n // above 0 to avoid refetching immediately on the client\n staleTime: 10000,\n },\n mutations: {\n retry: false,\n },\n },\n }),\n )\n\n const superinterfaceContext = useSuperinterfaceContext()\n\n const value = merge(\n superinterfaceContext,\n // @ts-ignore-next-line\n rest\n )\n\n return (\n <SuperinterfaceContext.Provider\n value={value}\n >\n <QueryClientProvider client={queryClient}>\n {children}\n </QueryClientProvider>\n </SuperinterfaceContext.Provider>\n )\n}\n","import _ from 'lodash'\nimport { customizer } from './customizer'\n\n// @ts-ignore-next-line\nexport const merge = (obj, ...sources) =>\n _.mergeWith(_.cloneDeep(obj), ...sources, customizer)\n","import _ from 'lodash'\n\n// @ts-ignore-next-line\nexport const customizer = (objectValue, srcValue) => {\n if (!_.isArray(objectValue)) return\n\n return srcValue\n}\n","import { useContext } from 'react'\nimport { MarkdownContext } from '@/contexts/markdown/MarkdownContext'\n\nexport const useMarkdownContext = () => (\n useContext(MarkdownContext)\n)\n"],"mappings":"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","names":["import_themes","import_react","_","import_react","import_themes","import_react","import_themes","import_jsx_runtime","MessagesGroupBase","import_themes","import_jsx_runtime","import_jsx_runtime","MessagesSkeleton","import_react","import_react_query","import_react","import_react","queryKey","queryOptions","queryKey","onMutate","data","onSettled","mutationOptions","onMutate","onSettled","onMutate","onSettled","mutationOptions","onMutate","onSettled","queryOptions","mutationOptions","import_radash","import_lodash","args","import_react","import_react","import_react","import_react","import_react_query","data","import_react_query","import_lodash","_","import_react","import_react_query","import_lodash","_","import_react","import_react_query","import_react","import_lodash","import_radash","import_radash","messages","messages","_","messages","import_react","import_themes","import_react_icons","import_react","import_themes","import_react","import_themes","import_jsx_runtime","import_jsx_runtime","import_react","import_themes","import_react","import_themes","import_themes","import_themes","import_themes","import_react","import_react","import_themes","import_themes","import_jsx_runtime","import_themes","import_jsx_runtime","import_react_icons","import_jsx_runtime","import_react","import_themes","import_jsx_runtime","import_jsx_runtime","title","import_jsx_runtime","import_jsx_runtime","import_themes","import_jsx_runtime","import_jsx_runtime","import_themes","import_react_icons","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_themes","import_jsx_runtime","import_themes","import_jsx_runtime","RadixLink","import_themes","import_jsx_runtime","import_themes","import_jsx_runtime","import_themes","import_jsx_runtime","import_themes","import_jsx_runtime","RadixStrong","import_jsx_runtime","Markdown","import_jsx_runtime","laterRunSteps","olderRunSteps","import_jsx_runtime","Content","import_jsx_runtime","Content","import_jsx_runtime","Content","messages","messageGroups","import_themes","import_themes","import_jsx_runtime","import_react","import_themes","import_jsx_runtime","import_jsx_runtime","isRunActive","import_jsx_runtime","messages","isRunActive","Content","import_react","import_themes","import_react_icons","import_themes","import_react_query","import_jsx_runtime","isRunActive","import_jsx_runtime","import_themes","import_react","import_zod","import_react_use","import_react","import_jsx_runtime","TextareaBase","TextareaAutosize","import_react_icons","import_themes","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","isRunActive","data","import_react","import_lodash","import_lodash","_","merge","_","import_react_query","import_jsx_runtime","merge","import_react"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/messages/Messages/index.tsx","../src/hooks/misc/useInfiniteScroll/index.tsx","../src/hooks/misc/useThrottledEffect/index.tsx","../src/components/skeletons/MessagesSkeleton/index.tsx","../src/components/skeletons/Skeleton/index.tsx","../src/components/messageGroups/MessagesGroupBase/index.tsx","../src/components/messageGroups/MessagesGroupBase/Name.tsx","../src/hooks/messages/useMessages/index.tsx","../src/hooks/core/useSuperinterfaceContext/index.ts","../src/contexts/core/SuperinterfaceContext/index.tsx","../src/hooks/messages/useMessages/lib/queryOptions/queryKey.ts","../src/hooks/messages/useMessages/lib/queryOptions/index.ts","../src/hooks/runs/useRuns/lib/queryOptions/queryKey.ts","../src/hooks/runs/useRuns/lib/queryOptions/index.ts","../src/lib/core/fillOption.ts","../src/lib/optimistic/optimisticId.ts","../src/hooks/messages/useCreateMessage/lib/mutationOptions/onMutate/data.ts","../src/hooks/messages/useCreateMessage/lib/mutationOptions/onMutate/index.ts","../src/hooks/messages/useCreateMessage/lib/mutationOptions/onError.ts","../src/hooks/messages/useCreateMessage/lib/mutationOptions/onSettled.ts","../src/hooks/messages/useCreateMessage/lib/mutationOptions/index.ts","../src/hooks/runs/useCreateRun/lib/mutationOptions/onMutate.ts","../src/hooks/runs/useCreateRun/lib/mutationOptions/onSuccess.ts","../src/hooks/runs/useCreateRun/lib/mutationOptions/onSettled.ts","../src/hooks/runs/useCreateRun/lib/mutationOptions/index.ts","../src/hooks/actions/useHandleAction/lib/mutationOptions/onMutate.ts","../src/hooks/actions/useHandleAction/lib/mutationOptions/onSettled.ts","../src/hooks/actions/useHandleAction/lib/mutationOptions/index.ts","../src/hooks/metas/useMeta/index.ts","../src/lib/core/extendOptions.ts","../src/hooks/runs/useManageRuns/index.tsx","../src/hooks/messages/useLatestMessage/index.ts","../src/hooks/runs/useLatestRun/index.ts","../src/hooks/runs/useRuns/index.tsx","../src/hooks/runs/useRuns/lib/getRuns.ts","../src/hooks/runs/useCreateRun/index.ts","../src/lib/optimistic/isOptimistic.ts","../src/hooks/runs/useIsRunActive/index.tsx","../src/lib/runs/isRunEditingMessage/index.ts","../src/hooks/runs/usePolling/index.tsx","../src/hooks/runs/usePolling/lib/refetch.ts","../src/hooks/actions/useManageActions/index.tsx","../src/hooks/actions/useHandleAction/index.tsx","../src/hooks/threads/useThreadLifecycles/index.tsx","../src/hooks/messageGroups/useMessageGroups/index.ts","../src/hooks/messageGroups/useMessageGroups/lib/messageGroups/index.ts","../src/lib/messages/order.ts","../src/hooks/messageGroups/useMessageGroups/lib/messageGroups/newGroup/newGroupItem.ts","../src/hooks/messageGroups/useMessageGroups/lib/messageGroups/newGroup/index.ts","../src/components/messages/Messages/Content/MessageGroup/index.tsx","../src/components/messageGroups/MessagesGroupBase/AssistantAvatar.tsx","../src/contexts/assistants/AssistantAvatarContext/index.tsx","../src/contexts/assistants/AssistantNameContext/index.tsx","../src/components/messages/Messages/Content/MessageGroup/Content/index.tsx","../src/components/messages/Message/index.tsx","../src/components/runSteps/RunSteps/index.tsx","../src/components/runSteps/RunStep/ToolCalls/index.tsx","../src/components/runSteps/RunStep/ToolCalls/ToolCall/index.tsx","../src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/index.tsx","../src/contexts/functions/FunctionComponentsContext/index.tsx","../src/components/functions/FunctionBase/index.tsx","../src/components/toolCalls/ToolCallBase/index.tsx","../src/components/toolCalls/ToolCallBase/ToolCallTitle.tsx","../src/components/functions/FunctionBase/Icon.tsx","../src/components/functions/FunctionBase/Content.tsx","../src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/DefaultFunction/lib/title.ts","../src/components/runSteps/RunStep/ToolCalls/ToolCall/Fn/DefaultFunction/index.tsx","../src/components/runSteps/RunStep/ToolCalls/ToolCall/CodeInterpreter/index.tsx","../src/components/runSteps/RunStep/ToolCalls/Starting/index.tsx","../src/components/runSteps/RunStep/index.tsx","../src/components/messages/Message/TextContent/index.tsx","../src/contexts/markdown/MarkdownContext/index.ts","../src/contexts/markdown/MarkdownContext/lib/components/Paragraph.tsx","../src/contexts/markdown/MarkdownContext/lib/components/Link.tsx","../src/contexts/markdown/MarkdownContext/lib/components/UnorderedList.tsx","../src/contexts/markdown/MarkdownContext/lib/components/OrderedList.tsx","../src/contexts/markdown/MarkdownContext/lib/components/ListItem.tsx","../src/contexts/markdown/MarkdownContext/lib/components/Strong.tsx","../src/contexts/markdown/MarkdownContext/lib/components/index.tsx","../src/components/messages/Messages/Content/index.tsx","../src/components/messages/Messages/ProgressMessage/index.tsx","../src/components/skeletons/StartingContentSkeleton/index.tsx","../src/components/skeletons/StartingSkeleton/index.tsx","../src/components/suggestions/Suggestions/index.tsx","../src/components/suggestions/Suggestion/index.tsx","../src/hooks/messages/useCreateMessage/index.ts","../src/components/messages/Form/index.tsx","../src/components/textareas/TextareaBase/index.tsx","../src/components/messages/Form/Submit/index.tsx","../src/components/spinners/Spinner/index.tsx","../src/components/messages/Form/lib/useFormProps/index.ts","../src/components/core/SuperinterfaceProvider/index.tsx","../src/lib/misc/merge/index.ts","../src/lib/misc/merge/customizer.ts","../src/hooks/markdown/useMarkdownContext/index.ts"],"sourcesContent":["export { Messages } from '@/components/messages/Messages'\nexport { Message } from '@/components/messages/Message'\nexport { Suggestions } from '@/components/suggestions/Suggestions'\nexport { Suggestion } from '@/components/suggestions/Suggestion'\nexport { Form } from '@/components/messages/Form'\nexport { useThreadLifecycles } from '@/hooks/threads/useThreadLifecycles'\nexport { useMessages } from '@/hooks/messages/useMessages'\nexport { useLatestMessage } from '@/hooks/messages/useLatestMessage'\nexport { useCreateMessage } from '@/hooks/messages/useCreateMessage'\nexport { useIsRunActive } from '@/hooks/runs/useIsRunActive'\nexport { SuperinterfaceProvider } from '@/components/core/SuperinterfaceProvider'\nexport { AssistantAvatarContext } from '@/contexts/assistants/AssistantAvatarContext'\nexport { AssistantNameContext } from '@/contexts/assistants/AssistantNameContext'\nexport { FunctionComponentsContext } from '@/contexts/functions/FunctionComponentsContext'\nexport { MarkdownContext } from '@/contexts/markdown/MarkdownContext'\nexport { useMarkdownContext } from '@/hooks/markdown/useMarkdownContext'\nexport { FunctionBase } from '@/components/functions/FunctionBase'\n","'use client'\n\nimport {\n Flex,\n} from '@radix-ui/themes'\nimport { useInfiniteScroll } from '@/hooks/misc/useInfiniteScroll'\nimport { MessagesSkeleton } from '@/components/skeletons/MessagesSkeleton'\nimport { useMessages } from '@/hooks/messages/useMessages'\nimport { useThreadLifecycles } from '@/hooks/threads/useThreadLifecycles'\nimport { useLatestMessage } from '@/hooks/messages/useLatestMessage'\nimport { useIsRunActive } from '@/hooks/runs/useIsRunActive'\nimport { Content } from './Content'\nimport { ProgressMessage } from './ProgressMessage'\n\ntype Args = {\n children?: React.ReactNode\n [key: string]: any\n}\n\nexport const Messages = ({\n children,\n ...args\n}: Args) => {\n const {\n messages,\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n } = useMessages(args)\n\n useThreadLifecycles(args)\n\n const { containerRef, loaderRef } = useInfiniteScroll({\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n })\n\n const { isRunActive } = useIsRunActive(args)\n const { latestMessage } = useLatestMessage(args)\n\n return (\n <Flex\n ref={containerRef}\n direction=\"column-reverse\"\n className=\"overflow-auto\"\n grow=\"1\"\n p=\"2\"\n >\n <Flex\n shrink=\"0\"\n height=\"1\"\n />\n\n <ProgressMessage\n latestMessage={latestMessage}\n isRunActive={isRunActive}\n />\n\n {children}\n\n <Content\n messages={messages}\n />\n\n {hasNextPage && (\n <MessagesSkeleton\n ref={loaderRef}\n />\n )}\n\n <Flex\n shrink=\"0\"\n grow=\"1\"\n />\n </Flex>\n )\n}\n","import { useRef } from 'react'\nimport { useInView } from 'react-intersection-observer'\nimport { useThrottledEffect } from '@/hooks/misc/useThrottledEffect'\n\ntype Args = {\n isFetchingNextPage: boolean\n hasNextPage: boolean\n fetchNextPage: () => void\n}\n\nexport const useInfiniteScroll = ({\n isFetchingNextPage,\n hasNextPage,\n fetchNextPage,\n}: Args) => {\n const containerRef = useRef(null)\n\n const { ref: loaderRef, inView } = useInView({\n root: containerRef.current,\n rootMargin: '0px',\n threshold: 0.1,\n })\n\n useThrottledEffect(\n () => {\n if (isFetchingNextPage) return\n if (!inView) return\n if (!hasNextPage) return\n\n console.log('Fetching next page')\n fetchNextPage()\n },\n 500,\n [inView, isFetchingNextPage, hasNextPage, fetchNextPage]\n )\n\n return {\n containerRef,\n loaderRef,\n inView,\n }\n}\n","import _ from 'lodash'\nimport { useRef, useEffect, useCallback } from 'react'\n\nexport const useThrottledEffect = (cb: Function, delay: number, additionalDeps: any[]) => {\n const cbRef = useRef(cb)\n\n const throttledCb = useCallback(\n _.throttle((...args: any[]) => cbRef.current(...args), delay, {\n leading: true,\n trailing: true,\n }),\n [delay]\n )\n useEffect(() => {\n cbRef.current = cb\n })\n // set additionalDeps to execute effect, when other values change (not only on delay change)\n useEffect(throttledCb, [throttledCb, ...additionalDeps])\n}\n","import { forwardRef } from 'react'\nimport {\n Flex,\n Avatar,\n Box,\n} from '@radix-ui/themes'\nimport { Skeleton } from '@/components/skeletons/Skeleton'\nimport { MessagesGroupBase } from '@/components/messageGroups/MessagesGroupBase'\nimport { Name } from '@/components/messageGroups/MessagesGroupBase/Name'\n\nexport const MessagesSkeleton = forwardRef(function MessagesSkeleton(_props, ref) {\n return (\n <MessagesGroupBase\n // @ts-ignore-next-line\n ref={ref}\n >\n <Avatar\n fallback={<Flex />}\n size=\"1\"\n className=\"animate-pulse\"\n />\n\n <Box\n pb=\"3\"\n >\n <Name>\n <Skeleton\n height=\"1\"\n className=\"w-[128px]\"\n />\n </Name>\n\n <Skeleton\n height=\"2\"\n className=\"w-[256px]\"\n />\n\n <Skeleton\n height=\"2\"\n className=\"w-[256px] mt-2\"\n />\n\n <Skeleton\n height=\"2\"\n className=\"w-[256px] mt-2\"\n />\n </Box>\n </MessagesGroupBase>\n )\n})\n","import { Flex } from '@radix-ui/themes'\n\ntype Props = {\n height: string\n className: string\n}\n\nexport const Skeleton = ({\n className,\n ...rest\n}: Props) => (\n // @ts-ignore-next-line\n <Flex\n className={`animate-pulse rounded-3 bg-gray-5 ${className}`}\n {...rest}\n />\n)\n","import { forwardRef } from 'react'\nimport {\n Flex,\n Container,\n} from '@radix-ui/themes'\n\ntype Args = {\n children: React.ReactNode\n}\n\nexport const MessagesGroupBase = forwardRef(function MessagesGroupBase({\n children,\n}: Args, ref) {\n return (\n <Container\n // @ts-ignore-next-line\n ref={ref}\n size=\"2\"\n grow=\"0\"\n >\n <Flex\n shrink=\"0\"\n gap=\"3\"\n >\n {children}\n </Flex>\n </Container>\n )\n})\n","import {\n Flex,\n Text,\n} from '@radix-ui/themes'\n\ntype Args = {\n children: React.ReactNode\n}\n\nexport const Name = ({\n children,\n}: Args) => (\n <Flex\n height=\"5\"\n align=\"center\"\n >\n <Text\n size=\"2\"\n weight=\"bold\"\n >\n {children}\n </Text>\n </Flex>\n)\n","import { useMemo } from 'react'\nimport {\n InfiniteData,\n UseInfiniteQueryOptions,\n useInfiniteQuery,\n} from '@tanstack/react-query'\nimport { Message, MessagesPage } from '@/types'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { useMeta } from '@/hooks/metas/useMeta'\nimport { extendOptions } from '@/lib/core/extendOptions'\n\ntype Args = UseInfiniteQueryOptions<InfiniteData<MessagesPage>> | {}\n\nconst messages = ({\n props,\n}: {\n props: {\n data: InfiniteData<MessagesPage> | undefined\n },\n}) => {\n if (!props.data) return []\n\n return props.data.pages.reduce<Message[]>((acc, page) => (\n acc.concat(page.data)\n ), [])\n}\n\nexport const useMessages = (args: Args = {}) => {\n const { meta } = useMeta()\n const superinterfaceContext = useSuperinterfaceContext()\n\n // @ts-ignore-next-line\n const props = useInfiniteQuery(extendOptions({\n defaultOptions: superinterfaceContext.queryOptions.messages,\n args,\n meta,\n }))\n\n return useMemo(() => ({\n ...props,\n // @ts-ignore-next-line\n messages: messages({ props }),\n }), [props])\n}\n","import { useContext } from 'react'\nimport { SuperinterfaceContext } from '@/contexts/core/SuperinterfaceContext'\n\nexport const useSuperinterfaceContext = () => (\n useContext(SuperinterfaceContext)\n)\n","'use client'\nimport { createContext } from 'react'\nimport { queryOptions as messages } from '@/hooks/messages/useMessages/lib/queryOptions'\nimport { queryOptions as runs } from '@/hooks/runs/useRuns/lib/queryOptions'\nimport { mutationOptions as createMessage } from '@/hooks/messages/useCreateMessage/lib/mutationOptions'\nimport { mutationOptions as createRun } from '@/hooks/runs/useCreateRun/lib/mutationOptions'\nimport { mutationOptions as handleAction } from '@/hooks/actions/useHandleAction/lib/mutationOptions'\n\nexport const SuperinterfaceContext = createContext({\n queryOptions: {\n messages,\n runs,\n },\n mutationOptions: {\n createMessage,\n createRun,\n handleAction,\n },\n})\n","export const queryKey = ['messages']\n","import { MessagesPage } from '@/types'\nimport { queryKey } from './queryKey'\n\nexport const queryOptions = {\n queryKey,\n initialPageParam: undefined,\n getNextPageParam: (lastPage: MessagesPage) => {\n if (!lastPage.hasNextPage) return null\n\n return lastPage.lastId\n },\n}\n","export const queryKey = ['runs']\n","import _ from 'lodash'\nimport { RunsPage } from '@/types'\nimport { queryKey } from './queryKey'\n\nexport const queryOptions = {\n queryKey,\n initialPageParam: undefined,\n getNextPageParam: (lastPage: RunsPage) => {\n if (!lastPage.hasNextPage) return null\n\n return lastPage.lastId\n },\n limit: 10,\n}\n","const extended = [\n 'enabled',\n 'queryKey',\n]\n\nexport const fillOption = ({\n value,\n key,\n meta,\n args,\n}: any) => {\n if (typeof value === 'function' && extended.includes(key)) {\n return value({\n meta,\n ...args\n })\n }\n\n return value\n}\n","import { uid } from 'radash'\n\nexport const optimisticId = () => (\n `-${uid(24)}`\n)\n","import OpenAI from 'openai'\nimport { optimisticId } from '@/lib/optimistic/optimisticId'\nimport { Args as NewMessageArgs } from '../mutationFn'\n\ntype Args = {\n newMessage: NewMessageArgs\n}\n\nexport const data = ({\n newMessage,\n}: Args) => (prevData: any) => {\n const message = {\n id: optimisticId(),\n role: 'user' as OpenAI.Beta.Threads.Messages.ThreadMessage['role'],\n created_at: +new Date(),\n object: 'thread.message' as OpenAI.Beta.Threads.Messages.ThreadMessage['object'],\n content: [\n {\n type: 'text',\n text: {\n annotations: [],\n value: newMessage.content,\n },\n } as OpenAI.Beta.Threads.Messages.MessageContentText,\n ],\n run_id: null,\n assistant_id: null,\n thread_id: null,\n file_ids: [],\n metadata: {},\n runSteps: [],\n }\n\n if (!prevData) {\n return {\n pageParams: [],\n pages: [\n {\n data: [message],\n hasNextPage: false,\n lastId: message.id,\n },\n ],\n }\n }\n\n const [latestPage, ...pagesRest] = prevData.pages\n\n return {\n ...prevData,\n pages: [\n {\n ...latestPage,\n data: [\n message,\n ...latestPage.data,\n ],\n },\n ...pagesRest,\n ],\n }\n}\n","import { fillOption } from '@/lib/core/fillOption'\nimport { Args } from '../mutationFn'\nimport { data } from './data'\n\nexport const onMutate = async (\n newMessage: Args,\n context: any,\n) => {\n await context.meta.queryClient.cancelQueries(\n fillOption({\n value: context.meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: newMessage,\n })\n )\n\n const prevMessages = context.meta.queryClient.getQueryData(\n fillOption({\n value: context.meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: newMessage,\n })\n )\n\n context.meta.queryClient.setQueryData(\n fillOption({\n value: context.meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: newMessage,\n }),\n data({ newMessage })\n )\n\n return {\n prevMessages,\n newMessage,\n meta: context.meta,\n }\n}\n","import { Args as NewMessageArgs } from './mutationFn'\n\ntype Context = {\n prevMessages: any\n} | undefined\n\nexport const onError = async (\n _error: any,\n newMessage: NewMessageArgs,\n context: Context\n) => {\n if (!context) {\n return\n }\n\n // TODO\n}\n","import { Response } from './mutationFn'\nimport { fillOption } from '@/lib/core/fillOption'\n\ntype Variables = any\n\ntype Context = {\n meta: any\n}\n\nexport const onSettled = async (\n _data: Response,\n _error: any,\n variables: Variables,\n context: Context,\n) => {\n await context.meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: context.meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n })\n await context.meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: context.meta.superinterfaceContext.queryOptions.runs.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n })\n}\n","import { onMutate } from './onMutate'\nimport { onError } from './onError'\nimport { onSettled } from './onSettled'\n\nexport const mutationOptions = {\n onMutate,\n onError,\n onSettled,\n}\n","import { Args } from './mutationFn'\n\nexport const onMutate = async (\n _newRun: Args,\n context: any,\n) => (\n context\n)\n","import { Response } from './mutationFn'\nimport { fillOption } from '@/lib/core/fillOption'\n\ntype Variables = any\n\ntype Context = {\n meta: any\n}\n\nexport const onSuccess = async (\n data: Response,\n variables: Variables,\n context: Context,\n) => (\n context.meta.queryClient.setQueryData(\n fillOption({\n value: context.meta.superinterfaceContext.queryOptions.runs.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n (prevData: any) => {\n if (!prevData) {\n return {\n pageParams: [],\n pages: [\n {\n data: [data.run],\n hasNextPage: false,\n lastId: data.run.id,\n },\n ],\n }\n }\n\n const [latestPage, ...pagesRest] = prevData.pages\n\n return {\n ...prevData,\n pages: [\n {\n ...latestPage,\n data: [\n data.run,\n ...latestPage.data,\n ],\n },\n ...pagesRest,\n ],\n }\n }\n )\n)\n","import { Response } from './mutationFn'\nimport { fillOption } from '@/lib/core/fillOption'\n\ntype Variables = any\n\ntype Context = {\n meta: any\n}\n\nexport const onSettled = async (\n _data: Response,\n _error: any,\n variables: Variables,\n context: Context,\n) => {\n await context.meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: context.meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n })\n\n await context.meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: context.meta.superinterfaceContext.queryOptions.runs.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n })\n}\n","import { onMutate } from './onMutate'\nimport { onSuccess } from './onSuccess'\nimport { onSettled } from './onSettled'\n\nexport const mutationOptions = {\n onMutate,\n onSuccess,\n onSettled,\n}\n","import { Args } from './mutationFn'\n\nexport const onMutate = async (\n _newRun: Args,\n context: any,\n) => (\n context\n)\n","import { Response } from './mutationFn'\nimport { fillOption } from '@/lib/core/fillOption'\n\ntype Variables = any\n\ntype Context = {\n meta: any\n}\n\nexport const onSettled = async (\n _data: Response,\n _error: any,\n variables: Variables,\n context: Context,\n) => {\n await context.meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: context.meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n })\n await context.meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: context.meta.superinterfaceContext.queryOptions.runs.queryKey,\n key: 'queryKey',\n meta: context.meta,\n args: variables,\n }),\n })\n}\n","import { onMutate } from './onMutate'\nimport { onSettled } from './onSettled'\n\nexport const mutationOptions = {\n onMutate,\n onSettled,\n}\n","import {\n useQueryClient,\n} from '@tanstack/react-query'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\n\nexport const useMeta = () => {\n const superinterfaceContext = useSuperinterfaceContext()\n const queryClient = useQueryClient()\n\n return {\n meta: {\n queryClient,\n superinterfaceContext,\n },\n }\n}\n","import { mapValues } from 'radash'\nimport { merge } from 'lodash'\nimport { fillOption } from '@/lib/core/fillOption'\n\ntype Args = {\n defaultOptions: any\n args: any\n meta: any\n}\n\ntype FillArgs = {\n options: any\n args: any\n meta: any\n}\n\nconst fill = ({ options, meta, args }: FillArgs) => (\n mapValues(options, (value, key: string) => {\n if (key === 'onMutate') {\n return async (...args: any) => {\n // @ts-ignore-next-line\n return value(...args, { meta })\n }\n }\n\n\n return fillOption({\n value,\n key,\n meta,\n args,\n })\n })\n)\n\nexport const extendOptions = ({\n defaultOptions,\n args,\n meta,\n}: Args) => {\n const options = merge(defaultOptions, args)\n\n return {\n meta,\n ...fill({ options, meta, args }),\n }\n}\n","import { useEffect } from 'react'\nimport { useLatestMessage } from '@/hooks/messages/useLatestMessage'\nimport { useLatestRun } from '@/hooks/runs/useLatestRun'\nimport { useCreateRun } from '@/hooks/runs/useCreateRun'\nimport { isOptimistic } from '@/lib/optimistic/isOptimistic'\n\ntype Args = {\n [key: string]: any\n}\n\nexport const useManageRuns = (args: Args) => {\n const latestRunProps = useLatestRun(args)\n const latestMessageProps = useLatestMessage(args)\n // @ts-ignore-next-line\n const createRunProps = useCreateRun(args)\n\n useEffect(() => {\n if (createRunProps.isPending) return\n if (latestRunProps.isFetching) return\n if (latestMessageProps.isFetching) return\n\n if (!latestMessageProps.latestMessage) return\n if (latestMessageProps.latestMessage.role !== 'user') return\n if (isOptimistic({ id: latestMessageProps.latestMessage.id })) return\n\n if (!latestRunProps.latestRun || (latestMessageProps.latestMessage.created_at > latestRunProps.latestRun.created_at)) {\n // @ts-ignore-next-line\n createRunProps.createRun(args)\n }\n }, [\n createRunProps,\n latestRunProps,\n latestMessageProps,\n ])\n\n return null\n}\n","import {\n UseInfiniteQueryOptions,\n InfiniteData,\n} from '@tanstack/react-query'\nimport { useMemo } from 'react'\nimport { useMessages } from '@/hooks/messages/useMessages'\nimport { MessagesPage } from '@/types'\n\ntype Args = UseInfiniteQueryOptions<InfiniteData<MessagesPage>> | {}\n\nexport const useLatestMessage = (args: Args = {}) => {\n const props = useMessages(args)\n\n return useMemo(() => ({\n ...props,\n latestMessage: props.messages[0] || null,\n }), [props])\n}\n","import {\n UseInfiniteQueryOptions,\n InfiniteData,\n} from '@tanstack/react-query'\nimport { useMemo } from 'react'\nimport { useRuns } from '@/hooks/runs/useRuns'\nimport { RunsPage } from '@/types'\n\ntype Args = UseInfiniteQueryOptions<InfiniteData<RunsPage>> | {}\n\nexport const useLatestRun = (args: Args = {}) => {\n const props = useRuns(args)\n\n return useMemo(() => ({\n ...props,\n latestRun: props.runs[0],\n }), [props])\n}\n","import { useMemo } from 'react'\nimport {\n useInfiniteQuery,\n UseInfiniteQueryOptions,\n InfiniteData,\n} from '@tanstack/react-query'\nimport { getRuns } from './lib/getRuns'\nimport { RunsPage } from '@/types'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { extendOptions } from '@/lib/core/extendOptions'\nimport { useMeta } from '@/hooks/metas/useMeta'\n\ntype Args = UseInfiniteQueryOptions<InfiniteData<RunsPage>> | {}\n\nexport const useRuns = (args: Args = {}) => {\n const { meta } = useMeta()\n const superinterfaceContext = useSuperinterfaceContext()\n\n // @ts-ignore-next-line\n const props = useInfiniteQuery(extendOptions({\n defaultOptions: superinterfaceContext.queryOptions.runs,\n args,\n meta,\n }))\n\n return useMemo(() => ({\n ...props,\n // @ts-ignore-next-line\n runs: getRuns({ data: props.data }),\n }), [props])\n}\n","import { InfiniteData } from '@tanstack/react-query'\nimport { RunsPage, Run } from '@/types'\n\ntype Args = {\n data: InfiniteData<RunsPage> | undefined\n}\n\nexport const getRuns = ({\n data,\n}: Args) => {\n if (!data) return []\n\n return data.pages.reduce<Run[]>((acc, page) => (\n acc.concat(page.data)\n ), [])\n}\n","import {\n UseMutationOptions,\n useMutation,\n} from '@tanstack/react-query'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { Run } from '@/types'\nimport { extendOptions } from '@/lib/core/extendOptions'\nimport { useMeta } from '@/hooks/metas/useMeta'\n\ntype Args = (args: any) => UseMutationOptions<{ run: Run }>\n\n// @ts-ignore-next-line\nexport const useCreateRun = (args: Args = () => {}) => {\n const superinterfaceContext = useSuperinterfaceContext()\n const { meta } = useMeta()\n\n const props = useMutation(extendOptions({\n defaultOptions: superinterfaceContext.mutationOptions.createRun,\n args,\n meta,\n }))\n\n return {\n ...props,\n createRun: props.mutate,\n }\n}\n","import _ from 'lodash'\n\ntype Args = {\n id: string\n}\n\nexport const isOptimistic = ({\n id,\n}: Args) => (\n _.startsWith(id, '-')\n)\n","import { useMemo } from 'react'\nimport { useIsMutating } from '@tanstack/react-query'\nimport { useLatestRun } from '@/hooks/runs/useLatestRun'\nimport { useLatestMessage } from '@/hooks/messages/useLatestMessage'\nimport { isRunEditingMessage } from '@/lib/runs/isRunEditingMessage'\n\nconst statuses = [\n 'queued',\n 'in_progress',\n 'cancelling',\n 'requires_action',\n]\n\nconst isRunActive = ({\n latestRunProps,\n latestMessageProps,\n isMutating,\n}: {\n latestRunProps: ReturnType<typeof useLatestRun>,\n latestMessageProps: ReturnType<typeof useLatestMessage>,\n isMutating: number,\n}) => {\n // @ts-ignore-next-line\n if (latestMessageProps.latestMessage?.metadata?.isBlocking) return false\n if (isMutating > 0) return true\n if (!latestRunProps.latestRun) return false\n if (statuses.includes(latestRunProps.latestRun.status)) return true\n\n return isRunEditingMessage({ message: latestMessageProps.latestMessage })\n}\n\ntype Args = {\n [key: string]: any\n}\n\nexport const useIsRunActive = (args: Args) => {\n const latestRunProps = useLatestRun(args)\n const latestMessageProps = useLatestMessage(args)\n const isMutating = useIsMutating()\n\n return useMemo(() => ({\n ...latestRunProps,\n isRunActive: isRunActive({\n latestRunProps,\n latestMessageProps,\n isMutating,\n }),\n }), [latestRunProps, latestMessageProps, isMutating])\n}\n","import OpenAI from 'openai'\nimport _ from 'lodash'\n\ntype Args = {\n message: OpenAI.Beta.Threads.ThreadMessage\n}\n\nexport const isRunEditingMessage = ({\n message,\n}: Args) => {\n if (!message) return false\n if (message.role === 'user') return false\n if (!message.run_id) return false\n\n const hasContent = _.some(message.content, (content) => (\n content.type !== 'text' ||\n (content.type === 'text' && content.text?.value !== '')\n ))\n\n return !hasContent\n}\n","import { useIsRunActive } from '@/hooks/runs/useIsRunActive'\nimport { useInterval } from 'react-use'\nimport { useMeta } from '@/hooks/metas/useMeta'\nimport { refetch } from './lib/refetch'\n\ntype Args = {\n [key: string]: any\n} | {}\n\nexport const usePolling = (args: Args = {}) => {\n const { meta } = useMeta()\n\n const isRunActiveProps = useIsRunActive(args)\n\n useInterval(() => {\n refetch({\n args,\n meta,\n })\n\n console.log('poll refetched')\n },\n isRunActiveProps.isRunActive ? 3000 : null\n )\n\n return null\n}\n","import { fillOption } from '@/lib/core/fillOption'\n\ntype Args = {\n meta: any\n args: any\n}\n\nexport const refetch = async ({\n meta,\n args,\n}: Args) => {\n await meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: meta.superinterfaceContext.queryOptions.messages.queryKey,\n key: 'queryKey',\n meta,\n args,\n }),\n })\n\n await meta.queryClient.invalidateQueries({\n queryKey: fillOption({\n value: meta.superinterfaceContext.queryOptions.runs.queryKey,\n key: 'queryKey',\n meta,\n args,\n }),\n })\n}\n","import { useEffect } from 'react'\nimport { useLatestRun } from '@/hooks/runs/useLatestRun'\nimport { useHandleAction } from '@/hooks/actions/useHandleAction'\n\ntype Args = {\n [key: string]: any\n}\n\nexport const useManageActions = (args: Args) => {\n const latestRunProps = useLatestRun(args)\n // @ts-ignore-next-line\n const handleActionProps = useHandleAction(args)\n\n useEffect(() => {\n if (handleActionProps.isPending) return\n if (latestRunProps.isFetching) return\n if (!latestRunProps.latestRun) return\n if (latestRunProps.latestRun.status !== 'requires_action') return\n\n console.log('requires action', {\n latestRunProps,\n })\n\n // @ts-ignore-next-line\n handleActionProps.handleAction({\n latestRun: latestRunProps.latestRun,\n ...args,\n })\n }, [handleActionProps, latestRunProps])\n\n return null\n}\n","import {\n UseMutationOptions,\n useMutation,\n} from '@tanstack/react-query'\nimport { extendOptions } from '@/lib/core/extendOptions'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { Run } from '@/types'\nimport { useMeta } from '@/hooks/metas/useMeta'\n\ntype Args = (args: any) => UseMutationOptions<{ run: Run }>\n\n// @ts-ignore-next-line\nexport const useHandleAction = (args: Args = () => {}) => {\n const superinterfaceContext = useSuperinterfaceContext()\n const { meta } = useMeta()\n\n const props = useMutation(extendOptions({\n defaultOptions: superinterfaceContext.mutationOptions.handleAction,\n args,\n meta,\n }))\n\n return {\n ...props,\n handleAction: props.mutate,\n }\n}\n","import { useManageRuns } from '@/hooks/runs/useManageRuns'\nimport { usePolling } from '@/hooks/runs/usePolling'\nimport { useManageActions } from '@/hooks/actions/useManageActions'\n\ntype Args = {\n [key: string]: any\n}\n\nexport const useThreadLifecycles = (args: Args) => {\n useManageRuns(args)\n useManageActions(args)\n usePolling(args)\n\n return null\n}\n","import { useMemo } from 'react'\nimport { messageGroups as getMessageGroups } from './lib/messageGroups'\nimport { Message } from '@/types'\n\ntype Args = {\n messages: Message[]\n}\n\nexport const useMessageGroups = ({\n messages,\n}: Args) => (\n useMemo(\n () => ({\n messageGroups: getMessageGroups({ messages }),\n }),\n [messages]\n )\n)\n","import _ from 'lodash'\nimport { last } from 'radash'\nimport { Message, MessageGroup } from '@/types'\nimport { order } from '@/lib/messages/order'\nimport { newGroup } from './newGroup'\n\ntype Args = {\n messages: Message[]\n}\n\nexport const messageGroups = ({\n messages,\n}: Args) =>\n _.reduce(\n order({ messages }),\n (groups: MessageGroup[], message: Message) => {\n const group = last(groups)\n\n if (!group) return newGroup({ groups, message })\n\n if (group.role !== message.role) {\n return newGroup({\n groups,\n message,\n })\n }\n\n return [\n ..._.dropRight(groups),\n {\n ...group,\n messages: [...group.messages, message],\n },\n ]\n },\n []\n )\n","import { sort } from 'radash'\nimport { Message } from '@/types'\n\ntype Args = {\n messages: Message[]\n}\n\nexport const order = ({ messages }: Args) =>\n sort(messages, m => m.created_at, true)\n","import { Message } from '@/types'\n\ntype Args = {\n message: Message\n}\n\nexport const newGroupItem = ({ message }: Args) => ({\n id: message.id,\n role: message.role,\n createdAt: message.created_at,\n messages: [message],\n})\n","import { Message, MessageGroup } from '@/types'\nimport { newGroupItem } from './newGroupItem'\n\ntype Args = {\n groups: MessageGroup[]\n message: Message\n}\n\nexport const newGroup = ({ groups, message }: Args) => [\n ...groups,\n newGroupItem({\n message,\n }),\n]\n","import { useContext } from 'react'\nimport {\n Box,\n Avatar,\n} from '@radix-ui/themes'\nimport {\n PersonIcon,\n} from '@radix-ui/react-icons'\nimport { MessagesGroupBase } from '@/components/messageGroups/MessagesGroupBase'\nimport { Name } from '@/components/messageGroups/MessagesGroupBase/Name'\nimport { AssistantAvatar } from '@/components/messageGroups/MessagesGroupBase/AssistantAvatar'\nimport { AssistantNameContext } from '@/contexts/assistants/AssistantNameContext'\nimport { MessageGroup as MessageGroupType } from '@/types'\nimport { Content } from './Content'\n\ntype Args = {\n messageGroup: MessageGroupType\n}\n\nexport const MessageGroup = ({\n messageGroup,\n}: Args) => {\n const assistantNameContext = useContext(AssistantNameContext)\n\n return (\n <MessagesGroupBase>\n {messageGroup.role === 'user' ? (\n <Avatar\n fallback={<PersonIcon />}\n size=\"1\"\n />\n ) : (\n <AssistantAvatar />\n )}\n\n <Box grow=\"1\">\n <Name>\n {messageGroup.role === 'user' ? 'You' : assistantNameContext}\n </Name>\n\n <Content\n messageGroup={messageGroup}\n />\n </Box>\n </MessagesGroupBase>\n )\n}\n","'use client'\nimport { useContext } from 'react'\nimport {\n Flex,\n} from '@radix-ui/themes'\nimport { AssistantAvatarContext } from '@/contexts/assistants/AssistantAvatarContext'\n\nexport const AssistantAvatar = () => {\n const AssistantAvatarContextValue = useContext(AssistantAvatarContext)\n\n return (\n <Flex\n shrink=\"0\"\n className=\"rounded-3 overflow-hidden h-[24px] w-[24px]\"\n >\n {AssistantAvatarContextValue}\n </Flex>\n )\n}\n","'use client'\nimport { createContext } from 'react'\nimport {\n Avatar,\n} from '@radix-ui/themes'\nimport {\n LightningBoltIcon,\n} from '@radix-ui/react-icons'\n\nexport const AssistantAvatarContext = createContext(\n <Avatar\n fallback={<LightningBoltIcon />}\n size=\"1\"\n />\n)\n","'use client'\nimport { createContext } from 'react'\n\nexport const AssistantNameContext = createContext('Assistant')\n","import { Flex } from '@radix-ui/themes'\nimport { MessageGroup } from '@/types'\nimport { Message } from '@/components/messages/Message'\n\ntype Args = {\n messageGroup: MessageGroup\n}\n\nexport const Content = ({\n messageGroup,\n}: Args) => (\n <Flex\n direction=\"column-reverse\"\n >\n {messageGroup.messages.map((message) => (\n <Message\n key={message.id}\n message={message}\n />\n ))}\n </Flex>\n)\n","import _ from 'lodash'\nimport { useMemo } from 'react'\nimport {\n Box,\n} from '@radix-ui/themes'\nimport { Message as MessageType } from '@/types'\nimport { RunSteps } from '@/components/runSteps/RunSteps'\nimport { TextContent } from './TextContent'\n\ntype Args = {\n message: MessageType\n}\n\nexport const Message = ({\n message,\n}: Args) => {\n const [olderRunSteps, laterRunSteps] = useMemo(() => {\n if (!message.runSteps.length) return [[], []]\n\n const messageCreationRunStepIndex = message.runSteps.findIndex((runStep) => {\n if (runStep.step_details.type !== 'message_creation') return\n\n return runStep.step_details.message_creation.message_id === message.id\n })\n\n let nextRunStepIndex = message.runSteps.slice(0, messageCreationRunStepIndex).findLastIndex((runStep) => (\n runStep.step_details.type === 'message_creation'\n ))\n if (nextRunStepIndex === -1) {\n nextRunStepIndex = 0\n }\n const laterRunSteps = message.runSteps.slice(nextRunStepIndex, messageCreationRunStepIndex)\n\n const prevRunStepIndex = message.runSteps.slice(messageCreationRunStepIndex + 1).findIndex((runStep) => (\n runStep.step_details.type === 'message_creation'\n ))\n\n let olderRunSteps\n\n if (prevRunStepIndex === -1) {\n olderRunSteps = message.runSteps.slice(messageCreationRunStepIndex + 1)\n } else {\n olderRunSteps = message.runSteps.slice(messageCreationRunStepIndex + 1, messageCreationRunStepIndex + prevRunStepIndex)\n }\n\n return [olderRunSteps, laterRunSteps]\n\n }, [message])\n\n return (\n <Box>\n <RunSteps\n runSteps={olderRunSteps}\n />\n\n {message.content.map((content, index) => (\n <Box\n key={index}\n >\n {content.type === 'text' && (\n <TextContent content={content} />\n )}\n </Box>\n ))}\n\n <RunSteps\n runSteps={laterRunSteps}\n />\n </Box>\n )\n}\n","import OpenAI from 'openai'\nimport { Flex } from '@radix-ui/themes'\nimport { RunStep } from '@/components/runSteps/RunStep'\n\ntype Args = {\n runSteps: OpenAI.Beta.Threads.Runs.RunStep[]\n}\n\nexport const RunSteps = ({\n runSteps,\n}: Args) => (\n <Flex\n direction=\"column-reverse\"\n >\n {runSteps.map((runStep) => (\n <RunStep\n key={runStep.id}\n runStep={runStep}\n />\n ))}\n </Flex>\n)\n","import OpenAI from 'openai'\nimport {\n Flex,\n} from '@radix-ui/themes'\nimport { ToolCall } from './ToolCall'\nimport { Starting } from './Starting'\n\ntype Args = {\n stepDetails: OpenAI.Beta.Threads.Runs.ToolCallsStepDetails\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const ToolCalls = ({\n stepDetails,\n runStep,\n}: Args) => (\n <Flex\n direction=\"column\"\n >\n {!stepDetails.tool_calls.length && (\n <Starting />\n )}\n {stepDetails.tool_calls.map((toolCall) => (\n <ToolCall\n key={toolCall.id}\n toolCall={toolCall}\n runStep={runStep}\n />\n ))}\n </Flex>\n)\n","import OpenAI from 'openai'\nimport {\n Flex,\n} from '@radix-ui/themes'\nimport { Fn } from './Fn'\nimport { CodeInterpreter } from './CodeInterpreter'\n\ntype ToolCall = OpenAI.Beta.Threads.Runs.CodeToolCall\n | OpenAI.Beta.Threads.Runs.RetrievalToolCall\n | OpenAI.Beta.Threads.Runs.FunctionToolCall\n\ntype Args = {\n toolCall: ToolCall\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const ToolCall = ({\n toolCall,\n runStep,\n}: Args) => {\n if (toolCall.type === 'function') {\n return (\n <Fn\n fn={toolCall.function}\n runStep={runStep}\n />\n )\n }\n\n if (toolCall.type === 'code_interpreter') {\n return (\n <CodeInterpreter\n codeInterpreter={toolCall.code_interpreter}\n runStep={runStep}\n />\n )\n }\n\n return (\n <Flex>\n {toolCall.type}\n </Flex>\n )\n}\n","import { useContext } from 'react'\nimport OpenAI from 'openai'\n// import { Availabilities } from './Availabilities'\n// import { Scores } from './Scores'\nimport { FunctionComponentsContext } from '@/contexts/functions/FunctionComponentsContext'\nimport { DefaultFunction } from './DefaultFunction'\n\ntype Args = {\n fn: OpenAI.Beta.Threads.Runs.FunctionToolCall.Function\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const Fn = ({\n fn,\n runStep,\n}: Args) => {\n const functionComponentsContext = useContext(FunctionComponentsContext)\n const Component = functionComponentsContext[fn.name] || DefaultFunction\n\n return (\n // @ts-ignore-next-line\n <Component\n fn={fn}\n runStep={runStep}\n />\n )\n}\n","'use client'\nimport { createContext } from 'react'\n\ntype FunctionComponents = {\n [key: string]: React.ReactNode\n}\n\nexport const FunctionComponentsContext = createContext({} as FunctionComponents)\n","import OpenAI from 'openai'\nimport {\n PopoverRoot,\n PopoverContent,\n} from '@radix-ui/themes'\nimport { ToolCallBase } from '@/components/toolCalls/ToolCallBase'\nimport { ToolCallTitle } from '@/components/toolCalls/ToolCallBase/ToolCallTitle'\nimport { Icon } from './Icon'\nimport { Content } from './Content'\n\ntype Args = {\n fn: OpenAI.Beta.Threads.Runs.FunctionToolCall.Function\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n title: string\n}\n\nexport const FunctionBase = ({\n fn,\n runStep,\n title,\n}: Args) => (\n <PopoverRoot>\n <ToolCallBase>\n <Icon runStep={runStep} />\n <ToolCallTitle>\n {title}\n </ToolCallTitle>\n </ToolCallBase>\n <PopoverContent\n className=\"max-h-[500px]\"\n >\n <Content fn={fn} />\n </PopoverContent>\n </PopoverRoot>\n)\n","import {\n Flex,\n Button,\n PopoverTrigger\n} from '@radix-ui/themes'\n\ntype Args = {\n children: React.ReactNode\n}\n\nexport const ToolCallBase = ({\n children,\n}: Args) => (\n <Flex\n py=\"1\"\n ml=\"-2\"\n >\n <PopoverTrigger>\n <Button\n size=\"1\"\n color=\"gold\"\n variant=\"outline\"\n style={{\n boxShadow: 'none',\n }}\n >\n {children}\n </Button>\n </PopoverTrigger>\n </Flex>\n)\n","import {\n Text,\n} from '@radix-ui/themes'\n\ntype Args = {\n children: React.ReactNode\n}\n\nexport const ToolCallTitle = ({\n children,\n}: Args) => (\n <Text\n weight=\"regular\"\n >\n {children}\n </Text>\n)\n","import OpenAI from 'openai'\nimport {\n CircleIcon,\n CircleBackslashIcon,\n CheckCircledIcon,\n} from '@radix-ui/react-icons'\n\ntype Args = {\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const Icon = ({\n runStep,\n}: Args) => {\n if (runStep.completed_at) {\n return (\n <CheckCircledIcon />\n )\n } else if (runStep.cancelled_at) {\n return (\n <CircleBackslashIcon />\n )\n } else {\n return (\n <CircleIcon />\n )\n }\n}\n","import { useMemo } from 'react'\nimport { Code, Box } from '@radix-ui/themes'\nimport OpenAI from 'openai'\n\ntype Args = {\n fn: OpenAI.Beta.Threads.Runs.FunctionToolCall.Function\n}\n\nexport const Content = ({\n fn,\n}: Args) => {\n const args = useMemo(() => {\n let result = null\n\n try {\n result = JSON.parse(fn.arguments)\n } catch (error) {\n console.error(error)\n }\n\n return result\n }, [fn])\n\n const output = useMemo(() => {\n if (!fn.output) {\n return null\n }\n\n let result = null\n\n try {\n result = JSON.parse(fn.output)\n } catch (error) {\n console.error(error)\n }\n\n return result\n }, [fn])\n\n if (!args) {\n return null\n }\n\n return (\n <Code\n variant=\"ghost\"\n color=\"gold\"\n className=\"whitespace-pre break-words\"\n >\n <Box>\n {args && JSON.stringify(args, null, 2)}\n </Box>\n <Box>\n {output && JSON.stringify(output, null, 2)}\n </Box>\n </Code>\n )\n}\n","import OpenAI from 'openai'\n\ntype Args = {\n fn: OpenAI.Beta.Threads.Runs.FunctionToolCall.Function\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const title = ({\n fn,\n runStep,\n}: Args) => {\n if (runStep.completed_at) {\n return `Finished ${fn.name}`\n } else if (runStep.cancelled_at) {\n return `Cancelled ${fn.name}`\n } else {\n return `Calling ${fn.name}`\n }\n}\n","import OpenAI from 'openai'\nimport { FunctionBase } from '@/components/functions/FunctionBase'\nimport { title } from './lib/title'\n\ntype Args = {\n fn: OpenAI.Beta.Threads.Runs.FunctionToolCall.Function\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const DefaultFunction = ({\n fn,\n runStep,\n}: Args) => (\n <FunctionBase\n fn={fn}\n runStep={runStep}\n title={title({ runStep, fn })}\n />\n)\n","import OpenAI from 'openai'\nimport {\n Flex,\n} from '@radix-ui/themes'\n\ntype Args = {\n codeInterpreter: OpenAI.Beta.Threads.Runs.CodeToolCall.CodeInterpreter\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const CodeInterpreter = ({\n codeInterpreter,\n}: Args) => (\n <Flex>\n {codeInterpreter.input}\n </Flex>\n)\n","import {\n PopoverRoot,\n PopoverContent,\n Text,\n} from '@radix-ui/themes'\nimport {\n CircleIcon,\n} from '@radix-ui/react-icons'\nimport { ToolCallBase } from '@/components/toolCalls/ToolCallBase'\nimport { ToolCallTitle } from '@/components/toolCalls/ToolCallBase/ToolCallTitle'\n\nexport const Starting = () => (\n <PopoverRoot>\n <ToolCallBase>\n <CircleIcon />\n <ToolCallTitle>\n Starting actions\n </ToolCallTitle>\n </ToolCallBase>\n <PopoverContent\n className=\"max-h-[500px]\"\n >\n <Text>\n Getting ready to connect to domain API\n </Text>\n </PopoverContent>\n </PopoverRoot>\n)\n","import OpenAI from 'openai'\nimport { ToolCalls } from './ToolCalls'\n\ntype Args = {\n runStep: OpenAI.Beta.Threads.Runs.RunStep\n}\n\nexport const RunStep = ({\n runStep,\n}: Args) => {\n if (runStep.step_details.type === 'tool_calls') {\n return (\n <ToolCalls\n stepDetails={runStep.step_details}\n runStep={runStep}\n />\n )\n }\n\n return null\n}\n","import { useContext } from 'react'\nimport OpenAI from 'openai'\nimport Markdown from 'react-markdown'\nimport { MarkdownContext } from '@/contexts/markdown/MarkdownContext'\n\ntype Args = {\n content: OpenAI.Beta.Threads.Messages.MessageContentText\n}\n\nexport const TextContent = ({\n content,\n}: Args) => {\n const markdownContext = useContext(MarkdownContext)\n\n return (\n <Markdown\n {...markdownContext}\n >\n {content.text.value}\n </Markdown>\n )\n}\n","'use client'\nimport { createContext } from 'react'\nimport { components } from './lib/components'\n\nexport const MarkdownContext = createContext({\n remarkPlugins: [] as any[],\n components,\n})\n","import {\n Box,\n Text,\n} from '@radix-ui/themes'\n\nexport const Paragraph = ({ children }: JSX.IntrinsicElements['p']) => (\n <Box\n pb=\"3\"\n >\n <Text\n size=\"3\"\n className=\"whitespace-pre-line break-words\"\n >\n {children}\n </Text>\n </Box>\n)\n","import {\n Link as RadixLink,\n} from '@radix-ui/themes'\n\ntype Args = JSX.IntrinsicElements['a']\n\nexport const Link = ({ children, href }: Args) => (\n <RadixLink\n href={href}\n >\n {children}\n </RadixLink>\n)\n","import {\n Box,\n} from '@radix-ui/themes'\n\nexport const UnorderedList = ({ children }: JSX.IntrinsicElements['ul']) => (\n <Box\n pb=\"3\"\n asChild\n >\n <ul\n className=\"list-inside\"\n >\n {children}\n </ul>\n </Box>\n)\n","import {\n Box,\n} from '@radix-ui/themes'\n\nexport const OrderedList = ({ children }: JSX.IntrinsicElements['ul']) => (\n <Box\n pb=\"3\"\n asChild\n >\n <ol\n className=\"list-inside\"\n >\n {children}\n </ol>\n </Box>\n)\n","import {\n Box,\n} from '@radix-ui/themes'\n\nexport const ListItem = ({ children }: JSX.IntrinsicElements['li']) => (\n <Box\n pb=\"1\"\n >\n <li>\n {children}\n </li>\n </Box>\n)\n","import {\n Strong as RadixStrong,\n} from '@radix-ui/themes'\n\nexport const Strong = ({ children }: JSX.IntrinsicElements['strong']) => (\n <RadixStrong>\n {children}\n </RadixStrong>\n)\n","import { Components } from 'react-markdown'\nimport { Paragraph } from './Paragraph'\nimport { Link } from './Link'\nimport { UnorderedList } from './UnorderedList'\nimport { OrderedList } from './OrderedList'\nimport { ListItem } from './ListItem'\nimport { Strong } from './Strong'\n\nexport const components: Components = {\n p: Paragraph,\n a: Link,\n strong: Strong,\n ul: UnorderedList,\n ol: OrderedList,\n li: ListItem,\n}\n","import { useMessageGroups } from '@/hooks/messageGroups/useMessageGroups'\nimport { Message } from '@/types'\nimport { MessageGroup } from './MessageGroup'\n\ntype Args = {\n messages: Message[]\n}\n\nexport const Content = ({\n messages,\n}: Args) => {\n const { messageGroups } = useMessageGroups({\n messages,\n })\n\n return (\n <>\n {messageGroups.map((messageGroup) => (\n <MessageGroup\n key={messageGroup.id}\n messageGroup={messageGroup}\n />\n ))}\n </>\n )\n}\n","import { Box } from '@radix-ui/themes'\nimport { MessagesGroupBase } from '@/components/messageGroups/MessagesGroupBase'\nimport { StartingContentSkeleton } from '@/components/skeletons/StartingContentSkeleton'\nimport { StartingSkeleton } from '@/components/skeletons/StartingSkeleton'\nimport { Message } from '@/types'\n\ntype Args = {\n latestMessage: Message | null\n isRunActive: boolean\n}\n\nexport const ProgressMessage = ({\n latestMessage,\n isRunActive,\n}: Args) => {\n if (!latestMessage) return null\n if (!isRunActive) return null\n\n if (latestMessage.role === 'user') {\n return (\n <StartingSkeleton />\n )\n }\n\n return (\n <MessagesGroupBase>\n <Box pl=\"5\" />\n <StartingContentSkeleton />\n </MessagesGroupBase>\n )\n}\n","import {\n Box,\n} from '@radix-ui/themes'\n\nexport const StartingContentSkeleton = () => (\n <Box\n height=\"4\"\n width=\"4\"\n shrink=\"0\"\n mt=\"1\"\n className=\"animate-pulse bg-gray-12 rounded-3\"\n />\n)\n","import { useContext } from 'react'\nimport { Box } from '@radix-ui/themes'\nimport { StartingContentSkeleton } from '@/components/skeletons/StartingContentSkeleton'\nimport { MessagesGroupBase } from '@/components/messageGroups/MessagesGroupBase'\nimport { Name } from '@/components/messageGroups/MessagesGroupBase/Name'\nimport { AssistantAvatar } from '@/components/messageGroups/MessagesGroupBase/AssistantAvatar'\nimport { AssistantNameContext } from '@/contexts/assistants/AssistantNameContext'\n\ntype Args = {\n children?: React.ReactNode\n}\n\nexport const StartingSkeleton = ({\n children,\n}: Args) => {\n const assistantNameContext = useContext(AssistantNameContext)\n\n return (\n <MessagesGroupBase>\n <AssistantAvatar />\n\n <Box>\n <Name>\n {assistantNameContext}\n </Name>\n\n {children}\n\n <StartingContentSkeleton />\n </Box>\n </MessagesGroupBase>\n )\n}\n","import { useMemo } from 'react'\nimport {\n Flex,\n} from '@radix-ui/themes'\nimport { useLatestMessage } from '@/hooks/messages/useLatestMessage'\nimport { useIsRunActive } from '@/hooks/runs/useIsRunActive'\nimport { Suggestion } from '@/components/suggestions/Suggestion'\n\ntype Args = {\n emptyStateSuggestions?: string[]\n suggestions?: string[]\n [key: string]: any\n}\n\nexport const Suggestions = ({\n emptyStateSuggestions = [],\n suggestions = [],\n ...args\n}: Args) => {\n const latestMessageProps = useLatestMessage(args)\n const isRunActiveProps = useIsRunActive(args)\n\n const isDisabled = useMemo(() => (\n // @ts-ignore-next-line\n latestMessageProps.latestMessage?.metadata?.isBlocking ||\n isRunActiveProps.isRunActive\n ), [latestMessageProps, isRunActiveProps])\n\n if (latestMessageProps.isLoading) return null\n if (isDisabled) return null\n\n if (!latestMessageProps.latestMessage && emptyStateSuggestions.length > 0) {\n return (\n <Flex\n gap=\"2\"\n py=\"2\"\n >\n {emptyStateSuggestions.map((suggestion) => (\n <Suggestion\n key={suggestion}\n suggestion={suggestion}\n {...args}\n />\n ))}\n </Flex>\n )\n }\n\n if (latestMessageProps.latestMessage.role === 'assistant') {\n return (\n <Flex\n gap=\"2\"\n py=\"2\"\n >\n {suggestions.map((suggestion) => (\n <Suggestion\n key={suggestion}\n suggestion={suggestion}\n {...args}\n />\n ))}\n </Flex>\n )\n }\n\n return null\n}\n","import {\n ArrowUpIcon,\n} from '@radix-ui/react-icons'\nimport {\n Text,\n Button,\n} from '@radix-ui/themes'\nimport { useCreateMessage } from '@/hooks/messages/useCreateMessage'\nimport { useIsRunActive } from '@/hooks/runs/useIsRunActive'\n\ntype Args = {\n suggestion: string\n [key: string]: any\n}\n\nexport const Suggestion = ({\n suggestion,\n ...args\n}: Args) => {\n const {\n createMessage,\n // @ts-ignore-next-line\n } = useCreateMessage(args)\n\n const { isRunActive } = useIsRunActive(args)\n\n return (\n <Button\n variant=\"soft\"\n style={{\n justifyContent: 'space-between',\n }}\n onClick={() => {\n // @ts-ignore-next-line\n createMessage({\n content: suggestion,\n ...args,\n })\n }}\n disabled={isRunActive}\n >\n <Text\n size=\"1\"\n weight=\"regular\"\n >\n {suggestion}\n </Text>\n\n <ArrowUpIcon />\n </Button>\n )\n}\n","import {\n UseMutationOptions,\n useMutation,\n} from '@tanstack/react-query'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\nimport { Message } from '@/types'\nimport { extendOptions } from '@/lib/core/extendOptions'\nimport { useMeta } from '@/hooks/metas/useMeta'\n\ntype Args = (args: any) => UseMutationOptions<{ message: Message }>\n\n// @ts-ignore-next-line\nexport const useCreateMessage = (args: Args = () => {}) => {\n const superinterfaceContext = useSuperinterfaceContext()\n const { meta } = useMeta()\n\n const props = useMutation(extendOptions({\n defaultOptions: superinterfaceContext.mutationOptions.createMessage,\n args,\n meta,\n }))\n\n return {\n ...props,\n createMessage: props.mutateAsync,\n }\n}\n","import {\n Container,\n Flex,\n Text,\n} from '@radix-ui/themes'\nimport { useRef, useEffect, useMemo, useContext } from 'react'\nimport { useForm, SubmitHandler, UseFormProps } from 'react-hook-form'\nimport { usePrevious } from 'react-use'\nimport { useIsRunActive } from '@/hooks/runs/useIsRunActive'\nimport { TextareaBase } from '@/components/textareas/TextareaBase'\nimport { useLatestMessage } from '@/hooks/messages/useLatestMessage'\nimport { useCreateMessage } from '@/hooks/messages/useCreateMessage'\nimport { AssistantNameContext } from '@/contexts/assistants/AssistantNameContext'\nimport { Submit } from './Submit'\nimport { useFormProps as defaultUseFormProps } from './lib/useFormProps'\n\ntype Inputs = {\n content: string\n}\n\ntype Args = {\n [key: string]: any\n} | {\n children?: React.ReactNode\n useFormProps: UseFormProps\n}\n\nexport const Form = ({\n children,\n useFormProps = defaultUseFormProps,\n ...args\n}: Args = {}) => {\n const {\n register,\n handleSubmit,\n formState: { errors, isSubmitting },\n reset,\n } = useForm<Inputs>(useFormProps)\n\n const { isRunActive } = useIsRunActive(args)\n\n const isLoading = useMemo(() => (\n isRunActive || isSubmitting\n ), [\n isRunActive,\n isSubmitting,\n ])\n\n const {\n createMessage,\n // @ts-ignore-next-line\n } = useCreateMessage(args)\n\n const onSubmit: SubmitHandler<Inputs> = async (data) => {\n reset()\n // @ts-ignore-next-line\n await createMessage({\n content: data.content,\n ...args,\n })\n }\n\n const { latestMessage } = useLatestMessage(args)\n\n const isDisabled = useMemo(() => (\n // @ts-ignore-next-line\n latestMessage?.metadata?.isBlocking\n ), [latestMessage, isLoading])\n\n const isSubmitDisabled = useMemo(() => (\n isDisabled || isLoading\n ), [isDisabled, isLoading])\n\n const isDisabledPrevious = usePrevious(isDisabled)\n\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n const textareaProps = register('content')\n\n useEffect(() => {\n if (isDisabled) return\n if (!isDisabledPrevious) return\n if (!textareaRef.current) return\n\n textareaRef.current.focus()\n }, [isDisabled, isDisabledPrevious, textareaProps])\n\n const assistantNameContext = useContext(AssistantNameContext)\n\n return (\n <Container\n size=\"2\"\n px=\"2\"\n grow=\"0\"\n >\n {children}\n\n <Flex\n direction=\"column\"\n shrink=\"0\"\n >\n <Flex\n direction=\"column\"\n shrink=\"0\"\n pb=\"4\"\n >\n <form\n onSubmit={handleSubmit(onSubmit)}\n >\n <Flex\n className={`rounded-3 border-gray-5 border border-solid ${errors.content ? 'border-red-9 bg-red-2' : ''}`}\n p=\"2\"\n pl=\"4\"\n >\n <Text\n size=\"2\"\n className=\"grow\"\n >\n <Flex\n grow=\"1\"\n direction=\"column\"\n >\n <TextareaBase\n minRows={1}\n placeholder={`Message ${assistantNameContext}...`}\n disabled={isDisabled}\n onKeyDown={(e: any) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n\n if (isSubmitDisabled) return\n handleSubmit(onSubmit)()\n }\n }}\n autoFocus\n {...textareaProps}\n ref={(e: any) => {\n textareaProps.ref(e)\n // @ts-ignore-next-line\n textareaRef.current = e\n }}\n />\n </Flex>\n </Text>\n\n <Flex\n shrink=\"0\"\n align=\"end\"\n >\n <Submit\n isLoading={isLoading}\n isDisabled={isSubmitDisabled}\n />\n </Flex>\n </Flex>\n </form>\n </Flex>\n </Flex>\n </Container>\n )\n}\n","import { forwardRef } from 'react'\nimport TextareaAutosize from 'react-textarea-autosize'\n\nconst UPSCALE_RATIO = 16 / 14\n\ntype Props = React.ComponentProps<typeof TextareaAutosize>\n\nexport const TextareaBase = forwardRef(function TextareaBase(props: Props, ref) {\n return (\n <TextareaAutosize\n // @ts-ignore-next-line\n ref={ref}\n className=\"textarea-base\"\n style={{\n resize: 'none',\n fontSize: `${14 * UPSCALE_RATIO}px`,\n lineHeight: `${24 * UPSCALE_RATIO}px`,\n transform: `scale(${1 / UPSCALE_RATIO})`,\n margin: `0 ${(-100 * UPSCALE_RATIO + 100) / 2}%`,\n width: `${100 * UPSCALE_RATIO}%`,\n maxWidth: `${100 * UPSCALE_RATIO}%`,\n flexGrow: 1,\n display: 'flex',\n }}\n {...props}\n />\n )\n})\n","import {\n ArrowUpIcon,\n} from '@radix-ui/react-icons'\nimport {\n Button,\n} from '@radix-ui/themes'\nimport {\n Spinner,\n} from '@/components/spinners/Spinner'\n\ntype Args = {\n isLoading: boolean\n isDisabled: boolean\n}\n\nexport const Submit = ({\n isLoading,\n isDisabled\n}: Args) => (\n <Button\n type=\"submit\"\n radius=\"large\"\n disabled={isDisabled}\n >\n {isLoading ? <Spinner /> : <ArrowUpIcon />}\n </Button>\n)\n","export const Spinner = (props: React.SVGProps<SVGSVGElement>) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"h-4 w-4 animate-spin\"\n {...props}\n >\n <path d=\"M21 12a9 9 0 1 1-6.219-8.56\" />\n </svg>\n)\n","import { z } from 'zod'\nimport { zodResolver } from '@hookform/resolvers/zod'\n\nconst schema = z.object({\n content: z.string().min(1),\n})\n\nexport const useFormProps = {\n resolver: zodResolver(schema),\n}\n","import { useState } from 'react'\nimport {\n InfiniteData,\n UseInfiniteQueryOptions,\n UseMutationOptions,\n} from '@tanstack/react-query'\nimport { merge } from '@/lib/misc/merge'\nimport { Message, Run, MessagesPage, RunsPage } from '@/types'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { SuperinterfaceContext } from '@/contexts/core/SuperinterfaceContext'\nimport { useSuperinterfaceContext } from '@/hooks/core/useSuperinterfaceContext'\n\ntype Args = {\n children: React.ReactNode\n queryOptions: {\n messages: UseInfiniteQueryOptions<InfiniteData<MessagesPage>>\n runs: UseInfiniteQueryOptions<InfiniteData<RunsPage>>\n },\n mutationOptions: {\n createMessage: UseMutationOptions<{ message: Message }>\n createRun: UseMutationOptions<{ run: Run }>\n handleAction: UseMutationOptions<{ run: Run }>\n },\n}\n\nexport const SuperinterfaceProvider = ({\n children,\n ...rest\n}: Args) => {\n const [queryClient] = useState(\n () =>\n new QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n // With SSR, we usually want to set some default staleTime\n // above 0 to avoid refetching immediately on the client\n staleTime: 10000,\n },\n mutations: {\n retry: false,\n },\n },\n }),\n )\n\n const superinterfaceContext = useSuperinterfaceContext()\n\n const value = merge(\n superinterfaceContext,\n // @ts-ignore-next-line\n rest\n )\n\n return (\n <SuperinterfaceContext.Provider\n value={value}\n >\n <QueryClientProvider client={queryClient}>\n {children}\n </QueryClientProvider>\n </SuperinterfaceContext.Provider>\n )\n}\n","import _ from 'lodash'\nimport { customizer } from './customizer'\n\n// @ts-ignore-next-line\nexport const merge = (obj, ...sources) =>\n _.mergeWith(_.cloneDeep(obj), ...sources, customizer)\n","import _ from 'lodash'\n\n// @ts-ignore-next-line\nexport const customizer = (objectValue, srcValue) => {\n if (!_.isArray(objectValue)) return\n\n return srcValue\n}\n","import { useContext } from 'react'\nimport { MarkdownContext } from '@/contexts/markdown/MarkdownContext'\n\nexport const useMarkdownContext = () => (\n useContext(MarkdownContext)\n)\n"],"mappings":"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","names":["import_themes","import_react","_","import_react","import_themes","import_react","import_themes","import_jsx_runtime","MessagesGroupBase","import_themes","import_jsx_runtime","import_jsx_runtime","MessagesSkeleton","import_react","import_react_query","import_react","import_react","queryKey","queryOptions","queryKey","onMutate","data","onSettled","mutationOptions","onMutate","onSettled","onMutate","onSettled","mutationOptions","onMutate","onSettled","queryOptions","mutationOptions","import_radash","import_lodash","args","import_react","import_react","import_react","import_react","import_react_query","data","import_react_query","import_lodash","_","import_react","import_react_query","import_lodash","_","import_react","import_react_query","import_react","import_lodash","import_radash","import_radash","messages","messages","_","messages","import_react","import_themes","import_react_icons","import_react","import_themes","import_react","import_themes","import_jsx_runtime","import_jsx_runtime","import_react","import_themes","import_react","import_themes","import_themes","import_themes","import_themes","import_react","import_react","import_themes","import_themes","import_jsx_runtime","import_themes","import_jsx_runtime","import_react_icons","import_jsx_runtime","import_react","import_themes","import_jsx_runtime","import_jsx_runtime","title","import_jsx_runtime","import_jsx_runtime","import_themes","import_jsx_runtime","import_jsx_runtime","import_themes","import_react_icons","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_themes","import_jsx_runtime","import_themes","import_jsx_runtime","RadixLink","import_themes","import_jsx_runtime","import_themes","import_jsx_runtime","import_themes","import_jsx_runtime","import_themes","import_jsx_runtime","RadixStrong","import_jsx_runtime","Markdown","import_jsx_runtime","laterRunSteps","olderRunSteps","import_jsx_runtime","Content","import_jsx_runtime","Content","import_jsx_runtime","Content","messages","messageGroups","import_themes","import_themes","import_jsx_runtime","import_react","import_themes","import_jsx_runtime","import_jsx_runtime","isRunActive","import_jsx_runtime","messages","isRunActive","Content","import_react","import_themes","import_react_icons","import_themes","import_react_query","import_jsx_runtime","isRunActive","import_jsx_runtime","import_themes","import_react","import_react_use","import_react","import_jsx_runtime","TextareaBase","TextareaAutosize","import_react_icons","import_themes","import_jsx_runtime","import_jsx_runtime","import_zod","import_jsx_runtime","useFormProps","isRunActive","data","import_react","import_lodash","import_lodash","_","merge","_","import_react_query","import_jsx_runtime","merge","import_react"]}
|