@agent-link/server 0.1.163 → 0.1.165

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.
@@ -0,0 +1,594 @@
1
+ /* ── Input area ── */
2
+ .input-area {
3
+ flex-shrink: 0;
4
+ padding: 0 1.5rem 1rem;
5
+ background: transparent;
6
+ position: relative;
7
+ }
8
+
9
+ .slash-menu {
10
+ max-width: 768px;
11
+ margin: 0 auto 4px;
12
+ background: var(--bg-secondary);
13
+ border: 1px solid var(--border);
14
+ border-radius: 12px;
15
+ padding: 4px 0;
16
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
17
+ }
18
+
19
+ .slash-menu-item {
20
+ display: flex;
21
+ align-items: center;
22
+ gap: 12px;
23
+ padding: 8px 16px;
24
+ cursor: pointer;
25
+ transition: background 0.1s;
26
+ }
27
+
28
+ .slash-menu-item.active {
29
+ background: var(--bg-tertiary);
30
+ }
31
+
32
+ .slash-menu-cmd {
33
+ font-weight: 600;
34
+ color: var(--accent);
35
+ font-family: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;
36
+ font-size: 0.9rem;
37
+ min-width: 90px;
38
+ }
39
+
40
+ .slash-menu-desc {
41
+ color: var(--text-secondary);
42
+ font-size: 0.85rem;
43
+ }
44
+
45
+ .input-card {
46
+ max-width: 768px;
47
+ margin: 0 auto;
48
+ background: var(--bg-secondary);
49
+ border: 1px solid var(--border);
50
+ border-radius: 16px;
51
+ padding: 0.5rem;
52
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15);
53
+ transition: border-color 0.2s, box-shadow 0.2s;
54
+ }
55
+
56
+ .input-card:focus-within {
57
+ border-color: var(--accent);
58
+ box-shadow: 0 2px 16px rgba(107, 159, 206, 0.1);
59
+ }
60
+
61
+ .input-card textarea {
62
+ width: 100%;
63
+ background: transparent;
64
+ border: none;
65
+ color: var(--text-primary);
66
+ padding: 0.4rem 0.6rem;
67
+ font-family: inherit;
68
+ font-size: 16px; /* >=16px prevents iOS auto-zoom on focus */
69
+ resize: none;
70
+ outline: none;
71
+ line-height: 1.5;
72
+ max-height: 160px;
73
+ overflow-y: auto;
74
+ }
75
+
76
+ .input-card textarea::placeholder {
77
+ color: var(--text-secondary);
78
+ }
79
+
80
+ .input-bottom-row {
81
+ display: flex;
82
+ justify-content: space-between;
83
+ align-items: center;
84
+ padding: 0.1rem 0.25rem 0;
85
+ }
86
+
87
+ .send-btn {
88
+ background: var(--accent);
89
+ color: #fff;
90
+ border: none;
91
+ border-radius: 10px;
92
+ width: 32px;
93
+ height: 32px;
94
+ font-size: 0.9rem;
95
+ font-weight: 600;
96
+ cursor: pointer;
97
+ display: flex;
98
+ align-items: center;
99
+ justify-content: center;
100
+ transition: background 0.15s, opacity 0.15s;
101
+ }
102
+
103
+ .send-btn:hover:not(:disabled) {
104
+ background: var(--accent-hover);
105
+ }
106
+
107
+ .send-btn:disabled {
108
+ opacity: 0.3;
109
+ cursor: not-allowed;
110
+ }
111
+
112
+ /* ── Stop button ── */
113
+ .stop-btn {
114
+ background: var(--error);
115
+ }
116
+
117
+ .stop-btn:hover {
118
+ background: #c04444;
119
+ }
120
+
121
+ /* ── Streaming cursor ── */
122
+ .assistant-bubble.streaming .markdown-body > *:last-child::after,
123
+ .assistant-bubble.streaming .message-content:not(.markdown-body)::after {
124
+ content: '';
125
+ display: inline-block;
126
+ width: 2px;
127
+ height: 1em;
128
+ background: var(--accent);
129
+ margin-left: 2px;
130
+ vertical-align: text-bottom;
131
+ animation: blink-cursor 0.8s steps(2) infinite;
132
+ }
133
+
134
+ @keyframes blink-cursor {
135
+ 0% { opacity: 1; }
136
+ 50% { opacity: 0; }
137
+ }
138
+
139
+ /* ── Sidebar change-dir button ── */
140
+ .sidebar-workdir-header {
141
+ display: flex;
142
+ align-items: center;
143
+ justify-content: space-between;
144
+ }
145
+
146
+ /* ── Workdir path row (clickable) ── */
147
+ .sidebar-workdir-path-row {
148
+ display: flex;
149
+ align-items: flex-start;
150
+ gap: 4px;
151
+ cursor: pointer;
152
+ padding: 4px 6px;
153
+ margin: 0 -6px;
154
+ border-radius: 4px;
155
+ transition: background 0.15s;
156
+ }
157
+
158
+ .sidebar-workdir-path-row:hover {
159
+ background: var(--bg-tertiary);
160
+ }
161
+
162
+ .sidebar-workdir-path-row .sidebar-workdir-path {
163
+ flex: 1;
164
+ min-width: 0;
165
+ }
166
+
167
+ .sidebar-workdir-chevron {
168
+ flex-shrink: 0;
169
+ margin-top: 2px;
170
+ color: var(--text-secondary);
171
+ transition: transform 0.15s ease;
172
+ }
173
+
174
+ .sidebar-workdir-chevron.open {
175
+ transform: rotate(180deg);
176
+ }
177
+
178
+ /* ── Workdir dropdown menu ── */
179
+ .workdir-menu {
180
+ position: absolute;
181
+ left: -6px;
182
+ right: -6px;
183
+ z-index: 50;
184
+ margin-top: 4px;
185
+ background: var(--bg-secondary);
186
+ border: 1px solid var(--border);
187
+ border-radius: 6px;
188
+ padding: 4px 0;
189
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
190
+ }
191
+
192
+ .workdir-menu-item {
193
+ display: flex;
194
+ align-items: center;
195
+ gap: 8px;
196
+ padding: 7px 12px;
197
+ font-size: 0.8rem;
198
+ cursor: pointer;
199
+ color: var(--text-primary);
200
+ }
201
+
202
+ .workdir-menu-item:hover {
203
+ background: var(--bg-tertiary);
204
+ }
205
+
206
+ .workdir-menu-item svg {
207
+ flex-shrink: 0;
208
+ color: var(--text-secondary);
209
+ }
210
+
211
+ /* ── Workdir switching overlay ── */
212
+ .workdir-switching-overlay {
213
+ position: fixed;
214
+ top: 0; left: 0; right: 0; bottom: 0;
215
+ background: rgba(0, 0, 0, 0.45);
216
+ z-index: 1100;
217
+ display: flex;
218
+ flex-direction: column;
219
+ align-items: center;
220
+ justify-content: center;
221
+ gap: 16px;
222
+ backdrop-filter: blur(2px);
223
+ }
224
+ .workdir-switching-spinner {
225
+ width: 36px;
226
+ height: 36px;
227
+ border: 3px solid rgba(255, 255, 255, 0.2);
228
+ border-top-color: rgba(255, 255, 255, 0.8);
229
+ border-radius: 50%;
230
+ animation: workdir-spin 0.7s linear infinite;
231
+ }
232
+ @keyframes workdir-spin {
233
+ to { transform: rotate(360deg); }
234
+ }
235
+ .workdir-switching-text {
236
+ color: rgba(255, 255, 255, 0.9);
237
+ font-size: 0.9rem;
238
+ font-weight: 500;
239
+ }
240
+ .fade-enter-active, .fade-leave-active {
241
+ transition: opacity 0.2s ease;
242
+ }
243
+ .fade-enter-from, .fade-leave-to {
244
+ opacity: 0;
245
+ }
246
+
247
+ /* ── Folder Picker Modal ── */
248
+ .folder-picker-overlay {
249
+ position: fixed;
250
+ top: 0; left: 0; right: 0; bottom: 0;
251
+ background: rgba(0, 0, 0, 0.5);
252
+ z-index: 1000;
253
+ display: flex;
254
+ align-items: center;
255
+ justify-content: center;
256
+ }
257
+
258
+ .folder-picker-dialog {
259
+ width: 440px;
260
+ height: 520px;
261
+ background: var(--bg-secondary);
262
+ border: 1px solid var(--border);
263
+ border-radius: 12px;
264
+ display: flex;
265
+ flex-direction: column;
266
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
267
+ }
268
+
269
+ .folder-picker-header {
270
+ display: flex;
271
+ justify-content: space-between;
272
+ align-items: center;
273
+ padding: 12px 16px;
274
+ font-size: 0.95rem;
275
+ font-weight: 600;
276
+ border-bottom: 1px solid var(--border);
277
+ }
278
+
279
+ .folder-picker-close {
280
+ background: none;
281
+ border: none;
282
+ color: var(--text-secondary);
283
+ font-size: 1.2rem;
284
+ cursor: pointer;
285
+ padding: 0 4px;
286
+ line-height: 1;
287
+ }
288
+
289
+ .folder-picker-close:hover {
290
+ color: var(--text-primary);
291
+ }
292
+
293
+ .folder-picker-nav {
294
+ display: flex;
295
+ align-items: center;
296
+ gap: 8px;
297
+ padding: 8px 16px;
298
+ font-size: 0.78rem;
299
+ font-family: 'SF Mono', 'Fira Code', Consolas, monospace;
300
+ color: var(--text-secondary);
301
+ border-bottom: 1px solid var(--border);
302
+ }
303
+
304
+ .folder-picker-up {
305
+ display: flex;
306
+ align-items: center;
307
+ justify-content: center;
308
+ width: 24px;
309
+ height: 24px;
310
+ background: none;
311
+ border: 1px solid var(--border);
312
+ border-radius: 4px;
313
+ color: var(--text-secondary);
314
+ cursor: pointer;
315
+ flex-shrink: 0;
316
+ transition: color 0.15s, background 0.15s;
317
+ }
318
+
319
+ .folder-picker-up:hover {
320
+ color: var(--text-primary);
321
+ background: var(--bg-tertiary);
322
+ }
323
+
324
+ .folder-picker-up:disabled {
325
+ opacity: 0.3;
326
+ cursor: not-allowed;
327
+ }
328
+
329
+ .folder-picker-current {
330
+ overflow: hidden;
331
+ text-overflow: ellipsis;
332
+ white-space: nowrap;
333
+ flex: 1;
334
+ }
335
+
336
+ .folder-picker-path-input {
337
+ flex: 1;
338
+ background: var(--bg-primary);
339
+ color: var(--text-primary);
340
+ border: 1px solid var(--border);
341
+ border-radius: 4px;
342
+ padding: 4px 8px;
343
+ font-size: 0.85rem;
344
+ font-family: monospace;
345
+ outline: none;
346
+ }
347
+
348
+ .folder-picker-path-input:focus {
349
+ border-color: var(--accent);
350
+ }
351
+
352
+ .folder-picker-list {
353
+ flex: 1;
354
+ overflow-y: auto;
355
+ min-height: 200px;
356
+ max-height: 350px;
357
+ padding: 4px 0;
358
+ }
359
+
360
+ .folder-picker-loading {
361
+ display: flex;
362
+ align-items: center;
363
+ gap: 8px;
364
+ padding: 16px;
365
+ color: var(--text-secondary);
366
+ font-size: 0.82rem;
367
+ }
368
+
369
+ .folder-picker-item {
370
+ display: flex;
371
+ align-items: center;
372
+ gap: 8px;
373
+ padding: 6px 16px;
374
+ font-size: 0.85rem;
375
+ cursor: pointer;
376
+ color: var(--text-primary);
377
+ transition: background 0.1s;
378
+ user-select: none;
379
+ }
380
+
381
+ .folder-picker-item:hover {
382
+ background: var(--bg-tertiary);
383
+ }
384
+
385
+ .folder-picker-item svg {
386
+ flex-shrink: 0;
387
+ color: var(--text-secondary);
388
+ }
389
+
390
+ .folder-picker-selected {
391
+ background: var(--accent) !important;
392
+ color: #fff !important;
393
+ }
394
+
395
+ .folder-picker-selected svg {
396
+ color: #fff !important;
397
+ }
398
+
399
+ .folder-picker-empty {
400
+ text-align: center;
401
+ padding: 2rem;
402
+ color: var(--text-secondary);
403
+ font-size: 0.82rem;
404
+ }
405
+
406
+ .folder-picker-footer {
407
+ padding: 10px 16px;
408
+ display: flex;
409
+ justify-content: flex-end;
410
+ gap: 8px;
411
+ border-top: 1px solid var(--border);
412
+ }
413
+
414
+ .folder-picker-cancel {
415
+ padding: 6px 16px;
416
+ background: none;
417
+ color: var(--text-secondary);
418
+ border: 1px solid var(--border);
419
+ border-radius: 8px;
420
+ font-size: 0.85rem;
421
+ cursor: pointer;
422
+ transition: color 0.15s, background 0.15s;
423
+ }
424
+
425
+ .folder-picker-cancel:hover {
426
+ color: var(--text-primary);
427
+ background: var(--bg-tertiary);
428
+ }
429
+
430
+ .folder-picker-confirm {
431
+ padding: 6px 20px;
432
+ background: var(--accent);
433
+ color: #fff;
434
+ border: none;
435
+ border-radius: 8px;
436
+ font-size: 0.85rem;
437
+ font-weight: 600;
438
+ cursor: pointer;
439
+ transition: background 0.15s;
440
+ }
441
+
442
+ .folder-picker-confirm:hover {
443
+ background: var(--accent-hover);
444
+ }
445
+
446
+ .folder-picker-confirm:disabled {
447
+ opacity: 0.4;
448
+ cursor: not-allowed;
449
+ }
450
+
451
+ /* ── File Upload: Attachment Bar ── */
452
+ .attachment-bar {
453
+ display: flex;
454
+ flex-wrap: wrap;
455
+ gap: 6px;
456
+ padding: 6px 8px;
457
+ border-top: 1px solid var(--border);
458
+ }
459
+
460
+ .attachment-chip {
461
+ display: flex;
462
+ align-items: center;
463
+ gap: 6px;
464
+ background: var(--bg-tertiary);
465
+ border: 1px solid var(--border);
466
+ border-radius: 8px;
467
+ padding: 4px 8px;
468
+ font-size: 0.78rem;
469
+ color: var(--text-primary);
470
+ max-width: 220px;
471
+ }
472
+
473
+ .attachment-thumb {
474
+ width: 28px;
475
+ height: 28px;
476
+ object-fit: cover;
477
+ border-radius: 4px;
478
+ flex-shrink: 0;
479
+ }
480
+
481
+ .attachment-file-icon {
482
+ display: flex;
483
+ align-items: center;
484
+ justify-content: center;
485
+ width: 28px;
486
+ height: 28px;
487
+ background: var(--bg-secondary);
488
+ border-radius: 4px;
489
+ flex-shrink: 0;
490
+ color: var(--text-secondary);
491
+ }
492
+
493
+ .attachment-info {
494
+ overflow: hidden;
495
+ min-width: 0;
496
+ }
497
+
498
+ .attachment-name {
499
+ overflow: hidden;
500
+ text-overflow: ellipsis;
501
+ white-space: nowrap;
502
+ font-weight: 500;
503
+ }
504
+
505
+ .attachment-size {
506
+ color: var(--text-secondary);
507
+ font-size: 0.7rem;
508
+ }
509
+
510
+ .attachment-remove {
511
+ background: none;
512
+ border: none;
513
+ color: var(--text-secondary);
514
+ cursor: pointer;
515
+ padding: 0 2px;
516
+ font-size: 1rem;
517
+ line-height: 1;
518
+ flex-shrink: 0;
519
+ transition: color 0.15s;
520
+ }
521
+
522
+ .attachment-remove:hover {
523
+ color: var(--error);
524
+ }
525
+
526
+ /* ── Paperclip attach button ── */
527
+ .attach-btn {
528
+ background: none;
529
+ border: none;
530
+ color: var(--text-secondary);
531
+ cursor: pointer;
532
+ display: flex;
533
+ align-items: center;
534
+ justify-content: center;
535
+ width: 32px;
536
+ height: 32px;
537
+ border-radius: 8px;
538
+ transition: color 0.15s, background 0.15s;
539
+ }
540
+
541
+ .attach-btn:hover {
542
+ color: var(--text-primary);
543
+ background: var(--bg-tertiary);
544
+ }
545
+
546
+ .attach-btn:disabled {
547
+ opacity: 0.3;
548
+ cursor: not-allowed;
549
+ }
550
+
551
+ /* ── Drag-over highlight on input card ── */
552
+ .input-card.drag-over {
553
+ border-color: var(--accent);
554
+ box-shadow: 0 0 0 2px var(--accent), 0 2px 12px rgba(107, 159, 206, 0.12);
555
+ }
556
+
557
+ /* ── Attachments displayed in sent messages ── */
558
+ .message-attachments {
559
+ display: flex;
560
+ flex-wrap: wrap;
561
+ gap: 6px;
562
+ margin-top: 6px;
563
+ }
564
+
565
+ .message-attachment-chip {
566
+ display: flex;
567
+ align-items: center;
568
+ gap: 4px;
569
+ background: var(--bg-secondary);
570
+ border: 1px solid var(--border);
571
+ border-radius: 6px;
572
+ padding: 3px 8px;
573
+ font-size: 0.75rem;
574
+ color: var(--text-secondary);
575
+ }
576
+
577
+ .message-attachment-thumb {
578
+ width: 20px;
579
+ height: 20px;
580
+ object-fit: cover;
581
+ border-radius: 3px;
582
+ }
583
+
584
+ .message-attachment-file-icon {
585
+ display: flex;
586
+ align-items: center;
587
+ color: var(--text-secondary);
588
+ }
589
+
590
+ /* ── Sidebar backdrop (mobile overlay) ── */
591
+ .sidebar-backdrop {
592
+ display: none;
593
+ }
594
+