@cluesmith/codev 2.0.3 → 2.0.6
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-B-s8BA2l.js +135 -0
- package/dashboard/dist/assets/index-B-s8BA2l.js.map +1 -0
- package/dashboard/dist/assets/index-DB2AxRP7.css +32 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +31 -13
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/attach.d.ts +19 -0
- package/dist/agent-farm/commands/attach.d.ts.map +1 -1
- package/dist/agent-farm/commands/attach.js +172 -12
- package/dist/agent-farm/commands/attach.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +22 -2
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +97 -178
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.d.ts +3 -9
- package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.js +14 -53
- package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +10 -16
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +24 -5
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts +8 -6
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +180 -66
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +1 -12
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/lib/tower-client.d.ts +16 -6
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tower-client.js +25 -0
- package/dist/agent-farm/lib/tower-client.js.map +1 -1
- package/dist/agent-farm/servers/overview.d.ts +111 -0
- package/dist/agent-farm/servers/overview.d.ts.map +1 -0
- package/dist/agent-farm/servers/overview.js +385 -0
- package/dist/agent-farm/servers/overview.js.map +1 -0
- package/dist/agent-farm/servers/tower-instances.d.ts +1 -3
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +10 -13
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-messages.d.ts +87 -0
- package/dist/agent-farm/servers/tower-messages.d.ts.map +1 -0
- package/dist/agent-farm/servers/tower-messages.js +202 -0
- package/dist/agent-farm/servers/tower-messages.js.map +1 -0
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +164 -17
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +27 -2
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +8 -2
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +125 -80
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-types.d.ts +0 -2
- package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.js +25 -4
- package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
- package/dist/agent-farm/types.d.ts +3 -4
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/agent-names.d.ts +85 -0
- package/dist/agent-farm/utils/agent-names.d.ts.map +1 -0
- package/dist/agent-farm/utils/agent-names.js +140 -0
- package/dist/agent-farm/utils/agent-names.js.map +1 -0
- package/dist/agent-farm/utils/message-format.d.ts +17 -0
- package/dist/agent-farm/utils/message-format.d.ts.map +1 -0
- package/dist/agent-farm/utils/message-format.js +41 -0
- package/dist/agent-farm/utils/message-format.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +26 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +1 -13
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts +25 -1
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +251 -39
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/consult/metrics.d.ts +90 -0
- package/dist/commands/consult/metrics.d.ts.map +1 -0
- package/dist/commands/consult/metrics.js +203 -0
- package/dist/commands/consult/metrics.js.map +1 -0
- package/dist/commands/consult/stats.d.ts +18 -0
- package/dist/commands/consult/stats.d.ts.map +1 -0
- package/dist/commands/consult/stats.js +150 -0
- package/dist/commands/consult/stats.js.map +1 -0
- package/dist/commands/consult/usage-extractor.d.ts +38 -0
- package/dist/commands/consult/usage-extractor.d.ts.map +1 -0
- package/dist/commands/consult/usage-extractor.js +99 -0
- package/dist/commands/consult/usage-extractor.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +5 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -13
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/next.d.ts.map +1 -1
- package/dist/commands/porch/next.js +53 -62
- package/dist/commands/porch/next.js.map +1 -1
- package/dist/commands/porch/prompts.d.ts +10 -1
- package/dist/commands/porch/prompts.d.ts.map +1 -1
- package/dist/commands/porch/prompts.js +50 -26
- package/dist/commands/porch/prompts.js.map +1 -1
- package/dist/commands/porch/protocol.js +2 -2
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +3 -1
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +0 -10
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/github.d.ts +81 -0
- package/dist/lib/github.d.ts.map +1 -0
- package/dist/lib/github.js +141 -0
- package/dist/lib/github.js.map +1 -0
- package/dist/lib/scaffold.d.ts +0 -21
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +0 -57
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/terminal/index.d.ts +14 -0
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +12 -0
- package/dist/terminal/index.js.map +1 -1
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +7 -4
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/pty-session.js +3 -3
- package/dist/terminal/pty-session.js.map +1 -1
- package/dist/terminal/session-manager.d.ts +64 -0
- package/dist/terminal/session-manager.d.ts.map +1 -1
- package/dist/terminal/session-manager.js +299 -10
- package/dist/terminal/session-manager.js.map +1 -1
- package/dist/terminal/shellper-client.d.ts +2 -1
- package/dist/terminal/shellper-client.d.ts.map +1 -1
- package/dist/terminal/shellper-client.js +4 -2
- package/dist/terminal/shellper-client.js.map +1 -1
- package/dist/terminal/shellper-main.js +33 -4
- package/dist/terminal/shellper-main.js.map +1 -1
- package/dist/terminal/shellper-process.d.ts +24 -7
- package/dist/terminal/shellper-process.d.ts.map +1 -1
- package/dist/terminal/shellper-process.js +139 -36
- package/dist/terminal/shellper-process.js.map +1 -1
- package/dist/terminal/shellper-protocol.d.ts +1 -0
- package/dist/terminal/shellper-protocol.d.ts.map +1 -1
- package/dist/terminal/shellper-protocol.js.map +1 -1
- package/package.json +4 -1
- package/skeleton/.claude/skills/af/SKILL.md +7 -7
- package/skeleton/.claude/skills/consult/SKILL.md +1 -1
- package/skeleton/builders.md +2 -2
- package/skeleton/maintain/.gitkeep +1 -1
- package/skeleton/porch/prompts/specify.md +1 -1
- package/skeleton/protocols/bugfix/prompts/pr.md +15 -4
- package/skeleton/protocols/experiment/protocol.md +17 -17
- package/skeleton/protocols/maintain/prompts/audit.md +2 -2
- package/skeleton/protocols/maintain/prompts/sync.md +1 -1
- package/skeleton/protocols/maintain/prompts/verify.md +1 -1
- package/skeleton/protocols/maintain/protocol.md +8 -9
- package/skeleton/protocols/maintain/templates/maintenance-run.md +2 -2
- package/skeleton/protocols/spir/protocol.json +5 -5
- package/skeleton/protocols/spir/protocol.md +8 -8
- package/skeleton/protocols/tick/protocol.md +31 -31
- package/skeleton/resources/commands/agent-farm.md +14 -14
- package/skeleton/resources/commands/codev.md +0 -1
- package/skeleton/resources/commands/consult.md +3 -3
- package/skeleton/resources/spikes.md +3 -3
- package/skeleton/resources/workflow-reference.md +14 -14
- package/skeleton/roles/architect.md +25 -25
- package/skeleton/roles/builder.md +1 -1
- package/skeleton/roles/consultant.md +6 -0
- package/skeleton/templates/AGENTS.md +5 -5
- package/skeleton/templates/CLAUDE.md +5 -5
- package/skeleton/templates/lifecycle.md +9 -9
- package/templates/open.html +6 -3
- package/templates/tower.html +1 -41
- package/dashboard/dist/assets/index-4n9zpWLY.css +0 -32
- package/dashboard/dist/assets/index-UsH9ixz1.js +0 -136
- package/dashboard/dist/assets/index-UsH9ixz1.js.map +0 -1
- package/dist/agent-farm/utils/gate-status.d.ts +0 -16
- package/dist/agent-farm/utils/gate-status.d.ts.map +0 -1
- package/dist/agent-farm/utils/gate-status.js +0 -79
- package/dist/agent-farm/utils/gate-status.js.map +0 -1
- package/skeleton/templates/projectlist-archive.md +0 -21
- package/skeleton/templates/projectlist.md +0 -147
|
@@ -22,6 +22,20 @@ import { ShellperProcess } from './shellper-process.js';
|
|
|
22
22
|
// createRequire enables importing native/CJS modules (like node-pty) from ESM.
|
|
23
23
|
// The package uses "type": "module", so bare `require()` is not available.
|
|
24
24
|
const require = createRequire(import.meta.url);
|
|
25
|
+
/** EPIPE-safe stderr logger with ISO timestamp. Silently ignores broken pipe errors. */
|
|
26
|
+
function logStderr(message) {
|
|
27
|
+
try {
|
|
28
|
+
process.stderr.write(`[${new Date().toISOString()}] ${message}\n`);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
// EPIPE: Tower closed the read end of the pipe (e.g., after restart).
|
|
32
|
+
// Node.js ignores SIGPIPE via libuv, so we just get an error on write.
|
|
33
|
+
// Re-throw non-EPIPE errors so they aren't silently swallowed.
|
|
34
|
+
if (err instanceof Error && err.code !== 'EPIPE') {
|
|
35
|
+
throw err;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
25
39
|
function createRealPty() {
|
|
26
40
|
let ptyModule = null;
|
|
27
41
|
let ptyInstance = null;
|
|
@@ -80,6 +94,16 @@ function createRealPty() {
|
|
|
80
94
|
};
|
|
81
95
|
}
|
|
82
96
|
async function main() {
|
|
97
|
+
// Bugfix #324: Prevent crashes from broken/closed stdio FDs.
|
|
98
|
+
// When Tower exits, any pipe-based stdio FDs break. Async EPIPE errors
|
|
99
|
+
// surface as unhandled 'error' events on the stream, crashing the process.
|
|
100
|
+
// Even though stderr is now redirected to a file (not a pipe), add handlers
|
|
101
|
+
// as a defensive measure against future regressions.
|
|
102
|
+
for (const stream of [process.stdout, process.stderr]) {
|
|
103
|
+
if (stream && typeof stream.on === 'function') {
|
|
104
|
+
stream.on('error', () => { });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
83
107
|
const configJson = process.argv[2];
|
|
84
108
|
if (!configJson) {
|
|
85
109
|
process.stderr.write('Usage: shellper-main.js <json-config>\n');
|
|
@@ -106,9 +130,12 @@ async function main() {
|
|
|
106
130
|
catch {
|
|
107
131
|
// File doesn't exist — fine
|
|
108
132
|
}
|
|
109
|
-
const shellper = new ShellperProcess(createRealPty, config.socketPath, config.replayBufferLines ?? 10_000);
|
|
133
|
+
const shellper = new ShellperProcess(createRealPty, config.socketPath, config.replayBufferLines ?? 10_000, logStderr);
|
|
134
|
+
logStderr(`Shellper started: pid=${process.pid}, command=${config.command}, socket=${config.socketPath}`);
|
|
110
135
|
// Start the shellper (spawns PTY and listens on socket)
|
|
111
136
|
await shellper.start(config.command, config.args, config.cwd, config.env, config.cols, config.rows);
|
|
137
|
+
logStderr(`PTY spawned: pid=${shellper.getPid()}, cols=${config.cols}, rows=${config.rows}`);
|
|
138
|
+
logStderr(`Socket listening: ${config.socketPath}`);
|
|
112
139
|
// Write PID and start time to stdout, then close stdout
|
|
113
140
|
const info = JSON.stringify({
|
|
114
141
|
pid: process.pid,
|
|
@@ -125,6 +152,7 @@ async function main() {
|
|
|
125
152
|
});
|
|
126
153
|
// Handle SIGTERM: graceful shutdown
|
|
127
154
|
process.on('SIGTERM', () => {
|
|
155
|
+
logStderr('Shellper received SIGTERM, shutting down');
|
|
128
156
|
shellper.shutdown();
|
|
129
157
|
// Clean up socket file
|
|
130
158
|
try {
|
|
@@ -136,18 +164,19 @@ async function main() {
|
|
|
136
164
|
process.exit(0);
|
|
137
165
|
});
|
|
138
166
|
// When the child process exits and no connection is active, exit the shellper
|
|
139
|
-
shellper.on('exit', () => {
|
|
167
|
+
shellper.on('exit', (exitInfo) => {
|
|
168
|
+
logStderr(`PTY exited: code=${exitInfo.exitCode}, signal=${exitInfo.signal ?? null}`);
|
|
140
169
|
// Don't exit immediately — Tower might send a SPAWN frame to restart.
|
|
141
170
|
// The shellper stays alive as long as the socket server is running.
|
|
142
171
|
// If Tower never reconnects, the shellper will be cleaned up by stale
|
|
143
172
|
// socket cleanup on next Tower startup.
|
|
144
173
|
});
|
|
145
174
|
shellper.on('error', (err) => {
|
|
146
|
-
|
|
175
|
+
logStderr(`Shellper error: ${err.message}`);
|
|
147
176
|
});
|
|
148
177
|
}
|
|
149
178
|
main().catch((err) => {
|
|
150
|
-
|
|
179
|
+
logStderr(`Shellper fatal: ${err.message}`);
|
|
151
180
|
process.exit(1);
|
|
152
181
|
});
|
|
153
182
|
//# sourceMappingURL=shellper-main.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shellper-main.js","sourceRoot":"","sources":["../../src/terminal/shellper-main.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAsC,MAAM,uBAAuB,CAAC;AAE5F,+EAA+E;AAC/E,2EAA2E;AAC3E,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"shellper-main.js","sourceRoot":"","sources":["../../src/terminal/shellper-main.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAsC,MAAM,uBAAuB,CAAC;AAE5F,+EAA+E;AAC/E,2EAA2E;AAC3E,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,wFAAwF;AACxF,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,IAAI,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,sEAAsE;QACtE,uEAAuE;QACvE,+DAA+D;QAC/D,IAAI,GAAG,YAAY,KAAK,IAAK,GAA6B,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5E,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;AACH,CAAC;AAaD,SAAS,aAAa;IACpB,IAAI,SAAS,GAAqC,IAAI,CAAC;IACvD,IAAI,WAAW,GAAmC,IAAI,CAAC;IACvD,IAAI,YAAY,GAAoC,IAAI,CAAC;IACzD,IAAI,YAAY,GAAmE,IAAI,CAAC;IAExF,OAAO;QACL,KAAK,CAAC,OAAe,EAAE,IAAc,EAAE,OAAmB;YACxD,2EAA2E;YAC3E,0EAA0E;YAC1E,SAAS,GAAG,OAAO,CAAC,UAAU,CAA8B,CAAC;YAC7D,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;gBAC3C,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,gBAAgB;gBACtC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;aACjB,CAAC,CAAC;YAEH,IAAI,YAAY,EAAE,CAAC;gBACjB,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,YAAY,EAAE,CAAC;gBACjB,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAY;YAChB,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,CAAC,IAAY,EAAE,IAAY;YAC/B,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,MAAe;YAClB,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;gBAC9C,CAAC;gBAAC,MAAM,CAAC;oBACP,uBAAuB;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,CAAC,QAAgC;YACrC,YAAY,GAAG,QAAQ,CAAC;YACxB,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,MAAM,CAAC,QAAmE;YACxE,YAAY,GAAG,QAAQ,CAAC;YACxB,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,GAAG;YACL,OAAO,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAChC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,6DAA6D;IAC7D,uEAAuE;IACvE,2EAA2E;IAC3E,4EAA4E;IAC5E,qDAAqD;IACrD,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;YAC9C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAsD,CAAC,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,MAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAmB,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,uDAAuD;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAE1D,wCAAwC;IACxC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpB,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4BAA4B;IAC9B,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,eAAe,CAClC,aAAa,EACb,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,iBAAiB,IAAI,MAAM,EAClC,SAAS,CACV,CAAC;IAEF,SAAS,CAAC,yBAAyB,OAAO,CAAC,GAAG,aAAa,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAE1G,wDAAwD;IACxD,MAAM,QAAQ,CAAC,KAAK,CAClB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,GAAG,EACV,MAAM,CAAC,GAAG,EACV,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,IAAI,CACZ,CAAC;IAEF,SAAS,CAAC,oBAAoB,QAAQ,CAAC,MAAM,EAAE,UAAU,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7F,SAAS,CAAC,qBAAqB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAEpD,wDAAwD;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS,EAAE,QAAQ,CAAC,YAAY,EAAE;KACnC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;QAC9B,wEAAwE;QACxE,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,SAAS,CAAC,0CAA0C,CAAC,CAAC;QACtD,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,uBAAuB;QACvB,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,QAA+C,EAAE,EAAE;QACtE,SAAS,CAAC,oBAAoB,QAAQ,CAAC,QAAQ,YAAY,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;QACtF,sEAAsE;QACtE,oEAAoE;QACpE,sEAAsE;QACtE,wCAAwC;IAC1C,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QAC3B,SAAS,CAAC,mBAAmB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,SAAS,CAAC,mBAAmB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
* ShellperProcess: the testable core logic of the shellper daemon.
|
|
3
3
|
*
|
|
4
4
|
* Owns a single PTY via the IShellperPty interface (injected for testability).
|
|
5
|
-
* Listens on a Unix socket for
|
|
5
|
+
* Listens on a Unix socket for multiple client connections. Handles the binary
|
|
6
6
|
* wire protocol: HELLO/WELCOME handshake, DATA forwarding, RESIZE, SIGNAL,
|
|
7
7
|
* SPAWN, PING/PONG, and EXIT lifecycle.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Supports multiple simultaneous connections:
|
|
10
|
+
* - Tower connections (clientType: 'tower') can send DATA, RESIZE, SIGNAL, SPAWN
|
|
11
|
+
* - Terminal connections (clientType: 'terminal') can send DATA, RESIZE only
|
|
12
|
+
* - New tower connection replaces any existing tower connection
|
|
13
|
+
* - Terminal connections always coexist
|
|
14
|
+
* - PTY output is broadcast to all connected clients
|
|
11
15
|
*/
|
|
12
16
|
import net from 'node:net';
|
|
13
17
|
import { EventEmitter } from 'node:events';
|
|
@@ -33,27 +37,40 @@ export interface IShellperPty {
|
|
|
33
37
|
export declare class ShellperProcess extends EventEmitter {
|
|
34
38
|
private readonly ptyFactory;
|
|
35
39
|
private readonly socketPath;
|
|
40
|
+
private readonly log;
|
|
36
41
|
private pty;
|
|
37
42
|
private server;
|
|
38
|
-
private
|
|
43
|
+
private connections;
|
|
44
|
+
private pendingSockets;
|
|
45
|
+
private nextConnectionId;
|
|
39
46
|
private replayBuffer;
|
|
40
47
|
private cols;
|
|
41
48
|
private rows;
|
|
42
49
|
private startTime;
|
|
43
50
|
private exited;
|
|
44
|
-
constructor(ptyFactory: () => IShellperPty, socketPath: string, replayBufferLines?: number);
|
|
51
|
+
constructor(ptyFactory: () => IShellperPty, socketPath: string, replayBufferLines?: number, log?: (msg: string) => void);
|
|
45
52
|
/**
|
|
46
53
|
* Start the shellper: spawn the PTY and begin listening on the Unix socket.
|
|
47
54
|
*/
|
|
48
55
|
start(command: string, args: string[], cwd: string, env: Record<string, string>, cols: number, rows: number): Promise<void>;
|
|
49
56
|
private spawnPty;
|
|
57
|
+
/**
|
|
58
|
+
* Broadcast a frame to all connected clients.
|
|
59
|
+
* Connections under backpressure have frames dropped until drained.
|
|
60
|
+
*/
|
|
61
|
+
private broadcast;
|
|
50
62
|
private listen;
|
|
51
63
|
/**
|
|
52
|
-
* Handle an incoming
|
|
53
|
-
*
|
|
64
|
+
* Handle an incoming connection. The socket enters a "pre-HELLO" state
|
|
65
|
+
* where it is tracked but not added to the connection map. Only after
|
|
66
|
+
* a valid HELLO frame is received does it become a full connection.
|
|
54
67
|
*/
|
|
55
68
|
handleConnection(socket: net.Socket): void;
|
|
56
69
|
private handleFrame;
|
|
70
|
+
/**
|
|
71
|
+
* Handle HELLO frame: validate, register connection, send WELCOME + REPLAY.
|
|
72
|
+
* Returns the connection ID on success, or null on failure.
|
|
73
|
+
*/
|
|
57
74
|
private handleHello;
|
|
58
75
|
private handleData;
|
|
59
76
|
private handleResize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shellper-process.d.ts","sourceRoot":"","sources":["../../src/terminal/shellper-process.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shellper-process.d.ts","sourceRoot":"","sources":["../../src/terminal/shellper-process.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyB3C,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IAClE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAClF,GAAG,EAAE,MAAM,CAAC;CACb;AAYD,qBAAa,eAAgB,SAAQ,YAAY;IAa7C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAftB,OAAO,CAAC,GAAG,CAA6B;IACxC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,WAAW,CAA2C;IAC9D,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,MAAM,CAAS;gBAGJ,UAAU,EAAE,MAAM,YAAY,EAC9B,UAAU,EAAE,MAAM,EACnC,iBAAiB,GAAE,MAAe,EACjB,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAe;IAMxD;;OAEG;IACG,KAAK,CACT,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC;IAShB,OAAO,CAAC,QAAQ;IAiDhB;;;OAGG;IACH,OAAO,CAAC,SAAS;IA2BjB,OAAO,CAAC,MAAM;IAwBd;;;;OAIG;IACH,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI;IAqD1C,OAAO,CAAC,WAAW;IA0CnB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAoDnB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,WAAW;IAwBnB,0CAA0C;IAC1C,aAAa,IAAI,MAAM;IAIvB,6CAA6C;IAC7C,YAAY,IAAI,MAAM;IAItB,+BAA+B;IAC/B,MAAM,IAAI,MAAM;IAIhB,4CAA4C;IAC5C,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,QAAQ,IAAI,IAAI;CA4BjB"}
|
|
@@ -2,34 +2,43 @@
|
|
|
2
2
|
* ShellperProcess: the testable core logic of the shellper daemon.
|
|
3
3
|
*
|
|
4
4
|
* Owns a single PTY via the IShellperPty interface (injected for testability).
|
|
5
|
-
* Listens on a Unix socket for
|
|
5
|
+
* Listens on a Unix socket for multiple client connections. Handles the binary
|
|
6
6
|
* wire protocol: HELLO/WELCOME handshake, DATA forwarding, RESIZE, SIGNAL,
|
|
7
7
|
* SPAWN, PING/PONG, and EXIT lifecycle.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
9
|
+
* Supports multiple simultaneous connections:
|
|
10
|
+
* - Tower connections (clientType: 'tower') can send DATA, RESIZE, SIGNAL, SPAWN
|
|
11
|
+
* - Terminal connections (clientType: 'terminal') can send DATA, RESIZE only
|
|
12
|
+
* - New tower connection replaces any existing tower connection
|
|
13
|
+
* - Terminal connections always coexist
|
|
14
|
+
* - PTY output is broadcast to all connected clients
|
|
11
15
|
*/
|
|
12
16
|
import fs from 'node:fs';
|
|
13
17
|
import net from 'node:net';
|
|
14
18
|
import { EventEmitter } from 'node:events';
|
|
15
19
|
import { FrameType, PROTOCOL_VERSION, ALLOWED_SIGNALS, createFrameParser, encodeData, encodeWelcome, encodeExit, encodeReplay, encodePong, parseJsonPayload, isKnownFrameType, } from './shellper-protocol.js';
|
|
16
20
|
import { ShellperReplayBuffer } from './shellper-replay-buffer.js';
|
|
21
|
+
import { DEFAULT_COLS, DEFAULT_ROWS } from './index.js';
|
|
17
22
|
// --- ShellperProcess ---
|
|
18
23
|
export class ShellperProcess extends EventEmitter {
|
|
19
24
|
ptyFactory;
|
|
20
25
|
socketPath;
|
|
26
|
+
log;
|
|
21
27
|
pty = null;
|
|
22
28
|
server = null;
|
|
23
|
-
|
|
29
|
+
connections = new Map();
|
|
30
|
+
pendingSockets = new Set();
|
|
31
|
+
nextConnectionId = 0;
|
|
24
32
|
replayBuffer;
|
|
25
|
-
cols =
|
|
26
|
-
rows =
|
|
33
|
+
cols = DEFAULT_COLS;
|
|
34
|
+
rows = DEFAULT_ROWS;
|
|
27
35
|
startTime = Date.now();
|
|
28
36
|
exited = false;
|
|
29
|
-
constructor(ptyFactory, socketPath, replayBufferLines = 10_000) {
|
|
37
|
+
constructor(ptyFactory, socketPath, replayBufferLines = 10_000, log = () => { }) {
|
|
30
38
|
super();
|
|
31
39
|
this.ptyFactory = ptyFactory;
|
|
32
40
|
this.socketPath = socketPath;
|
|
41
|
+
this.log = log;
|
|
33
42
|
this.replayBuffer = new ShellperReplayBuffer(replayBufferLines);
|
|
34
43
|
}
|
|
35
44
|
/**
|
|
@@ -59,9 +68,7 @@ export class ShellperProcess extends EventEmitter {
|
|
|
59
68
|
return;
|
|
60
69
|
const buf = Buffer.from(data, 'utf-8');
|
|
61
70
|
this.replayBuffer.append(buf);
|
|
62
|
-
|
|
63
|
-
this.currentConnection.write(encodeData(buf));
|
|
64
|
-
}
|
|
71
|
+
this.broadcast(encodeData(buf));
|
|
65
72
|
});
|
|
66
73
|
pty.onExit((exitInfo) => {
|
|
67
74
|
// Guard: ignore exit from a replaced PTY (after SPAWN).
|
|
@@ -69,17 +76,46 @@ export class ShellperProcess extends EventEmitter {
|
|
|
69
76
|
// and send an EXIT frame, corrupting the state of the new PTY.
|
|
70
77
|
if (this.pty !== pty)
|
|
71
78
|
return;
|
|
79
|
+
this.log(`PTY exited: code=${exitInfo.exitCode}, signal=${exitInfo.signal ?? null}`);
|
|
72
80
|
this.exited = true;
|
|
73
81
|
const exitFrame = encodeExit({
|
|
74
82
|
code: exitInfo.exitCode,
|
|
75
83
|
signal: exitInfo.signal != null ? String(exitInfo.signal) : null,
|
|
76
84
|
});
|
|
77
|
-
|
|
78
|
-
this.currentConnection.write(exitFrame);
|
|
79
|
-
}
|
|
85
|
+
this.broadcast(exitFrame);
|
|
80
86
|
this.emit('exit', exitInfo);
|
|
81
87
|
});
|
|
82
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Broadcast a frame to all connected clients.
|
|
91
|
+
* Connections under backpressure have frames dropped until drained.
|
|
92
|
+
*/
|
|
93
|
+
broadcast(frame) {
|
|
94
|
+
for (const [id, entry] of this.connections) {
|
|
95
|
+
if (entry.socket.destroyed) {
|
|
96
|
+
this.connections.delete(id);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (entry.paused) {
|
|
100
|
+
// Connection under backpressure — drop frame.
|
|
101
|
+
// Terminal output is ephemeral; the client will recover
|
|
102
|
+
// when subsequent frames arrive after drain.
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
const ok = entry.socket.write(frame);
|
|
106
|
+
if (ok === false) {
|
|
107
|
+
// Socket buffer above highWaterMark — pause this connection.
|
|
108
|
+
// Data was still queued, but we stop writing until drained.
|
|
109
|
+
entry.paused = true;
|
|
110
|
+
this.log(`Connection ${id} backpressure — pausing writes`);
|
|
111
|
+
entry.socket.once('drain', () => {
|
|
112
|
+
if (this.connections.has(id)) {
|
|
113
|
+
entry.paused = false;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
83
119
|
listen() {
|
|
84
120
|
return new Promise((resolve, reject) => {
|
|
85
121
|
this.server = net.createServer((socket) => {
|
|
@@ -103,43 +139,63 @@ export class ShellperProcess extends EventEmitter {
|
|
|
103
139
|
});
|
|
104
140
|
}
|
|
105
141
|
/**
|
|
106
|
-
* Handle an incoming
|
|
107
|
-
*
|
|
142
|
+
* Handle an incoming connection. The socket enters a "pre-HELLO" state
|
|
143
|
+
* where it is tracked but not added to the connection map. Only after
|
|
144
|
+
* a valid HELLO frame is received does it become a full connection.
|
|
108
145
|
*/
|
|
109
146
|
handleConnection(socket) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
147
|
+
this.log('Connection accepted');
|
|
148
|
+
// Track as pending until HELLO completes
|
|
149
|
+
this.pendingSockets.add(socket);
|
|
150
|
+
let connectionId = null;
|
|
151
|
+
let handshakeComplete = false;
|
|
115
152
|
const parser = createFrameParser();
|
|
116
153
|
socket.pipe(parser);
|
|
117
154
|
parser.on('data', (frame) => {
|
|
118
|
-
|
|
155
|
+
if (!handshakeComplete) {
|
|
156
|
+
// Pre-HELLO: only accept HELLO frames
|
|
157
|
+
if (frame.type === FrameType.HELLO) {
|
|
158
|
+
const result = this.handleHello(socket, frame.payload);
|
|
159
|
+
if (result) {
|
|
160
|
+
connectionId = result;
|
|
161
|
+
handshakeComplete = true;
|
|
162
|
+
this.pendingSockets.delete(socket);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// All other frames before HELLO are silently ignored
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
// Post-handshake: dispatch frames with connection context
|
|
169
|
+
this.handleFrame(socket, connectionId, frame);
|
|
119
170
|
});
|
|
120
171
|
parser.on('error', (err) => {
|
|
172
|
+
this.log(`Protocol error: ${err.message}`);
|
|
121
173
|
this.emit('protocol-error', err);
|
|
122
174
|
socket.destroy();
|
|
123
175
|
});
|
|
124
176
|
socket.on('close', () => {
|
|
125
|
-
|
|
126
|
-
|
|
177
|
+
this.pendingSockets.delete(socket);
|
|
178
|
+
if (connectionId && this.connections.has(connectionId)) {
|
|
179
|
+
this.connections.delete(connectionId);
|
|
180
|
+
this.log(`Connection ${connectionId} closed`);
|
|
127
181
|
}
|
|
128
182
|
});
|
|
129
183
|
socket.on('error', () => {
|
|
130
|
-
|
|
131
|
-
|
|
184
|
+
this.pendingSockets.delete(socket);
|
|
185
|
+
if (connectionId && this.connections.has(connectionId)) {
|
|
186
|
+
this.connections.delete(connectionId);
|
|
132
187
|
}
|
|
133
188
|
});
|
|
134
189
|
}
|
|
135
|
-
handleFrame(socket, frame) {
|
|
190
|
+
handleFrame(socket, connId, frame) {
|
|
136
191
|
if (!isKnownFrameType(frame.type)) {
|
|
137
192
|
// Unknown frame types are silently ignored (forward compatibility)
|
|
138
193
|
return;
|
|
139
194
|
}
|
|
195
|
+
const entry = this.connections.get(connId);
|
|
140
196
|
switch (frame.type) {
|
|
141
197
|
case FrameType.HELLO:
|
|
142
|
-
|
|
198
|
+
// Duplicate HELLO after handshake — ignore
|
|
143
199
|
break;
|
|
144
200
|
case FrameType.DATA:
|
|
145
201
|
this.handleData(frame.payload);
|
|
@@ -148,10 +204,16 @@ export class ShellperProcess extends EventEmitter {
|
|
|
148
204
|
this.handleResize(socket, frame.payload);
|
|
149
205
|
break;
|
|
150
206
|
case FrameType.SIGNAL:
|
|
151
|
-
|
|
207
|
+
// Tower-only: terminal connections silently ignored
|
|
208
|
+
if (entry?.clientType === 'tower') {
|
|
209
|
+
this.handleSignal(socket, frame.payload);
|
|
210
|
+
}
|
|
152
211
|
break;
|
|
153
212
|
case FrameType.SPAWN:
|
|
154
|
-
|
|
213
|
+
// Tower-only: terminal connections silently ignored
|
|
214
|
+
if (entry?.clientType === 'tower') {
|
|
215
|
+
this.handleSpawn(socket, frame.payload);
|
|
216
|
+
}
|
|
155
217
|
break;
|
|
156
218
|
case FrameType.PING:
|
|
157
219
|
socket.write(encodePong());
|
|
@@ -159,35 +221,60 @@ export class ShellperProcess extends EventEmitter {
|
|
|
159
221
|
case FrameType.PONG:
|
|
160
222
|
// No-op: keepalive acknowledgement
|
|
161
223
|
break;
|
|
162
|
-
// Shellper doesn't expect REPLAY, EXIT, WELCOME from
|
|
224
|
+
// Shellper doesn't expect REPLAY, EXIT, WELCOME from clients
|
|
163
225
|
default:
|
|
164
226
|
break;
|
|
165
227
|
}
|
|
166
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* Handle HELLO frame: validate, register connection, send WELCOME + REPLAY.
|
|
231
|
+
* Returns the connection ID on success, or null on failure.
|
|
232
|
+
*/
|
|
167
233
|
handleHello(socket, payload) {
|
|
234
|
+
let hello;
|
|
168
235
|
try {
|
|
169
|
-
|
|
236
|
+
hello = parseJsonPayload(payload);
|
|
237
|
+
const clientType = hello.clientType || 'tower'; // Default to tower for backward compat
|
|
238
|
+
this.log(`HELLO: version=${hello.version}, clientType=${clientType}`);
|
|
170
239
|
this.emit('hello', hello);
|
|
171
240
|
}
|
|
172
241
|
catch {
|
|
242
|
+
this.log('Protocol error: Invalid HELLO payload');
|
|
173
243
|
this.emit('protocol-error', new Error('Invalid HELLO payload'));
|
|
174
244
|
socket.destroy();
|
|
175
|
-
return;
|
|
245
|
+
return null;
|
|
176
246
|
}
|
|
247
|
+
const clientType = hello.clientType || 'tower';
|
|
248
|
+
// Tower replacement: destroy any existing tower connection
|
|
249
|
+
if (clientType === 'tower') {
|
|
250
|
+
for (const [id, entry] of this.connections) {
|
|
251
|
+
if (entry.clientType === 'tower') {
|
|
252
|
+
this.log(`Replacing existing tower connection ${id}`);
|
|
253
|
+
entry.socket.destroy();
|
|
254
|
+
this.connections.delete(id);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// Register this connection
|
|
259
|
+
const connectionId = String(this.nextConnectionId++);
|
|
260
|
+
this.connections.set(connectionId, { socket, clientType, paused: false });
|
|
177
261
|
// Send WELCOME response
|
|
262
|
+
const pid = this.pty?.pid ?? -1;
|
|
178
263
|
const welcome = encodeWelcome({
|
|
179
264
|
version: PROTOCOL_VERSION,
|
|
180
|
-
pid
|
|
265
|
+
pid,
|
|
181
266
|
cols: this.cols,
|
|
182
267
|
rows: this.rows,
|
|
183
268
|
startTime: this.startTime,
|
|
184
269
|
});
|
|
185
270
|
socket.write(welcome);
|
|
271
|
+
this.log(`WELCOME sent: pid=${pid}, version=${PROTOCOL_VERSION}`);
|
|
186
272
|
// Send replay buffer
|
|
187
273
|
const replayData = this.replayBuffer.getReplayData();
|
|
188
274
|
if (replayData.length > 0) {
|
|
189
275
|
socket.write(encodeReplay(replayData));
|
|
190
276
|
}
|
|
277
|
+
return connectionId;
|
|
191
278
|
}
|
|
192
279
|
handleData(payload) {
|
|
193
280
|
if (this.pty && !this.exited) {
|
|
@@ -204,6 +291,7 @@ export class ShellperProcess extends EventEmitter {
|
|
|
204
291
|
}
|
|
205
292
|
}
|
|
206
293
|
catch {
|
|
294
|
+
this.log('Protocol error: Invalid RESIZE payload');
|
|
207
295
|
this.emit('protocol-error', new Error('Invalid RESIZE payload'));
|
|
208
296
|
socket.destroy();
|
|
209
297
|
}
|
|
@@ -212,6 +300,7 @@ export class ShellperProcess extends EventEmitter {
|
|
|
212
300
|
try {
|
|
213
301
|
const msg = parseJsonPayload(payload);
|
|
214
302
|
if (!ALLOWED_SIGNALS.has(msg.signal)) {
|
|
303
|
+
this.log(`Protocol error: Signal ${msg.signal} not in allowlist`);
|
|
215
304
|
this.emit('protocol-error', new Error(`Signal ${msg.signal} not in allowlist`));
|
|
216
305
|
return;
|
|
217
306
|
}
|
|
@@ -220,6 +309,7 @@ export class ShellperProcess extends EventEmitter {
|
|
|
220
309
|
}
|
|
221
310
|
}
|
|
222
311
|
catch {
|
|
312
|
+
this.log('Protocol error: Invalid SIGNAL payload');
|
|
223
313
|
this.emit('protocol-error', new Error('Invalid SIGNAL payload'));
|
|
224
314
|
socket.destroy();
|
|
225
315
|
}
|
|
@@ -227,6 +317,8 @@ export class ShellperProcess extends EventEmitter {
|
|
|
227
317
|
handleSpawn(socket, payload) {
|
|
228
318
|
try {
|
|
229
319
|
const msg = parseJsonPayload(payload);
|
|
320
|
+
const oldPid = this.pty?.pid ?? -1;
|
|
321
|
+
this.log(`SPAWN: command=${msg.command}, killing old PTY pid=${oldPid}`);
|
|
230
322
|
// Kill old PTY if still alive
|
|
231
323
|
if (this.pty && !this.exited) {
|
|
232
324
|
this.pty.kill(15); // SIGTERM
|
|
@@ -238,6 +330,7 @@ export class ShellperProcess extends EventEmitter {
|
|
|
238
330
|
this.emit('spawn', msg);
|
|
239
331
|
}
|
|
240
332
|
catch {
|
|
333
|
+
this.log('Protocol error: Invalid SPAWN payload');
|
|
241
334
|
this.emit('protocol-error', new Error('Invalid SPAWN payload'));
|
|
242
335
|
socket.destroy();
|
|
243
336
|
}
|
|
@@ -265,10 +358,20 @@ export class ShellperProcess extends EventEmitter {
|
|
|
265
358
|
if (this.pty && !this.exited) {
|
|
266
359
|
this.pty.kill(15); // SIGTERM
|
|
267
360
|
}
|
|
268
|
-
|
|
269
|
-
|
|
361
|
+
// Destroy all active connections
|
|
362
|
+
for (const [, entry] of this.connections) {
|
|
363
|
+
if (!entry.socket.destroyed) {
|
|
364
|
+
entry.socket.destroy();
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
this.connections.clear();
|
|
368
|
+
// Destroy any pre-HELLO pending sockets
|
|
369
|
+
for (const socket of this.pendingSockets) {
|
|
370
|
+
if (!socket.destroyed) {
|
|
371
|
+
socket.destroy();
|
|
372
|
+
}
|
|
270
373
|
}
|
|
271
|
-
this.
|
|
374
|
+
this.pendingSockets.clear();
|
|
272
375
|
if (this.server) {
|
|
273
376
|
this.server.close();
|
|
274
377
|
this.server = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shellper-process.js","sourceRoot":"","sources":["../../src/terminal/shellper-process.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,gBAAgB,GAOjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAsBnE,0BAA0B;AAE1B,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAW5B;IACA;IAXX,GAAG,GAAwB,IAAI,CAAC;IAChC,MAAM,GAAsB,IAAI,CAAC;IACjC,iBAAiB,GAAsB,IAAI,CAAC;IAC5C,YAAY,CAAuB;IACnC,IAAI,GAAG,EAAE,CAAC;IACV,IAAI,GAAG,EAAE,CAAC;IACV,SAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,GAAG,KAAK,CAAC;IAEvB,YACmB,UAA8B,EAC9B,UAAkB,EACnC,oBAA4B,MAAM;QAElC,KAAK,EAAE,CAAC;QAJS,eAAU,GAAV,UAAU,CAAoB;QAC9B,eAAU,GAAV,UAAU,CAAQ;QAInC,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CACT,OAAe,EACf,IAAc,EACd,GAAW,EACX,GAA2B,EAC3B,IAAY,EACZ,IAAY;QAEZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE5B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;IAEO,QAAQ,CACd,OAAe,EACf,IAAc,EACd,GAAW,EACX,GAA2B,EAC3B,IAAY,EACZ,IAAY;QAEZ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YACvB,IAAI,EAAE,gBAAgB;YACtB,IAAI;YACJ,IAAI;YACJ,GAAG;YACH,GAAG;SACJ,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;YAC1B,uDAAuD;YACvD,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG;gBAAE,OAAO;YAE7B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE9B,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;gBAChE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;YACtB,wDAAwD;YACxD,gEAAgE;YAChE,+DAA+D;YAC/D,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG;gBAAE,OAAO;YAE7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,MAAM,SAAS,GAAG,UAAU,CAAC;gBAC3B,IAAI,EAAE,QAAQ,CAAC,QAAQ;gBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;aACjE,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;gBAChE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM;QACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE;gBACxC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE;gBACvC,+DAA+D;gBAC/D,2EAA2E;gBAC3E,IAAI,CAAC;oBACH,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBACvC,CAAC;gBAAC,MAAM,CAAC;oBACP,+DAA+D;gBACjE,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,MAAkB;QACjC,mCAAmC;QACnC,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;YAChE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAEhC,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;QAEnC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAkB,EAAE,EAAE;YACvC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;YACjC,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM,EAAE,CAAC;gBACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM,EAAE,CAAC;gBACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAChC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,MAAkB,EAAE,KAAkB;QACxD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,mEAAmE;YACnE,OAAO;QACT,CAAC;QAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,KAAK;gBAClB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,SAAS,CAAC,IAAI;gBACjB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,SAAS,CAAC,MAAM;gBACnB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,SAAS,CAAC,MAAM;gBACnB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,SAAS,CAAC,KAAK;gBAClB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,SAAS,CAAC,IAAI;gBACjB,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC3B,MAAM;YACR,KAAK,SAAS,CAAC,IAAI;gBACjB,mCAAmC;gBACnC,MAAM;YACR,2DAA2D;YAC3D;gBACE,MAAM;QACV,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,MAAkB,EAAE,OAAe;QACrD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,gBAAgB,CAAe,OAAO,CAAC,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,MAAM,OAAO,GAAG,aAAa,CAAC;YAC5B,OAAO,EAAE,gBAAgB;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEtB,qBAAqB;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QACrD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,OAAe;QAChC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAkB,EAAE,OAAe;QACtD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,gBAAgB,CAAgB,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAkB,EAAE,OAAe;QACtD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,gBAAgB,CAAgB,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,MAAM,mBAAmB,CAAC,CAAC,CAAC;gBAChF,OAAO;YACT,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,MAAkB,EAAE,OAAe;QACrD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,gBAAgB,CAAe,OAAO,CAAC,CAAC;YAEpD,8BAA8B;YAC9B,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;YAC/B,CAAC;YAED,wCAAwC;YACxC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAE1B,gBAAgB;YAChB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7E,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,aAAa;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED,6CAA6C;IAC7C,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,+BAA+B;IAC/B,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,4CAA4C;IAC5C,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QAC/B,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;YAChE,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAE9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"shellper-process.js","sourceRoot":"","sources":["../../src/terminal/shellper-process.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shellper-protocol.d.ts","sourceRoot":"","sources":["../../src/terminal/shellper-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhE,eAAO,MAAM,SAAS;;;;;;;;;;;CAWZ,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAIxE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,cAAc,QAAmB,CAAC;AAC/C,eAAO,MAAM,WAAW,IAAI,CAAC;AAI7B,eAAO,MAAM,eAAe,aAM1B,CAAC;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"shellper-protocol.d.ts","sourceRoot":"","sources":["../../src/terminal/shellper-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shellper-protocol.js","sourceRoot":"","sources":["../../src/terminal/shellper-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAA0B,MAAM,aAAa,CAAC;AAEhE,sBAAsB;AAEtB,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;CACH,CAAC;AAIX,6BAA6B;AAE7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AACvD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,+BAA+B;AAE7D,0BAA0B;AAE1B,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IACrC,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,UAAU;IACb,EAAE,EAAE,UAAU;IACd,EAAE,EAAE,WAAW;CAChB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"shellper-protocol.js","sourceRoot":"","sources":["../../src/terminal/shellper-protocol.ts"],"names":[],"mappings":"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"}
|