@melony/react 0.1.38 → 0.1.39
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.cjs +15 -51
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +18 -26
- package/dist/index.d.ts +18 -26
- package/dist/index.js +16 -51
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
import * as React$1 from 'react';
|
|
2
2
|
import React__default, { ReactNode, CSSProperties } from 'react';
|
|
3
3
|
import { ClientState, MelonyClient } from 'melony/client';
|
|
4
|
-
import {
|
|
4
|
+
import { Message, Event, Config, UINode, UIContract } from 'melony';
|
|
5
5
|
import { QueryClient } from '@tanstack/react-query';
|
|
6
6
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
|
+
interface MelonyContextValue extends ClientState {
|
|
9
|
+
messages: Message[];
|
|
10
|
+
sendEvent: (event: Event) => Promise<void>;
|
|
11
|
+
reset: (events?: Event[]) => void;
|
|
12
|
+
client: MelonyClient;
|
|
13
|
+
config?: Config;
|
|
14
|
+
}
|
|
15
|
+
declare const MelonyContext: React__default.Context<MelonyContextValue | undefined>;
|
|
16
|
+
interface MelonyProviderProps {
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
client: MelonyClient;
|
|
19
|
+
initialEvents?: Event[];
|
|
20
|
+
queryClient?: QueryClient;
|
|
21
|
+
}
|
|
22
|
+
declare const MelonyProvider: React__default.FC<MelonyProviderProps>;
|
|
23
|
+
|
|
8
24
|
interface User {
|
|
9
25
|
id?: string;
|
|
10
26
|
uid: string;
|
|
@@ -16,12 +32,6 @@ interface User {
|
|
|
16
32
|
lastSignIn?: string | null;
|
|
17
33
|
emailVerified?: boolean;
|
|
18
34
|
}
|
|
19
|
-
interface Message {
|
|
20
|
-
role: Role;
|
|
21
|
-
content: Event[];
|
|
22
|
-
runId?: string;
|
|
23
|
-
threadId?: string;
|
|
24
|
-
}
|
|
25
35
|
interface ThreadData {
|
|
26
36
|
id: string;
|
|
27
37
|
title?: string;
|
|
@@ -57,22 +67,6 @@ interface ThreadService {
|
|
|
57
67
|
getEvents: (threadId: string) => Promise<Event[]>;
|
|
58
68
|
}
|
|
59
69
|
|
|
60
|
-
interface MelonyContextValue extends ClientState {
|
|
61
|
-
messages: Message[];
|
|
62
|
-
sendEvent: (event: Event) => Promise<void>;
|
|
63
|
-
reset: (events?: Event[]) => void;
|
|
64
|
-
client: MelonyClient;
|
|
65
|
-
config?: Config;
|
|
66
|
-
}
|
|
67
|
-
declare const MelonyContext: React__default.Context<MelonyContextValue | undefined>;
|
|
68
|
-
interface MelonyProviderProps {
|
|
69
|
-
children: ReactNode;
|
|
70
|
-
client: MelonyClient;
|
|
71
|
-
initialEvents?: Event[];
|
|
72
|
-
queryClient?: QueryClient;
|
|
73
|
-
}
|
|
74
|
-
declare const MelonyProvider: React__default.FC<MelonyProviderProps>;
|
|
75
|
-
|
|
76
70
|
interface WelcomeScreenProps {
|
|
77
71
|
title?: string;
|
|
78
72
|
description?: string;
|
|
@@ -484,6 +478,4 @@ declare const Text: React__default.FC<TextProps>;
|
|
|
484
478
|
|
|
485
479
|
declare const Badge: React__default.FC<BadgeProps>;
|
|
486
480
|
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
export { AccountButton, type AccountButtonProps, AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, type AuthService, Badge, Box, Button, Card, Chart, ChatHeader, type ChatHeaderProps, Checkbox, Col, Composer, type ComposerOption, type ComposerOptionGroup, CreateThreadButton, type CreateThreadButtonProps, CreateThreadNavItem, type CreateThreadNavItemProps, Divider, Dropdown, type DropdownProps, Form, FullChat, type FullChatProps, Heading, Image, Input, Label, List, ListItem, MelonyContext, type MelonyContextValue, MelonyProvider, type MelonyProviderProps, type Message, PopupChat, type PopupChatProps, RadioGroup, Row, type ScreenSize, Select, Sidebar, SidebarContext, type SidebarContextValue, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarToggle, type SidebarToggleProps, Spacer, type StarterPrompt, Text, Textarea, ThemeProvider, ThemeToggle, Thread, ThreadContext, type ThreadContextValue, type ThreadData, ThreadList, type ThreadListProps, ThreadPopover, type ThreadPopoverProps, ThreadProvider, type ThreadProviderProps, type ThreadService, UIRenderer, type UIRendererProps, type UseMelonyOptions, type User, WelcomeScreen, type WelcomeScreenProps, groupEventsToMessages, useAuth, useMelony, useScreenSize, useSidebar, useTheme, useThreads };
|
|
481
|
+
export { AccountButton, type AccountButtonProps, AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, type AuthService, Badge, Box, Button, Card, Chart, ChatHeader, type ChatHeaderProps, Checkbox, Col, Composer, type ComposerOption, type ComposerOptionGroup, CreateThreadButton, type CreateThreadButtonProps, CreateThreadNavItem, type CreateThreadNavItemProps, Divider, Dropdown, type DropdownProps, Form, FullChat, type FullChatProps, Heading, Image, Input, Label, List, ListItem, MelonyContext, type MelonyContextValue, MelonyProvider, type MelonyProviderProps, PopupChat, type PopupChatProps, RadioGroup, Row, type ScreenSize, Select, Sidebar, SidebarContext, type SidebarContextValue, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarToggle, type SidebarToggleProps, Spacer, type StarterPrompt, Text, Textarea, ThemeProvider, ThemeToggle, Thread, ThreadContext, type ThreadContextValue, type ThreadData, ThreadList, type ThreadListProps, ThreadPopover, type ThreadPopoverProps, ThreadProvider, type ThreadProviderProps, type ThreadService, UIRenderer, type UIRendererProps, type UseMelonyOptions, type User, WelcomeScreen, type WelcomeScreenProps, useAuth, useMelony, useScreenSize, useSidebar, useTheme, useThreads };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
import * as React$1 from 'react';
|
|
2
2
|
import React__default, { ReactNode, CSSProperties } from 'react';
|
|
3
3
|
import { ClientState, MelonyClient } from 'melony/client';
|
|
4
|
-
import {
|
|
4
|
+
import { Message, Event, Config, UINode, UIContract } from 'melony';
|
|
5
5
|
import { QueryClient } from '@tanstack/react-query';
|
|
6
6
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
|
+
interface MelonyContextValue extends ClientState {
|
|
9
|
+
messages: Message[];
|
|
10
|
+
sendEvent: (event: Event) => Promise<void>;
|
|
11
|
+
reset: (events?: Event[]) => void;
|
|
12
|
+
client: MelonyClient;
|
|
13
|
+
config?: Config;
|
|
14
|
+
}
|
|
15
|
+
declare const MelonyContext: React__default.Context<MelonyContextValue | undefined>;
|
|
16
|
+
interface MelonyProviderProps {
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
client: MelonyClient;
|
|
19
|
+
initialEvents?: Event[];
|
|
20
|
+
queryClient?: QueryClient;
|
|
21
|
+
}
|
|
22
|
+
declare const MelonyProvider: React__default.FC<MelonyProviderProps>;
|
|
23
|
+
|
|
8
24
|
interface User {
|
|
9
25
|
id?: string;
|
|
10
26
|
uid: string;
|
|
@@ -16,12 +32,6 @@ interface User {
|
|
|
16
32
|
lastSignIn?: string | null;
|
|
17
33
|
emailVerified?: boolean;
|
|
18
34
|
}
|
|
19
|
-
interface Message {
|
|
20
|
-
role: Role;
|
|
21
|
-
content: Event[];
|
|
22
|
-
runId?: string;
|
|
23
|
-
threadId?: string;
|
|
24
|
-
}
|
|
25
35
|
interface ThreadData {
|
|
26
36
|
id: string;
|
|
27
37
|
title?: string;
|
|
@@ -57,22 +67,6 @@ interface ThreadService {
|
|
|
57
67
|
getEvents: (threadId: string) => Promise<Event[]>;
|
|
58
68
|
}
|
|
59
69
|
|
|
60
|
-
interface MelonyContextValue extends ClientState {
|
|
61
|
-
messages: Message[];
|
|
62
|
-
sendEvent: (event: Event) => Promise<void>;
|
|
63
|
-
reset: (events?: Event[]) => void;
|
|
64
|
-
client: MelonyClient;
|
|
65
|
-
config?: Config;
|
|
66
|
-
}
|
|
67
|
-
declare const MelonyContext: React__default.Context<MelonyContextValue | undefined>;
|
|
68
|
-
interface MelonyProviderProps {
|
|
69
|
-
children: ReactNode;
|
|
70
|
-
client: MelonyClient;
|
|
71
|
-
initialEvents?: Event[];
|
|
72
|
-
queryClient?: QueryClient;
|
|
73
|
-
}
|
|
74
|
-
declare const MelonyProvider: React__default.FC<MelonyProviderProps>;
|
|
75
|
-
|
|
76
70
|
interface WelcomeScreenProps {
|
|
77
71
|
title?: string;
|
|
78
72
|
description?: string;
|
|
@@ -484,6 +478,4 @@ declare const Text: React__default.FC<TextProps>;
|
|
|
484
478
|
|
|
485
479
|
declare const Badge: React__default.FC<BadgeProps>;
|
|
486
480
|
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
export { AccountButton, type AccountButtonProps, AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, type AuthService, Badge, Box, Button, Card, Chart, ChatHeader, type ChatHeaderProps, Checkbox, Col, Composer, type ComposerOption, type ComposerOptionGroup, CreateThreadButton, type CreateThreadButtonProps, CreateThreadNavItem, type CreateThreadNavItemProps, Divider, Dropdown, type DropdownProps, Form, FullChat, type FullChatProps, Heading, Image, Input, Label, List, ListItem, MelonyContext, type MelonyContextValue, MelonyProvider, type MelonyProviderProps, type Message, PopupChat, type PopupChatProps, RadioGroup, Row, type ScreenSize, Select, Sidebar, SidebarContext, type SidebarContextValue, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarToggle, type SidebarToggleProps, Spacer, type StarterPrompt, Text, Textarea, ThemeProvider, ThemeToggle, Thread, ThreadContext, type ThreadContextValue, type ThreadData, ThreadList, type ThreadListProps, ThreadPopover, type ThreadPopoverProps, ThreadProvider, type ThreadProviderProps, type ThreadService, UIRenderer, type UIRendererProps, type UseMelonyOptions, type User, WelcomeScreen, type WelcomeScreenProps, groupEventsToMessages, useAuth, useMelony, useScreenSize, useSidebar, useTheme, useThreads };
|
|
481
|
+
export { AccountButton, type AccountButtonProps, AuthContext, type AuthContextValue, AuthProvider, type AuthProviderProps, type AuthService, Badge, Box, Button, Card, Chart, ChatHeader, type ChatHeaderProps, Checkbox, Col, Composer, type ComposerOption, type ComposerOptionGroup, CreateThreadButton, type CreateThreadButtonProps, CreateThreadNavItem, type CreateThreadNavItemProps, Divider, Dropdown, type DropdownProps, Form, FullChat, type FullChatProps, Heading, Image, Input, Label, List, ListItem, MelonyContext, type MelonyContextValue, MelonyProvider, type MelonyProviderProps, PopupChat, type PopupChatProps, RadioGroup, Row, type ScreenSize, Select, Sidebar, SidebarContext, type SidebarContextValue, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarToggle, type SidebarToggleProps, Spacer, type StarterPrompt, Text, Textarea, ThemeProvider, ThemeToggle, Thread, ThreadContext, type ThreadContextValue, type ThreadData, ThreadList, type ThreadListProps, ThreadPopover, type ThreadPopoverProps, ThreadProvider, type ThreadProviderProps, type ThreadService, UIRenderer, type UIRendererProps, type UseMelonyOptions, type User, WelcomeScreen, type WelcomeScreenProps, useAuth, useMelony, useScreenSize, useSidebar, useTheme, useThreads };
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React11 from 'react';
|
|
2
2
|
import React11__default, { createContext, useState, useContext, useCallback, useEffect, useMemo, useRef } from 'react';
|
|
3
|
+
import { convertEventsToMessages } from 'melony';
|
|
3
4
|
import { NuqsAdapter } from 'nuqs/adapters/react';
|
|
4
5
|
import { QueryClient, QueryClientProvider, useQueryClient, useQuery, useMutation } from '@tanstack/react-query';
|
|
5
6
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -21,31 +22,6 @@ import { createPortal } from 'react-dom';
|
|
|
21
22
|
import { useHotkeys } from 'react-hotkeys-hook';
|
|
22
23
|
|
|
23
24
|
// src/providers/melony-provider.tsx
|
|
24
|
-
|
|
25
|
-
// src/lib/group-events-to-messages.ts
|
|
26
|
-
function groupEventsToMessages(events) {
|
|
27
|
-
if (events.length === 0) return [];
|
|
28
|
-
const messages = [];
|
|
29
|
-
let currentMessage = null;
|
|
30
|
-
for (const event of events) {
|
|
31
|
-
const role = event.role || "assistant";
|
|
32
|
-
const runId = event.runId;
|
|
33
|
-
if (!currentMessage || currentMessage.role !== role || runId && currentMessage.runId && runId !== currentMessage.runId) {
|
|
34
|
-
currentMessage = {
|
|
35
|
-
role,
|
|
36
|
-
content: [event],
|
|
37
|
-
runId
|
|
38
|
-
};
|
|
39
|
-
messages.push(currentMessage);
|
|
40
|
-
} else {
|
|
41
|
-
currentMessage.content.push(event);
|
|
42
|
-
if (!currentMessage.runId && runId) {
|
|
43
|
-
currentMessage.runId = runId;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return messages;
|
|
48
|
-
}
|
|
49
25
|
var MelonyContext = createContext(
|
|
50
26
|
void 0
|
|
51
27
|
);
|
|
@@ -143,7 +119,7 @@ var MelonyContextProviderInner = ({
|
|
|
143
119
|
const value = useMemo(
|
|
144
120
|
() => ({
|
|
145
121
|
...state,
|
|
146
|
-
messages:
|
|
122
|
+
messages: convertEventsToMessages(state.events),
|
|
147
123
|
sendEvent,
|
|
148
124
|
reset,
|
|
149
125
|
client,
|
|
@@ -2812,25 +2788,16 @@ function MessageContent({ events }) {
|
|
|
2812
2788
|
}
|
|
2813
2789
|
function MessageBubble({ message }) {
|
|
2814
2790
|
const isUser = message.role === "user";
|
|
2815
|
-
return /* @__PURE__ */ jsx(
|
|
2791
|
+
return /* @__PURE__ */ jsx("div", { className: cn("flex flex-col", isUser ? "items-end" : "items-start"), children: /* @__PURE__ */ jsx(
|
|
2816
2792
|
"div",
|
|
2817
2793
|
{
|
|
2818
2794
|
className: cn(
|
|
2819
|
-
"flex flex-col",
|
|
2820
|
-
isUser ? "
|
|
2795
|
+
"flex flex-col items-start max-w-[85%] rounded-2xl px-4 py-2 space-y-4 whitespace-pre-wrap",
|
|
2796
|
+
isUser ? "bg-primary text-primary-foreground" : "px-0 py-0 text-foreground"
|
|
2821
2797
|
),
|
|
2822
|
-
children: /* @__PURE__ */ jsx(
|
|
2823
|
-
"div",
|
|
2824
|
-
{
|
|
2825
|
-
className: cn(
|
|
2826
|
-
"flex flex-col items-start max-w-[85%] rounded-2xl px-4 py-2 space-y-4 whitespace-pre-wrap",
|
|
2827
|
-
isUser ? "bg-primary text-primary-foreground" : "px-0 py-0 text-foreground"
|
|
2828
|
-
),
|
|
2829
|
-
children: /* @__PURE__ */ jsx(MessageContent, { events: message.content })
|
|
2830
|
-
}
|
|
2831
|
-
)
|
|
2798
|
+
children: /* @__PURE__ */ jsx(MessageContent, { events: message.content })
|
|
2832
2799
|
}
|
|
2833
|
-
);
|
|
2800
|
+
) });
|
|
2834
2801
|
}
|
|
2835
2802
|
function LoadingIndicator({ status }) {
|
|
2836
2803
|
const [isExpanded, setIsExpanded] = useState(false);
|
|
@@ -2913,17 +2880,15 @@ function Thread({
|
|
|
2913
2880
|
const hasOptions = state && Object.keys(state).filter((k) => k !== "threadId").length > 0;
|
|
2914
2881
|
if (!text && !hasFiles && !hasOptions || isLoading) return;
|
|
2915
2882
|
if (!overrideInput) setInput("");
|
|
2916
|
-
await sendEvent(
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
state
|
|
2922
|
-
|
|
2923
|
-
threadId: activeThreadId ?? void 0
|
|
2924
|
-
}
|
|
2883
|
+
await sendEvent({
|
|
2884
|
+
type: "text",
|
|
2885
|
+
role: "user",
|
|
2886
|
+
data: { content: text || "" },
|
|
2887
|
+
state: {
|
|
2888
|
+
...state,
|
|
2889
|
+
threadId: activeThreadId ?? void 0
|
|
2925
2890
|
}
|
|
2926
|
-
);
|
|
2891
|
+
});
|
|
2927
2892
|
};
|
|
2928
2893
|
const handleStarterPromptClick = (prompt) => {
|
|
2929
2894
|
if (onStarterPromptClick) {
|
|
@@ -3655,6 +3620,6 @@ var CreateThreadNavItem = ({
|
|
|
3655
3620
|
);
|
|
3656
3621
|
};
|
|
3657
3622
|
|
|
3658
|
-
export { AccountButton, AuthContext, AuthProvider, Badge2 as Badge, Box, Button2 as Button, Card2 as Card, Chart, ChatHeader, Checkbox, Col, Composer, CreateThreadButton, CreateThreadNavItem, Divider, Dropdown, Form, FullChat, Heading, Image, Input2 as Input, Label2 as Label, List, ListItem, MelonyContext, MelonyProvider, PopupChat, RadioGroup, Row, Select2 as Select, Sidebar, SidebarContext, SidebarProvider, SidebarToggle, Spacer, Text, Textarea2 as Textarea, ThemeProvider, ThemeToggle, Thread, ThreadContext, ThreadList, ThreadPopover, ThreadProvider, UIRenderer, WelcomeScreen,
|
|
3623
|
+
export { AccountButton, AuthContext, AuthProvider, Badge2 as Badge, Box, Button2 as Button, Card2 as Card, Chart, ChatHeader, Checkbox, Col, Composer, CreateThreadButton, CreateThreadNavItem, Divider, Dropdown, Form, FullChat, Heading, Image, Input2 as Input, Label2 as Label, List, ListItem, MelonyContext, MelonyProvider, PopupChat, RadioGroup, Row, Select2 as Select, Sidebar, SidebarContext, SidebarProvider, SidebarToggle, Spacer, Text, Textarea2 as Textarea, ThemeProvider, ThemeToggle, Thread, ThreadContext, ThreadList, ThreadPopover, ThreadProvider, UIRenderer, WelcomeScreen, useAuth, useMelony, useScreenSize, useSidebar, useTheme, useThreads };
|
|
3659
3624
|
//# sourceMappingURL=index.js.map
|
|
3660
3625
|
//# sourceMappingURL=index.js.map
|