@agent-link/server 0.1.163 → 0.1.164

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,173 @@
1
+ /* ── Chat area (message list + input) ── */
2
+ .chat-area {
3
+ flex: 1;
4
+ display: flex;
5
+ flex-direction: column;
6
+ min-height: 0;
7
+ }
8
+
9
+ /* ── Message list ── */
10
+ .message-list {
11
+ flex: 1 1 auto;
12
+ overflow-y: auto;
13
+ min-height: 0;
14
+ overscroll-behavior: contain;
15
+ padding: 1.5rem 1.5rem 1rem;
16
+ display: flex;
17
+ flex-direction: column;
18
+ gap: 0.25rem;
19
+ min-height: 0;
20
+ overscroll-behavior: contain;
21
+ }
22
+
23
+ .message-list-inner {
24
+ max-width: 768px;
25
+ width: 100%;
26
+ margin: 0 auto;
27
+ display: flex;
28
+ flex-direction: column;
29
+ gap: 0.25rem;
30
+ }
31
+
32
+ .empty-state {
33
+ flex: 1;
34
+ display: flex;
35
+ flex-direction: column;
36
+ align-items: center;
37
+ justify-content: center;
38
+ gap: 0.5rem;
39
+ color: var(--text-secondary);
40
+ }
41
+
42
+ .empty-state-icon {
43
+ font-size: 2.5rem;
44
+ opacity: 0.5;
45
+ margin-bottom: 0.5rem;
46
+ }
47
+
48
+ .empty-state strong {
49
+ color: var(--text-primary);
50
+ }
51
+
52
+ /* ── Messages ── */
53
+ .message {
54
+ display: flex;
55
+ flex-direction: column;
56
+ }
57
+
58
+ .message-user {
59
+ margin-top: 1.25rem;
60
+ }
61
+
62
+ .message-role-label {
63
+ font-size: 0.75rem;
64
+ font-weight: 600;
65
+ text-transform: uppercase;
66
+ letter-spacing: 0.03em;
67
+ margin-bottom: 0.3rem;
68
+ padding-left: 0.1rem;
69
+ }
70
+
71
+ .message-role-label.user-label {
72
+ color: var(--text-secondary);
73
+ }
74
+
75
+ .message-role-label.assistant-label {
76
+ color: var(--accent);
77
+ }
78
+
79
+ .message-bubble {
80
+ padding: 0.6rem 0.9rem;
81
+ border-radius: 10px;
82
+ font-size: 0.94rem;
83
+ line-height: 1.6;
84
+ word-wrap: break-word;
85
+ position: relative;
86
+ }
87
+
88
+ .user-bubble {
89
+ background: var(--bg-tertiary);
90
+ color: var(--text-primary);
91
+ }
92
+
93
+ /* ── Queue bar (pending messages above input) ── */
94
+ .queue-bar {
95
+ max-width: 768px;
96
+ margin: 0 auto 6px;
97
+ display: flex;
98
+ flex-direction: column;
99
+ gap: 3px;
100
+ }
101
+
102
+ .queue-item {
103
+ display: flex;
104
+ align-items: center;
105
+ gap: 6px;
106
+ background: var(--bg-secondary);
107
+ border: 1px dashed var(--border);
108
+ border-radius: 8px;
109
+ padding: 4px 8px;
110
+ font-size: 0.8rem;
111
+ line-height: 1.3;
112
+ color: var(--text-secondary);
113
+ opacity: 0.85;
114
+ }
115
+
116
+ .queue-item-num {
117
+ flex-shrink: 0;
118
+ font-weight: 600;
119
+ color: var(--text-secondary);
120
+ font-size: 0.7rem;
121
+ opacity: 0.6;
122
+ }
123
+
124
+ .queue-item-text {
125
+ flex: 1;
126
+ min-width: 0;
127
+ overflow: hidden;
128
+ text-overflow: ellipsis;
129
+ white-space: nowrap;
130
+ }
131
+
132
+ .queue-item-attach {
133
+ flex-shrink: 0;
134
+ display: flex;
135
+ align-items: center;
136
+ gap: 2px;
137
+ font-size: 0.7rem;
138
+ opacity: 0.6;
139
+ }
140
+
141
+ .queue-item-remove {
142
+ flex-shrink: 0;
143
+ background: none;
144
+ border: none;
145
+ color: var(--text-secondary);
146
+ font-size: 1rem;
147
+ line-height: 1;
148
+ cursor: pointer;
149
+ padding: 0 2px;
150
+ opacity: 0.5;
151
+ transition: color 0.15s, opacity 0.15s;
152
+ }
153
+
154
+ .queue-item-remove:hover {
155
+ opacity: 1;
156
+ color: var(--error);
157
+ }
158
+
159
+ .usage-bar {
160
+ max-width: 768px;
161
+ margin: 0 auto 6px;
162
+ padding: 4px 10px;
163
+ font-size: 0.75rem;
164
+ color: var(--text-secondary);
165
+ text-align: center;
166
+ opacity: 0.7;
167
+ }
168
+
169
+ .assistant-bubble {
170
+ background: transparent;
171
+ padding: 0.2rem 0;
172
+ }
173
+
@@ -0,0 +1,501 @@
1
+ /* ══════════════════════════════════════════
2
+ File Browser Panel
3
+ ══════════════════════════════════════════ */
4
+ .file-panel {
5
+ width: 280px;
6
+ flex-shrink: 0;
7
+ background: var(--bg-primary);
8
+ border-right: 1px solid var(--border);
9
+ display: flex;
10
+ flex-direction: column;
11
+ overflow: hidden;
12
+ position: relative;
13
+ }
14
+
15
+ .file-panel-resize-handle {
16
+ position: absolute;
17
+ top: 0;
18
+ right: -3px;
19
+ width: 6px;
20
+ height: 100%;
21
+ cursor: col-resize;
22
+ z-index: 10;
23
+ background: transparent;
24
+ transition: background 0.15s;
25
+ }
26
+
27
+ .file-panel-resize-handle:hover,
28
+ .file-panel-resize-handle:active {
29
+ background: var(--accent);
30
+ opacity: 0.4;
31
+ }
32
+
33
+ .file-panel-header {
34
+ display: flex;
35
+ align-items: center;
36
+ justify-content: space-between;
37
+ padding: 0.75rem;
38
+ border-bottom: 1px solid var(--border);
39
+ background: var(--bg-primary);
40
+ flex-shrink: 0;
41
+ }
42
+
43
+ .file-panel-title {
44
+ font-size: 0.8rem;
45
+ font-weight: 600;
46
+ text-transform: uppercase;
47
+ letter-spacing: 0.05em;
48
+ color: var(--text-secondary);
49
+ }
50
+
51
+ .file-panel-actions {
52
+ display: flex;
53
+ gap: 4px;
54
+ }
55
+
56
+ .file-panel-btn {
57
+ display: flex;
58
+ align-items: center;
59
+ justify-content: center;
60
+ width: 24px;
61
+ height: 24px;
62
+ background: none;
63
+ border: none;
64
+ border-radius: 4px;
65
+ color: var(--text-secondary);
66
+ cursor: pointer;
67
+ padding: 0;
68
+ }
69
+
70
+ .file-panel-btn:hover {
71
+ color: var(--text-primary);
72
+ background: var(--bg-tertiary);
73
+ }
74
+
75
+ .file-panel-breadcrumb {
76
+ padding: 0.5rem 0.75rem;
77
+ font-size: 0.75rem;
78
+ font-family: 'SF Mono', 'Fira Code', Consolas, monospace;
79
+ color: var(--text-secondary);
80
+ border-bottom: 1px solid var(--border);
81
+ white-space: nowrap;
82
+ overflow: hidden;
83
+ text-overflow: ellipsis;
84
+ flex-shrink: 0;
85
+ }
86
+
87
+ .file-tree {
88
+ flex: 1;
89
+ overflow-y: auto;
90
+ overflow-x: hidden;
91
+ padding: 0.25rem 0;
92
+ }
93
+
94
+ .file-tree-item {
95
+ display: flex;
96
+ align-items: center;
97
+ gap: 6px;
98
+ padding: 3px 8px;
99
+ font-size: 0.8rem;
100
+ font-family: 'SF Mono', 'Fira Code', Consolas, monospace;
101
+ color: var(--text-primary);
102
+ cursor: pointer;
103
+ user-select: none;
104
+ white-space: nowrap;
105
+ overflow: hidden;
106
+ }
107
+
108
+ .file-tree-item:hover {
109
+ background: var(--bg-tertiary);
110
+ }
111
+
112
+ .file-tree-arrow {
113
+ flex-shrink: 0;
114
+ width: 14px;
115
+ text-align: center;
116
+ font-size: 0.65rem;
117
+ color: var(--text-secondary);
118
+ transition: transform 0.15s ease;
119
+ display: inline-block;
120
+ }
121
+
122
+ .file-tree-arrow.expanded {
123
+ transform: rotate(90deg);
124
+ }
125
+
126
+ .file-tree-file-icon {
127
+ flex-shrink: 0;
128
+ width: 14px;
129
+ text-align: center;
130
+ color: var(--text-secondary);
131
+ display: flex;
132
+ align-items: center;
133
+ justify-content: center;
134
+ }
135
+
136
+ .file-tree-name {
137
+ flex: 1;
138
+ min-width: 0;
139
+ overflow: hidden;
140
+ text-overflow: ellipsis;
141
+ }
142
+
143
+ .file-tree-spinner {
144
+ width: 12px;
145
+ height: 12px;
146
+ border: 2px solid var(--border);
147
+ border-top-color: var(--accent);
148
+ border-radius: 50%;
149
+ animation: spin 0.6s linear infinite;
150
+ flex-shrink: 0;
151
+ margin-left: auto;
152
+ }
153
+
154
+ @keyframes spin {
155
+ to { transform: rotate(360deg); }
156
+ }
157
+
158
+ .file-tree-empty {
159
+ padding: 4px 8px;
160
+ font-size: 0.75rem;
161
+ color: var(--text-secondary);
162
+ font-style: italic;
163
+ }
164
+
165
+ .file-tree-error {
166
+ padding: 4px 8px;
167
+ font-size: 0.75rem;
168
+ color: var(--error, #e74c3c);
169
+ }
170
+
171
+ .file-panel-loading {
172
+ padding: 1rem;
173
+ text-align: center;
174
+ color: var(--text-secondary);
175
+ font-size: 0.85rem;
176
+ }
177
+
178
+ .file-panel-empty {
179
+ padding: 1rem;
180
+ text-align: center;
181
+ color: var(--text-secondary);
182
+ font-size: 0.85rem;
183
+ }
184
+
185
+ /* ── File Context Menu ── */
186
+ .file-context-menu {
187
+ position: fixed;
188
+ z-index: 200;
189
+ background: var(--bg-secondary);
190
+ border: 1px solid var(--border);
191
+ border-radius: 6px;
192
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
193
+ padding: 4px 0;
194
+ min-width: 200px;
195
+ }
196
+
197
+ .file-context-item {
198
+ display: flex;
199
+ align-items: center;
200
+ gap: 8px;
201
+ padding: 8px 12px;
202
+ font-size: 0.8rem;
203
+ cursor: pointer;
204
+ color: var(--text-primary);
205
+ }
206
+
207
+ .file-context-item:hover {
208
+ background: var(--bg-tertiary);
209
+ }
210
+
211
+ .file-context-item svg {
212
+ flex-shrink: 0;
213
+ color: var(--text-secondary);
214
+ }
215
+
216
+ /* ── File panel transition (Vue <Transition>) ── */
217
+ .file-panel-enter-active,
218
+ .file-panel-leave-active {
219
+ transition: width 0.2s ease, opacity 0.15s ease;
220
+ overflow: hidden;
221
+ }
222
+ .file-panel-enter-from,
223
+ .file-panel-leave-to {
224
+ width: 0 !important;
225
+ opacity: 0;
226
+ }
227
+
228
+ /* ── Mobile file browser in sidebar ── */
229
+ .file-panel-mobile {
230
+ display: flex;
231
+ flex-direction: column;
232
+ height: 100%;
233
+ overflow: hidden;
234
+ }
235
+
236
+ .file-panel-mobile-header {
237
+ display: flex;
238
+ align-items: center;
239
+ justify-content: space-between;
240
+ padding: 0.75rem;
241
+ border-bottom: 1px solid var(--border);
242
+ flex-shrink: 0;
243
+ }
244
+
245
+ .file-panel-mobile-back {
246
+ display: flex;
247
+ align-items: center;
248
+ gap: 4px;
249
+ background: none;
250
+ border: none;
251
+ color: var(--accent);
252
+ cursor: pointer;
253
+ font-size: 0.85rem;
254
+ padding: 4px 0;
255
+ }
256
+
257
+ .file-panel-mobile-back:hover {
258
+ opacity: 0.8;
259
+ }
260
+
261
+ /* ══════════════════════════════════════════
262
+ File Preview Panel
263
+ ══════════════════════════════════════════ */
264
+ .preview-panel {
265
+ width: 400px;
266
+ flex-shrink: 0;
267
+ position: relative;
268
+ display: flex;
269
+ flex-direction: column;
270
+ overflow: hidden;
271
+ border-left: 1px solid var(--border);
272
+ background: var(--bg);
273
+ }
274
+
275
+ .preview-panel-resize-handle {
276
+ position: absolute;
277
+ top: 0;
278
+ left: -3px;
279
+ width: 6px;
280
+ height: 100%;
281
+ cursor: col-resize;
282
+ z-index: 10;
283
+ background: transparent;
284
+ transition: background 0.15s;
285
+ }
286
+
287
+ .preview-panel-resize-handle:hover,
288
+ .preview-panel-resize-handle:active {
289
+ background: var(--accent);
290
+ opacity: 0.4;
291
+ }
292
+
293
+ .preview-panel-header {
294
+ display: flex;
295
+ align-items: center;
296
+ gap: 0.5rem;
297
+ padding: 0.5rem 0.75rem;
298
+ border-bottom: 1px solid var(--border);
299
+ background: var(--bg-primary);
300
+ flex-shrink: 0;
301
+ }
302
+
303
+ .preview-panel-filename {
304
+ flex: 1;
305
+ font-weight: 600;
306
+ font-size: 0.85rem;
307
+ overflow: hidden;
308
+ text-overflow: ellipsis;
309
+ white-space: nowrap;
310
+ }
311
+
312
+ .preview-panel-size {
313
+ font-size: 0.75rem;
314
+ color: var(--text-secondary);
315
+ flex-shrink: 0;
316
+ }
317
+
318
+ .preview-panel-close {
319
+ background: none;
320
+ border: none;
321
+ font-size: 1.2rem;
322
+ cursor: pointer;
323
+ color: var(--text-secondary);
324
+ padding: 0 0.25rem;
325
+ line-height: 1;
326
+ }
327
+
328
+ .preview-panel-close:hover {
329
+ color: var(--text);
330
+ }
331
+
332
+ .preview-md-toggle {
333
+ background: none;
334
+ border: 1px solid var(--border);
335
+ border-radius: 4px;
336
+ cursor: pointer;
337
+ color: var(--text-secondary);
338
+ padding: 2px 6px;
339
+ line-height: 1;
340
+ display: flex;
341
+ align-items: center;
342
+ flex-shrink: 0;
343
+ }
344
+
345
+ .preview-md-toggle:hover {
346
+ color: var(--text);
347
+ border-color: var(--text-secondary);
348
+ }
349
+
350
+ .preview-md-toggle.active {
351
+ color: var(--accent, #6366f1);
352
+ border-color: var(--accent, #6366f1);
353
+ background: color-mix(in srgb, var(--accent, #6366f1) 10%, transparent);
354
+ }
355
+
356
+ .preview-header-actions {
357
+ display: flex;
358
+ align-items: center;
359
+ gap: 0.5rem;
360
+ }
361
+
362
+ .preview-markdown-rendered {
363
+ padding: 1rem;
364
+ }
365
+
366
+ .preview-panel-body {
367
+ flex: 1;
368
+ overflow: auto;
369
+ padding: 0;
370
+ }
371
+
372
+ .preview-loading {
373
+ display: flex;
374
+ align-items: center;
375
+ justify-content: center;
376
+ height: 100%;
377
+ color: var(--text-secondary);
378
+ font-size: 0.85rem;
379
+ }
380
+
381
+ .preview-error {
382
+ padding: 1rem;
383
+ color: var(--error, #ef4444);
384
+ font-size: 0.85rem;
385
+ }
386
+
387
+ .preview-text-container {
388
+ overflow: auto;
389
+ height: 100%;
390
+ }
391
+
392
+ .preview-code {
393
+ margin: 0;
394
+ padding: 0.75rem;
395
+ font-size: 0.8rem;
396
+ line-height: 1.5;
397
+ white-space: pre;
398
+ overflow-x: auto;
399
+ background: var(--bg);
400
+ font-family: var(--font-mono, 'SF Mono', 'Cascadia Code', 'Fira Code', Consolas, monospace);
401
+ }
402
+
403
+ .preview-code code {
404
+ font-family: inherit;
405
+ }
406
+
407
+ .preview-image-container {
408
+ display: flex;
409
+ align-items: center;
410
+ justify-content: center;
411
+ padding: 1rem;
412
+ height: 100%;
413
+ }
414
+
415
+ .preview-image {
416
+ max-width: 100%;
417
+ max-height: 100%;
418
+ object-fit: contain;
419
+ }
420
+
421
+ .preview-truncated-notice {
422
+ padding: 0.5rem 0.75rem;
423
+ font-size: 0.75rem;
424
+ color: var(--text-secondary);
425
+ border-top: 1px solid var(--border);
426
+ background: var(--bg-secondary, var(--bg-primary));
427
+ text-align: center;
428
+ }
429
+
430
+ .preview-binary-info {
431
+ display: flex;
432
+ flex-direction: column;
433
+ align-items: center;
434
+ justify-content: center;
435
+ height: 100%;
436
+ gap: 0.5rem;
437
+ color: var(--text-secondary);
438
+ font-size: 0.85rem;
439
+ }
440
+
441
+ .preview-binary-icon {
442
+ opacity: 0.4;
443
+ margin-bottom: 0.5rem;
444
+ }
445
+
446
+ .preview-binary-meta {
447
+ font-size: 0.75rem;
448
+ color: var(--text-secondary);
449
+ }
450
+
451
+ /* ── Mobile file preview in sidebar ── */
452
+ .file-preview-mobile {
453
+ display: flex;
454
+ flex-direction: column;
455
+ height: 100%;
456
+ overflow: hidden;
457
+ }
458
+
459
+ .file-preview-mobile-header {
460
+ display: flex;
461
+ align-items: center;
462
+ justify-content: space-between;
463
+ padding: 0.75rem;
464
+ border-bottom: 1px solid var(--border);
465
+ flex-shrink: 0;
466
+ }
467
+
468
+ .file-preview-mobile-size {
469
+ font-size: 0.75rem;
470
+ color: var(--text-secondary);
471
+ }
472
+
473
+ .file-preview-mobile-filename {
474
+ padding: 0.5rem 0.75rem;
475
+ font-size: 0.8rem;
476
+ font-weight: 600;
477
+ color: var(--text);
478
+ border-bottom: 1px solid var(--border);
479
+ white-space: nowrap;
480
+ overflow: hidden;
481
+ text-overflow: ellipsis;
482
+ flex-shrink: 0;
483
+ }
484
+
485
+ .file-preview-mobile .preview-panel-body {
486
+ flex: 1;
487
+ overflow: auto;
488
+ }
489
+
490
+ /* ══════════════════════════════════════════
491
+ Medium screens — file panel narrower
492
+ ══════════════════════════════════════════ */
493
+ @media (max-width: 1200px) and (min-width: 769px) {
494
+ .file-panel {
495
+ max-width: clamp(200px, 20vw, 280px);
496
+ }
497
+ .preview-panel {
498
+ max-width: min(400px, 40vw);
499
+ }
500
+ }
501
+