@happyvertical/smrt-chat 0.55.21 → 0.55.23

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 (29) hide show
  1. package/dist/chunks/{chat-stream-ntLTubEY.js → chat-stream-DleXRGM7.js} +2 -2
  2. package/dist/chunks/{chat-stream-ntLTubEY.js.map → chat-stream-DleXRGM7.js.map} +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/manifest.json +1 -1
  5. package/dist/smrt-knowledge.json +3 -3
  6. package/dist/svelte/components/agent/AgentChat.svelte +2 -2
  7. package/dist/svelte/components/agent/AgentSelector.svelte +1 -1
  8. package/dist/svelte/components/agent/AgentSessionPanel.svelte +2 -2
  9. package/dist/svelte/components/agent/ToolCallDisplay.svelte +2 -2
  10. package/dist/svelte/components/assistant/AssistantChoiceCards.svelte +1 -1
  11. package/dist/svelte/components/assistant/AssistantComposer.svelte +3 -3
  12. package/dist/svelte/components/assistant/AssistantDock.svelte +7 -7
  13. package/dist/svelte/components/assistant/AssistantThreadList.svelte +2 -2
  14. package/dist/svelte/components/assistant/FloatingAssistant.svelte +2 -2
  15. package/dist/svelte/components/dialogs/RoomCreateDialog.svelte +1 -1
  16. package/dist/svelte/components/dialogs/SearchMessages.svelte +4 -4
  17. package/dist/svelte/components/helper/HelperControlPanel.svelte +4 -4
  18. package/dist/svelte/components/layout/ChatLayout.svelte +2 -2
  19. package/dist/svelte/components/layout/MemberList.svelte +2 -2
  20. package/dist/svelte/components/layout/RoomHeader.svelte +1 -1
  21. package/dist/svelte/components/messages/MessageInput.svelte +2 -2
  22. package/dist/svelte/components/messages/MessageItem.svelte +3 -3
  23. package/dist/svelte/components/messages/ThreadPanel.svelte +2 -2
  24. package/dist/svelte/components/shared/FileUpload.svelte +1 -1
  25. package/dist/svelte/components/shared/LinkPreview.svelte +1 -1
  26. package/dist/svelte/components/shared/MentionAutocomplete.svelte +1 -1
  27. package/dist/svelte/components/tabs/MiniChat.svelte +1 -1
  28. package/dist/sveltekit.js +1 -1
  29. package/package.json +17 -17
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { c as ChatThread, d as ChatParticipant, f as ChatMessage, i as clientRequestMessageId, l as ChatRoom, n as ChatService, o as VoiceSessionCollection, p as AgentSession, s as VoiceSession, t as ChatClientRequestConflictError, u as ChatReaction } from "./chunks/ChatService-DjGf2AoJ.js";
2
- import { A as MAX_CLIENT_TOOLS, B as RUNTIME_REPORT_DEFINE_FUNCTION_NAME, C as SESSION_CONTINUATIONS_FIELD, D as runAssistantTurn, E as createSessionContinuationStore, F as classifyToolError, G as RUNTIME_REPORT_RUN_TOOL_SLUG, H as RUNTIME_REPORT_LIST_FUNCTION_NAME, I as invokeManifestTool, J as createRuntimeReportTools, K as RUNTIME_REPORT_SOURCES_FUNCTION_NAME, L as manifestToolToAITool, M as MAX_CLIENT_TOOL_SCHEMA_BYTES, N as appendClientToolResults, O as CLIENT_TOOL_RESULT_GUIDANCE, P as buildManifestToolCatalog, R as runToolLoop, S as DEFAULT_CONTINUATION_TTL_MS, T as createMemoryContinuationStore, U as RUNTIME_REPORT_LIST_TOOL_SLUG, V as RUNTIME_REPORT_DEFINE_TOOL_SLUG, W as RUNTIME_REPORT_RUN_FUNCTION_NAME, _ as runPersonaConversationTurn, a as MAX_CHAT_STREAM_CONTENT_LENGTH, b as CONTINUATION_CLAIM_TTL_MS, c as encodeChatStreamEvent, d as conversationPersonaFromAgentPersona, f as conversationPersonaFromResolved, g as resolveConversationInstructions, h as recallPersonaMemory, i as DEFAULT_CHAT_STREAM_HEARTBEAT_MS, j as MAX_CLIENT_TOOL_RESULT_CHARS, k as DEFAULT_MAX_STEPS, l as runChatConversationStream, m as principalBindingFor, n as ChatStreamError, o as MAX_CHAT_STREAM_MESSAGES, p as formatRecalledMemory, q as RUNTIME_REPORT_SOURCES_TOOL_SLUG, r as ChatStreamUnauthorizedError, s as createChatStreamHandler, t as ChatStreamBadRequestError, u as bindPersonaToSession, v as ASSISTANT_TURN_GENERIC_ERROR, w as createAssistantTurnResponse, x as DEFAULT_ASSISTANT_TURN_HEARTBEAT_MS, y as AssistantTurnUserError, z as sanitizeClientToolDeclarations } from "./chunks/chat-stream-ntLTubEY.js";
2
+ import { A as MAX_CLIENT_TOOLS, B as RUNTIME_REPORT_DEFINE_FUNCTION_NAME, C as SESSION_CONTINUATIONS_FIELD, D as runAssistantTurn, E as createSessionContinuationStore, F as classifyToolError, G as RUNTIME_REPORT_RUN_TOOL_SLUG, H as RUNTIME_REPORT_LIST_FUNCTION_NAME, I as invokeManifestTool, J as createRuntimeReportTools, K as RUNTIME_REPORT_SOURCES_FUNCTION_NAME, L as manifestToolToAITool, M as MAX_CLIENT_TOOL_SCHEMA_BYTES, N as appendClientToolResults, O as CLIENT_TOOL_RESULT_GUIDANCE, P as buildManifestToolCatalog, R as runToolLoop, S as DEFAULT_CONTINUATION_TTL_MS, T as createMemoryContinuationStore, U as RUNTIME_REPORT_LIST_TOOL_SLUG, V as RUNTIME_REPORT_DEFINE_TOOL_SLUG, W as RUNTIME_REPORT_RUN_FUNCTION_NAME, _ as runPersonaConversationTurn, a as MAX_CHAT_STREAM_CONTENT_LENGTH, b as CONTINUATION_CLAIM_TTL_MS, c as encodeChatStreamEvent, d as conversationPersonaFromAgentPersona, f as conversationPersonaFromResolved, g as resolveConversationInstructions, h as recallPersonaMemory, i as DEFAULT_CHAT_STREAM_HEARTBEAT_MS, j as MAX_CLIENT_TOOL_RESULT_CHARS, k as DEFAULT_MAX_STEPS, l as runChatConversationStream, m as principalBindingFor, n as ChatStreamError, o as MAX_CHAT_STREAM_MESSAGES, p as formatRecalledMemory, q as RUNTIME_REPORT_SOURCES_TOOL_SLUG, r as ChatStreamUnauthorizedError, s as createChatStreamHandler, t as ChatStreamBadRequestError, u as bindPersonaToSession, v as ASSISTANT_TURN_GENERIC_ERROR, w as createAssistantTurnResponse, x as DEFAULT_ASSISTANT_TURN_HEARTBEAT_MS, y as AssistantTurnUserError, z as sanitizeClientToolDeclarations } from "./chunks/chat-stream-DleXRGM7.js";
3
3
  import { i as matchesToolAllowList, n as encodeAssistantTurnEvent, r as readAssistantTurnStream, t as AssistantTurnStreamError } from "./chunks/assistant-turn-events-BbZUf-Ju.js";
4
4
  import { a as createServerDataSurfaceBridge, i as createDataSurfaceCommandBridge, n as DEFAULT_DATA_SURFACE_BRIDGE_TTL_MS, r as createDataSurfaceBridge, t as DATA_SURFACE_BRIDGE_VERSION } from "./chunks/data-surface-bridge-BJomMxjS.js";
5
5
  import { HELPER_CLEARED_PREFERENCES, HELPER_PREFERENCES_VERSION, helperPreferenceFields, isHelperClearedPreferences, parseHelperPreferences } from "./helper-preferences.js";
@@ -2,7 +2,7 @@
2
2
  "version": "1.0.0",
3
3
  "timestamp": 0,
4
4
  "packageName": "@happyvertical/smrt-chat",
5
- "packageVersion": "0.55.21",
5
+ "packageVersion": "0.55.23",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-chat:AgentSessionCollection": {
8
8
  "name": "agentsessioncollection",
@@ -3,12 +3,12 @@
3
3
  "sensitiveFieldsExcluded": true,
4
4
  "generatedAt": "1970-01-01T00:00:00.000Z",
5
5
  "packageName": "@happyvertical/smrt-chat",
6
- "packageVersion": "0.55.21",
6
+ "packageVersion": "0.55.23",
7
7
  "sourceManifestPath": "dist/manifest.json",
8
8
  "agentDocPath": "AGENTS.md",
9
9
  "sourceHashes": {
10
- "manifest": "a46de31aae51f1b1895e2d6060981b9e70d9244e224a43f2d285dcb7942df230",
11
- "packageJson": "c499860cfba48752dfaa6fa8f53da0c2221b3ee4dce82a9fab60ca6d51e2363e",
10
+ "manifest": "240d853bf863b40f27a8dbc46daaeac4e2be5ddaa42c16467a11e596b5f49944",
11
+ "packageJson": "44d2c9a95c1a8b5ec1d928b2d5efc2f38fd54d32bb104eca0524cf50f9edf215",
12
12
  "agents": "aa720d6aa1fa097a61d56b1dab61b7857a8d4ee41920443aa1f085016488f90a",
13
13
  "moduleDoc:agents/dev-workbench.md": "f07a428519e8cca4a46371da0a3b33b9c8d3102f1d9056e4c8efba3c0b702048",
14
14
  "moduleDoc:agents/overview-tools.md": "752a4afb6b57a2e9224f3c65a98b0deb23cda87371f01ac0566f0887e9bb12da",
@@ -404,7 +404,7 @@ $effect(() => {
404
404
  padding: var(--smrt-spacing-1) var(--smrt-spacing-2);
405
405
  font-size: var(--smrt-typography-label-small-size, 0.625rem);
406
406
  font-weight: var(--smrt-typography-weight-semibold, 600);
407
- border: 1px solid var(--smrt-color-outline-variant);
407
+ border: var(--smrt-hairline);
408
408
  border-radius: var(--smrt-radius-full);
409
409
  background: none;
410
410
  color: var(--smrt-color-on-surface-variant);
@@ -436,7 +436,7 @@ $effect(() => {
436
436
  align-items: center;
437
437
  justify-content: space-between;
438
438
  padding: var(--smrt-spacing-3) var(--smrt-spacing-4);
439
- border-bottom: 1px solid var(--smrt-color-outline-variant);
439
+ border-bottom: var(--smrt-hairline);
440
440
  }
441
441
 
442
442
  .diff-dialog__header h4 {
@@ -90,7 +90,7 @@ const { t } = useI18n();
90
90
  gap: var(--smrt-spacing-3);
91
91
  padding: var(--smrt-spacing-4);
92
92
  background: var(--smrt-color-surface-container-low);
93
- border: 1px solid var(--smrt-color-outline-variant);
93
+ border: var(--smrt-hairline);
94
94
  border-radius: var(--smrt-radius-large);
95
95
  cursor: pointer;
96
96
  text-align: left;
@@ -138,7 +138,7 @@ const statusLabel: Record<string, string> = {
138
138
  height: 100%;
139
139
  width: 280px;
140
140
  background: var(--smrt-color-surface-container);
141
- border-right: 1px solid var(--smrt-color-outline-variant);
141
+ border-right: var(--smrt-hairline);
142
142
  overflow: hidden;
143
143
  }
144
144
 
@@ -147,7 +147,7 @@ const statusLabel: Record<string, string> = {
147
147
  align-items: center;
148
148
  justify-content: space-between;
149
149
  padding: var(--smrt-spacing-4);
150
- border-bottom: 1px solid var(--smrt-color-outline-variant);
150
+ border-bottom: var(--smrt-hairline);
151
151
  flex-shrink: 0;
152
152
  }
153
153
 
@@ -192,7 +192,7 @@ function formatDuration(ms: number | undefined): string {
192
192
  @layer smrt.reset, smrt.structure, smrt.theme;
193
193
  @layer smrt.theme {
194
194
  .tool-call {
195
- border: 1px solid var(--smrt-color-outline-variant);
195
+ border: var(--smrt-hairline);
196
196
  border-radius: var(--smrt-radius-medium);
197
197
  overflow: hidden;
198
198
  font-family: var(--smrt-font-family, system-ui);
@@ -325,7 +325,7 @@ function formatDuration(ms: number | undefined): string {
325
325
  display: flex;
326
326
  flex-direction: column;
327
327
  gap: var(--smrt-spacing-2);
328
- border-top: 1px solid var(--smrt-color-outline-variant);
328
+ border-top: var(--smrt-hairline);
329
329
  background: var(--smrt-color-surface);
330
330
  }
331
331
 
@@ -175,7 +175,7 @@ const { t } = useI18n();
175
175
  gap: 0.5rem;
176
176
  margin: 0.5rem 0;
177
177
  padding: 0.75rem;
178
- border: 1px solid var(--smrt-color-outline-variant);
178
+ border: var(--smrt-hairline);
179
179
  border-radius: 0.75rem;
180
180
  background: var(--smrt-color-surface-container-low);
181
181
  }
@@ -503,7 +503,7 @@ function removeAttachment(id: string) {
503
503
  @layer smrt.reset, smrt.structure, smrt.theme;
504
504
  @layer smrt.theme {
505
505
  .assistant-composer {
506
- border-top: 1px solid var(--smrt-color-outline-variant);
506
+ border-top: var(--smrt-hairline);
507
507
  background: var(--smrt-color-surface);
508
508
  padding: var(--smrt-spacing-2);
509
509
  flex-shrink: 0;
@@ -525,7 +525,7 @@ function removeAttachment(id: string) {
525
525
  width: 44px;
526
526
  height: 44px;
527
527
  padding: 0;
528
- border: 1px solid var(--smrt-color-outline-variant);
528
+ border: var(--smrt-hairline);
529
529
  border-radius: var(--smrt-radius-full);
530
530
  background: var(--smrt-color-surface-container-low);
531
531
  color: var(--smrt-color-on-surface-variant);
@@ -602,7 +602,7 @@ function removeAttachment(id: string) {
602
602
  padding: var(--smrt-spacing-1) var(--smrt-spacing-2);
603
603
  border-radius: var(--smrt-radius-full);
604
604
  background: var(--smrt-color-surface-container-low);
605
- border: 1px solid var(--smrt-color-outline-variant);
605
+ border: var(--smrt-hairline);
606
606
  font: var(--smrt-typography-label-small-font, 500 0.6875rem/1 sans-serif);
607
607
  color: var(--smrt-color-on-surface);
608
608
  max-width: 160px;
@@ -1021,7 +1021,7 @@ async function handleConfirmAction(requestId: string) {
1021
1021
  justify-content: space-between;
1022
1022
  gap: 0.5rem;
1023
1023
  padding: 0.35rem 0.75rem;
1024
- border-top: 1px solid var(--smrt-color-outline-variant);
1024
+ border-top: var(--smrt-hairline);
1025
1025
  font-size: var(--smrt-typography-body-medium-size, 0.85rem);
1026
1026
  color: var(--smrt-color-on-surface-variant);
1027
1027
  }
@@ -1032,14 +1032,14 @@ async function handleConfirmAction(requestId: string) {
1032
1032
  justify-content: space-between;
1033
1033
  gap: 0.5rem;
1034
1034
  padding: 0.35rem 0.75rem;
1035
- border-bottom: 1px solid var(--smrt-color-outline-variant);
1035
+ border-bottom: var(--smrt-hairline);
1036
1036
  font-size: var(--smrt-typography-body-medium-size, 0.85rem);
1037
1037
  }
1038
1038
 
1039
1039
  .assistant-dock-tool-request {
1040
1040
  margin: 0.5rem 0;
1041
1041
  padding: 0.75rem;
1042
- border: 1px solid var(--smrt-color-outline-variant);
1042
+ border: var(--smrt-hairline);
1043
1043
  border-radius: var(--smrt-radius-md);
1044
1044
  background: var(--smrt-color-surface-container);
1045
1045
  }
@@ -1099,7 +1099,7 @@ async function handleConfirmAction(requestId: string) {
1099
1099
  min-height: 44px;
1100
1100
  padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
1101
1101
  border: none;
1102
- border-bottom: 1px solid var(--smrt-color-outline-variant);
1102
+ border-bottom: var(--smrt-hairline);
1103
1103
  background: var(--smrt-color-surface-container-low);
1104
1104
  color: var(--smrt-color-on-surface);
1105
1105
  font: var(--smrt-typography-label-large-font, 500 0.875rem/1.25 sans-serif);
@@ -1132,7 +1132,7 @@ async function handleConfirmAction(requestId: string) {
1132
1132
  display: flex;
1133
1133
  max-width: none;
1134
1134
  max-height: 40%;
1135
- border-bottom: 1px solid var(--smrt-color-outline-variant);
1135
+ border-bottom: var(--smrt-hairline);
1136
1136
  }
1137
1137
 
1138
1138
  .assistant-dock-threads > :global(.assistant-thread-list) {
@@ -1156,7 +1156,7 @@ async function handleConfirmAction(requestId: string) {
1156
1156
  font: var(--smrt-typography-body-small-font, 0.8125rem/1.4 sans-serif);
1157
1157
  color: var(--smrt-color-on-surface-variant);
1158
1158
  background: var(--smrt-color-surface-container-low);
1159
- border-bottom: 1px solid var(--smrt-color-outline-variant);
1159
+ border-bottom: var(--smrt-hairline);
1160
1160
  }
1161
1161
 
1162
1162
  .assistant-dock-scroll {
@@ -1349,7 +1349,7 @@ async function handleConfirmAction(requestId: string) {
1349
1349
  font: var(--smrt-typography-body-small-font, 0.8125rem/1.4 sans-serif);
1350
1350
  color: var(--smrt-color-on-error-container);
1351
1351
  background: var(--smrt-color-error-container);
1352
- border-bottom: 1px solid var(--smrt-color-outline-variant);
1352
+ border-bottom: var(--smrt-hairline);
1353
1353
  }
1354
1354
 
1355
1355
  .assistant-dock-single-actions {
@@ -67,7 +67,7 @@ const { threads, activeThreadId = null, onselect, oncreate }: Props = $props();
67
67
  .assistant-thread-list {
68
68
  display: flex;
69
69
  flex-direction: column;
70
- border-right: 1px solid var(--smrt-color-outline-variant);
70
+ border-right: var(--smrt-hairline);
71
71
  background: var(--smrt-color-surface-container-low);
72
72
  min-width: 160px;
73
73
  overflow-y: auto;
@@ -116,7 +116,7 @@ const { threads, activeThreadId = null, onselect, oncreate }: Props = $props();
116
116
  }
117
117
 
118
118
  /* The Button's inner row: title left (clipped with an ellipsis), count right. */
119
- :global(.assistant-thread-list-item > .content) {
119
+ :global(.assistant-thread-list-item > [data-smrt-part="label"]) {
120
120
  flex: 1 1 auto;
121
121
  min-width: 0;
122
122
  display: flex;
@@ -231,7 +231,7 @@ function handleKeydown(event: KeyboardEvent) {
231
231
 
232
232
  .floating-assistant :global(.floating-assistant-launcher),
233
233
  .floating-assistant :global(.floating-assistant-collapse) {
234
- border: 1px solid var(--smrt-color-outline, currentColor);
234
+ border: var(--smrt-hairline-strong);
235
235
  border-radius: var(--smrt-radius-full);
236
236
  background: var(--smrt-color-surface, Canvas);
237
237
  color: var(--smrt-color-on-surface, CanvasText);
@@ -266,7 +266,7 @@ function handleKeydown(event: KeyboardEvent) {
266
266
  max-block-size: min(42rem, calc(100dvh - 6rem));
267
267
  overflow: auto;
268
268
  padding: 0.75rem;
269
- border: 1px solid var(--smrt-color-outline, currentColor);
269
+ border: var(--smrt-hairline-strong);
270
270
  border-radius: 1rem;
271
271
  background: var(--smrt-color-surface, Canvas);
272
272
  color: var(--smrt-color-on-surface, CanvasText);
@@ -237,7 +237,7 @@ $effect(() => {
237
237
  align-items: flex-start;
238
238
  gap: 0.75rem;
239
239
  padding: 0.75rem;
240
- border: 1px solid var(--smrt-color-outline-variant);
240
+ border: var(--smrt-hairline);
241
241
  border-radius: var(--smrt-radius-medium, 0.5rem);
242
242
  cursor: pointer;
243
243
  transition: border-color var(--smrt-duration-short2, 150ms),
@@ -229,7 +229,7 @@ $effect(() => {
229
229
  width: 320px;
230
230
  height: 100%;
231
231
  background: var(--smrt-color-surface);
232
- border-left: 1px solid var(--smrt-color-outline-variant);
232
+ border-left: var(--smrt-hairline);
233
233
  overflow: hidden;
234
234
  }
235
235
 
@@ -238,7 +238,7 @@ $effect(() => {
238
238
  align-items: center;
239
239
  justify-content: space-between;
240
240
  padding: 0.75rem 1rem;
241
- border-bottom: 1px solid var(--smrt-color-outline-variant);
241
+ border-bottom: var(--smrt-hairline);
242
242
  }
243
243
 
244
244
  .search-panel__title {
@@ -270,7 +270,7 @@ $effect(() => {
270
270
  /* :global() targets the Form primitive's rendered <form> (see #1589 scoping trap). */
271
271
  :global(.search-form) {
272
272
  padding: 0.75rem 1rem;
273
- border-bottom: 1px solid var(--smrt-color-outline-variant);
273
+ border-bottom: var(--smrt-hairline);
274
274
  }
275
275
 
276
276
  .search-input-wrap {
@@ -278,7 +278,7 @@ $effect(() => {
278
278
  align-items: center;
279
279
  gap: 0.5rem;
280
280
  padding: 0.5rem 0.75rem;
281
- border: 1px solid var(--smrt-color-outline);
281
+ border: var(--smrt-hairline-strong);
282
282
  border-radius: var(--smrt-radius-large, 1rem);
283
283
  background: var(--smrt-color-surface-container);
284
284
  transition: border-color var(--smrt-duration-short2, 150ms);
@@ -393,12 +393,12 @@ async function customSaved(offering: HelperOffering) {
393
393
  fieldset { display: grid; gap: var(--smrt-spacing-3); border: 0; margin: 0; padding: 0; }
394
394
  label { display: grid; gap: var(--smrt-spacing-1); font: var(--smrt-typography-label-large-font); }
395
395
  .gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: var(--smrt-spacing-2); }
396
- .gallery :global(.button) { min-height: 3rem; border-color: var(--smrt-color-outline); background: var(--smrt-color-surface); color: inherit; }
397
- .gallery :global(.button.selected) { border-color: var(--smrt-color-primary); background: var(--smrt-color-primary-container); }
398
- .preview { min-height: 5rem; display: grid; place-items: center; overflow: hidden; border: 1px solid var(--smrt-color-outline-variant); border-radius: var(--smrt-radius-small); background: var(--smrt-color-surface-container-low); }
396
+ .gallery :global([data-smrt-component="Button"]) { min-height: 3rem; border-color: var(--smrt-hairline-strong-color); background: var(--smrt-color-surface); color: inherit; }
397
+ .gallery :global([data-smrt-component="Button"].selected) { border-color: var(--smrt-color-primary); background: var(--smrt-color-primary-container); }
398
+ .preview { min-height: 5rem; display: grid; place-items: center; overflow: hidden; border: var(--smrt-hairline); border-radius: var(--smrt-radius-small); background: var(--smrt-color-surface-container-low); }
399
399
  .preview :global(svg), .preview :global(img) { max-width: 100%; max-height: 12rem; }
400
400
  .setup-actions, .actions { display: flex; flex-wrap: wrap; gap: var(--smrt-spacing-2); }
401
- .custom-setup { display: grid; gap: var(--smrt-spacing-3); padding: var(--smrt-spacing-3); border: 1px solid var(--smrt-color-outline-variant); border-radius: var(--smrt-radius-small); }
401
+ .custom-setup { display: grid; gap: var(--smrt-spacing-3); padding: var(--smrt-spacing-3); border: var(--smrt-hairline); border-radius: var(--smrt-radius-small); }
402
402
  .message { margin: 0; color: var(--smrt-color-on-surface-variant); }
403
403
  }
404
404
  </style>
@@ -114,7 +114,7 @@ function handlePointerUp() {
114
114
  display: flex;
115
115
  flex-direction: column;
116
116
  background: var(--smrt-color-surface-container);
117
- border-right: 1px solid var(--smrt-color-outline-variant);
117
+ border-right: var(--smrt-hairline);
118
118
  overflow-y: auto;
119
119
  overflow-x: hidden;
120
120
  }
@@ -157,7 +157,7 @@ function handlePointerUp() {
157
157
  width: 100%;
158
158
  max-height: 14rem;
159
159
  border-right: 0;
160
- border-bottom: 1px solid var(--smrt-color-outline-variant);
160
+ border-bottom: var(--smrt-hairline);
161
161
  }
162
162
 
163
163
  .chat-layout__resize-handle {
@@ -217,7 +217,7 @@ function getRoleBadgeLabel(role: string): string {
217
217
  width: 240px;
218
218
  height: 100%;
219
219
  background: var(--smrt-color-surface-container);
220
- border-left: 1px solid var(--smrt-color-outline-variant);
220
+ border-left: var(--smrt-hairline);
221
221
  overflow: hidden;
222
222
  }
223
223
 
@@ -226,7 +226,7 @@ function getRoleBadgeLabel(role: string): string {
226
226
  align-items: center;
227
227
  gap: 0.375rem;
228
228
  padding: 0.75rem 1rem;
229
- border-bottom: 1px solid var(--smrt-color-outline-variant);
229
+ border-bottom: var(--smrt-hairline);
230
230
  }
231
231
 
232
232
  .member-list__title {
@@ -127,7 +127,7 @@ const roomTypeLabel = $derived.by(() => {
127
127
  gap: 1rem;
128
128
  padding: 0.75rem 1rem;
129
129
  background: var(--smrt-color-surface);
130
- border-bottom: 1px solid var(--smrt-color-outline-variant);
130
+ border-bottom: var(--smrt-hairline);
131
131
  min-height: 3.5rem;
132
132
  }
133
133
 
@@ -120,7 +120,7 @@ function handleInput(event: Event) {
120
120
  .message-input {
121
121
  display: flex;
122
122
  flex-direction: column;
123
- border-top: 1px solid var(--smrt-color-outline-variant);
123
+ border-top: var(--smrt-hairline);
124
124
  background: var(--smrt-color-surface);
125
125
  }
126
126
 
@@ -135,7 +135,7 @@ function handleInput(event: Event) {
135
135
  gap: var(--smrt-spacing-2, 0.375rem);
136
136
  padding: var(--smrt-spacing-2, 0.375rem) var(--smrt-spacing-4, 1rem);
137
137
  background: var(--smrt-color-surface-container-low);
138
- border-bottom: 1px solid var(--smrt-color-outline-variant);
138
+ border-bottom: var(--smrt-hairline);
139
139
  }
140
140
 
141
141
  .message-input__reply-body {
@@ -409,7 +409,7 @@ function handleEscape(event: KeyboardEvent) {
409
409
  .message-item__reactions :global(.message-item__reaction) {
410
410
  gap: var(--smrt-spacing-1);
411
411
  padding: var(--smrt-spacing-1) var(--smrt-spacing-2);
412
- border: 1px solid var(--smrt-color-outline-variant);
412
+ border: var(--smrt-hairline);
413
413
  border-radius: var(--smrt-radius-full);
414
414
  background: var(--smrt-color-surface);
415
415
  font-size: var(--smrt-typography-label-medium-size, 0.75rem);
@@ -461,7 +461,7 @@ function handleEscape(event: KeyboardEvent) {
461
461
  position: absolute;
462
462
  top: 0;
463
463
  right: var(--smrt-spacing-4, 1rem);
464
- border: 1px solid var(--smrt-color-outline-variant);
464
+ border: var(--smrt-hairline);
465
465
  border-radius: var(--smrt-radius-small, 0.25rem);
466
466
  background: var(--smrt-color-surface);
467
467
  color: var(--smrt-color-on-surface-variant);
@@ -502,7 +502,7 @@ function handleEscape(event: KeyboardEvent) {
502
502
  top: 0;
503
503
  right: var(--smrt-spacing-4, 1rem);
504
504
  background: var(--smrt-color-surface);
505
- border: 1px solid var(--smrt-color-outline-variant);
505
+ border: var(--smrt-hairline);
506
506
  border-radius: var(--smrt-radius-small, 0.25rem);
507
507
  padding: var(--smrt-spacing-1);
508
508
  box-shadow: var(--smrt-elevation-1, 0 1px 3px rgba(0, 0, 0, 0.12));
@@ -86,7 +86,7 @@ const replyCount = $derived(
86
86
  height: 100%;
87
87
  width: 100%;
88
88
  background: var(--smrt-color-surface);
89
- border-left: 1px solid var(--smrt-color-outline-variant);
89
+ border-left: var(--smrt-hairline);
90
90
  }
91
91
 
92
92
  .thread-panel__header {
@@ -94,7 +94,7 @@ const replyCount = $derived(
94
94
  align-items: center;
95
95
  gap: var(--smrt-spacing-3, 0.75rem);
96
96
  padding: var(--smrt-spacing-4, 1rem);
97
- border-bottom: 1px solid var(--smrt-color-outline-variant);
97
+ border-bottom: var(--smrt-hairline);
98
98
  flex-shrink: 0;
99
99
  }
100
100
 
@@ -263,7 +263,7 @@ function getFileIcon(type: string): string {
263
263
  padding: var(--smrt-spacing-2);
264
264
  background: var(--smrt-color-surface-container-low);
265
265
  border-radius: var(--smrt-radius-medium);
266
- border: 1px solid var(--smrt-color-outline-variant);
266
+ border: var(--smrt-hairline);
267
267
  }
268
268
 
269
269
  .file-upload__file {
@@ -48,7 +48,7 @@ const hostname = $derived.by(() => {
48
48
  @layer smrt.theme {
49
49
  .link-preview {
50
50
  display: flex;
51
- border: 1px solid var(--smrt-color-outline-variant);
51
+ border: var(--smrt-hairline);
52
52
  border-radius: var(--smrt-radius-medium, 0.5rem);
53
53
  overflow: hidden;
54
54
  text-decoration: none;
@@ -120,7 +120,7 @@ function highlightMatch(
120
120
  max-height: 240px;
121
121
  overflow-y: auto;
122
122
  background: var(--smrt-color-surface);
123
- border: 1px solid var(--smrt-color-outline-variant);
123
+ border: var(--smrt-hairline);
124
124
  border-radius: var(--smrt-radius-medium);
125
125
  box-shadow: var(--smrt-elevation-2, 0 2px 8px rgba(0, 0, 0, 0.15));
126
126
  z-index: var(--smrt-z-index-dropdown, 1000);
@@ -194,7 +194,7 @@ $effect(() => {
194
194
  align-items: center;
195
195
  gap: var(--smrt-spacing-1);
196
196
  padding: var(--smrt-spacing-2);
197
- border-top: 1px solid var(--smrt-color-outline-variant);
197
+ border-top: var(--smrt-hairline);
198
198
  background: var(--smrt-color-surface);
199
199
  }
200
200
 
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-ntLTubEY.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-DleXRGM7.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.21",
3
+ "version": "0.55.23",
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.5",
87
87
  "@happyvertical/speech": "^0.103.5",
88
- "@happyvertical/smrt-images": "0.55.21",
89
- "@happyvertical/smrt-agents": "0.55.21",
90
- "@happyvertical/smrt-assets": "0.55.21",
91
- "@happyvertical/smrt-config": "0.55.21",
92
- "@happyvertical/smrt-core": "0.55.21",
93
- "@happyvertical/smrt-personas": "0.55.21",
94
- "@happyvertical/smrt-profiles": "0.55.21",
95
- "@happyvertical/smrt-reports": "0.55.21",
96
- "@happyvertical/smrt-tenancy": "0.55.21",
97
- "@happyvertical/smrt-types": "0.55.21",
98
- "@happyvertical/smrt-ui": "0.55.21",
99
- "@happyvertical/smrt-users": "0.55.21",
88
+ "@happyvertical/smrt-images": "0.55.23",
89
+ "@happyvertical/smrt-agents": "0.55.23",
90
+ "@happyvertical/smrt-assets": "0.55.23",
91
+ "@happyvertical/smrt-config": "0.55.23",
92
+ "@happyvertical/smrt-core": "0.55.23",
93
+ "@happyvertical/smrt-personas": "0.55.23",
94
+ "@happyvertical/smrt-profiles": "0.55.23",
95
+ "@happyvertical/smrt-reports": "0.55.23",
96
+ "@happyvertical/smrt-tenancy": "0.55.23",
97
+ "@happyvertical/smrt-types": "0.55.23",
98
+ "@happyvertical/smrt-ui": "0.55.23",
99
+ "@happyvertical/smrt-users": "0.55.23",
100
100
  "@happyvertical/sql": "^0.103.5",
101
101
  "@happyvertical/images": "^0.103.5",
102
102
  "gsap": "^3.13.0"
@@ -110,10 +110,10 @@
110
110
  }
111
111
  },
112
112
  "devDependencies": {
113
- "@happyvertical/smrt-playground": "0.55.21",
114
- "@happyvertical/smrt-scanner": "0.55.21",
115
- "@happyvertical/smrt-vitest": "0.55.21",
116
- "@happyvertical/smrt-web": "0.55.21",
113
+ "@happyvertical/smrt-playground": "0.55.23",
114
+ "@happyvertical/smrt-scanner": "0.55.23",
115
+ "@happyvertical/smrt-vitest": "0.55.23",
116
+ "@happyvertical/smrt-web": "0.55.23",
117
117
  "@mlc-ai/web-llm": "^0.2.85",
118
118
  "bitgpu": "0.19.1",
119
119
  "@sveltejs/kit": "2.69.1",