@fias/plugin-dev-harness 1.5.13 → 1.5.15
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-handler.d.ts","sourceRoot":"","sources":["../../src/bridge/live-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAIjF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,yBAAyB,EAAE,gBAAgB,CAAC,CAAC;CACnF;AAED,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,WAAW,CAAoB;gBAE3B,OAAO,EAAE,kBAAkB;IAUjC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAehD,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"live-handler.d.ts","sourceRoot":"","sources":["../../src/bridge/live-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAIjF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,yBAAyB,EAAE,gBAAgB,CAAC,CAAC;CACnF;AAED,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,WAAW,CAAoB;gBAE3B,OAAO,EAAE,kBAAkB;IAUjC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAehD,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IA+E1F,yDAAyD;YAC3C,UAAU;CAuBzB"}
|
|
@@ -86,6 +86,10 @@ class LiveBridgeHandler {
|
|
|
86
86
|
if (parsed.text) {
|
|
87
87
|
fullOutput += parsed.text;
|
|
88
88
|
onToken(parsed.text);
|
|
89
|
+
// Yield to the event loop so Node.js flushes the HTTP response
|
|
90
|
+
// write to the network. Without this, all onToken/res.write calls
|
|
91
|
+
// within a single reader.read() chunk get batched into one TCP write.
|
|
92
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
89
93
|
}
|
|
90
94
|
if (parsed.done) {
|
|
91
95
|
finalResult = { output: parsed.output, metadata: parsed.metadata };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-handler.js","sourceRoot":"","sources":["../../src/bridge/live-handler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"live-handler.js","sourceRoot":"","sources":["../../src/bridge/live-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -375,7 +375,7 @@
|
|
|
375
375
|
return;
|
|
376
376
|
}
|
|
377
377
|
|
|
378
|
-
// Live mode: proxy through
|
|
378
|
+
// Live mode: SSE proxy through Express with event-loop yields
|
|
379
379
|
fetch('/api/bridge/stream', {
|
|
380
380
|
method: 'POST',
|
|
381
381
|
headers: { 'Content-Type': 'application/json' },
|
|
@@ -389,9 +389,7 @@
|
|
|
389
389
|
}
|
|
390
390
|
|
|
391
391
|
var contentType = response.headers.get('content-type') || '';
|
|
392
|
-
logMessage('info', 'SSE response content-type: ' + contentType);
|
|
393
392
|
if (contentType.indexOf('text/event-stream') === -1) {
|
|
394
|
-
logMessage('warn', 'Not SSE — falling back to JSON');
|
|
395
393
|
return response.json().then(function (result) {
|
|
396
394
|
sendToPlugin({ type: 'response', messageId: data.messageId, payload: result });
|
|
397
395
|
});
|
|
@@ -401,24 +399,24 @@
|
|
|
401
399
|
var decoder = new TextDecoder();
|
|
402
400
|
var buffer = '';
|
|
403
401
|
var finalPayload = null;
|
|
404
|
-
var tokenCount = 0;
|
|
405
|
-
var chunkCount = 0;
|
|
406
402
|
|
|
407
403
|
function pump() {
|
|
408
404
|
return reader.read().then(function (chunk) {
|
|
409
405
|
if (chunk.done) {
|
|
410
|
-
logMessage('info', 'Stream complete — ' + tokenCount + ' tokens in ' + chunkCount + ' chunks');
|
|
411
406
|
if (finalPayload) {
|
|
407
|
+
logMessage('send', 'response', finalPayload);
|
|
408
|
+
if (finalPayload.metadata && finalPayload.metadata.cost > 0) {
|
|
409
|
+
logMessage('cost', 'Credits used: ' + finalPayload.metadata.cost.toFixed(4));
|
|
410
|
+
fetchCredits();
|
|
411
|
+
}
|
|
412
412
|
sendToPlugin({ type: 'response', messageId: data.messageId, payload: finalPayload });
|
|
413
413
|
}
|
|
414
414
|
return;
|
|
415
415
|
}
|
|
416
416
|
|
|
417
|
-
chunkCount++;
|
|
418
417
|
buffer += decoder.decode(chunk.value, { stream: true });
|
|
419
418
|
var lines = buffer.split('\n');
|
|
420
419
|
buffer = lines.pop() || '';
|
|
421
|
-
var tokensThisChunk = 0;
|
|
422
420
|
|
|
423
421
|
for (var i = 0; i < lines.length; i++) {
|
|
424
422
|
var line = lines[i];
|
|
@@ -427,16 +425,10 @@
|
|
|
427
425
|
var parsed = JSON.parse(line.slice(6));
|
|
428
426
|
if (parsed.error) throw new Error(parsed.error);
|
|
429
427
|
if (parsed.text) {
|
|
430
|
-
tokenCount++;
|
|
431
|
-
tokensThisChunk++;
|
|
432
428
|
sendToPlugin({ type: 'stream_token', messageId: data.messageId, text: parsed.text });
|
|
433
429
|
}
|
|
434
430
|
if (parsed.done) {
|
|
435
431
|
finalPayload = { output: parsed.output, metadata: parsed.metadata };
|
|
436
|
-
if (parsed.metadata && parsed.metadata.cost > 0) {
|
|
437
|
-
logMessage('cost', 'Credits used: ' + parsed.metadata.cost.toFixed(4));
|
|
438
|
-
fetchCredits();
|
|
439
|
-
}
|
|
440
432
|
}
|
|
441
433
|
} catch (e) {
|
|
442
434
|
if (e instanceof SyntaxError) continue;
|
|
@@ -444,10 +436,6 @@
|
|
|
444
436
|
}
|
|
445
437
|
}
|
|
446
438
|
|
|
447
|
-
if (tokensThisChunk > 0) {
|
|
448
|
-
logMessage('info', 'chunk #' + chunkCount + ': ' + tokensThisChunk + ' tokens');
|
|
449
|
-
}
|
|
450
|
-
|
|
451
439
|
return pump();
|
|
452
440
|
});
|
|
453
441
|
}
|