Spaces:
Sleeping
Sleeping
dispaly persona
Browse files
src/lib/components/chat/Assistant.svelte
CHANGED
|
@@ -10,7 +10,7 @@
|
|
| 10 |
type Edge,
|
| 11 |
type Node
|
| 12 |
} from '@xyflow/svelte';
|
| 13 |
-
import { MessageCirclePlus } from '@lucide/svelte';
|
| 14 |
import { mode } from 'mode-watcher';
|
| 15 |
|
| 16 |
import type { ChatMessage, TokenUsage } from '$lib/helpers/types';
|
|
@@ -20,6 +20,7 @@
|
|
| 20 |
import { formatUsageCost, getProviderName } from '$lib';
|
| 21 |
import { modelsState } from '$lib/state/models.svelte';
|
| 22 |
import ListModels from '$lib/components/model/ListModels.svelte';
|
|
|
|
| 23 |
|
| 24 |
let { id }: NodeProps = $props();
|
| 25 |
|
|
@@ -33,6 +34,12 @@
|
|
| 33 |
let messages = $derived((nodeData.current?.data.messages as ChatMessage[]) ?? []);
|
| 34 |
let loading = $derived((nodeData.current?.data.loading as boolean) ?? false);
|
| 35 |
let usage = $derived((nodeData.current?.data.usage as TokenUsage) ?? null);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
let message = $derived(
|
| 37 |
nodeData.current?.data.content != null
|
| 38 |
? ({
|
|
@@ -148,6 +155,16 @@
|
|
| 148 |
<div class="flex flex-wrap items-center gap-1">
|
| 149 |
<ListModels selectedModels={[selectedModel]} showSelector={false} />
|
| 150 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 151 |
</header>
|
| 152 |
|
| 153 |
{#if loading}
|
|
|
|
| 10 |
type Edge,
|
| 11 |
type Node
|
| 12 |
} from '@xyflow/svelte';
|
| 13 |
+
import { Drama, MessageCirclePlus } from '@lucide/svelte';
|
| 14 |
import { mode } from 'mode-watcher';
|
| 15 |
|
| 16 |
import type { ChatMessage, TokenUsage } from '$lib/helpers/types';
|
|
|
|
| 20 |
import { formatUsageCost, getProviderName } from '$lib';
|
| 21 |
import { modelsState } from '$lib/state/models.svelte';
|
| 22 |
import ListModels from '$lib/components/model/ListModels.svelte';
|
| 23 |
+
import { DEFAULT_PERSONA, personasState } from '$lib/state/personas.svelte';
|
| 24 |
|
| 25 |
let { id }: NodeProps = $props();
|
| 26 |
|
|
|
|
| 34 |
let messages = $derived((nodeData.current?.data.messages as ChatMessage[]) ?? []);
|
| 35 |
let loading = $derived((nodeData.current?.data.loading as boolean) ?? false);
|
| 36 |
let usage = $derived((nodeData.current?.data.usage as TokenUsage) ?? null);
|
| 37 |
+
let persona = $derived(
|
| 38 |
+
nodeData.current?.data.persone !== DEFAULT_PERSONA.id
|
| 39 |
+
? personasState.personas.find((p) => p.id === nodeData.current?.data.persona)
|
| 40 |
+
: null
|
| 41 |
+
);
|
| 42 |
+
|
| 43 |
let message = $derived(
|
| 44 |
nodeData.current?.data.content != null
|
| 45 |
? ({
|
|
|
|
| 155 |
<div class="flex flex-wrap items-center gap-1">
|
| 156 |
<ListModels selectedModels={[selectedModel]} showSelector={false} />
|
| 157 |
</div>
|
| 158 |
+
{#if persona}
|
| 159 |
+
<div
|
| 160 |
+
class="inline-flex max-w-max items-center gap-0.5 rounded-md bg-accent px-2 py-1 text-xs text-muted-foreground"
|
| 161 |
+
>
|
| 162 |
+
<span class="flex size-4 items-center justify-center rounded-full bg-muted">
|
| 163 |
+
<Drama class="size-3" />
|
| 164 |
+
</span>
|
| 165 |
+
{persona.name}
|
| 166 |
+
</div>
|
| 167 |
+
{/if}
|
| 168 |
</header>
|
| 169 |
|
| 170 |
{#if loading}
|
src/lib/components/chat/User.svelte
CHANGED
|
@@ -29,6 +29,7 @@
|
|
| 29 |
import { breakpointsState } from '$lib/state/breakpoints.svelte';
|
| 30 |
import { autosize } from '$lib/actions/autosize';
|
| 31 |
import { modelsState } from '$lib/state/models.svelte';
|
|
|
|
| 32 |
|
| 33 |
let { id }: NodeProps = $props();
|
| 34 |
|
|
@@ -124,6 +125,7 @@
|
|
| 124 |
selectedModel: m,
|
| 125 |
content: '',
|
| 126 |
loading: true,
|
|
|
|
| 127 |
messages: newMessages
|
| 128 |
}
|
| 129 |
};
|
|
|
|
| 29 |
import { breakpointsState } from '$lib/state/breakpoints.svelte';
|
| 30 |
import { autosize } from '$lib/actions/autosize';
|
| 31 |
import { modelsState } from '$lib/state/models.svelte';
|
| 32 |
+
import { personasState } from '$lib/state/personas.svelte';
|
| 33 |
|
| 34 |
let { id }: NodeProps = $props();
|
| 35 |
|
|
|
|
| 125 |
selectedModel: m,
|
| 126 |
content: '',
|
| 127 |
loading: true,
|
| 128 |
+
persona: personasState.selectedPersona,
|
| 129 |
messages: newMessages
|
| 130 |
}
|
| 131 |
};
|