@sma1lboy/kobe 0.8.157 → 0.8.159
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/cli/index.js +439 -439
- package/dist/cli/kobe-run.js +435 -435
- package/dist/cli/pty-host-node.mjs +13 -11
- package/dist/cli/rove-run.js +435 -435
- package/package.json +1 -1
|
@@ -743,6 +743,7 @@ var FREEZE_INTERVAL_MS = 5000;
|
|
|
743
743
|
class PtyHost {
|
|
744
744
|
sessions = new Map;
|
|
745
745
|
opts;
|
|
746
|
+
scrollbackCap;
|
|
746
747
|
parkRestoreDeltas = 0;
|
|
747
748
|
parkRestoreFallbacks = 0;
|
|
748
749
|
warmSpare = new WarmSpare({
|
|
@@ -754,6 +755,7 @@ class PtyHost {
|
|
|
754
755
|
});
|
|
755
756
|
constructor(opts = {}) {
|
|
756
757
|
this.opts = opts;
|
|
758
|
+
this.scrollbackCap = opts.scrollbackCap ?? DEFAULT_SCROLLBACK_CAP;
|
|
757
759
|
}
|
|
758
760
|
open(key, spec, token, sink, sinceOffset, sincePid) {
|
|
759
761
|
let session = this.sessions.get(key);
|
|
@@ -841,20 +843,20 @@ class PtyHost {
|
|
|
841
843
|
if (!session)
|
|
842
844
|
return;
|
|
843
845
|
session.sinks.delete(token);
|
|
844
|
-
|
|
845
|
-
session.parked = parked;
|
|
846
|
-
session.parkedScreenBytes = parked ? Math.max(0, parkedScreenBytes) : 0;
|
|
847
|
-
}
|
|
846
|
+
this.applyParkedOnDetach(session, parked, parkedScreenBytes);
|
|
848
847
|
}
|
|
849
848
|
detachClient(token) {
|
|
850
849
|
for (const session of this.sessions.values()) {
|
|
851
850
|
session.sinks.delete(token);
|
|
852
|
-
|
|
853
|
-
session.parked = false;
|
|
854
|
-
session.parkedScreenBytes = 0;
|
|
855
|
-
}
|
|
851
|
+
this.applyParkedOnDetach(session);
|
|
856
852
|
}
|
|
857
853
|
}
|
|
854
|
+
applyParkedOnDetach(session, parked = false, parkedScreenBytes = 0) {
|
|
855
|
+
if (session.sinks.size !== 0)
|
|
856
|
+
return;
|
|
857
|
+
session.parked = parked;
|
|
858
|
+
session.parkedScreenBytes = parked ? Math.max(0, parkedScreenBytes) : 0;
|
|
859
|
+
}
|
|
858
860
|
list() {
|
|
859
861
|
return Array.from(this.sessions.values(), (s) => sessionInfo(s));
|
|
860
862
|
}
|
|
@@ -862,7 +864,7 @@ class PtyHost {
|
|
|
862
864
|
return peekRing(this.sessions.get(key), sinceOffset);
|
|
863
865
|
}
|
|
864
866
|
stats() {
|
|
865
|
-
return hostStats(this.sessions.values(), this.
|
|
867
|
+
return hostStats(this.sessions.values(), this.scrollbackCap, this.parkRestoreDeltas, this.parkRestoreFallbacks);
|
|
866
868
|
}
|
|
867
869
|
sweepTasks(liveTaskIds) {
|
|
868
870
|
for (const key of Array.from(this.sessions.keys())) {
|
|
@@ -891,7 +893,7 @@ class PtyHost {
|
|
|
891
893
|
for (const record of records) {
|
|
892
894
|
if (this.sessions.has(record.key))
|
|
893
895
|
continue;
|
|
894
|
-
const session = thawSession(record, this.
|
|
896
|
+
const session = thawSession(record, this.scrollbackCap);
|
|
895
897
|
if (!session)
|
|
896
898
|
continue;
|
|
897
899
|
this.sessions.set(record.key, session);
|
|
@@ -971,7 +973,7 @@ class PtyHost {
|
|
|
971
973
|
session.chunks.push(buf);
|
|
972
974
|
session.bytes += buf.byteLength;
|
|
973
975
|
session.totalBytes += buf.byteLength;
|
|
974
|
-
while (session.bytes >
|
|
976
|
+
while (session.bytes > this.scrollbackCap && session.chunks.length > 1) {
|
|
975
977
|
const dropped = session.chunks.shift();
|
|
976
978
|
if (dropped)
|
|
977
979
|
session.bytes -= dropped.byteLength;
|