u-foo 2.3.9 → 2.3.10
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
CHANGED
package/src/agent/ptyRunner.js
CHANGED
|
@@ -9,6 +9,7 @@ const { ActivityDetector } = require("./activityDetector");
|
|
|
9
9
|
const { createActivityStatePublisher } = require("./activityStatePublisher");
|
|
10
10
|
const {
|
|
11
11
|
parseStreamEnvelope,
|
|
12
|
+
shouldAutoReplyFromPtyToPublisher,
|
|
12
13
|
shouldForwardStreamToPublisher,
|
|
13
14
|
} = require("./publisherRouting");
|
|
14
15
|
|
|
@@ -192,7 +193,6 @@ async function runPtyRunner({ projectRoot, agentType = "codex", extraArgs = [] }
|
|
|
192
193
|
let suppressEcho = false;
|
|
193
194
|
let echoMarker = "";
|
|
194
195
|
let suppressTimer = null;
|
|
195
|
-
let managedReplyBuffer = "";
|
|
196
196
|
let ptyProcess = null;
|
|
197
197
|
let restartCount = 0;
|
|
198
198
|
let lastSpawnTime = 0;
|
|
@@ -254,45 +254,23 @@ async function runPtyRunner({ projectRoot, agentType = "codex", extraArgs = [] }
|
|
|
254
254
|
return result;
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
function appendManagedReply(chunk) {
|
|
258
|
-
const text = String(chunk || "");
|
|
259
|
-
if (!text) return;
|
|
260
|
-
managedReplyBuffer += text;
|
|
261
|
-
if (managedReplyBuffer.length > 40000) {
|
|
262
|
-
managedReplyBuffer = managedReplyBuffer.slice(-40000);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
function takeManagedReply() {
|
|
267
|
-
const reply = sanitizeChunk(managedReplyBuffer)
|
|
268
|
-
.replace(/\n{3,}/g, "\n\n")
|
|
269
|
-
.trim();
|
|
270
|
-
managedReplyBuffer = "";
|
|
271
|
-
return reply;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
257
|
function completePublisherResponse(reason, fallbackNote = "") {
|
|
275
258
|
if (!currentPublisher) return;
|
|
276
259
|
if (flushTimer) {
|
|
277
260
|
clearTimeout(flushTimer);
|
|
278
261
|
flushTimer = null;
|
|
279
262
|
}
|
|
263
|
+
if (!shouldAutoReplyFromPtyToPublisher(projectRoot, currentPublisher)) {
|
|
264
|
+
outputBuffer = "";
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
280
267
|
if (outputBuffer) {
|
|
281
268
|
const remaining = outputBuffer;
|
|
282
269
|
outputBuffer = "";
|
|
283
270
|
deliverChunk(remaining);
|
|
284
271
|
}
|
|
285
|
-
if (
|
|
286
|
-
|
|
287
|
-
enqueueSend(currentPublisher, JSON.stringify({ stream: true, done: true, reason }));
|
|
288
|
-
return;
|
|
289
|
-
}
|
|
290
|
-
const reply = takeManagedReply();
|
|
291
|
-
if (reply) {
|
|
292
|
-
enqueueSend(currentPublisher, reply);
|
|
293
|
-
} else if (fallbackNote) {
|
|
294
|
-
enqueueSend(currentPublisher, fallbackNote);
|
|
295
|
-
}
|
|
272
|
+
if (fallbackNote) enqueueSend(currentPublisher, fallbackNote);
|
|
273
|
+
enqueueSend(currentPublisher, JSON.stringify({ stream: true, done: true, reason }));
|
|
296
274
|
}
|
|
297
275
|
|
|
298
276
|
// TTY view subscribers (same protocol as launcher inject.sock)
|
|
@@ -623,8 +601,6 @@ async function runPtyRunner({ projectRoot, agentType = "codex", extraArgs = [] }
|
|
|
623
601
|
if (currentPublisher) {
|
|
624
602
|
if (canStreamToPublisher(currentPublisher)) {
|
|
625
603
|
enqueueSend(currentPublisher, payload);
|
|
626
|
-
} else {
|
|
627
|
-
appendManagedReply(cleaned);
|
|
628
604
|
}
|
|
629
605
|
} else {
|
|
630
606
|
pendingOutput.push(payload);
|
|
@@ -699,7 +675,6 @@ async function runPtyRunner({ projectRoot, agentType = "codex", extraArgs = [] }
|
|
|
699
675
|
}
|
|
700
676
|
busy = false;
|
|
701
677
|
currentPublisher = "";
|
|
702
|
-
managedReplyBuffer = "";
|
|
703
678
|
processQueue();
|
|
704
679
|
}
|
|
705
680
|
});
|
|
@@ -752,7 +727,6 @@ async function runPtyRunner({ projectRoot, agentType = "codex", extraArgs = [] }
|
|
|
752
727
|
busy = false;
|
|
753
728
|
activityDetector.markIdle();
|
|
754
729
|
currentPublisher = "";
|
|
755
|
-
managedReplyBuffer = "";
|
|
756
730
|
if (watchdogTimer) {
|
|
757
731
|
clearTimeout(watchdogTimer);
|
|
758
732
|
watchdogTimer = null;
|
|
@@ -793,7 +767,6 @@ async function runPtyRunner({ projectRoot, agentType = "codex", extraArgs = [] }
|
|
|
793
767
|
busy = false;
|
|
794
768
|
activityDetector.markIdle();
|
|
795
769
|
currentPublisher = "";
|
|
796
|
-
managedReplyBuffer = "";
|
|
797
770
|
processQueue();
|
|
798
771
|
}, idleMs);
|
|
799
772
|
}
|
|
@@ -833,7 +806,6 @@ async function runPtyRunner({ projectRoot, agentType = "codex", extraArgs = [] }
|
|
|
833
806
|
activityDetector.markIdle();
|
|
834
807
|
currentPublisher = "";
|
|
835
808
|
currentMarker = "";
|
|
836
|
-
managedReplyBuffer = "";
|
|
837
809
|
|
|
838
810
|
// If stop() was called, let the runner exit
|
|
839
811
|
if (!running) return;
|
|
@@ -969,7 +941,6 @@ async function runPtyRunner({ projectRoot, agentType = "codex", extraArgs = [] }
|
|
|
969
941
|
activityDetector.markWorking();
|
|
970
942
|
currentPublisher = next.publisher;
|
|
971
943
|
currentMarker = next.marker || "";
|
|
972
|
-
managedReplyBuffer = "";
|
|
973
944
|
if (suppressTimer) {
|
|
974
945
|
clearTimeout(suppressTimer);
|
|
975
946
|
suppressTimer = null;
|
|
@@ -1040,7 +1011,6 @@ async function runPtyRunner({ projectRoot, agentType = "codex", extraArgs = [] }
|
|
|
1040
1011
|
busy = false;
|
|
1041
1012
|
activityDetector.markIdle();
|
|
1042
1013
|
currentPublisher = "";
|
|
1043
|
-
managedReplyBuffer = "";
|
|
1044
1014
|
processQueue();
|
|
1045
1015
|
}, watchdogMs);
|
|
1046
1016
|
}
|
|
@@ -33,6 +33,10 @@ function shouldForwardStreamToPublisher(projectRoot, publisher) {
|
|
|
33
33
|
return !isManagedAgentPublisher(projectRoot, id);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
function shouldAutoReplyFromPtyToPublisher(projectRoot, publisher) {
|
|
37
|
+
return shouldForwardStreamToPublisher(projectRoot, publisher);
|
|
38
|
+
}
|
|
39
|
+
|
|
36
40
|
function parseStreamEnvelope(message) {
|
|
37
41
|
if (typeof message !== "string" || !message.trim()) return null;
|
|
38
42
|
try {
|
|
@@ -50,5 +54,6 @@ module.exports = {
|
|
|
50
54
|
isManagedAgentPublisher,
|
|
51
55
|
normalizePublisher,
|
|
52
56
|
parseStreamEnvelope,
|
|
57
|
+
shouldAutoReplyFromPtyToPublisher,
|
|
53
58
|
shouldForwardStreamToPublisher,
|
|
54
59
|
};
|