@overmux/pi 0.0.1

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 (70) hide show
  1. package/README.md +118 -0
  2. package/dist/cli.d.ts +1 -0
  3. package/dist/cli.js +40 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/config-2jNv4tol.d.ts +34 -0
  6. package/dist/config-2jNv4tol.d.ts.map +1 -0
  7. package/dist/config.d.ts +2 -0
  8. package/dist/config.js +47 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/extension.d.ts +19 -0
  11. package/dist/extension.d.ts.map +1 -0
  12. package/dist/extension.js +265 -0
  13. package/dist/extension.js.map +1 -0
  14. package/dist/index.d.ts +10 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +16 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/jsonl-tail.d.ts +13 -0
  19. package/dist/jsonl-tail.d.ts.map +1 -0
  20. package/dist/jsonl-tail.js +83 -0
  21. package/dist/jsonl-tail.js.map +1 -0
  22. package/dist/live-events-ClhFOMGW.js +497 -0
  23. package/dist/live-events-ClhFOMGW.js.map +1 -0
  24. package/dist/live-events-DAmf6RRx.d.ts +107 -0
  25. package/dist/live-events-DAmf6RRx.d.ts.map +1 -0
  26. package/dist/live-events.d.ts +2 -0
  27. package/dist/live-events.js +2 -0
  28. package/dist/notification-DzOd9cRc.d.ts +20 -0
  29. package/dist/notification-DzOd9cRc.d.ts.map +1 -0
  30. package/dist/notification.d.ts +2 -0
  31. package/dist/notification.js +54 -0
  32. package/dist/notification.js.map +1 -0
  33. package/dist/plugin.d.ts +90 -0
  34. package/dist/plugin.d.ts.map +1 -0
  35. package/dist/plugin.js +213 -0
  36. package/dist/plugin.js.map +1 -0
  37. package/dist/projection.d.ts +101 -0
  38. package/dist/projection.d.ts.map +1 -0
  39. package/dist/projection.js +550 -0
  40. package/dist/projection.js.map +1 -0
  41. package/dist/protocol-CsrnSPOv.d.ts +115 -0
  42. package/dist/protocol-CsrnSPOv.d.ts.map +1 -0
  43. package/dist/protocol.d.ts +2 -0
  44. package/dist/protocol.js +365 -0
  45. package/dist/protocol.js.map +1 -0
  46. package/dist/react.d.ts +139 -0
  47. package/dist/react.d.ts.map +1 -0
  48. package/dist/react.js +796 -0
  49. package/dist/react.js.map +1 -0
  50. package/dist/server.d.ts +5 -0
  51. package/dist/server.js +4 -0
  52. package/dist/session-status-CZLTo8Km.d.ts +71 -0
  53. package/dist/session-status-CZLTo8Km.d.ts.map +1 -0
  54. package/dist/styles.css +619 -0
  55. package/docs/index.md +10 -0
  56. package/package.json +115 -0
  57. package/src/cli.ts +59 -0
  58. package/src/config.ts +87 -0
  59. package/src/extension.ts +486 -0
  60. package/src/index.ts +14 -0
  61. package/src/jsonl-tail.ts +110 -0
  62. package/src/live-events.ts +578 -0
  63. package/src/notification.ts +109 -0
  64. package/src/plugin.ts +369 -0
  65. package/src/projection.ts +995 -0
  66. package/src/protocol.ts +805 -0
  67. package/src/react.tsx +1293 -0
  68. package/src/server.ts +15 -0
  69. package/src/session-status.ts +379 -0
  70. package/src/styles.css +619 -0
package/src/styles.css ADDED
@@ -0,0 +1,619 @@
1
+ @layer om.components {
2
+ @scope ([data-om-pi-conversation], [data-om-pi-composer]) {
3
+ :where(:scope[data-om-pi-conversation]) {
4
+ position: relative;
5
+ display: flex;
6
+ min-inline-size: 0;
7
+ min-block-size: 0;
8
+ flex: 1 1 auto;
9
+ flex-direction: column;
10
+ color: var(--om-color-fg, inherit);
11
+ background: var(--om-color-surface, transparent);
12
+ font-family: var(--om-font-sans, sans-serif);
13
+ }
14
+
15
+ :where(.om-pi-conversation-status) {
16
+ display: flex;
17
+ min-block-size: 2.5rem;
18
+ flex: none;
19
+ flex-direction: column;
20
+ gap: calc(var(--om-spacing, 0.75rem) * 0.3333);
21
+ padding-block: calc(var(--om-spacing, 0.75rem) * 0.75);
22
+ padding-inline: var(--om-spacing, 0.75rem);
23
+ border-block-end: 1px solid var(--om-color-border, currentColor);
24
+ background: var(--om-color-panel, transparent);
25
+ font-size: 0.875rem;
26
+ }
27
+
28
+ :where(.om-pi-conversation-status-row) {
29
+ display: flex;
30
+ align-items: center;
31
+ justify-content: space-between;
32
+ gap: var(--om-spacing, 0.75rem);
33
+ }
34
+
35
+ :where(.om-pi-conversation-metadata) {
36
+ max-inline-size: 100%;
37
+ flex: none;
38
+ overflow-wrap: anywhere;
39
+ padding-block: calc(var(--om-spacing, 0.75rem) * 0.5);
40
+ padding-inline: var(--om-spacing, 0.75rem);
41
+ border-block-start: 1px solid var(--om-color-border, currentColor);
42
+ background: var(--om-color-surface, transparent);
43
+ font-size: 0.75rem;
44
+ line-height: 1.125rem;
45
+ }
46
+
47
+ :where(.om-pi-metadata-select) {
48
+ max-inline-size: 14rem;
49
+ field-sizing: content;
50
+ border: 0;
51
+ border-radius: 0.25rem;
52
+ background: transparent;
53
+ color: inherit;
54
+ font: inherit;
55
+ }
56
+
57
+ :where(.om-pi-metadata-select:focus-visible) {
58
+ outline: 2px solid var(--om-color-accent, currentColor);
59
+ outline-offset: 2px;
60
+ }
61
+
62
+ :where(.om-pi-metadata-error) {
63
+ display: block;
64
+ color: var(--om-color-danger, currentColor);
65
+ overflow-wrap: anywhere;
66
+ }
67
+
68
+ :where(.om-pi-conversation-scroller) {
69
+ min-block-size: 0;
70
+ flex: 1 1 auto;
71
+ overflow-y: auto;
72
+ overscroll-behavior: contain;
73
+ padding: var(--om-spacing, 0.75rem);
74
+ }
75
+
76
+ :where(.om-pi-conversation-content) {
77
+ display: grid;
78
+ inline-size: 100%;
79
+ max-inline-size: 64rem;
80
+ margin-inline: auto;
81
+ gap: calc(var(--om-spacing, 0.75rem) * 1.3333);
82
+ }
83
+
84
+ :where(.om-pi-conversation-content > *, .om-pi-content-block > *) {
85
+ min-inline-size: 0;
86
+ }
87
+
88
+ :where(.om-pi-conversation-entry) {
89
+ inline-size: 100%;
90
+ overflow-wrap: anywhere;
91
+ }
92
+
93
+ :where(.om-pi-conversation-entry:not([data-om-role="user"])) {
94
+ max-inline-size: 56rem;
95
+ margin-inline-end: auto;
96
+ padding-block: calc(var(--om-spacing, 0.75rem) * 0.6667);
97
+ padding-inline: calc(var(--om-spacing, 0.75rem) * 0.3333);
98
+ }
99
+
100
+ :where(.om-pi-conversation-entry[data-om-role="user"]) {
101
+ max-inline-size: 48rem;
102
+ margin-inline-start: auto;
103
+ padding: var(--om-spacing, 0.75rem);
104
+ border-radius: calc(var(--om-radius, 0.5rem) * 2);
105
+ background: var(--om-color-panel, transparent);
106
+ }
107
+
108
+ :where(.om-pi-conversation-entry > header) {
109
+ display: flex;
110
+ align-items: center;
111
+ gap: calc(var(--om-spacing, 0.75rem) * 0.6667);
112
+ margin-block-end: calc(var(--om-spacing, 0.75rem) * 0.6667);
113
+ font-size: 0.75rem;
114
+ font-weight: 500;
115
+ }
116
+
117
+ :where(.om-pi-content-block) {
118
+ display: grid;
119
+ gap: var(--om-spacing, 0.75rem);
120
+ }
121
+
122
+ :where(.om-pi-markdown) {
123
+ overflow-wrap: anywhere;
124
+ line-height: 1.75rem;
125
+ }
126
+
127
+ :where(.om-pi-markdown p) {
128
+ margin-block: 0 var(--om-spacing, 0.75rem);
129
+ }
130
+
131
+ :where(.om-pi-markdown p:last-child) {
132
+ margin-block-end: 0;
133
+ }
134
+
135
+ :where(.om-pi-markdown h1, .om-pi-markdown h2, .om-pi-markdown h3) {
136
+ margin-block-start: 0;
137
+ font-weight: 600;
138
+ }
139
+
140
+ :where(.om-pi-markdown h1) {
141
+ margin-block-end: var(--om-spacing, 0.75rem);
142
+ font-size: 1.5rem;
143
+ }
144
+
145
+ :where(.om-pi-markdown h2) {
146
+ margin-block-end: calc(var(--om-spacing, 0.75rem) * 0.6667);
147
+ font-size: 1.25rem;
148
+ }
149
+
150
+ :where(.om-pi-markdown h3) {
151
+ margin-block-end: calc(var(--om-spacing, 0.75rem) * 0.6667);
152
+ }
153
+
154
+ :where(.om-pi-markdown ol, .om-pi-markdown ul) {
155
+ margin-block: var(--om-spacing, 0.75rem);
156
+ padding-inline-start: calc(var(--om-spacing, 0.75rem) * 2);
157
+ }
158
+
159
+ :where(.om-pi-markdown ol) {
160
+ list-style: decimal;
161
+ }
162
+
163
+ :where(.om-pi-markdown ul) {
164
+ list-style: disc;
165
+ }
166
+
167
+ :where(.om-pi-markdown li) {
168
+ margin-block: calc(var(--om-spacing, 0.75rem) * 0.3333);
169
+ }
170
+
171
+ :where(.om-pi-markdown blockquote) {
172
+ margin: 0;
173
+ padding-inline-start: var(--om-spacing, 0.75rem);
174
+ border-inline-start: 2px solid var(--om-color-border, currentColor);
175
+ }
176
+
177
+ :where(.om-pi-markdown a) {
178
+ color: var(--om-color-accent, LinkText);
179
+ text-decoration: underline;
180
+ text-underline-offset: 2px;
181
+ }
182
+
183
+ :where(.om-pi-markdown code) {
184
+ font-family: var(--om-font-mono, monospace);
185
+ font-size: 0.9em;
186
+ }
187
+
188
+ :where(.om-pi-markdown :not(pre) > code) {
189
+ padding-block: 0.125rem;
190
+ padding-inline: 0.375rem;
191
+ border: 1px solid var(--om-color-border, currentColor);
192
+ border-radius: calc(var(--om-radius, 0.5rem) * 0.75);
193
+ background: var(--om-color-panel, transparent);
194
+ box-decoration-break: clone;
195
+ overflow-wrap: anywhere;
196
+ }
197
+
198
+ :where(.om-pi-markdown pre) {
199
+ margin-block: var(--om-spacing, 0.75rem);
200
+ overflow-x: auto;
201
+ padding: var(--om-spacing, 0.75rem);
202
+ border-radius: var(--om-radius, 0.5rem);
203
+ background: color-mix(
204
+ in srgb,
205
+ var(--om-color-panel, transparent) 70%,
206
+ transparent
207
+ );
208
+ font-size: 0.75rem;
209
+ line-height: 1.25rem;
210
+ }
211
+
212
+ :where(.om-pi-tool-details) {
213
+ overflow: visible;
214
+ padding-block: calc(var(--om-spacing, 0.75rem) * 0.6667);
215
+ padding-inline: var(--om-spacing, 0.75rem);
216
+ border-radius: var(--om-radius, 0.5rem);
217
+ background: color-mix(
218
+ in srgb,
219
+ var(--om-color-panel, transparent) 50%,
220
+ transparent
221
+ );
222
+ }
223
+
224
+ :where(
225
+ details.om-pi-tool-details > summary,
226
+ details.om-pi-tool-section > summary,
227
+ .om-pi-tool-summary,
228
+ details.om-pi-thinking > summary
229
+ ) {
230
+ font-size: 0.75rem;
231
+ font-weight: 500;
232
+ }
233
+
234
+ :where(
235
+ details.om-pi-tool-details > summary,
236
+ details.om-pi-tool-section > summary,
237
+ details.om-pi-thinking > summary
238
+ ) {
239
+ cursor: pointer;
240
+ }
241
+
242
+ :where(details.om-pi-tool-section > summary) {
243
+ display: flex;
244
+ align-items: center;
245
+ gap: calc(var(--om-spacing, 0.75rem) * 0.25);
246
+ list-style: none;
247
+ }
248
+
249
+ details.om-pi-tool-section > summary::-webkit-details-marker {
250
+ display: none;
251
+ }
252
+
253
+ :where(details.om-pi-tool-section > summary > svg) {
254
+ inline-size: 0.875rem;
255
+ block-size: 0.875rem;
256
+ flex: none;
257
+ color: var(--om-color-muted, currentColor);
258
+ transition: transform 120ms ease;
259
+ }
260
+
261
+ :where(details.om-pi-tool-section[open] > summary > svg) {
262
+ transform: rotate(90deg);
263
+ }
264
+
265
+ :where(.om-pi-tool-status) {
266
+ display: inline-block;
267
+ inline-size: 1rem;
268
+ margin-inline-end: calc(var(--om-spacing, 0.75rem) * 0.5);
269
+ color: var(--om-color-muted, currentColor);
270
+ }
271
+
272
+ :where(.om-pi-tool-status-label) {
273
+ inline-size: auto;
274
+ }
275
+
276
+ :where([data-om-tool-status="pending"] .om-pi-tool-status) {
277
+ color: var(--om-color-accent, currentColor);
278
+ }
279
+
280
+ :where([data-om-tool-status="error"] .om-pi-tool-status) {
281
+ color: var(--om-color-danger, currentColor);
282
+ }
283
+
284
+ :where(.om-pi-thinking) {
285
+ margin-block: calc(var(--om-spacing, 0.75rem) * 0.6667);
286
+ padding-inline-start: var(--om-spacing, 0.75rem);
287
+ border-inline-start: 2px solid var(--om-color-border, currentColor);
288
+ }
289
+
290
+ :where(.om-pi-thinking > .om-pi-content-block) {
291
+ margin-block-start: calc(var(--om-spacing, 0.75rem) * 0.6667);
292
+ }
293
+
294
+ :where(details.om-pi-tool-details > .om-pi-content-block) {
295
+ margin-block-start: calc(var(--om-spacing, 0.75rem) * 0.6667);
296
+ font-size: 0.875rem;
297
+ }
298
+
299
+ :where(.om-pi-tool-body) {
300
+ margin-block-start: calc(var(--om-spacing, 0.75rem) * 0.6667);
301
+ }
302
+
303
+ :where(.om-pi-tool-kind) {
304
+ margin-block-end: calc(var(--om-spacing, 0.75rem) * 0.5);
305
+ font-size: 0.75rem;
306
+ font-weight: 500;
307
+ }
308
+
309
+ :where(.om-pi-tool-kind > .om-pi-tool-status) {
310
+ margin-inline-end: 0;
311
+ }
312
+
313
+ :where(.om-pi-tool-path) {
314
+ font-family: var(--om-font-mono, monospace);
315
+ }
316
+
317
+ :where(.om-pi-tool-command) {
318
+ margin-block: 0 calc(var(--om-spacing, 0.75rem) * 0.6667);
319
+ overflow-wrap: anywhere;
320
+ padding: calc(var(--om-spacing, 0.75rem) * 0.6667);
321
+ border-radius: var(--om-radius, 0.5rem);
322
+ background: color-mix(
323
+ in srgb,
324
+ var(--om-color-canvas, transparent) 60%,
325
+ transparent
326
+ );
327
+ font-family: var(--om-font-mono, monospace);
328
+ font-size: 0.75rem;
329
+ white-space: pre-wrap;
330
+ }
331
+
332
+ :where(details.om-pi-tool-details > section) {
333
+ margin-block-start: calc(var(--om-spacing, 0.75rem) * 0.6667);
334
+ }
335
+
336
+ :where(details.om-pi-tool-details > section > .om-pi-tool-error) {
337
+ margin-block: 0 calc(var(--om-spacing, 0.75rem) * 0.6667);
338
+ font-size: 0.75rem;
339
+ font-weight: 500;
340
+ }
341
+
342
+ :where(
343
+ pre.om-pi-tool-details,
344
+ pre.om-pi-tool-diff,
345
+ pre.om-pi-tool-input,
346
+ pre.om-pi-tool-output,
347
+ pre.om-pi-tool-error,
348
+ .om-pi-tool-diff > pre
349
+ ) {
350
+ margin-block: calc(var(--om-spacing, 0.75rem) * 0.6667) 0;
351
+ overflow-x: auto;
352
+ overflow-wrap: anywhere;
353
+ padding: calc(var(--om-spacing, 0.75rem) * 0.6667);
354
+ border-radius: var(--om-radius, 0.5rem);
355
+ background: color-mix(
356
+ in srgb,
357
+ var(--om-color-canvas, transparent) 60%,
358
+ transparent
359
+ );
360
+ font-family: var(--om-font-mono, monospace);
361
+ font-size: 0.75rem;
362
+ white-space: pre-wrap;
363
+ }
364
+
365
+ :where(.om-pi-tool-field) {
366
+ margin-block: calc(var(--om-spacing, 0.75rem) * 0.6667) 0;
367
+ font-size: 0.75rem;
368
+ }
369
+
370
+ :where(.om-pi-conversation-error, .om-pi-tool-error) {
371
+ color: var(--om-color-danger, currentColor);
372
+ }
373
+
374
+ :where(.om-pi-muted) {
375
+ color: var(--om-color-muted, currentColor);
376
+ }
377
+
378
+ :where(.om-pi-conversation-entry > .om-pi-conversation-error) {
379
+ margin-block: var(--om-spacing, 0.75rem) 0;
380
+ font-size: 0.875rem;
381
+ }
382
+
383
+ :where([data-om-pi-conversation] > .om-pi-conversation-error) {
384
+ flex: none;
385
+ margin: 0;
386
+ padding-block: calc(var(--om-spacing, 0.75rem) * 0.6667);
387
+ padding-inline: var(--om-spacing, 0.75rem);
388
+ background: color-mix(
389
+ in srgb,
390
+ var(--om-color-danger, currentColor) 16%,
391
+ transparent
392
+ );
393
+ font-size: 0.875rem;
394
+ }
395
+
396
+ :where(.om-pi-conversation-content > p.om-pi-muted) {
397
+ margin: 0;
398
+ padding-block: calc(var(--om-spacing, 0.75rem) * 4);
399
+ text-align: center;
400
+ }
401
+
402
+ :where(.om-pi-conversation-jump) {
403
+ position: absolute;
404
+ inset-block-end: 8rem;
405
+ inset-inline-start: 50%;
406
+ min-block-size: 2.25rem;
407
+ transform: translateX(-50%);
408
+ padding-block: calc(var(--om-spacing, 0.75rem) * 0.6667);
409
+ padding-inline: var(--om-spacing, 0.75rem);
410
+ border: 1px solid var(--om-color-border, currentColor);
411
+ border-radius: 999px;
412
+ color: inherit;
413
+ background: var(--om-color-panel, transparent);
414
+ box-shadow: var(--om-elevation, 0 0.5rem 1rem rgb(0 0 0 / 20%));
415
+ font: inherit;
416
+ font-size: 0.875rem;
417
+ }
418
+
419
+ :where(:scope[data-om-pi-composer]) {
420
+ flex: none;
421
+ padding: var(--om-spacing, 0.75rem);
422
+ border-block-start: 1px solid var(--om-color-border, currentColor);
423
+ background: var(--om-color-surface, transparent);
424
+ }
425
+
426
+ :where(.om-pi-composer-box) {
427
+ position: relative;
428
+ display: grid;
429
+ max-inline-size: 64rem;
430
+ margin-inline: auto;
431
+ padding-inline: var(--om-spacing, 0.75rem);
432
+ border: 1px solid var(--om-color-border, currentColor);
433
+ border-radius: calc(var(--om-radius, 0.5rem) * 1.5);
434
+ background: var(--om-color-panel, transparent);
435
+ box-shadow: var(--om-elevation, 0 1px 2px rgb(0 0 0 / 12%));
436
+ }
437
+
438
+ :where(.om-pi-composer-box:focus-within) {
439
+ border-color: var(--om-color-accent, Highlight);
440
+ }
441
+
442
+ :where(.om-pi-composer-textarea) {
443
+ display: block;
444
+ box-sizing: border-box;
445
+ inline-size: 100%;
446
+ min-block-size: 2.75rem;
447
+ max-block-size: 12rem;
448
+ resize: none;
449
+ padding-block: calc((2.75rem - 1.25rem) / 2);
450
+ border: 0;
451
+ outline: none;
452
+ color: var(--om-color-fg, inherit);
453
+ background: transparent;
454
+ font: inherit;
455
+ line-height: 1.25rem;
456
+ }
457
+
458
+ :where(.om-pi-composer-textarea-with-stop) {
459
+ padding-inline-end: 2.75rem;
460
+ }
461
+
462
+ :where(.om-pi-composer-textarea::placeholder) {
463
+ color: var(--om-color-muted, currentColor);
464
+ opacity: 1;
465
+ }
466
+
467
+ :where(.om-pi-composer-actions) {
468
+ display: flex;
469
+ min-block-size: 2.75rem;
470
+ align-items: center;
471
+ justify-content: flex-end;
472
+ gap: calc(var(--om-spacing, 0.75rem) * 0.6667);
473
+ border-block-start: 1px solid var(--om-color-border, currentColor);
474
+ }
475
+
476
+ :where(
477
+ .om-pi-composer-textarea:placeholder-shown:not(:focus)
478
+ ~ .om-pi-composer-actions
479
+ ) {
480
+ display: none;
481
+ }
482
+
483
+ :where(
484
+ .om-pi-composer-send,
485
+ .om-pi-composer-follow-up,
486
+ .om-pi-composer-stop
487
+ ) {
488
+ min-block-size: 2.25rem;
489
+ padding-inline: var(--om-spacing, 0.75rem);
490
+ border: 0;
491
+ border-radius: var(--om-radius, 0.5rem);
492
+ color: inherit;
493
+ background: transparent;
494
+ font: inherit;
495
+ font-size: 0.875rem;
496
+ }
497
+
498
+ :where(.om-pi-composer-send) {
499
+ display: inline-flex;
500
+ align-items: center;
501
+ gap: calc(var(--om-spacing, 0.75rem) * 0.5);
502
+ color: var(
503
+ --om-color-accent-fg,
504
+ var(--_om-color-accent-fg, HighlightText)
505
+ );
506
+ background: var(--om-color-accent, Highlight);
507
+ font-weight: 600;
508
+ }
509
+
510
+ :where(.om-pi-composer-send > svg) {
511
+ inline-size: 1rem;
512
+ block-size: 1rem;
513
+ flex: none;
514
+ }
515
+
516
+ :where(.om-pi-composer-follow-up) {
517
+ padding-inline: calc(var(--om-spacing, 0.75rem) * 0.6667);
518
+ color: var(--om-color-muted, currentColor);
519
+ }
520
+
521
+ :where(.om-pi-composer-stop) {
522
+ display: inline-grid;
523
+ inline-size: 1.875rem;
524
+ min-block-size: 1.875rem;
525
+ block-size: 1.875rem;
526
+ place-items: center;
527
+ padding: 0;
528
+ border-radius: 999px;
529
+ color: var(
530
+ --om-color-accent-fg,
531
+ var(--_om-color-accent-fg, HighlightText)
532
+ );
533
+ background: var(--om-color-accent, Highlight);
534
+ }
535
+
536
+ :where(.om-pi-composer-stop > svg) {
537
+ inline-size: 0.8125rem;
538
+ block-size: 0.8125rem;
539
+ fill: currentColor;
540
+ opacity: 0.6;
541
+ }
542
+
543
+ :where(.om-pi-composer-stop-inline) {
544
+ position: absolute;
545
+ inset-block-start: 0.4375rem;
546
+ inset-inline-end: 0.5rem;
547
+ }
548
+
549
+ :where(.om-pi-composer-follow-up:hover:not(:disabled)) {
550
+ background: var(--om-color-panel, transparent);
551
+ }
552
+
553
+ :where(.om-pi-composer-stop:hover:not(:disabled)) {
554
+ filter: brightness(1.1);
555
+ }
556
+
557
+ :where(.om-pi-composer-actions > .om-pi-muted) {
558
+ display: none;
559
+ font-size: 0.75rem;
560
+ }
561
+
562
+ :where(
563
+ .om-pi-composer-send:disabled,
564
+ .om-pi-composer-follow-up:disabled,
565
+ .om-pi-composer-stop:disabled,
566
+ .om-pi-composer-textarea:disabled
567
+ ) {
568
+ cursor: not-allowed;
569
+ opacity: 0.5;
570
+ }
571
+
572
+ :where(
573
+ .om-pi-conversation-jump,
574
+ .om-pi-composer-send,
575
+ .om-pi-composer-follow-up,
576
+ .om-pi-composer-stop
577
+ ):focus-visible {
578
+ outline: 2px solid var(--om-color-accent, Highlight);
579
+ outline-offset: 2px;
580
+ box-shadow: var(--om-focus-ring, none);
581
+ }
582
+
583
+ :where([data-om-pi-composer] > .om-pi-conversation-error) {
584
+ margin-block: calc(var(--om-spacing, 0.75rem) * 0.6667) 0;
585
+ font-size: 0.875rem;
586
+ }
587
+
588
+ :where(.om-pi-visually-hidden) {
589
+ position: absolute;
590
+ inline-size: 1px;
591
+ block-size: 1px;
592
+ overflow: hidden;
593
+ clip-path: inset(50%);
594
+ white-space: nowrap;
595
+ }
596
+
597
+ @media (width >= 40rem) {
598
+ :where(.om-pi-conversation-scroller) {
599
+ padding: calc(var(--om-spacing, 0.75rem) * 1.6667);
600
+ }
601
+
602
+ :where(:scope[data-om-pi-composer]) {
603
+ padding: calc(var(--om-spacing, 0.75rem) * 1.3333);
604
+ }
605
+
606
+ :where(.om-pi-composer-actions > .om-pi-muted) {
607
+ display: inline;
608
+ }
609
+ }
610
+ }
611
+
612
+ @media (forced-colors: active) {
613
+ @scope ([data-om-pi-conversation], [data-om-pi-composer]) {
614
+ :where(:scope) {
615
+ forced-color-adjust: auto;
616
+ }
617
+ }
618
+ }
619
+ }