@cluesmith/codev 2.0.0-rc.69 → 2.0.0-rc.70
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/dashboard/dist/assets/{index-CG7nUttd.js → index-CDAINZKT.js} +21 -21
- package/dashboard/dist/assets/{index-CG7nUttd.js.map → index-CDAINZKT.js.map} +1 -1
- package/dashboard/dist/index.html +1 -1
- package/dist/agent-farm/cli.js +2 -2
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts +3 -3
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +20 -142
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.d.ts.map +1 -1
- package/dist/agent-farm/commands/attach.js +13 -50
- package/dist/agent-farm/commands/attach.js.map +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +1 -11
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +1 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +35 -92
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +26 -58
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/status.js +1 -1
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/stop.d.ts.map +1 -1
- package/dist/agent-farm/commands/stop.js +9 -44
- package/dist/agent-farm/commands/stop.js.map +1 -1
- package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower-cloud.js +18 -1
- package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +61 -0
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/migrate.d.ts.map +1 -1
- package/dist/agent-farm/db/migrate.js +6 -9
- package/dist/agent-farm/db/migrate.js.map +1 -1
- package/dist/agent-farm/db/schema.d.ts +2 -2
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +3 -4
- package/dist/agent-farm/db/schema.js.map +1 -1
- package/dist/agent-farm/db/types.d.ts +0 -3
- package/dist/agent-farm/db/types.d.ts.map +1 -1
- package/dist/agent-farm/db/types.js +0 -3
- package/dist/agent-farm/db/types.js.map +1 -1
- package/dist/agent-farm/lib/tower-client.d.ts +4 -0
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tower-client.js +10 -0
- package/dist/agent-farm/lib/tower-client.js.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tunnel-client.js +6 -13
- package/dist/agent-farm/lib/tunnel-client.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +482 -494
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +6 -10
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/agent-farm/types.d.ts +0 -7
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/deps.d.ts.map +1 -1
- package/dist/agent-farm/utils/deps.js +0 -16
- package/dist/agent-farm/utils/deps.js.map +1 -1
- package/dist/agent-farm/utils/gate-watcher.js +4 -4
- package/dist/agent-farm/utils/gate-watcher.js.map +1 -1
- package/dist/agent-farm/utils/session.d.ts +6 -6
- package/dist/agent-farm/utils/session.d.ts.map +1 -1
- package/dist/agent-farm/utils/session.js +4 -4
- package/dist/agent-farm/utils/session.js.map +1 -1
- package/dist/agent-farm/utils/shell.d.ts +4 -4
- package/dist/agent-farm/utils/shell.js +4 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/consult/index.d.ts +1 -0
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +19 -5
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +0 -12
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/porch/next.d.ts.map +1 -1
- package/dist/commands/porch/next.js +90 -8
- package/dist/commands/porch/next.js.map +1 -1
- package/dist/commands/porch/prompts.d.ts.map +1 -1
- package/dist/commands/porch/prompts.js +26 -4
- package/dist/commands/porch/prompts.js.map +1 -1
- package/dist/commands/porch/verdict.d.ts +0 -8
- package/dist/commands/porch/verdict.d.ts.map +1 -1
- package/dist/commands/porch/verdict.js +0 -13
- package/dist/commands/porch/verdict.js.map +1 -1
- package/dist/terminal/pty-manager.d.ts +9 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +45 -2
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/pty-session.d.ts +27 -4
- package/dist/terminal/pty-session.d.ts.map +1 -1
- package/dist/terminal/pty-session.js +112 -4
- package/dist/terminal/pty-session.js.map +1 -1
- package/dist/terminal/ring-buffer.d.ts +10 -3
- package/dist/terminal/ring-buffer.d.ts.map +1 -1
- package/dist/terminal/ring-buffer.js +25 -5
- package/dist/terminal/ring-buffer.js.map +1 -1
- package/dist/terminal/session-manager.d.ts +115 -0
- package/dist/terminal/session-manager.d.ts.map +1 -0
- package/dist/terminal/session-manager.js +582 -0
- package/dist/terminal/session-manager.js.map +1 -0
- package/dist/terminal/shepherd-client.d.ts +58 -0
- package/dist/terminal/shepherd-client.d.ts.map +1 -0
- package/dist/terminal/shepherd-client.js +212 -0
- package/dist/terminal/shepherd-client.js.map +1 -0
- package/dist/terminal/shepherd-main.d.ts +19 -0
- package/dist/terminal/shepherd-main.d.ts.map +1 -0
- package/dist/terminal/shepherd-main.js +153 -0
- package/dist/terminal/shepherd-main.js.map +1 -0
- package/dist/terminal/shepherd-process.d.ts +75 -0
- package/dist/terminal/shepherd-process.d.ts.map +1 -0
- package/dist/terminal/shepherd-process.js +279 -0
- package/dist/terminal/shepherd-process.js.map +1 -0
- package/dist/terminal/shepherd-protocol.d.ts +115 -0
- package/dist/terminal/shepherd-protocol.d.ts.map +1 -0
- package/dist/terminal/shepherd-protocol.js +214 -0
- package/dist/terminal/shepherd-protocol.js.map +1 -0
- package/dist/terminal/shepherd-replay-buffer.d.ts +38 -0
- package/dist/terminal/shepherd-replay-buffer.d.ts.map +1 -0
- package/dist/terminal/shepherd-replay-buffer.js +94 -0
- package/dist/terminal/shepherd-replay-buffer.js.map +1 -0
- package/package.json +1 -1
- package/skeleton/.claude/skills/codev/SKILL.md +1 -1
- package/skeleton/DEPENDENCIES.md +2 -34
- package/skeleton/consult-types/impl-review.md +9 -9
- package/skeleton/consult-types/integration-review.md +1 -1
- package/skeleton/consult-types/plan-review.md +1 -1
- package/skeleton/consult-types/pr-ready.md +1 -1
- package/skeleton/consult-types/spec-review.md +1 -1
- package/skeleton/protocols/bugfix/prompts/pr.md +23 -4
- package/skeleton/protocols/maintain/protocol.md +3 -3
- package/skeleton/resources/commands/agent-farm.md +2 -3
- package/skeleton/resources/commands/codev.md +0 -2
- package/skeleton/roles/architect.md +1 -1
- package/skeleton/roles/consultant.md +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-manager.js","sourceRoot":"","sources":["../../src/terminal/pty-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pty-manager.js","sourceRoot":"","sources":["../../src/terminal/pty-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { EventEmitter } from 'node:events';
|
|
6
6
|
import { RingBuffer } from './ring-buffer.js';
|
|
7
|
+
import type { IShepherdClient } from './shepherd-client.js';
|
|
7
8
|
export interface PtySessionConfig {
|
|
8
9
|
id: string;
|
|
9
10
|
command: string;
|
|
@@ -28,6 +29,7 @@ export interface PtySessionInfo {
|
|
|
28
29
|
status: 'running' | 'exited';
|
|
29
30
|
createdAt: string;
|
|
30
31
|
exitCode?: number;
|
|
32
|
+
persistent?: boolean;
|
|
31
33
|
}
|
|
32
34
|
export declare class PtySession extends EventEmitter {
|
|
33
35
|
private readonly config;
|
|
@@ -36,6 +38,10 @@ export declare class PtySession extends EventEmitter {
|
|
|
36
38
|
readonly createdAt: string;
|
|
37
39
|
readonly ringBuffer: RingBuffer;
|
|
38
40
|
private pty;
|
|
41
|
+
private shepherdClient;
|
|
42
|
+
private _shepherdBacked;
|
|
43
|
+
private _shepherdSessionId;
|
|
44
|
+
private shepherdPid;
|
|
39
45
|
private cols;
|
|
40
46
|
private rows;
|
|
41
47
|
private exitCode;
|
|
@@ -50,13 +56,30 @@ export declare class PtySession extends EventEmitter {
|
|
|
50
56
|
constructor(config: PtySessionConfig);
|
|
51
57
|
/** Spawn the PTY process. Must be called after construction. */
|
|
52
58
|
spawn(): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Attach a shepherd client as the I/O backend instead of node-pty.
|
|
61
|
+
* Data flows: shepherd → ring buffer → WebSocket clients.
|
|
62
|
+
* User input flows: WebSocket → write() → shepherd.
|
|
63
|
+
*/
|
|
64
|
+
attachShepherd(client: IShepherdClient, replayData: Buffer, shepherdPid: number, shepherdSessionId?: string): void;
|
|
65
|
+
/** Whether this session is backed by a shepherd process. */
|
|
66
|
+
get shepherdBacked(): boolean;
|
|
67
|
+
/** The SessionManager session ID for this shepherd-backed session, or null. */
|
|
68
|
+
get shepherdSessionId(): string | null;
|
|
69
|
+
/**
|
|
70
|
+
* Detach from shepherd client during Tower shutdown.
|
|
71
|
+
* Removes all event listeners so that SessionManager.shutdown() disconnecting
|
|
72
|
+
* the client doesn't cascade into exit events and SQLite row deletion.
|
|
73
|
+
*/
|
|
74
|
+
detachShepherd(): void;
|
|
75
|
+
private cleanupShepherd;
|
|
53
76
|
private onPtyData;
|
|
54
77
|
private rotateDiskLog;
|
|
55
|
-
/** Write user input to the PTY. */
|
|
78
|
+
/** Write user input to the PTY or shepherd. */
|
|
56
79
|
write(data: string): void;
|
|
57
|
-
/** Resize the PTY. */
|
|
80
|
+
/** Resize the PTY or shepherd. */
|
|
58
81
|
resize(cols: number, rows: number): void;
|
|
59
|
-
/** Kill the PTY process. */
|
|
82
|
+
/** Kill the PTY process or send signal to shepherd. */
|
|
60
83
|
kill(): void;
|
|
61
84
|
/** Attach a WebSocket client. Returns ring buffer contents for replay. */
|
|
62
85
|
attach(client: {
|
|
@@ -66,7 +89,7 @@ export declare class PtySession extends EventEmitter {
|
|
|
66
89
|
attachResume(client: {
|
|
67
90
|
send: (data: Buffer | string) => void;
|
|
68
91
|
}, sinceSeq: number): string[];
|
|
69
|
-
/** Detach a WebSocket client. Starts disconnect timer if no clients remain. */
|
|
92
|
+
/** Detach a WebSocket client. Starts disconnect timer if no clients remain (non-shepherd only). */
|
|
70
93
|
detach(client: {
|
|
71
94
|
send: (data: Buffer | string) => void;
|
|
72
95
|
}): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-session.d.ts","sourceRoot":"","sources":["../../src/terminal/pty-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"pty-session.d.ts","sourceRoot":"","sources":["../../src/terminal/pty-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,10 @@ export class PtySession extends EventEmitter {
|
|
|
13
13
|
createdAt;
|
|
14
14
|
ringBuffer;
|
|
15
15
|
pty = null;
|
|
16
|
+
shepherdClient = null;
|
|
17
|
+
_shepherdBacked = false;
|
|
18
|
+
_shepherdSessionId = null;
|
|
19
|
+
shepherdPid = -1;
|
|
16
20
|
cols;
|
|
17
21
|
rows;
|
|
18
22
|
exitCode;
|
|
@@ -63,6 +67,84 @@ export class PtySession extends EventEmitter {
|
|
|
63
67
|
this.cleanup();
|
|
64
68
|
});
|
|
65
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Attach a shepherd client as the I/O backend instead of node-pty.
|
|
72
|
+
* Data flows: shepherd → ring buffer → WebSocket clients.
|
|
73
|
+
* User input flows: WebSocket → write() → shepherd.
|
|
74
|
+
*/
|
|
75
|
+
attachShepherd(client, replayData, shepherdPid, shepherdSessionId) {
|
|
76
|
+
this._shepherdBacked = true;
|
|
77
|
+
this.shepherdClient = client;
|
|
78
|
+
this.shepherdPid = shepherdPid;
|
|
79
|
+
this._shepherdSessionId = shepherdSessionId ?? null;
|
|
80
|
+
// Ensure log directory exists
|
|
81
|
+
if (this.diskLogEnabled) {
|
|
82
|
+
fs.mkdirSync(path.dirname(this.logPath), { recursive: true });
|
|
83
|
+
this.logFd = fs.openSync(this.logPath, 'a');
|
|
84
|
+
}
|
|
85
|
+
// Populate ring buffer with replay data from shepherd
|
|
86
|
+
if (replayData.length > 0) {
|
|
87
|
+
this.ringBuffer.pushData(replayData.toString('utf-8'));
|
|
88
|
+
}
|
|
89
|
+
// Forward shepherd data to ring buffer + WebSocket clients
|
|
90
|
+
client.on('data', (buf) => {
|
|
91
|
+
this.onPtyData(buf.toString('utf-8'));
|
|
92
|
+
});
|
|
93
|
+
// Handle shepherd exit (process inside shepherd exited)
|
|
94
|
+
client.on('exit', (exitInfo) => {
|
|
95
|
+
this.exitCode = exitInfo.code;
|
|
96
|
+
this.emit('exit', exitInfo.code);
|
|
97
|
+
// For shepherd-backed sessions, cleanup closes disk log and clients
|
|
98
|
+
// but doesn't clear the ring buffer (shepherd may still have replay data)
|
|
99
|
+
this.cleanupShepherd();
|
|
100
|
+
});
|
|
101
|
+
// Handle shepherd disconnect (socket closed without EXIT)
|
|
102
|
+
client.on('close', () => {
|
|
103
|
+
if (this.exitCode === undefined) {
|
|
104
|
+
// Unexpected disconnect — shepherd may have crashed
|
|
105
|
+
this.exitCode = -1;
|
|
106
|
+
this.emit('exit', -1);
|
|
107
|
+
this.cleanupShepherd();
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/** Whether this session is backed by a shepherd process. */
|
|
112
|
+
get shepherdBacked() {
|
|
113
|
+
return this._shepherdBacked;
|
|
114
|
+
}
|
|
115
|
+
/** The SessionManager session ID for this shepherd-backed session, or null. */
|
|
116
|
+
get shepherdSessionId() {
|
|
117
|
+
return this._shepherdSessionId;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Detach from shepherd client during Tower shutdown.
|
|
121
|
+
* Removes all event listeners so that SessionManager.shutdown() disconnecting
|
|
122
|
+
* the client doesn't cascade into exit events and SQLite row deletion.
|
|
123
|
+
*/
|
|
124
|
+
detachShepherd() {
|
|
125
|
+
if (this.shepherdClient) {
|
|
126
|
+
this.shepherdClient.removeAllListeners();
|
|
127
|
+
this.shepherdClient = null;
|
|
128
|
+
}
|
|
129
|
+
this.cleanupShepherd();
|
|
130
|
+
}
|
|
131
|
+
cleanupShepherd() {
|
|
132
|
+
if (this.disconnectTimer) {
|
|
133
|
+
clearTimeout(this.disconnectTimer);
|
|
134
|
+
this.disconnectTimer = null;
|
|
135
|
+
}
|
|
136
|
+
this.clients.clear();
|
|
137
|
+
// Close disk log handle
|
|
138
|
+
if (this.logFd !== null) {
|
|
139
|
+
try {
|
|
140
|
+
fs.closeSync(this.logFd);
|
|
141
|
+
}
|
|
142
|
+
catch { /* ignore */ }
|
|
143
|
+
this.logFd = null;
|
|
144
|
+
}
|
|
145
|
+
// Note: ring buffer is NOT cleared — shepherd handles replay
|
|
146
|
+
// Note: shepherd client is NOT disconnected — SessionManager owns that lifecycle
|
|
147
|
+
}
|
|
66
148
|
onPtyData(data) {
|
|
67
149
|
// Store in ring buffer
|
|
68
150
|
this.ringBuffer.pushData(data);
|
|
@@ -111,22 +193,41 @@ export class PtySession extends EventEmitter {
|
|
|
111
193
|
this.logFd = fs.openSync(this.logPath, 'a');
|
|
112
194
|
this.logBytes = 0;
|
|
113
195
|
}
|
|
114
|
-
/** Write user input to the PTY. */
|
|
196
|
+
/** Write user input to the PTY or shepherd. */
|
|
115
197
|
write(data) {
|
|
198
|
+
if (this._shepherdBacked) {
|
|
199
|
+
if (this.shepherdClient && this.status === 'running') {
|
|
200
|
+
this.shepherdClient.write(data);
|
|
201
|
+
}
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
116
204
|
if (this.pty && this.status === 'running') {
|
|
117
205
|
this.pty.write(data);
|
|
118
206
|
}
|
|
119
207
|
}
|
|
120
|
-
/** Resize the PTY. */
|
|
208
|
+
/** Resize the PTY or shepherd. */
|
|
121
209
|
resize(cols, rows) {
|
|
122
210
|
this.cols = cols;
|
|
123
211
|
this.rows = rows;
|
|
212
|
+
if (this._shepherdBacked) {
|
|
213
|
+
if (this.shepherdClient && this.status === 'running') {
|
|
214
|
+
this.shepherdClient.resize(cols, rows);
|
|
215
|
+
}
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
124
218
|
if (this.pty && this.status === 'running') {
|
|
125
219
|
this.pty.resize(cols, rows);
|
|
126
220
|
}
|
|
127
221
|
}
|
|
128
|
-
/** Kill the PTY process. */
|
|
222
|
+
/** Kill the PTY process or send signal to shepherd. */
|
|
129
223
|
kill() {
|
|
224
|
+
if (this._shepherdBacked) {
|
|
225
|
+
if (this.shepherdClient && this.status === 'running') {
|
|
226
|
+
this.shepherdClient.signal(15); // SIGTERM
|
|
227
|
+
}
|
|
228
|
+
this.cleanupShepherd();
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
130
231
|
if (this.pty && this.status === 'running') {
|
|
131
232
|
try {
|
|
132
233
|
// Kill process group to prevent orphans
|
|
@@ -162,9 +263,13 @@ export class PtySession extends EventEmitter {
|
|
|
162
263
|
}
|
|
163
264
|
return this.ringBuffer.getSince(sinceSeq);
|
|
164
265
|
}
|
|
165
|
-
/** Detach a WebSocket client. Starts disconnect timer if no clients remain. */
|
|
266
|
+
/** Detach a WebSocket client. Starts disconnect timer if no clients remain (non-shepherd only). */
|
|
166
267
|
detach(client) {
|
|
167
268
|
this.clients.delete(client);
|
|
269
|
+
// Shepherd-backed sessions don't need a disconnect timer — the shepherd
|
|
270
|
+
// keeps the process alive independently of WebSocket connections.
|
|
271
|
+
if (this._shepherdBacked)
|
|
272
|
+
return;
|
|
168
273
|
if (this.clients.size === 0 && this.status === 'running') {
|
|
169
274
|
this.disconnectTimer = setTimeout(() => {
|
|
170
275
|
this.emit('timeout');
|
|
@@ -180,6 +285,8 @@ export class PtySession extends EventEmitter {
|
|
|
180
285
|
return this.exitCode === undefined ? 'running' : 'exited';
|
|
181
286
|
}
|
|
182
287
|
get pid() {
|
|
288
|
+
if (this._shepherdBacked)
|
|
289
|
+
return this.shepherdPid;
|
|
183
290
|
return this.pty?.pid ?? -1;
|
|
184
291
|
}
|
|
185
292
|
get info() {
|
|
@@ -192,6 +299,7 @@ export class PtySession extends EventEmitter {
|
|
|
192
299
|
status: this.status,
|
|
193
300
|
createdAt: this.createdAt,
|
|
194
301
|
exitCode: this.exitCode,
|
|
302
|
+
persistent: this._shepherdBacked,
|
|
195
303
|
};
|
|
196
304
|
}
|
|
197
305
|
get clientCount() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-session.js","sourceRoot":"","sources":["../../src/terminal/pty-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"pty-session.js","sourceRoot":"","sources":["../../src/terminal/pty-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,19 @@ export declare class RingBuffer {
|
|
|
8
8
|
private head;
|
|
9
9
|
private count;
|
|
10
10
|
private seq;
|
|
11
|
+
private partial;
|
|
11
12
|
constructor(capacity?: number);
|
|
12
|
-
/** Push a line into the buffer. Returns the assigned sequence number. */
|
|
13
|
+
/** Push a complete line into the buffer. Returns the assigned sequence number. */
|
|
13
14
|
push(line: string): number;
|
|
14
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Push raw data, splitting on newlines. Handles partial lines across
|
|
17
|
+
* chunk boundaries: if data doesn't end with \n, the trailing fragment
|
|
18
|
+
* is held and prepended to the next pushData call.
|
|
19
|
+
*
|
|
20
|
+
* Returns last sequence number.
|
|
21
|
+
*/
|
|
15
22
|
pushData(data: string): number;
|
|
16
|
-
/** Get all stored lines in order. */
|
|
23
|
+
/** Get all stored lines in order, including any incomplete trailing line. */
|
|
17
24
|
getAll(): string[];
|
|
18
25
|
/** Get lines starting from a given sequence number (for resume). */
|
|
19
26
|
getSince(sinceSeq: number): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ring-buffer.d.ts","sourceRoot":"","sources":["../../src/terminal/ring-buffer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,UAAU;
|
|
1
|
+
{"version":3,"file":"ring-buffer.d.ts","sourceRoot":"","sources":["../../src/terminal/ring-buffer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,UAAU;IAOT,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,OAAO,CAAc;gBAEA,QAAQ,GAAE,MAAa;IAIpD,kFAAkF;IAClF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAW1B;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAiB9B,6EAA6E;IAC7E,MAAM,IAAI,MAAM,EAAE;IAWlB,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAiBpC,8CAA8C;IAC9C,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,wCAAwC;IACxC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,2CAA2C;IAC3C,KAAK,IAAI,IAAI;CAOd"}
|
|
@@ -8,11 +8,12 @@ export class RingBuffer {
|
|
|
8
8
|
head = 0;
|
|
9
9
|
count = 0;
|
|
10
10
|
seq = 0; // monotonically increasing sequence number
|
|
11
|
+
partial = ''; // incomplete line from previous pushData call
|
|
11
12
|
constructor(capacity = 1000) {
|
|
12
13
|
this.capacity = capacity;
|
|
13
14
|
this.buffer = new Array(capacity);
|
|
14
15
|
}
|
|
15
|
-
/** Push a line into the buffer. Returns the assigned sequence number. */
|
|
16
|
+
/** Push a complete line into the buffer. Returns the assigned sequence number. */
|
|
16
17
|
push(line) {
|
|
17
18
|
const index = (this.head + this.count) % this.capacity;
|
|
18
19
|
this.buffer[index] = line;
|
|
@@ -24,21 +25,36 @@ export class RingBuffer {
|
|
|
24
25
|
}
|
|
25
26
|
return ++this.seq;
|
|
26
27
|
}
|
|
27
|
-
/**
|
|
28
|
+
/**
|
|
29
|
+
* Push raw data, splitting on newlines. Handles partial lines across
|
|
30
|
+
* chunk boundaries: if data doesn't end with \n, the trailing fragment
|
|
31
|
+
* is held and prepended to the next pushData call.
|
|
32
|
+
*
|
|
33
|
+
* Returns last sequence number.
|
|
34
|
+
*/
|
|
28
35
|
pushData(data) {
|
|
29
|
-
const
|
|
36
|
+
const combined = this.partial + data;
|
|
37
|
+
const parts = combined.split('\n');
|
|
38
|
+
// Last element is either:
|
|
39
|
+
// - "" if data ended with \n (all lines complete)
|
|
40
|
+
// - non-empty if data ended mid-line (incomplete line)
|
|
41
|
+
// Either way, save it as the new partial.
|
|
42
|
+
this.partial = parts.pop();
|
|
30
43
|
let lastSeq = this.seq;
|
|
31
|
-
for (const line of
|
|
44
|
+
for (const line of parts) {
|
|
32
45
|
lastSeq = this.push(line);
|
|
33
46
|
}
|
|
34
47
|
return lastSeq;
|
|
35
48
|
}
|
|
36
|
-
/** Get all stored lines in order. */
|
|
49
|
+
/** Get all stored lines in order, including any incomplete trailing line. */
|
|
37
50
|
getAll() {
|
|
38
51
|
const result = [];
|
|
39
52
|
for (let i = 0; i < this.count; i++) {
|
|
40
53
|
result.push(this.buffer[(this.head + i) % this.capacity]);
|
|
41
54
|
}
|
|
55
|
+
if (this.partial) {
|
|
56
|
+
result.push(this.partial);
|
|
57
|
+
}
|
|
42
58
|
return result;
|
|
43
59
|
}
|
|
44
60
|
/** Get lines starting from a given sequence number (for resume). */
|
|
@@ -53,6 +69,9 @@ export class RingBuffer {
|
|
|
53
69
|
for (let i = skip; i < this.count; i++) {
|
|
54
70
|
result.push(this.buffer[(this.head + i) % this.capacity]);
|
|
55
71
|
}
|
|
72
|
+
if (this.partial) {
|
|
73
|
+
result.push(this.partial);
|
|
74
|
+
}
|
|
56
75
|
return result;
|
|
57
76
|
}
|
|
58
77
|
/** Current sequence number (last written). */
|
|
@@ -68,6 +87,7 @@ export class RingBuffer {
|
|
|
68
87
|
this.buffer = [];
|
|
69
88
|
this.head = 0;
|
|
70
89
|
this.count = 0;
|
|
90
|
+
this.partial = '';
|
|
71
91
|
// Don't reset seq — it should be monotonic
|
|
72
92
|
}
|
|
73
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ring-buffer.js","sourceRoot":"","sources":["../../src/terminal/ring-buffer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"ring-buffer.js","sourceRoot":"","sources":["../../src/terminal/ring-buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SessionManager: orchestrates shepherd process lifecycle.
|
|
3
|
+
*
|
|
4
|
+
* Responsibilities:
|
|
5
|
+
* - Spawn shepherd processes as detached children
|
|
6
|
+
* - Connect ShepherdClient to each shepherd
|
|
7
|
+
* - Kill sessions (SIGTERM → wait → SIGKILL)
|
|
8
|
+
* - Detect and clean up stale sockets
|
|
9
|
+
* - Auto-restart on exit (configurable per session)
|
|
10
|
+
* - Reconnect to existing shepherds after Tower restart
|
|
11
|
+
*
|
|
12
|
+
* Process start time validation prevents PID reuse reconnection.
|
|
13
|
+
*/
|
|
14
|
+
import { EventEmitter } from 'node:events';
|
|
15
|
+
import { type IShepherdClient } from './shepherd-client.js';
|
|
16
|
+
export interface SessionManagerConfig {
|
|
17
|
+
socketDir: string;
|
|
18
|
+
shepherdScript: string;
|
|
19
|
+
nodeExecutable: string;
|
|
20
|
+
}
|
|
21
|
+
export interface CreateSessionOptions {
|
|
22
|
+
sessionId: string;
|
|
23
|
+
command: string;
|
|
24
|
+
args: string[];
|
|
25
|
+
cwd: string;
|
|
26
|
+
env: Record<string, string>;
|
|
27
|
+
cols: number;
|
|
28
|
+
rows: number;
|
|
29
|
+
restartOnExit?: boolean;
|
|
30
|
+
restartDelay?: number;
|
|
31
|
+
maxRestarts?: number;
|
|
32
|
+
restartResetAfter?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface ReconnectRestartOptions {
|
|
35
|
+
command: string;
|
|
36
|
+
args: string[];
|
|
37
|
+
cwd: string;
|
|
38
|
+
env: Record<string, string>;
|
|
39
|
+
restartDelay?: number;
|
|
40
|
+
maxRestarts?: number;
|
|
41
|
+
restartResetAfter?: number;
|
|
42
|
+
}
|
|
43
|
+
export declare class SessionManager extends EventEmitter {
|
|
44
|
+
private readonly config;
|
|
45
|
+
private sessions;
|
|
46
|
+
constructor(config: SessionManagerConfig);
|
|
47
|
+
/**
|
|
48
|
+
* Spawn a new shepherd process and connect to it.
|
|
49
|
+
* Returns the connected client.
|
|
50
|
+
*/
|
|
51
|
+
createSession(opts: CreateSessionOptions): Promise<IShepherdClient>;
|
|
52
|
+
/**
|
|
53
|
+
* Reconnect to an existing shepherd process after Tower restart.
|
|
54
|
+
* Validates PID is alive and start time matches.
|
|
55
|
+
* Returns connected client, or null if shepherd is stale/dead.
|
|
56
|
+
*/
|
|
57
|
+
reconnectSession(sessionId: string, socketPath: string, pid: number, startTime: number, restartOptions?: ReconnectRestartOptions): Promise<IShepherdClient | null>;
|
|
58
|
+
/**
|
|
59
|
+
* Kill a session: SIGTERM, wait 5s, SIGKILL if needed.
|
|
60
|
+
* Cleans up socket file and removes from session map.
|
|
61
|
+
*/
|
|
62
|
+
killSession(sessionId: string): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* List all active sessions.
|
|
65
|
+
*/
|
|
66
|
+
listSessions(): Map<string, IShepherdClient>;
|
|
67
|
+
/**
|
|
68
|
+
* Get session metadata (pid, startTime, socketPath) for a session.
|
|
69
|
+
*/
|
|
70
|
+
getSessionInfo(sessionId: string): {
|
|
71
|
+
pid: number;
|
|
72
|
+
startTime: number;
|
|
73
|
+
socketPath: string;
|
|
74
|
+
} | null;
|
|
75
|
+
/**
|
|
76
|
+
* Scan socket directory for stale sockets (no live process).
|
|
77
|
+
* A socket is stale if nothing is listening on it (connection refused).
|
|
78
|
+
* Returns the number of sockets cleaned up.
|
|
79
|
+
*/
|
|
80
|
+
cleanupStaleSockets(): Promise<number>;
|
|
81
|
+
/**
|
|
82
|
+
* Test if a Unix socket has a listener by attempting a brief connection.
|
|
83
|
+
* Returns true if connection succeeds, false if refused/timed out.
|
|
84
|
+
*/
|
|
85
|
+
private probeSocket;
|
|
86
|
+
/**
|
|
87
|
+
* Disconnect from all sessions without killing shepherd processes.
|
|
88
|
+
* Per spec: "When Tower intentionally stops, Tower closes its socket
|
|
89
|
+
* connections to shepherds. Shepherds continue running."
|
|
90
|
+
*/
|
|
91
|
+
shutdown(): void;
|
|
92
|
+
/**
|
|
93
|
+
* Remove a dead session from the map, clear its timers, and clean up socket.
|
|
94
|
+
* Called when a session exits naturally (no restart) or exhausts maxRestarts.
|
|
95
|
+
*/
|
|
96
|
+
private removeDeadSession;
|
|
97
|
+
private getSocketPath;
|
|
98
|
+
private unlinkSocketIfExists;
|
|
99
|
+
private readShepherdInfo;
|
|
100
|
+
private waitForSocket;
|
|
101
|
+
private isProcessAlive;
|
|
102
|
+
private waitForProcessExit;
|
|
103
|
+
private setupAutoRestart;
|
|
104
|
+
private startRestartResetTimer;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get the start time of a process by PID.
|
|
108
|
+
* Returns epoch milliseconds, or null if the process doesn't exist or can't be queried.
|
|
109
|
+
*
|
|
110
|
+
* Platform-specific:
|
|
111
|
+
* - macOS: parse `ps -p {pid} -o lstart=`
|
|
112
|
+
* - Linux: read `/proc/{pid}/stat` field 22 (starttime in clock ticks)
|
|
113
|
+
*/
|
|
114
|
+
export declare function getProcessStartTime(pid: number): Promise<number | null>;
|
|
115
|
+
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/terminal/session-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5E,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAYD,qBAAa,cAAe,SAAQ,YAAY;IAGlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAqC;gBAExB,MAAM,EAAE,oBAAoB;IAIzD;;;OAGG;IACG,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAiGzE;;;;OAIG;IACG,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,uBAAuB,GACvC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAwFlC;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCnD;;OAEG;IACH,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC;IAQ5C;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAUhG;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IA+C5C;;;OAGG;IACH,OAAO,CAAC,WAAW;IAsBnB;;;;OAIG;IACH,QAAQ,IAAI,IAAI;IAahB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,gBAAgB;IA8CxB,OAAO,CAAC,sBAAsB;CAc/B;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2DvE"}
|