@duckmind/dm-darwin-x64 0.33.0 → 0.33.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 (81) hide show
  1. package/dm +0 -0
  2. package/extensions/.dm-extensions.json +1 -76
  3. package/package.json +1 -1
  4. package/theme/theme-alps.json +93 -0
  5. package/extensions/dm-chime/README.md +0 -11
  6. package/extensions/dm-chime/docs/protocols.md +0 -107
  7. package/extensions/dm-chime/index.ts +0 -205
  8. package/extensions/dm-chime/package.json +0 -33
  9. package/extensions/dm-phone/README.md +0 -24
  10. package/extensions/dm-phone/index.ts +0 -12
  11. package/extensions/dm-phone/node_modules/.package-lock.json +0 -29
  12. package/extensions/dm-phone/node_modules/ws/LICENSE +0 -20
  13. package/extensions/dm-phone/node_modules/ws/README.md +0 -548
  14. package/extensions/dm-phone/node_modules/ws/browser.js +0 -8
  15. package/extensions/dm-phone/node_modules/ws/index.js +0 -22
  16. package/extensions/dm-phone/node_modules/ws/lib/buffer-util.js +0 -131
  17. package/extensions/dm-phone/node_modules/ws/lib/constants.js +0 -19
  18. package/extensions/dm-phone/node_modules/ws/lib/event-target.js +0 -292
  19. package/extensions/dm-phone/node_modules/ws/lib/extension.js +0 -203
  20. package/extensions/dm-phone/node_modules/ws/lib/limiter.js +0 -55
  21. package/extensions/dm-phone/node_modules/ws/lib/permessage-deflate.js +0 -528
  22. package/extensions/dm-phone/node_modules/ws/lib/receiver.js +0 -760
  23. package/extensions/dm-phone/node_modules/ws/lib/sender.js +0 -607
  24. package/extensions/dm-phone/node_modules/ws/lib/stream.js +0 -161
  25. package/extensions/dm-phone/node_modules/ws/lib/subprotocol.js +0 -62
  26. package/extensions/dm-phone/node_modules/ws/lib/validation.js +0 -152
  27. package/extensions/dm-phone/node_modules/ws/lib/websocket-server.js +0 -562
  28. package/extensions/dm-phone/node_modules/ws/lib/websocket.js +0 -1407
  29. package/extensions/dm-phone/node_modules/ws/package.json +0 -70
  30. package/extensions/dm-phone/node_modules/ws/wrapper.mjs +0 -21
  31. package/extensions/dm-phone/package-lock.json +0 -66
  32. package/extensions/dm-phone/package.json +0 -35
  33. package/extensions/dm-phone/phone-session-pool.ts +0 -8
  34. package/extensions/dm-phone/public/app/attachments.js +0 -233
  35. package/extensions/dm-phone/public/app/autocomplete-controller.js +0 -81
  36. package/extensions/dm-phone/public/app/autocomplete.js +0 -135
  37. package/extensions/dm-phone/public/app/bindings.js +0 -178
  38. package/extensions/dm-phone/public/app/command-catalog.js +0 -76
  39. package/extensions/dm-phone/public/app/commands.js +0 -376
  40. package/extensions/dm-phone/public/app/constants.js +0 -60
  41. package/extensions/dm-phone/public/app/formatters.js +0 -131
  42. package/extensions/dm-phone/public/app/handlers.js +0 -442
  43. package/extensions/dm-phone/public/app/main.js +0 -6
  44. package/extensions/dm-phone/public/app/markdown.js +0 -105
  45. package/extensions/dm-phone/public/app/messages.js +0 -418
  46. package/extensions/dm-phone/public/app/sheet-actions.js +0 -113
  47. package/extensions/dm-phone/public/app/sheet-navigation.js +0 -19
  48. package/extensions/dm-phone/public/app/sheets-view.js +0 -287
  49. package/extensions/dm-phone/public/app/state.js +0 -95
  50. package/extensions/dm-phone/public/app/tool-rendering.js +0 -562
  51. package/extensions/dm-phone/public/app/transport.js +0 -176
  52. package/extensions/dm-phone/public/app/ui.js +0 -417
  53. package/extensions/dm-phone/public/app.js +0 -1
  54. package/extensions/dm-phone/public/icon.svg +0 -15
  55. package/extensions/dm-phone/public/index.html +0 -146
  56. package/extensions/dm-phone/public/manifest.webmanifest +0 -17
  57. package/extensions/dm-phone/public/styles.css +0 -1139
  58. package/extensions/dm-phone/public/sw.js +0 -78
  59. package/extensions/dm-phone/src/extension/duckmind-models.js +0 -264
  60. package/extensions/dm-phone/src/extension/phone-args.ts +0 -121
  61. package/extensions/dm-phone/src/extension/phone-paths.ts +0 -250
  62. package/extensions/dm-phone/src/extension/phone-quota.ts +0 -188
  63. package/extensions/dm-phone/src/extension/phone-runtime.ts +0 -154
  64. package/extensions/dm-phone/src/extension/phone-server-runtime.ts +0 -1217
  65. package/extensions/dm-phone/src/extension/phone-sessions.ts +0 -139
  66. package/extensions/dm-phone/src/extension/phone-static.ts +0 -30
  67. package/extensions/dm-phone/src/extension/phone-tailscale.ts +0 -148
  68. package/extensions/dm-phone/src/extension/phone-theme.ts +0 -85
  69. package/extensions/dm-phone/src/extension/register-phone-child-extension.ts +0 -112
  70. package/extensions/dm-phone/src/extension/register-phone-extension.ts +0 -106
  71. package/extensions/dm-phone/src/extension/types.ts +0 -73
  72. package/extensions/dm-phone/src/session-pool/parent-session-worker.ts +0 -882
  73. package/extensions/dm-phone/src/session-pool/session-pool.ts +0 -470
  74. package/extensions/dm-phone/src/session-pool/session-worker.ts +0 -739
  75. package/extensions/dm-phone/src/session-pool/types.ts +0 -111
  76. package/extensions/dm-phone/src/session-pool/utils.ts +0 -23
  77. package/extensions/dm-phone/test/duckmind-models.test.js +0 -147
  78. package/extensions/dm-thinking-timer/LICENSE +0 -21
  79. package/extensions/dm-thinking-timer/README.md +0 -7
  80. package/extensions/dm-thinking-timer/package.json +0 -20
  81. package/extensions/dm-thinking-timer/thinking-timer.ts +0 -250
@@ -1,1139 +0,0 @@
1
- :root {
2
- color-scheme: dark;
3
- --bg: #071018;
4
- --bg-elevated: rgba(12, 18, 24, 0.94);
5
- --panel: rgba(14, 22, 30, 0.92);
6
- --panel-2: rgba(19, 31, 42, 0.95);
7
- --border: rgba(135, 174, 204, 0.18);
8
- --border-strong: rgba(135, 174, 204, 0.3);
9
- --text: #edf5ff;
10
- --muted: #9db0c4;
11
- --dim: #74879a;
12
- --accent: #7fd4ff;
13
- --accent-2: #4ea9da;
14
- --success: #7ce0aa;
15
- --warning: #ffd27f;
16
- --danger: #ff8d8d;
17
- --md-code: var(--accent);
18
- --md-code-block: var(--text);
19
- --md-code-block-border: var(--border-strong);
20
- --assistant-bg: rgba(14, 29, 42, 0.9);
21
- --user-bg: rgba(31, 48, 63, 0.95);
22
- --tool-bg: rgba(19, 31, 42, 0.85);
23
- --system-bg: rgba(14, 20, 28, 0.86);
24
- --radius: 18px;
25
- --shadow: 0 18px 42px rgba(0, 0, 0, 0.28);
26
- --composer-reserve: 11.5rem;
27
- }
28
-
29
- * {
30
- box-sizing: border-box;
31
- }
32
-
33
- html,
34
- body {
35
- min-height: 100%;
36
- margin: 0;
37
- background:
38
- radial-gradient(circle at top, rgba(53, 96, 133, 0.22) 0%, rgba(7, 16, 24, 0.98) 44%),
39
- linear-gradient(180deg, #09121a 0%, #070d13 100%);
40
- color: var(--text);
41
- font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
42
- }
43
-
44
- body {
45
- padding: env(safe-area-inset-top) 0 env(safe-area-inset-bottom);
46
- }
47
-
48
- html {
49
- scroll-padding-bottom: calc(var(--composer-reserve) + env(safe-area-inset-bottom) + 1rem);
50
- }
51
-
52
- button,
53
- input,
54
- textarea {
55
- font: inherit;
56
- }
57
-
58
- button {
59
- appearance: none;
60
- border: 1px solid var(--border-strong);
61
- border-radius: 14px;
62
- background: linear-gradient(180deg, var(--accent), var(--accent-2));
63
- color: #071018;
64
- font-weight: 700;
65
- padding: 0.8rem 1rem;
66
- }
67
-
68
- button.secondary {
69
- background: rgba(20, 32, 42, 0.96);
70
- color: var(--text);
71
- }
72
-
73
- button.danger {
74
- background: rgba(255, 141, 141, 0.13);
75
- color: var(--danger);
76
- border-color: rgba(255, 141, 141, 0.3);
77
- }
78
-
79
- button:disabled {
80
- opacity: 0.45;
81
- }
82
-
83
- input,
84
- textarea {
85
- width: 100%;
86
- background: rgba(7, 12, 16, 0.95);
87
- color: var(--text);
88
- border: 1px solid var(--border);
89
- border-radius: 16px;
90
- padding: 0.95rem 1rem;
91
- }
92
-
93
- textarea {
94
- resize: none;
95
- }
96
-
97
- pre,
98
- code,
99
- .mono {
100
- font-family: "SFMono-Regular", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
101
- }
102
-
103
- pre {
104
- margin: 0;
105
- white-space: pre-wrap;
106
- word-break: break-word;
107
- line-height: 1.42;
108
- }
109
-
110
- .hidden {
111
- display: none !important;
112
- }
113
-
114
- .app-shell {
115
- max-width: 980px;
116
- margin: 0 auto;
117
- padding: 4.7rem 0.95rem calc(var(--composer-reserve) + env(safe-area-inset-bottom) + 1rem);
118
- }
119
-
120
- .sidebar-toggle-button {
121
- position: fixed;
122
- top: calc(env(safe-area-inset-top) + 0.9rem);
123
- left: 0.9rem;
124
- z-index: 18;
125
- border-radius: 999px;
126
- padding: 0.72rem 0.95rem;
127
- background: rgba(20, 32, 42, 0.96);
128
- color: var(--text);
129
- box-shadow: var(--shadow);
130
- }
131
-
132
- .topbar {
133
- display: flex;
134
- justify-content: space-between;
135
- align-items: flex-start;
136
- gap: 1rem;
137
- margin-bottom: 1rem;
138
- }
139
-
140
- .topbar h1,
141
- .modal-card h2,
142
- .sheet-card h2 {
143
- margin: 0.16rem 0 0;
144
- }
145
-
146
- .subtitle,
147
- .label,
148
- .modal-copy,
149
- .eyebrow {
150
- color: var(--muted);
151
- }
152
-
153
- .eyebrow {
154
- text-transform: uppercase;
155
- letter-spacing: 0.08em;
156
- font-size: 0.72rem;
157
- }
158
-
159
- .subtitle,
160
- .modal-copy {
161
- margin: 0.45rem 0 0;
162
- line-height: 1.4;
163
- }
164
-
165
- .status-pill,
166
- .command-chip,
167
- .inline-pill,
168
- .stat-chip {
169
- border-radius: 999px;
170
- border: 1px solid var(--border-strong);
171
- background: rgba(16, 31, 42, 0.88);
172
- color: var(--accent);
173
- padding: 0.45rem 0.78rem;
174
- font-size: 0.88rem;
175
- }
176
-
177
- .status-pill.offline {
178
- color: var(--danger);
179
- border-color: rgba(255, 141, 141, 0.32);
180
- background: rgba(255, 141, 141, 0.12);
181
- }
182
-
183
- .status-card,
184
- .banner,
185
- .widget-card,
186
- .message,
187
- .modal-card,
188
- .command-chip,
189
- .sheet-section {
190
- background: var(--panel);
191
- border: 1px solid var(--border);
192
- border-radius: var(--radius);
193
- box-shadow: var(--shadow);
194
- }
195
-
196
- .status-card,
197
- .banner,
198
- .widget-card,
199
- .sheet-section {
200
- padding: 1rem;
201
- }
202
-
203
- .status-card,
204
- .banner,
205
- .widget-stack {
206
- margin-bottom: 1rem;
207
- }
208
-
209
- .status-grid {
210
- display: grid;
211
- grid-template-columns: repeat(2, minmax(0, 1fr));
212
- gap: 0.9rem 1rem;
213
- }
214
-
215
- .value {
216
- margin-top: 0.22rem;
217
- word-break: break-word;
218
- }
219
-
220
- .button-row {
221
- display: flex;
222
- gap: 0.7rem;
223
- margin-top: 1rem;
224
- flex-wrap: wrap;
225
- }
226
-
227
- .button-row.compact {
228
- flex-wrap: nowrap;
229
- overflow-x: auto;
230
- overscroll-behavior-x: contain;
231
- -webkit-overflow-scrolling: touch;
232
- padding-bottom: 0.2rem;
233
- }
234
-
235
- .button-row.compact > * {
236
- flex: 0 0 auto;
237
- white-space: nowrap;
238
- }
239
-
240
- .banner {
241
- color: var(--warning);
242
- }
243
-
244
- .banner.error {
245
- color: var(--danger);
246
- border-color: rgba(255, 141, 141, 0.32);
247
- background: rgba(70, 18, 18, 0.4);
248
- }
249
-
250
- .widget-stack {
251
- display: grid;
252
- gap: 0.8rem;
253
- }
254
-
255
- .widget-card h3 {
256
- margin: 0 0 0.5rem;
257
- font-size: 0.94rem;
258
- }
259
-
260
- .widget-card ul {
261
- margin: 0;
262
- padding-left: 1.1rem;
263
- color: var(--muted);
264
- }
265
-
266
- .command-strip {
267
- display: flex;
268
- gap: 0.55rem;
269
- overflow-x: auto;
270
- padding-bottom: 0.25rem;
271
- }
272
-
273
- .command-chip {
274
- min-width: max-content;
275
- padding: 0.6rem 0.8rem;
276
- font-size: 0.82rem;
277
- }
278
-
279
- .command-chip .source {
280
- color: var(--dim);
281
- margin-left: 0.4rem;
282
- }
283
-
284
- .messages {
285
- display: flex;
286
- flex-direction: column;
287
- gap: 0.85rem;
288
- min-height: 42vh;
289
- padding-bottom: 0.85rem;
290
- }
291
-
292
- .message {
293
- padding: 0.95rem 1rem;
294
- }
295
-
296
- .message.user {
297
- background: var(--user-bg);
298
- margin-left: 1.8rem;
299
- }
300
-
301
- .message.assistant {
302
- background: var(--assistant-bg);
303
- margin-right: 0.6rem;
304
- }
305
-
306
- .message.tool {
307
- background: var(--tool-bg);
308
- }
309
-
310
- .message.system,
311
- .message.custom,
312
- .message.summary {
313
- background: var(--system-bg);
314
- }
315
-
316
- .message-header {
317
- display: flex;
318
- justify-content: space-between;
319
- align-items: center;
320
- gap: 0.8rem;
321
- margin-bottom: 0.65rem;
322
- }
323
-
324
- .role-badge {
325
- font-size: 0.84rem;
326
- font-weight: 700;
327
- color: var(--accent);
328
- }
329
-
330
- .message.user .role-badge {
331
- color: #d3efff;
332
- }
333
-
334
- .meta {
335
- color: var(--dim);
336
- font-size: 0.78rem;
337
- }
338
-
339
- .message-body {
340
- line-height: 1.46;
341
- }
342
-
343
- .message-body p {
344
- margin: 0;
345
- white-space: pre-wrap;
346
- word-break: break-word;
347
- }
348
-
349
- .message-body p + p {
350
- margin-top: 0.75rem;
351
- }
352
-
353
- .message-body strong {
354
- font-weight: 700;
355
- }
356
-
357
- .message-body code,
358
- .modal-copy code {
359
- color: var(--md-code);
360
- background: rgba(7, 12, 16, 0.96);
361
- border: 1px solid var(--border);
362
- border-radius: 8px;
363
- padding: 0.08rem 0.38rem;
364
- font-size: 0.95em;
365
- }
366
-
367
- .message-code-block {
368
- margin: 0.75rem 0 0;
369
- padding: 0.85rem 0.95rem;
370
- background: rgba(7, 12, 16, 0.96);
371
- color: var(--md-code-block);
372
- border: 1px solid var(--md-code-block-border);
373
- border-radius: 14px;
374
- overflow-x: auto;
375
- white-space: pre;
376
- word-break: normal;
377
- }
378
-
379
- .message-body > .message-code-block:first-child {
380
- margin-top: 0;
381
- }
382
-
383
- .message-code-block code {
384
- display: block;
385
- padding: 0;
386
- border: 0;
387
- background: transparent;
388
- color: inherit;
389
- font-size: 0.94rem;
390
- }
391
-
392
- .message-body ul {
393
- margin: 0.5rem 0 0;
394
- padding-left: 1.2rem;
395
- }
396
-
397
- .message-body details {
398
- margin-top: 0.75rem;
399
- border-top: 1px solid rgba(255, 255, 255, 0.08);
400
- padding-top: 0.7rem;
401
- }
402
-
403
- .message-body summary {
404
- cursor: pointer;
405
- color: var(--muted);
406
- }
407
-
408
- .user-message-inline-content {
409
- display: grid;
410
- gap: 0.75rem;
411
- }
412
-
413
- .user-message-text-block:empty {
414
- display: none;
415
- }
416
-
417
- .user-message-image-wrap {
418
- display: inline-flex;
419
- align-self: flex-start;
420
- width: fit-content;
421
- max-width: min(100%, 20rem);
422
- border-radius: 16px;
423
- overflow: hidden;
424
- border: 1px solid rgba(127, 212, 255, 0.14);
425
- background: rgba(7, 12, 16, 0.92);
426
- box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.02);
427
- }
428
-
429
- .user-message-image {
430
- display: block;
431
- width: auto;
432
- max-width: min(100%, 20rem);
433
- max-height: min(40vh, 18rem);
434
- height: auto;
435
- object-fit: contain;
436
- background: rgba(7, 12, 16, 0.92);
437
- }
438
-
439
- .message-body .tool-panel {
440
- margin-top: 0;
441
- padding: 0.85rem 0.9rem;
442
- padding-top: 0.85rem;
443
- border-top: 0;
444
- background: rgba(7, 12, 16, 0.36);
445
- border: 1px solid rgba(127, 212, 255, 0.12);
446
- border-radius: 16px;
447
- overflow: hidden;
448
- }
449
-
450
- .message-body .tool-panel summary {
451
- color: inherit;
452
- list-style: none;
453
- }
454
-
455
- .message-body .tool-panel summary::-webkit-details-marker {
456
- display: none;
457
- }
458
-
459
- .tool-panel-summary {
460
- display: flex;
461
- align-items: flex-start;
462
- justify-content: space-between;
463
- gap: 0.8rem;
464
- }
465
-
466
- .tool-panel-summary::after {
467
- content: '▸';
468
- flex: 0 0 auto;
469
- align-self: center;
470
- color: var(--muted);
471
- font-size: 0.9rem;
472
- }
473
-
474
- .tool-panel[open] > .tool-panel-summary::after {
475
- content: '▾';
476
- }
477
-
478
- .tool-panel-summary-copy {
479
- min-width: 0;
480
- flex: 1 1 auto;
481
- }
482
-
483
- .tool-panel-eyebrow {
484
- color: var(--accent);
485
- font-size: 0.72rem;
486
- font-weight: 700;
487
- letter-spacing: 0.08em;
488
- text-transform: uppercase;
489
- }
490
-
491
- .tool-panel-path {
492
- margin-top: 0.24rem;
493
- color: var(--text);
494
- font-size: 0.92rem;
495
- word-break: break-word;
496
- }
497
-
498
- .tool-panel-badges {
499
- display: flex;
500
- flex-wrap: wrap;
501
- justify-content: flex-end;
502
- gap: 0.4rem;
503
- }
504
-
505
- .tool-panel-badge {
506
- border-radius: 999px;
507
- border: 1px solid var(--border-strong);
508
- background: rgba(16, 31, 42, 0.88);
509
- color: var(--muted);
510
- padding: 0.3rem 0.55rem;
511
- font-size: 0.77rem;
512
- white-space: nowrap;
513
- }
514
-
515
- .tool-panel-badge.accent {
516
- color: var(--accent);
517
- }
518
-
519
- .tool-panel-badge.added {
520
- color: var(--success);
521
- border-color: rgba(124, 224, 170, 0.28);
522
- background: rgba(14, 55, 34, 0.32);
523
- }
524
-
525
- .tool-panel-badge.removed {
526
- color: var(--danger);
527
- border-color: rgba(255, 141, 141, 0.28);
528
- background: rgba(70, 18, 18, 0.28);
529
- }
530
-
531
- .tool-panel-body {
532
- display: grid;
533
- gap: 0.65rem;
534
- margin-top: 0.75rem;
535
- }
536
-
537
- .tool-panel-note,
538
- .tool-preview-truncated {
539
- color: var(--muted);
540
- font-size: 0.8rem;
541
- }
542
-
543
- .tool-diff-block,
544
- .tool-code-block {
545
- overflow-x: auto;
546
- border-radius: 14px;
547
- border: 1px solid rgba(127, 212, 255, 0.12);
548
- background: rgba(7, 12, 16, 0.96);
549
- }
550
-
551
- .tool-diff-line,
552
- .tool-code-line {
553
- display: grid;
554
- grid-template-columns: minmax(2.6rem, auto) minmax(0, 1fr);
555
- gap: 0.75rem;
556
- align-items: start;
557
- min-width: max-content;
558
- padding: 0.16rem 0.7rem;
559
- }
560
-
561
- .tool-diff-line + .tool-diff-line,
562
- .tool-code-line + .tool-code-line {
563
- border-top: 1px solid rgba(255, 255, 255, 0.03);
564
- }
565
-
566
- .tool-diff-gutter,
567
- .tool-code-gutter {
568
- color: var(--dim);
569
- text-align: right;
570
- user-select: none;
571
- }
572
-
573
- .tool-diff-code,
574
- .tool-code-content {
575
- white-space: pre;
576
- color: var(--text);
577
- }
578
-
579
- .tool-diff-line.added {
580
- background: rgba(17, 72, 44, 0.24);
581
- }
582
-
583
- .tool-diff-line.added .tool-diff-gutter,
584
- .tool-diff-line.added .tool-diff-code {
585
- color: var(--success);
586
- }
587
-
588
- .tool-diff-line.removed {
589
- background: rgba(82, 27, 27, 0.2);
590
- }
591
-
592
- .tool-diff-line.removed .tool-diff-gutter,
593
- .tool-diff-line.removed .tool-diff-code {
594
- color: var(--danger);
595
- }
596
-
597
- .tool-diff-line.context .tool-diff-code {
598
- color: rgba(237, 245, 255, 0.78);
599
- }
600
-
601
- .tool-code-content {
602
- color: var(--md-code-block);
603
- }
604
-
605
- .tool-terminal-block {
606
- margin: 0;
607
- padding: 0.8rem 0.9rem;
608
- border-radius: 14px;
609
- border: 1px solid rgba(127, 212, 255, 0.12);
610
- background: rgba(7, 12, 16, 0.96);
611
- color: #d7e9ff;
612
- overflow-x: auto;
613
- white-space: pre-wrap;
614
- word-break: break-word;
615
- }
616
-
617
- .tool-markdown-preview {
618
- padding: 0.1rem 0;
619
- }
620
-
621
- .tool-markdown-preview .message-code-block {
622
- margin-top: 0.65rem;
623
- }
624
-
625
- .tool-image-wrap {
626
- overflow: hidden;
627
- border-radius: 14px;
628
- border: 1px solid rgba(127, 212, 255, 0.12);
629
- background: rgba(7, 12, 16, 0.96);
630
- }
631
-
632
- .tool-image-preview {
633
- display: block;
634
- width: 100%;
635
- max-height: 52vh;
636
- object-fit: contain;
637
- background: rgba(7, 12, 16, 0.96);
638
- }
639
-
640
- .tool-match-groups,
641
- .tool-entry-list {
642
- display: grid;
643
- gap: 0.55rem;
644
- }
645
-
646
- .tool-match-group {
647
- border-radius: 14px;
648
- border: 1px solid rgba(127, 212, 255, 0.12);
649
- background: rgba(7, 12, 16, 0.96);
650
- overflow: hidden;
651
- }
652
-
653
- .tool-match-group-header {
654
- padding: 0.62rem 0.75rem;
655
- color: var(--accent);
656
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
657
- word-break: break-word;
658
- }
659
-
660
- .tool-match-line,
661
- .tool-entry-row {
662
- display: grid;
663
- grid-template-columns: minmax(2.2rem, auto) minmax(0, 1fr);
664
- gap: 0.7rem;
665
- align-items: start;
666
- padding: 0.18rem 0.75rem;
667
- }
668
-
669
- .tool-match-line + .tool-match-line,
670
- .tool-entry-row + .tool-entry-row {
671
- border-top: 1px solid rgba(255, 255, 255, 0.03);
672
- }
673
-
674
- .tool-match-gutter {
675
- color: var(--dim);
676
- text-align: right;
677
- user-select: none;
678
- }
679
-
680
- .tool-match-text,
681
- .tool-entry-text {
682
- min-width: 0;
683
- white-space: pre-wrap;
684
- word-break: break-word;
685
- }
686
-
687
- .tool-match-line.match {
688
- background: rgba(17, 72, 44, 0.12);
689
- }
690
-
691
- .tool-match-line.match .tool-match-text {
692
- color: var(--success);
693
- }
694
-
695
- .tool-match-line.context .tool-match-text {
696
- color: rgba(237, 245, 255, 0.78);
697
- }
698
-
699
- .tool-entry-icon {
700
- color: var(--muted);
701
- text-align: center;
702
- }
703
-
704
- .tool-entry-row.directory .tool-entry-text {
705
- color: var(--accent);
706
- }
707
-
708
- @media (max-width: 560px) {
709
- .tool-panel-summary {
710
- flex-direction: column;
711
- }
712
-
713
- .tool-panel-badges {
714
- justify-content: flex-start;
715
- }
716
-
717
- .tool-diff-line,
718
- .tool-code-line,
719
- .tool-match-line,
720
- .tool-entry-row {
721
- gap: 0.55rem;
722
- padding: 0.16rem 0.55rem;
723
- }
724
-
725
- .tool-match-group-header,
726
- .tool-terminal-block {
727
- padding-left: 0.65rem;
728
- padding-right: 0.65rem;
729
- }
730
- }
731
-
732
- .detail-content,
733
- .detail-pre {
734
- margin-top: 0.7rem;
735
- }
736
-
737
- .detail-pre {
738
- white-space: pre-wrap;
739
- word-break: break-word;
740
- }
741
-
742
- .detail-markdown > .message-code-block:first-child {
743
- margin-top: 0;
744
- }
745
-
746
- .composer-wrap {
747
- position: fixed;
748
- left: 0;
749
- right: 0;
750
- bottom: 0;
751
- padding: 0 0.95rem calc(env(safe-area-inset-bottom) + 0.75rem);
752
- background: linear-gradient(180deg, rgba(7, 13, 19, 0) 0%, rgba(7, 13, 19, 0.94) 26%, rgba(7, 13, 19, 0.99) 100%);
753
- }
754
-
755
- .composer {
756
- max-width: 980px;
757
- margin: 0 auto;
758
- background: var(--bg-elevated);
759
- border: 1px solid var(--border);
760
- border-radius: 22px;
761
- box-shadow: var(--shadow);
762
- padding: 0.82rem;
763
- }
764
-
765
- .composer-input-row {
766
- display: flex;
767
- align-items: flex-end;
768
- gap: 0.65rem;
769
- }
770
-
771
- .composer textarea {
772
- min-height: 52px;
773
- max-height: 200px;
774
- flex: 1 1 auto;
775
- }
776
-
777
- .composer-inline-button {
778
- flex: 0 0 auto;
779
- min-height: 52px;
780
- border-radius: 16px;
781
- }
782
-
783
- .stop-button {
784
- min-width: 72px;
785
- padding: 0.7rem 0.95rem;
786
- }
787
-
788
- .send-button {
789
- min-width: 48px;
790
- padding: 0.7rem 0.9rem;
791
- font-size: 1.35rem;
792
- line-height: 1;
793
- }
794
-
795
- .attachment-strip {
796
- display: flex;
797
- gap: 0.6rem;
798
- overflow-x: auto;
799
- margin-bottom: 0.7rem;
800
- padding-bottom: 0.15rem;
801
- }
802
-
803
- .composer > .command-strip {
804
- margin-bottom: 0.7rem;
805
- }
806
-
807
- .attachment-chip {
808
- min-width: 152px;
809
- max-width: 220px;
810
- background: rgba(15, 24, 34, 0.96);
811
- border: 1px solid var(--border);
812
- border-radius: 14px;
813
- padding: 0.55rem;
814
- }
815
-
816
- .attachment-chip img {
817
- width: 100%;
818
- height: 92px;
819
- object-fit: cover;
820
- border-radius: 10px;
821
- display: block;
822
- margin-bottom: 0.45rem;
823
- }
824
-
825
- .attachment-chip-header {
826
- display: flex;
827
- justify-content: space-between;
828
- gap: 0.6rem;
829
- align-items: flex-start;
830
- }
831
-
832
- .attachment-chip-token {
833
- display: inline-flex;
834
- align-items: center;
835
- padding: 0.14rem 0.45rem;
836
- border-radius: 999px;
837
- border: 1px solid var(--border);
838
- background: rgba(255, 255, 255, 0.04);
839
- color: var(--accent);
840
- font-size: 0.72rem;
841
- line-height: 1.25;
842
- }
843
-
844
- .attachment-chip-name {
845
- margin-top: 0.35rem;
846
- font-size: 0.8rem;
847
- color: var(--text);
848
- word-break: break-word;
849
- }
850
-
851
- .attachment-chip-remove {
852
- border: none;
853
- background: transparent;
854
- color: var(--danger);
855
- padding: 0;
856
- font-size: 0.95rem;
857
- }
858
-
859
- .attachment-chip-meta {
860
- color: var(--dim);
861
- font-size: 0.72rem;
862
- margin-top: 0.25rem;
863
- }
864
-
865
- .composer-actions {
866
- display: flex;
867
- justify-content: flex-start;
868
- gap: 0.5rem;
869
- margin-top: 0.72rem;
870
- flex-wrap: nowrap;
871
- overflow-x: auto;
872
- overscroll-behavior-x: contain;
873
- -webkit-overflow-scrolling: touch;
874
- padding-bottom: 0.15rem;
875
- }
876
-
877
- .composer-actions > * {
878
- flex: 0 0 auto;
879
- white-space: nowrap;
880
- }
881
-
882
- .composer-actions button {
883
- min-height: 40px;
884
- padding: 0.54rem 0.82rem;
885
- border-radius: 13px;
886
- font-size: 0.92rem;
887
- }
888
-
889
- .quota-row {
890
- display: flex;
891
- align-items: flex-start;
892
- flex-wrap: wrap;
893
- gap: 0.45rem;
894
- margin-top: 0.58rem;
895
- min-width: 0;
896
- }
897
-
898
- .quota-meta-row,
899
- .quota-pills-row {
900
- display: flex;
901
- align-items: center;
902
- gap: 0.45rem;
903
- min-width: 0;
904
- }
905
-
906
- .quota-meta-row {
907
- flex: 0 1 auto;
908
- max-width: 70%;
909
- justify-content: flex-start;
910
- overflow: hidden;
911
- }
912
-
913
- .quota-pills-row {
914
- flex: 1 1 auto;
915
- justify-content: flex-end;
916
- flex-wrap: wrap;
917
- row-gap: 0.35rem;
918
- }
919
-
920
- .quota-pill {
921
- display: inline-flex;
922
- align-items: center;
923
- gap: 0.3rem;
924
- padding: 0.32rem 0.56rem;
925
- border-radius: 999px;
926
- border: 1px solid var(--border-strong);
927
- background: rgba(19, 31, 42, 0.88);
928
- color: var(--muted);
929
- font-size: 0.76rem;
930
- white-space: nowrap;
931
- }
932
-
933
- .cwd-pill {
934
- display: block;
935
- flex: 0 1 auto;
936
- width: fit-content;
937
- min-width: 0;
938
- max-width: 100%;
939
- color: var(--dim);
940
- overflow: hidden;
941
- text-overflow: ellipsis;
942
- }
943
-
944
- .quota-context-pill {
945
- flex: 0 0 auto;
946
- }
947
-
948
- .quota-pill.good {
949
- color: var(--success);
950
- }
951
-
952
- .quota-pill.warn {
953
- color: var(--warning);
954
- }
955
-
956
- .quota-pill.danger {
957
- color: var(--danger);
958
- }
959
-
960
- .modal-backdrop {
961
- position: fixed;
962
- inset: 0;
963
- background: rgba(2, 7, 10, 0.68);
964
- display: flex;
965
- align-items: center;
966
- justify-content: center;
967
- padding: 1rem;
968
- z-index: 30;
969
- }
970
-
971
- .modal-card {
972
- width: min(100%, 720px);
973
- }
974
-
975
- .modal-card,
976
- .sheet-card {
977
- padding: 1rem;
978
- }
979
-
980
- .modal-card.narrow {
981
- width: min(100%, 420px);
982
- }
983
-
984
- .option-list,
985
- .sheet-grid,
986
- .sheet-list,
987
- .model-list {
988
- display: grid;
989
- gap: 0.7rem;
990
- }
991
-
992
- .option-list button,
993
- .sheet-list button,
994
- .model-list button {
995
- width: 100%;
996
- text-align: left;
997
- }
998
-
999
- .sheet-filter {
1000
- display: grid;
1001
- gap: 0.45rem;
1002
- margin-bottom: 0.85rem;
1003
- }
1004
-
1005
- .sheet-select {
1006
- width: 100%;
1007
- appearance: none;
1008
- background: rgba(7, 12, 16, 0.95);
1009
- color: var(--text);
1010
- border: 1px solid var(--border);
1011
- border-radius: 14px;
1012
- padding: 0.8rem 0.95rem;
1013
- }
1014
-
1015
- .sheet-card {
1016
- width: min(100%, 860px);
1017
- max-height: min(88vh, 920px);
1018
- overflow: auto;
1019
- }
1020
-
1021
- .sheet-header {
1022
- display: flex;
1023
- justify-content: space-between;
1024
- align-items: flex-start;
1025
- gap: 1rem;
1026
- margin-bottom: 1rem;
1027
- }
1028
-
1029
- .sheet-header-actions {
1030
- display: flex;
1031
- align-items: center;
1032
- gap: 0.75rem;
1033
- flex-wrap: wrap;
1034
- justify-content: flex-end;
1035
- }
1036
-
1037
- .sheet-content {
1038
- display: grid;
1039
- gap: 0.9rem;
1040
- }
1041
-
1042
- .sheet-section h3 {
1043
- margin: 0 0 0.75rem;
1044
- font-size: 1rem;
1045
- }
1046
-
1047
- .sheet-actions {
1048
- display: grid;
1049
- gap: 0.7rem;
1050
- }
1051
-
1052
- .sheet-action-row {
1053
- display: grid;
1054
- gap: 0.65rem;
1055
- }
1056
-
1057
- .stat-grid {
1058
- display: grid;
1059
- grid-template-columns: repeat(2, minmax(0, 1fr));
1060
- gap: 0.65rem;
1061
- }
1062
-
1063
- .stat-chip {
1064
- display: flex;
1065
- justify-content: space-between;
1066
- gap: 0.75rem;
1067
- color: var(--text);
1068
- }
1069
-
1070
- .stat-chip strong {
1071
- color: var(--accent);
1072
- }
1073
-
1074
- .jump-to-latest-button {
1075
- position: fixed;
1076
- left: 50%;
1077
- bottom: calc(var(--composer-reserve) - 0.35rem);
1078
- transform: translateX(-50%);
1079
- z-index: 20;
1080
- min-width: 3.2rem;
1081
- padding: 0.82rem;
1082
- border-radius: 999px;
1083
- background: rgba(20, 32, 42, 0.96);
1084
- color: var(--text);
1085
- font-size: 1.45rem;
1086
- line-height: 1;
1087
- box-shadow: var(--shadow);
1088
- backdrop-filter: blur(10px);
1089
- }
1090
-
1091
- .toast-host {
1092
- position: fixed;
1093
- top: calc(env(safe-area-inset-top) + 0.75rem);
1094
- left: 0;
1095
- right: 0;
1096
- display: flex;
1097
- flex-direction: column;
1098
- align-items: center;
1099
- gap: 0.55rem;
1100
- pointer-events: none;
1101
- z-index: 40;
1102
- }
1103
-
1104
- .toast {
1105
- max-width: min(92vw, 560px);
1106
- padding: 0.8rem 1rem;
1107
- background: rgba(16, 24, 33, 0.98);
1108
- border: 1px solid var(--border);
1109
- border-radius: 14px;
1110
- box-shadow: var(--shadow);
1111
- }
1112
-
1113
- .toast.error {
1114
- color: var(--danger);
1115
- border-color: rgba(255, 141, 141, 0.3);
1116
- }
1117
-
1118
- @media (max-width: 767px) {
1119
- .sidebar-toggle-button {
1120
- left: 0.75rem;
1121
- }
1122
- }
1123
-
1124
- @media (min-width: 768px) {
1125
- .app-shell {
1126
- padding-left: 1.2rem;
1127
- padding-right: 1.2rem;
1128
- }
1129
-
1130
- .status-grid,
1131
- .stat-grid {
1132
- grid-template-columns: repeat(3, minmax(0, 1fr));
1133
- }
1134
-
1135
- .composer-wrap {
1136
- padding-left: 1.2rem;
1137
- padding-right: 1.2rem;
1138
- }
1139
- }