@xrkseek/harness 0.6.13 → 0.6.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.
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js +4 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/request-header-log.d.ts +11 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/request-header-log.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/request-header-log.js +66 -0
- package/node_modules/@xrkseek/core-agent-loop/dist/request-header-log.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/compaction.d.ts +6 -1
- package/node_modules/@xrkseek/core-session/dist/compaction.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/compaction.js +25 -17
- package/node_modules/@xrkseek/core-session/dist/compaction.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/index.d.ts +2 -2
- package/node_modules/@xrkseek/core-session/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/index.js +2 -2
- package/node_modules/@xrkseek/core-session/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/sqlite-journal.d.ts +20 -0
- package/node_modules/@xrkseek/core-session/dist/sqlite-journal.d.ts.map +1 -0
- package/node_modules/@xrkseek/core-session/dist/sqlite-journal.js +41 -0
- package/node_modules/@xrkseek/core-session/dist/sqlite-journal.js.map +1 -0
- package/node_modules/@xrkseek/core-session/dist/sqlite-store.d.ts +1 -0
- package/node_modules/@xrkseek/core-session/dist/sqlite-store.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/sqlite-store.js +10 -4
- package/node_modules/@xrkseek/core-session/dist/sqlite-store.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/store-lock.d.ts +2 -4
- package/node_modules/@xrkseek/core-session/dist/store-lock.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/store-lock.js +36 -133
- package/node_modules/@xrkseek/core-session/dist/store-lock.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/surface-estimate.d.ts +35 -2
- package/node_modules/@xrkseek/core-session/dist/surface-estimate.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/surface-estimate.js +91 -3
- package/node_modules/@xrkseek/core-session/dist/surface-estimate.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/std-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/std-tools.js +9 -0
- package/node_modules/@xrkseek/core-tools/dist/std-tools.js.map +1 -1
- package/node_modules/@xrkseek/exec-pty/dist/config.d.ts +7 -1
- package/node_modules/@xrkseek/exec-pty/dist/config.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-pty/dist/config.js +11 -2
- package/node_modules/@xrkseek/exec-pty/dist/config.js.map +1 -1
- package/node_modules/@xrkseek/exec-pty/dist/session.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-pty/dist/session.js +7 -1
- package/node_modules/@xrkseek/exec-pty/dist/session.js.map +1 -1
- package/node_modules/@xrkseek/exec-pty/dist/windows-pty.d.ts +5 -1
- package/node_modules/@xrkseek/exec-pty/dist/windows-pty.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-pty/dist/windows-pty.js +5 -1
- package/node_modules/@xrkseek/exec-pty/dist/windows-pty.js.map +1 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/resolve.d.ts +4 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/resolve.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-sandbox/dist/resolve.js.map +1 -1
- package/node_modules/@xrkseek/exec-shell/dist/index.d.ts +10 -0
- package/node_modules/@xrkseek/exec-shell/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-shell/dist/index.js +8 -0
- package/node_modules/@xrkseek/exec-shell/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/mcp/dist/client.d.ts.map +1 -1
- package/node_modules/@xrkseek/mcp/dist/client.js +19 -4
- package/node_modules/@xrkseek/mcp/dist/client.js.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/protocol/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/session-events.d.ts +49 -1
- package/node_modules/@xrkseek/protocol/dist/session-events.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/session-events.js +2 -0
- package/node_modules/@xrkseek/protocol/dist/session-events.js.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/validate.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/validate.js +93 -0
- package/node_modules/@xrkseek/protocol/dist/validate.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.d.ts +2 -0
- package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.js +6 -2
- package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js +24 -8
- package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/agent-team-graph.d.ts +7 -1
- package/node_modules/@xrkseek/server-face/dist/agent-team-graph.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/agent-team-graph.js +28 -1
- package/node_modules/@xrkseek/server-face/dist/agent-team-graph.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/context.d.ts +5 -0
- package/node_modules/@xrkseek/server-face/dist/context.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/session.js +13 -4
- package/node_modules/@xrkseek/server-face/dist/handlers/session.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.js +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/job-session-journal.d.ts +11 -0
- package/node_modules/@xrkseek/server-face/dist/job-session-journal.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/job-session-journal.js +78 -0
- package/node_modules/@xrkseek/server-face/dist/job-session-journal.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/list-work-slice.d.ts +27 -0
- package/node_modules/@xrkseek/server-face/dist/list-work-slice.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/list-work-slice.js +39 -0
- package/node_modules/@xrkseek/server-face/dist/list-work-slice.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/peer-session-wait.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/peer-session-wait.js +5 -2
- package/node_modules/@xrkseek/server-face/dist/peer-session-wait.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/questions.d.ts +48 -7
- package/node_modules/@xrkseek/server-face/dist/questions.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/questions.js +176 -17
- package/node_modules/@xrkseek/server-face/dist/questions.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/runtime.js +23 -3
- package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-archive-activity.d.ts +9 -0
- package/node_modules/@xrkseek/server-face/dist/session-archive-activity.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-archive-activity.js +47 -0
- package/node_modules/@xrkseek/server-face/dist/session-archive-activity.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-status.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-status.js +17 -2
- package/node_modules/@xrkseek/server-face/dist/session-status.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +5 -2
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/types.d.ts +6 -0
- package/node_modules/@xrkseek/server-face/dist/types.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/wait-drain-idle.d.ts +9 -0
- package/node_modules/@xrkseek/server-face/dist/wait-drain-idle.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/wait-drain-idle.js +38 -4
- package/node_modules/@xrkseek/server-face/dist/wait-drain-idle.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/wire/rpc-error.d.ts +1 -1
- package/node_modules/@xrkseek/server-face/dist/wire/rpc-error.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/wire/rpc-error.js +2 -0
- package/node_modules/@xrkseek/server-face/dist/wire/rpc-error.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-face.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-face.js +20 -0
- package/node_modules/@xrkseek/server-face/dist/workspace-face.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.js +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/sidebar-agent-pty.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/sidebar-agent-pty.js +3 -7
- package/node_modules/@xrkseek/server-host/dist/sidebar-agent-pty.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/sidebar-pty.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/sidebar-pty.js +8 -4
- package/node_modules/@xrkseek/server-host/dist/sidebar-pty.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/boot-inject.d.ts +2 -2
- package/node_modules/@xrkseek/server-http/dist/boot-inject.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/boot-inject.js +8 -4
- package/node_modules/@xrkseek/server-http/dist/boot-inject.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
* (`sessions.db`). DSH uses per-session `session.lock`; XRK stores every
|
|
4
4
|
* session in one SQLite file, so the lease guards the directory.
|
|
5
5
|
*
|
|
6
|
-
* Portable
|
|
7
|
-
*
|
|
8
|
-
* PID
|
|
9
|
-
*
|
|
10
|
-
* the
|
|
6
|
+
* Portable lockfile with **no PID steal**. A second writer that sees an
|
|
7
|
+
* existing lock always gets {@link SessionsDirInUseError} — even when the
|
|
8
|
+
* named PID looks dead. PID reuse on Windows would otherwise tear concurrent
|
|
9
|
+
* SQLite writers. Crash reclaim is operator-visible (delete the lock file /
|
|
10
|
+
* quit the other Host); a future kernel mutex can auto-reclaim without
|
|
11
|
+
* reintroducing steal-by-PID.
|
|
11
12
|
*/
|
|
12
13
|
import { mkdirSync, readFileSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
13
14
|
import path from "node:path";
|
|
@@ -25,15 +26,11 @@ export class SessionsDirInUseError extends Error {
|
|
|
25
26
|
constructor(dir, holderPid) {
|
|
26
27
|
const root = path.resolve(dir);
|
|
27
28
|
const lockPath = path.join(root, SESSIONS_WRITE_LOCK_FILENAME);
|
|
28
|
-
const pidAlive = holderPid !== undefined ? isProcessAlive(holderPid) : false;
|
|
29
29
|
const holderLine = holderPid !== undefined
|
|
30
|
-
?
|
|
31
|
-
? ` Holder process PID ${String(holderPid)} is still running.`
|
|
32
|
-
: ` Lock file names PID ${String(holderPid)}, but that process is gone.`
|
|
30
|
+
? ` Lock file names PID ${String(holderPid)}.`
|
|
33
31
|
: "";
|
|
34
|
-
const tip =
|
|
35
|
-
|
|
36
|
-
: " No live holder was found — if this keeps happening, delete the lock file and start again.";
|
|
32
|
+
const tip = " Quit other XRK Hosts (Desktop app, or `xrkh serve` / `xrkh web` in a terminal)." +
|
|
33
|
+
" If that Host already exited, delete the lock file and try again.";
|
|
37
34
|
super(`Session store lock: data folder already in use.${holderLine}${tip}\nLock file: ${lockPath}`);
|
|
38
35
|
this.name = "SessionsDirInUseError";
|
|
39
36
|
this.dir = root;
|
|
@@ -43,19 +40,6 @@ export class SessionsDirInUseError extends Error {
|
|
|
43
40
|
}
|
|
44
41
|
/** In-process exclusive holders keyed by resolved directory. */
|
|
45
42
|
const localExclusive = new Map();
|
|
46
|
-
function isProcessAlive(pid) {
|
|
47
|
-
if (!Number.isInteger(pid) || pid <= 0)
|
|
48
|
-
return false;
|
|
49
|
-
try {
|
|
50
|
-
process.kill(pid, 0);
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
catch (err) {
|
|
54
|
-
const code = err.code;
|
|
55
|
-
// EPERM: process exists but we cannot signal it — treat as live.
|
|
56
|
-
return code === "EPERM";
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
43
|
function readHolderPid(lockPath) {
|
|
60
44
|
try {
|
|
61
45
|
const text = readFileSync(lockPath, "utf8").trim();
|
|
@@ -68,32 +52,10 @@ function readHolderPid(lockPath) {
|
|
|
68
52
|
return undefined;
|
|
69
53
|
}
|
|
70
54
|
}
|
|
71
|
-
/** Best-effort remove a lock whose holder is dead or missing. */
|
|
72
|
-
function unlinkStaleLock(lockPath) {
|
|
73
|
-
const holderPid = readHolderPid(lockPath);
|
|
74
|
-
if (holderPid !== undefined && isProcessAlive(holderPid)) {
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
try {
|
|
78
|
-
unlinkSync(lockPath);
|
|
79
|
-
return true;
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/** Sync backoff without timers (lock acquire is sync). */
|
|
86
|
-
function spinWaitMs(ms) {
|
|
87
|
-
const sab = new SharedArrayBuffer(4);
|
|
88
|
-
const view = new Int32Array(sab);
|
|
89
|
-
Atomics.wait(view, 0, 0, ms);
|
|
90
|
-
}
|
|
91
55
|
/**
|
|
92
56
|
* Acquire exclusive write ownership of `dir`.
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
* @throws {SessionsDirInUseError} when another live process (or this process)
|
|
96
|
-
* already holds the lease.
|
|
57
|
+
* @throws {SessionsDirInUseError} when another process (or this process)
|
|
58
|
+
* already holds the lease — never steals a lockfile by PID liveness.
|
|
97
59
|
*/
|
|
98
60
|
export function acquireSessionsDirLock(dir) {
|
|
99
61
|
const root = path.resolve(dir);
|
|
@@ -103,97 +65,38 @@ export function acquireSessionsDirLock(dir) {
|
|
|
103
65
|
throw new SessionsDirInUseError(root, process.pid);
|
|
104
66
|
}
|
|
105
67
|
const lockPath = path.join(root, SESSIONS_WRITE_LOCK_FILENAME);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
// Path was replaced under us — drop and retry.
|
|
114
|
-
try {
|
|
115
|
-
unlinkSync(lockPath);
|
|
116
|
-
}
|
|
117
|
-
catch {
|
|
118
|
-
/* ignore */
|
|
119
|
-
}
|
|
120
|
-
continue;
|
|
121
|
-
}
|
|
122
|
-
let released = false;
|
|
123
|
-
const lock = {
|
|
124
|
-
release() {
|
|
125
|
-
if (released)
|
|
126
|
-
return;
|
|
127
|
-
released = true;
|
|
128
|
-
localExclusive.delete(root);
|
|
129
|
-
try {
|
|
130
|
-
// Never unlink another holder's lease if we were stolen.
|
|
131
|
-
if (readHolderPid(lockPath) === process.pid) {
|
|
132
|
-
unlinkSync(lockPath);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
/* ignore */
|
|
137
|
-
}
|
|
138
|
-
},
|
|
139
|
-
};
|
|
140
|
-
localExclusive.set(root, lock);
|
|
141
|
-
return lock;
|
|
142
|
-
}
|
|
143
|
-
catch (err) {
|
|
144
|
-
const code = err.code;
|
|
145
|
-
if (code !== "EEXIST")
|
|
146
|
-
throw err;
|
|
147
|
-
const holderPid = readHolderPid(lockPath);
|
|
148
|
-
if (holderPid !== undefined && isProcessAlive(holderPid)) {
|
|
149
|
-
throw new SessionsDirInUseError(root, holderPid);
|
|
150
|
-
}
|
|
151
|
-
if (holderPid === undefined) {
|
|
152
|
-
// Contended create window or corrupt file — wait, do not steal yet.
|
|
153
|
-
emptySightings += 1;
|
|
154
|
-
if (emptySightings < 4) {
|
|
155
|
-
spinWaitMs(15);
|
|
156
|
-
continue;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
// Dead holder, or empty lock still after retries — remove and retry.
|
|
160
|
-
unlinkStaleLock(lockPath);
|
|
161
|
-
spinWaitMs(5);
|
|
68
|
+
try {
|
|
69
|
+
writeFileSync(lockPath, `${process.pid}\n`, { flag: "wx" });
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
const code = err.code;
|
|
73
|
+
if (code === "EEXIST") {
|
|
74
|
+
throw new SessionsDirInUseError(root, readHolderPid(lockPath));
|
|
162
75
|
}
|
|
76
|
+
throw err;
|
|
77
|
+
}
|
|
78
|
+
if (readHolderPid(lockPath) !== process.pid) {
|
|
79
|
+
// Replaced under us — do not steal; surface contention.
|
|
80
|
+
throw new SessionsDirInUseError(root, readHolderPid(lockPath));
|
|
163
81
|
}
|
|
164
|
-
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
|
|
82
|
+
let released = false;
|
|
83
|
+
const lock = {
|
|
84
|
+
release() {
|
|
85
|
+
if (released)
|
|
86
|
+
return;
|
|
87
|
+
released = true;
|
|
88
|
+
localExclusive.delete(root);
|
|
168
89
|
try {
|
|
169
|
-
writeFileSync(lockPath, `${process.pid}\n`, { flag: "wx" });
|
|
170
90
|
if (readHolderPid(lockPath) === process.pid) {
|
|
171
|
-
|
|
172
|
-
const lock = {
|
|
173
|
-
release() {
|
|
174
|
-
if (released)
|
|
175
|
-
return;
|
|
176
|
-
released = true;
|
|
177
|
-
localExclusive.delete(root);
|
|
178
|
-
try {
|
|
179
|
-
if (readHolderPid(lockPath) === process.pid) {
|
|
180
|
-
unlinkSync(lockPath);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
catch {
|
|
184
|
-
/* ignore */
|
|
185
|
-
}
|
|
186
|
-
},
|
|
187
|
-
};
|
|
188
|
-
localExclusive.set(root, lock);
|
|
189
|
-
return lock;
|
|
91
|
+
unlinkSync(lockPath);
|
|
190
92
|
}
|
|
191
93
|
}
|
|
192
94
|
catch {
|
|
193
|
-
/*
|
|
95
|
+
/* ignore */
|
|
194
96
|
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
localExclusive.set(root, lock);
|
|
100
|
+
return lock;
|
|
198
101
|
}
|
|
199
102
|
//# sourceMappingURL=store-lock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store-lock.js","sourceRoot":"","sources":["../src/store-lock.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"store-lock.js","sourceRoot":"","sources":["../src/store-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Fixed-density heuristic token pricing (DSH token-meter estimate.ts).
|
|
3
3
|
* Shared by Face meter fold and compaction shadow-price producers.
|
|
4
|
+
*
|
|
5
|
+
* Route-aware image pricing lives in {@link priceRouteImageTokens}.
|
|
6
|
+
* Surface fold has no live route → calls it without modalities (heuristic).
|
|
7
|
+
* Soft-budget / request estimate passes adapter `inputModalities`.
|
|
4
8
|
*/
|
|
5
9
|
import type { MessageContent, ToolCall } from "@xrkseek/protocol";
|
|
6
10
|
export declare const ROLE_OVERHEAD = 4;
|
|
7
11
|
export declare function estimateText(text: string): number;
|
|
8
|
-
export
|
|
9
|
-
export
|
|
12
|
+
export type InputModality = "text" | "image";
|
|
13
|
+
export type ImagePricingKind = "vision" | "text-placeholder" | "heuristic";
|
|
14
|
+
/**
|
|
15
|
+
* Price image occurrences for the active route (A6).
|
|
16
|
+
*
|
|
17
|
+
* - `inputModalities` includes `"image"` → DeepSeek V41 vision tokens
|
|
18
|
+
* - `inputModalities` text-only → placeholder text density
|
|
19
|
+
* - modalities omitted → chars/4 heuristic (annotated; surface fold path)
|
|
20
|
+
*
|
|
21
|
+
* Fail loud when `expectedCount` disagrees with `images.length`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function priceRouteImageTokens(images: readonly {
|
|
24
|
+
readonly width: number;
|
|
25
|
+
readonly height: number;
|
|
26
|
+
readonly attachmentId?: string;
|
|
27
|
+
readonly mediaType?: string;
|
|
28
|
+
readonly bytes?: number;
|
|
29
|
+
readonly name?: string;
|
|
30
|
+
}[], options?: {
|
|
31
|
+
readonly inputModalities?: readonly InputModality[];
|
|
32
|
+
readonly expectedCount?: number;
|
|
33
|
+
}): {
|
|
34
|
+
readonly tokens: number;
|
|
35
|
+
readonly pricing: ImagePricingKind;
|
|
36
|
+
};
|
|
37
|
+
export declare function estimateContent(content: MessageContent, options?: {
|
|
38
|
+
readonly inputModalities?: readonly InputModality[];
|
|
39
|
+
}): number;
|
|
40
|
+
export declare function estimateMessageContent(content: MessageContent, options?: {
|
|
41
|
+
readonly inputModalities?: readonly InputModality[];
|
|
42
|
+
}): number;
|
|
10
43
|
export declare function estimateToolCall(call: ToolCall): number;
|
|
11
44
|
export declare function estimateAssistantSurface(content: string, toolCalls?: readonly ToolCall[]): number;
|
|
12
45
|
export declare function estimateSystemTokens(system: string | undefined): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface-estimate.d.ts","sourceRoot":"","sources":["../src/surface-estimate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"surface-estimate.d.ts","sourceRoot":"","sources":["../src/surface-estimate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAkB,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAKlF,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,kBAAkB,GAAG,WAAW,CAAC;AAE3E;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS;IACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,EAAE,EACH,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IACpD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC,GACA;IACD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC,CA6DA;AA+BD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,GAChE,MAAM,CAqBR;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,GAChE,MAAM,CAER;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAMvD;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,GAC9B,MAAM,CAOR;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGvE;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EACD,SAAS;IACP,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C,EAAE,GACH,SAAS,GACZ,MAAM,CAKR"}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Fixed-density heuristic token pricing (DSH token-meter estimate.ts).
|
|
3
3
|
* Shared by Face meter fold and compaction shadow-price producers.
|
|
4
|
+
*
|
|
5
|
+
* Route-aware image pricing lives in {@link priceRouteImageTokens}.
|
|
6
|
+
* Surface fold has no live route → calls it without modalities (heuristic).
|
|
7
|
+
* Soft-budget / request estimate passes adapter `inputModalities`.
|
|
4
8
|
*/
|
|
9
|
+
import { estimateImageTokens } from "@xrkseek/attachment";
|
|
10
|
+
import { isImageMediaType, textOnlyImageText } from "@xrkseek/protocol";
|
|
5
11
|
const CHARS_PER_TOKEN = 4;
|
|
6
12
|
const BLOCK_OVERHEAD = 4;
|
|
7
13
|
export const ROLE_OVERHEAD = 4;
|
|
@@ -10,7 +16,81 @@ export function estimateText(text) {
|
|
|
10
16
|
return 0;
|
|
11
17
|
return Math.ceil(text.length / CHARS_PER_TOKEN);
|
|
12
18
|
}
|
|
13
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Price image occurrences for the active route (A6).
|
|
21
|
+
*
|
|
22
|
+
* - `inputModalities` includes `"image"` → DeepSeek V41 vision tokens
|
|
23
|
+
* - `inputModalities` text-only → placeholder text density
|
|
24
|
+
* - modalities omitted → chars/4 heuristic (annotated; surface fold path)
|
|
25
|
+
*
|
|
26
|
+
* Fail loud when `expectedCount` disagrees with `images.length`.
|
|
27
|
+
*/
|
|
28
|
+
export function priceRouteImageTokens(images, options) {
|
|
29
|
+
if (options?.expectedCount !== undefined &&
|
|
30
|
+
images.length !== options.expectedCount) {
|
|
31
|
+
throw new Error(`image pricing: occurrence count ${images.length} !== expected ${options.expectedCount}`);
|
|
32
|
+
}
|
|
33
|
+
const modalities = options?.inputModalities;
|
|
34
|
+
const pricing = modalities === undefined
|
|
35
|
+
? "heuristic"
|
|
36
|
+
: modalities.includes("image")
|
|
37
|
+
? "vision"
|
|
38
|
+
: "text-placeholder";
|
|
39
|
+
let tokens = 0;
|
|
40
|
+
for (const img of images) {
|
|
41
|
+
if (pricing === "text-placeholder") {
|
|
42
|
+
const mediaType = isImageMediaType(img.mediaType)
|
|
43
|
+
? img.mediaType
|
|
44
|
+
: "image/png";
|
|
45
|
+
tokens += estimateText(textOnlyImageText({
|
|
46
|
+
attachmentId: img.attachmentId ?? "sha256:unknown",
|
|
47
|
+
mediaType,
|
|
48
|
+
bytes: img.bytes ?? 0,
|
|
49
|
+
width: img.width,
|
|
50
|
+
height: img.height,
|
|
51
|
+
...(img.name !== undefined ? { name: img.name } : {}),
|
|
52
|
+
}));
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (pricing === "vision") {
|
|
56
|
+
if (Number.isSafeInteger(img.width) &&
|
|
57
|
+
Number.isSafeInteger(img.height) &&
|
|
58
|
+
img.width > 0 &&
|
|
59
|
+
img.height > 0) {
|
|
60
|
+
tokens += estimateImageTokens(img.width, img.height);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// Dims unusable — still under the vision arm; fall back to density.
|
|
64
|
+
tokens += estimateText(JSON.stringify(img));
|
|
65
|
+
}
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
// heuristic: no route — chars/4 of a stable attachment summary
|
|
69
|
+
tokens += estimateText(JSON.stringify({
|
|
70
|
+
w: img.width,
|
|
71
|
+
h: img.height,
|
|
72
|
+
bytes: img.bytes ?? 0,
|
|
73
|
+
id: img.attachmentId ?? "",
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
return { tokens, pricing };
|
|
77
|
+
}
|
|
78
|
+
function imageBlockTokens(attachment, inputModalities) {
|
|
79
|
+
return priceRouteImageTokens([
|
|
80
|
+
{
|
|
81
|
+
width: attachment.width,
|
|
82
|
+
height: attachment.height,
|
|
83
|
+
attachmentId: attachment.attachmentId,
|
|
84
|
+
mediaType: attachment.mediaType,
|
|
85
|
+
bytes: attachment.bytes,
|
|
86
|
+
...(attachment.name !== undefined ? { name: attachment.name } : {}),
|
|
87
|
+
},
|
|
88
|
+
], {
|
|
89
|
+
expectedCount: 1,
|
|
90
|
+
...(inputModalities !== undefined ? { inputModalities } : {}),
|
|
91
|
+
}).tokens;
|
|
92
|
+
}
|
|
93
|
+
export function estimateContent(content, options) {
|
|
14
94
|
if (typeof content === "string") {
|
|
15
95
|
return estimateText(content) + BLOCK_OVERHEAD;
|
|
16
96
|
}
|
|
@@ -19,6 +99,14 @@ export function estimateContent(content) {
|
|
|
19
99
|
if (block.type === "text") {
|
|
20
100
|
tokens += estimateText(block.text) + BLOCK_OVERHEAD;
|
|
21
101
|
}
|
|
102
|
+
else if (block.type === "image") {
|
|
103
|
+
if (block.offloaded === true)
|
|
104
|
+
continue;
|
|
105
|
+
// ponytail: surface fold omits modalities → heuristic; soft-budget passes route.
|
|
106
|
+
tokens +=
|
|
107
|
+
imageBlockTokens(block.attachment, options?.inputModalities) +
|
|
108
|
+
BLOCK_OVERHEAD;
|
|
109
|
+
}
|
|
22
110
|
else {
|
|
23
111
|
tokens +=
|
|
24
112
|
BLOCK_OVERHEAD +
|
|
@@ -27,8 +115,8 @@ export function estimateContent(content) {
|
|
|
27
115
|
}
|
|
28
116
|
return tokens;
|
|
29
117
|
}
|
|
30
|
-
export function estimateMessageContent(content) {
|
|
31
|
-
return estimateContent(content) + ROLE_OVERHEAD;
|
|
118
|
+
export function estimateMessageContent(content, options) {
|
|
119
|
+
return estimateContent(content, options) + ROLE_OVERHEAD;
|
|
32
120
|
}
|
|
33
121
|
export function estimateToolCall(call) {
|
|
34
122
|
const args = typeof call.arguments === "string"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface-estimate.js","sourceRoot":"","sources":["../src/surface-estimate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"surface-estimate.js","sourceRoot":"","sources":["../src/surface-estimate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"std-tools.d.ts","sourceRoot":"","sources":["../src/std-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,iBAAiB,CAAC;AAGzE,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAC5C,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAC5C,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC;IACjC,2CAA2C;IAC3C,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,qBAAqB,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACxE,cAAc,CAAC,EAAE,OAAO,qBAAqB,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;CAC/E;AAqBD,mFAAmF;AACnF,wBAAgB,cAAc,CAC5B,OAAO,GAAE,eAAoB,GAC5B,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"std-tools.d.ts","sourceRoot":"","sources":["../src/std-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,iBAAiB,CAAC;AAGzE,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAC/C,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAC5C,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAC5C,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC;IACjC,2CAA2C;IAC3C,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,qBAAqB,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACxE,cAAc,CAAC,EAAE,OAAO,qBAAqB,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;CAC/E;AAqBD,mFAAmF;AACnF,wBAAgB,cAAc,CAC5B,OAAO,GAAE,eAAoB,GAC5B,cAAc,EAAE,CAmOlB;AAMD,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMjE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,KACjB,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAChC,GAAG,cAAc,CAiFjB"}
|
|
@@ -160,6 +160,15 @@ export function createStdTools(options = {}) {
|
|
|
160
160
|
required: ["id", "question"],
|
|
161
161
|
},
|
|
162
162
|
},
|
|
163
|
+
mode: {
|
|
164
|
+
type: "string",
|
|
165
|
+
description: 'Ask settlement mode. Omit or "legacy" = block until answered. ' +
|
|
166
|
+
'"timed" = Host deadline; timeout returns pending and a late answer may arrive as a user message.',
|
|
167
|
+
},
|
|
168
|
+
timeout_ms: {
|
|
169
|
+
type: "number",
|
|
170
|
+
description: 'When mode is "timed": deadline length in ms (Host default 120000). Pass -1 to force legacy blocking.',
|
|
171
|
+
},
|
|
163
172
|
},
|
|
164
173
|
},
|
|
165
174
|
presentCall: (args) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"std-tools.js","sourceRoot":"","sources":["../src/std-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"std-tools.js","sourceRoot":"","sources":["../src/std-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,18 @@ export interface PtyBackendConfig {
|
|
|
11
11
|
readonly exactProbeAfterMs: number;
|
|
12
12
|
readonly idleSilenceMs: number;
|
|
13
13
|
readonly handoffGraceMs: number;
|
|
14
|
+
/**
|
|
15
|
+
* Extra silence budget only while the prompt marker was seen but the
|
|
16
|
+
* printable tail has not arrived yet (late second pty chunk). Default `0`
|
|
17
|
+
* preserves pre-grace settle boundaries exactly; zero is a valid value.
|
|
18
|
+
*/
|
|
19
|
+
readonly promptTailGraceMs: number;
|
|
14
20
|
readonly timeoutMs: number;
|
|
15
21
|
readonly disposeGraceMs: number;
|
|
16
22
|
}
|
|
17
23
|
/**
|
|
18
24
|
* Assert every numeric config field is a positive safe integer and bounds compose
|
|
19
|
-
* (CV DSH terminal-bash `validateConfig`).
|
|
25
|
+
* (CV DSH terminal-bash `validateConfig`). `promptTailGraceMs` uniquely allows 0.
|
|
20
26
|
*/
|
|
21
27
|
export declare function validatePtyBackendConfig(config: PtyBackendConfig): asserts config is PtyBackendConfig;
|
|
22
28
|
export declare function defaultPtyBackendConfig(overrides?: Partial<PtyBackendConfig>): PtyBackendConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,IAAI,gBAAgB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,IAAI,gBAAgB,CA2BpC;AAED,wBAAgB,uBAAuB,CACrC,SAAS,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACxC,gBAAgB,CAsBlB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolvePtyShell } from "./resolve-shell.js";
|
|
2
2
|
/**
|
|
3
3
|
* Assert every numeric config field is a positive safe integer and bounds compose
|
|
4
|
-
* (CV DSH terminal-bash `validateConfig`).
|
|
4
|
+
* (CV DSH terminal-bash `validateConfig`). `promptTailGraceMs` uniquely allows 0.
|
|
5
5
|
*/
|
|
6
6
|
export function validatePtyBackendConfig(config) {
|
|
7
7
|
if (config.backendType.length === 0) {
|
|
@@ -11,7 +11,15 @@ export function validatePtyBackendConfig(config) {
|
|
|
11
11
|
throw new Error("pty: shellPath must be non-empty");
|
|
12
12
|
}
|
|
13
13
|
for (const [name, value] of Object.entries(config)) {
|
|
14
|
-
if (typeof value
|
|
14
|
+
if (typeof value !== "number")
|
|
15
|
+
continue;
|
|
16
|
+
if (name === "promptTailGraceMs") {
|
|
17
|
+
if (!Number.isSafeInteger(value) || value < 0) {
|
|
18
|
+
throw new Error(`pty: ${name} must be a non-negative safe integer`);
|
|
19
|
+
}
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
15
23
|
throw new Error(`pty: ${name} must be a positive safe integer`);
|
|
16
24
|
}
|
|
17
25
|
}
|
|
@@ -37,6 +45,7 @@ export function defaultPtyBackendConfig(overrides = {}) {
|
|
|
37
45
|
exactProbeAfterMs: 150,
|
|
38
46
|
idleSilenceMs: 3_000,
|
|
39
47
|
handoffGraceMs: 500,
|
|
48
|
+
promptTailGraceMs: 0,
|
|
40
49
|
timeoutMs: 30_000,
|
|
41
50
|
disposeGraceMs: 3_000,
|
|
42
51
|
...overrides,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAyBrD;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAwB;IAExB,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QACxC,IAAI,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,sCAAsC,CAAC,CAAC;YACtE,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,kCAAkC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,wGAAwG,CACzG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,YAAuC,EAAE;IAEzC,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAqB;QACjC,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;QAC/B,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,GAAG;QACT,eAAe,EAAE,MAAM;QACvB,kBAAkB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;QACnC,YAAY,EAAE,GAAG,GAAG,IAAI;QACxB,cAAc,EAAE,EAAE;QAClB,iBAAiB,EAAE,GAAG;QACtB,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,GAAG;QACnB,iBAAiB,EAAE,CAAC;QACpB,SAAS,EAAE,MAAM;QACjB,cAAc,EAAE,KAAK;QACrB,GAAG,SAAS;KACb,CAAC;IACF,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAKpD,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAG3B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAE1B,KAAK,mBAAmB,EAExB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAE1B,MAAM,YAAY,CAAC;AA+EpB,oEAAoE;AACpE,qBAAa,eAAgB,YAAW,sBAAsB;IAiC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAjCzB,IAAI,SAAK;IACT,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,WAAW,CAA6C;IAMhE,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,gBAAgB,CAAmB;gBAGxB,QAAQ,EAAE,wBAAwB,EAClC,MAAM,EAAE,gBAAgB;IAc3C;;;;OAIG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD,SAAS,CAAC,OAAO,EAAE,mBAAmB,GAAG,qBAAqB;YAmChD,SAAS;IAgDvB,OAAO,CAAC,sBAAsB;IAO9B,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB;IAyBhD,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAMnE,MAAM,IAAI,qBAAqB;IAI/B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG9B;IAED,OAAO,CAAC,QAAQ,CAAC,aAAa,CAI7B;IAED,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG/B;IAED,OAAO,CAAC,MAAM;YAqBA,MAAM;IAOpB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,YAAY;YASN,aAAa;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAKpD,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAG3B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAE1B,KAAK,mBAAmB,EAExB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAE1B,MAAM,YAAY,CAAC;AA+EpB,oEAAoE;AACpE,qBAAa,eAAgB,YAAW,sBAAsB;IAiC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAjCzB,IAAI,SAAK;IACT,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,WAAW,CAA6C;IAMhE,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,mBAAmB,CAA4B;IACvD,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,gBAAgB,CAAmB;gBAGxB,QAAQ,EAAE,wBAAwB,EAClC,MAAM,EAAE,gBAAgB;IAc3C;;;;OAIG;IACG,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD,SAAS,CAAC,OAAO,EAAE,mBAAmB,GAAG,qBAAqB;YAmChD,SAAS;IAgDvB,OAAO,CAAC,sBAAsB;IAO9B,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB;IAyBhD,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAMnE,MAAM,IAAI,qBAAqB;IAI/B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG9B;IAED,OAAO,CAAC,QAAQ,CAAC,aAAa,CAI7B;IAED,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG/B;IAED,OAAO,CAAC,MAAM;YAqBA,MAAM;IAOpB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,YAAY;YASN,aAAa;IAqD3B,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,SAAS;YAOH,aAAa;YAmBb,SAAS;CAkBxB"}
|
|
@@ -381,7 +381,13 @@ export class LocalPtySession {
|
|
|
381
381
|
// on waiting for shell ownership instead of letting a child marker suppress
|
|
382
382
|
// readiness until the absolute timeout.
|
|
383
383
|
const handoffGrace = this.promptSeen ? this.config.handoffGraceMs : 0;
|
|
384
|
-
|
|
384
|
+
// Late printable prompt tail (marker in one chunk, tail in the next): only
|
|
385
|
+
// then extend silence. Malformed tails never arrive — G1 / useConptyDll.
|
|
386
|
+
const promptTailGrace = this.promptSeen && !this.promptTextSeen
|
|
387
|
+
? this.config.promptTailGraceMs
|
|
388
|
+
: 0;
|
|
389
|
+
if (startupHasOutput
|
|
390
|
+
&& idleFor >= this.config.idleSilenceMs + handoffGrace + promptTailGrace) {
|
|
385
391
|
this.settleActive('inferred_idle');
|
|
386
392
|
}
|
|
387
393
|
}
|