@sma1lboy/kobe 0.9.7 → 0.9.9
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 +391 -387
- package/dist/cli/kobe-run.js +391 -387
- package/dist/cli/pty-host-node.mjs +24 -7
- package/dist/cli/rove-run.js +391 -387
- package/dist/web-ui/assets/AppShell-CYnOcixW.js +5 -0
- package/dist/web-ui/assets/Board-CPhoB6iq.js +1 -0
- package/dist/web-ui/assets/BoardPeek-DrOQ79OT.js +2 -0
- package/dist/web-ui/assets/ChatTerminal-dD7BxK7D.js +87 -0
- package/dist/web-ui/assets/ChatTranscript-sGctZOWf.js +1 -0
- package/dist/web-ui/assets/ConfirmDialog-DwCR5VCW.js +1 -0
- package/dist/web-ui/assets/{IssueIntakePanel-CBM21cyc.js → IssueIntakePanel-M1-5-SQo.js} +1 -1
- package/dist/web-ui/assets/IssuePeek-CvBjr3Uj.js +1 -0
- package/dist/web-ui/assets/IssuesPage-DOAacim_.js +1 -0
- package/dist/web-ui/assets/RichEditor-B2Hirfcc.js +173 -0
- package/dist/web-ui/assets/SettingsPage-DBxl8Gua.js +2 -0
- package/dist/web-ui/assets/SlideOver-Bt2OrIFm.js +1 -0
- package/dist/web-ui/assets/ViewToggle-BIW8t88D.js +1 -0
- package/dist/web-ui/assets/{WorkspaceTabs-DrrZuT8m.js → WorkspaceTabs-Bq1xW2Fj.js} +3 -3
- package/dist/web-ui/assets/active-task-DOIy-xHd.js +1 -0
- package/dist/web-ui/assets/arrow-left-CkmFCPVu.js +1 -0
- package/dist/web-ui/assets/board-Cc87lh3Z.js +1 -0
- package/dist/web-ui/assets/{chips-NdkDNqV7.js → chips-B2ODRu8l.js} +1 -1
- package/dist/web-ui/assets/{createLucideIcon-C6nfansM.js → createLucideIcon-C8T7_EGK.js} +1 -1
- package/dist/web-ui/assets/{external-link-Cj-9rta8.js → external-link-D4N6NrPI.js} +1 -1
- package/dist/web-ui/assets/{external-store-CNyRxjsC.js → external-store-Djn-EBMQ.js} +1 -1
- package/dist/web-ui/assets/{harness-9M6rZZri.js → harness-CzVjZ6jm.js} +1 -1
- package/dist/web-ui/assets/index-BnJAzfQw.js +10 -0
- package/dist/web-ui/assets/{index-BCOORN5f.css → index-BnjD9Q-3.css} +1 -1
- package/dist/web-ui/assets/issues-CiVe8q_b.js +4 -0
- package/dist/web-ui/assets/issues-QjkeRDbu.js +1 -0
- package/dist/web-ui/assets/{lazy-issue-panels-GvnRdSfG.js → lazy-issue-panels-BwPzNd74.js} +3 -3
- package/dist/web-ui/assets/{rotate-cw-BsVaYno1.js → rotate-cw-CSI5S-rL.js} +1 -1
- package/dist/web-ui/assets/routes-DzzbdStG.js +1 -0
- package/dist/web-ui/assets/{store-BK5yanfN.js → store-C3IHXPqa.js} +2 -2
- package/dist/web-ui/assets/{tabs-DHBP2ShA.js → tabs-C1KFppnz.js} +1 -1
- package/dist/web-ui/assets/task._taskId-IZIQEjgf.js +1 -0
- package/dist/web-ui/assets/terminal-Nt-mXbb9.js +1 -0
- package/dist/web-ui/assets/{toast-2mA6GzBq.js → toast-CTxQEYJU.js} +1 -1
- package/dist/web-ui/assets/{web-transport-BFuf9jKF.js → web-transport-BFmRPA6p.js} +1 -1
- package/dist/web-ui/assets/{worktrees-Bu5ii1XY.js → worktrees-BlU0Tq_2.js} +1 -1
- package/dist/web-ui/index.html +9 -23
- package/package.json +1 -1
- package/dist/web-ui/assets/AppShell-BvHb-c8o.js +0 -5
- package/dist/web-ui/assets/Board-CcUG5Zqa.js +0 -1
- package/dist/web-ui/assets/BoardPeek-C5c1gItm.js +0 -2
- package/dist/web-ui/assets/ChatTerminal-B32Pfuys.js +0 -144
- package/dist/web-ui/assets/ChatTranscript-Bw-ROsjY.js +0 -1
- package/dist/web-ui/assets/ConfirmDialog-CQUf9GuM.js +0 -1
- package/dist/web-ui/assets/IssuePeek-Ce8Qc6KY.js +0 -1
- package/dist/web-ui/assets/IssuesPage-BHj8y82L.js +0 -1
- package/dist/web-ui/assets/RichEditor-CY2cypY2.js +0 -173
- package/dist/web-ui/assets/SettingsPage-DovXUI00.js +0 -2
- package/dist/web-ui/assets/SlideOver-CI7vBtQJ.js +0 -1
- package/dist/web-ui/assets/ViewToggle-Bvvh1yLG.js +0 -1
- package/dist/web-ui/assets/active-task-CCVuYWP9.js +0 -1
- package/dist/web-ui/assets/activity-BjTd1D8q.js +0 -1
- package/dist/web-ui/assets/arrow-left-wT_Oflhg.js +0 -1
- package/dist/web-ui/assets/board-rQqUWfL9.js +0 -1
- package/dist/web-ui/assets/columns-3-xX5P4LBE.js +0 -1
- package/dist/web-ui/assets/desktop-B6tIfst1.js +0 -2
- package/dist/web-ui/assets/engines-CZCmPVm2.js +0 -1
- package/dist/web-ui/assets/index-BNs9r4hG.js +0 -10
- package/dist/web-ui/assets/issues-9Bx80Ra2.js +0 -1
- package/dist/web-ui/assets/issues-BjnSNgu-.js +0 -4
- package/dist/web-ui/assets/plus-Bz25iNHX.js +0 -1
- package/dist/web-ui/assets/react-dom-Ccqy9Xi6.js +0 -1
- package/dist/web-ui/assets/routes-F18MCI2e.js +0 -1
- package/dist/web-ui/assets/search-zs6lDYfz.js +0 -1
- package/dist/web-ui/assets/settings-Cavhxdh3.js +0 -1
- package/dist/web-ui/assets/task._taskId-B3nsG86I.js +0 -1
- package/dist/web-ui/assets/task._taskId-rxSYKMea.js +0 -2
- package/dist/web-ui/assets/terminal-6BCvBu4_.js +0 -1
- package/dist/web-ui/assets/triage-DjBy6dI9.js +0 -1
- package/dist/web-ui/assets/use-focus-trap-oPsw86zw.js +0 -1
- package/dist/web-ui/assets/vendor-CdtpTJrf.js +0 -1
- package/dist/web-ui/assets/with-selector-D8BuTuR6.js +0 -1
- package/dist/web-ui/assets/x-MtSojW5V.js +0 -1
|
@@ -464,6 +464,7 @@ function freezeSession(session, now = new Date) {
|
|
|
464
464
|
title: session.title,
|
|
465
465
|
totalBytes: session.totalBytes,
|
|
466
466
|
exit: session.exit,
|
|
467
|
+
...session.lastHumanWriteMs ? { lastHumanWriteMs: session.lastHumanWriteMs } : {},
|
|
467
468
|
ringB64: Buffer.concat(session.chunks).toString("base64"),
|
|
468
469
|
updatedAt: now.toISOString()
|
|
469
470
|
};
|
|
@@ -503,7 +504,8 @@ function thawSession(record, cap) {
|
|
|
503
504
|
parkedScreenBytes: 0,
|
|
504
505
|
exit: record.exit,
|
|
505
506
|
restored: true,
|
|
506
|
-
lastFreezeAtMs: 0
|
|
507
|
+
lastFreezeAtMs: 0,
|
|
508
|
+
lastHumanWriteMs: record.lastHumanWriteMs ?? 0
|
|
507
509
|
};
|
|
508
510
|
}
|
|
509
511
|
function recordFile(dir, key) {
|
|
@@ -665,7 +667,8 @@ function freshSessionState(key, spec, argv) {
|
|
|
665
667
|
parkedScreenBytes: 0,
|
|
666
668
|
exit: null,
|
|
667
669
|
restored: false,
|
|
668
|
-
lastFreezeAtMs: 0
|
|
670
|
+
lastFreezeAtMs: 0,
|
|
671
|
+
lastHumanWriteMs: 0
|
|
669
672
|
};
|
|
670
673
|
}
|
|
671
674
|
|
|
@@ -749,7 +752,7 @@ function scanOscTitle(session, buf) {
|
|
|
749
752
|
session.title = title;
|
|
750
753
|
session.titleCarry = carry;
|
|
751
754
|
}
|
|
752
|
-
function peekRing(session, sinceOffset) {
|
|
755
|
+
function peekRing(session, sinceOffset, humanWriteQuietMs) {
|
|
753
756
|
if (!session) {
|
|
754
757
|
return { exists: false, alive: false, pid: null, offset: 0, data: "", sinceValid: false, exit: null };
|
|
755
758
|
}
|
|
@@ -767,7 +770,8 @@ function peekRing(session, sinceOffset) {
|
|
|
767
770
|
offset: session.totalBytes,
|
|
768
771
|
data: buf.toString("base64"),
|
|
769
772
|
sinceValid,
|
|
770
|
-
exit: session.exit ?? null
|
|
773
|
+
exit: session.exit ?? null,
|
|
774
|
+
...session.lastHumanWriteMs && session.lastHumanWriteMs > 0 ? { lastHumanWriteMs: session.lastHumanWriteMs, humanWriteQuietMs } : {}
|
|
771
775
|
};
|
|
772
776
|
}
|
|
773
777
|
|
|
@@ -947,12 +951,21 @@ class WarmSpare {
|
|
|
947
951
|
// ../kobe-daemon/src/daemon/pty-host.ts
|
|
948
952
|
var DEFAULT_SCROLLBACK_CAP = 512 * 1024;
|
|
949
953
|
var EXIT_TAIL_BYTES = 16 * 1024;
|
|
954
|
+
var DEFAULT_HUMAN_WRITE_QUIET_MS = 1e4;
|
|
955
|
+
function resolveHumanWriteQuietMs() {
|
|
956
|
+
const raw = process.env.KOBE_PTY_HUMAN_WRITE_QUIET_MS;
|
|
957
|
+
if (raw === undefined)
|
|
958
|
+
return DEFAULT_HUMAN_WRITE_QUIET_MS;
|
|
959
|
+
const n = Number(raw);
|
|
960
|
+
return Number.isFinite(n) && n >= 0 ? n : DEFAULT_HUMAN_WRITE_QUIET_MS;
|
|
961
|
+
}
|
|
950
962
|
var FREEZE_INTERVAL_MS = 5000;
|
|
951
963
|
|
|
952
964
|
class PtyHost {
|
|
953
965
|
sessions = new Map;
|
|
954
966
|
opts;
|
|
955
967
|
scrollbackCap;
|
|
968
|
+
humanWriteQuietMs;
|
|
956
969
|
parkRestoreDeltas = 0;
|
|
957
970
|
parkRestoreFallbacks = 0;
|
|
958
971
|
childController;
|
|
@@ -960,6 +973,7 @@ class PtyHost {
|
|
|
960
973
|
constructor(opts = {}) {
|
|
961
974
|
this.opts = opts;
|
|
962
975
|
this.scrollbackCap = opts.scrollbackCap ?? DEFAULT_SCROLLBACK_CAP;
|
|
976
|
+
this.humanWriteQuietMs = opts.humanWriteQuietMs ?? resolveHumanWriteQuietMs();
|
|
963
977
|
this.childController = new PtyChildController({
|
|
964
978
|
driver: opts.driver,
|
|
965
979
|
scrollbackCap: this.scrollbackCap,
|
|
@@ -1057,10 +1071,13 @@ class PtyHost {
|
|
|
1057
1071
|
warm(cwd, shell, cols = 80, rows = 24) {
|
|
1058
1072
|
this.warmSpare.warm(cwd, shell, cols, rows);
|
|
1059
1073
|
}
|
|
1060
|
-
write(key, data) {
|
|
1074
|
+
write(key, data, client) {
|
|
1061
1075
|
const session = this.sessions.get(key);
|
|
1062
1076
|
if (!session?.alive || data.length === 0)
|
|
1063
1077
|
return;
|
|
1078
|
+
if (client !== undefined && session.sinks.has(client)) {
|
|
1079
|
+
session.lastHumanWriteMs = Date.now();
|
|
1080
|
+
}
|
|
1064
1081
|
try {
|
|
1065
1082
|
session.proc?.write(data);
|
|
1066
1083
|
} catch {}
|
|
@@ -1118,7 +1135,7 @@ class PtyHost {
|
|
|
1118
1135
|
return Array.from(this.sessions.values(), (s) => sessionInfo(s));
|
|
1119
1136
|
}
|
|
1120
1137
|
peek(key, sinceOffset) {
|
|
1121
|
-
return peekRing(this.sessions.get(key), sinceOffset);
|
|
1138
|
+
return peekRing(this.sessions.get(key), sinceOffset, this.humanWriteQuietMs);
|
|
1122
1139
|
}
|
|
1123
1140
|
stats() {
|
|
1124
1141
|
return hostStats(this.sessions.values(), this.scrollbackCap, this.parkRestoreDeltas, this.parkRestoreFallbacks);
|
|
@@ -1313,7 +1330,7 @@ async function startPtyHostServer(options = {}) {
|
|
|
1313
1330
|
}
|
|
1314
1331
|
case "pty.write": {
|
|
1315
1332
|
const payload = objectPayload(req.payload);
|
|
1316
|
-
ptys.write(requireString(payload, "key"), typeof payload.data === "string" ? payload.data : "");
|
|
1333
|
+
ptys.write(requireString(payload, "key"), typeof payload.data === "string" ? payload.data : "", client);
|
|
1317
1334
|
return {};
|
|
1318
1335
|
}
|
|
1319
1336
|
case "pty.resize": {
|