@sentropic/h2a-runtime 0.90.1 → 0.90.3
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/index.d.ts +16 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +199 -39
- package/dist/index.js.map +1 -1
- package/dist/proc-cpu.d.ts +44 -0
- package/dist/proc-cpu.d.ts.map +1 -1
- package/dist/proc-cpu.js +84 -2
- package/dist/proc-cpu.js.map +1 -1
- package/dist/prompt-delivery.d.ts +9 -0
- package/dist/prompt-delivery.d.ts.map +1 -1
- package/dist/prompt-delivery.js +30 -3
- package/dist/prompt-delivery.js.map +1 -1
- package/dist/relaunch.d.ts +101 -6
- package/dist/relaunch.d.ts.map +1 -1
- package/dist/relaunch.js +200 -5
- package/dist/relaunch.js.map +1 -1
- package/dist/restore.d.ts +17 -22
- package/dist/restore.d.ts.map +1 -1
- package/dist/restore.js +62 -33
- package/dist/restore.js.map +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +0 -3
- package/dist/run.js.map +1 -1
- package/dist/session-class.d.ts +12 -0
- package/dist/session-class.d.ts.map +1 -1
- package/dist/session-class.js +15 -0
- package/dist/session-class.js.map +1 -1
- package/dist/session-lease.d.ts +83 -4
- package/dist/session-lease.d.ts.map +1 -1
- package/dist/session-lease.js +197 -6
- package/dist/session-lease.js.map +1 -1
- package/dist/tmux.d.ts +51 -2
- package/dist/tmux.d.ts.map +1 -1
- package/dist/tmux.js +130 -3
- package/dist/tmux.js.map +1 -1
- package/package.json +2 -3
package/dist/run.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { serve } from "@hono/node-server";
|
|
2
|
-
import { createNodeWebSocket } from "@hono/node-ws";
|
|
3
2
|
import { REMOTE_PROTOCOL_VERSION, REMOTE_SCHEMA_VERSION, } from "./protocol-local.js";
|
|
4
3
|
import { Hono } from "hono";
|
|
5
4
|
import { streamSSE } from "hono/streaming";
|
|
@@ -94,7 +93,6 @@ export async function run(options) {
|
|
|
94
93
|
stdout.on?.("resize", onResize);
|
|
95
94
|
// Open control-plane in-process for remote attach.
|
|
96
95
|
const app = new Hono();
|
|
97
|
-
const nodeWs = createNodeWebSocket({ app });
|
|
98
96
|
app.get("/healthz", (c) => c.json({ ok: true, sessionId, profile: profile.profile }));
|
|
99
97
|
app.get(`/sessions/${sessionId}`, (c) => c.json({
|
|
100
98
|
session: {
|
|
@@ -152,7 +150,6 @@ export async function run(options) {
|
|
|
152
150
|
});
|
|
153
151
|
const port = options.port ?? 0;
|
|
154
152
|
const server = serve({ fetch: app.fetch, port, hostname: "127.0.0.1" });
|
|
155
|
-
nodeWs.injectWebSocket(server);
|
|
156
153
|
let actualPort = port;
|
|
157
154
|
const address = server.address();
|
|
158
155
|
if (address && typeof address === "object") {
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
package/dist/session-class.d.ts
CHANGED
|
@@ -6,5 +6,17 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export declare const SESSION_CLASS_ENV = "H2A_SESSION_CLASS";
|
|
8
8
|
export type SessionClass = "human" | "background";
|
|
9
|
+
/**
|
|
10
|
+
* Classify a local launch from the evidence available at launch time.
|
|
11
|
+
*
|
|
12
|
+
* A session is human only when it is neither a background/headless launch nor
|
|
13
|
+
* missing proof of a terminal a human will use. Unknown evidence deliberately
|
|
14
|
+
* resolves to background: callers must opt into the human classification.
|
|
15
|
+
*/
|
|
16
|
+
export declare function deriveSessionClass(options: {
|
|
17
|
+
readonly background?: boolean;
|
|
18
|
+
readonly headless?: boolean;
|
|
19
|
+
readonly humanTerminal?: boolean;
|
|
20
|
+
}): SessionClass;
|
|
9
21
|
export declare function sessionClassFromEnv(value: string | undefined): SessionClass | undefined;
|
|
10
22
|
//# sourceMappingURL=session-class.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-class.d.ts","sourceRoot":"","sources":["../src/session-class.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,YAAY,CAAC;AAElD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,YAAY,GAAG,SAAS,CAE1B"}
|
|
1
|
+
{"version":3,"file":"session-class.d.ts","sourceRoot":"","sources":["../src/session-class.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,YAAY,CAAC;AAElD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC,GAAG,YAAY,CASf;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,YAAY,GAAG,SAAS,CAE1B"}
|
package/dist/session-class.js
CHANGED
|
@@ -5,6 +5,21 @@
|
|
|
5
5
|
* a later hook event.
|
|
6
6
|
*/
|
|
7
7
|
export const SESSION_CLASS_ENV = "H2A_SESSION_CLASS";
|
|
8
|
+
/**
|
|
9
|
+
* Classify a local launch from the evidence available at launch time.
|
|
10
|
+
*
|
|
11
|
+
* A session is human only when it is neither a background/headless launch nor
|
|
12
|
+
* missing proof of a terminal a human will use. Unknown evidence deliberately
|
|
13
|
+
* resolves to background: callers must opt into the human classification.
|
|
14
|
+
*/
|
|
15
|
+
export function deriveSessionClass(options) {
|
|
16
|
+
if (options.background === true ||
|
|
17
|
+
options.headless === true ||
|
|
18
|
+
options.humanTerminal !== true) {
|
|
19
|
+
return "background";
|
|
20
|
+
}
|
|
21
|
+
return "human";
|
|
22
|
+
}
|
|
8
23
|
export function sessionClassFromEnv(value) {
|
|
9
24
|
return value === "human" || value === "background" ? value : undefined;
|
|
10
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-class.js","sourceRoot":"","sources":["../src/session-class.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAIrD,MAAM,UAAU,mBAAmB,CACjC,KAAyB;IAEzB,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC"}
|
|
1
|
+
{"version":3,"file":"session-class.js","sourceRoot":"","sources":["../src/session-class.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAIrD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAIlC;IACC,IACE,OAAO,CAAC,UAAU,KAAK,IAAI;QAC3B,OAAO,CAAC,QAAQ,KAAK,IAAI;QACzB,OAAO,CAAC,aAAa,KAAK,IAAI,EAC9B,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAyB;IAEzB,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACzE,CAAC"}
|
package/dist/session-lease.d.ts
CHANGED
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
* REPLACED its own. That property is enforced by the code and tested; secrecy
|
|
42
42
|
* against a local reader is not claimed.
|
|
43
43
|
*/
|
|
44
|
+
import type { ProcView } from "./proc-cpu.js";
|
|
44
45
|
/**
|
|
45
46
|
* Default lease TTL. 30 minutes, the same figure track settled on: long enough
|
|
46
47
|
* that a session pausing between two tool calls is never mistaken for finished,
|
|
@@ -69,6 +70,14 @@ export declare const DEFAULT_SESSION_LEASE_TTL_MS: number;
|
|
|
69
70
|
* PROPOSED for reclamation to a human or conductor, who can still see it.
|
|
70
71
|
*/
|
|
71
72
|
export declare const DEFAULT_WORKING_CPU_MS_PER_SECOND = 75;
|
|
73
|
+
/** Maximum time a token-holder may keep a lease in the relaunch gap. */
|
|
74
|
+
export declare const DEFAULT_RESOLVING_BOUND_MS = 60000;
|
|
75
|
+
export type SessionLeaseWorker = {
|
|
76
|
+
pid: number;
|
|
77
|
+
startTime: string;
|
|
78
|
+
bootId: string;
|
|
79
|
+
};
|
|
80
|
+
export type SessionLeaseWorkerState = SessionLeaseWorker | "resolving";
|
|
72
81
|
/** A CPU observation of the session's pane process tree, at a point in time. */
|
|
73
82
|
export interface SessionCpuSample {
|
|
74
83
|
/** Cumulative CPU (ms) of the pane's whole process tree — `paneTreeCpuMs`. */
|
|
@@ -98,6 +107,11 @@ export interface SessionLease {
|
|
|
98
107
|
token: string;
|
|
99
108
|
/** Last CPU observation — the evidence the beat decision is derived from. */
|
|
100
109
|
sample?: SessionCpuSample;
|
|
110
|
+
/** Composite identity of the process actually doing the work. */
|
|
111
|
+
worker?: SessionLeaseWorkerState;
|
|
112
|
+
/** Bounded token-protected relaunch window (used while worker is resolving). */
|
|
113
|
+
relaunchStartedAt?: string;
|
|
114
|
+
resolvingBoundMs?: number;
|
|
101
115
|
}
|
|
102
116
|
/** Rejected lease operation (wrong token, absent lease, subject already held). */
|
|
103
117
|
export declare class SessionLeaseError extends Error {
|
|
@@ -109,6 +123,14 @@ export declare class SessionLeaseError extends Error {
|
|
|
109
123
|
* acquire guard, by the reclaim report, and by callers deciding what to show.
|
|
110
124
|
*/
|
|
111
125
|
export declare function isSessionLeaseAbandoned(lease: SessionLease, now: string): boolean;
|
|
126
|
+
/** True when a present worker is contradicted by the current boot/proc view. */
|
|
127
|
+
export declare function workerDisproven(lease: SessionLease, procView: ProcView | undefined, now?: string): boolean;
|
|
128
|
+
/** The one liveness projection used by slot and reclaim readers. */
|
|
129
|
+
export declare function isSessionLeaseAlive(lease: SessionLease, procView: ProcView | undefined, now: string): boolean;
|
|
130
|
+
export declare function isSessionLeaseDeadBoot(lease: SessionLease, procView: ProcView | undefined): boolean;
|
|
131
|
+
export declare function isSessionLeaseContested(lease: SessionLease, procView: ProcView | undefined, now: string): boolean;
|
|
132
|
+
/** Pure slot counter; every count goes through the same liveness predicate. */
|
|
133
|
+
export declare function countLiveSessionLeases(leases: ReadonlyArray<SessionLease>, procView: ProcView | undefined, now: string): number;
|
|
112
134
|
/**
|
|
113
135
|
* CPU rate (ms of CPU per second of wall clock) between the lease's last
|
|
114
136
|
* observation and `cpuMsNow` taken at `now`. Undefined when there is no prior
|
|
@@ -116,7 +138,7 @@ export declare function isSessionLeaseAbandoned(lease: SessionLease, now: string
|
|
|
116
138
|
* BACKWARDS (the pane's tree was replaced — a relaunch, or PID reuse): a
|
|
117
139
|
* negative delta is not a rate, and must never be read as "idle". PURE.
|
|
118
140
|
*/
|
|
119
|
-
export declare function cpuRateMsPerSecond(lease: SessionLease, cpuMsNow: number, now: string): number | undefined;
|
|
141
|
+
export declare function cpuRateMsPerSecond(lease: Pick<SessionLease, "sample">, cpuMsNow: number, now: string): number | undefined;
|
|
120
142
|
/**
|
|
121
143
|
* What a supervising pass should do with one lease, given a fresh CPU reading.
|
|
122
144
|
* PURE — the probe is the caller's effect, the decision is testable here.
|
|
@@ -154,6 +176,8 @@ export interface SessionReclaimProposal {
|
|
|
154
176
|
heartbeatAt: string;
|
|
155
177
|
/** CPU rate over the whole unbeaten window, when a sample exists (ms/s). */
|
|
156
178
|
lastRateMsPerSecond?: number;
|
|
179
|
+
/** Contested is same-boot worker disproof; abandoned is the legacy TTL case. */
|
|
180
|
+
reason?: "abandoned" | "contested";
|
|
157
181
|
}
|
|
158
182
|
/**
|
|
159
183
|
* The abandoned leases at `now`, as PROPOSALS. This function proposes; it never
|
|
@@ -161,7 +185,7 @@ export interface SessionReclaimProposal {
|
|
|
161
185
|
* that still beats — is structurally excluded: the only filter is
|
|
162
186
|
* `isSessionLeaseAbandoned`, so a beating session can never appear here. PURE.
|
|
163
187
|
*/
|
|
164
|
-
export declare function reclaimProposals(leases: ReadonlyArray<SessionLease>, now: string): SessionReclaimProposal[];
|
|
188
|
+
export declare function reclaimProposals(leases: ReadonlyArray<SessionLease>, now: string, procView?: ProcView): SessionReclaimProposal[];
|
|
165
189
|
/**
|
|
166
190
|
* What a supervising pass must do with each recorded lease, BEFORE any probe.
|
|
167
191
|
* The registry state decides; the CPU probe only happens for `probe` steps.
|
|
@@ -194,6 +218,25 @@ export interface LeasedSessionState {
|
|
|
194
218
|
tmuxSession?: string;
|
|
195
219
|
}
|
|
196
220
|
export declare function planLeaseSupervision(leases: ReadonlyArray<SessionLease>, sessions: ReadonlyArray<LeasedSessionState>): LeaseSupervisionStep[];
|
|
221
|
+
export type SessionLeaseManagedSession = {
|
|
222
|
+
readonly sessionId: string;
|
|
223
|
+
readonly tmuxSession?: string;
|
|
224
|
+
readonly jobState?: string;
|
|
225
|
+
};
|
|
226
|
+
export type SessionLeaseStatusSurface = {
|
|
227
|
+
readonly sessionName: string;
|
|
228
|
+
readonly marker?: string;
|
|
229
|
+
};
|
|
230
|
+
export type SessionLeaseFleetAudit = {
|
|
231
|
+
/** Live managed sessions for which the installed marker is absent/drifted. */
|
|
232
|
+
missingStatusSurface: string[];
|
|
233
|
+
/** Same-boot worker disproofs; these are reclaim proposals, not reaps. */
|
|
234
|
+
contested: SessionReclaimProposal[];
|
|
235
|
+
/** Prior-boot worker leases; these are silently reaped. */
|
|
236
|
+
deadBoot: string[];
|
|
237
|
+
};
|
|
238
|
+
/** Pure read-back auditor projection over one tmux and one /proc snapshot. */
|
|
239
|
+
export declare function auditSessionLeaseFleet(sessions: ReadonlyArray<SessionLeaseManagedSession>, leases: ReadonlyArray<SessionLease>, statusSurfaces: ReadonlyArray<SessionLeaseStatusSurface>, procView: ProcView, now: string): SessionLeaseFleetAudit;
|
|
197
240
|
/** Machine-scoped path of the session-lease side-store (beside `registry.json`). */
|
|
198
241
|
export declare function resolveSessionLeasePath(): string;
|
|
199
242
|
/**
|
|
@@ -216,8 +259,8 @@ export declare class SessionLeaseStore {
|
|
|
216
259
|
readAll(): SessionLease[];
|
|
217
260
|
/** The lease recorded for a session, live or abandoned, if any. */
|
|
218
261
|
forSession(sessionId: string): SessionLease | undefined;
|
|
219
|
-
/** The leases
|
|
220
|
-
abandoned(now: string): SessionLease[];
|
|
262
|
+
/** The leases not alive at `now`, using the shared reader predicate. */
|
|
263
|
+
abandoned(now: string, procView?: ProcView): SessionLease[];
|
|
221
264
|
/**
|
|
222
265
|
* Take the slot for `sessionId`. Rejects when a LIVE lease already covers it
|
|
223
266
|
* (one active lease per session). An ABANDONED prior lease does not block: the
|
|
@@ -231,6 +274,7 @@ export declare class SessionLeaseStore {
|
|
|
231
274
|
workspace?: string;
|
|
232
275
|
ttlMs?: number;
|
|
233
276
|
cpuMs?: number;
|
|
277
|
+
worker?: SessionLeaseWorker;
|
|
234
278
|
}): SessionLease;
|
|
235
279
|
/**
|
|
236
280
|
* Renew a lease — the holder's assertion that the session is WORKING. Only the
|
|
@@ -255,6 +299,39 @@ export declare class SessionLeaseStore {
|
|
|
255
299
|
token: string;
|
|
256
300
|
cpuMs: number;
|
|
257
301
|
}): SessionLease;
|
|
302
|
+
/** Lazily migrate a legacy lease once a supervising pass can resolve its worker. */
|
|
303
|
+
populateWorker(input: {
|
|
304
|
+
sessionId: string;
|
|
305
|
+
token: string;
|
|
306
|
+
worker: SessionLeaseWorker;
|
|
307
|
+
}): SessionLease;
|
|
308
|
+
/** Begin the bounded token-guarded relaunch window. */
|
|
309
|
+
beginRelaunch(input: {
|
|
310
|
+
sessionId: string;
|
|
311
|
+
token: string;
|
|
312
|
+
resolvingBoundMs?: number;
|
|
313
|
+
}): SessionLease;
|
|
314
|
+
/** Complete the same-act relaunch with the newly resolved worker identity. */
|
|
315
|
+
finishRelaunch(input: {
|
|
316
|
+
sessionId: string;
|
|
317
|
+
token: string;
|
|
318
|
+
worker: SessionLeaseWorker;
|
|
319
|
+
}): SessionLease;
|
|
320
|
+
/**
|
|
321
|
+
* Run a relaunch and re-resolve the worker under the holder's token. If the
|
|
322
|
+
* process is not visible immediately, the bounded `resolving` state remains
|
|
323
|
+
* on disk and becomes reclaimable after its bound.
|
|
324
|
+
*/
|
|
325
|
+
relaunch(input: {
|
|
326
|
+
sessionId: string;
|
|
327
|
+
token: string;
|
|
328
|
+
resolvingBoundMs?: number;
|
|
329
|
+
act: () => boolean;
|
|
330
|
+
resolveWorker: () => SessionLeaseWorker | undefined;
|
|
331
|
+
}): {
|
|
332
|
+
succeeded: boolean;
|
|
333
|
+
lease: SessionLease;
|
|
334
|
+
};
|
|
258
335
|
/** Give the slot back. Only the matching token is accepted. */
|
|
259
336
|
release(input: {
|
|
260
337
|
sessionId: string;
|
|
@@ -262,5 +339,7 @@ export declare class SessionLeaseStore {
|
|
|
262
339
|
}): void;
|
|
263
340
|
/** Shared token-guarded read-modify-write for `heartbeat` and `observe`. */
|
|
264
341
|
private mutate;
|
|
342
|
+
/** Remove only leases proven to belong to a prior kernel boot. */
|
|
343
|
+
reapDeadBootLeases(procView: ProcView): string[];
|
|
265
344
|
}
|
|
266
345
|
//# sourceMappingURL=session-lease.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-lease.d.ts","sourceRoot":"","sources":["../src/session-lease.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;
|
|
1
|
+
{"version":3,"file":"session-lease.d.ts","sourceRoot":"","sources":["../src/session-lease.ts"],"names":[],"mappings":"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"}
|
package/dist/session-lease.js
CHANGED
|
@@ -74,6 +74,8 @@ export const DEFAULT_SESSION_LEASE_TTL_MS = 30 * 60_000;
|
|
|
74
74
|
* PROPOSED for reclamation to a human or conductor, who can still see it.
|
|
75
75
|
*/
|
|
76
76
|
export const DEFAULT_WORKING_CPU_MS_PER_SECOND = 75;
|
|
77
|
+
/** Maximum time a token-holder may keep a lease in the relaunch gap. */
|
|
78
|
+
export const DEFAULT_RESOLVING_BOUND_MS = 60_000;
|
|
77
79
|
/** Rejected lease operation (wrong token, absent lease, subject already held). */
|
|
78
80
|
export class SessionLeaseError extends Error {
|
|
79
81
|
constructor(message) {
|
|
@@ -89,6 +91,61 @@ export class SessionLeaseError extends Error {
|
|
|
89
91
|
export function isSessionLeaseAbandoned(lease, now) {
|
|
90
92
|
return Date.parse(now) - Date.parse(lease.heartbeatAt) > lease.ttlMs;
|
|
91
93
|
}
|
|
94
|
+
function workerRecord(worker) {
|
|
95
|
+
return worker !== undefined && worker !== "resolving" ? worker : undefined;
|
|
96
|
+
}
|
|
97
|
+
function processStartTime(procView, pid) {
|
|
98
|
+
if (Array.isArray(procView.processes)) {
|
|
99
|
+
return procView.processes.find((process) => process.pid === pid)?.startTime;
|
|
100
|
+
}
|
|
101
|
+
return procView.processes.get(pid)
|
|
102
|
+
?.startTime;
|
|
103
|
+
}
|
|
104
|
+
/** True when a present worker is contradicted by the current boot/proc view. */
|
|
105
|
+
export function workerDisproven(lease, procView, now) {
|
|
106
|
+
if (lease.worker === undefined)
|
|
107
|
+
return false; // R1: absent is UNKNOWN.
|
|
108
|
+
if (lease.worker === "resolving") {
|
|
109
|
+
// Resolving is safe only inside its own bounded window. When no instant is
|
|
110
|
+
// supplied, direct callers can still inspect the state without introducing
|
|
111
|
+
// an implicit clock; isSessionLeaseAlive always supplies `now`.
|
|
112
|
+
if (now === undefined)
|
|
113
|
+
return false;
|
|
114
|
+
const started = Date.parse(lease.relaunchStartedAt ?? "");
|
|
115
|
+
const bound = lease.resolvingBoundMs;
|
|
116
|
+
return (!Number.isFinite(started) ||
|
|
117
|
+
typeof bound !== "number" ||
|
|
118
|
+
!Number.isFinite(bound) ||
|
|
119
|
+
bound < 0 ||
|
|
120
|
+
Date.parse(now) - started > bound);
|
|
121
|
+
}
|
|
122
|
+
if (procView === undefined)
|
|
123
|
+
return false; // Unknown evidence is not disproof.
|
|
124
|
+
if (!procView.currentBootId)
|
|
125
|
+
return false; // /proc unavailable is UNKNOWN.
|
|
126
|
+
if (lease.worker.bootId !== procView.currentBootId)
|
|
127
|
+
return true;
|
|
128
|
+
const startTime = processStartTime(procView, lease.worker.pid);
|
|
129
|
+
return startTime === undefined || startTime !== lease.worker.startTime;
|
|
130
|
+
}
|
|
131
|
+
/** The one liveness projection used by slot and reclaim readers. */
|
|
132
|
+
export function isSessionLeaseAlive(lease, procView, now) {
|
|
133
|
+
return !isSessionLeaseAbandoned(lease, now) && !workerDisproven(lease, procView, now);
|
|
134
|
+
}
|
|
135
|
+
export function isSessionLeaseDeadBoot(lease, procView) {
|
|
136
|
+
const worker = workerRecord(lease.worker);
|
|
137
|
+
return (worker !== undefined &&
|
|
138
|
+
procView !== undefined &&
|
|
139
|
+
procView.currentBootId !== "" &&
|
|
140
|
+
worker.bootId !== procView.currentBootId);
|
|
141
|
+
}
|
|
142
|
+
export function isSessionLeaseContested(lease, procView, now) {
|
|
143
|
+
return workerDisproven(lease, procView, now) && !isSessionLeaseDeadBoot(lease, procView);
|
|
144
|
+
}
|
|
145
|
+
/** Pure slot counter; every count goes through the same liveness predicate. */
|
|
146
|
+
export function countLiveSessionLeases(leases, procView, now) {
|
|
147
|
+
return leases.filter((lease) => isSessionLeaseAlive(lease, procView, now)).length;
|
|
148
|
+
}
|
|
92
149
|
/**
|
|
93
150
|
* CPU rate (ms of CPU per second of wall clock) between the lease's last
|
|
94
151
|
* observation and `cpuMsNow` taken at `now`. Undefined when there is no prior
|
|
@@ -127,10 +184,15 @@ export function decideSessionBeat(input) {
|
|
|
127
184
|
* that still beats — is structurally excluded: the only filter is
|
|
128
185
|
* `isSessionLeaseAbandoned`, so a beating session can never appear here. PURE.
|
|
129
186
|
*/
|
|
130
|
-
export function reclaimProposals(leases, now) {
|
|
187
|
+
export function reclaimProposals(leases, now, procView) {
|
|
131
188
|
const nowMs = Date.parse(now);
|
|
132
189
|
return leases
|
|
133
|
-
.filter((lease) =>
|
|
190
|
+
.filter((lease) => {
|
|
191
|
+
// R3: a prior-boot corpse is reaped by the auditor and never proposed.
|
|
192
|
+
if (isSessionLeaseDeadBoot(lease, procView))
|
|
193
|
+
return false;
|
|
194
|
+
return !isSessionLeaseAlive(lease, procView, now);
|
|
195
|
+
})
|
|
134
196
|
.map((lease) => {
|
|
135
197
|
const idleMs = nowMs - Date.parse(lease.heartbeatAt);
|
|
136
198
|
const proposal = {
|
|
@@ -140,6 +202,10 @@ export function reclaimProposals(leases, now) {
|
|
|
140
202
|
ttlMs: lease.ttlMs,
|
|
141
203
|
heartbeatAt: lease.heartbeatAt,
|
|
142
204
|
};
|
|
205
|
+
if (isSessionLeaseContested(lease, procView, now))
|
|
206
|
+
proposal.reason = "contested";
|
|
207
|
+
else
|
|
208
|
+
proposal.reason = "abandoned";
|
|
143
209
|
return proposal;
|
|
144
210
|
})
|
|
145
211
|
.sort((a, b) => b.idleMs - a.idleMs);
|
|
@@ -161,6 +227,22 @@ export function planLeaseSupervision(leases, sessions) {
|
|
|
161
227
|
};
|
|
162
228
|
});
|
|
163
229
|
}
|
|
230
|
+
/** Pure read-back auditor projection over one tmux and one /proc snapshot. */
|
|
231
|
+
export function auditSessionLeaseFleet(sessions, leases, statusSurfaces, procView, now) {
|
|
232
|
+
const surfaces = new Map(statusSurfaces.map((surface) => [surface.sessionName, surface.marker]));
|
|
233
|
+
const missingStatusSurface = sessions
|
|
234
|
+
.filter((session) => {
|
|
235
|
+
const live = session.jobState !== "done" && session.jobState !== "failed";
|
|
236
|
+
return live && session.tmuxSession !== undefined && surfaces.get(session.tmuxSession) !== "v1";
|
|
237
|
+
})
|
|
238
|
+
.map((session) => session.sessionId);
|
|
239
|
+
const deadBoot = leases
|
|
240
|
+
.filter((lease) => isSessionLeaseDeadBoot(lease, procView))
|
|
241
|
+
.map((lease) => lease.sessionId);
|
|
242
|
+
const dead = new Set(deadBoot);
|
|
243
|
+
const contested = reclaimProposals(leases, now, procView).filter((proposal) => proposal.reason === "contested" && !dead.has(proposal.sessionId));
|
|
244
|
+
return { missingStatusSurface, contested, deadBoot };
|
|
245
|
+
}
|
|
164
246
|
/** Machine-scoped path of the session-lease side-store (beside `registry.json`). */
|
|
165
247
|
export function resolveSessionLeasePath() {
|
|
166
248
|
return join(resolveConfigDir(), "session-leases.json");
|
|
@@ -190,9 +272,9 @@ export class SessionLeaseStore {
|
|
|
190
272
|
forSession(sessionId) {
|
|
191
273
|
return this.readAll().find((lease) => lease.sessionId === sessionId);
|
|
192
274
|
}
|
|
193
|
-
/** The leases
|
|
194
|
-
abandoned(now) {
|
|
195
|
-
return this.readAll().filter((lease) =>
|
|
275
|
+
/** The leases not alive at `now`, using the shared reader predicate. */
|
|
276
|
+
abandoned(now, procView) {
|
|
277
|
+
return this.readAll().filter((lease) => !isSessionLeaseAlive(lease, procView, now));
|
|
196
278
|
}
|
|
197
279
|
/**
|
|
198
280
|
* Take the slot for `sessionId`. Rejects when a LIVE lease already covers it
|
|
@@ -223,6 +305,7 @@ export class SessionLeaseStore {
|
|
|
223
305
|
...(input.cpuMs !== undefined
|
|
224
306
|
? { sample: { cpuMs: input.cpuMs, sampledAt: now } }
|
|
225
307
|
: {}),
|
|
308
|
+
...(input.worker !== undefined ? { worker: input.worker } : {}),
|
|
226
309
|
};
|
|
227
310
|
const next = all.filter((l) => l.sessionId !== input.sessionId);
|
|
228
311
|
next.push(lease);
|
|
@@ -262,6 +345,79 @@ export class SessionLeaseStore {
|
|
|
262
345
|
sample: { cpuMs: input.cpuMs, sampledAt: this.clock() },
|
|
263
346
|
}));
|
|
264
347
|
}
|
|
348
|
+
/** Lazily migrate a legacy lease once a supervising pass can resolve its worker. */
|
|
349
|
+
populateWorker(input) {
|
|
350
|
+
return this.mutate(input.sessionId, input.token, "populate worker", (lease) => {
|
|
351
|
+
const next = { ...lease, worker: input.worker };
|
|
352
|
+
if (lease.worker === "resolving") {
|
|
353
|
+
delete next.relaunchStartedAt;
|
|
354
|
+
delete next.resolvingBoundMs;
|
|
355
|
+
}
|
|
356
|
+
return next;
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
/** Begin the bounded token-guarded relaunch window. */
|
|
360
|
+
beginRelaunch(input) {
|
|
361
|
+
return this.mutate(input.sessionId, input.token, "begin relaunch", (lease) => {
|
|
362
|
+
const bound = input.resolvingBoundMs ?? DEFAULT_RESOLVING_BOUND_MS;
|
|
363
|
+
if (!Number.isFinite(bound) || bound < 0) {
|
|
364
|
+
throw new SessionLeaseError("session-lease: resolvingBoundMs must be finite and non-negative");
|
|
365
|
+
}
|
|
366
|
+
return {
|
|
367
|
+
...lease,
|
|
368
|
+
worker: "resolving",
|
|
369
|
+
relaunchStartedAt: this.clock(),
|
|
370
|
+
resolvingBoundMs: bound,
|
|
371
|
+
};
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
/** Complete the same-act relaunch with the newly resolved worker identity. */
|
|
375
|
+
finishRelaunch(input) {
|
|
376
|
+
return this.mutate(input.sessionId, input.token, "finish relaunch", (lease) => {
|
|
377
|
+
const next = { ...lease, worker: input.worker };
|
|
378
|
+
delete next.relaunchStartedAt;
|
|
379
|
+
delete next.resolvingBoundMs;
|
|
380
|
+
return next;
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Run a relaunch and re-resolve the worker under the holder's token. If the
|
|
385
|
+
* process is not visible immediately, the bounded `resolving` state remains
|
|
386
|
+
* on disk and becomes reclaimable after its bound.
|
|
387
|
+
*/
|
|
388
|
+
relaunch(input) {
|
|
389
|
+
this.beginRelaunch(input);
|
|
390
|
+
let acted = false;
|
|
391
|
+
try {
|
|
392
|
+
acted = input.act();
|
|
393
|
+
}
|
|
394
|
+
catch {
|
|
395
|
+
acted = false;
|
|
396
|
+
}
|
|
397
|
+
if (!acted) {
|
|
398
|
+
const lease = this.forSession(input.sessionId);
|
|
399
|
+
if (!lease)
|
|
400
|
+
throw new SessionLeaseError(`session-lease: relaunch lease disappeared for ${input.sessionId}`);
|
|
401
|
+
return { succeeded: false, lease };
|
|
402
|
+
}
|
|
403
|
+
let worker;
|
|
404
|
+
try {
|
|
405
|
+
worker = input.resolveWorker();
|
|
406
|
+
}
|
|
407
|
+
catch {
|
|
408
|
+
worker = undefined;
|
|
409
|
+
}
|
|
410
|
+
if (worker === undefined) {
|
|
411
|
+
const lease = this.forSession(input.sessionId);
|
|
412
|
+
if (!lease)
|
|
413
|
+
throw new SessionLeaseError(`session-lease: relaunch lease disappeared for ${input.sessionId}`);
|
|
414
|
+
return { succeeded: true, lease };
|
|
415
|
+
}
|
|
416
|
+
return {
|
|
417
|
+
succeeded: true,
|
|
418
|
+
lease: this.finishRelaunch({ sessionId: input.sessionId, token: input.token, worker }),
|
|
419
|
+
};
|
|
420
|
+
}
|
|
265
421
|
/** Give the slot back. Only the matching token is accepted. */
|
|
266
422
|
release(input) {
|
|
267
423
|
withFileLock(this.leasesPath, () => {
|
|
@@ -295,19 +451,54 @@ export class SessionLeaseStore {
|
|
|
295
451
|
return next;
|
|
296
452
|
});
|
|
297
453
|
}
|
|
454
|
+
/** Remove only leases proven to belong to a prior kernel boot. */
|
|
455
|
+
reapDeadBootLeases(procView) {
|
|
456
|
+
return withFileLock(this.leasesPath, () => {
|
|
457
|
+
const all = readLeaseFile(this.leasesPath);
|
|
458
|
+
const dead = all
|
|
459
|
+
.filter((lease) => isSessionLeaseDeadBoot(lease, procView))
|
|
460
|
+
.map((lease) => lease.sessionId);
|
|
461
|
+
if (dead.length === 0)
|
|
462
|
+
return dead;
|
|
463
|
+
const deadSet = new Set(dead);
|
|
464
|
+
writeLeaseFile(this.leasesPath, all.filter((lease) => !deadSet.has(lease.sessionId)));
|
|
465
|
+
return dead;
|
|
466
|
+
});
|
|
467
|
+
}
|
|
298
468
|
}
|
|
299
469
|
/** Shape guard — a torn or hand-edited row must not poison the whole store. */
|
|
300
470
|
function isSessionLease(value) {
|
|
301
471
|
if (typeof value !== "object" || value === null)
|
|
302
472
|
return false;
|
|
303
473
|
const lease = value;
|
|
474
|
+
const worker = lease.worker;
|
|
475
|
+
const validWorker = worker === undefined ||
|
|
476
|
+
worker === "resolving" ||
|
|
477
|
+
(typeof worker === "object" &&
|
|
478
|
+
worker !== null &&
|
|
479
|
+
Number.isInteger(worker.pid) &&
|
|
480
|
+
worker.pid > 0 &&
|
|
481
|
+
typeof worker.startTime === "string" &&
|
|
482
|
+
/^\d+$/.test(worker.startTime) &&
|
|
483
|
+
typeof worker.bootId === "string" &&
|
|
484
|
+
worker.bootId.length > 0);
|
|
485
|
+
const validResolvingWindow = (lease.relaunchStartedAt === undefined && lease.resolvingBoundMs === undefined) ||
|
|
486
|
+
(typeof lease.relaunchStartedAt === "string" &&
|
|
487
|
+
typeof lease.resolvingBoundMs === "number" &&
|
|
488
|
+
Number.isFinite(lease.resolvingBoundMs) &&
|
|
489
|
+
lease.resolvingBoundMs >= 0);
|
|
304
490
|
return (typeof lease.leaseId === "string" &&
|
|
305
491
|
typeof lease.sessionId === "string" &&
|
|
306
492
|
typeof lease.holder === "string" &&
|
|
307
493
|
typeof lease.acquiredAt === "string" &&
|
|
308
494
|
typeof lease.heartbeatAt === "string" &&
|
|
309
495
|
typeof lease.token === "string" &&
|
|
310
|
-
typeof lease.ttlMs === "number"
|
|
496
|
+
typeof lease.ttlMs === "number" &&
|
|
497
|
+
validWorker &&
|
|
498
|
+
validResolvingWindow &&
|
|
499
|
+
(worker === "resolving"
|
|
500
|
+
? lease.relaunchStartedAt !== undefined && lease.resolvingBoundMs !== undefined
|
|
501
|
+
: true));
|
|
311
502
|
}
|
|
312
503
|
/**
|
|
313
504
|
* Read + parse the store. A missing, empty or garbled file degrades to `[]` —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-lease.js","sourceRoot":"","sources":["../src/session-lease.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-lease.js","sourceRoot":"","sources":["../src/session-lease.ts"],"names":[],"mappings":"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"}
|