@agent-link/server 0.1.35 → 0.1.37
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/dist/ws-client.js +5 -3
- package/dist/ws-client.js.map +1 -1
- package/package.json +1 -1
- package/web/modules/connection.js +61 -0
- package/web/style.css +2 -14
package/dist/ws-client.js
CHANGED
|
@@ -40,11 +40,13 @@ export function handleWebConnection(ws, req) {
|
|
|
40
40
|
}));
|
|
41
41
|
console.log(`[Web] Client ${clientId.slice(0, 8)} connected to session ${sessionId}, agent: ${agent ? agent.name : 'none'}`);
|
|
42
42
|
// Flush buffered messages that arrived while no web client was connected
|
|
43
|
+
// Send as a single batch to avoid per-message encryption overhead on the client
|
|
43
44
|
if (agent && agent.messageBuffer.length > 0) {
|
|
44
45
|
console.log(`[Web] Flushing ${agent.messageBuffer.length} buffered messages to ${clientId.slice(0, 8)}`);
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
encryptAndSend(client.ws, {
|
|
47
|
+
type: 'buffered_messages',
|
|
48
|
+
messages: agent.messageBuffer,
|
|
49
|
+
}, client.sessionKey);
|
|
48
50
|
agent.messageBuffer = [];
|
|
49
51
|
}
|
|
50
52
|
ws.on('message', (data) => {
|
package/dist/ws-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EACL,MAAM,EACN,cAAc,EACd,UAAU,GAEX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE9F,MAAM,UAAU,mBAAmB,CAAC,EAAa,EAAE,GAAoB;IACrE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAE9B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;QACzE,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,yCAAyC;IACzC,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAExD,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;IAExC,MAAM,MAAM,GAAc;QACxB,EAAE;QACF,QAAQ;QACR,SAAS;QACT,UAAU;QACV,WAAW,EAAE,IAAI,IAAI,EAAE;QACvB,OAAO,EAAE,IAAI;KACd,CAAC;IAEF,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEjC,qFAAqF;IACrF,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACrB,IAAI,EAAE,WAAW;QACjB,QAAQ;QACR,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC;QACjC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC,CAAC,IAAI;KACT,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,yBAAyB,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7H,yEAAyE;IACzE,IAAI,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,yBAAyB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACzG,
|
|
1
|
+
{"version":3,"file":"ws-client.js","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -238,6 +238,67 @@ export function createConnection(deps) {
|
|
|
238
238
|
timestamp: new Date(),
|
|
239
239
|
});
|
|
240
240
|
scrollToBottom();
|
|
241
|
+
} else if (msg.type === 'buffered_messages' && Array.isArray(msg.messages)) {
|
|
242
|
+
// Replay buffered messages instantly (no streaming animation)
|
|
243
|
+
let textAcc = '';
|
|
244
|
+
const toolBatch = [];
|
|
245
|
+
for (const m of msg.messages) {
|
|
246
|
+
if (m.type === 'session_started' && m.claudeSessionId) {
|
|
247
|
+
currentClaudeSessionId.value = m.claudeSessionId;
|
|
248
|
+
} else if (m.type === 'claude_output' && m.data) {
|
|
249
|
+
const data = m.data;
|
|
250
|
+
if (data.type === 'content_block_delta' && data.delta) {
|
|
251
|
+
textAcc += data.delta;
|
|
252
|
+
} else if (data.type === 'tool_use' && data.tools) {
|
|
253
|
+
// Flush accumulated text before tools
|
|
254
|
+
if (textAcc) {
|
|
255
|
+
streaming.flushReveal();
|
|
256
|
+
finalizeStreamingMsg(scheduleHighlight);
|
|
257
|
+
messages.value.push({
|
|
258
|
+
id: streaming.nextId(), role: 'assistant',
|
|
259
|
+
content: textAcc, timestamp: new Date(),
|
|
260
|
+
});
|
|
261
|
+
textAcc = '';
|
|
262
|
+
}
|
|
263
|
+
for (const tool of data.tools) {
|
|
264
|
+
messages.value.push({
|
|
265
|
+
id: streaming.nextId(), role: 'tool',
|
|
266
|
+
toolId: tool.id, toolName: tool.name || 'unknown',
|
|
267
|
+
toolInput: tool.input ? JSON.stringify(tool.input, null, 2) : '',
|
|
268
|
+
hasResult: false, expanded: (tool.name === 'Edit' || tool.name === 'TodoWrite'), timestamp: new Date(),
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
} else if (data.type === 'user' && data.tool_use_result) {
|
|
272
|
+
const result = data.tool_use_result;
|
|
273
|
+
const results = Array.isArray(result) ? result : [result];
|
|
274
|
+
for (const r of results) {
|
|
275
|
+
const toolMsg = [...messages.value].reverse().find(
|
|
276
|
+
m2 => m2.role === 'tool' && m2.toolId === r.tool_use_id
|
|
277
|
+
);
|
|
278
|
+
if (toolMsg) {
|
|
279
|
+
toolMsg.toolOutput = typeof r.content === 'string'
|
|
280
|
+
? r.content : JSON.stringify(r.content, null, 2);
|
|
281
|
+
toolMsg.hasResult = true;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
} else if (m.type === 'turn_completed' || m.type === 'execution_cancelled') {
|
|
286
|
+
isProcessing.value = false;
|
|
287
|
+
isCompacting.value = false;
|
|
288
|
+
} else if (m.type === 'context_compaction') {
|
|
289
|
+
if (m.status === 'completed') isCompacting.value = false;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
// Flush remaining text
|
|
293
|
+
if (textAcc) {
|
|
294
|
+
streaming.flushReveal();
|
|
295
|
+
finalizeStreamingMsg(scheduleHighlight);
|
|
296
|
+
messages.value.push({
|
|
297
|
+
id: streaming.nextId(), role: 'assistant',
|
|
298
|
+
content: textAcc, timestamp: new Date(),
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
scrollToBottom();
|
|
241
302
|
} else if (msg.type === 'sessions_list') {
|
|
242
303
|
historySessions.value = msg.sessions || [];
|
|
243
304
|
loadingSessions.value = false;
|
package/web/style.css
CHANGED
|
@@ -438,7 +438,7 @@ body {
|
|
|
438
438
|
.message-list {
|
|
439
439
|
flex: 1;
|
|
440
440
|
overflow-y: auto;
|
|
441
|
-
padding: 1.5rem 1.5rem
|
|
441
|
+
padding: 1.5rem 1.5rem 1rem;
|
|
442
442
|
display: flex;
|
|
443
443
|
flex-direction: column;
|
|
444
444
|
gap: 0.25rem;
|
|
@@ -1289,18 +1289,6 @@ body {
|
|
|
1289
1289
|
flex-shrink: 0;
|
|
1290
1290
|
padding: 0 1.5rem 1rem;
|
|
1291
1291
|
background: transparent;
|
|
1292
|
-
position: relative;
|
|
1293
|
-
}
|
|
1294
|
-
|
|
1295
|
-
.input-area::before {
|
|
1296
|
-
content: '';
|
|
1297
|
-
position: absolute;
|
|
1298
|
-
top: -2rem;
|
|
1299
|
-
left: 0;
|
|
1300
|
-
right: 0;
|
|
1301
|
-
height: 2rem;
|
|
1302
|
-
background: linear-gradient(to top, var(--bg-primary), transparent);
|
|
1303
|
-
pointer-events: none;
|
|
1304
1292
|
}
|
|
1305
1293
|
|
|
1306
1294
|
.input-card {
|
|
@@ -1821,7 +1809,7 @@ body {
|
|
|
1821
1809
|
|
|
1822
1810
|
/* Message area */
|
|
1823
1811
|
.message-list {
|
|
1824
|
-
padding: 0.75rem 0.75rem 0.
|
|
1812
|
+
padding: 0.75rem 0.75rem 0.75rem;
|
|
1825
1813
|
}
|
|
1826
1814
|
|
|
1827
1815
|
.message-list-inner {
|