@applica-software-guru/persona-sdk 0.0.1-preview3 → 0.0.1-preview4

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.
Files changed (70) hide show
  1. package/dist/playground/src/app.d.ts +3 -0
  2. package/dist/playground/src/app.d.ts.map +1 -0
  3. package/dist/playground/src/app.js +5 -0
  4. package/dist/playground/src/chat.d.ts +3 -0
  5. package/dist/playground/src/chat.d.ts.map +1 -0
  6. package/dist/playground/src/chat.js +33 -0
  7. package/dist/playground/src/components/assistant-ui/assistant-modal.d.ts +3 -0
  8. package/dist/playground/src/components/assistant-ui/assistant-modal.d.ts.map +1 -0
  9. package/dist/playground/src/components/assistant-ui/assistant-modal.js +15 -0
  10. package/dist/playground/src/components/assistant-ui/markdown-text.d.ts +3 -0
  11. package/dist/playground/src/components/assistant-ui/markdown-text.d.ts.map +1 -0
  12. package/dist/playground/src/components/assistant-ui/markdown-text.js +59 -0
  13. package/dist/playground/src/components/assistant-ui/thread-list.d.ts +3 -0
  14. package/dist/playground/src/components/assistant-ui/thread-list.d.ts.map +1 -0
  15. package/dist/playground/src/components/assistant-ui/thread-list.js +23 -0
  16. package/dist/playground/src/components/assistant-ui/thread.d.ts +3 -0
  17. package/dist/playground/src/components/assistant-ui/thread.d.ts.map +1 -0
  18. package/dist/playground/src/components/assistant-ui/thread.js +75 -0
  19. package/dist/playground/src/components/assistant-ui/tool-fallback.d.ts +3 -0
  20. package/dist/playground/src/components/assistant-ui/tool-fallback.d.ts.map +1 -0
  21. package/dist/playground/src/components/assistant-ui/tool-fallback.js +8 -0
  22. package/dist/playground/src/components/assistant-ui/tooltip-icon-button.d.ts +11 -0
  23. package/dist/playground/src/components/assistant-ui/tooltip-icon-button.d.ts.map +1 -0
  24. package/dist/playground/src/components/assistant-ui/tooltip-icon-button.js +13 -0
  25. package/dist/playground/src/components/ui/avatar.d.ts +7 -0
  26. package/dist/playground/src/components/ui/avatar.d.ts.map +1 -0
  27. package/dist/playground/src/components/ui/avatar.js +12 -0
  28. package/dist/playground/src/components/ui/button.d.ts +12 -0
  29. package/dist/playground/src/components/ui/button.d.ts.map +1 -0
  30. package/dist/playground/src/components/ui/button.js +33 -0
  31. package/dist/playground/src/components/ui/tooltip.d.ts +8 -0
  32. package/dist/playground/src/components/ui/tooltip.d.ts.map +1 -0
  33. package/dist/playground/src/components/ui/tooltip.js +11 -0
  34. package/dist/playground/src/lib/utils.d.ts +3 -0
  35. package/dist/playground/src/lib/utils.d.ts.map +1 -0
  36. package/dist/playground/src/lib/utils.js +5 -0
  37. package/dist/playground/src/main.d.ts +2 -0
  38. package/dist/playground/src/main.d.ts.map +1 -0
  39. package/dist/playground/src/main.js +5 -0
  40. package/dist/src/index.d.ts +5 -0
  41. package/dist/src/index.d.ts.map +1 -0
  42. package/dist/src/index.js +4 -0
  43. package/dist/src/logging.d.ts +18 -0
  44. package/dist/src/logging.d.ts.map +1 -0
  45. package/dist/src/logging.js +19 -0
  46. package/dist/src/messages.d.ts +7 -0
  47. package/dist/src/messages.d.ts.map +1 -0
  48. package/dist/src/messages.js +73 -0
  49. package/dist/src/protocol/base.d.ts +23 -0
  50. package/dist/src/protocol/base.d.ts.map +1 -0
  51. package/dist/src/protocol/base.js +37 -0
  52. package/dist/src/protocol/index.d.ts +5 -0
  53. package/dist/src/protocol/index.d.ts.map +1 -0
  54. package/dist/src/protocol/index.js +4 -0
  55. package/dist/src/protocol/rest.d.ts +22 -0
  56. package/dist/src/protocol/rest.d.ts.map +1 -0
  57. package/dist/src/protocol/rest.js +48 -0
  58. package/dist/src/protocol/webrtc.d.ts +56 -0
  59. package/dist/src/protocol/webrtc.d.ts.map +1 -0
  60. package/dist/src/protocol/webrtc.js +267 -0
  61. package/dist/src/protocol/websocket.d.ts +22 -0
  62. package/dist/src/protocol/websocket.d.ts.map +1 -0
  63. package/dist/src/protocol/websocket.js +84 -0
  64. package/dist/src/runtime.d.ts +21 -0
  65. package/dist/src/runtime.d.ts.map +1 -0
  66. package/dist/src/runtime.js +160 -0
  67. package/dist/src/types.d.ts +79 -0
  68. package/dist/src/types.d.ts.map +1 -0
  69. package/dist/src/types.js +1 -0
  70. package/package.json +3 -5
@@ -0,0 +1,3 @@
1
+ declare function App(): import("react/jsx-runtime").JSX.Element;
2
+ export default App;
3
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../playground/src/app.tsx"],"names":[],"mappings":"AAAA,iBAAS,GAAG,4CAOX;AAED,eAAe,GAAG,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ function App() {
3
+ return (_jsxs("div", { className: "flex flex-col items-center justify-center min-h-screen bg-gray-100", children: [_jsx("h1", { className: "text-4xl font-bold text-gray-800", children: "Hello, world!" }), _jsx("p", { className: "mt-4 text-lg text-gray-600", children: "This is a simple React app." })] }));
4
+ }
5
+ export default App;
@@ -0,0 +1,3 @@
1
+ declare function Chat(): import("react/jsx-runtime").JSX.Element;
2
+ export { Chat };
3
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../playground/src/chat.tsx"],"names":[],"mappings":"AAoBA,iBAAS,IAAI,4CA6BZ;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Thread } from '@/components/assistant-ui/thread';
3
+ import { PersonaRuntimeProvider, PersonaConsoleLogger } from '@applica-software-guru/persona-sdk';
4
+ import { useMemo } from 'react';
5
+ const logger = new PersonaConsoleLogger();
6
+ function generateSID() {
7
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
8
+ let sid = '';
9
+ for (let i = 0; i < 16; i++) {
10
+ sid += chars.charAt(Math.floor(Math.random() * chars.length));
11
+ }
12
+ return sid;
13
+ }
14
+ function getQueryParam(param) {
15
+ const urlParams = new URLSearchParams(window.location.search);
16
+ return urlParams.get(param);
17
+ }
18
+ function Chat() {
19
+ const agent = getQueryParam('agent');
20
+ const sid = getQueryParam('sid');
21
+ const session = useMemo(() => {
22
+ if (sid) {
23
+ return sid;
24
+ }
25
+ return generateSID();
26
+ }, [sid]);
27
+ return (_jsx(PersonaRuntimeProvider, { dev: true, logger: logger, protocols: {
28
+ rest: true,
29
+ webrtc: true,
30
+ websocket: true,
31
+ }, session: session, apiKey: "2398utf8g$9pahwv8#93q8.h8349q*!ty89w4uefghwqh849tg934yg894hq3g89q34h9", agentId: agent || 'default', children: _jsx("div", { className: "h-dvh w-full", children: _jsx(Thread, {}) }) }));
32
+ }
33
+ export { Chat };
@@ -0,0 +1,3 @@
1
+ import { type FC } from 'react';
2
+ export declare const AssistantModal: FC;
3
+ //# sourceMappingURL=assistant-modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistant-modal.d.ts","sourceRoot":"","sources":["../../../../../playground/src/components/assistant-ui/assistant-modal.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,EAAc,MAAM,OAAO,CAAC;AAM5C,eAAO,MAAM,cAAc,EAAE,EAgB5B,CAAC"}
@@ -0,0 +1,15 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { BotIcon, ChevronDownIcon } from 'lucide-react';
4
+ import { forwardRef } from 'react';
5
+ import { AssistantModalPrimitive } from '@assistant-ui/react';
6
+ import { Thread } from '@/components/assistant-ui/thread';
7
+ import { TooltipIconButton } from '@/components/assistant-ui/tooltip-icon-button';
8
+ export const AssistantModal = () => {
9
+ return (_jsxs(AssistantModalPrimitive.Root, { children: [_jsx(AssistantModalPrimitive.Anchor, { className: "fixed bottom-4 right-4 size-11", children: _jsx(AssistantModalPrimitive.Trigger, { asChild: true, children: _jsx(AssistantModalButton, {}) }) }), _jsx(AssistantModalPrimitive.Content, { sideOffset: 16, className: "bg-popover text-popover-foreground z-50 h-[500px] w-[400px] overflow-clip rounded-xl border p-0 shadow-md outline-none [&>.aui-thread-root]:bg-inherit data-[state=closed]:animate-out data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out data-[state=open]:zoom-in data-[state=open]:slide-in-from-bottom-1/2 data-[state=open]:slide-in-from-right-1/2 data-[state=closed]:slide-out-to-bottom-1/2 data-[state=closed]:slide-out-to-right-1/2", children: _jsx(Thread, {}) })] }));
10
+ };
11
+ const AssistantModalButton = forwardRef(({ 'data-state': state, ...rest }, ref) => {
12
+ const tooltip = state === 'open' ? 'Close Assistant' : 'Open Assistant';
13
+ return (_jsxs(TooltipIconButton, { variant: "default", tooltip: tooltip, side: "left", ...rest, className: "size-full rounded-full shadow transition-transform hover:scale-110 active:scale-90", ref: ref, children: [_jsx(BotIcon, { "data-state": state, className: "absolute size-6 transition-all data-[state=closed]:rotate-0 data-[state=open]:rotate-90 data-[state=closed]:scale-100 data-[state=open]:scale-0" }), _jsx(ChevronDownIcon, { "data-state": state, className: "absolute size-6 transition-all data-[state=closed]:-rotate-90 data-[state=open]:rotate-0 data-[state=closed]:scale-0 data-[state=open]:scale-100" }), _jsx("span", { className: "sr-only", children: tooltip })] }));
14
+ });
15
+ AssistantModalButton.displayName = 'AssistantModalButton';
@@ -0,0 +1,3 @@
1
+ import '@assistant-ui/react-markdown/styles/dot.css';
2
+ export declare const MarkdownText: import("react").MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
3
+ //# sourceMappingURL=markdown-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-text.d.ts","sourceRoot":"","sources":["../../../../../playground/src/components/assistant-ui/markdown-text.tsx"],"names":[],"mappings":"AAEA,OAAO,6CAA6C,CAAC;AAmBrD,eAAO,MAAM,YAAY,oFAAyB,CAAC"}
@@ -0,0 +1,59 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import '@assistant-ui/react-markdown/styles/dot.css';
4
+ import { MarkdownTextPrimitive, unstable_memoizeMarkdownComponents as memoizeMarkdownComponents, useIsMarkdownCodeBlock, } from '@assistant-ui/react-markdown';
5
+ import remarkGfm from 'remark-gfm';
6
+ import { memo, useState } from 'react';
7
+ import { CheckIcon, CopyIcon } from 'lucide-react';
8
+ import { TooltipIconButton } from '@/components/assistant-ui/tooltip-icon-button';
9
+ import { cn } from '@/lib/utils';
10
+ const MarkdownTextImpl = () => {
11
+ return _jsx(MarkdownTextPrimitive, { remarkPlugins: [remarkGfm], className: "aui-md", components: defaultComponents });
12
+ };
13
+ export const MarkdownText = memo(MarkdownTextImpl);
14
+ const CodeHeader = ({ language, code }) => {
15
+ const { isCopied, copyToClipboard } = useCopyToClipboard();
16
+ const onCopy = () => {
17
+ if (!code || isCopied)
18
+ return;
19
+ copyToClipboard(code);
20
+ };
21
+ return (_jsxs("div", { className: "flex items-center justify-between gap-4 rounded-t-lg bg-zinc-900 px-4 py-2 text-sm font-semibold text-white", children: [_jsx("span", { className: "lowercase [&>span]:text-xs", children: language }), _jsxs(TooltipIconButton, { tooltip: "Copy", onClick: onCopy, children: [!isCopied && _jsx(CopyIcon, {}), isCopied && _jsx(CheckIcon, {})] })] }));
22
+ };
23
+ const useCopyToClipboard = ({ copiedDuration = 3000, } = {}) => {
24
+ const [isCopied, setIsCopied] = useState(false);
25
+ const copyToClipboard = (value) => {
26
+ if (!value)
27
+ return;
28
+ navigator.clipboard.writeText(value).then(() => {
29
+ setIsCopied(true);
30
+ setTimeout(() => setIsCopied(false), copiedDuration);
31
+ });
32
+ };
33
+ return { isCopied, copyToClipboard };
34
+ };
35
+ const defaultComponents = memoizeMarkdownComponents({
36
+ h1: ({ className, ...props }) => (_jsx("h1", { className: cn('mb-8 scroll-m-20 text-4xl font-extrabold tracking-tight last:mb-0', className), ...props })),
37
+ h2: ({ className, ...props }) => (_jsx("h2", { className: cn('mb-4 mt-8 scroll-m-20 text-3xl font-semibold tracking-tight first:mt-0 last:mb-0', className), ...props })),
38
+ h3: ({ className, ...props }) => (_jsx("h3", { className: cn('mb-4 mt-6 scroll-m-20 text-2xl font-semibold tracking-tight first:mt-0 last:mb-0', className), ...props })),
39
+ h4: ({ className, ...props }) => (_jsx("h4", { className: cn('mb-4 mt-6 scroll-m-20 text-xl font-semibold tracking-tight first:mt-0 last:mb-0', className), ...props })),
40
+ h5: ({ className, ...props }) => _jsx("h5", { className: cn('my-4 text-lg font-semibold first:mt-0 last:mb-0', className), ...props }),
41
+ h6: ({ className, ...props }) => _jsx("h6", { className: cn('my-4 font-semibold first:mt-0 last:mb-0', className), ...props }),
42
+ p: ({ className, ...props }) => _jsx("p", { className: cn('mb-5 mt-5 leading-7 first:mt-0 last:mb-0', className), ...props }),
43
+ a: ({ className, ...props }) => _jsx("a", { className: cn('text-primary font-medium underline underline-offset-4', className), ...props }),
44
+ blockquote: ({ className, ...props }) => _jsx("blockquote", { className: cn('border-l-2 pl-6 italic', className), ...props }),
45
+ ul: ({ className, ...props }) => _jsx("ul", { className: cn('my-5 ml-6 list-disc [&>li]:mt-2', className), ...props }),
46
+ ol: ({ className, ...props }) => _jsx("ol", { className: cn('my-5 ml-6 list-decimal [&>li]:mt-2', className), ...props }),
47
+ hr: ({ className, ...props }) => _jsx("hr", { className: cn('my-5 border-b', className), ...props }),
48
+ table: ({ className, ...props }) => (_jsx("table", { className: cn('my-5 w-full border-separate border-spacing-0 overflow-y-auto', className), ...props })),
49
+ th: ({ className, ...props }) => (_jsx("th", { className: cn('bg-muted px-4 py-2 text-left font-bold first:rounded-tl-lg last:rounded-tr-lg [&[align=center]]:text-center [&[align=right]]:text-right', className), ...props })),
50
+ td: ({ className, ...props }) => (_jsx("td", { className: cn('border-b border-l px-4 py-2 text-left last:border-r [&[align=center]]:text-center [&[align=right]]:text-right', className), ...props })),
51
+ tr: ({ className, ...props }) => (_jsx("tr", { className: cn('m-0 border-b p-0 first:border-t [&:last-child>td:first-child]:rounded-bl-lg [&:last-child>td:last-child]:rounded-br-lg', className), ...props })),
52
+ sup: ({ className, ...props }) => _jsx("sup", { className: cn('[&>a]:text-xs [&>a]:no-underline', className), ...props }),
53
+ pre: ({ className, ...props }) => _jsx("pre", { className: cn('overflow-x-auto rounded-b-lg bg-black p-4 text-white', className), ...props }),
54
+ code: function Code({ className, ...props }) {
55
+ const isCodeBlock = useIsMarkdownCodeBlock();
56
+ return _jsx("code", { className: cn(!isCodeBlock && 'bg-muted rounded border font-semibold', className), ...props });
57
+ },
58
+ CodeHeader,
59
+ });
@@ -0,0 +1,3 @@
1
+ import type { FC } from 'react';
2
+ export declare const ThreadList: FC;
3
+ //# sourceMappingURL=thread-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-list.d.ts","sourceRoot":"","sources":["../../../../../playground/src/components/assistant-ui/thread-list.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAOhC,eAAO,MAAM,UAAU,EAAE,EAOxB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ThreadListItemPrimitive, ThreadListPrimitive } from '@assistant-ui/react';
3
+ import { ArchiveIcon, PlusIcon } from 'lucide-react';
4
+ import { Button } from '@/components/ui/button';
5
+ import { TooltipIconButton } from '@/components/assistant-ui/tooltip-icon-button';
6
+ export const ThreadList = () => {
7
+ return (_jsxs(ThreadListPrimitive.Root, { className: "flex flex-col items-stretch gap-1.5", children: [_jsx(ThreadListNew, {}), _jsx(ThreadListItems, {})] }));
8
+ };
9
+ const ThreadListNew = () => {
10
+ return (_jsx(ThreadListPrimitive.New, { asChild: true, children: _jsxs(Button, { className: "data-[active]:bg-muted hover:bg-muted flex items-center justify-start gap-1 rounded-lg px-2.5 py-2 text-start", variant: "ghost", children: [_jsx(PlusIcon, {}), "New Thread"] }) }));
11
+ };
12
+ const ThreadListItems = () => {
13
+ return _jsx(ThreadListPrimitive.Items, { components: { ThreadListItem } });
14
+ };
15
+ const ThreadListItem = () => {
16
+ return (_jsxs(ThreadListItemPrimitive.Root, { className: "data-[active]:bg-muted hover:bg-muted focus-visible:bg-muted focus-visible:ring-ring flex items-center gap-2 rounded-lg transition-all focus-visible:outline-none focus-visible:ring-2", children: [_jsx(ThreadListItemPrimitive.Trigger, { className: "flex-grow px-3 py-2 text-start", children: _jsx(ThreadListItemTitle, {}) }), _jsx(ThreadListItemArchive, {})] }));
17
+ };
18
+ const ThreadListItemTitle = () => {
19
+ return (_jsx("p", { className: "text-sm", children: _jsx(ThreadListItemPrimitive.Title, { fallback: "New Chat" }) }));
20
+ };
21
+ const ThreadListItemArchive = () => {
22
+ return (_jsx(ThreadListItemPrimitive.Archive, { asChild: true, children: _jsx(TooltipIconButton, { className: "hover:text-primary text-foreground ml-auto mr-3 size-4 p-0", variant: "ghost", tooltip: "Archive thread", children: _jsx(ArchiveIcon, {}) }) }));
23
+ };
@@ -0,0 +1,3 @@
1
+ import { type FC } from 'react';
2
+ export declare const Thread: FC;
3
+ //# sourceMappingURL=thread.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../../../../playground/src/components/assistant-ui/thread.tsx"],"names":[],"mappings":"AASA,OAAO,EAAwB,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAWtD,eAAO,MAAM,MAAM,EAAE,EA8BpB,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /* eslint-disable @typescript-eslint/no-unused-vars */
3
+ import { ActionBarPrimitive, BranchPickerPrimitive, ComposerPrimitive, MessagePrimitive, ThreadPrimitive, } from '@assistant-ui/react';
4
+ import { useCallback, useMemo } from 'react';
5
+ import { ArrowDownIcon, CheckIcon, ChevronLeftIcon, ChevronRightIcon, CopyIcon, SendHorizontalIcon, MicIcon } from 'lucide-react';
6
+ import { cn } from '@/lib/utils';
7
+ import { Button } from '@/components/ui/button';
8
+ import { MarkdownText } from '@/components/assistant-ui/markdown-text';
9
+ import { TooltipIconButton } from '@/components/assistant-ui/tooltip-icon-button';
10
+ import { ToolFallback } from '@/components/assistant-ui/tool-fallback';
11
+ import { usePersonaRuntimeWebRTCProtocol } from '@applica-software-guru/persona-sdk';
12
+ export const Thread = () => {
13
+ return (_jsx(ThreadPrimitive.Root, { className: "bg-background box-border flex h-full flex-col overflow-hidden", style: {
14
+ ['--thread-max-width']: '42rem',
15
+ }, children: _jsxs(ThreadPrimitive.Viewport, { className: "flex h-full flex-col items-center overflow-y-scroll scroll-smooth bg-inherit px-4 pt-8", children: [_jsx(ThreadWelcome, {}), _jsx(ThreadPrimitive.Messages, { components: {
16
+ UserMessage: UserMessage,
17
+ EditComposer: EditComposer,
18
+ AssistantMessage: AssistantMessage,
19
+ } }), _jsx(ThreadPrimitive.If, { empty: false, children: _jsx("div", { className: "min-h-8 flex-grow" }) }), _jsxs("div", { className: "sticky bottom-0 mt-3 flex w-full max-w-[var(--thread-max-width)] flex-col items-center justify-end rounded-t-lg bg-inherit pb-4", children: [_jsx(ThreadScrollToBottom, {}), _jsx(Composer, {})] })] }) }));
20
+ };
21
+ const ThreadScrollToBottom = () => {
22
+ return (_jsx(ThreadPrimitive.ScrollToBottom, { asChild: true, children: _jsx(TooltipIconButton, { tooltip: "Scroll to bottom", variant: "outline", className: "absolute -top-8 rounded-full disabled:invisible", children: _jsx(ArrowDownIcon, {}) }) }));
23
+ };
24
+ const ThreadWelcome = () => {
25
+ return (_jsx(ThreadPrimitive.Empty, { children: _jsx("div", { className: "flex w-full max-w-[var(--thread-max-width)] flex-grow flex-col", children: _jsx("div", { className: "flex w-full flex-grow flex-col items-center justify-center", children: _jsx("p", { className: "mt-4 font-medium", children: "Come posso aiutarti oggi?" }) }) }) }));
26
+ };
27
+ const Composer = () => {
28
+ return (_jsxs(ComposerPrimitive.Root, { className: "focus-within:border-ring/20 flex w-full flex-wrap items-end rounded-lg border bg-inherit px-2.5 shadow-sm transition-colors ease-in", children: [_jsx(ComposerPrimitive.Input, { rows: 1, autoFocus: true, placeholder: "Write a message...", className: "placeholder:text-muted-foreground max-h-40 flex-grow resize-none border-none bg-transparent px-2 py-4 text-base outline-none focus:ring-0 disabled:cursor-not-allowed" }), _jsx(ComposerAction, {})] }));
29
+ };
30
+ const SpeakButton = () => {
31
+ const webrtcProtocol = usePersonaRuntimeWebRTCProtocol();
32
+ const isConnected = useMemo(() => webrtcProtocol?.status === 'connected', [webrtcProtocol?.status]);
33
+ const handleConnection = useCallback(() => {
34
+ if (webrtcProtocol.status === 'connected') {
35
+ webrtcProtocol.disconnect();
36
+ }
37
+ else {
38
+ webrtcProtocol.connect();
39
+ }
40
+ }, [webrtcProtocol]);
41
+ if (!webrtcProtocol) {
42
+ return null;
43
+ }
44
+ return (_jsx(TooltipIconButton, { className: cn('hover:text-primary my-2.5 size-8 p-2 ml-2 transition-opacity ease-in text-foreground cursor-pointer', isConnected && 'animate-pulse text-blue-500'), variant: "default", tooltip: isConnected ? 'Stop speaking' : 'Speak', onClick: handleConnection, children: _jsx(MicIcon, { className: cn(isConnected && 'animate-pulse') }) }));
45
+ };
46
+ const ComposerAction = () => {
47
+ return (_jsxs(_Fragment, { children: [_jsx(ThreadPrimitive.If, { running: false, children: _jsx(ComposerPrimitive.Send, { asChild: true, children: _jsx(TooltipIconButton, { tooltip: "Send", variant: "default", className: "my-2.5 size-8 p-2 transition-opacity ease-in", children: _jsx(SendHorizontalIcon, {}) }) }) }), _jsx(ThreadPrimitive.If, { running: true, children: _jsx(ComposerPrimitive.Cancel, { asChild: true, children: _jsx(TooltipIconButton, { tooltip: "Cancel", variant: "default", className: "my-2.5 size-8 p-2 transition-opacity ease-in", children: _jsx(CircleStopIcon, {}) }) }) }), _jsx(SpeakButton, {})] }));
48
+ };
49
+ const UserMessage = () => {
50
+ return (_jsxs(MessagePrimitive.Root, { className: "grid auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] gap-y-2 [&:where(>*)]:col-start-2 w-full max-w-[var(--thread-max-width)] py-4", children: [_jsx("div", { className: "bg-muted text-foreground max-w-[calc(var(--thread-max-width)*0.8)] break-words rounded-3xl px-5 py-2.5 col-start-2 row-start-2", children: _jsx(MessagePrimitive.Content, {}) }), _jsx(BranchPicker, { className: "col-span-full col-start-1 row-start-3 -mr-1 justify-end" })] }));
51
+ };
52
+ const EditComposer = () => {
53
+ return (_jsxs(ComposerPrimitive.Root, { className: "bg-muted my-4 flex w-full max-w-[var(--thread-max-width)] flex-col gap-2 rounded-xl", children: [_jsx(ComposerPrimitive.Input, { className: "text-foreground flex h-8 w-full resize-none bg-transparent p-4 pb-0 outline-none" }), _jsxs("div", { className: "mx-3 mb-3 flex items-center justify-center gap-2 self-end", children: [_jsx(ComposerPrimitive.Cancel, { asChild: true, children: _jsx(Button, { variant: "ghost", children: "Cancel" }) }), _jsx(ComposerPrimitive.Send, { asChild: true, children: _jsx(Button, { children: "Send" }) })] })] }));
54
+ };
55
+ const Reasoning = ({ text }) => {
56
+ return _jsx("div", { className: "text-sm text-muted-foreground break-words whitespace-pre-wrap", children: text });
57
+ };
58
+ const AssistantMessage = () => {
59
+ return (_jsxs(MessagePrimitive.Root, { className: "grid grid-cols-[auto_auto_1fr] grid-rows-[auto_1fr] relative w-full max-w-[var(--thread-max-width)] py-4", children: [_jsx("div", { className: "text-foreground max-w-[calc(var(--thread-max-width)*0.8)] break-words leading-7 col-span-2 col-start-2 row-start-1 my-1.5", children: _jsx(MessagePrimitive.Content, { components: {
60
+ Text: MarkdownText,
61
+ Reasoning,
62
+ tools: {
63
+ Fallback: ToolFallback,
64
+ },
65
+ } }) }), _jsx(AssistantActionBar, {}), _jsx(BranchPicker, { className: "col-start-2 row-start-2 -ml-2 mr-2" })] }));
66
+ };
67
+ const AssistantActionBar = () => {
68
+ return (_jsx(ActionBarPrimitive.Root, { hideWhenRunning: true, autohide: "not-last", autohideFloat: "single-branch", className: "text-muted-foreground flex gap-1 col-start-3 row-start-2 -ml-1 data-[floating]:bg-background data-[floating]:absolute data-[floating]:rounded-md data-[floating]:border data-[floating]:p-1 data-[floating]:shadow-sm", children: _jsx(ActionBarPrimitive.Copy, { asChild: true, children: _jsxs(TooltipIconButton, { tooltip: "Copy", children: [_jsx(MessagePrimitive.If, { copied: true, children: _jsx(CheckIcon, {}) }), _jsx(MessagePrimitive.If, { copied: false, children: _jsx(CopyIcon, {}) })] }) }) }));
69
+ };
70
+ const BranchPicker = ({ className, ...rest }) => {
71
+ return (_jsxs(BranchPickerPrimitive.Root, { hideWhenSingleBranch: true, className: cn('text-muted-foreground inline-flex items-center text-xs', className), ...rest, children: [_jsx(BranchPickerPrimitive.Previous, { asChild: true, children: _jsx(TooltipIconButton, { tooltip: "Previous", children: _jsx(ChevronLeftIcon, {}) }) }), _jsxs("span", { className: "font-medium", children: [_jsx(BranchPickerPrimitive.Number, {}), " / ", _jsx(BranchPickerPrimitive.Count, {})] }), _jsx(BranchPickerPrimitive.Next, { asChild: true, children: _jsx(TooltipIconButton, { tooltip: "Next", children: _jsx(ChevronRightIcon, {}) }) })] }));
72
+ };
73
+ const CircleStopIcon = () => {
74
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", fill: "currentColor", width: "16", height: "16", children: _jsx("rect", { width: "10", height: "10", x: "3", y: "3", rx: "2" }) }));
75
+ };
@@ -0,0 +1,3 @@
1
+ import { ToolCallContentPartComponent } from '@assistant-ui/react';
2
+ export declare const ToolFallback: ToolCallContentPartComponent;
3
+ //# sourceMappingURL=tool-fallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-fallback.d.ts","sourceRoot":"","sources":["../../../../../playground/src/components/assistant-ui/tool-fallback.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAKnE,eAAO,MAAM,YAAY,EAAE,4BA2B1B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';
3
+ import { useState } from 'react';
4
+ import { Button } from '../ui/button';
5
+ export const ToolFallback = ({ toolName, argsText, result }) => {
6
+ const [isCollapsed, setIsCollapsed] = useState(true);
7
+ return (_jsxs("div", { className: "mb-4 flex w-full flex-col gap-3 rounded-lg border py-3", children: [_jsxs("div", { className: "flex items-center gap-2 px-4", children: [_jsx(CheckIcon, { className: "size-4" }), _jsxs("p", { className: "", children: ["Used tool: ", _jsx("b", { children: toolName })] }), _jsx("div", { className: "flex-grow" }), _jsx(Button, { onClick: () => setIsCollapsed(!isCollapsed), children: isCollapsed ? _jsx(ChevronUpIcon, {}) : _jsx(ChevronDownIcon, {}) })] }), !isCollapsed && (_jsxs("div", { className: "flex flex-col gap-2 border-t pt-2", children: [_jsx("div", { className: "px-4", children: _jsx("pre", { className: "whitespace-pre-wrap", children: argsText }) }), result !== undefined && (_jsxs("div", { className: "border-t border-dashed px-4 pt-2", children: [_jsx("p", { className: "font-semibold", children: "Result:" }), _jsx("pre", { className: "whitespace-pre-wrap", children: typeof result === 'string' ? result : JSON.stringify(result, null, 2) })] }))] }))] }));
8
+ };
@@ -0,0 +1,11 @@
1
+ import { ComponentPropsWithoutRef } from 'react';
2
+ import { Button } from '@/components/ui/button';
3
+ export type TooltipIconButtonProps = ComponentPropsWithoutRef<typeof Button> & {
4
+ tooltip: string;
5
+ side?: 'top' | 'bottom' | 'left' | 'right';
6
+ };
7
+ export declare const TooltipIconButton: import("react").ForwardRefExoticComponent<Omit<import("@/components/ui/button").ButtonProps & import("react").RefAttributes<HTMLButtonElement>, "ref"> & {
8
+ tooltip: string;
9
+ side?: "top" | "bottom" | "left" | "right";
10
+ } & import("react").RefAttributes<HTMLButtonElement>>;
11
+ //# sourceMappingURL=tooltip-icon-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip-icon-button.d.ts","sourceRoot":"","sources":["../../../../../playground/src/components/assistant-ui/tooltip-icon-button.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAc,MAAM,OAAO,CAAC;AAG7D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,MAAM,MAAM,sBAAsB,GAAG,wBAAwB,CAAC,OAAO,MAAM,CAAC,GAAG;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;CAC5C,CAAC;AAEF,eAAO,MAAM,iBAAiB;aAJnB,MAAM;WACR,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO;qDAyB3C,CAAC"}
@@ -0,0 +1,13 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { forwardRef } from 'react';
4
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
5
+ import { Button } from '@/components/ui/button';
6
+ import { cn } from '@/lib/utils';
7
+ export const TooltipIconButton = forwardRef(({ children, tooltip, side = 'bottom', className, ...rest }, ref) => {
8
+ return (_jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsxs(Button
9
+ // variant="ghost"
10
+ // size="icon"
11
+ , { ...rest, className: cn('size-6 p-1', className), ref: ref, children: [children, _jsx("span", { className: "sr-only", children: tooltip })] }) }), _jsx(TooltipContent, { side: side, children: tooltip })] }) }));
12
+ });
13
+ TooltipIconButton.displayName = 'TooltipIconButton';
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
3
+ declare const Avatar: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
4
+ declare const AvatarImage: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React.RefAttributes<HTMLImageElement>, "ref"> & React.RefAttributes<HTMLImageElement>>;
5
+ declare const AvatarFallback: React.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
6
+ export { Avatar, AvatarImage, AvatarFallback };
7
+ //# sourceMappingURL=avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../../../playground/src/components/ui/avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAI1D,QAAA,MAAM,MAAM,yJAIX,CAAC;AAGF,QAAA,MAAM,WAAW,gKAKf,CAAC;AAGH,QAAA,MAAM,cAAc,iKASlB,CAAC;AAGH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
5
+ import { cn } from '@/lib/utils';
6
+ const Avatar = React.forwardRef(({ className, ...props }, ref) => (_jsx(AvatarPrimitive.Root, { ref: ref, className: cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className), ...props })));
7
+ Avatar.displayName = AvatarPrimitive.Root.displayName;
8
+ const AvatarImage = React.forwardRef(({ className, ...props }, ref) => (_jsx(AvatarPrimitive.Image, { ref: ref, className: cn('aspect-square h-full w-full', className), ...props })));
9
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
10
+ const AvatarFallback = React.forwardRef(({ className, ...props }, ref) => (_jsx(AvatarPrimitive.Fallback, { ref: ref, className: cn('flex h-full w-full items-center justify-center rounded-full bg-muted', className), ...props })));
11
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
12
+ export { Avatar, AvatarImage, AvatarFallback };
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
5
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
6
+ } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
7
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
8
+ asChild?: boolean;
9
+ }
10
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
11
+ export { Button, buttonVariants };
12
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../../../playground/src/components/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,QAAA,MAAM,cAAc;;;mFAwBnB,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC;IACrH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,MAAM,uFAGV,CAAC;AAGH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { Slot } from '@radix-ui/react-slot';
4
+ import { cva } from 'class-variance-authority';
5
+ import { cn } from '@/lib/utils';
6
+ const buttonVariants = cva('inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0', {
7
+ variants: {
8
+ variant: {
9
+ default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',
10
+ destructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',
11
+ outline: 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',
12
+ secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',
13
+ ghost: 'hover:bg-accent hover:text-accent-foreground',
14
+ link: 'text-primary underline-offset-4 hover:underline',
15
+ },
16
+ size: {
17
+ default: 'h-9 px-4 py-2',
18
+ sm: 'h-8 rounded-md px-3 text-xs',
19
+ lg: 'h-10 rounded-md px-8',
20
+ icon: 'h-9 w-9',
21
+ },
22
+ },
23
+ defaultVariants: {
24
+ variant: 'default',
25
+ size: 'default',
26
+ },
27
+ });
28
+ const Button = React.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
29
+ const Comp = asChild ? Slot : 'button';
30
+ return _jsx(Comp, { className: cn(buttonVariants({ variant, size, className })), ref: ref, ...props });
31
+ });
32
+ Button.displayName = 'Button';
33
+ export { Button, buttonVariants };
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
3
+ declare const TooltipProvider: React.FC<TooltipPrimitive.TooltipProviderProps>;
4
+ declare const Tooltip: React.FC<TooltipPrimitive.TooltipProps>;
5
+ declare const TooltipTrigger: React.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React.RefAttributes<HTMLButtonElement>>;
6
+ declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
8
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../../../playground/src/components/ui/tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAI5D,QAAA,MAAM,eAAe,iDAA4B,CAAC;AAElD,QAAA,MAAM,OAAO,yCAAwB,CAAC;AAEtC,QAAA,MAAM,cAAc,gHAA2B,CAAC;AAEhD,QAAA,MAAM,cAAc,gKAelB,CAAC;AAGH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
5
+ import { cn } from '@/lib/utils';
6
+ const TooltipProvider = TooltipPrimitive.Provider;
7
+ const Tooltip = TooltipPrimitive.Root;
8
+ const TooltipTrigger = TooltipPrimitive.Trigger;
9
+ const TooltipContent = React.forwardRef(({ className, sideOffset = 4, ...props }, ref) => (_jsx(TooltipPrimitive.Portal, { children: _jsx(TooltipPrimitive.Content, { ref: ref, sideOffset: sideOffset, className: cn('z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', className), ...props }) })));
10
+ TooltipContent.displayName = TooltipPrimitive.Content.displayName;
11
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
@@ -0,0 +1,3 @@
1
+ import { type ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../playground/src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAC;AAG7C,wBAAgB,EAAE,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,UAEzC"}
@@ -0,0 +1,5 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+ export function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../playground/src/main.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import ReactDOM from 'react-dom/client';
4
+ import { Chat } from './chat';
5
+ ReactDOM.createRoot(document.getElementById('app')).render(_jsx(React.StrictMode, { children: _jsx(Chat, {}) }));
@@ -0,0 +1,5 @@
1
+ export * from './runtime';
2
+ export * from './logging';
3
+ export * from './protocol';
4
+ export * from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './runtime';
2
+ export * from './logging';
3
+ export * from './protocol';
4
+ export * from './types';
@@ -0,0 +1,18 @@
1
+ interface PersonaLogger {
2
+ log: (message: string, ...args: unknown[]) => void;
3
+ info: (message: string, ...args: unknown[]) => void;
4
+ warn: (message: string, ...args: unknown[]) => void;
5
+ error: (message: string, ...args: unknown[]) => void;
6
+ debug: (message: string, ...args: unknown[]) => void;
7
+ }
8
+ declare class PersonaConsoleLogger implements PersonaLogger {
9
+ prefix: string;
10
+ log(message: string, ...args: unknown[]): void;
11
+ info(message: string, ...args: unknown[]): void;
12
+ warn(message: string, ...args: unknown[]): void;
13
+ error(message: string, ...args: unknown[]): void;
14
+ debug(message: string, ...args: unknown[]): void;
15
+ }
16
+ export { PersonaConsoleLogger };
17
+ export type { PersonaLogger };
18
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/logging.ts"],"names":[],"mappings":"AAAA,UAAU,aAAa;IACrB,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACrD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACtD;AAED,cAAM,oBAAqB,YAAW,aAAa;IACjD,MAAM,SAAe;IAErB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAIvC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAIxC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAIxC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;IAIzC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE;CAG1C;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ class PersonaConsoleLogger {
2
+ prefix = '[Persona]';
3
+ log(message, ...args) {
4
+ console.log(`${this.prefix} - ${message}`, ...args);
5
+ }
6
+ info(message, ...args) {
7
+ console.info(`${this.prefix} - ${message}`, ...args);
8
+ }
9
+ warn(message, ...args) {
10
+ console.warn(`${this.prefix} - ${message}`, ...args);
11
+ }
12
+ error(message, ...args) {
13
+ console.error(`${this.prefix} - ${message}`, ...args);
14
+ }
15
+ debug(message, ...args) {
16
+ console.debug(`${this.prefix} - ${message}`, ...args);
17
+ }
18
+ }
19
+ export { PersonaConsoleLogger };
@@ -0,0 +1,7 @@
1
+ import { PersonaMessage } from './types';
2
+ import { ThreadMessageLike } from '@assistant-ui/react';
3
+ declare function removeEmptyMessages(messages: PersonaMessage[]): PersonaMessage[];
4
+ declare function parseMessages(messages: PersonaMessage[]): PersonaMessage[];
5
+ declare function convertMessage(message: PersonaMessage): ThreadMessageLike;
6
+ export { parseMessages, convertMessage, removeEmptyMessages };
7
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,iBAAS,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAOzE;AACD,iBAAS,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CA0CnE;AAED,iBAAS,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,iBAAiB,CAqBlE;AAED,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC"}