@webskill/chatbot 0.5.0 → 0.7.0

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/README.md CHANGED
@@ -154,9 +154,10 @@ so a symbol cannot be quietly downgraded — the change shows up in the diff.
154
154
  `configureA2uiMarkdown`, the `probe*` helpers, `RendererKind`,
155
155
  `RendererCapability` and `DEFAULT_RENDERER_CAPABILITIES`. Their shape
156
156
  tracks upstream ecosystems this package does not own.
157
- - **Surfaces introduced in this release** — `ChatAttachmentInput` and
158
- `ChatAttachmentMeta` (multimodal attachments), which no consumer has
159
- exercised yet.
157
+ - **Surfaces not yet exercised by consumers** — `ChatAttachmentInput` and
158
+ `ChatAttachmentMeta` (multimodal attachments), `ChatThinking` and
159
+ `ChatTokenUsage` (thinking segments and token usage persisted on messages,
160
+ 0.7.0), and `pickUsableLlmEntry` (usable-model entry criterion, 0.7.0).
160
161
  - **`RunSnapshot`** — the resume snapshot format, `@experimental` in
161
162
  `@webskill/sdk` for the same reason.
162
163
 
package/dist/chatbot.css CHANGED
@@ -279,9 +279,6 @@
279
279
  .right-2 {
280
280
  right: calc(var(--spacing) * 2);
281
281
  }
282
- .right-2\.5 {
283
- right: calc(var(--spacing) * 2.5);
284
- }
285
282
  .right-3 {
286
283
  right: calc(var(--spacing) * 3);
287
284
  }
@@ -291,8 +288,8 @@
291
288
  .right-full {
292
289
  right: 100%;
293
290
  }
294
- .-bottom-7 {
295
- bottom: calc(var(--spacing) * -7);
291
+ .-bottom-9 {
292
+ bottom: calc(var(--spacing) * -9);
296
293
  }
297
294
  .bottom-4 {
298
295
  bottom: calc(var(--spacing) * 4);
@@ -381,6 +378,9 @@
381
378
  .my-3 {
382
379
  margin-block: calc(var(--spacing) * 3);
383
380
  }
381
+ .ms-1 {
382
+ margin-inline-start: var(--spacing);
383
+ }
384
384
  .ms-auto {
385
385
  margin-inline-start: auto;
386
386
  }
@@ -402,8 +402,8 @@
402
402
  .mb-2 {
403
403
  margin-bottom: calc(var(--spacing) * 2);
404
404
  }
405
- .mb-7 {
406
- margin-bottom: calc(var(--spacing) * 7);
405
+ .mb-9 {
406
+ margin-bottom: calc(var(--spacing) * 9);
407
407
  }
408
408
  .block {
409
409
  display: block;
@@ -475,6 +475,10 @@
475
475
  width: calc(var(--spacing) * 9);
476
476
  height: calc(var(--spacing) * 9);
477
477
  }
478
+ .size-\[3px\] {
479
+ width: 3px;
480
+ height: 3px;
481
+ }
478
482
  .size-full {
479
483
  width: 100%;
480
484
  height: 100%;
@@ -482,6 +486,9 @@
482
486
  .h-0 {
483
487
  height: 0px;
484
488
  }
489
+ .h-2 {
490
+ height: calc(var(--spacing) * 2);
491
+ }
485
492
  .h-2\.5 {
486
493
  height: calc(var(--spacing) * 2.5);
487
494
  }
@@ -527,9 +534,15 @@
527
534
  .max-h-\[calc\(100dvh-2rem\)\] {
528
535
  max-height: calc(100dvh - 2rem);
529
536
  }
537
+ .max-h-\[var\(--radix-select-content-available-height\)\] {
538
+ max-height: var(--radix-select-content-available-height);
539
+ }
530
540
  .min-h-0 {
531
541
  min-height: 0px;
532
542
  }
543
+ .min-h-8 {
544
+ min-height: calc(var(--spacing) * 8);
545
+ }
533
546
  .min-h-16 {
534
547
  min-height: calc(var(--spacing) * 16);
535
548
  }
@@ -572,6 +585,12 @@
572
585
  .w-72 {
573
586
  width: calc(var(--spacing) * 72);
574
587
  }
588
+ .w-80 {
589
+ width: calc(var(--spacing) * 80);
590
+ }
591
+ .w-\[80\%\] {
592
+ width: 80%;
593
+ }
575
594
  .w-\[min\(36rem\,calc\(100vw-2rem\)\)\] {
576
595
  width: min(36rem, calc(100vw - 2rem));
577
596
  }
@@ -602,6 +621,9 @@
602
621
  .max-w-72 {
603
622
  max-width: calc(var(--spacing) * 72);
604
623
  }
624
+ .max-w-\[calc\(100vw-2rem\)\] {
625
+ max-width: calc(100vw - 2rem);
626
+ }
605
627
  .max-w-full {
606
628
  max-width: 100%;
607
629
  }
@@ -617,9 +639,6 @@
617
639
  .min-w-5 {
618
640
  min-width: calc(var(--spacing) * 5);
619
641
  }
620
- .min-w-20 {
621
- min-width: calc(var(--spacing) * 20);
622
- }
623
642
  .min-w-32 {
624
643
  min-width: calc(var(--spacing) * 32);
625
644
  }
@@ -629,6 +648,9 @@
629
648
  .min-w-44 {
630
649
  min-width: calc(var(--spacing) * 44);
631
650
  }
651
+ .min-w-\[var\(--radix-select-trigger-width\)\] {
652
+ min-width: var(--radix-select-trigger-width);
653
+ }
632
654
  .min-w-max {
633
655
  min-width: max-content;
634
656
  }
@@ -709,9 +731,6 @@
709
731
  .list-disc {
710
732
  list-style-type: disc;
711
733
  }
712
- .appearance-none {
713
- appearance: none;
714
- }
715
734
  .grid-cols-1 {
716
735
  grid-template-columns: repeat(1, minmax(0, 1fr));
717
736
  }
@@ -730,6 +749,9 @@
730
749
  .items-center {
731
750
  align-items: center;
732
751
  }
752
+ .items-end {
753
+ align-items: flex-end;
754
+ }
733
755
  .items-start {
734
756
  align-items: flex-start;
735
757
  }
@@ -766,6 +788,9 @@
766
788
  .gap-4 {
767
789
  gap: calc(var(--spacing) * 4);
768
790
  }
791
+ .gap-\[3px\] {
792
+ gap: 3px;
793
+ }
769
794
  :where(.space-y-1 > :not(:last-child)) {
770
795
  --tw-space-y-reverse: 0;
771
796
  margin-block-start: calc(var(--spacing) * var(--tw-space-y-reverse));
@@ -1012,6 +1037,9 @@
1012
1037
  .bg-primary {
1013
1038
  background-color: var(--primary);
1014
1039
  }
1040
+ .bg-secondary {
1041
+ background-color: var(--secondary);
1042
+ }
1015
1043
  .bg-sidebar {
1016
1044
  background-color: var(--sidebar);
1017
1045
  }
@@ -1042,6 +1070,9 @@
1042
1070
  .fill-ink {
1043
1071
  fill: var(--foreground);
1044
1072
  }
1073
+ .object-cover {
1074
+ object-fit: cover;
1075
+ }
1045
1076
  .p-0 {
1046
1077
  padding: 0px;
1047
1078
  }
@@ -1144,8 +1175,11 @@
1144
1175
  .pb-4 {
1145
1176
  padding-bottom: calc(var(--spacing) * 4);
1146
1177
  }
1147
- .pl-3 {
1148
- padding-left: calc(var(--spacing) * 3);
1178
+ .pl-2 {
1179
+ padding-left: calc(var(--spacing) * 2);
1180
+ }
1181
+ .pl-4 {
1182
+ padding-left: calc(var(--spacing) * 4);
1149
1183
  }
1150
1184
  .pl-5 {
1151
1185
  padding-left: calc(var(--spacing) * 5);
@@ -1229,12 +1263,12 @@
1229
1263
  .whitespace-nowrap {
1230
1264
  white-space: nowrap;
1231
1265
  }
1266
+ .whitespace-pre {
1267
+ white-space: pre;
1268
+ }
1232
1269
  .whitespace-pre-wrap {
1233
1270
  white-space: pre-wrap;
1234
1271
  }
1235
- .text-background {
1236
- color: var(--background);
1237
- }
1238
1272
  .text-canvas {
1239
1273
  color: var(--background);
1240
1274
  }
@@ -1286,6 +1320,9 @@
1286
1320
  .uppercase {
1287
1321
  text-transform: uppercase;
1288
1322
  }
1323
+ .italic {
1324
+ font-style: italic;
1325
+ }
1289
1326
  .tabular-nums {
1290
1327
  --tw-numeric-spacing: tabular-nums;
1291
1328
  font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);
@@ -1404,6 +1441,10 @@
1404
1441
  -webkit-user-select: none;
1405
1442
  user-select: none;
1406
1443
  }
1444
+ .select-text {
1445
+ -webkit-user-select: text;
1446
+ user-select: text;
1447
+ }
1407
1448
  .group-focus-within\:opacity-100:is(:where(.group):focus-within *) {
1408
1449
  opacity: 100%;
1409
1450
  }
@@ -1411,6 +1452,9 @@
1411
1452
  opacity: 100%;
1412
1453
  }
1413
1454
  @media (hover: hover) {
1455
+ .group-hover\:bg-border:is(:where(.group):hover *) {
1456
+ background-color: var(--border);
1457
+ }
1414
1458
  .group-hover\:opacity-100:is(:where(.group):hover *) {
1415
1459
  opacity: 100%;
1416
1460
  }
@@ -1493,6 +1537,39 @@
1493
1537
  .peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size="sm"] ~ *) {
1494
1538
  top: var(--spacing);
1495
1539
  }
1540
+ .file\:mr-3::file-selector-button {
1541
+ margin-right: calc(var(--spacing) * 3);
1542
+ }
1543
+ .file\:cursor-pointer::file-selector-button {
1544
+ cursor: pointer;
1545
+ }
1546
+ .file\:rounded-md::file-selector-button {
1547
+ border-radius: calc(var(--radius) - 2px);
1548
+ }
1549
+ .file\:border-0::file-selector-button {
1550
+ border-style: var(--tw-border-style);
1551
+ border-width: 0px;
1552
+ }
1553
+ .file\:bg-primary::file-selector-button {
1554
+ background-color: var(--primary);
1555
+ }
1556
+ .file\:px-3::file-selector-button {
1557
+ padding-inline: calc(var(--spacing) * 3);
1558
+ }
1559
+ .file\:py-1::file-selector-button {
1560
+ padding-block: var(--spacing);
1561
+ }
1562
+ .file\:text-sm::file-selector-button {
1563
+ font-size: var(--text-sm);
1564
+ line-height: var(--tw-leading, var(--text-sm--line-height));
1565
+ }
1566
+ .file\:font-medium::file-selector-button {
1567
+ --tw-font-weight: var(--font-weight-medium);
1568
+ font-weight: var(--font-weight-medium);
1569
+ }
1570
+ .file\:text-primary-foreground::file-selector-button {
1571
+ color: var(--primary-foreground);
1572
+ }
1496
1573
  .placeholder\:text-muted::placeholder {
1497
1574
  color: var(--muted-foreground);
1498
1575
  }
@@ -1563,12 +1640,15 @@
1563
1640
  .hover\:text-sidebar-accent-foreground:hover {
1564
1641
  color: var(--sidebar-accent-foreground);
1565
1642
  }
1566
- .hover\:opacity-85:hover {
1567
- opacity: 85%;
1568
- }
1569
1643
  .hover\:opacity-90:hover {
1570
1644
  opacity: 90%;
1571
1645
  }
1646
+ .hover\:file\:bg-primary\/90:hover::file-selector-button {
1647
+ background-color: var(--primary);
1648
+ @supports (color: color-mix(in lab, red, red)) {
1649
+ background-color: color-mix(in oklab, var(--primary) 90%, transparent);
1650
+ }
1651
+ }
1572
1652
  }
1573
1653
  .focus\:border-ring:focus {
1574
1654
  border-color: var(--ring);
@@ -1670,8 +1750,8 @@
1670
1750
  .data-dragging\:bg-subtle[data-dragging] {
1671
1751
  background-color: var(--accent);
1672
1752
  }
1673
- .data-\[active\=true\]\:bg-sidebar-accent[data-active="true"] {
1674
- background-color: var(--sidebar-accent);
1753
+ .data-\[active\=true\]\:bg-subtle[data-active="true"] {
1754
+ background-color: var(--accent);
1675
1755
  }
1676
1756
  .data-\[active\=true\]\:font-medium[data-active="true"] {
1677
1757
  --tw-font-weight: var(--font-weight-medium);
@@ -1707,6 +1787,9 @@
1707
1787
  .data-\[orientation\=vertical\]\:flex-col[data-orientation="vertical"] {
1708
1788
  flex-direction: column;
1709
1789
  }
1790
+ .data-\[placeholder\]\:text-muted[data-placeholder] {
1791
+ color: var(--muted-foreground);
1792
+ }
1710
1793
  .data-\[selected\=true\]\:bg-subtle[data-selected="true"] {
1711
1794
  background-color: var(--accent);
1712
1795
  }
@@ -1993,12 +2076,12 @@
1993
2076
  --secondary-foreground: oklch(0.205 0 0);
1994
2077
  --muted: oklch(0.97 0 0);
1995
2078
  --muted-foreground: oklch(0.556 0 0);
1996
- --accent: oklch(0.97 0 0);
2079
+ --accent: #0000000f;
1997
2080
  --accent-foreground: oklch(0.205 0 0);
1998
2081
  --border: oklch(0.922 0 0);
1999
2082
  --input: oklch(0.922 0 0);
2000
2083
  --ring: oklch(0.708 0 0);
2001
- --destructive: oklch(0.577 0.245 27.325);
2084
+ --destructive: oklch(0.52 0.22 27);
2002
2085
  --destructive-foreground: oklch(0.985 0 0);
2003
2086
  --success: oklch(0.62 0.13 150);
2004
2087
  --success-foreground: oklch(0.985 0 0);
@@ -2031,7 +2114,7 @@
2031
2114
  --sidebar-foreground: oklch(0.145 0 0);
2032
2115
  --sidebar-primary: oklch(0.205 0 0);
2033
2116
  --sidebar-primary-foreground: oklch(0.985 0 0);
2034
- --sidebar-accent: oklch(0.97 0 0);
2117
+ --sidebar-accent: #0000000f;
2035
2118
  --sidebar-accent-foreground: oklch(0.205 0 0);
2036
2119
  --sidebar-border: oklch(0.922 0 0);
2037
2120
  --sidebar-ring: oklch(0.708 0 0);
@@ -2039,6 +2122,36 @@
2039
2122
  --brand-foreground: oklch(0.985 0 0);
2040
2123
  --text-min: 0.75rem;
2041
2124
  --text-code: 0.8125rem;
2125
+ --code-base: hsl(230, 8%, 24%);
2126
+ --code-comment: hsl(230, 4%, 64%);
2127
+ --code-prolog: hsl(230, 4%, 64%);
2128
+ --code-cdata: hsl(230, 4%, 64%);
2129
+ --code-doctype: hsl(230, 8%, 24%);
2130
+ --code-punctuation: hsl(230, 8%, 24%);
2131
+ --code-entity: hsl(230, 8%, 24%);
2132
+ --code-attr-name: hsl(35, 99%, 36%);
2133
+ --code-class-name: hsl(35, 99%, 36%);
2134
+ --code-boolean: hsl(35, 99%, 36%);
2135
+ --code-constant: hsl(35, 99%, 36%);
2136
+ --code-number: hsl(35, 99%, 36%);
2137
+ --code-atrule: hsl(35, 99%, 36%);
2138
+ --code-keyword: hsl(301, 63%, 40%);
2139
+ --code-property: hsl(5, 74%, 59%);
2140
+ --code-tag: hsl(5, 74%, 59%);
2141
+ --code-symbol: hsl(5, 74%, 59%);
2142
+ --code-deleted: hsl(5, 74%, 59%);
2143
+ --code-important: hsl(5, 74%, 59%);
2144
+ --code-selector: hsl(119, 34%, 47%);
2145
+ --code-string: hsl(119, 34%, 47%);
2146
+ --code-char: hsl(119, 34%, 47%);
2147
+ --code-builtin: hsl(119, 34%, 47%);
2148
+ --code-inserted: hsl(119, 34%, 47%);
2149
+ --code-regex: hsl(119, 34%, 47%);
2150
+ --code-attr-value: hsl(119, 34%, 47%);
2151
+ --code-variable: hsl(221, 87%, 60%);
2152
+ --code-operator: hsl(221, 87%, 60%);
2153
+ --code-function: hsl(221, 87%, 60%);
2154
+ --code-url: hsl(198, 99%, 37%);
2042
2155
  }
2043
2156
  :where(.dark, [data-theme='dark']) {
2044
2157
  --background: oklch(0.145 0 0);
@@ -2053,7 +2166,7 @@
2053
2166
  --secondary-foreground: oklch(0.985 0 0);
2054
2167
  --muted: oklch(0.269 0 0);
2055
2168
  --muted-foreground: oklch(0.708 0 0);
2056
- --accent: oklch(0.269 0 0);
2169
+ --accent: #ffffff0d;
2057
2170
  --accent-foreground: oklch(0.985 0 0);
2058
2171
  --border: oklch(1 0 0 / 10%);
2059
2172
  --input: oklch(1 0 0 / 15%);
@@ -2086,12 +2199,42 @@
2086
2199
  --sidebar-foreground: oklch(0.985 0 0);
2087
2200
  --sidebar-primary: oklch(0.985 0 0);
2088
2201
  --sidebar-primary-foreground: oklch(0.205 0 0);
2089
- --sidebar-accent: oklch(0.269 0 0);
2202
+ --sidebar-accent: #ffffff0d;
2090
2203
  --sidebar-accent-foreground: oklch(0.985 0 0);
2091
2204
  --sidebar-border: oklch(1 0 0 / 10%);
2092
2205
  --sidebar-ring: oklch(0.556 0 0);
2093
2206
  --brand: oklch(0.68 0.14 275);
2094
2207
  --brand-foreground: oklch(0.205 0 0);
2208
+ --code-base: hsl(220, 14%, 71%);
2209
+ --code-comment: hsl(220, 10%, 40%);
2210
+ --code-prolog: hsl(220, 10%, 40%);
2211
+ --code-cdata: hsl(220, 10%, 40%);
2212
+ --code-doctype: hsl(220, 14%, 71%);
2213
+ --code-punctuation: hsl(220, 14%, 71%);
2214
+ --code-entity: hsl(220, 14%, 71%);
2215
+ --code-attr-name: hsl(29, 54%, 61%);
2216
+ --code-class-name: hsl(29, 54%, 61%);
2217
+ --code-boolean: hsl(29, 54%, 61%);
2218
+ --code-constant: hsl(29, 54%, 61%);
2219
+ --code-number: hsl(29, 54%, 61%);
2220
+ --code-atrule: hsl(29, 54%, 61%);
2221
+ --code-keyword: hsl(286, 60%, 67%);
2222
+ --code-property: hsl(355, 65%, 65%);
2223
+ --code-tag: hsl(355, 65%, 65%);
2224
+ --code-symbol: hsl(355, 65%, 65%);
2225
+ --code-deleted: hsl(355, 65%, 65%);
2226
+ --code-important: hsl(355, 65%, 65%);
2227
+ --code-selector: hsl(95, 38%, 62%);
2228
+ --code-string: hsl(95, 38%, 62%);
2229
+ --code-char: hsl(95, 38%, 62%);
2230
+ --code-builtin: hsl(95, 38%, 62%);
2231
+ --code-inserted: hsl(95, 38%, 62%);
2232
+ --code-regex: hsl(95, 38%, 62%);
2233
+ --code-attr-value: hsl(95, 38%, 62%);
2234
+ --code-variable: hsl(207, 82%, 66%);
2235
+ --code-operator: hsl(207, 82%, 66%);
2236
+ --code-function: hsl(207, 82%, 66%);
2237
+ --code-url: hsl(187, 47%, 55%);
2095
2238
  }
2096
2239
  @layer base {
2097
2240
  *, ::before, ::after {
@@ -2240,6 +2383,15 @@
2240
2383
  .webskill-surface--form, .webskill-surface--metric, .webskill-surface--file, .webskill-surface--error, .webskill-surface--unsupported {
2241
2384
  padding: 1rem;
2242
2385
  }
2386
+ .webskill-surface.webskill-surface--spec {
2387
+ padding: 1rem;
2388
+ }
2389
+ .webskill-surface--spec > .webskill-spec-card:only-child, .webskill-surface--spec > div > .webskill-spec-card:only-child {
2390
+ border: 0;
2391
+ background: transparent;
2392
+ box-shadow: none;
2393
+ padding: 0;
2394
+ }
2243
2395
  .webskill-surface--form, .webskill-surface__field {
2244
2396
  display: flex;
2245
2397
  flex-direction: column;