@agent-link/server 0.1.187 → 0.1.189

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 (76) hide show
  1. package/dist/auth-manager.d.ts +36 -0
  2. package/dist/auth-manager.js +96 -0
  3. package/dist/auth-manager.js.map +1 -0
  4. package/dist/http.d.ts +4 -0
  5. package/dist/http.js +85 -0
  6. package/dist/http.js.map +1 -0
  7. package/dist/index.js +5 -84
  8. package/dist/index.js.map +1 -1
  9. package/dist/message-relay.d.ts +17 -0
  10. package/dist/message-relay.js +23 -0
  11. package/dist/message-relay.js.map +1 -0
  12. package/dist/session-manager.d.ts +44 -0
  13. package/dist/session-manager.js +83 -0
  14. package/dist/session-manager.js.map +1 -0
  15. package/dist/ws-agent.js +19 -27
  16. package/dist/ws-agent.js.map +1 -1
  17. package/dist/ws-client.js +31 -37
  18. package/dist/ws-client.js.map +1 -1
  19. package/package.json +3 -3
  20. package/web/dist/assets/index-DIO7Hox0.js +320 -0
  21. package/web/dist/assets/index-DIO7Hox0.js.map +1 -0
  22. package/web/dist/assets/index-Y1FN_mFe.css +1 -0
  23. package/web/{index.html → dist/index.html} +2 -19
  24. package/dist/auth.d.ts +0 -13
  25. package/dist/auth.js +0 -65
  26. package/dist/auth.js.map +0 -1
  27. package/dist/context.d.ts +0 -52
  28. package/dist/context.js +0 -60
  29. package/dist/context.js.map +0 -1
  30. package/web/app.js +0 -2881
  31. package/web/css/ask-question.css +0 -333
  32. package/web/css/base.css +0 -270
  33. package/web/css/btw.css +0 -148
  34. package/web/css/chat.css +0 -176
  35. package/web/css/file-browser.css +0 -499
  36. package/web/css/input.css +0 -671
  37. package/web/css/loop.css +0 -674
  38. package/web/css/markdown.css +0 -169
  39. package/web/css/responsive.css +0 -314
  40. package/web/css/sidebar.css +0 -593
  41. package/web/css/team.css +0 -1277
  42. package/web/css/tools.css +0 -327
  43. package/web/encryption.js +0 -56
  44. package/web/modules/appHelpers.js +0 -100
  45. package/web/modules/askQuestion.js +0 -63
  46. package/web/modules/backgroundRouting.js +0 -269
  47. package/web/modules/connection.js +0 -731
  48. package/web/modules/fileAttachments.js +0 -125
  49. package/web/modules/fileBrowser.js +0 -398
  50. package/web/modules/filePreview.js +0 -213
  51. package/web/modules/i18n.js +0 -101
  52. package/web/modules/loop.js +0 -338
  53. package/web/modules/loopTemplates.js +0 -110
  54. package/web/modules/markdown.js +0 -83
  55. package/web/modules/messageHelpers.js +0 -206
  56. package/web/modules/sidebar.js +0 -402
  57. package/web/modules/streaming.js +0 -116
  58. package/web/modules/team.js +0 -396
  59. package/web/modules/teamTemplates.js +0 -360
  60. package/web/vendor/highlight.min.js +0 -1213
  61. package/web/vendor/marked.min.js +0 -6
  62. package/web/vendor/nacl-fast.min.js +0 -1
  63. package/web/vendor/nacl-util.min.js +0 -1
  64. package/web/vendor/pako.min.js +0 -2
  65. package/web/vendor/vue.global.prod.js +0 -13
  66. /package/web/{favicon.svg → dist/favicon.svg} +0 -0
  67. /package/web/{images → dist/images}/chat-iPad.webp +0 -0
  68. /package/web/{images → dist/images}/chat-iPhone.webp +0 -0
  69. /package/web/{images → dist/images}/loop-iPad.webp +0 -0
  70. /package/web/{images → dist/images}/team-iPad.webp +0 -0
  71. /package/web/{landing.html → dist/landing.html} +0 -0
  72. /package/web/{landing.zh.html → dist/landing.zh.html} +0 -0
  73. /package/web/{locales → dist/locales}/en.json +0 -0
  74. /package/web/{locales → dist/locales}/zh.json +0 -0
  75. /package/web/{vendor → dist/vendor}/github-dark.min.css +0 -0
  76. /package/web/{vendor → dist/vendor}/github.min.css +0 -0
package/web/css/loop.css DELETED
@@ -1,674 +0,0 @@
1
- /* ══════════════════════════════════════════════════════════════════════════════
2
- Loop Mode Styles
3
- ══════════════════════════════════════════════════════════════════════════════ */
4
-
5
- /* ── Loop name input ── */
6
- .loop-name-input {
7
- width: 100%;
8
- padding: 8px 10px;
9
- border: 1px solid var(--border);
10
- border-radius: 6px;
11
- background: var(--bg-secondary);
12
- color: var(--text-primary);
13
- font-size: 0.9rem;
14
- font-family: inherit;
15
- }
16
- .loop-name-input:focus {
17
- outline: none;
18
- border-color: var(--accent);
19
- }
20
-
21
- /* ── Schedule selector ── */
22
- .loop-schedule-options {
23
- display: flex;
24
- flex-direction: column;
25
- gap: 8px;
26
- border: 1px solid var(--border);
27
- border-radius: 8px;
28
- padding: 12px;
29
- background: var(--bg-secondary);
30
- }
31
- .loop-schedule-radio {
32
- display: flex;
33
- align-items: center;
34
- gap: 8px;
35
- font-size: 0.85rem;
36
- color: var(--text-primary);
37
- cursor: pointer;
38
- }
39
- .loop-schedule-radio input[type="radio"] {
40
- margin: 0;
41
- accent-color: var(--accent);
42
- }
43
- .loop-schedule-detail {
44
- display: inline-flex;
45
- align-items: center;
46
- gap: 4px;
47
- font-size: 0.82rem;
48
- color: var(--text-secondary);
49
- margin-left: 4px;
50
- }
51
- .loop-time-input {
52
- width: 46px;
53
- padding: 3px 6px;
54
- border: 1px solid var(--border);
55
- border-radius: 4px;
56
- background: var(--bg-primary);
57
- color: var(--text-primary);
58
- font-size: 0.82rem;
59
- font-family: inherit;
60
- text-align: center;
61
- }
62
- .loop-time-input:focus {
63
- outline: none;
64
- border-color: var(--accent);
65
- }
66
- .loop-day-select {
67
- padding: 3px 6px;
68
- border: 1px solid var(--border);
69
- border-radius: 4px;
70
- background: var(--bg-primary);
71
- color: var(--text-primary);
72
- font-size: 0.82rem;
73
- font-family: inherit;
74
- cursor: pointer;
75
- }
76
- .loop-day-select:focus {
77
- outline: none;
78
- border-color: var(--accent);
79
- }
80
- .loop-cron-input {
81
- width: 140px;
82
- padding: 3px 8px;
83
- border: 1px solid var(--border);
84
- border-radius: 4px;
85
- background: var(--bg-primary);
86
- color: var(--text-primary);
87
- font-size: 0.82rem;
88
- font-family: 'SF Mono', 'Fira Code', monospace;
89
- }
90
- .loop-cron-input:focus {
91
- outline: none;
92
- border-color: var(--accent);
93
- }
94
-
95
- /* ── Template selected highlight ── */
96
- .loop-template-selected {
97
- border-color: rgba(59,130,246,0.4) !important;
98
- background: linear-gradient(135deg, rgba(59,130,246,0.08) 0%, rgba(59,130,246,0.03) 100%) !important;
99
- }
100
-
101
- /* ── Active Loops list ── */
102
- .loop-active-section {
103
- margin-top: 24px;
104
- border-top: 1px solid var(--border);
105
- padding-top: 16px;
106
- }
107
- .loop-active-header {
108
- font-size: 0.8rem;
109
- font-weight: 600;
110
- color: var(--text-secondary);
111
- text-transform: uppercase;
112
- letter-spacing: 0.04em;
113
- margin-bottom: 10px;
114
- }
115
- .loop-active-list {
116
- display: flex;
117
- flex-direction: column;
118
- gap: 6px;
119
- }
120
- .loop-active-item {
121
- display: flex;
122
- align-items: center;
123
- justify-content: space-between;
124
- gap: 12px;
125
- padding: 10px 14px;
126
- border: 1px solid var(--border);
127
- border-radius: 8px;
128
- transition: border-color 0.15s;
129
- }
130
- .loop-active-item:hover {
131
- border-color: rgba(59,130,246,0.3);
132
- }
133
- .loop-active-item-info {
134
- flex: 1;
135
- min-width: 0;
136
- cursor: pointer;
137
- }
138
- .loop-active-item-top {
139
- display: flex;
140
- align-items: center;
141
- gap: 8px;
142
- margin-bottom: 2px;
143
- }
144
- .loop-active-item-name {
145
- font-size: 0.85rem;
146
- font-weight: 600;
147
- color: var(--text-primary);
148
- overflow: hidden;
149
- text-overflow: ellipsis;
150
- white-space: nowrap;
151
- }
152
- .loop-status-dot {
153
- width: 8px;
154
- height: 8px;
155
- border-radius: 50%;
156
- flex-shrink: 0;
157
- }
158
- .loop-status-dot-on {
159
- background: #10B981;
160
- }
161
- .loop-status-dot-off {
162
- background: var(--text-secondary);
163
- opacity: 0.4;
164
- }
165
- .loop-active-item-meta {
166
- display: flex;
167
- align-items: center;
168
- gap: 10px;
169
- font-size: 0.75rem;
170
- color: var(--text-secondary);
171
- }
172
- .loop-active-item-actions {
173
- display: flex;
174
- gap: 4px;
175
- flex-shrink: 0;
176
- }
177
-
178
- /* ── Loop action buttons ── */
179
- .loop-action-btn {
180
- padding: 5px 12px;
181
- font-size: 0.78rem;
182
- font-weight: 500;
183
- color: var(--text-primary);
184
- background: var(--bg-secondary);
185
- border: 1px solid var(--border);
186
- border-radius: 6px;
187
- cursor: pointer;
188
- transition: color 0.15s, border-color 0.15s;
189
- white-space: nowrap;
190
- }
191
- .loop-action-btn:hover:not(:disabled) {
192
- border-color: var(--accent);
193
- color: var(--accent);
194
- }
195
- .loop-action-btn:disabled {
196
- opacity: 0.4;
197
- cursor: not-allowed;
198
- }
199
- .loop-action-btn.loop-action-sm {
200
- padding: 3px 8px;
201
- font-size: 0.72rem;
202
- }
203
- .loop-action-btn.loop-action-run {
204
- color: #10B981;
205
- border-color: rgba(16,185,129,0.3);
206
- }
207
- .loop-action-btn.loop-action-run:hover:not(:disabled) {
208
- background: rgba(16,185,129,0.1);
209
- border-color: #10B981;
210
- }
211
- .loop-action-btn.loop-action-cancel {
212
- color: var(--error);
213
- border-color: rgba(239,68,68,0.3);
214
- }
215
- .loop-action-btn.loop-action-cancel:hover {
216
- background: rgba(239,68,68,0.1);
217
- border-color: var(--error);
218
- }
219
- .loop-action-btn.loop-action-delete {
220
- color: var(--error);
221
- border-color: rgba(239,68,68,0.3);
222
- }
223
- .loop-action-btn.loop-action-delete:hover {
224
- background: rgba(239,68,68,0.1);
225
- border-color: var(--error);
226
- }
227
-
228
- /* ── Loop detail view ── */
229
- .loop-detail-header {
230
- margin-bottom: 16px;
231
- }
232
- .loop-detail-info {
233
- margin-bottom: 16px;
234
- }
235
- .loop-detail-name {
236
- font-size: 1.15rem;
237
- font-weight: 600;
238
- color: var(--text-primary);
239
- margin: 0 0 6px;
240
- }
241
- .loop-detail-meta {
242
- display: flex;
243
- align-items: center;
244
- gap: 10px;
245
- margin-bottom: 10px;
246
- }
247
- .loop-detail-schedule {
248
- font-size: 0.82rem;
249
- color: var(--text-secondary);
250
- }
251
- .loop-status-badge {
252
- font-size: 0.72rem;
253
- font-weight: 600;
254
- padding: 2px 8px;
255
- border-radius: 10px;
256
- text-transform: uppercase;
257
- letter-spacing: 0.03em;
258
- }
259
- .loop-status-enabled {
260
- background: rgba(16,185,129,0.15);
261
- color: #10B981;
262
- }
263
- .loop-status-disabled {
264
- background: rgba(156,163,175,0.15);
265
- color: var(--text-secondary);
266
- }
267
- .loop-detail-actions {
268
- display: flex;
269
- gap: 6px;
270
- }
271
- .loop-detail-prompt-section {
272
- margin-bottom: 20px;
273
- padding: 12px 14px;
274
- border: 1px solid var(--border);
275
- border-radius: 8px;
276
- background: var(--bg-secondary);
277
- }
278
- .loop-detail-prompt-label {
279
- font-size: 0.75rem;
280
- font-weight: 600;
281
- color: var(--text-secondary);
282
- text-transform: uppercase;
283
- letter-spacing: 0.03em;
284
- margin-bottom: 6px;
285
- }
286
- .loop-detail-prompt-text {
287
- font-size: 0.84rem;
288
- color: var(--text-primary);
289
- line-height: 1.6;
290
- white-space: pre-wrap;
291
- }
292
-
293
- /* ── Execution history ── */
294
- .loop-exec-history-section {
295
- border-top: 1px solid var(--border);
296
- padding-top: 16px;
297
- }
298
- .loop-exec-history-header {
299
- font-size: 0.8rem;
300
- font-weight: 600;
301
- color: var(--text-secondary);
302
- text-transform: uppercase;
303
- letter-spacing: 0.04em;
304
- margin-bottom: 10px;
305
- }
306
- .loop-loading {
307
- display: flex;
308
- align-items: center;
309
- gap: 10px;
310
- padding: 20px 0;
311
- font-size: 0.85rem;
312
- color: var(--text-secondary);
313
- }
314
- .loop-exec-empty {
315
- font-size: 0.85rem;
316
- color: var(--text-secondary);
317
- padding: 16px 0;
318
- }
319
- .loop-exec-list {
320
- display: flex;
321
- flex-direction: column;
322
- gap: 4px;
323
- }
324
- .loop-exec-item {
325
- display: flex;
326
- align-items: center;
327
- justify-content: space-between;
328
- gap: 12px;
329
- padding: 8px 12px;
330
- border: 1px solid var(--border);
331
- border-radius: 6px;
332
- transition: border-color 0.15s;
333
- }
334
- .loop-exec-item:hover {
335
- border-color: rgba(59,130,246,0.2);
336
- }
337
- .loop-exec-item-left {
338
- display: flex;
339
- align-items: center;
340
- gap: 10px;
341
- flex: 1;
342
- min-width: 0;
343
- font-size: 0.82rem;
344
- }
345
- .loop-exec-item-right {
346
- flex-shrink: 0;
347
- }
348
- .loop-exec-status-icon {
349
- font-size: 0.9rem;
350
- width: 18px;
351
- text-align: center;
352
- flex-shrink: 0;
353
- }
354
- .loop-exec-status-running {
355
- color: var(--accent);
356
- animation: spin 1s linear infinite;
357
- }
358
- .loop-exec-status-success {
359
- color: #10B981;
360
- }
361
- .loop-exec-status-error {
362
- color: var(--error);
363
- }
364
- .loop-exec-status-cancelled {
365
- color: var(--text-secondary);
366
- }
367
- .loop-exec-time {
368
- color: var(--text-primary);
369
- font-weight: 500;
370
- white-space: nowrap;
371
- }
372
- .loop-exec-running-label {
373
- color: var(--accent);
374
- font-weight: 500;
375
- font-size: 0.78rem;
376
- }
377
- .loop-exec-duration {
378
- color: var(--text-secondary);
379
- white-space: nowrap;
380
- }
381
- .loop-exec-error-text {
382
- color: var(--error);
383
- font-size: 0.75rem;
384
- overflow: hidden;
385
- text-overflow: ellipsis;
386
- white-space: nowrap;
387
- }
388
- .loop-exec-trigger-badge {
389
- font-size: 0.68rem;
390
- padding: 1px 6px;
391
- border-radius: 8px;
392
- background: rgba(139,92,246,0.15);
393
- color: #8B5CF6;
394
- text-transform: uppercase;
395
- letter-spacing: 0.03em;
396
- }
397
-
398
- /* ── Execution messages ── */
399
- .loop-exec-messages {
400
- max-height: calc(100vh - 200px);
401
- overflow-y: auto;
402
- }
403
-
404
- /* ── Running Loop notification banner ── */
405
- .loop-running-banner {
406
- position: fixed;
407
- bottom: 80px;
408
- left: 50%;
409
- transform: translateX(-50%);
410
- display: flex;
411
- align-items: center;
412
- gap: 10px;
413
- padding: 8px 16px;
414
- background: var(--bg-secondary);
415
- border: 1px solid var(--accent);
416
- border-radius: 20px;
417
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
418
- z-index: 100;
419
- font-size: 0.82rem;
420
- color: var(--text-primary);
421
- }
422
- .loop-running-banner-dot {
423
- width: 8px;
424
- height: 8px;
425
- border-radius: 50%;
426
- background: var(--accent);
427
- animation: pulse 1.5s ease-in-out infinite;
428
- }
429
-
430
- /* ── Modal dialog (generic) ── */
431
- .modal-overlay {
432
- position: fixed;
433
- top: 0; left: 0; right: 0; bottom: 0;
434
- background: rgba(0, 0, 0, 0.5);
435
- z-index: 1000;
436
- display: flex;
437
- align-items: center;
438
- justify-content: center;
439
- }
440
- .modal-dialog {
441
- width: 380px;
442
- max-width: 90vw;
443
- background: var(--bg-secondary);
444
- border: 1px solid var(--border);
445
- border-radius: 12px;
446
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
447
- }
448
- .modal-title {
449
- padding: 12px 16px;
450
- font-size: 0.95rem;
451
- font-weight: 600;
452
- border-bottom: 1px solid var(--border);
453
- color: var(--text-primary);
454
- }
455
- .modal-body {
456
- padding: 16px;
457
- font-size: 0.88rem;
458
- line-height: 1.5;
459
- color: var(--text-primary);
460
- }
461
- .modal-actions {
462
- padding: 10px 16px;
463
- display: flex;
464
- justify-content: flex-end;
465
- gap: 8px;
466
- border-top: 1px solid var(--border);
467
- }
468
- .modal-confirm-btn {
469
- padding: 6px 20px;
470
- background: var(--error);
471
- color: #fff;
472
- border: none;
473
- border-radius: 8px;
474
- font-size: 0.85rem;
475
- font-weight: 600;
476
- cursor: pointer;
477
- transition: background 0.15s;
478
- }
479
- .modal-confirm-btn:hover {
480
- background: #c04444;
481
- }
482
- .modal-cancel-btn {
483
- padding: 6px 20px;
484
- background: transparent;
485
- color: var(--text-primary);
486
- border: 1px solid var(--border);
487
- border-radius: 8px;
488
- font-size: 0.85rem;
489
- cursor: pointer;
490
- transition: border-color 0.15s;
491
- }
492
- .modal-cancel-btn:hover {
493
- border-color: var(--text-primary);
494
- }
495
-
496
- /* ── Loop error banner ── */
497
- .loop-error-banner {
498
- display: flex;
499
- align-items: center;
500
- gap: 8px;
501
- margin-top: 12px;
502
- padding: 10px 14px;
503
- background: rgba(239, 68, 68, 0.1);
504
- border: 1px solid rgba(239, 68, 68, 0.3);
505
- border-radius: 8px;
506
- color: var(--error);
507
- font-size: 0.84rem;
508
- cursor: pointer;
509
- transition: background 0.15s;
510
- }
511
- .loop-error-banner:hover {
512
- background: rgba(239, 68, 68, 0.15);
513
- }
514
- .loop-error-icon {
515
- flex-shrink: 0;
516
- font-size: 1rem;
517
- }
518
- .loop-error-text {
519
- flex: 1;
520
- min-width: 0;
521
- overflow-wrap: anywhere;
522
- }
523
- .loop-error-dismiss {
524
- flex-shrink: 0;
525
- opacity: 0.6;
526
- font-size: 0.8rem;
527
- }
528
- .loop-error-dismiss:hover {
529
- opacity: 1;
530
- }
531
-
532
- /* ── Load more executions ── */
533
- .loop-load-more {
534
- display: flex;
535
- justify-content: center;
536
- padding: 12px 0 4px;
537
- }
538
-
539
- /* ── Memory management ── */
540
- .memory-empty {
541
- padding: 24px 16px;
542
- text-align: center;
543
- color: var(--text-secondary);
544
- font-size: 0.85rem;
545
- }
546
- .memory-empty-hint {
547
- margin-top: 6px;
548
- font-size: 0.78rem;
549
- opacity: 0.7;
550
- }
551
- .memory-file-item {
552
- display: flex;
553
- align-items: center;
554
- justify-content: space-between;
555
- }
556
- .memory-file-row {
557
- display: flex;
558
- align-items: center;
559
- gap: 6px;
560
- flex: 1;
561
- min-width: 0;
562
- cursor: pointer;
563
- padding: 4px 8px;
564
- border-radius: 4px;
565
- }
566
- .memory-file-row:hover {
567
- background: var(--hover-bg);
568
- }
569
- .memory-delete-btn {
570
- background: none;
571
- border: none;
572
- color: var(--text-secondary);
573
- cursor: pointer;
574
- padding: 4px;
575
- border-radius: 4px;
576
- opacity: 0;
577
- transition: opacity 0.15s;
578
- flex-shrink: 0;
579
- }
580
- .memory-file-item:hover .memory-delete-btn {
581
- opacity: 1;
582
- }
583
- .memory-delete-btn:hover {
584
- color: var(--error-color, #e53e3e);
585
- background: var(--hover-bg);
586
- }
587
- .memory-edit-container {
588
- display: flex;
589
- flex-direction: column;
590
- height: 100%;
591
- }
592
- .memory-edit-textarea {
593
- flex: 1;
594
- min-height: 0;
595
- width: 100%;
596
- border: none;
597
- resize: none;
598
- padding: 12px;
599
- font-family: var(--font-mono);
600
- font-size: 0.85rem;
601
- line-height: 1.5;
602
- background: var(--bg-primary);
603
- color: var(--text-primary);
604
- box-sizing: border-box;
605
- }
606
- .memory-edit-textarea:focus {
607
- outline: none;
608
- }
609
- .memory-header-cancel {
610
- background: none;
611
- border: 1px solid var(--border);
612
- color: var(--text-secondary);
613
- padding: 3px 10px;
614
- border-radius: 4px;
615
- cursor: pointer;
616
- font-size: 0.75rem;
617
- white-space: nowrap;
618
- }
619
- .memory-header-cancel:hover {
620
- background: var(--bg-tertiary);
621
- }
622
- .memory-header-save {
623
- background: var(--accent);
624
- border: none;
625
- color: white;
626
- padding: 3px 10px;
627
- border-radius: 4px;
628
- cursor: pointer;
629
- font-size: 0.75rem;
630
- white-space: nowrap;
631
- }
632
- .memory-header-save:hover {
633
- opacity: 0.9;
634
- }
635
- .memory-header-save:disabled {
636
- opacity: 0.5;
637
- cursor: not-allowed;
638
- }
639
- .preview-refresh-btn {
640
- display: inline-flex;
641
- align-items: center;
642
- background: none;
643
- border: none;
644
- color: var(--text-secondary);
645
- padding: 2px;
646
- border-radius: 4px;
647
- cursor: pointer;
648
- }
649
- .preview-refresh-btn:hover {
650
- background: var(--hover-bg);
651
- color: var(--text-primary);
652
- }
653
- .preview-edit-btn {
654
- display: inline-flex;
655
- align-items: center;
656
- gap: 4px;
657
- background: none;
658
- border: 1px solid var(--border-color);
659
- color: var(--text-secondary);
660
- padding: 2px 8px;
661
- border-radius: 4px;
662
- cursor: pointer;
663
- font-size: 0.75rem;
664
- margin-left: auto;
665
- }
666
- .preview-edit-btn:hover {
667
- background: var(--hover-bg);
668
- color: var(--text-primary);
669
- }
670
- .preview-edit-label {
671
- font-size: 0.75rem;
672
- color: var(--accent-color);
673
- margin-left: auto;
674
- }