@agent-link/server 0.1.35 → 0.1.36
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/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;
|