@fungi.computer/parakeet 0.4.0 → 0.5.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.
Files changed (55) hide show
  1. package/dist/client-contributions.d.ts +1 -0
  2. package/dist/commands/awaiting-driver.d.ts +20 -0
  3. package/dist/commands/awaiting-driver.js +121 -0
  4. package/dist/commands/builtins.js +6 -4
  5. package/dist/commands/interactions.d.ts +25 -0
  6. package/dist/commands/interactions.js +76 -2
  7. package/dist/commands/run.js +3 -3
  8. package/dist/commands/slash.d.ts +7 -3
  9. package/dist/commands/slash.js +2 -0
  10. package/dist/commands/use-slash-commands.d.ts +13 -0
  11. package/dist/commands/use-slash-commands.js +58 -1
  12. package/dist/components/ChatComposer.d.ts +2 -0
  13. package/dist/components/ChatComposer.js +150 -38
  14. package/dist/components/ClientRows.js +42 -26
  15. package/dist/components/CompletionMenu.d.ts +54 -0
  16. package/dist/components/CompletionMenu.js +52 -0
  17. package/dist/components/DecisionComposer.d.ts +30 -0
  18. package/dist/components/DecisionComposer.js +146 -0
  19. package/dist/components/InteractionPanel.d.ts +10 -1
  20. package/dist/components/InteractionPanel.js +9 -4
  21. package/dist/components/SlashMenu.d.ts +1 -3
  22. package/dist/components/SlashMenu.js +5 -13
  23. package/dist/components/TimelineItem.d.ts +1 -0
  24. package/dist/components/TimelineItem.js +3 -3
  25. package/dist/components/ToolGroup.d.ts +1 -0
  26. package/dist/components/ToolGroup.js +7 -7
  27. package/dist/conversation.d.ts +5 -1
  28. package/dist/conversation.js +72 -20
  29. package/dist/core/approval-decision.d.ts +198 -0
  30. package/dist/core/approval-decision.js +291 -0
  31. package/dist/core/awaiting-answer.d.ts +229 -0
  32. package/dist/core/awaiting-answer.js +303 -0
  33. package/dist/core/build-timeline.js +56 -5
  34. package/dist/core/client-actions.d.ts +1 -0
  35. package/dist/core/client-actions.js +7 -1
  36. package/dist/core/draft-storage.d.ts +4 -0
  37. package/dist/core/draft-storage.js +12 -5
  38. package/dist/core/session-query.d.ts +8 -0
  39. package/dist/core/session-query.js +13 -11
  40. package/dist/headless.d.ts +6 -2
  41. package/dist/headless.js +5 -1
  42. package/dist/parakeet.d.ts +6 -2
  43. package/dist/parakeet.js +15 -6
  44. package/dist/store/types.d.ts +5 -1
  45. package/dist/styles.css +395 -113
  46. package/dist/use-approval-awaiting.d.ts +22 -0
  47. package/dist/use-approval-awaiting.js +81 -0
  48. package/dist/use-decision.d.ts +20 -0
  49. package/dist/use-decision.js +79 -0
  50. package/docs/api/commands/slash.md +30 -26
  51. package/docs/api/headless.md +822 -41
  52. package/docs/api/index.md +13 -4
  53. package/package.json +13 -7
  54. package/src/completion-menu.css +71 -0
  55. package/src/styles.css +174 -46
package/dist/styles.css CHANGED
@@ -18,6 +18,7 @@
18
18
  --text-sm: 0.875rem;
19
19
  --text-sm--line-height: calc(1.25 / 0.875);
20
20
  --text-base: 1rem;
21
+ --text-base--line-height: calc(1.5 / 1);
21
22
  --text-lg: 1.125rem;
22
23
  --text-lg--line-height: calc(1.75 / 1.125);
23
24
  --text-xl: 1.25rem;
@@ -1601,6 +1602,9 @@
1601
1602
  .pointer-events-auto {
1602
1603
  pointer-events: auto;
1603
1604
  }
1605
+ .pointer-events-none {
1606
+ pointer-events: none;
1607
+ }
1604
1608
  .countdown {
1605
1609
  &.countdown {
1606
1610
  line-height: 1em;
@@ -4771,6 +4775,9 @@
4771
4775
  .m-auto {
4772
4776
  margin: auto;
4773
4777
  }
4778
+ .-mx-xs {
4779
+ margin-inline: calc(var(--spacing-xs) * -1);
4780
+ }
4774
4781
  .mx-2 {
4775
4782
  margin-inline: calc(var(--spacing) * 2);
4776
4783
  }
@@ -6129,15 +6136,15 @@
6129
6136
  .min-h-10 {
6130
6137
  min-height: calc(var(--spacing) * 10);
6131
6138
  }
6139
+ .min-h-12 {
6140
+ min-height: calc(var(--spacing) * 12);
6141
+ }
6132
6142
  .min-h-14 {
6133
6143
  min-height: calc(var(--spacing) * 14);
6134
6144
  }
6135
6145
  .min-h-96 {
6136
6146
  min-height: calc(var(--spacing) * 96);
6137
6147
  }
6138
- .min-h-\[48px\] {
6139
- min-height: 48px;
6140
- }
6141
6148
  .loading-sm {
6142
6149
  @layer daisyui.l1.l2 {
6143
6150
  width: calc(var(--size-selector, 0.25rem) * 5);
@@ -6158,6 +6165,9 @@
6158
6165
  .w-12 {
6159
6166
  width: calc(var(--spacing) * 12);
6160
6167
  }
6168
+ .w-\[calc\(100\%\+2\*var\(--spacing-xs\)\)\] {
6169
+ width: calc(100% + 2 * var(--spacing-xs));
6170
+ }
6161
6171
  .w-\[min\(32rem\,calc\(100vw-2rem\)\)\] {
6162
6172
  width: min(32rem, calc(100vw - 2rem));
6163
6173
  }
@@ -6191,6 +6201,9 @@
6191
6201
  .max-w-full {
6192
6202
  max-width: 100%;
6193
6203
  }
6204
+ .max-w-none {
6205
+ max-width: none;
6206
+ }
6194
6207
  .min-w-0 {
6195
6208
  min-width: calc(var(--spacing) * 0);
6196
6209
  }
@@ -6310,12 +6323,12 @@
6310
6323
  .place-items-center {
6311
6324
  place-items: center;
6312
6325
  }
6326
+ .items-baseline {
6327
+ align-items: baseline;
6328
+ }
6313
6329
  .items-center {
6314
6330
  align-items: center;
6315
6331
  }
6316
- .items-end {
6317
- align-items: flex-end;
6318
- }
6319
6332
  .items-start {
6320
6333
  align-items: flex-start;
6321
6334
  }
@@ -6363,9 +6376,6 @@
6363
6376
  margin-block-end: calc(var(--spacing-sm) * calc(1 - var(--tw-space-y-reverse)));
6364
6377
  }
6365
6378
  }
6366
- .self-stretch {
6367
- align-self: stretch;
6368
- }
6369
6379
  .truncate {
6370
6380
  overflow: hidden;
6371
6381
  text-overflow: ellipsis;
@@ -6413,10 +6423,6 @@
6413
6423
  .rounded-none {
6414
6424
  border-radius: 0;
6415
6425
  }
6416
- .\!border-0 {
6417
- border-style: var(--tw-border-style) !important;
6418
- border-width: 0px !important;
6419
- }
6420
6426
  .border {
6421
6427
  border-style: var(--tw-border-style);
6422
6428
  border-width: 1px;
@@ -6498,9 +6504,6 @@
6498
6504
  }
6499
6505
  }
6500
6506
  }
6501
- .\!bg-transparent {
6502
- background-color: transparent !important;
6503
- }
6504
6507
  .bg-\[var\(--stipe-surface\)\] {
6505
6508
  background-color: var(--stipe-surface);
6506
6509
  }
@@ -6575,9 +6578,6 @@
6575
6578
  .p-0 {
6576
6579
  padding: calc(var(--spacing) * 0);
6577
6580
  }
6578
- .p-2xs {
6579
- padding: var(--spacing-2xs);
6580
- }
6581
6581
  .p-lg {
6582
6582
  padding: var(--spacing-lg);
6583
6583
  }
@@ -6626,9 +6626,6 @@
6626
6626
  .py-2xs {
6627
6627
  padding-block: var(--spacing-2xs);
6628
6628
  }
6629
- .py-\[calc\(\(3rem-1\.25rem\)\/2\)\] {
6630
- padding-block: calc((3rem - 1.25rem) / 2);
6631
- }
6632
6629
  .py-md {
6633
6630
  padding-block: var(--spacing-md);
6634
6631
  }
@@ -6668,6 +6665,9 @@
6668
6665
  .text-right {
6669
6666
  text-align: right;
6670
6667
  }
6668
+ .text-start {
6669
+ text-align: start;
6670
+ }
6671
6671
  .prose-caps {
6672
6672
  :root &.prose {
6673
6673
  --tw-prose-body: var(--color-base-content);
@@ -6708,6 +6708,10 @@
6708
6708
  font-size: var(--text-3xl);
6709
6709
  line-height: var(--tw-leading, var(--text-3xl--line-height));
6710
6710
  }
6711
+ .text-base {
6712
+ font-size: var(--text-base);
6713
+ line-height: var(--tw-leading, var(--text-base--line-height));
6714
+ }
6711
6715
  .text-lg {
6712
6716
  font-size: var(--text-lg);
6713
6717
  line-height: var(--tw-leading, var(--text-lg--line-height));
@@ -6984,10 +6988,6 @@
6984
6988
  .opacity-70 {
6985
6989
  opacity: 70%;
6986
6990
  }
6987
- .\!shadow-none {
6988
- --tw-shadow: 0 0 #0000 !important;
6989
- box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow) !important;
6990
- }
6991
6991
  .shadow {
6992
6992
  --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
6993
6993
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
@@ -7312,6 +7312,12 @@
7312
7312
  }
7313
7313
  }
7314
7314
  }
7315
+ .after\:hidden {
7316
+ &::after {
7317
+ content: var(--tw-content);
7318
+ display: none;
7319
+ }
7320
+ }
7315
7321
  .hover\:bg-base-200 {
7316
7322
  &:hover {
7317
7323
  @media (hover: hover) {
@@ -7347,12 +7353,6 @@
7347
7353
  }
7348
7354
  }
7349
7355
  }
7350
- .focus\:\!outline-none {
7351
- &:focus {
7352
- --tw-outline-style: none !important;
7353
- outline-style: none !important;
7354
- }
7355
- }
7356
7356
  .focus-visible\:scale-100 {
7357
7357
  &:focus-visible {
7358
7358
  --tw-scale-x: 100%;
@@ -8868,6 +8868,20 @@
8868
8868
  white-space: nowrap;
8869
8869
  }
8870
8870
  }
8871
+ .caps-app-status-bar .badge {
8872
+ height: auto;
8873
+ min-width: 0;
8874
+ padding: 0;
8875
+ border: 0;
8876
+ background: none;
8877
+ color: var(--stipe-fg-muted);
8878
+ font-size: 0.625rem;
8879
+ font-weight: 600;
8880
+ line-height: 1;
8881
+ }
8882
+ .caps-app-status-bar .badge-warning {
8883
+ color: var(--color-warning);
8884
+ }
8871
8885
  .caps-status-bar-picker-list {
8872
8886
  min-width: min(18rem, calc(100vw - 1.5rem));
8873
8887
  }
@@ -11118,17 +11132,61 @@
11118
11132
  color: var(--color-base-content);
11119
11133
  font-size: 0.875rem;
11120
11134
  }
11121
- .caps-composer > .join {
11122
- border: var(--border) solid var(--color-base-content);
11123
- @supports (color: color-mix(in lab, red, red)) {
11124
- border: var(--border) solid color-mix(in oklab, var(--color-base-content) 12%, var(--color-base-300));
11125
- }
11126
- border-radius: var(--radius-box);
11127
- background: var(--color-base-200);
11128
- box-shadow: var( --stipe-shadow-inset, inset 0 calc(var(--depth) * 1px) calc(var(--depth) * 2px) var(--color-base-content), 0 calc(var(--depth) * 1px) 0 var(--color-base-100) );
11129
- @supports (color: color-mix(in lab, red, red)) {
11130
- box-shadow: var( --stipe-shadow-inset, inset 0 calc(var(--depth) * 1px) calc(var(--depth) * 2px) color-mix( in oklab, var(--color-base-content) calc(var(--depth) * 12%), transparent ), 0 calc(var(--depth) * 1px) 0 color-mix( in oklab, var(--color-base-100) calc(var(--depth) * 60%), transparent ) );
11131
- }
11135
+ .caps-composer {
11136
+ display: flex;
11137
+ min-width: 0;
11138
+ flex-direction: column;
11139
+ gap: var(--spacing-xs);
11140
+ }
11141
+ .caps-composer-attachments {
11142
+ display: flex;
11143
+ flex-wrap: wrap;
11144
+ gap: var(--spacing-xs);
11145
+ }
11146
+ .caps-composer-input {
11147
+ position: relative;
11148
+ min-width: 0;
11149
+ }
11150
+ .caps-composer-input :is(textarea, input), .caps-composer-input :is(textarea, input):focus, .caps-composer-input :is(textarea, input):focus-visible {
11151
+ width: 100%;
11152
+ border: 0;
11153
+ border-radius: 0;
11154
+ background: transparent;
11155
+ box-shadow: none;
11156
+ outline: none;
11157
+ padding-inline: 0;
11158
+ }
11159
+ .caps-composer-bar {
11160
+ display: flex;
11161
+ min-width: 0;
11162
+ align-items: center;
11163
+ gap: var(--spacing-xs);
11164
+ }
11165
+ .caps-composer-toolbar {
11166
+ display: flex;
11167
+ min-width: 0;
11168
+ flex: 1;
11169
+ align-items: center;
11170
+ gap: var(--spacing-xs);
11171
+ }
11172
+ .caps-composer-toolbar > .caps-status-tray {
11173
+ flex: 1;
11174
+ min-width: 0;
11175
+ --caps-status-tray-row-wrap: wrap;
11176
+ --caps-status-tray-chips-display: contents;
11177
+ --caps-status-tray-key-height: calc(var(--size-field) * 8);
11178
+ --caps-status-tray-chip-height: var(--caps-status-tray-key-height);
11179
+ --caps-status-tray-width: 28rem;
11180
+ --caps-keycap-width: auto;
11181
+ --caps-keycap-height: var(--caps-status-tray-key-height);
11182
+ }
11183
+ .caps-composer-toolbar > .caps-status-tray .caps-status-tray-row :is(.caps-keycap-button, .caps-status-tray-chip, .caps-select) {
11184
+ height: var(--caps-status-tray-key-height);
11185
+ min-height: var(--caps-status-tray-key-height);
11186
+ }
11187
+ .caps-composer-toolbar > .caps-status-tray .caps-status-tray-label {
11188
+ display: flex;
11189
+ align-items: center;
11132
11190
  }
11133
11191
  .caps-alert[data-tone="error"] h3 {
11134
11192
  color: var(--color-error);
@@ -12771,6 +12829,13 @@
12771
12829
  padding: var(--spacing-md);
12772
12830
  text-align: center;
12773
12831
  }
12832
+ .caps-send-action {
12833
+ --caps-keycap-width: auto;
12834
+ --caps-keycap-justify: center;
12835
+ --caps-keycap-padding: 0;
12836
+ --caps-keycap-min-width: var(--caps-keycap-height, 2.5rem);
12837
+ flex: none;
12838
+ }
12774
12839
  .caps-send-glyph {
12775
12840
  display: inline-grid;
12776
12841
  place-items: center;
@@ -13715,15 +13780,15 @@
13715
13780
  isolation: var(--caps-button-outline-isolation, auto);
13716
13781
  }
13717
13782
  .caps-button.btn-outline:not(:disabled):not([aria-disabled="true"]) {
13718
- background-color: var(--caps-button-outline-face, revert-layer);
13719
- color: var(--caps-button-outline-ink, revert-layer);
13783
+ background-color: var(--caps-key-face);
13784
+ color: var(--caps-button-outline-ink, var(--color-base-content));
13720
13785
  }
13721
13786
  .caps-button.btn-outline:is(:disabled, [aria-disabled="true"]) {
13722
13787
  background-color: var( --caps-button-outline-disabled-face, var(--color-base-200) );
13723
13788
  }
13724
13789
  .caps-button.btn-outline:not(:disabled):not([aria-disabled="true"]):hover {
13725
- background-color: var( --caps-button-outline-hover-face, var(--caps-button-outline-face, revert-layer) );
13726
- color: var( --caps-button-outline-hover-ink, var(--caps-button-outline-ink, revert-layer) );
13790
+ background-color: var( --caps-button-outline-hover-face, var(--caps-keycap-hover-face, var(--caps-key-face)) );
13791
+ color: var( --caps-button-outline-hover-ink, var(--caps-button-outline-ink, var(--color-base-content)) );
13727
13792
  }
13728
13793
  .caps-button.btn-outline::before {
13729
13794
  content: var(--caps-button-outline-inset-content, none);
@@ -13736,21 +13801,36 @@
13736
13801
  .caps-button.btn-outline:hover::before {
13737
13802
  background: var(--color-base-content);
13738
13803
  }
13739
- .caps-button.btn-outline {
13740
- --btn-border: var(--color-base-content);
13804
+ .caps-keycap-button, .caps-button-filled, .caps-button.btn-outline {
13805
+ --caps-key-lip: calc(var(--depth) * 1px);
13806
+ --caps-key-rest-shadow: inset 0 1px 0
13807
+ oklch(100% 0 0 / calc(var(--depth) * var(--caps-key-top-edge, 0.14))),
13808
+ 0 var(--caps-key-lip) 0
13809
+ var(--caps-key-face);
13741
13810
  @supports (color: color-mix(in lab, red, red)) {
13742
- --btn-border: color-mix(
13743
- in oklab,
13744
- var(--color-base-content) 24%,
13745
- transparent
13746
- );
13811
+ --caps-key-rest-shadow: inset 0 1px 0
13812
+ oklch(100% 0 0 / calc(var(--depth) * var(--caps-key-top-edge, 0.14))),
13813
+ 0 var(--caps-key-lip) 0
13814
+ color-mix(
13815
+ in oklab,
13816
+ var(--caps-key-face),
13817
+ var(--caps-key-lip-ink, var(--color-base-content)) 14%
13818
+ );
13747
13819
  }
13820
+ --caps-key-pressed-shadow: inset 0 1px 0 oklch(0% 0 0 / calc(var(--depth) * 0.08)), 0 0 0 transparent;
13821
+ }
13822
+ .caps-button.btn-outline {
13823
+ --btn-border: var(--stipe-linework);
13824
+ --caps-key-face: var(--caps-button-outline-face, var(--color-base-200));
13748
13825
  font-weight: var(--caps-button-weight, 500);
13749
- box-shadow: var(--caps-button-outline-drop, var(--caps-button-drop, none));
13826
+ box-shadow: var( --caps-button-outline-drop, var(--caps-button-drop, var(--caps-key-rest-shadow)) );
13827
+ transition-property: background-color, border-color, box-shadow, translate;
13828
+ transition-duration: var(--stipe-motion-fast);
13829
+ transition-timing-function: ease-out;
13750
13830
  }
13751
13831
  .caps-button.btn-outline:not(:disabled):not([aria-disabled="true"]):active {
13752
- translate: 0 var(--caps-button-press, var(--stipe-press-depth));
13753
- box-shadow: var( --caps-button-outline-drop, var(--caps-button-drop-active, none) );
13832
+ translate: 0 var(--caps-button-press, var(--caps-key-lip));
13833
+ box-shadow: var( --caps-button-outline-drop, var(--caps-button-drop-active, var(--caps-key-pressed-shadow)) );
13754
13834
  }
13755
13835
  .caps-button.btn-ghost {
13756
13836
  font-weight: 500;
@@ -13760,6 +13840,9 @@
13760
13840
  }
13761
13841
  .caps-button-filled {
13762
13842
  --btn-bg: var(--btn-color);
13843
+ --caps-key-face: var(--btn-color);
13844
+ --caps-key-lip-ink: black;
13845
+ --caps-key-top-edge: 0.06;
13763
13846
  --caps-button-filled-edge: var(
13764
13847
  --caps-button-border-color,
13765
13848
  var(--btn-bg)
@@ -13769,7 +13852,7 @@
13769
13852
  --caps-button-border-color,
13770
13853
  color-mix(
13771
13854
  in oklab,
13772
- color-mix(in oklab, var(--btn-bg), black calc(var(--depth) * 8%)),
13855
+ color-mix(in oklab, var(--btn-bg), black calc(var(--depth) * 6%)),
13773
13856
  var(--stipe-linework)
13774
13857
  calc((1 - var(--depth)) * var(--caps-button-linework, 100%))
13775
13858
  )
@@ -13777,7 +13860,7 @@
13777
13860
  }
13778
13861
  --caps-button-filled-drop: var(
13779
13862
  --caps-button-drop,
13780
- inset 0 1px 0 oklch(100% 0 0 / calc(var(--depth) * 0.18))
13863
+ var(--caps-key-rest-shadow)
13781
13864
  );
13782
13865
  background-color: var(--btn-bg);
13783
13866
  color: var(--btn-fg);
@@ -13820,9 +13903,9 @@
13820
13903
  @supports (color: color-mix(in lab, red, red)) {
13821
13904
  --btn-bg: color-mix(in oklab, var(--btn-color) 92%, black);
13822
13905
  }
13823
- translate: 0 var(--caps-button-press, var(--stipe-press-depth));
13906
+ translate: 0 var(--caps-button-press, var(--caps-key-lip));
13824
13907
  scale: var(--stipe-press-scale);
13825
- box-shadow: var( --caps-button-drop-active, inset 0 1px 0 oklch(0% 0 0 / calc(var(--depth) * 0.08)) );
13908
+ box-shadow: var(--caps-button-drop-active, var(--caps-key-pressed-shadow));
13826
13909
  transition-duration: var(--stipe-motion-squish);
13827
13910
  }
13828
13911
  .caps-button.caps-button-menubar {
@@ -14803,7 +14886,7 @@
14803
14886
  scale: none;
14804
14887
  }
14805
14888
  .caps-button-filled:not(:disabled):not([aria-disabled="true"]):active {
14806
- translate: var(--caps-button-press-reduced, none);
14889
+ translate: var(--caps-button-press-reduced, 0 var(--caps-key-lip));
14807
14890
  }
14808
14891
  .caps-gooey-motion, .caps-gooey-motion::before, .caps-switch, .caps-radio, .caps-checkbox, .caps-checkbox-track, .caps-input, .caps-status-bead {
14809
14892
  animation: none !important;
@@ -15988,7 +16071,7 @@
15988
16071
  }
15989
16072
  }
15990
16073
  @media (prefers-reduced-motion: reduce) {
15991
- .caps-keycap, .caps-keycap-button {
16074
+ .caps-keycap, .caps-keycap-button, .caps-button.btn-outline {
15992
16075
  transition: none;
15993
16076
  }
15994
16077
  }
@@ -16059,7 +16142,21 @@
16059
16142
  height: 0.625rem;
16060
16143
  }
16061
16144
  .caps-keycap-button {
16062
- --caps-keycap-lip: calc(var(--depth) * 1px);
16145
+ --caps-key-face: var(--caps-keycap-face, var(--color-base-200));
16146
+ --caps-keycap-rest-shadow: inset 0 1px 0 oklch(100% 0 0 / calc(var(--depth) * 0.18)),
16147
+ 0 var(--caps-key-lip) 0
16148
+ var(--caps-key-face),
16149
+ 0 var(--caps-key-lip) calc(var(--depth) * 2px)
16150
+ oklch(0% 0 0 / calc(var(--depth) * 0.15));
16151
+ @supports (color: color-mix(in lab, red, red)) {
16152
+ --caps-keycap-rest-shadow: inset 0 1px 0 oklch(100% 0 0 / calc(var(--depth) * 0.18)),
16153
+ 0 var(--caps-key-lip) 0
16154
+ color-mix(in oklab, var(--caps-key-face), var(--color-base-content) 14%),
16155
+ 0 var(--caps-key-lip) calc(var(--depth) * 2px)
16156
+ oklch(0% 0 0 / calc(var(--depth) * 0.15));
16157
+ }
16158
+ --caps-keycap-pressed-shadow: inset 0 1px 0 oklch(0% 0 0 / calc(var(--depth) * 0.08)),
16159
+ 0 0 0 transparent, 0 0 0 transparent;
16063
16160
  display: flex;
16064
16161
  width: var(--caps-keycap-width, 100%);
16065
16162
  min-width: var(--caps-keycap-min-width, 0);
@@ -16068,7 +16165,10 @@
16068
16165
  justify-content: var(--caps-keycap-justify, space-between);
16069
16166
  gap: var(--spacing-sm);
16070
16167
  padding: var(--caps-keycap-padding, var(--spacing-xs) var(--spacing-sm));
16071
- border: var( --caps-keycap-context-border, var(--border) solid var(--caps-keycap-edge, var(--stipe-linework)) );
16168
+ border: var( --caps-keycap-context-border, var(--border) solid var( --caps-keycap-edge, var(--stipe-linework) ) );
16169
+ @supports (color: color-mix(in lab, red, red)) {
16170
+ border: var( --caps-keycap-context-border, var(--border) solid var( --caps-keycap-edge, color-mix(in oklab, var(--stipe-linework) 80%, var(--caps-key-face)) ) );
16171
+ }
16072
16172
  font-size: var(--caps-keycap-font-size, inherit);
16073
16173
  font-weight: var( --caps-keycap-context-weight, var(--caps-keycap-font-weight, inherit) );
16074
16174
  border-radius: var(--radius-field);
@@ -16077,12 +16177,28 @@
16077
16177
  var(--caps-keycap-face, var(--color-base-200))
16078
16178
  );
16079
16179
  background-color: var(--caps-keycap-painted-face);
16080
- --caps-keycap-default-image: none;
16081
- background-image: var( --caps-keycap-context-image, var(--caps-keycap-default-image) );
16082
- box-shadow: var( --caps-keycap-context-shadow, inset 0 1px 0 oklch(100% 0 0 / calc(var(--depth) * 0.14)), 0 var(--caps-keycap-lip) 0 var(--caps-keycap-face, var(--color-base-200)) );
16180
+ --caps-keycap-default-image: linear-gradient(
16181
+ to bottom,
16182
+ var(--caps-keycap-painted-face),
16183
+ var(--caps-keycap-painted-face)
16184
+ );
16083
16185
  @supports (color: color-mix(in lab, red, red)) {
16084
- box-shadow: var( --caps-keycap-context-shadow, inset 0 1px 0 oklch(100% 0 0 / calc(var(--depth) * 0.14)), 0 var(--caps-keycap-lip) 0 color-mix( in oklab, var(--caps-keycap-face, var(--color-base-200)), var(--color-base-content) 14% ) );
16186
+ --caps-keycap-default-image: linear-gradient(
16187
+ to bottom,
16188
+ color-mix(
16189
+ in oklab,
16190
+ var(--caps-keycap-painted-face),
16191
+ white calc(var(--depth) * 3%)
16192
+ ),
16193
+ color-mix(
16194
+ in oklab,
16195
+ var(--caps-keycap-painted-face),
16196
+ black calc(var(--depth) * 3%)
16197
+ )
16198
+ );
16085
16199
  }
16200
+ background-image: var( --caps-keycap-context-image, var(--caps-keycap-default-image) );
16201
+ box-shadow: var( --caps-keycap-context-shadow, var(--caps-keycap-rest-shadow) );
16086
16202
  color: var(--caps-keycap-ink, var(--color-base-content));
16087
16203
  text-align: left;
16088
16204
  cursor: pointer;
@@ -16091,8 +16207,8 @@
16091
16207
  transition-timing-function: ease-out;
16092
16208
  }
16093
16209
  .caps-keycap-button:active {
16094
- translate: 0 var(--caps-keycap-context-travel, var(--caps-keycap-lip));
16095
- box-shadow: var( --caps-keycap-active-shadow, inset 0 1px 0 oklch(0% 0 0 / calc(var(--depth) * 0.08)), 0 0 0 transparent );
16210
+ translate: 0 var(--caps-keycap-context-travel, var(--caps-key-lip));
16211
+ box-shadow: var( --caps-keycap-active-shadow, var(--caps-keycap-pressed-shadow) );
16096
16212
  }
16097
16213
  .caps-keycap-button:focus-visible {
16098
16214
  outline: 2px solid var(--caps-keycap-focus-ink, var(--color-base-content));
@@ -16139,6 +16255,28 @@
16139
16255
  --caps-keycap-ink: var(--color-neutral-content);
16140
16256
  --caps-keycap-edge: var(--color-neutral);
16141
16257
  }
16258
+ .caps-keycap-button.caps-send-action[data-tone="primary"] {
16259
+ --caps-keycap-face: var(--color-primary);
16260
+ --caps-keycap-ink: var(--color-primary-content);
16261
+ --caps-keycap-edge: var(--color-primary);
16262
+ @supports (color: color-mix(in lab, red, red)) {
16263
+ --caps-keycap-edge: color-mix(in oklab, var(--color-primary) 82%, black);
16264
+ }
16265
+ --caps-keycap-hover-face: var(--color-primary);
16266
+ @supports (color: color-mix(in lab, red, red)) {
16267
+ --caps-keycap-hover-face: color-mix(
16268
+ in oklab,
16269
+ var(--color-primary) 92%,
16270
+ black
16271
+ );
16272
+ }
16273
+ }
16274
+ .caps-keycap-button.caps-send-action[data-send-state="empty"] {
16275
+ --caps-keycap-face: var(--color-base-200);
16276
+ --caps-keycap-ink: var(--color-base-content);
16277
+ --caps-keycap-edge: var(--stipe-linework);
16278
+ --caps-keycap-hover-face: var(--color-base-200);
16279
+ }
16142
16280
  .caps-keycap-button[data-tone="destructive"]:is(:hover, :focus-visible) {
16143
16281
  --caps-keycap-ink: var(--color-error);
16144
16282
  --caps-keycap-edge: var(--color-error);
@@ -18063,10 +18201,57 @@
18063
18201
  --range-thumb: var(--caps-control-range-thumb, var(--caps-slider-thumb));
18064
18202
  }
18065
18203
  }
18066
- @layer components {
18067
- .chat-composer {
18068
- border-top: 1px solid var(--color-base-300);
18204
+ .caps-popover[data-parakeet-slash][data-side="top"] {
18205
+ inset-inline: var(--parakeet-completion-inset, 0);
18206
+ bottom: calc(100% - var(--parakeet-completion-inset, 0px));
18207
+ border-color: var( --parakeet-completion-edge, var(--color-base-content) );
18208
+ @supports (color: color-mix(in lab, red, red)) {
18209
+ border-color: var( --parakeet-completion-edge, color-mix(in oklab, var(--color-base-content) 16%, transparent) );
18069
18210
  }
18211
+ border-bottom-width: 0;
18212
+ background: var(--parakeet-completion-face, var(--color-base-200));
18213
+ border-end-start-radius: 0;
18214
+ border-end-end-radius: 0;
18215
+ box-shadow: none;
18216
+ }
18217
+ .parakeet-slash-menu .parakeet-slash-label {
18218
+ min-width: 7rem;
18219
+ font-family: var(--font-mono);
18220
+ font-weight: 600;
18221
+ }
18222
+ .parakeet-slash-match {
18223
+ background: none;
18224
+ color: var(--color-primary);
18225
+ }
18226
+ .parakeet-slash-detail {
18227
+ flex: 1;
18228
+ min-width: 0;
18229
+ overflow: hidden;
18230
+ text-overflow: ellipsis;
18231
+ white-space: nowrap;
18232
+ color: var(--stipe-fg-muted);
18233
+ }
18234
+ .parakeet-slash-keys {
18235
+ font-family: var(--font-mono);
18236
+ font-size: 0.65rem;
18237
+ color: var(--stipe-fg-muted);
18238
+ }
18239
+ .parakeet-slash-hint {
18240
+ margin: 0;
18241
+ padding: 0.25rem 0.5rem;
18242
+ font-family: var(--font-mono);
18243
+ font-size: 0.75rem;
18244
+ color: var(--stipe-fg-muted);
18245
+ }
18246
+ .parakeet-slash-menu [data-disabled="true"] {
18247
+ opacity: 0.5;
18248
+ }
18249
+ .parakeet-slash-menu [role="option"]:has(> .parakeet-slash-media) {
18250
+ align-items: center;
18251
+ }
18252
+ .parakeet-slash-media {
18253
+ display: flex;
18254
+ flex: none;
18070
18255
  }
18071
18256
  :root {
18072
18257
  --prose-max-width: 80ch;
@@ -18087,57 +18272,141 @@
18087
18272
  overflow-wrap: break-word;
18088
18273
  }
18089
18274
  .chat-composer {
18090
- background: var(--color-base-100);
18091
18275
  flex-shrink: 0;
18276
+ padding: 0 var(--spacing-xs) var(--spacing-xs);
18092
18277
  }
18093
18278
  .chat-composer .composer-body {
18279
+ --parakeet-completion-inset: 0px;
18280
+ --parakeet-completion-face: var(--color-base-200);
18281
+ --parakeet-completion-edge: var(--stipe-hairline);
18282
+ display: block;
18283
+ }
18284
+ .chat-composer .composer-body:has(> [data-parakeet-slash]) .composer-card {
18285
+ border-start-start-radius: 0;
18286
+ border-start-end-radius: 0;
18287
+ }
18288
+ .chat-composer .composer-card {
18289
+ padding: var(--spacing-sm);
18290
+ }
18291
+ .chat-composer .composer-card .caps-composer-input {
18292
+ padding: var(--spacing-xs) var(--spacing-sm) 0;
18293
+ }
18294
+ .chat-composer .composer-attachments {
18094
18295
  display: flex;
18095
- align-items: center;
18096
- gap: 0.5rem;
18097
- padding: 0.5rem;
18296
+ flex-wrap: wrap;
18297
+ gap: var(--spacing-sm);
18298
+ margin: 0;
18299
+ padding: var(--spacing-xs) var(--spacing-sm);
18300
+ list-style: none;
18301
+ }
18302
+ .chat-composer .composer-attachments li {
18303
+ position: relative;
18304
+ }
18305
+ .chat-composer .composer-attachments img {
18306
+ display: block;
18307
+ width: 3.5rem;
18308
+ height: 3.5rem;
18309
+ object-fit: cover;
18310
+ }
18311
+ .chat-composer .composer-attachment-remove {
18312
+ position: absolute;
18313
+ inset-block-start: 0;
18314
+ inset-inline-end: 0;
18315
+ background: var(--color-base-100);
18316
+ opacity: 0;
18317
+ }
18318
+ .chat-composer .composer-attachments li:hover .composer-attachment-remove, .chat-composer .composer-attachments li:focus-within .composer-attachment-remove {
18319
+ opacity: 1;
18320
+ }
18321
+ @media (hover: none) {
18322
+ .chat-composer .composer-attachment-remove {
18323
+ opacity: 1;
18324
+ }
18098
18325
  }
18099
18326
  .chat-composer .composer-footer {
18100
- display: flex;
18101
- height: 32px;
18102
- align-items: center;
18103
- gap: 0.5rem;
18104
- padding: 0 0.75rem;
18105
- background: var(--color-base-200);
18106
- color: var(--color-base-content);
18107
- font-family: var(--font-sans);
18108
- font-size: 0.65rem;
18327
+ padding: var(--spacing-xs);
18109
18328
  }
18110
- .chat-composer .parakeet-slash-label {
18111
- min-width: 7rem;
18329
+ .chat-composer .composer-model-key {
18330
+ flex: 0 1 220px;
18331
+ min-width: 0;
18332
+ font-size: var(--text-xs);
18333
+ }
18334
+ .chat-composer .composer-model-readout, .chat-composer .composer-status-chip {
18335
+ color: var(--stipe-fg-muted);
18336
+ font-size: var(--text-xs);
18337
+ }
18338
+ .chat-composer .composer-model-readout {
18112
18339
  font-family: var(--font-mono);
18113
- font-weight: 600;
18114
18340
  }
18115
- .chat-composer .parakeet-slash-match {
18116
- background: none;
18117
- color: var(--color-primary);
18341
+ .chat-composer .composer-settings-chip {
18342
+ display: inline-flex;
18343
+ align-items: center;
18344
+ gap: var(--spacing-xs);
18118
18345
  }
18119
- .chat-composer .parakeet-slash-detail {
18120
- flex: 1;
18346
+ .chat-composer .composer-settings-chip > svg {
18347
+ width: var(--stipe-icon-size-sm);
18348
+ height: var(--stipe-icon-size-sm);
18349
+ }
18350
+ .chat-composer .composer-model-key .caps-keycap-button-label {
18121
18351
  min-width: 0;
18122
18352
  overflow: hidden;
18123
18353
  text-overflow: ellipsis;
18124
18354
  white-space: nowrap;
18125
- color: var(--stipe-fg-muted);
18126
18355
  }
18127
- .chat-composer .parakeet-slash-keys {
18128
- font-family: var(--font-mono);
18129
- font-size: 0.65rem;
18130
- color: var(--stipe-fg-muted);
18356
+ .chat-composer .composer-card {
18357
+ container-type: inline-size;
18131
18358
  }
18132
- .chat-composer .parakeet-slash-hint {
18133
- margin: 0;
18134
- padding: 0.25rem 0.5rem;
18135
- font-family: var(--font-mono);
18136
- font-size: 0.75rem;
18359
+ @container (max-width: 34rem) {
18360
+ .chat-composer .composer-model-key {
18361
+ flex: 1 1 4rem;
18362
+ }
18363
+ .chat-composer [data-status-tray-chip="settings"] {
18364
+ flex: 0 1 auto;
18365
+ min-width: 0;
18366
+ }
18367
+ .chat-composer .composer-readout {
18368
+ display: none;
18369
+ }
18370
+ }
18371
+ .chat-composer .composer-readout {
18372
+ margin-inline-start: auto;
18137
18373
  color: var(--stipe-fg-muted);
18374
+ font-size: var(--text-xs);
18375
+ line-height: 1;
18376
+ font-variant-numeric: tabular-nums;
18377
+ white-space: nowrap;
18138
18378
  }
18139
- .chat-composer [data-disabled="true"] {
18140
- opacity: 0.5;
18379
+ .chat-composer .composer-send-key {
18380
+ margin-inline-start: auto;
18381
+ }
18382
+ .chat-composer .composer-readout + .composer-send-key {
18383
+ margin-inline-start: var(--spacing-sm);
18384
+ }
18385
+ .chat-composer .parakeet-decision {
18386
+ padding: var(--spacing-xs) var(--spacing-sm) 0;
18387
+ }
18388
+ .chat-composer .parakeet-decision-list {
18389
+ width: auto;
18390
+ margin-inline: calc(-1 * var(--spacing-xs));
18391
+ border: 0;
18392
+ background: transparent;
18393
+ box-shadow: none;
18394
+ padding: 0;
18395
+ }
18396
+ .chat-composer .parakeet-decision .caps-disclosure-trigger {
18397
+ width: auto;
18398
+ margin-inline: calc(-1 * var(--spacing-xs));
18399
+ padding-inline: var(--spacing-xs);
18400
+ }
18401
+ .chat-composer .composer-model-key {
18402
+ --caps-keycap-justify: space-between;
18403
+ }
18404
+ .parakeet-decision .parakeet-decision-list [role="option"] {
18405
+ padding-inline: var(--spacing-xs);
18406
+ background: transparent;
18407
+ }
18408
+ .parakeet-decision > [data-highlight], .parakeet-decision .parakeet-decision-list [role="option"]:has([data-highlight]) {
18409
+ background: var(--color-base-200);
18141
18410
  }
18142
18411
  .chat-composer .parakeet-command-notice[data-tone="error"] {
18143
18412
  color: var(--color-error);
@@ -18145,12 +18414,6 @@
18145
18414
  .chat-composer .parakeet-command-notice[data-tone="success"] {
18146
18415
  color: var(--color-success);
18147
18416
  }
18148
- .chat-composer .footer-divider {
18149
- width: 3px;
18150
- height: 3px;
18151
- border-radius: 50%;
18152
- background: var(--stipe-fg-muted);
18153
- }
18154
18417
  html:not([data-theme]), [data-theme="latte"] {
18155
18418
  --th-token: #4c4f69;
18156
18419
  --th-attr: #df8e1d;
@@ -18282,6 +18545,19 @@ pre.tm-code, pre.th-code {
18282
18545
  .tm-code, .th-code {
18283
18546
  font-family: var(--font-mono);
18284
18547
  }
18548
+ .parakeet-decision-actions {
18549
+ display: flex;
18550
+ align-items: center;
18551
+ justify-content: flex-end;
18552
+ gap: var(--spacing-xs);
18553
+ --caps-keycap-width: auto;
18554
+ --caps-keycap-justify: center;
18555
+ --caps-keycap-padding: 0 var(--spacing-md);
18556
+ --caps-keycap-height: calc(var(--size-field) * 8);
18557
+ }
18558
+ .parakeet-decision-actions > .caps-keycap-button {
18559
+ height: var(--caps-keycap-height);
18560
+ }
18285
18561
  @layer base {
18286
18562
  :root:has(input.theme-controller[value=light]:checked),[data-theme=light] {
18287
18563
  color-scheme: light;
@@ -19095,6 +19371,11 @@ pre.tm-code, pre.th-code {
19095
19371
  syntax: "*";
19096
19372
  inherits: false;
19097
19373
  }
19374
+ @property --tw-content {
19375
+ syntax: "*";
19376
+ initial-value: "";
19377
+ inherits: false;
19378
+ }
19098
19379
  @layer properties {
19099
19380
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
19100
19381
  :root, :host {
@@ -19151,6 +19432,7 @@ pre.tm-code, pre.th-code {
19151
19432
  --tw-drop-shadow-alpha: 100%;
19152
19433
  --tw-drop-shadow-size: initial;
19153
19434
  --tw-ease: initial;
19435
+ --tw-content: "";
19154
19436
  }
19155
19437
  }
19156
19438
  }