@agent-link/server 0.1.187 → 0.1.188

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 (54) hide show
  1. package/dist/index.js +13 -15
  2. package/dist/index.js.map +1 -1
  3. package/package.json +3 -3
  4. package/web/dist/assets/index-C9bIrYkZ.js +320 -0
  5. package/web/dist/assets/index-C9bIrYkZ.js.map +1 -0
  6. package/web/dist/assets/index-Y1FN_mFe.css +1 -0
  7. package/web/{index.html → dist/index.html} +2 -19
  8. package/web/app.js +0 -2881
  9. package/web/css/ask-question.css +0 -333
  10. package/web/css/base.css +0 -270
  11. package/web/css/btw.css +0 -148
  12. package/web/css/chat.css +0 -176
  13. package/web/css/file-browser.css +0 -499
  14. package/web/css/input.css +0 -671
  15. package/web/css/loop.css +0 -674
  16. package/web/css/markdown.css +0 -169
  17. package/web/css/responsive.css +0 -314
  18. package/web/css/sidebar.css +0 -593
  19. package/web/css/team.css +0 -1277
  20. package/web/css/tools.css +0 -327
  21. package/web/encryption.js +0 -56
  22. package/web/modules/appHelpers.js +0 -100
  23. package/web/modules/askQuestion.js +0 -63
  24. package/web/modules/backgroundRouting.js +0 -269
  25. package/web/modules/connection.js +0 -731
  26. package/web/modules/fileAttachments.js +0 -125
  27. package/web/modules/fileBrowser.js +0 -398
  28. package/web/modules/filePreview.js +0 -213
  29. package/web/modules/i18n.js +0 -101
  30. package/web/modules/loop.js +0 -338
  31. package/web/modules/loopTemplates.js +0 -110
  32. package/web/modules/markdown.js +0 -83
  33. package/web/modules/messageHelpers.js +0 -206
  34. package/web/modules/sidebar.js +0 -402
  35. package/web/modules/streaming.js +0 -116
  36. package/web/modules/team.js +0 -396
  37. package/web/modules/teamTemplates.js +0 -360
  38. package/web/vendor/highlight.min.js +0 -1213
  39. package/web/vendor/marked.min.js +0 -6
  40. package/web/vendor/nacl-fast.min.js +0 -1
  41. package/web/vendor/nacl-util.min.js +0 -1
  42. package/web/vendor/pako.min.js +0 -2
  43. package/web/vendor/vue.global.prod.js +0 -13
  44. /package/web/{favicon.svg → dist/favicon.svg} +0 -0
  45. /package/web/{images → dist/images}/chat-iPad.webp +0 -0
  46. /package/web/{images → dist/images}/chat-iPhone.webp +0 -0
  47. /package/web/{images → dist/images}/loop-iPad.webp +0 -0
  48. /package/web/{images → dist/images}/team-iPad.webp +0 -0
  49. /package/web/{landing.html → dist/landing.html} +0 -0
  50. /package/web/{landing.zh.html → dist/landing.zh.html} +0 -0
  51. /package/web/{locales → dist/locales}/en.json +0 -0
  52. /package/web/{locales → dist/locales}/zh.json +0 -0
  53. /package/web/{vendor → dist/vendor}/github-dark.min.css +0 -0
  54. /package/web/{vendor → dist/vendor}/github.min.css +0 -0
@@ -1,333 +0,0 @@
1
- /* ── AskUserQuestion interactive card ── */
2
- .ask-question-wrapper {
3
- max-width: 100%;
4
- padding-left: 0.25rem;
5
- margin: 0.5rem 0;
6
- }
7
-
8
- .ask-question-card {
9
- background: var(--bg-secondary);
10
- border: 1px solid var(--accent);
11
- border-radius: 10px;
12
- padding: 0.8rem 1rem;
13
- display: flex;
14
- flex-direction: column;
15
- gap: 0.75rem;
16
- }
17
-
18
- .ask-question-block {
19
- display: flex;
20
- flex-direction: column;
21
- gap: 0.5rem;
22
- }
23
-
24
- .ask-question-header {
25
- font-size: 0.7rem;
26
- font-weight: 600;
27
- text-transform: uppercase;
28
- letter-spacing: 0.04em;
29
- color: var(--accent);
30
- }
31
-
32
- .ask-question-text {
33
- font-size: 0.9rem;
34
- color: var(--text-primary);
35
- line-height: 1.5;
36
- }
37
-
38
- .ask-question-options {
39
- display: flex;
40
- flex-direction: column;
41
- gap: 6px;
42
- }
43
-
44
- .ask-question-option {
45
- padding: 8px 12px;
46
- border: 1px solid var(--border);
47
- border-radius: 8px;
48
- cursor: pointer;
49
- transition: border-color 0.15s, background 0.15s;
50
- }
51
-
52
- .ask-question-option:hover {
53
- border-color: var(--text-secondary);
54
- background: var(--bg-tertiary);
55
- }
56
-
57
- .ask-question-option.selected {
58
- border-color: var(--accent);
59
- background: rgba(107, 159, 206, 0.12);
60
- }
61
-
62
- .ask-option-label {
63
- font-size: 0.88rem;
64
- font-weight: 500;
65
- color: var(--text-primary);
66
- }
67
-
68
- .ask-option-desc {
69
- font-size: 0.78rem;
70
- color: var(--text-secondary);
71
- margin-top: 2px;
72
- line-height: 1.4;
73
- }
74
-
75
- .ask-question-custom {
76
- margin-top: 2px;
77
- }
78
-
79
- .ask-question-custom input {
80
- width: 100%;
81
- padding: 6px 10px;
82
- background: var(--bg-primary);
83
- border: 1px solid var(--border);
84
- border-radius: 6px;
85
- color: var(--text-primary);
86
- font-size: 0.85rem;
87
- font-family: inherit;
88
- outline: none;
89
- transition: border-color 0.15s;
90
- }
91
-
92
- .ask-question-custom input::placeholder {
93
- color: var(--text-secondary);
94
- }
95
-
96
- .ask-question-custom input:focus {
97
- border-color: var(--accent);
98
- }
99
-
100
- .ask-question-actions {
101
- display: flex;
102
- justify-content: flex-end;
103
- }
104
-
105
- .ask-question-submit {
106
- padding: 6px 20px;
107
- background: var(--accent);
108
- color: #fff;
109
- border: none;
110
- border-radius: 8px;
111
- font-size: 0.85rem;
112
- font-weight: 600;
113
- cursor: pointer;
114
- transition: background 0.15s, opacity 0.15s;
115
- }
116
-
117
- .ask-question-submit:hover:not(:disabled) {
118
- background: var(--accent-hover);
119
- }
120
-
121
- .ask-question-submit:disabled {
122
- opacity: 0.3;
123
- cursor: not-allowed;
124
- }
125
-
126
- .ask-question-answered {
127
- display: flex;
128
- align-items: center;
129
- gap: 6px;
130
- padding: 4px 8px;
131
- font-size: 0.82rem;
132
- color: var(--text-secondary);
133
- }
134
-
135
- .ask-answered-icon {
136
- color: var(--success);
137
- font-size: 0.8rem;
138
- }
139
-
140
- .ask-answered-text {
141
- font-style: italic;
142
- }
143
-
144
- .context-summary-bar {
145
- display: flex;
146
- align-items: center;
147
- gap: 6px;
148
- padding: 6px 10px;
149
- border-radius: 6px;
150
- border: 1px dashed var(--border);
151
- font-size: 0.78rem;
152
- color: var(--text-secondary);
153
- cursor: pointer;
154
- transition: background 0.15s;
155
- }
156
-
157
- .context-summary-bar:hover {
158
- background: var(--bg-tertiary);
159
- }
160
-
161
- .context-summary-icon {
162
- flex-shrink: 0;
163
- opacity: 0.5;
164
- }
165
-
166
- .context-summary-label {
167
- flex: 1;
168
- }
169
-
170
- .context-summary-toggle {
171
- font-size: 0.72rem;
172
- opacity: 0.6;
173
- flex-shrink: 0;
174
- }
175
-
176
- .context-summary-body {
177
- margin-top: 6px;
178
- padding: 0.6rem 0.8rem;
179
- background: var(--bg-secondary);
180
- border-radius: 6px;
181
- border: 1px solid var(--border);
182
- font-size: 0.82rem;
183
- color: var(--text-secondary);
184
- max-height: 400px;
185
- overflow-y: auto;
186
- }
187
-
188
- .context-summary-body .markdown-body {
189
- font-size: 0.82rem;
190
- color: var(--text-secondary);
191
- }
192
-
193
- /* ── System message ── */
194
- .system-msg {
195
- text-align: center;
196
- color: var(--text-secondary);
197
- font-size: 0.8rem;
198
- font-style: italic;
199
- padding: 0.25rem 0;
200
- }
201
-
202
- .system-msg.command-output-msg {
203
- text-align: left;
204
- font-style: normal;
205
- font-size: 0.85rem;
206
- padding: 0.5rem 0;
207
- }
208
-
209
- .system-msg.error-msg {
210
- text-align: left;
211
- font-style: normal;
212
- color: #d45454;
213
- background: rgba(212, 84, 84, 0.08);
214
- border: 1px solid rgba(212, 84, 84, 0.2);
215
- border-radius: 8px;
216
- padding: 0.75rem 1rem;
217
- font-size: 0.85rem;
218
- word-break: break-word;
219
- overflow-wrap: break-word;
220
- }
221
-
222
- /* ── History loading indicator ── */
223
- .history-loading {
224
- display: flex;
225
- align-items: center;
226
- justify-content: center;
227
- gap: 0.5rem;
228
- padding: 2rem 0;
229
- color: var(--text-secondary);
230
- font-size: 0.85rem;
231
- }
232
-
233
- .history-loading-spinner {
234
- width: 16px;
235
- height: 16px;
236
- border: 2px solid var(--border);
237
- border-top-color: var(--accent);
238
- border-radius: 50%;
239
- animation: spin 0.8s linear infinite;
240
- }
241
-
242
- /* ── Load more button ── */
243
- .load-more-wrapper {
244
- display: flex;
245
- justify-content: center;
246
- padding: 0.75rem 0;
247
- }
248
-
249
- .load-more-btn {
250
- background: var(--bg-tertiary);
251
- color: var(--text-secondary);
252
- border: 1px solid var(--border);
253
- border-radius: 6px;
254
- padding: 0.4rem 1.2rem;
255
- font-size: 0.8rem;
256
- cursor: pointer;
257
- transition: background 0.15s, color 0.15s;
258
- }
259
-
260
- .load-more-btn:hover {
261
- background: var(--accent);
262
- color: #fff;
263
- border-color: var(--accent);
264
- }
265
-
266
- /* ── Typing indicator ── */
267
- .typing-indicator {
268
- display: flex;
269
- align-items: center;
270
- gap: 4px;
271
- padding: 0.5rem 0.9rem;
272
- }
273
-
274
- .typing-indicator span:not(.typing-label) {
275
- width: 6px;
276
- height: 6px;
277
- border-radius: 50%;
278
- background: var(--text-secondary);
279
- animation: typing 1.2s infinite ease-in-out;
280
- }
281
-
282
- .typing-indicator span:not(.typing-label):nth-child(2) {
283
- animation-delay: 0.2s;
284
- }
285
-
286
- .typing-indicator span:not(.typing-label):nth-child(3) {
287
- animation-delay: 0.4s;
288
- }
289
-
290
- @keyframes typing {
291
- 0%, 60%, 100% { opacity: 0.3; transform: scale(0.8); }
292
- 30% { opacity: 1; transform: scale(1); }
293
- }
294
-
295
- .typing-label {
296
- font-size: 0.78rem;
297
- color: var(--text-secondary);
298
- margin-left: 4px;
299
- white-space: nowrap;
300
- animation: none;
301
- width: auto;
302
- height: auto;
303
- border-radius: 0;
304
- background: none;
305
- }
306
-
307
- /* ── Context compaction inline message ── */
308
- .compact-msg {
309
- display: inline-flex;
310
- align-items: center;
311
- gap: 6px;
312
- color: var(--warning) !important;
313
- font-style: normal !important;
314
- font-weight: 500;
315
- }
316
-
317
- .compact-inline-spinner {
318
- display: inline-block;
319
- width: 12px;
320
- height: 12px;
321
- border: 2px solid rgba(212, 162, 76, 0.3);
322
- border-top-color: var(--warning);
323
- border-radius: 50%;
324
- animation: spin 0.8s linear infinite;
325
- flex-shrink: 0;
326
- }
327
-
328
- .compact-done-icon {
329
- color: var(--success, #4ead6a);
330
- font-weight: 700;
331
- font-style: normal;
332
- }
333
-
package/web/css/base.css DELETED
@@ -1,270 +0,0 @@
1
- *,
2
- *::before,
3
- *::after {
4
- box-sizing: border-box;
5
- margin: 0;
6
- padding: 0;
7
- }
8
-
9
- /* Keyboard focus outlines (visible only for keyboard navigation) */
10
- :focus-visible {
11
- outline: 2px solid var(--accent);
12
- outline-offset: 2px;
13
- }
14
-
15
- :focus:not(:focus-visible) {
16
- outline: none;
17
- }
18
-
19
- :root {
20
- --bg-primary: #1e1e1e;
21
- --bg-secondary: #252525;
22
- --bg-tertiary: #2f2f2f;
23
- --text-primary: #d4d4d4;
24
- --text-secondary: #858585;
25
- --accent: #6b9fce;
26
- --accent-hover: #5a8bba;
27
- --success: #4ead6a;
28
- --warning: #d4a24c;
29
- --error: #d45454;
30
- --border: #353535;
31
- --code-bg: #1a1a1a;
32
- --code-header-bg: #222222;
33
- --plan-mode: #d4a24c;
34
- --plan-mode-bg: rgba(212, 162, 76, 0.1);
35
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
36
- }
37
-
38
- /* ── Light theme ── */
39
- [data-theme="light"] {
40
- --bg-primary: #fefcf8;
41
- --bg-secondary: #f5f3ef;
42
- --bg-tertiary: #e8e6e1;
43
- --text-primary: #1a1a1a;
44
- --text-secondary: #4b5563;
45
- --accent: #2563eb;
46
- --accent-hover: #1d4ed8;
47
- --success: #16a34a;
48
- --warning: #d97706;
49
- --error: #dc2626;
50
- --border: #d1d5db;
51
- --code-bg: #f1f3f5;
52
- --code-header-bg: #e9ecef;
53
- --plan-mode: #d97706;
54
- --plan-mode-bg: rgba(217, 119, 6, 0.08);
55
- }
56
-
57
- html {
58
- height: 100%;
59
- height: 100dvh;
60
- }
61
-
62
- body {
63
- background-color: var(--bg-primary);
64
- color: var(--text-primary);
65
- height: 100%;
66
- }
67
-
68
- #app {
69
- height: 100%;
70
- }
71
-
72
- /* ── Layout ── */
73
- .layout {
74
- display: flex;
75
- flex-direction: column;
76
- height: 100%;
77
- }
78
-
79
- .top-bar {
80
- display: flex;
81
- align-items: center;
82
- justify-content: space-between;
83
- padding: calc(0.5rem + env(safe-area-inset-top, 0px)) 1rem 0.5rem;
84
- background: var(--bg-secondary);
85
- border-bottom: 1px solid var(--border);
86
- flex-shrink: 0;
87
- }
88
-
89
- .top-bar-left {
90
- display: flex;
91
- align-items: center;
92
- gap: 0.5rem;
93
- }
94
-
95
- .sidebar-toggle {
96
- display: flex;
97
- align-items: center;
98
- justify-content: center;
99
- width: 30px;
100
- height: 30px;
101
- background: none;
102
- border: none;
103
- border-radius: 4px;
104
- color: var(--text-secondary);
105
- cursor: pointer;
106
- transition: color 0.15s, background 0.15s;
107
- }
108
-
109
- .sidebar-toggle:hover {
110
- color: var(--text-primary);
111
- background: var(--bg-tertiary);
112
- }
113
-
114
- .top-bar h1 {
115
- font-size: 1.1rem;
116
- font-weight: 700;
117
- }
118
-
119
- .top-bar-info {
120
- display: flex;
121
- align-items: center;
122
- gap: 0.75rem;
123
- }
124
-
125
- .agent-label {
126
- color: var(--text-secondary);
127
- font-size: 0.85rem;
128
- }
129
-
130
- .latency {
131
- font-size: 0.75rem;
132
- font-variant-numeric: tabular-nums;
133
- opacity: 0.7;
134
- }
135
- .latency.good { color: var(--success); }
136
- .latency.ok { color: var(--warning); }
137
- .latency.bad { color: var(--error); }
138
-
139
- .theme-toggle {
140
- display: flex;
141
- align-items: center;
142
- justify-content: center;
143
- width: 32px;
144
- height: 32px;
145
- flex-shrink: 0;
146
- background: none;
147
- border: 1px solid var(--border);
148
- border-radius: 8px;
149
- color: var(--text-secondary);
150
- cursor: pointer;
151
- transition: color 0.15s, background 0.15s, border-color 0.15s;
152
- }
153
-
154
- .theme-toggle:hover {
155
- color: var(--text-primary);
156
- background: var(--bg-tertiary);
157
- border-color: var(--text-secondary);
158
- }
159
-
160
- /* ── Center card (no session / waiting) ── */
161
- .center-card {
162
- flex: 1;
163
- display: flex;
164
- align-items: center;
165
- justify-content: center;
166
- padding: 2rem;
167
- min-height: 0;
168
- }
169
-
170
- .status-card {
171
- background: var(--bg-secondary);
172
- border: 1px solid var(--border);
173
- border-radius: 12px;
174
- padding: 1.5rem 2rem;
175
- min-width: 320px;
176
- text-align: center;
177
- }
178
-
179
- .status-card .status {
180
- font-size: 1.1rem;
181
- margin-bottom: 0.75rem;
182
- }
183
-
184
- .status-card .info {
185
- margin-bottom: 0.5rem;
186
- font-size: 0.95rem;
187
- }
188
-
189
- .status-card .label {
190
- color: var(--text-secondary);
191
- }
192
-
193
- /* ── Badges ── */
194
- .muted {
195
- color: var(--text-secondary);
196
- font-size: 0.85rem;
197
- }
198
-
199
- .badge {
200
- padding: 2px 8px;
201
- border-radius: 4px;
202
- font-weight: 600;
203
- font-size: 0.9rem;
204
- }
205
-
206
- .badge.connected {
207
- color: var(--success);
208
- background: rgba(78, 173, 106, 0.1);
209
- }
210
-
211
- .badge.disconnected {
212
- color: var(--error);
213
- background: rgba(212, 84, 84, 0.1);
214
- }
215
-
216
- .badge.connecting\.\.\. {
217
- color: var(--warning);
218
- background: rgba(212, 162, 76, 0.1);
219
- }
220
-
221
- .badge.reconnecting\.\.\. {
222
- color: var(--warning);
223
- background: rgba(212, 162, 76, 0.1);
224
- }
225
-
226
- .badge.waiting {
227
- color: var(--warning);
228
- background: rgba(212, 162, 76, 0.1);
229
- }
230
-
231
- .badge.error,
232
- .badge.no\ session {
233
- color: var(--error);
234
- background: rgba(212, 84, 84, 0.1);
235
- }
236
-
237
- .error-msg {
238
- color: var(--error);
239
- font-size: 0.85rem;
240
- margin-top: 0.75rem;
241
- }
242
-
243
- /* ── Shared keyframes ── */
244
- @keyframes spin {
245
- to { transform: rotate(360deg); }
246
- }
247
-
248
- @keyframes pulse {
249
- 0%, 100% { opacity: 1; }
250
- 50% { opacity: 0.3; }
251
- }
252
-
253
- /* ── Reduced motion ── */
254
- @media (prefers-reduced-motion: reduce) {
255
- *, *::before, *::after {
256
- animation-duration: 0.01ms !important;
257
- animation-iteration-count: 1 !important;
258
- transition-duration: 0.01ms !important;
259
- }
260
- }
261
-
262
- /* ── Main body (sidebar + chat) ── */
263
- .main-body {
264
- flex: 1;
265
- display: flex;
266
- min-height: 0;
267
- min-width: 0;
268
- overflow: hidden;
269
- }
270
-