@happyvertical/smrt-chat 0.55.16 → 0.55.17
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/chunks/{chat-stream-j6VuNo3t.js → chat-stream-D1xCl9IM.js} +2 -2
- package/dist/chunks/{chat-stream-j6VuNo3t.js.map → chat-stream-D1xCl9IM.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/manifest.json +1 -1
- package/dist/smrt-knowledge.json +3 -3
- package/dist/svelte/components/agent/AgentChat.svelte +70 -67
- package/dist/svelte/components/agent/AgentSelector.svelte +26 -23
- package/dist/svelte/components/agent/AgentSessionPanel.svelte +47 -44
- package/dist/svelte/components/agent/ToolCallDisplay.svelte +52 -49
- package/dist/svelte/components/assistant/AssistantChoiceCards.svelte +19 -17
- package/dist/svelte/components/assistant/AssistantComposer.svelte +31 -28
- package/dist/svelte/components/assistant/AssistantDock.svelte +69 -66
- package/dist/svelte/components/assistant/AssistantThreadList.svelte +23 -20
- package/dist/svelte/components/assistant/FloatingAssistant.svelte +6 -3
- package/dist/svelte/components/assistant/captions/CaptionOverlay.svelte +4 -1
- package/dist/svelte/components/assistant/captions/HeardCaptions.svelte +5 -2
- package/dist/svelte/components/assistant/captions/SpokenCaptions.svelte +5 -2
- package/dist/svelte/components/dialogs/RoomCreateDialog.svelte +13 -10
- package/dist/svelte/components/dialogs/SearchMessages.svelte +35 -32
- package/dist/svelte/components/helper/HelperControlPanel.svelte +4 -1
- package/dist/svelte/components/layout/ChatLayout.svelte +14 -10
- package/dist/svelte/components/layout/MemberList.svelte +30 -27
- package/dist/svelte/components/layout/RoomHeader.svelte +19 -16
- package/dist/svelte/components/layout/RoomList.svelte +26 -23
- package/dist/svelte/components/messages/MessageInput.svelte +20 -17
- package/dist/svelte/components/messages/MessageItem.svelte +45 -42
- package/dist/svelte/components/messages/MessageList.svelte +8 -5
- package/dist/svelte/components/messages/ThreadPanel.svelte +15 -12
- package/dist/svelte/components/shared/FileUpload.svelte +39 -36
- package/dist/svelte/components/shared/LinkPreview.svelte +9 -6
- package/dist/svelte/components/shared/MentionAutocomplete.svelte +16 -13
- package/dist/svelte/components/shared/ReadReceipts.svelte +13 -10
- package/dist/svelte/components/shared/UserPresence.svelte +10 -7
- package/dist/svelte/components/tabs/ChatTab.svelte +26 -23
- package/dist/svelte/components/tabs/ChatTabList.svelte +20 -17
- package/dist/svelte/components/tabs/ChatTabs.svelte +7 -4
- package/dist/svelte/components/tabs/MiniChat.svelte +26 -23
- package/dist/sveltekit.js +1 -1
- package/package.json +17 -17
|
@@ -24,7 +24,7 @@ const { tabs, onselect, onclose }: Props = $props();
|
|
|
24
24
|
</script>
|
|
25
25
|
|
|
26
26
|
{#if tabs.length > 0}
|
|
27
|
-
<nav class="tab-list" aria-label={t(M['chat.chat_tab_list.minimized_chats'])}>
|
|
27
|
+
<nav class="tab-list" aria-label={t(M['chat.chat_tab_list.minimized_chats'])} data-smrt-component="ChatTabList">
|
|
28
28
|
{#each tabs as tab (tab.roomId)}
|
|
29
29
|
<div class="tab-list__item">
|
|
30
30
|
<!-- raw-primitive-allow: pressable circular avatar tab wrapping rich content (room avatar component and overlaid unread badge) that opens the chat on click; no Button primitive owns this structural avatar-tab pattern -->
|
|
@@ -65,10 +65,12 @@ const { tabs, onselect, onclose }: Props = $props();
|
|
|
65
65
|
{/if}
|
|
66
66
|
|
|
67
67
|
<style>
|
|
68
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
69
|
+
@layer smrt.theme {
|
|
68
70
|
.tab-list {
|
|
69
71
|
display: flex;
|
|
70
72
|
align-items: flex-end;
|
|
71
|
-
gap: var(--smrt-spacing-1
|
|
73
|
+
gap: var(--smrt-spacing-1);
|
|
72
74
|
pointer-events: auto;
|
|
73
75
|
}
|
|
74
76
|
|
|
@@ -84,10 +86,10 @@ const { tabs, onselect, onclose }: Props = $props();
|
|
|
84
86
|
display: inline-flex;
|
|
85
87
|
align-items: center;
|
|
86
88
|
justify-content: center;
|
|
87
|
-
padding: var(--smrt-spacing-2
|
|
89
|
+
padding: var(--smrt-spacing-2);
|
|
88
90
|
border: none;
|
|
89
|
-
background: var(--smrt-color-surface-container
|
|
90
|
-
border-radius: var(--smrt-radius-full
|
|
91
|
+
background: var(--smrt-color-surface-container);
|
|
92
|
+
border-radius: var(--smrt-radius-full);
|
|
91
93
|
cursor: pointer;
|
|
92
94
|
transition: background var(--smrt-duration-short2, 150ms),
|
|
93
95
|
box-shadow var(--smrt-duration-short2, 150ms);
|
|
@@ -95,12 +97,12 @@ const { tabs, onselect, onclose }: Props = $props();
|
|
|
95
97
|
}
|
|
96
98
|
|
|
97
99
|
.tab-list__btn:hover {
|
|
98
|
-
background: var(--smrt-color-surface-container-high
|
|
100
|
+
background: var(--smrt-color-surface-container-high);
|
|
99
101
|
box-shadow: var(--smrt-elevation-2, 0 2px 6px rgba(0, 0, 0, 0.15));
|
|
100
102
|
}
|
|
101
103
|
|
|
102
104
|
.tab-list__btn:focus-visible {
|
|
103
|
-
outline: 2px solid var(--smrt-color-primary
|
|
105
|
+
outline: 2px solid var(--smrt-color-primary);
|
|
104
106
|
outline-offset: 2px;
|
|
105
107
|
}
|
|
106
108
|
|
|
@@ -113,14 +115,14 @@ const { tabs, onselect, onclose }: Props = $props();
|
|
|
113
115
|
justify-content: center;
|
|
114
116
|
min-width: 16px;
|
|
115
117
|
height: 16px;
|
|
116
|
-
padding: 0 var(--smrt-spacing-1
|
|
117
|
-
border-radius: var(--smrt-radius-full
|
|
118
|
-
background: var(--smrt-color-error
|
|
119
|
-
color: var(--smrt-color-on-error
|
|
118
|
+
padding: 0 var(--smrt-spacing-1);
|
|
119
|
+
border-radius: var(--smrt-radius-full);
|
|
120
|
+
background: var(--smrt-color-error);
|
|
121
|
+
color: var(--smrt-color-on-error);
|
|
120
122
|
font-size: var(--smrt-typography-label-small-size, 0.625rem);
|
|
121
123
|
font-weight: var(--smrt-typography-weight-semibold, 600);
|
|
122
124
|
line-height: 1;
|
|
123
|
-
border: 2px solid var(--smrt-color-surface
|
|
125
|
+
border: 2px solid var(--smrt-color-surface);
|
|
124
126
|
}
|
|
125
127
|
|
|
126
128
|
/* :global() pierces into the Button child's rendered <button> (see #1589). */
|
|
@@ -131,9 +133,9 @@ const { tabs, onselect, onclose }: Props = $props();
|
|
|
131
133
|
right: -4px;
|
|
132
134
|
width: 18px;
|
|
133
135
|
height: 18px;
|
|
134
|
-
background: var(--smrt-color-surface-variant
|
|
135
|
-
color: var(--smrt-color-on-surface-variant
|
|
136
|
-
border-radius: var(--smrt-radius-full
|
|
136
|
+
background: var(--smrt-color-surface-variant);
|
|
137
|
+
color: var(--smrt-color-on-surface-variant);
|
|
138
|
+
border-radius: var(--smrt-radius-full);
|
|
137
139
|
padding: 0;
|
|
138
140
|
font-size: 0;
|
|
139
141
|
}
|
|
@@ -149,8 +151,8 @@ const { tabs, onselect, onclose }: Props = $props();
|
|
|
149
151
|
}
|
|
150
152
|
|
|
151
153
|
.tab-list__item :global(.tab-list__close:hover) {
|
|
152
|
-
background: var(--smrt-color-error-container
|
|
153
|
-
color: var(--smrt-color-on-error-container
|
|
154
|
+
background: var(--smrt-color-error-container);
|
|
155
|
+
color: var(--smrt-color-on-error-container);
|
|
154
156
|
}
|
|
155
157
|
|
|
156
158
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -158,4 +160,5 @@ const { tabs, onselect, onclose }: Props = $props();
|
|
|
158
160
|
transition: none;
|
|
159
161
|
}
|
|
160
162
|
}
|
|
163
|
+
}
|
|
161
164
|
</style>
|
|
@@ -42,7 +42,7 @@ const expandedTabs = $derived(tabs.filter((t) => t.isExpanded));
|
|
|
42
42
|
const collapsedTabs = $derived(tabs.filter((t) => !t.isExpanded));
|
|
43
43
|
</script>
|
|
44
44
|
|
|
45
|
-
<div class="chat-tabs" aria-label={t(M['chat.chat_tabs.tabs_label'])}>
|
|
45
|
+
<div class="chat-tabs" aria-label={t(M['chat.chat_tabs.tabs_label'])} data-smrt-component="ChatTabs">
|
|
46
46
|
<div class="chat-tabs__expanded">
|
|
47
47
|
{#each expandedTabs as tab (tab.roomId)}
|
|
48
48
|
<ChatTab
|
|
@@ -67,14 +67,16 @@ const collapsedTabs = $derived(tabs.filter((t) => !t.isExpanded));
|
|
|
67
67
|
</div>
|
|
68
68
|
|
|
69
69
|
<style>
|
|
70
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
71
|
+
@layer smrt.theme {
|
|
70
72
|
.chat-tabs {
|
|
71
73
|
position: fixed;
|
|
72
74
|
bottom: 0;
|
|
73
75
|
right: 0;
|
|
74
76
|
display: flex;
|
|
75
77
|
align-items: flex-end;
|
|
76
|
-
gap: var(--smrt-spacing-2
|
|
77
|
-
padding: 0 var(--smrt-spacing-4
|
|
78
|
+
gap: var(--smrt-spacing-2);
|
|
79
|
+
padding: 0 var(--smrt-spacing-4);
|
|
78
80
|
z-index: var(--smrt-z-index-sticky, 1100);
|
|
79
81
|
pointer-events: none;
|
|
80
82
|
}
|
|
@@ -82,7 +84,8 @@ const collapsedTabs = $derived(tabs.filter((t) => !t.isExpanded));
|
|
|
82
84
|
.chat-tabs__expanded {
|
|
83
85
|
display: flex;
|
|
84
86
|
align-items: flex-end;
|
|
85
|
-
gap: var(--smrt-spacing-2
|
|
87
|
+
gap: var(--smrt-spacing-2);
|
|
86
88
|
pointer-events: auto;
|
|
87
89
|
}
|
|
90
|
+
}
|
|
88
91
|
</style>
|
|
@@ -56,7 +56,7 @@ $effect(() => {
|
|
|
56
56
|
});
|
|
57
57
|
</script>
|
|
58
58
|
|
|
59
|
-
<div class="mini-chat">
|
|
59
|
+
<div class="mini-chat" data-smrt-component="MiniChat">
|
|
60
60
|
<div
|
|
61
61
|
class="mini-chat__messages"
|
|
62
62
|
style:max-height="{maxHeight}px"
|
|
@@ -111,6 +111,8 @@ $effect(() => {
|
|
|
111
111
|
</div>
|
|
112
112
|
|
|
113
113
|
<style>
|
|
114
|
+
@layer smrt.reset, smrt.structure, smrt.theme;
|
|
115
|
+
@layer smrt.theme {
|
|
114
116
|
.mini-chat {
|
|
115
117
|
display: flex;
|
|
116
118
|
flex-direction: column;
|
|
@@ -120,17 +122,17 @@ $effect(() => {
|
|
|
120
122
|
.mini-chat__messages {
|
|
121
123
|
flex: 1;
|
|
122
124
|
overflow-y: auto;
|
|
123
|
-
padding: var(--smrt-spacing-2
|
|
125
|
+
padding: var(--smrt-spacing-2);
|
|
124
126
|
display: flex;
|
|
125
127
|
flex-direction: column;
|
|
126
|
-
gap: var(--smrt-spacing-2
|
|
128
|
+
gap: var(--smrt-spacing-2);
|
|
127
129
|
scroll-behavior: smooth;
|
|
128
130
|
}
|
|
129
131
|
|
|
130
132
|
.mini-chat__msg {
|
|
131
133
|
display: flex;
|
|
132
134
|
align-items: flex-end;
|
|
133
|
-
gap: var(--smrt-spacing-2
|
|
135
|
+
gap: var(--smrt-spacing-2);
|
|
134
136
|
max-width: 85%;
|
|
135
137
|
}
|
|
136
138
|
|
|
@@ -142,23 +144,23 @@ $effect(() => {
|
|
|
142
144
|
.mini-chat__bubble {
|
|
143
145
|
display: flex;
|
|
144
146
|
flex-direction: column;
|
|
145
|
-
gap: var(--smrt-spacing-1
|
|
146
|
-
padding: var(--smrt-spacing-2
|
|
147
|
-
border-radius: var(--smrt-radius-medium
|
|
148
|
-
background: var(--smrt-color-surface-container
|
|
149
|
-
color: var(--smrt-color-on-surface
|
|
147
|
+
gap: var(--smrt-spacing-1);
|
|
148
|
+
padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
|
|
149
|
+
border-radius: var(--smrt-radius-medium);
|
|
150
|
+
background: var(--smrt-color-surface-container);
|
|
151
|
+
color: var(--smrt-color-on-surface);
|
|
150
152
|
word-break: break-word;
|
|
151
153
|
}
|
|
152
154
|
|
|
153
155
|
.mini-chat__bubble--own {
|
|
154
|
-
background: var(--smrt-color-primary-container
|
|
155
|
-
color: var(--smrt-color-on-primary-container
|
|
156
|
+
background: var(--smrt-color-primary-container);
|
|
157
|
+
color: var(--smrt-color-on-primary-container);
|
|
156
158
|
}
|
|
157
159
|
|
|
158
160
|
.mini-chat__sender {
|
|
159
161
|
font-size: var(--smrt-typography-label-small-size, 0.6875rem);
|
|
160
162
|
font-weight: var(--smrt-typography-weight-semibold, 600);
|
|
161
|
-
color: var(--smrt-color-primary
|
|
163
|
+
color: var(--smrt-color-primary);
|
|
162
164
|
line-height: 1;
|
|
163
165
|
}
|
|
164
166
|
|
|
@@ -168,7 +170,7 @@ $effect(() => {
|
|
|
168
170
|
|
|
169
171
|
.mini-chat__time {
|
|
170
172
|
font-size: var(--smrt-typography-label-small-size, 0.625rem);
|
|
171
|
-
color: var(--smrt-color-outline
|
|
173
|
+
color: var(--smrt-color-outline);
|
|
172
174
|
align-self: flex-end;
|
|
173
175
|
line-height: 1;
|
|
174
176
|
}
|
|
@@ -183,24 +185,24 @@ $effect(() => {
|
|
|
183
185
|
|
|
184
186
|
.mini-chat__empty-text {
|
|
185
187
|
font: var(--smrt-typography-body-small-font, 0.8125rem/1.4 sans-serif);
|
|
186
|
-
color: var(--smrt-color-outline
|
|
188
|
+
color: var(--smrt-color-outline);
|
|
187
189
|
}
|
|
188
190
|
|
|
189
191
|
/* :global() targets the Form primitive's rendered <form> (see #1589 scoping trap). */
|
|
190
192
|
:global(.mini-chat__input-bar) {
|
|
191
193
|
display: flex;
|
|
192
194
|
align-items: center;
|
|
193
|
-
gap: var(--smrt-spacing-1
|
|
194
|
-
padding: var(--smrt-spacing-2
|
|
195
|
-
border-top: 1px solid var(--smrt-color-outline-variant
|
|
196
|
-
background: var(--smrt-color-surface
|
|
195
|
+
gap: var(--smrt-spacing-1);
|
|
196
|
+
padding: var(--smrt-spacing-2);
|
|
197
|
+
border-top: 1px solid var(--smrt-color-outline-variant);
|
|
198
|
+
background: var(--smrt-color-surface);
|
|
197
199
|
}
|
|
198
200
|
|
|
199
201
|
/* Layout for the Input primitive's rendered <input> (tokenised styling comes
|
|
200
202
|
from the primitive; this only sizes/shapes it within the input bar). */
|
|
201
203
|
:global(.mini-chat__input) {
|
|
202
204
|
flex: 1;
|
|
203
|
-
border-radius: var(--smrt-radius-full
|
|
205
|
+
border-radius: var(--smrt-radius-full);
|
|
204
206
|
}
|
|
205
207
|
|
|
206
208
|
/* :global() pierces into the Button child's rendered <button> (see #1589).
|
|
@@ -209,9 +211,9 @@ $effect(() => {
|
|
|
209
211
|
width: 32px;
|
|
210
212
|
height: 32px;
|
|
211
213
|
padding: 0;
|
|
212
|
-
background: var(--smrt-color-primary
|
|
213
|
-
color: var(--smrt-color-on-primary
|
|
214
|
-
border-radius: var(--smrt-radius-full
|
|
214
|
+
background: var(--smrt-color-primary);
|
|
215
|
+
color: var(--smrt-color-on-primary);
|
|
216
|
+
border-radius: var(--smrt-radius-full);
|
|
215
217
|
flex-shrink: 0;
|
|
216
218
|
transition: opacity var(--smrt-duration-short2, 150ms);
|
|
217
219
|
}
|
|
@@ -221,7 +223,7 @@ $effect(() => {
|
|
|
221
223
|
}
|
|
222
224
|
|
|
223
225
|
:global(.mini-chat__input-bar .mini-chat__send-btn:not(:disabled):hover) {
|
|
224
|
-
background: var(--smrt-color-primary
|
|
226
|
+
background: var(--smrt-color-primary);
|
|
225
227
|
opacity: 0.85;
|
|
226
228
|
}
|
|
227
229
|
|
|
@@ -234,4 +236,5 @@ $effect(() => {
|
|
|
234
236
|
transition: none;
|
|
235
237
|
}
|
|
236
238
|
}
|
|
239
|
+
}
|
|
237
240
|
</style>
|
package/dist/sveltekit.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as clientRequestMessageId, n as ChatService, t as ChatClientRequestConflictError } from "./chunks/ChatService-DjGf2AoJ.js";
|
|
2
|
-
import { D as runAssistantTurn, E as createSessionContinuationStore, P as buildManifestToolCatalog, j as MAX_CLIENT_TOOL_RESULT_CHARS, v as ASSISTANT_TURN_GENERIC_ERROR, w as createAssistantTurnResponse, z as sanitizeClientToolDeclarations } from "./chunks/chat-stream-
|
|
2
|
+
import { D as runAssistantTurn, E as createSessionContinuationStore, P as buildManifestToolCatalog, j as MAX_CLIENT_TOOL_RESULT_CHARS, v as ASSISTANT_TURN_GENERIC_ERROR, w as createAssistantTurnResponse, z as sanitizeClientToolDeclarations } from "./chunks/chat-stream-D1xCl9IM.js";
|
|
3
3
|
import { getCurrentSessionPermissionContext, getRequestScopedDatabase } from "@happyvertical/smrt-users";
|
|
4
4
|
import { getConfig, loadConfig, resolveConfiguredAIProvider, toAIClientOptions } from "@happyvertical/smrt-config";
|
|
5
5
|
//#region src/sveltekit.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-chat",
|
|
3
|
-
"version": "0.55.
|
|
3
|
+
"version": "0.55.17",
|
|
4
4
|
"smrtJsdoc": "strict",
|
|
5
5
|
"description": "Chat rooms, DMs, threads, and agent conversations for the SMRT framework",
|
|
6
6
|
"type": "module",
|
|
@@ -85,18 +85,18 @@
|
|
|
85
85
|
"@happyvertical/animation": "0.5.0",
|
|
86
86
|
"@happyvertical/ai": "^0.103.4",
|
|
87
87
|
"@happyvertical/speech": "^0.103.4",
|
|
88
|
-
"@happyvertical/smrt-images": "0.55.
|
|
89
|
-
"@happyvertical/smrt-agents": "0.55.
|
|
90
|
-
"@happyvertical/smrt-assets": "0.55.
|
|
91
|
-
"@happyvertical/smrt-config": "0.55.
|
|
92
|
-
"@happyvertical/smrt-core": "0.55.
|
|
93
|
-
"@happyvertical/smrt-personas": "0.55.
|
|
94
|
-
"@happyvertical/smrt-profiles": "0.55.
|
|
95
|
-
"@happyvertical/smrt-reports": "0.55.
|
|
96
|
-
"@happyvertical/smrt-tenancy": "0.55.
|
|
97
|
-
"@happyvertical/smrt-types": "0.55.
|
|
98
|
-
"@happyvertical/smrt-ui": "0.55.
|
|
99
|
-
"@happyvertical/smrt-users": "0.55.
|
|
88
|
+
"@happyvertical/smrt-images": "0.55.17",
|
|
89
|
+
"@happyvertical/smrt-agents": "0.55.17",
|
|
90
|
+
"@happyvertical/smrt-assets": "0.55.17",
|
|
91
|
+
"@happyvertical/smrt-config": "0.55.17",
|
|
92
|
+
"@happyvertical/smrt-core": "0.55.17",
|
|
93
|
+
"@happyvertical/smrt-personas": "0.55.17",
|
|
94
|
+
"@happyvertical/smrt-profiles": "0.55.17",
|
|
95
|
+
"@happyvertical/smrt-reports": "0.55.17",
|
|
96
|
+
"@happyvertical/smrt-tenancy": "0.55.17",
|
|
97
|
+
"@happyvertical/smrt-types": "0.55.17",
|
|
98
|
+
"@happyvertical/smrt-ui": "0.55.17",
|
|
99
|
+
"@happyvertical/smrt-users": "0.55.17",
|
|
100
100
|
"@happyvertical/sql": "^0.103.4",
|
|
101
101
|
"@happyvertical/images": "^0.103.4",
|
|
102
102
|
"gsap": "^3.13.0"
|
|
@@ -110,10 +110,10 @@
|
|
|
110
110
|
}
|
|
111
111
|
},
|
|
112
112
|
"devDependencies": {
|
|
113
|
-
"@happyvertical/smrt-playground": "0.55.
|
|
114
|
-
"@happyvertical/smrt-scanner": "0.55.
|
|
115
|
-
"@happyvertical/smrt-vitest": "0.55.
|
|
116
|
-
"@happyvertical/smrt-web": "0.55.
|
|
113
|
+
"@happyvertical/smrt-playground": "0.55.17",
|
|
114
|
+
"@happyvertical/smrt-scanner": "0.55.17",
|
|
115
|
+
"@happyvertical/smrt-vitest": "0.55.17",
|
|
116
|
+
"@happyvertical/smrt-web": "0.55.17",
|
|
117
117
|
"@mlc-ai/web-llm": "^0.2.85",
|
|
118
118
|
"bitgpu": "0.19.1",
|
|
119
119
|
"@sveltejs/kit": "2.69.1",
|