@agent-link/server 0.1.74 → 0.1.76
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.
- package/package.json +1 -1
- package/web/app.js +3 -6
- package/web/index.html +2 -2
- package/web/modules/connection.js +1 -14
- package/web/style.css +0 -11
package/package.json
CHANGED
package/web/app.js
CHANGED
|
@@ -81,7 +81,7 @@ const App = {
|
|
|
81
81
|
const dragOver = ref(false);
|
|
82
82
|
|
|
83
83
|
// Theme
|
|
84
|
-
const theme = ref(localStorage.getItem('agentlink-theme') || '
|
|
84
|
+
const theme = ref(localStorage.getItem('agentlink-theme') || 'light');
|
|
85
85
|
function applyTheme() {
|
|
86
86
|
document.documentElement.setAttribute('data-theme', theme.value);
|
|
87
87
|
const link = document.getElementById('hljs-theme');
|
|
@@ -165,7 +165,7 @@ const App = {
|
|
|
165
165
|
|
|
166
166
|
// ── Computed ──
|
|
167
167
|
const canSend = computed(() =>
|
|
168
|
-
status.value === 'Connected' && (inputText.value.trim() || attachments.value.length > 0) && !isCompacting.value
|
|
168
|
+
status.value === 'Connected' && (inputText.value.trim() || attachments.value.length > 0) && !isProcessing.value && !isCompacting.value
|
|
169
169
|
&& !messages.value.some(m => m.role === 'ask-question' && !m.answered)
|
|
170
170
|
);
|
|
171
171
|
|
|
@@ -191,13 +191,11 @@ const App = {
|
|
|
191
191
|
name: f.name, size: f.size, isImage: f.isImage, thumbUrl: f.thumbUrl,
|
|
192
192
|
}));
|
|
193
193
|
|
|
194
|
-
const isQueued = isProcessing.value;
|
|
195
194
|
messages.value.push({
|
|
196
195
|
id: streaming.nextId(), role: 'user',
|
|
197
196
|
content: text || (files.length > 0 ? `[${files.length} file${files.length > 1 ? 's' : ''} attached]` : ''),
|
|
198
197
|
attachments: msgAttachments.length > 0 ? msgAttachments : undefined,
|
|
199
198
|
timestamp: new Date(),
|
|
200
|
-
queued: isQueued,
|
|
201
199
|
});
|
|
202
200
|
isProcessing.value = true;
|
|
203
201
|
scrollToBottom(true);
|
|
@@ -437,7 +435,6 @@ const App = {
|
|
|
437
435
|
<div class="message-role-label user-label">You</div>
|
|
438
436
|
<div class="message-bubble user-bubble" :title="formatTimestamp(msg.timestamp)">
|
|
439
437
|
<div class="message-content">{{ msg.content }}</div>
|
|
440
|
-
<span v-if="msg.queued" class="queued-badge">Queued</span>
|
|
441
438
|
<div v-if="msg.attachments && msg.attachments.length" class="message-attachments">
|
|
442
439
|
<div v-for="(att, ai) in msg.attachments" :key="ai" class="message-attachment-chip">
|
|
443
440
|
<img v-if="att.isImage && att.thumbUrl" :src="att.thumbUrl" class="message-attachment-thumb" />
|
|
@@ -602,7 +599,7 @@ const App = {
|
|
|
602
599
|
<button v-if="isProcessing" @click="cancelExecution" class="send-btn stop-btn" title="Stop generation">
|
|
603
600
|
<svg viewBox="0 0 24 24" width="14" height="14"><rect x="6" y="6" width="12" height="12" rx="2" fill="currentColor"/></svg>
|
|
604
601
|
</button>
|
|
605
|
-
<button @click="sendMessage" :disabled="!canSend" class="send-btn" title="Send">
|
|
602
|
+
<button v-else @click="sendMessage" :disabled="!canSend" class="send-btn" title="Send">
|
|
606
603
|
<svg viewBox="0 0 24 24" width="16" height="16"><path fill="currentColor" d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"/></svg>
|
|
607
604
|
</button>
|
|
608
605
|
</div>
|
package/web/index.html
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
<title>AgentLink</title>
|
|
7
7
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
8
8
|
<link rel="stylesheet" href="/style.css">
|
|
9
|
-
<link id="hljs-theme" rel="stylesheet" href="/vendor/github
|
|
9
|
+
<link id="hljs-theme" rel="stylesheet" href="/vendor/github.min.css">
|
|
10
10
|
<script>
|
|
11
11
|
// Apply saved theme immediately to prevent flash
|
|
12
12
|
(function() {
|
|
13
|
-
var t = localStorage.getItem('agentlink-theme') || '
|
|
13
|
+
var t = localStorage.getItem('agentlink-theme') || 'light';
|
|
14
14
|
document.documentElement.setAttribute('data-theme', t);
|
|
15
15
|
var link = document.getElementById('hljs-theme');
|
|
16
16
|
if (link) link.href = t === 'light'
|
|
@@ -256,20 +256,7 @@ export function createConnection(deps) {
|
|
|
256
256
|
} else if (msg.type === 'turn_completed' || msg.type === 'execution_cancelled') {
|
|
257
257
|
streaming.flushReveal();
|
|
258
258
|
finalizeStreamingMsg(scheduleHighlight);
|
|
259
|
-
|
|
260
|
-
// Cancel clears all queued messages
|
|
261
|
-
messages.value.forEach(m => { if (m.queued) m.queued = false; });
|
|
262
|
-
isProcessing.value = false;
|
|
263
|
-
} else {
|
|
264
|
-
// Turn completed — check if there's a queued message that Claude will process next
|
|
265
|
-
const nextQueued = messages.value.find(m => m.role === 'user' && m.queued);
|
|
266
|
-
if (nextQueued) {
|
|
267
|
-
nextQueued.queued = false;
|
|
268
|
-
// Still processing — Claude will handle the queued message
|
|
269
|
-
} else {
|
|
270
|
-
isProcessing.value = false;
|
|
271
|
-
}
|
|
272
|
-
}
|
|
259
|
+
isProcessing.value = false;
|
|
273
260
|
isCompacting.value = false;
|
|
274
261
|
if (msg.type === 'execution_cancelled') {
|
|
275
262
|
messages.value.push({
|
package/web/style.css
CHANGED
|
@@ -720,17 +720,6 @@ body {
|
|
|
720
720
|
color: var(--text-primary);
|
|
721
721
|
}
|
|
722
722
|
|
|
723
|
-
.queued-badge {
|
|
724
|
-
display: inline-block;
|
|
725
|
-
font-size: 0.65rem;
|
|
726
|
-
color: var(--text-secondary);
|
|
727
|
-
background: var(--bg-secondary);
|
|
728
|
-
padding: 1px 6px;
|
|
729
|
-
border-radius: 4px;
|
|
730
|
-
margin-top: 4px;
|
|
731
|
-
opacity: 0.8;
|
|
732
|
-
}
|
|
733
|
-
|
|
734
723
|
.assistant-bubble {
|
|
735
724
|
background: transparent;
|
|
736
725
|
padding: 0.2rem 0;
|