@kdonev/termscape 0.1.0 → 0.1.1

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.
Files changed (78) hide show
  1. package/README.md +176 -13
  2. package/dist/agents/detect.d.ts +27 -0
  3. package/dist/agents/detect.d.ts.map +1 -0
  4. package/dist/agents/detect.js +210 -0
  5. package/dist/agents/detect.js.map +1 -0
  6. package/dist/agents/profiles.d.ts +110 -0
  7. package/dist/agents/profiles.d.ts.map +1 -1
  8. package/dist/agents/profiles.js +215 -0
  9. package/dist/agents/profiles.js.map +1 -1
  10. package/dist/agents/templates.d.ts +85 -0
  11. package/dist/agents/templates.d.ts.map +1 -0
  12. package/dist/agents/templates.js +133 -0
  13. package/dist/agents/templates.js.map +1 -0
  14. package/dist/agents/wiring.d.ts +30 -1
  15. package/dist/agents/wiring.d.ts.map +1 -1
  16. package/dist/agents/wiring.js +179 -10
  17. package/dist/agents/wiring.js.map +1 -1
  18. package/dist/cli.js +41 -14
  19. package/dist/cli.js.map +1 -1
  20. package/dist/db/migrations.d.ts.map +1 -1
  21. package/dist/db/migrations.js +55 -0
  22. package/dist/db/migrations.js.map +1 -1
  23. package/dist/db/store.d.ts +41 -0
  24. package/dist/db/store.d.ts.map +1 -1
  25. package/dist/db/store.js +75 -2
  26. package/dist/db/store.js.map +1 -1
  27. package/dist/hub.d.ts +227 -6
  28. package/dist/hub.d.ts.map +1 -1
  29. package/dist/hub.js +504 -33
  30. package/dist/hub.js.map +1 -1
  31. package/dist/hub.tgz +0 -0
  32. package/dist/mcp/server.d.ts +2 -0
  33. package/dist/mcp/server.d.ts.map +1 -1
  34. package/dist/mcp/server.js +19 -2
  35. package/dist/mcp/server.js.map +1 -1
  36. package/dist/protocol/domain.d.ts +87 -0
  37. package/dist/protocol/domain.d.ts.map +1 -1
  38. package/dist/protocol/domain.js +104 -0
  39. package/dist/protocol/domain.js.map +1 -1
  40. package/dist/protocol/mcp-tools.d.ts +30 -0
  41. package/dist/protocol/mcp-tools.d.ts.map +1 -1
  42. package/dist/protocol/mcp-tools.js +50 -0
  43. package/dist/protocol/mcp-tools.js.map +1 -1
  44. package/dist/protocol/peer.d.ts +36 -0
  45. package/dist/protocol/peer.d.ts.map +1 -1
  46. package/dist/protocol/peer.js +35 -1
  47. package/dist/protocol/peer.js.map +1 -1
  48. package/dist/protocol/ws.d.ts +254 -0
  49. package/dist/protocol/ws.d.ts.map +1 -1
  50. package/dist/protocol/ws.js +160 -5
  51. package/dist/protocol/ws.js.map +1 -1
  52. package/dist/remote/lan.d.ts +45 -0
  53. package/dist/remote/lan.d.ts.map +1 -1
  54. package/dist/remote/lan.js +44 -0
  55. package/dist/remote/lan.js.map +1 -1
  56. package/dist/remote/peer-serve.d.ts.map +1 -1
  57. package/dist/remote/peer-serve.js +31 -3
  58. package/dist/remote/peer-serve.js.map +1 -1
  59. package/dist/remote/peer.d.ts +7 -0
  60. package/dist/remote/peer.d.ts.map +1 -1
  61. package/dist/remote/peer.js +22 -0
  62. package/dist/remote/peer.js.map +1 -1
  63. package/dist/remote/registry.d.ts +69 -2
  64. package/dist/remote/registry.d.ts.map +1 -1
  65. package/dist/remote/registry.js +134 -10
  66. package/dist/remote/registry.js.map +1 -1
  67. package/dist/server.d.ts +22 -3
  68. package/dist/server.d.ts.map +1 -1
  69. package/dist/server.js +237 -117
  70. package/dist/server.js.map +1 -1
  71. package/dist/session/manager.d.ts +44 -4
  72. package/dist/session/manager.d.ts.map +1 -1
  73. package/dist/session/manager.js +161 -34
  74. package/dist/session/manager.js.map +1 -1
  75. package/package.json +1 -1
  76. package/web/assets/{index-BOqZOoep.js → index-Bq_Y0JcC.js} +6 -6
  77. package/web/assets/{index-B2JtCtHa.css → index-DQYDkOwJ.css} +1 -1
  78. package/web/index.html +2 -2
package/dist/server.js CHANGED
@@ -59,6 +59,16 @@ export async function serve(opts) {
59
59
  * Agent CLIs POST here at turn boundaries. The path carries the agent's own
60
60
  * bearer token, which is also how we know which window changed state.
61
61
  */
62
+ /*
63
+ * Accept a POST whose content type nothing else parses, and ignore the body.
64
+ *
65
+ * The hook carries its event in the query string and has no body worth
66
+ * reading, but Fastify answers 415 for a content type it has no parser for -
67
+ * which is how every status hook from Windows was rejected while looking, to
68
+ * the agent, like a hook that simply failed. Registered parsers still win, so
69
+ * /mcp keeps its JSON.
70
+ */
71
+ app.addContentTypeParser('*', { parseAs: 'buffer' }, (_req, _body, done) => done(null, undefined));
62
72
  app.post('/hook/:token', async (req, reply) => {
63
73
  const sessionId = hub.tokens.resolve(req.params.token);
64
74
  if (!sessionId)
@@ -109,6 +119,8 @@ export async function serve(opts) {
109
119
  /* --------------------------------------------------------------- join */
110
120
  // The bind address is not known until listen() resolves, so the enroll
111
121
  // routes read it through a closure rather than a captured value.
122
+ let lanOrigin = null;
123
+ let lanAltOrigin = null;
112
124
  let enrollOrigin = null;
113
125
  let enrollAltOrigin = null;
114
126
  const enrollment = registerEnrollment(app, { hub, enrollOrigin: () => enrollOrigin });
@@ -131,20 +143,28 @@ export async function serve(opts) {
131
143
  sessions: hub.allSessions(),
132
144
  messages: hub.messages(),
133
145
  viewport: hub.store.getViewport(),
134
- profiles: hub.profiles.list().map((p) => ({
135
- id: p.id,
136
- description: p.description,
137
- mcp: p.mcp,
138
- resumable: !!p.resumeArgs,
139
- })),
146
+ // Whatever detection knows right now, which on the first load is usually
147
+ // "not probed yet" - it starts after this server is already listening, on
148
+ // purpose, so nothing about spawning CLIs can delay a page.
149
+ profiles: hub.agents.snapshot(),
150
+ templates: hub.templates.info(),
151
+ // A browser that was closed when a proposal arrived would otherwise never
152
+ // see it, and the agent that asked is still waiting on an answer.
153
+ templateProposals: hub.pendingProposals(),
154
+ hostProfiles: hub.peers.agentsByHost(),
140
155
  });
141
156
  hub.on('session', (s) => broadcast({ t: 'sessionUpserted', session: s }));
142
157
  hub.on('removed', (id) => broadcast({ t: 'sessionRemoved', sessionId: id }));
143
158
  hub.on('workspace', (w) => broadcast({ t: 'workspaceUpserted', workspace: w }));
144
159
  hub.on('workspaceRemoved', (id) => broadcast({ t: 'workspaceRemoved', workspaceId: id }));
160
+ hub.on('templates', (templates) => broadcast({ t: 'templatesChanged', templates }));
161
+ hub.on('templateProposed', (proposal) => broadcast({ t: 'templateProposed', proposal }));
162
+ hub.on('templateProposalResolved', (proposalId) => broadcast({ t: 'templateProposalResolved', proposalId }));
145
163
  hub.on('message', (m) => broadcast({ t: 'messageSent', message: m }));
146
164
  hub.on('host', (h) => broadcast({ t: 'hostUpserted', host: h }));
147
165
  hub.on('hostRemoved', (id) => broadcast({ t: 'hostRemoved', hostId: id }));
166
+ hub.on('agents', (profiles) => broadcast({ t: 'agentsDetected', hostId: null, profiles }));
167
+ hub.on('hostAgents', (hostId, profiles) => broadcast({ t: 'agentsDetected', hostId, profiles }));
148
168
  // Deploy progress. Installing on a remote can take minutes; the panel shows
149
169
  // these lines so it is not a frozen button.
150
170
  hub.on('hostLog', (hostId, line) => broadcast({ t: 'hostLog', hostId, line }));
@@ -167,6 +187,8 @@ export async function serve(opts) {
167
187
  app.get('/ws', { websocket: true }, (socket) => {
168
188
  let authed = false;
169
189
  clients.add(socket);
190
+ // So an agent can be told honestly whether anybody is there to answer it.
191
+ hub.setViewers(clients.size);
170
192
  attached.set(socket, new Set());
171
193
  socket.on('message', (raw, isBinary) => {
172
194
  try {
@@ -216,128 +238,198 @@ export async function serve(opts) {
216
238
  });
217
239
  socket.on('close', () => {
218
240
  clients.delete(socket);
241
+ hub.setViewers(clients.size);
219
242
  attached.delete(socket);
220
243
  });
221
244
  });
245
+ /**
246
+ * Run one client message and answer for it.
247
+ *
248
+ * A message that carried a requestId gets an `ack` either way, and a failure
249
+ * is *not* also raised as an `error`: the dialog that asked is showing it,
250
+ * and a toast in the corner repeating it is noise. Everything without a
251
+ * requestId keeps the old behaviour, a bare `error`.
252
+ */
222
253
  async function handleClientMsg(socket, msg) {
254
+ const requestId = 'requestId' in msg ? msg.requestId : undefined;
223
255
  try {
224
- switch (msg.t) {
225
- case 'hello':
226
- return;
227
- // Remote sessions are keyed by their address, so a single lookup
228
- // decides whether a request is served locally or forwarded to a peer.
229
- case 'attach': {
230
- attached.get(socket)?.add(msg.sessionId);
231
- const remote = hub.peers.find(msg.sessionId);
232
- if (remote) {
233
- await remote.peer.attach(msg.sessionId);
234
- return;
235
- }
236
- const snap = hub.sessions.snapshotForAttach(msg.sessionId);
237
- if (snap) {
238
- send(socket, {
239
- t: 'snapshot',
240
- sessionId: msg.sessionId,
241
- serialized: snap.serialized,
242
- cols: snap.cols,
243
- rows: snap.rows,
244
- });
245
- }
246
- return;
247
- }
248
- case 'detach': {
249
- attached.get(socket)?.delete(msg.sessionId);
250
- const remote = hub.peers.find(msg.sessionId);
251
- if (remote)
252
- await remote.peer.detach(msg.sessionId);
256
+ const sessionId = (await dispatchClientMsg(socket, msg)) || undefined;
257
+ if (requestId)
258
+ send(socket, { t: 'ack', requestId, ok: true, sessionId });
259
+ }
260
+ catch (err) {
261
+ const message = err.message;
262
+ if (requestId)
263
+ send(socket, { t: 'ack', requestId, ok: false, message });
264
+ else
265
+ send(socket, { t: 'error', message });
266
+ }
267
+ }
268
+ async function dispatchClientMsg(socket, msg) {
269
+ switch (msg.t) {
270
+ case 'hello':
271
+ return;
272
+ // Remote sessions are keyed by their address, so a single lookup
273
+ // decides whether a request is served locally or forwarded to a peer.
274
+ case 'attach': {
275
+ attached.get(socket)?.add(msg.sessionId);
276
+ const remote = hub.peers.find(msg.sessionId);
277
+ if (remote) {
278
+ await remote.peer.attach(msg.sessionId);
253
279
  return;
254
280
  }
255
- case 'resize': {
256
- const remote = hub.peers.find(msg.sessionId);
257
- if (remote) {
258
- await remote.peer.request({
259
- t: 'resize',
260
- id: randomUUID(),
261
- address: msg.sessionId,
262
- cols: msg.cols,
263
- rows: msg.rows,
264
- });
265
- return;
266
- }
267
- hub.sessions.resize(msg.sessionId, msg.cols, msg.rows);
268
- return;
281
+ const snap = hub.sessions.snapshotForAttach(msg.sessionId);
282
+ if (snap) {
283
+ send(socket, {
284
+ t: 'snapshot',
285
+ sessionId: msg.sessionId,
286
+ serialized: snap.serialized,
287
+ cols: snap.cols,
288
+ rows: snap.rows,
289
+ });
269
290
  }
270
- case 'createWorkspace':
271
- hub.createWorkspace(msg.name, msg.rootPath, msg.hostId ?? null);
272
- return;
273
- case 'removeWorkspace':
274
- await hub.removeWorkspace(msg.workspaceId);
275
- return;
276
- case 'startSession':
277
- await hub.startSession({
278
- workspaceId: msg.workspaceId,
279
- profile: msg.profile,
280
- name: msg.name,
281
- cwd: msg.cwd,
291
+ return;
292
+ }
293
+ case 'detach': {
294
+ attached.get(socket)?.delete(msg.sessionId);
295
+ const remote = hub.peers.find(msg.sessionId);
296
+ if (remote)
297
+ await remote.peer.detach(msg.sessionId);
298
+ return;
299
+ }
300
+ case 'resize': {
301
+ const remote = hub.peers.find(msg.sessionId);
302
+ if (remote) {
303
+ await remote.peer.request({
304
+ t: 'resize',
305
+ id: randomUUID(),
306
+ address: msg.sessionId,
307
+ cols: msg.cols,
308
+ rows: msg.rows,
282
309
  });
283
310
  return;
284
- case 'stopSession': {
285
- const remote = hub.peers.find(msg.sessionId);
286
- if (remote) {
287
- await remote.peer.request({ t: 'stopSession', id: randomUUID(), address: msg.sessionId });
288
- return;
289
- }
290
- hub.sessions.stop(msg.sessionId);
291
- return;
292
311
  }
293
- case 'removeSession':
294
- // A remote window's session belongs to its peer. Removing it here
295
- // would delete nothing and merely hide the window until that peer
296
- // reported it again.
297
- if (await hub.peers.removeSession(msg.sessionId))
298
- return;
299
- hub.sessions.remove(msg.sessionId);
300
- return;
301
- case 'resumeSession': {
302
- const remote = hub.peers.find(msg.sessionId);
303
- if (remote) {
304
- await remote.peer.request({ t: 'resumeSession', id: randomUUID(), address: msg.sessionId });
305
- return;
306
- }
307
- await hub.sessions.resume(msg.sessionId);
312
+ hub.sessions.resize(msg.sessionId, msg.cols, msg.rows);
313
+ return;
314
+ }
315
+ case 'createWorkspace':
316
+ hub.createWorkspace(msg.name, msg.rootPath, msg.hostId ?? null);
317
+ return;
318
+ case 'updateWorkspace':
319
+ hub.updateWorkspace(msg.workspaceId, {
320
+ name: msg.name,
321
+ rootPath: msg.rootPath,
322
+ });
323
+ return;
324
+ case 'removeWorkspace':
325
+ await hub.removeWorkspace(msg.workspaceId);
326
+ return;
327
+ case 'saveTemplate':
328
+ hub.saveTemplate({
329
+ id: msg.id,
330
+ agent: msg.agent,
331
+ description: msg.description,
332
+ model: msg.model,
333
+ effort: msg.effort,
334
+ prompt: msg.prompt,
335
+ });
336
+ return;
337
+ case 'removeTemplate':
338
+ hub.removeTemplate(msg.id);
339
+ return;
340
+ case 'resolveTemplateProposal':
341
+ hub.resolveTemplateProposal(msg.proposalId, msg.accept, {
342
+ id: msg.id,
343
+ agent: msg.agent,
344
+ description: msg.description,
345
+ model: msg.model,
346
+ effort: msg.effort,
347
+ prompt: msg.prompt,
348
+ });
349
+ return;
350
+ case 'startSession': {
351
+ const session = await hub.startSession({
352
+ workspaceId: msg.workspaceId,
353
+ profile: msg.profile,
354
+ model: msg.model,
355
+ effort: msg.effort,
356
+ prompt: msg.prompt,
357
+ name: msg.name,
358
+ cwd: msg.cwd,
359
+ });
360
+ // Back to the asker, in the ack: whoever started this agent is about
361
+ // to want the canvas to fly to it.
362
+ return session.id;
363
+ }
364
+ case 'stopSession': {
365
+ const remote = hub.peers.find(msg.sessionId);
366
+ if (remote) {
367
+ await remote.peer.request({ t: 'stopSession', id: randomUUID(), address: msg.sessionId });
308
368
  return;
309
369
  }
310
- case 'resumeWorkspace':
311
- await hub.resumeWorkspace(msg.workspaceId);
312
- return;
313
- case 'moveWindow':
314
- // Layout is always local, even for a peer's session.
315
- if (!hub.peers.saveLayout(msg.sessionId, msg.rect)) {
316
- hub.moveWindow(msg.sessionId, msg.rect);
317
- }
318
- return;
319
- case 'setViewport':
320
- hub.setViewport(msg.viewport);
370
+ hub.sessions.stop(msg.sessionId);
371
+ return;
372
+ }
373
+ case 'removeSession':
374
+ // A remote window's session belongs to its peer. Removing it here
375
+ // would delete nothing and merely hide the window until that peer
376
+ // reported it again.
377
+ if (await hub.peers.removeSession(msg.sessionId))
321
378
  return;
322
- case 'addHost': {
323
- const host = hub.addHost(msg);
324
- // Connect immediately: adding a host the user then has to connect
325
- // by hand is a pointless second step.
326
- void hub.connectHost(host.id).catch((e) => send(socket, { t: 'error', message: `connect ${host.label}: ${e.message}` }));
379
+ hub.sessions.remove(msg.sessionId);
380
+ return;
381
+ case 'resumeSession': {
382
+ const remote = hub.peers.find(msg.sessionId);
383
+ if (remote) {
384
+ await remote.peer.request({ t: 'resumeSession', id: randomUUID(), address: msg.sessionId });
327
385
  return;
328
386
  }
329
- case 'removeHost':
330
- await hub.removeHost(msg.hostId);
331
- return;
332
- case 'connectHost':
333
- await hub.connectHost(msg.hostId);
334
- return;
335
- default:
336
- send(socket, { t: 'error', message: `unhandled: ${msg.t}` });
387
+ await hub.resumeSession(msg.sessionId);
388
+ return;
337
389
  }
338
- }
339
- catch (err) {
340
- send(socket, { t: 'error', message: err.message });
390
+ case 'resumeWorkspace':
391
+ await hub.resumeWorkspace(msg.workspaceId);
392
+ return;
393
+ case 'moveWindow':
394
+ // Layout is always local, even for a peer's session.
395
+ if (!hub.peers.saveLayout(msg.sessionId, msg.rect)) {
396
+ hub.moveWindow(msg.sessionId, msg.rect);
397
+ }
398
+ return;
399
+ case 'setViewport':
400
+ hub.setViewport(msg.viewport);
401
+ return;
402
+ case 'addHost': {
403
+ const host = hub.addHost(msg);
404
+ // Connect immediately: adding a host the user then has to connect
405
+ // by hand is a pointless second step.
406
+ void hub.connectHost(host.id).catch((e) => send(socket, { t: 'error', message: `connect ${host.label}: ${e.message}` }));
407
+ return;
408
+ }
409
+ case 'updateHost':
410
+ hub.updateHost(msg.hostId, {
411
+ label: msg.label,
412
+ sshHost: msg.sshHost,
413
+ sshUser: msg.sshUser,
414
+ sshPort: msg.sshPort,
415
+ privateKeyPath: msg.privateKeyPath,
416
+ });
417
+ return;
418
+ case 'removeHost':
419
+ await hub.removeHost(msg.hostId);
420
+ return;
421
+ case 'connectHost':
422
+ await hub.connectHost(msg.hostId);
423
+ return;
424
+ case 'refreshAgents':
425
+ // Not awaited: the answer arrives as `agentsDetected` when each
426
+ // machine has one, and a CLI that hangs must cost a slow dropdown
427
+ // rather than a socket sitting on a reply.
428
+ void hub.agents.refresh();
429
+ hub.peers.refreshAgents();
430
+ return;
431
+ default:
432
+ throw new Error(`unhandled: ${msg.t}`);
341
433
  }
342
434
  }
343
435
  /* ------------------------------------------------------------- static */
@@ -391,9 +483,9 @@ export async function serve(opts) {
391
483
  attached.clear();
392
484
  });
393
485
  /* --------------------------------------------------------------- bind */
394
- // Loopback unless the operator asked otherwise. An SSH-deployed hub is
395
- // always reached through its tunnel and never binds wider; `--listen` exists
396
- // so a machine can fetch the join page and enroll itself.
486
+ // Loopback unless the caller asked otherwise. The CLI widens this for a hub
487
+ // that serves a UI; an SSH-deployed hub is headless, is reached only through
488
+ // its tunnel, and gets the default.
397
489
  const host = opts.host ?? '127.0.0.1';
398
490
  const address = await listenOnFirstFree(app, host, opts.port ?? 0);
399
491
  const port = app.server.address().port;
@@ -407,11 +499,39 @@ export async function serve(opts) {
407
499
  // Prefer this machine's name: it is the URL someone has to carry to
408
500
  // another machine and type in. The IP stays available underneath.
409
501
  const name = await preferredHostname(advertised);
410
- enrollOrigin = `http://${name ?? advertised}:${port}`;
411
- enrollAltOrigin = name ? `http://${advertised}:${port}` : null;
502
+ lanOrigin = `http://${name ?? advertised}:${port}`;
503
+ lanAltOrigin = name ? `http://${advertised}:${port}` : null;
504
+ }
505
+ // The join page reads enrollOrigin through its closure and 404s on null, so
506
+ // withholding the origin is what withholds the page - there is no second
507
+ // switch to keep in step with this one.
508
+ if (opts.enroll) {
509
+ enrollOrigin = lanOrigin;
510
+ enrollAltOrigin = lanAltOrigin;
412
511
  }
512
+ /*
513
+ * Detection starts here, after listen() has resolved, and is deliberately
514
+ * not awaited. It spawns every declared CLI to ask its version and its
515
+ * models; one of them hanging must cost a slow dropdown rather than a hub
516
+ * that will not boot, and the browser is told through `agentsDetected` when
517
+ * each answer lands.
518
+ */
519
+ void hub.agents.refresh().catch(() => {
520
+ // Individual probes already fail softly; this is only here so a bug in
521
+ // the detector cannot become an unhandled rejection that stops the hub.
522
+ });
413
523
  void address;
414
- return { app, origin, enrollOrigin, enrollAltOrigin, port, peerServer, enrollment };
524
+ return {
525
+ app,
526
+ origin,
527
+ lanOrigin,
528
+ lanAltOrigin,
529
+ enrollOrigin,
530
+ enrollAltOrigin,
531
+ port,
532
+ peerServer,
533
+ enrollment,
534
+ };
415
535
  }
416
536
  /**
417
537
  * Bind the first candidate that is free.
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,44 @@ import { TokenRegistry } from '../agents/tokens.js';
6
6
  import { PtySession } from './pty.js';
7
7
  /** Debounce for persisting window geometry while a window is being dragged. */
8
8
  export declare const LAYOUT_DEBOUNCE_MS = 250;
9
+ /**
10
+ * Where a new window goes, given what is already on the canvas.
11
+ *
12
+ * The anchor choice is the "near" in the promise this makes: below-right of
13
+ * the parent when it was spawned by an agent, otherwise in the first clear
14
+ * slot of a 3-wide lattice laid over its own workspace's dense part — or, when
15
+ * that workspace is still empty, beside the rightmost group already on the
16
+ * canvas rather than at the origin, where it would sit on top of the first
17
+ * workspace's windows. Candidates are checked against every occupied rect —
18
+ * the caller folds peer windows in, because those share the canvas too — so a
19
+ * window the user dragged across the grid no longer silently receives the
20
+ * next "free" slot, and a second child of the same parent no longer stacks
21
+ * exactly on the first.
22
+ */
23
+ export declare function choosePlacement(opts: {
24
+ workspaceId: string;
25
+ parentId: string | null;
26
+ sessions: Pick<Session, 'id' | 'workspaceId' | 'window'>[];
27
+ /** Windows that share the canvas but are not local sessions — peers'. */
28
+ extraOccupied?: Pick<WindowRect, 'x' | 'y' | 'w' | 'h'>[];
29
+ }): WindowRect;
9
30
  export interface StartOptions {
10
31
  workspaceId: string;
11
32
  profileId: string;
33
+ /**
34
+ * The id to start under, when the caller has already chosen one — a peer
35
+ * starting a child on behalf of a canvas that needs to recognise it on the
36
+ * wire. Absent means mint one here, which is the local case.
37
+ */
38
+ id?: string;
39
+ /**
40
+ * The template this came from and what it resolved to. Values, never argv:
41
+ * the agent declares how to spell them, which is the only way one template
42
+ * can name a model for CLIs that all spell `--model` differently.
43
+ */
44
+ template?: string | null;
45
+ model?: string;
46
+ effort?: string;
12
47
  name?: string;
13
48
  cwd?: string;
14
49
  spawnedBy?: string | null;
@@ -44,6 +79,12 @@ export declare class SessionManager extends EventEmitter {
44
79
  /** Latest title per session, waiting for the coalescing window to close. */
45
80
  private readonly pendingTitles;
46
81
  private titleTimer;
82
+ /**
83
+ * Windows that share this canvas but are not local sessions — a peer's are.
84
+ * The manager cannot see the peer registry, so the hub hands it this view;
85
+ * placement checks it, because "never on top of anything" means anything.
86
+ */
87
+ remoteWindows: () => WindowRect[];
47
88
  constructor(store: Store, profiles: ProfileRegistry, tokens: TokenRegistry, hubOrigin: string);
48
89
  setHubOrigin(origin: string): void;
49
90
  private isResumable;
@@ -86,12 +127,11 @@ export declare class SessionManager extends EventEmitter {
86
127
  } | null;
87
128
  moveWindow(sessionId: string, rect: WindowRect): void;
88
129
  /**
89
- * Place a new window: tucked below-right of its parent when spawned by
90
- * another agent, otherwise in the next free slot of a simple grid.
130
+ * Place a new window where it overlaps nothing, near the workspace it
131
+ * belongs to. The mechanics live in `choosePlacement`, which is pure and
132
+ * exported so the rules can be tested without a PTY in sight.
91
133
  */
92
134
  private placeWindow;
93
- /** Workspaces are laid out left to right so their groups do not overlap. */
94
- private workspaceOriginX;
95
135
  private clearTimer;
96
136
  private emitSession;
97
137
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/session/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/session/manager.ts"],"names":[],"mappings":"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"}