@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.
Files changed (39) hide show
  1. package/dist/chunks/{chat-stream-j6VuNo3t.js → chat-stream-D1xCl9IM.js} +2 -2
  2. package/dist/chunks/{chat-stream-j6VuNo3t.js.map → chat-stream-D1xCl9IM.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 +70 -67
  7. package/dist/svelte/components/agent/AgentSelector.svelte +26 -23
  8. package/dist/svelte/components/agent/AgentSessionPanel.svelte +47 -44
  9. package/dist/svelte/components/agent/ToolCallDisplay.svelte +52 -49
  10. package/dist/svelte/components/assistant/AssistantChoiceCards.svelte +19 -17
  11. package/dist/svelte/components/assistant/AssistantComposer.svelte +31 -28
  12. package/dist/svelte/components/assistant/AssistantDock.svelte +69 -66
  13. package/dist/svelte/components/assistant/AssistantThreadList.svelte +23 -20
  14. package/dist/svelte/components/assistant/FloatingAssistant.svelte +6 -3
  15. package/dist/svelte/components/assistant/captions/CaptionOverlay.svelte +4 -1
  16. package/dist/svelte/components/assistant/captions/HeardCaptions.svelte +5 -2
  17. package/dist/svelte/components/assistant/captions/SpokenCaptions.svelte +5 -2
  18. package/dist/svelte/components/dialogs/RoomCreateDialog.svelte +13 -10
  19. package/dist/svelte/components/dialogs/SearchMessages.svelte +35 -32
  20. package/dist/svelte/components/helper/HelperControlPanel.svelte +4 -1
  21. package/dist/svelte/components/layout/ChatLayout.svelte +14 -10
  22. package/dist/svelte/components/layout/MemberList.svelte +30 -27
  23. package/dist/svelte/components/layout/RoomHeader.svelte +19 -16
  24. package/dist/svelte/components/layout/RoomList.svelte +26 -23
  25. package/dist/svelte/components/messages/MessageInput.svelte +20 -17
  26. package/dist/svelte/components/messages/MessageItem.svelte +45 -42
  27. package/dist/svelte/components/messages/MessageList.svelte +8 -5
  28. package/dist/svelte/components/messages/ThreadPanel.svelte +15 -12
  29. package/dist/svelte/components/shared/FileUpload.svelte +39 -36
  30. package/dist/svelte/components/shared/LinkPreview.svelte +9 -6
  31. package/dist/svelte/components/shared/MentionAutocomplete.svelte +16 -13
  32. package/dist/svelte/components/shared/ReadReceipts.svelte +13 -10
  33. package/dist/svelte/components/shared/UserPresence.svelte +10 -7
  34. package/dist/svelte/components/tabs/ChatTab.svelte +26 -23
  35. package/dist/svelte/components/tabs/ChatTabList.svelte +20 -17
  36. package/dist/svelte/components/tabs/ChatTabs.svelte +7 -4
  37. package/dist/svelte/components/tabs/MiniChat.svelte +26 -23
  38. package/dist/sveltekit.js +1 -1
  39. 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-j6VuNo3t.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-D1xCl9IM.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.16",
5
+ "packageVersion": "0.55.17",
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.16",
6
+ "packageVersion": "0.55.17",
7
7
  "sourceManifestPath": "dist/manifest.json",
8
8
  "agentDocPath": "AGENTS.md",
9
9
  "sourceHashes": {
10
- "manifest": "69f1ffcb2c18121bfb0222b5181c8a535397ec2ad850dc5c45d2b69af3781a84",
11
- "packageJson": "f8421f356ae43131bc1c25f25a517353edd9eb905b9b2af1830c0a3248f5e227",
10
+ "manifest": "498b75e2f02ef874fce024d083f0f34dbd04adef9c08331450fd41e4d31574a6",
11
+ "packageJson": "b966760e4d64621cbdd38e76fe3defc29425a356fb20fa5486f70c32c77cca86",
12
12
  "agents": "aa720d6aa1fa097a61d56b1dab61b7857a8d4ee41920443aa1f085016488f90a",
13
13
  "moduleDoc:agents/dev-workbench.md": "f07a428519e8cca4a46371da0a3b33b9c8d3102f1d9056e4c8efba3c0b702048",
14
14
  "moduleDoc:agents/overview-tools.md": "752a4afb6b57a2e9224f3c65a98b0deb23cda87371f01ac0566f0887e9bb12da",
@@ -92,7 +92,7 @@ $effect(() => {
92
92
  });
93
93
  </script>
94
94
 
95
- <div class="agent-chat" aria-label={t(M['chat.agent_chat.conversation'])}>
95
+ <div class="agent-chat" aria-label={t(M['chat.agent_chat.conversation'])} data-smrt-component="AgentChat">
96
96
  <Form class="agent-chat__input-bar" onsubmit={(e) => handleSubmit(e)}>
97
97
  {#if !isActive}
98
98
  <div class="agent-chat__inactive-notice">
@@ -200,7 +200,7 @@ $effect(() => {
200
200
  </div>
201
201
 
202
202
  <!-- Diff Modal -->
203
- <dialog bind:this={diffDialog} class="diff-dialog">
203
+ <dialog bind:this={diffDialog} class="diff-dialog" data-smrt-component="AgentChat">
204
204
  <div class="diff-dialog__header">
205
205
  <h4>{t(M['chat.agent_chat.field_changes'])}</h4>
206
206
  <Button variant="ghost" size="sm" class="diff-dialog__close" type="button" onclick={closeDiff}>✕</Button>
@@ -218,21 +218,23 @@ $effect(() => {
218
218
  </dialog>
219
219
 
220
220
  <style>
221
+ @layer smrt.reset, smrt.structure, smrt.theme;
222
+ @layer smrt.theme {
221
223
  .agent-chat {
222
224
  display: flex;
223
225
  flex-direction: column;
224
226
  height: 100%;
225
- background: var(--smrt-color-surface, #fefbff);
226
- color: var(--smrt-color-on-surface, #1a1c1e);
227
+ background: var(--smrt-color-surface);
228
+ color: var(--smrt-color-on-surface);
227
229
  }
228
230
 
229
231
  .agent-chat__messages {
230
232
  flex: 1;
231
233
  overflow-y: auto;
232
- padding: var(--smrt-spacing-2, 8px) var(--smrt-spacing-3, 12px);
234
+ padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
233
235
  display: flex;
234
236
  flex-direction: column-reverse;
235
- gap: var(--smrt-spacing-2, 8px);
237
+ gap: var(--smrt-spacing-2);
236
238
  }
237
239
 
238
240
  .agent-chat__msg {
@@ -255,35 +257,35 @@ $effect(() => {
255
257
 
256
258
  .agent-chat__tool-row {
257
259
  width: 100%;
258
- padding: var(--smrt-spacing-1, 4px) 0;
260
+ padding: var(--smrt-spacing-1) 0;
259
261
  }
260
262
 
261
263
  .agent-chat__bubble {
262
264
  display: flex;
263
265
  flex-direction: column;
264
- gap: var(--smrt-spacing-1, 4px);
265
- padding: var(--smrt-spacing-2, 8px) var(--smrt-spacing-3, 12px);
266
- border-radius: var(--smrt-radius-lg, 12px);
266
+ gap: var(--smrt-spacing-1);
267
+ padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
268
+ border-radius: var(--smrt-radius-lg);
267
269
  word-break: break-word;
268
270
  font-size: var(--smrt-typography-body-medium-size, 0.8125rem);
269
271
  line-height: var(--smrt-typography-body-medium-line-height, 1.45);
270
272
  }
271
273
 
272
274
  .agent-chat__bubble--user {
273
- background: var(--smrt-color-primary-container, #d6e3ff);
274
- color: var(--smrt-color-on-primary-container, #001a41);
275
- border-bottom-right-radius: var(--smrt-radius-sm, 4px);
275
+ background: var(--smrt-color-primary-container);
276
+ color: var(--smrt-color-on-primary-container);
277
+ border-bottom-right-radius: var(--smrt-radius-sm);
276
278
  }
277
279
 
278
280
  .agent-chat__bubble--agent {
279
- background: var(--smrt-color-surface-container-high, #e6e6ea);
280
- color: var(--smrt-color-on-surface, #1a1c1e);
281
- border-bottom-left-radius: var(--smrt-radius-sm, 4px);
281
+ background: var(--smrt-color-surface-container-high);
282
+ color: var(--smrt-color-on-surface);
283
+ border-bottom-left-radius: var(--smrt-radius-sm);
282
284
  }
283
285
 
284
286
  .agent-chat__msg--system .agent-chat__bubble {
285
- background: var(--smrt-color-surface-variant, #e1e2ec);
286
- color: var(--smrt-color-on-surface-variant, #43474e);
287
+ background: var(--smrt-color-surface-variant);
288
+ color: var(--smrt-color-on-surface-variant);
287
289
  font-style: italic;
288
290
  text-align: center;
289
291
  }
@@ -294,7 +296,7 @@ $effect(() => {
294
296
 
295
297
  .agent-chat__msg-time {
296
298
  font-size: var(--smrt-typography-label-small-size, 0.5625rem);
297
- color: var(--smrt-color-outline, #74777f);
299
+ color: var(--smrt-color-outline);
298
300
  align-self: flex-end;
299
301
  line-height: 1;
300
302
  }
@@ -309,25 +311,25 @@ $effect(() => {
309
311
 
310
312
  .agent-chat__empty-text {
311
313
  font-size: var(--smrt-typography-body-medium-size, 0.8125rem);
312
- color: var(--smrt-color-outline, #74777f);
314
+ color: var(--smrt-color-outline);
313
315
  }
314
316
 
315
317
  /* :global() targets the Form primitive's rendered <form> (see #1589 scoping trap). */
316
318
  :global(.agent-chat__input-bar) {
317
319
  display: flex;
318
320
  align-items: flex-end;
319
- gap: var(--smrt-spacing-2, 8px);
320
- padding: var(--smrt-spacing-2, 8px) var(--smrt-spacing-3, 12px);
321
- background: var(--smrt-color-surface, #fefbff);
321
+ gap: var(--smrt-spacing-2);
322
+ padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
323
+ background: var(--smrt-color-surface);
322
324
  flex-shrink: 0;
323
325
  }
324
326
 
325
327
  .agent-chat__inactive-notice {
326
328
  flex: 1;
327
329
  text-align: center;
328
- padding: var(--smrt-spacing-2, 8px);
330
+ padding: var(--smrt-spacing-2);
329
331
  font-size: var(--smrt-typography-body-small-size, 0.75rem);
330
- color: var(--smrt-color-outline, #74777f);
332
+ color: var(--smrt-color-outline);
331
333
  font-style: italic;
332
334
  }
333
335
 
@@ -346,49 +348,49 @@ $effect(() => {
346
348
  width: 34px;
347
349
  height: 34px;
348
350
  padding: 0;
349
- background: var(--smrt-color-primary, #005ac1);
350
- color: var(--smrt-color-on-primary, #ffffff);
351
- border-radius: var(--smrt-radius-full, 9999px);
351
+ background: var(--smrt-color-primary);
352
+ color: var(--smrt-color-on-primary);
353
+ border-radius: var(--smrt-radius-full);
352
354
  flex-shrink: 0;
353
355
  transition: opacity 150ms;
354
356
  }
355
357
 
356
358
  :global(.agent-chat__input-bar .agent-chat__send-btn:not(:disabled):hover) {
357
- background: var(--smrt-color-primary, #005ac1);
359
+ background: var(--smrt-color-primary);
358
360
  opacity: 0.85;
359
361
  }
360
362
 
361
363
  .applied-badge {
362
364
  display: inline-flex;
363
365
  align-items: center;
364
- padding: var(--smrt-spacing-1, 4px) var(--smrt-spacing-2, 8px);
366
+ padding: var(--smrt-spacing-1) var(--smrt-spacing-2);
365
367
  font-size: var(--smrt-typography-label-small-size, 0.6875rem);
366
368
  font-weight: var(--smrt-typography-weight-semibold, 600);
367
- color: var(--smrt-color-on-success-container, #16a34a);
368
- background: var(--smrt-color-success-container, #f0fdf4);
369
- border: 1px solid var(--smrt-color-success, #bbf7d0);
370
- border-radius: var(--smrt-radius-full, 9999px);
369
+ color: var(--smrt-color-on-success-container);
370
+ background: var(--smrt-color-success-container);
371
+ border: 1px solid var(--smrt-color-success);
372
+ border-radius: var(--smrt-radius-full);
371
373
  }
372
374
 
373
375
  .field-update-block {
374
376
  display: flex;
375
377
  align-items: center;
376
- gap: var(--smrt-spacing-2, 8px);
377
- padding: var(--smrt-spacing-1, 4px) 0;
378
+ gap: var(--smrt-spacing-2);
379
+ padding: var(--smrt-spacing-1) 0;
378
380
  }
379
381
 
380
382
  .markdown-block {
381
383
  display: flex;
382
384
  flex-direction: column;
383
- gap: var(--smrt-spacing-2, 8px);
384
- padding: var(--smrt-spacing-1, 4px) 0;
385
+ gap: var(--smrt-spacing-2);
386
+ padding: var(--smrt-spacing-1) 0;
385
387
  }
386
388
 
387
389
  .markdown-block__content {
388
390
  margin: 0;
389
- padding: var(--smrt-spacing-3, 12px);
390
- border-radius: var(--smrt-radius-lg, 12px);
391
- background: color-mix(in srgb, var(--smrt-color-surface-container-low, #f4f2f6) 85%, white);
391
+ padding: var(--smrt-spacing-3);
392
+ border-radius: var(--smrt-radius-lg);
393
+ background: color-mix(in srgb, var(--smrt-color-surface-container-low) 85%, white);
392
394
  overflow-x: auto;
393
395
  white-space: pre-wrap;
394
396
  word-break: break-word;
@@ -399,30 +401,30 @@ $effect(() => {
399
401
  /* :global() pierces into each Button's rendered <button> (see #1589). */
400
402
  .field-update-block :global(.diff-btn),
401
403
  .markdown-block :global(.diff-btn) {
402
- padding: var(--smrt-spacing-1, 4px) var(--smrt-spacing-2, 8px);
404
+ padding: var(--smrt-spacing-1) var(--smrt-spacing-2);
403
405
  font-size: var(--smrt-typography-label-small-size, 0.625rem);
404
406
  font-weight: var(--smrt-typography-weight-semibold, 600);
405
- border: 1px solid var(--smrt-color-outline-variant, #c4c6d0);
406
- border-radius: var(--smrt-radius-full, 9999px);
407
+ border: 1px solid var(--smrt-color-outline-variant);
408
+ border-radius: var(--smrt-radius-full);
407
409
  background: none;
408
- color: var(--smrt-color-on-surface-variant, #43474e);
410
+ color: var(--smrt-color-on-surface-variant);
409
411
  }
410
412
 
411
413
  .field-update-block :global(.diff-btn:hover),
412
414
  .markdown-block :global(.diff-btn:hover) {
413
- background: var(--smrt-color-surface-variant, #e1e2ec);
414
- color: var(--smrt-color-primary, #005ac1);
415
+ background: var(--smrt-color-surface-variant);
416
+ color: var(--smrt-color-primary);
415
417
  }
416
418
 
417
419
  .diff-dialog {
418
420
  border: none;
419
- border-radius: var(--smrt-radius-lg, 12px);
421
+ border-radius: var(--smrt-radius-lg);
420
422
  padding: 0;
421
423
  width: min(420px, 90vw);
422
424
  max-height: 60vh;
423
425
  box-shadow: var(--smrt-elevation-5, 0 8px 32px color-mix(in srgb, var(--smrt-color-shadow) 18%, transparent));
424
- background: var(--smrt-color-surface, #fefbff);
425
- color: var(--smrt-color-on-surface, #1a1c1e);
426
+ background: var(--smrt-color-surface);
427
+ color: var(--smrt-color-on-surface);
426
428
  }
427
429
 
428
430
  .diff-dialog::backdrop {
@@ -433,8 +435,8 @@ $effect(() => {
433
435
  display: flex;
434
436
  align-items: center;
435
437
  justify-content: space-between;
436
- padding: var(--smrt-spacing-3, 12px) var(--smrt-spacing-4, 16px);
437
- border-bottom: 1px solid var(--smrt-color-outline-variant, #c4c6d0);
438
+ padding: var(--smrt-spacing-3) var(--smrt-spacing-4);
439
+ border-bottom: 1px solid var(--smrt-color-outline-variant);
438
440
  }
439
441
 
440
442
  .diff-dialog__header h4 {
@@ -447,23 +449,23 @@ $effect(() => {
447
449
  .diff-dialog__header :global(.diff-dialog__close) {
448
450
  background: none;
449
451
  font-size: var(--smrt-typography-body-large-size, 1rem);
450
- color: var(--smrt-color-outline, #74777f);
451
- padding: var(--smrt-spacing-1, 4px) var(--smrt-spacing-2, 8px);
452
- border-radius: var(--smrt-radius-sm, 4px);
452
+ color: var(--smrt-color-outline);
453
+ padding: var(--smrt-spacing-1) var(--smrt-spacing-2);
454
+ border-radius: var(--smrt-radius-sm);
453
455
  }
454
456
 
455
457
  .diff-dialog__header :global(.diff-dialog__close:hover) {
456
- background: var(--smrt-color-surface-variant, #e1e2ec);
458
+ background: var(--smrt-color-surface-variant);
457
459
  }
458
460
 
459
461
  .diff-dialog__body {
460
- padding: var(--smrt-spacing-3, 12px) var(--smrt-spacing-4, 16px);
462
+ padding: var(--smrt-spacing-3) var(--smrt-spacing-4);
461
463
  overflow-y: auto;
462
464
  max-height: calc(60vh - 60px);
463
465
  }
464
466
 
465
467
  .diff-field {
466
- margin-bottom: var(--smrt-spacing-3, 12px);
468
+ margin-bottom: var(--smrt-spacing-3);
467
469
  }
468
470
 
469
471
  .diff-field:last-child {
@@ -476,17 +478,17 @@ $effect(() => {
476
478
  font-weight: var(--smrt-typography-weight-semibold, 600);
477
479
  text-transform: uppercase;
478
480
  letter-spacing: var(--smrt-typography-label-small-tracking, 0.04em);
479
- color: var(--smrt-color-outline, #74777f);
480
- margin-bottom: var(--smrt-spacing-1, 4px);
481
+ color: var(--smrt-color-outline);
482
+ margin-bottom: var(--smrt-spacing-1);
481
483
  }
482
484
 
483
485
  .diff-field__value {
484
486
  margin: 0;
485
- padding: var(--smrt-spacing-2, 8px) var(--smrt-spacing-3, 12px);
487
+ padding: var(--smrt-spacing-2) var(--smrt-spacing-3);
486
488
  font-size: var(--smrt-typography-body-small-size, 0.75rem);
487
489
  line-height: var(--smrt-typography-body-small-line-height, 1.5);
488
- background: var(--smrt-color-surface-container-low, #f7f7fb);
489
- border-radius: var(--smrt-radius-md, 8px);
490
+ background: var(--smrt-color-surface-container-low);
491
+ border-radius: var(--smrt-radius-md);
490
492
  white-space: pre-wrap;
491
493
  word-break: break-word;
492
494
  font-family: inherit;
@@ -495,20 +497,20 @@ $effect(() => {
495
497
  }
496
498
 
497
499
  .agent-chat__thinking {
498
- padding: var(--smrt-spacing-3, 12px) var(--smrt-spacing-4, 16px);
500
+ padding: var(--smrt-spacing-3) var(--smrt-spacing-4);
499
501
  }
500
502
 
501
503
  .thinking-dots {
502
504
  display: inline-flex;
503
- gap: var(--smrt-spacing-1, 4px);
505
+ gap: var(--smrt-spacing-1);
504
506
  align-items: center;
505
507
  }
506
508
 
507
509
  .thinking-dots span {
508
510
  width: 6px;
509
511
  height: 6px;
510
- border-radius: var(--smrt-radius-full, 9999px);
511
- background: var(--smrt-color-outline, #74777f);
512
+ border-radius: var(--smrt-radius-full);
513
+ background: var(--smrt-color-outline);
512
514
  animation: thinking-bounce 1.2s ease-in-out infinite;
513
515
  }
514
516
 
@@ -530,4 +532,5 @@ $effect(() => {
530
532
  animation: none;
531
533
  }
532
534
  }
535
+ }
533
536
  </style>
@@ -21,7 +21,7 @@ const { agents, onselect }: Props = $props();
21
21
  const { t } = useI18n();
22
22
  </script>
23
23
 
24
- <div class="agent-selector" aria-label={t(M['chat.agent_selector.select_an_agent'])}>
24
+ <div class="agent-selector" aria-label={t(M['chat.agent_selector.select_an_agent'])} data-smrt-component="AgentSelector">
25
25
  <h3 class="agent-selector__title">{t(M['chat.agent_selector.title'])}</h3>
26
26
 
27
27
  <div class="agent-selector__grid" role="listbox" aria-label={t(M['chat.agent_selector.available_agents'])}>
@@ -63,36 +63,38 @@ const { t } = useI18n();
63
63
  </div>
64
64
 
65
65
  <style>
66
+ @layer smrt.reset, smrt.structure, smrt.theme;
67
+ @layer smrt.theme {
66
68
  .agent-selector {
67
69
  display: flex;
68
70
  flex-direction: column;
69
- gap: var(--smrt-spacing-4, 16px);
70
- padding: var(--smrt-spacing-4, 16px);
71
+ gap: var(--smrt-spacing-4);
72
+ padding: var(--smrt-spacing-4);
71
73
  }
72
74
 
73
75
  .agent-selector__title {
74
76
  font: var(--smrt-typography-title-medium-font, 600 1rem/1.25 sans-serif);
75
- color: var(--smrt-color-on-surface, #1a1c1e);
77
+ color: var(--smrt-color-on-surface);
76
78
  margin: 0;
77
79
  }
78
80
 
79
81
  .agent-selector__grid {
80
82
  display: grid;
81
83
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
82
- gap: var(--smrt-spacing-3, 12px);
84
+ gap: var(--smrt-spacing-3);
83
85
  }
84
86
 
85
87
  .agent-selector__card {
86
88
  display: flex;
87
89
  align-items: flex-start;
88
- gap: var(--smrt-spacing-3, 12px);
89
- padding: var(--smrt-spacing-4, 16px);
90
- background: var(--smrt-color-surface-container-low, #f7f7fb);
91
- border: 1px solid var(--smrt-color-outline-variant, #c4c6d0);
92
- border-radius: var(--smrt-radius-large, 12px);
90
+ gap: var(--smrt-spacing-3);
91
+ padding: var(--smrt-spacing-4);
92
+ background: var(--smrt-color-surface-container-low);
93
+ border: 1px solid var(--smrt-color-outline-variant);
94
+ border-radius: var(--smrt-radius-large);
93
95
  cursor: pointer;
94
96
  text-align: left;
95
- color: var(--smrt-color-on-surface, #1a1c1e);
97
+ color: var(--smrt-color-on-surface);
96
98
  position: relative;
97
99
  transition:
98
100
  background var(--smrt-duration-short2, 150ms),
@@ -101,13 +103,13 @@ const { t } = useI18n();
101
103
  }
102
104
 
103
105
  .agent-selector__card:hover:not(:disabled) {
104
- background: var(--smrt-color-surface-container, #f0f0f4);
105
- border-color: var(--smrt-color-primary, #005ac1);
106
+ background: var(--smrt-color-surface-container);
107
+ border-color: var(--smrt-color-primary);
106
108
  box-shadow: var(--smrt-elevation-1, 0 1px 3px rgba(0, 0, 0, 0.1));
107
109
  }
108
110
 
109
111
  .agent-selector__card:focus-visible {
110
- outline: 2px solid var(--smrt-color-primary, #005ac1);
112
+ outline: 2px solid var(--smrt-color-primary);
111
113
  outline-offset: -2px;
112
114
  }
113
115
 
@@ -120,18 +122,18 @@ const { t } = useI18n();
120
122
  flex: 1;
121
123
  display: flex;
122
124
  flex-direction: column;
123
- gap: var(--smrt-spacing-1, 4px);
125
+ gap: var(--smrt-spacing-1);
124
126
  min-width: 0;
125
127
  }
126
128
 
127
129
  .agent-selector__card-name {
128
130
  font: var(--smrt-typography-title-small-font, 600 0.875rem/1.25 sans-serif);
129
- color: var(--smrt-color-on-surface, #1a1c1e);
131
+ color: var(--smrt-color-on-surface);
130
132
  }
131
133
 
132
134
  .agent-selector__card-desc {
133
135
  font: var(--smrt-typography-body-small-font, 0.8125rem/1.4 sans-serif);
134
- color: var(--smrt-color-on-surface-variant, #43474e);
136
+ color: var(--smrt-color-on-surface-variant);
135
137
  display: -webkit-box;
136
138
  -webkit-line-clamp: 2;
137
139
  line-clamp: 2;
@@ -144,22 +146,22 @@ const { t } = useI18n();
144
146
  top: 8px;
145
147
  right: 8px;
146
148
  font: var(--smrt-typography-label-small-font, 500 0.6875rem/1 sans-serif);
147
- color: var(--smrt-color-outline, #74777f);
148
- background: var(--smrt-color-surface-variant, #e1e2ec);
149
- padding: var(--smrt-spacing-1, 4px) var(--smrt-spacing-2, 8px);
150
- border-radius: var(--smrt-radius-full, 9999px);
149
+ color: var(--smrt-color-outline);
150
+ background: var(--smrt-color-surface-variant);
151
+ padding: var(--smrt-spacing-1) var(--smrt-spacing-2);
152
+ border-radius: var(--smrt-radius-full);
151
153
  }
152
154
 
153
155
  .agent-selector__empty {
154
156
  display: flex;
155
157
  align-items: center;
156
158
  justify-content: center;
157
- padding: var(--smrt-spacing-10, 40px);
159
+ padding: var(--smrt-spacing-10);
158
160
  }
159
161
 
160
162
  .agent-selector__empty-text {
161
163
  font: var(--smrt-typography-body-medium-font, 0.875rem/1.4 sans-serif);
162
- color: var(--smrt-color-outline, #74777f);
164
+ color: var(--smrt-color-outline);
163
165
  }
164
166
 
165
167
  @media (max-width: 480px) {
@@ -173,4 +175,5 @@ const { t } = useI18n();
173
175
  transition: none;
174
176
  }
175
177
  }
178
+ }
176
179
  </style>