@kdonev/termscape 0.1.0 → 0.1.2
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/README.md +211 -79
- package/dist/agents/detect.d.ts +27 -0
- package/dist/agents/detect.d.ts.map +1 -0
- package/dist/agents/detect.js +210 -0
- package/dist/agents/detect.js.map +1 -0
- package/dist/agents/profiles.d.ts +119 -2
- package/dist/agents/profiles.d.ts.map +1 -1
- package/dist/agents/profiles.js +224 -4
- package/dist/agents/profiles.js.map +1 -1
- package/dist/agents/templates.d.ts +100 -0
- package/dist/agents/templates.d.ts.map +1 -0
- package/dist/agents/templates.js +165 -0
- package/dist/agents/templates.js.map +1 -0
- package/dist/agents/wiring.d.ts +30 -1
- package/dist/agents/wiring.d.ts.map +1 -1
- package/dist/agents/wiring.js +182 -10
- package/dist/agents/wiring.js.map +1 -1
- package/dist/cli.js +51 -14
- package/dist/cli.js.map +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +73 -0
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/store.d.ts +53 -1
- package/dist/db/store.d.ts.map +1 -1
- package/dist/db/store.js +118 -5
- package/dist/db/store.js.map +1 -1
- package/dist/hub.d.ts +264 -6
- package/dist/hub.d.ts.map +1 -1
- package/dist/hub.js +549 -33
- package/dist/hub.js.map +1 -1
- package/dist/hub.tgz +0 -0
- package/dist/mcp/server.d.ts +3 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +27 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/protocol/domain.d.ts +88 -0
- package/dist/protocol/domain.d.ts.map +1 -1
- package/dist/protocol/domain.js +114 -0
- package/dist/protocol/domain.js.map +1 -1
- package/dist/protocol/mcp-tools.d.ts +43 -0
- package/dist/protocol/mcp-tools.d.ts.map +1 -1
- package/dist/protocol/mcp-tools.js +65 -0
- package/dist/protocol/mcp-tools.js.map +1 -1
- package/dist/protocol/peer.d.ts +38 -1
- package/dist/protocol/peer.d.ts.map +1 -1
- package/dist/protocol/peer.js +41 -2
- package/dist/protocol/peer.js.map +1 -1
- package/dist/protocol/ws.d.ts +259 -0
- package/dist/protocol/ws.d.ts.map +1 -1
- package/dist/protocol/ws.js +169 -5
- package/dist/protocol/ws.js.map +1 -1
- package/dist/remote/deployer.d.ts.map +1 -1
- package/dist/remote/deployer.js +15 -2
- package/dist/remote/deployer.js.map +1 -1
- package/dist/remote/join-script.d.ts.map +1 -1
- package/dist/remote/join-script.js +34 -2
- package/dist/remote/join-script.js.map +1 -1
- package/dist/remote/lan.d.ts +73 -5
- package/dist/remote/lan.d.ts.map +1 -1
- package/dist/remote/lan.js +119 -10
- package/dist/remote/lan.js.map +1 -1
- package/dist/remote/peer-serve.d.ts.map +1 -1
- package/dist/remote/peer-serve.js +32 -3
- package/dist/remote/peer-serve.js.map +1 -1
- package/dist/remote/peer.d.ts +7 -0
- package/dist/remote/peer.d.ts.map +1 -1
- package/dist/remote/peer.js +22 -0
- package/dist/remote/peer.js.map +1 -1
- package/dist/remote/registry.d.ts +70 -2
- package/dist/remote/registry.d.ts.map +1 -1
- package/dist/remote/registry.js +134 -10
- package/dist/remote/registry.js.map +1 -1
- package/dist/server.d.ts +22 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +239 -117
- package/dist/server.js.map +1 -1
- package/dist/session/manager.d.ts +60 -4
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +198 -41
- package/dist/session/manager.js.map +1 -1
- package/dist/session/pty.d.ts +19 -0
- package/dist/session/pty.d.ts.map +1 -1
- package/dist/session/pty.js +84 -1
- package/dist/session/pty.js.map +1 -1
- package/package.json +1 -1
- package/web/assets/{index-BOqZOoep.js → index-9Z_8xZqk.js} +10 -6
- package/web/assets/index-DheUm5dl.css +1 -0
- package/web/index.html +2 -2
- package/web/assets/index-B2JtCtHa.css +0 -1
package/dist/session/manager.js
CHANGED
|
@@ -3,7 +3,7 @@ import { randomUUID } from 'node:crypto';
|
|
|
3
3
|
import { existsSync } from 'node:fs';
|
|
4
4
|
import { makeAddress, uniqueName, } from '../protocol/index.js';
|
|
5
5
|
import { DEFAULT_WINDOW } from '../db/store.js';
|
|
6
|
-
import { template, templateAll } from '../agents/profiles.js';
|
|
6
|
+
import { briefMode, template, templateAll, } from '../agents/profiles.js';
|
|
7
7
|
import { resolveCommand } from '../agents/resolve.js';
|
|
8
8
|
import { writeWiring } from '../agents/wiring.js';
|
|
9
9
|
import { PtySession } from './pty.js';
|
|
@@ -17,6 +17,108 @@ const SNAPSHOT_DEBOUNCE_MS = 5_000;
|
|
|
17
17
|
const TITLE_COALESCE_MS = 250;
|
|
18
18
|
/** Debounce for persisting window geometry while a window is being dragged. */
|
|
19
19
|
export const LAYOUT_DEBOUNCE_MS = 250;
|
|
20
|
+
/** Breathing room kept between neighbouring windows. */
|
|
21
|
+
const WINDOW_GAP = 40;
|
|
22
|
+
/** Bounding box of world rects, or null for an empty list. */
|
|
23
|
+
function bounds(rects) {
|
|
24
|
+
if (rects.length === 0)
|
|
25
|
+
return null;
|
|
26
|
+
const x = Math.min(...rects.map((r) => r.x));
|
|
27
|
+
const y = Math.min(...rects.map((r) => r.y));
|
|
28
|
+
return {
|
|
29
|
+
x,
|
|
30
|
+
y,
|
|
31
|
+
w: Math.max(...rects.map((r) => r.x + r.w)) - x,
|
|
32
|
+
h: Math.max(...rects.map((r) => r.y + r.h)) - y,
|
|
33
|
+
z: 0,
|
|
34
|
+
collapsed: false,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Where a new window goes, given what is already on the canvas.
|
|
39
|
+
*
|
|
40
|
+
* The anchor choice is the "near" in the promise this makes: below-right of
|
|
41
|
+
* the parent when it was spawned by an agent, otherwise in the first clear
|
|
42
|
+
* slot of a 3-wide lattice laid over its own workspace's dense part — or, when
|
|
43
|
+
* that workspace is still empty, beside the rightmost group already on the
|
|
44
|
+
* canvas rather than at the origin, where it would sit on top of the first
|
|
45
|
+
* workspace's windows. Candidates are checked against every occupied rect —
|
|
46
|
+
* the caller folds peer windows in, because those share the canvas too — so a
|
|
47
|
+
* window the user dragged across the grid no longer silently receives the
|
|
48
|
+
* next "free" slot, and a second child of the same parent no longer stacks
|
|
49
|
+
* exactly on the first.
|
|
50
|
+
*/
|
|
51
|
+
export function choosePlacement(opts) {
|
|
52
|
+
const { workspaceId, parentId, sessions } = opts;
|
|
53
|
+
const siblings = sessions.filter((s) => s.workspaceId === workspaceId);
|
|
54
|
+
const parent = parentId ? (sessions.find((s) => s.id === parentId) ?? null) : null;
|
|
55
|
+
const occupied = [
|
|
56
|
+
...sessions.map((s) => s.window),
|
|
57
|
+
...(opts.extraOccupied ?? []),
|
|
58
|
+
];
|
|
59
|
+
const pitchX = DEFAULT_WINDOW.w + WINDOW_GAP;
|
|
60
|
+
const pitchY = DEFAULT_WINDOW.h + WINDOW_GAP;
|
|
61
|
+
const overlaps = (r) => occupied.some((o) => r.x < o.x + o.w && o.x < r.x + r.w && r.y < o.y + o.h && o.y < r.y + r.h);
|
|
62
|
+
const anchor = (() => {
|
|
63
|
+
if (parent) {
|
|
64
|
+
return {
|
|
65
|
+
x: parent.window.x + 60,
|
|
66
|
+
y: parent.window.y + parent.window.h + WINDOW_GAP,
|
|
67
|
+
z: parent.window.z + 1,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (siblings.length > 0) {
|
|
71
|
+
// The left edge of the group's dense part, by order statistics rather
|
|
72
|
+
// than the bounding box: one window parked far away must not drag every
|
|
73
|
+
// later placement past it, and a lower quantile keeps the lattice
|
|
74
|
+
// left-aligned with where the group actually lives.
|
|
75
|
+
const q = Math.floor((siblings.length - 1) / 4);
|
|
76
|
+
const xs = siblings.map((s) => s.window.x).sort((a, b) => a - b);
|
|
77
|
+
const ys = siblings.map((s) => s.window.y).sort((a, b) => a - b);
|
|
78
|
+
return { x: xs[q], y: ys[q], z: siblings.length };
|
|
79
|
+
}
|
|
80
|
+
// An empty workspace: group the rest of the canvas by workspace and go
|
|
81
|
+
// beside the rightmost group, so the new workspace extends the row
|
|
82
|
+
// instead of landing on top of the first one.
|
|
83
|
+
const groups = new Map();
|
|
84
|
+
for (const s of sessions) {
|
|
85
|
+
const rects = groups.get(s.workspaceId) ?? [];
|
|
86
|
+
rects.push(s.window);
|
|
87
|
+
groups.set(s.workspaceId, rects);
|
|
88
|
+
}
|
|
89
|
+
let rightmost = null;
|
|
90
|
+
for (const rects of groups.values()) {
|
|
91
|
+
const b = bounds(rects);
|
|
92
|
+
if (!rightmost || b.x + b.w > rightmost.x + rightmost.w)
|
|
93
|
+
rightmost = b;
|
|
94
|
+
}
|
|
95
|
+
return rightmost
|
|
96
|
+
? { x: rightmost.x + rightmost.w + WINDOW_GAP, y: rightmost.y, z: 0 }
|
|
97
|
+
: { x: 0, y: 0, z: 0 };
|
|
98
|
+
})();
|
|
99
|
+
// Lattice scan: three columns wide, wrapping to a fresh row below every
|
|
100
|
+
// third step, until a slot overlaps nothing. The wrap is what keeps a
|
|
101
|
+
// workspace a block that grows downward instead of an unbounded single
|
|
102
|
+
// line, and keeps a spawn cascade a block rather than a diagonal. Bounded
|
|
103
|
+
// so the scan always terminates; each occupied window can only ever block
|
|
104
|
+
// a handful of candidates, so the bound is never reached in practice.
|
|
105
|
+
const steps = (occupied.length + 1) * 3;
|
|
106
|
+
for (let step = 0; step <= steps; step++) {
|
|
107
|
+
const col = step % 3;
|
|
108
|
+
const row = Math.floor(step / 3);
|
|
109
|
+
const r = {
|
|
110
|
+
...DEFAULT_WINDOW,
|
|
111
|
+
x: anchor.x + col * pitchX,
|
|
112
|
+
y: anchor.y + row * pitchY,
|
|
113
|
+
z: anchor.z,
|
|
114
|
+
};
|
|
115
|
+
if (!overlaps(r))
|
|
116
|
+
return r;
|
|
117
|
+
}
|
|
118
|
+
// Exhausted only on a canvas packed far beyond what the step bound allows;
|
|
119
|
+
// returning the anchor at least keeps the window near its group.
|
|
120
|
+
return { ...DEFAULT_WINDOW, x: anchor.x, y: anchor.y, z: anchor.z };
|
|
121
|
+
}
|
|
20
122
|
/**
|
|
21
123
|
* Owns every PTY on this hub, plus the persistence of their state.
|
|
22
124
|
*
|
|
@@ -32,9 +134,25 @@ export class SessionManager extends EventEmitter {
|
|
|
32
134
|
live = new Map();
|
|
33
135
|
snapshotTimers = new Map();
|
|
34
136
|
layoutTimers = new Map();
|
|
137
|
+
/**
|
|
138
|
+
* Rects a client has moved but the debounce has not written yet.
|
|
139
|
+
*
|
|
140
|
+
* Sessions are read back out of SQLite on every emit, so without this a
|
|
141
|
+
* broadcast triggered by anything else — a title the agent rewrote, a
|
|
142
|
+
* status flip — would carry the rect from before the drag and snap the
|
|
143
|
+
* window back under the cursor. The move is authoritative the moment it
|
|
144
|
+
* arrives; the debounce only defers the write, not the truth.
|
|
145
|
+
*/
|
|
146
|
+
pendingWindows = new Map();
|
|
35
147
|
/** Latest title per session, waiting for the coalescing window to close. */
|
|
36
148
|
pendingTitles = new Map();
|
|
37
149
|
titleTimer = null;
|
|
150
|
+
/**
|
|
151
|
+
* Windows that share this canvas but are not local sessions — a peer's are.
|
|
152
|
+
* The manager cannot see the peer registry, so the hub hands it this view;
|
|
153
|
+
* placement checks it, because "never on top of anything" means anything.
|
|
154
|
+
*/
|
|
155
|
+
remoteWindows = () => [];
|
|
38
156
|
constructor(store, profiles, tokens, hubOrigin) {
|
|
39
157
|
super();
|
|
40
158
|
this.store = store;
|
|
@@ -59,17 +177,19 @@ export class SessionManager extends EventEmitter {
|
|
|
59
177
|
}
|
|
60
178
|
/** Overlay live runtime status onto the persisted row. */
|
|
61
179
|
decorate(s) {
|
|
180
|
+
const pendingWindow = this.pendingWindows.get(s.id);
|
|
181
|
+
const base = pendingWindow ? { ...s, window: pendingWindow } : s;
|
|
62
182
|
const p = this.live.get(s.id);
|
|
63
183
|
if (!p)
|
|
64
|
-
return
|
|
65
|
-
return { ...
|
|
184
|
+
return base;
|
|
185
|
+
return { ...base, status: p.status, pid: p.pid, cols: p.cols, rows: p.rows };
|
|
66
186
|
}
|
|
67
187
|
pty(id) {
|
|
68
188
|
return this.live.get(id) ?? null;
|
|
69
189
|
}
|
|
70
190
|
/* -------------------------------------------------------------- launch */
|
|
71
191
|
/** Build the resolved argv/env for a launch. `resume` swaps in --resume. */
|
|
72
|
-
buildSpec(session, workspaceName, profile, peers, resume) {
|
|
192
|
+
buildSpec(session, workspaceName, profile, peers, resume, templateEnv = {}) {
|
|
73
193
|
const token = this.tokens.mint(session.id);
|
|
74
194
|
let vars = {
|
|
75
195
|
address: session.address,
|
|
@@ -77,8 +197,15 @@ export class SessionManager extends EventEmitter {
|
|
|
77
197
|
cwd: session.cwd,
|
|
78
198
|
session_uuid: session.agentSessionUuid ?? '',
|
|
79
199
|
default_shell: profile.command,
|
|
200
|
+
model: session.model ?? '',
|
|
201
|
+
effort: session.effort ?? '',
|
|
80
202
|
};
|
|
81
|
-
|
|
203
|
+
/*
|
|
204
|
+
* Wiring is generated for a wired agent, and also for an unwired one that
|
|
205
|
+
* still gets a brief - the gate used to be `mcp` alone, which is how an
|
|
206
|
+
* agent that could be messaged ended up never being told so.
|
|
207
|
+
*/
|
|
208
|
+
if (profile.mcp || briefMode(profile) !== 'none') {
|
|
82
209
|
const w = writeWiring({
|
|
83
210
|
sessionId: session.id,
|
|
84
211
|
address: session.address,
|
|
@@ -91,19 +218,59 @@ export class SessionManager extends EventEmitter {
|
|
|
91
218
|
});
|
|
92
219
|
vars = {
|
|
93
220
|
...vars,
|
|
221
|
+
brief_path: w.briefPath,
|
|
94
222
|
mcp_config_path: w.mcpConfigPath,
|
|
95
223
|
settings_path: w.settingsPath,
|
|
96
|
-
|
|
224
|
+
gemini_settings_path: w.geminiSettingsPath,
|
|
225
|
+
opencode_config: w.opencodeConfig,
|
|
226
|
+
mcp_url: `${this.hubOrigin}/mcp`,
|
|
227
|
+
/*
|
|
228
|
+
* Only ever expanded into a profile's `env`, never its `args`. A CLI
|
|
229
|
+
* that wants the token on the command line would be putting it where
|
|
230
|
+
* any other user on the machine can read it out of a process listing,
|
|
231
|
+
* so the ones that take a bearer token are pointed at the environment
|
|
232
|
+
* instead - which is exactly what Codex's `bearer_token_env_var` is
|
|
233
|
+
* for.
|
|
234
|
+
*/
|
|
235
|
+
token,
|
|
97
236
|
};
|
|
98
237
|
}
|
|
99
|
-
|
|
238
|
+
/*
|
|
239
|
+
* The model and effort fragments are appended, and a fragment for a value
|
|
240
|
+
* the session does not have disappears entirely rather than expanding to
|
|
241
|
+
* an empty string - `--model ''` is not the same request as no --model at
|
|
242
|
+
* all, and the CLIs treat it as an error.
|
|
243
|
+
*
|
|
244
|
+
* Appending is also what makes resume keep them: resume swaps the base
|
|
245
|
+
* args for resumeArgs and these ride along either way, so an agent comes
|
|
246
|
+
* back on the model it left with. That is the whole reason the values are
|
|
247
|
+
* on the session row rather than read from the template, which may have
|
|
248
|
+
* been edited since.
|
|
249
|
+
*/
|
|
250
|
+
const base = resume && profile.resumeArgs ? profile.resumeArgs : profile.args;
|
|
251
|
+
const argTemplate = [
|
|
252
|
+
...base,
|
|
253
|
+
...(session.model && profile.modelArgs ? profile.modelArgs : []),
|
|
254
|
+
...(session.effort && profile.effortArgs ? profile.effortArgs : []),
|
|
255
|
+
];
|
|
100
256
|
// Resolve to an absolute path here rather than at spawn time, so the
|
|
101
257
|
// stored argv is exactly what will be run and a missing CLI is reported
|
|
102
258
|
// as a clear error instead of node-pty's bare "File not found:".
|
|
103
259
|
const { argv } = resolveCommand(template(profile.command, vars), templateAll(argTemplate, vars));
|
|
104
260
|
return {
|
|
105
261
|
argv,
|
|
106
|
-
env:
|
|
262
|
+
env: {
|
|
263
|
+
...Object.fromEntries(Object.entries(profile.env).map(([k, v]) => [k, templateAll([v], vars)[0]])),
|
|
264
|
+
/*
|
|
265
|
+
* The template's own environment wins over the profile's. The profile
|
|
266
|
+
* is the recipe for launching a CLI and the template is what a person
|
|
267
|
+
* chose for this one launch, so on the rare name they both set, the
|
|
268
|
+
* chosen value is the one that was meant. Not expanded: a template
|
|
269
|
+
* holds values, and `{{token}}` in one is a literal, not a way to hand
|
|
270
|
+
* the hub's bearer token to something else.
|
|
271
|
+
*/
|
|
272
|
+
...templateEnv,
|
|
273
|
+
},
|
|
107
274
|
};
|
|
108
275
|
}
|
|
109
276
|
peersOf(workspaceId, exceptId) {
|
|
@@ -117,7 +284,7 @@ export class SessionManager extends EventEmitter {
|
|
|
117
284
|
throw new Error(`unknown workspace ${opts.workspaceId}`);
|
|
118
285
|
const profile = this.profiles.require(opts.profileId);
|
|
119
286
|
const name = uniqueName(opts.name ?? opts.profileId, this.store.namesInWorkspace(ws.id));
|
|
120
|
-
const id = randomUUID();
|
|
287
|
+
const id = opts.id ?? randomUUID();
|
|
121
288
|
const cwd = opts.cwd ?? ws.rootPath;
|
|
122
289
|
if (!existsSync(cwd))
|
|
123
290
|
throw new Error(`working directory does not exist: ${cwd}`);
|
|
@@ -128,6 +295,9 @@ export class SessionManager extends EventEmitter {
|
|
|
128
295
|
name,
|
|
129
296
|
address: makeAddress(ws.name, name),
|
|
130
297
|
profile: profile.id,
|
|
298
|
+
template: opts.template ?? null,
|
|
299
|
+
model: opts.model ?? null,
|
|
300
|
+
effort: opts.effort ?? null,
|
|
131
301
|
cwd,
|
|
132
302
|
// Claude Code keys its conversation store by cwd + this uuid; holding on
|
|
133
303
|
// to it is what makes --resume possible after a restart.
|
|
@@ -147,8 +317,9 @@ export class SessionManager extends EventEmitter {
|
|
|
147
317
|
lastActiveAt: now,
|
|
148
318
|
window: opts.window ?? this.placeWindow(ws.id, opts.spawnedBy ?? null),
|
|
149
319
|
};
|
|
150
|
-
const
|
|
151
|
-
this.
|
|
320
|
+
const templateEnv = opts.env ?? {};
|
|
321
|
+
const spec = this.buildSpec(session, ws.name, profile, this.peersOf(ws.id), false, templateEnv);
|
|
322
|
+
this.store.insertSession(session, spec, templateEnv);
|
|
152
323
|
this.spawn(session, spec, profile);
|
|
153
324
|
return this.get(id);
|
|
154
325
|
}
|
|
@@ -165,7 +336,7 @@ export class SessionManager extends EventEmitter {
|
|
|
165
336
|
const profile = this.profiles.require(s.profile);
|
|
166
337
|
// Rebuild rather than replay the stored argv verbatim: the token must be
|
|
167
338
|
// fresh and the wiring files must be rewritten for this run.
|
|
168
|
-
const spec = this.buildSpec(s, ws.name, profile, this.peersOf(ws.id, s.id), !!profile.resumeArgs && !!s.agentSessionUuid);
|
|
339
|
+
const spec = this.buildSpec(s, ws.name, profile, this.peersOf(ws.id, s.id), !!profile.resumeArgs && !!s.agentSessionUuid, this.store.getTemplateEnv(s.id));
|
|
169
340
|
this.store.setLaunchSpec(s.id, spec);
|
|
170
341
|
this.spawn(s, spec, profile);
|
|
171
342
|
return this.get(sessionId);
|
|
@@ -288,6 +459,7 @@ export class SessionManager extends EventEmitter {
|
|
|
288
459
|
this.live.delete(sessionId);
|
|
289
460
|
this.clearTimer(this.snapshotTimers, sessionId);
|
|
290
461
|
this.clearTimer(this.layoutTimers, sessionId);
|
|
462
|
+
this.pendingWindows.delete(sessionId);
|
|
291
463
|
this.tokens.revoke(sessionId);
|
|
292
464
|
this.store.removeSession(sessionId);
|
|
293
465
|
this.emit('removed', sessionId, address);
|
|
@@ -329,46 +501,31 @@ export class SessionManager extends EventEmitter {
|
|
|
329
501
|
}
|
|
330
502
|
/* --------------------------------------------------------------- layout */
|
|
331
503
|
moveWindow(sessionId, rect) {
|
|
504
|
+
this.pendingWindows.set(sessionId, rect);
|
|
332
505
|
this.clearTimer(this.layoutTimers, sessionId);
|
|
333
506
|
const t = setTimeout(() => {
|
|
334
507
|
this.layoutTimers.delete(sessionId);
|
|
335
508
|
this.store.saveWindow(sessionId, rect);
|
|
509
|
+
// Only now is the row the same as the overlay, so dropping it changes
|
|
510
|
+
// nothing that a reader can see.
|
|
511
|
+
if (this.pendingWindows.get(sessionId) === rect)
|
|
512
|
+
this.pendingWindows.delete(sessionId);
|
|
336
513
|
}, LAYOUT_DEBOUNCE_MS);
|
|
337
514
|
t.unref?.();
|
|
338
515
|
this.layoutTimers.set(sessionId, t);
|
|
339
516
|
}
|
|
340
517
|
/**
|
|
341
|
-
* Place a new window
|
|
342
|
-
*
|
|
518
|
+
* Place a new window where it overlaps nothing, near the workspace it
|
|
519
|
+
* belongs to. The mechanics live in `choosePlacement`, which is pure and
|
|
520
|
+
* exported so the rules can be tested without a PTY in sight.
|
|
343
521
|
*/
|
|
344
522
|
placeWindow(workspaceId, parentId) {
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
x: parent.window.x + 60,
|
|
352
|
-
y: parent.window.y + parent.window.h + 40,
|
|
353
|
-
z: parent.window.z + 1,
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
const all = this.list();
|
|
358
|
-
const col = siblings.length % 3;
|
|
359
|
-
const row = Math.floor(siblings.length / 3);
|
|
360
|
-
const originX = all.length === siblings.length ? 0 : this.workspaceOriginX(workspaceId);
|
|
361
|
-
return {
|
|
362
|
-
...DEFAULT_WINDOW,
|
|
363
|
-
x: originX + col * (DEFAULT_WINDOW.w + 40),
|
|
364
|
-
y: row * (DEFAULT_WINDOW.h + 40),
|
|
365
|
-
z: siblings.length,
|
|
366
|
-
};
|
|
367
|
-
}
|
|
368
|
-
/** Workspaces are laid out left to right so their groups do not overlap. */
|
|
369
|
-
workspaceOriginX(workspaceId) {
|
|
370
|
-
const order = this.store.listWorkspaces().findIndex((w) => w.id === workspaceId);
|
|
371
|
-
return Math.max(0, order) * (DEFAULT_WINDOW.w + 40) * 3.5;
|
|
523
|
+
return choosePlacement({
|
|
524
|
+
workspaceId,
|
|
525
|
+
parentId,
|
|
526
|
+
sessions: this.list(),
|
|
527
|
+
extraOccupied: this.remoteWindows(),
|
|
528
|
+
});
|
|
372
529
|
}
|
|
373
530
|
/* -------------------------------------------------------------- helpers */
|
|
374
531
|
clearTimer(map, key) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/session/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/session/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/session/pty.d.ts
CHANGED
|
@@ -43,6 +43,9 @@ export declare class PtySession extends EventEmitter {
|
|
|
43
43
|
/** argv[0], to recognise the one title the program did not choose. */
|
|
44
44
|
private launchedFile;
|
|
45
45
|
private disposed;
|
|
46
|
+
/** Input still to be fed in, when a write was too big for one go. */
|
|
47
|
+
private readonly writeQueue;
|
|
48
|
+
private writeTimer;
|
|
46
49
|
constructor(id: string, cols: number, rows: number, readyHint: RegExp | null, statusMode: 'hooks' | 'heuristic');
|
|
47
50
|
/**
|
|
48
51
|
* ConPTY announces the child's image path as the terminal title the moment
|
|
@@ -77,7 +80,17 @@ export declare class PtySession extends EventEmitter {
|
|
|
77
80
|
*/
|
|
78
81
|
noteHook(s: AgentStatus): void;
|
|
79
82
|
setStatus(s: AgentStatus): void;
|
|
83
|
+
/**
|
|
84
|
+
* Feed input to the program.
|
|
85
|
+
*
|
|
86
|
+
* Keystrokes take the direct path — they are one or two bytes and must not
|
|
87
|
+
* acquire latency — while anything larger is queued and paced. The queue is
|
|
88
|
+
* shared so ordering holds: a keystroke that arrives while a paste is still
|
|
89
|
+
* draining goes behind it, exactly as it would have on a real terminal.
|
|
90
|
+
*/
|
|
80
91
|
write(data: string): void;
|
|
92
|
+
/** One chunk per tick until the queue is empty, the process dies, or we do. */
|
|
93
|
+
private drainWrites;
|
|
81
94
|
resize(cols: number, rows: number): void;
|
|
82
95
|
/** Full-ish history, for a browser that just attached to this window. */
|
|
83
96
|
serializeForAttach(): string;
|
|
@@ -111,4 +124,10 @@ export declare class PtySession extends EventEmitter {
|
|
|
111
124
|
kill(): void;
|
|
112
125
|
dispose(): void;
|
|
113
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Split text into pieces of at most `size` UTF-16 units, never between the two
|
|
129
|
+
* halves of a surrogate pair — a lone half would reach the program as a
|
|
130
|
+
* replacement character and corrupt whatever emoji or CJK text it came from.
|
|
131
|
+
*/
|
|
132
|
+
export declare function splitChunks(text: string, size: number): string[];
|
|
114
133
|
//# sourceMappingURL=pty.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../../src/session/pty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAqBvD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"pty.d.ts","sourceRoot":"","sources":["../../src/session/pty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAqBvD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuCD;;;;;;;;GAQG;AACH,qBAAa,UAAW,SAAQ,YAAY;IAuBxC,QAAQ,CAAC,EAAE,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACnB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IA1B7B,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,OAAO,CAA0B;IACzC;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAAS;IAC1B,iEAAiE;IACjE,OAAO,CAAC,SAAS,CAAuB;IACxC,sEAAsE;IACtE,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,UAAU,CAA+B;gBAGtC,EAAE,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACF,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,UAAU,EAAE,OAAO,GAAG,WAAW;IAwBpD;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IASrB,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,KAAK,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAkClC,6DAA6D;IAC7D,OAAO,CAAC,MAAM;IAWd;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,cAAc;IAOtB,QAAQ,IAAI,IAAI;IAIhB;;;;OAIG;IACH,QAAQ,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAM9B,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAM/B;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWzB,+EAA+E;IAC/E,OAAO,CAAC,WAAW;IAqBnB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IASxC,yEAAyE;IACzE,kBAAkB,IAAI,MAAM;IAI5B;;;OAGG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;;;;;;OAQG;IACH,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAe5B,uEAAuE;IACvE,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIjC,IAAI,IAAI,IAAI;IAeZ,OAAO,IAAI,IAAI;CAMhB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAahE"}
|
package/dist/session/pty.js
CHANGED
|
@@ -31,6 +31,23 @@ const HEURISTIC_QUIET_MS = 400;
|
|
|
31
31
|
* spinner, which is not silence.
|
|
32
32
|
*/
|
|
33
33
|
const HOOK_FALLBACK_QUIET_MS = 2000;
|
|
34
|
+
/**
|
|
35
|
+
* How much is written into a PTY in one go, and how long the gap between one
|
|
36
|
+
* chunk and the next.
|
|
37
|
+
*
|
|
38
|
+
* A paste is one `write()` here but not on the far side: a pty's input buffer
|
|
39
|
+
* is small — 4KB on Linux, and ConPTY's is no more generous — and a writer
|
|
40
|
+
* that fills it faster than the program drains it loses the remainder with no
|
|
41
|
+
* error anywhere. An agent handed a long instruction therefore acts on the
|
|
42
|
+
* first few lines of it and never sees the rest, which is worse than failing.
|
|
43
|
+
*
|
|
44
|
+
* So anything past one chunk is fed in paced pieces. The gap only has to be
|
|
45
|
+
* long enough for the program to come back round to its read; it is not a
|
|
46
|
+
* throughput limit worth tuning, and at these sizes even a very long message
|
|
47
|
+
* is delivered in well under a second.
|
|
48
|
+
*/
|
|
49
|
+
const WRITE_CHUNK = 1024;
|
|
50
|
+
const WRITE_GAP_MS = 8;
|
|
34
51
|
/**
|
|
35
52
|
* One PTY plus a headless xterm that mirrors it.
|
|
36
53
|
*
|
|
@@ -63,6 +80,9 @@ export class PtySession extends EventEmitter {
|
|
|
63
80
|
/** argv[0], to recognise the one title the program did not choose. */
|
|
64
81
|
launchedFile = '';
|
|
65
82
|
disposed = false;
|
|
83
|
+
/** Input still to be fed in, when a write was too big for one go. */
|
|
84
|
+
writeQueue = [];
|
|
85
|
+
writeTimer = null;
|
|
66
86
|
constructor(id, cols, rows, readyHint, statusMode) {
|
|
67
87
|
super();
|
|
68
88
|
this.id = id;
|
|
@@ -209,10 +229,48 @@ export class PtySession extends EventEmitter {
|
|
|
209
229
|
this._status = s;
|
|
210
230
|
this.emit('status', s);
|
|
211
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* Feed input to the program.
|
|
234
|
+
*
|
|
235
|
+
* Keystrokes take the direct path — they are one or two bytes and must not
|
|
236
|
+
* acquire latency — while anything larger is queued and paced. The queue is
|
|
237
|
+
* shared so ordering holds: a keystroke that arrives while a paste is still
|
|
238
|
+
* draining goes behind it, exactly as it would have on a real terminal.
|
|
239
|
+
*/
|
|
212
240
|
write(data) {
|
|
213
241
|
if (!this.proc)
|
|
214
242
|
throw new Error(`session ${this.id} is not running`);
|
|
215
|
-
|
|
243
|
+
if (data.length === 0)
|
|
244
|
+
return;
|
|
245
|
+
if (this.writeQueue.length === 0 && data.length <= WRITE_CHUNK) {
|
|
246
|
+
this.proc.write(data);
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
this.writeQueue.push(...splitChunks(data, WRITE_CHUNK));
|
|
250
|
+
this.drainWrites();
|
|
251
|
+
}
|
|
252
|
+
/** One chunk per tick until the queue is empty, the process dies, or we do. */
|
|
253
|
+
drainWrites() {
|
|
254
|
+
if (this.writeTimer)
|
|
255
|
+
return;
|
|
256
|
+
const next = () => {
|
|
257
|
+
this.writeTimer = null;
|
|
258
|
+
const chunk = this.writeQueue.shift();
|
|
259
|
+
if (chunk === undefined)
|
|
260
|
+
return;
|
|
261
|
+
if (!this.proc || this.disposed) {
|
|
262
|
+
// Nothing left to write into. Drop the rest rather than throwing from
|
|
263
|
+
// a timer, where there is no caller to tell.
|
|
264
|
+
this.writeQueue.length = 0;
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
this.proc.write(chunk);
|
|
268
|
+
if (this.writeQueue.length > 0) {
|
|
269
|
+
this.writeTimer = setTimeout(next, WRITE_GAP_MS);
|
|
270
|
+
this.writeTimer.unref?.();
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
next();
|
|
216
274
|
}
|
|
217
275
|
resize(cols, rows) {
|
|
218
276
|
if (cols < 1 || rows < 1)
|
|
@@ -280,6 +338,11 @@ export class PtySession extends EventEmitter {
|
|
|
280
338
|
}
|
|
281
339
|
kill() {
|
|
282
340
|
this.clearIdleTimer();
|
|
341
|
+
// Whatever is left of a paste has nowhere to go once the process is gone.
|
|
342
|
+
if (this.writeTimer)
|
|
343
|
+
clearTimeout(this.writeTimer);
|
|
344
|
+
this.writeTimer = null;
|
|
345
|
+
this.writeQueue.length = 0;
|
|
283
346
|
if (!this.proc)
|
|
284
347
|
return;
|
|
285
348
|
try {
|
|
@@ -297,4 +360,24 @@ export class PtySession extends EventEmitter {
|
|
|
297
360
|
this.removeAllListeners();
|
|
298
361
|
}
|
|
299
362
|
}
|
|
363
|
+
/**
|
|
364
|
+
* Split text into pieces of at most `size` UTF-16 units, never between the two
|
|
365
|
+
* halves of a surrogate pair — a lone half would reach the program as a
|
|
366
|
+
* replacement character and corrupt whatever emoji or CJK text it came from.
|
|
367
|
+
*/
|
|
368
|
+
export function splitChunks(text, size) {
|
|
369
|
+
const out = [];
|
|
370
|
+
let i = 0;
|
|
371
|
+
while (i < text.length) {
|
|
372
|
+
let end = Math.min(i + size, text.length);
|
|
373
|
+
const code = text.charCodeAt(end - 1);
|
|
374
|
+
// A high surrogate as the last unit means its pair starts here; keep both
|
|
375
|
+
// together by leaving it for the next chunk.
|
|
376
|
+
if (end < text.length && code >= 0xd800 && code <= 0xdbff)
|
|
377
|
+
end -= 1;
|
|
378
|
+
out.push(text.slice(i, end));
|
|
379
|
+
i = end;
|
|
380
|
+
}
|
|
381
|
+
return out;
|
|
382
|
+
}
|
|
300
383
|
//# sourceMappingURL=pty.js.map
|
package/dist/session/pty.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/session/pty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOjD;;;;;;;GAOG;AACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAA8B,CAAC;AAC7D,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAqC,CAAC;AACpF,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAA4C,CAAC;AAexG,mFAAmF;AACnF,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,0EAA0E;AAC1E,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B;;;GAGG;AACH,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC;;;;;;;;GAQG;AACH,MAAM,OAAO,UAAW,SAAQ,YAAY;
|
|
1
|
+
{"version":3,"file":"pty.js","sourceRoot":"","sources":["../../src/session/pty.ts"],"names":[],"mappings":"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"}
|