mandala-computer-mcp 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.

Potentially problematic release.


This version of mandala-computer-mcp might be problematic. Click here for more details.

Files changed (66) hide show
  1. package/README.md +102 -10
  2. package/dist/api.d.ts +19 -6
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +213 -31
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +113 -8
  8. package/dist/cli.js.map +1 -1
  9. package/dist/errors.d.ts +60 -0
  10. package/dist/errors.d.ts.map +1 -1
  11. package/dist/errors.js +71 -2
  12. package/dist/errors.js.map +1 -1
  13. package/dist/events.d.ts +17 -2
  14. package/dist/events.d.ts.map +1 -1
  15. package/dist/events.js +104 -13
  16. package/dist/events.js.map +1 -1
  17. package/dist/format.d.ts +16 -0
  18. package/dist/format.d.ts.map +1 -1
  19. package/dist/format.js +11 -1
  20. package/dist/format.js.map +1 -1
  21. package/dist/http-body.d.ts +17 -0
  22. package/dist/http-body.d.ts.map +1 -0
  23. package/dist/http-body.js +48 -0
  24. package/dist/http-body.js.map +1 -0
  25. package/dist/http.d.ts.map +1 -1
  26. package/dist/http.js +177 -51
  27. package/dist/http.js.map +1 -1
  28. package/dist/index.d.ts +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +1 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/paths.d.ts +22 -13
  33. package/dist/paths.d.ts.map +1 -1
  34. package/dist/paths.js +68 -16
  35. package/dist/paths.js.map +1 -1
  36. package/dist/poll.d.ts +103 -0
  37. package/dist/poll.d.ts.map +1 -0
  38. package/dist/poll.js +129 -0
  39. package/dist/poll.js.map +1 -0
  40. package/dist/server.d.ts +1 -1
  41. package/dist/server.js +1 -1
  42. package/dist/tools/agent.d.ts.map +1 -1
  43. package/dist/tools/agent.js +14 -2
  44. package/dist/tools/agent.js.map +1 -1
  45. package/dist/tools/computers.d.ts.map +1 -1
  46. package/dist/tools/computers.js +228 -49
  47. package/dist/tools/computers.js.map +1 -1
  48. package/dist/tools/events.d.ts.map +1 -1
  49. package/dist/tools/events.js +224 -39
  50. package/dist/tools/events.js.map +1 -1
  51. package/dist/tools/guest.d.ts.map +1 -1
  52. package/dist/tools/guest.js +223 -30
  53. package/dist/tools/guest.js.map +1 -1
  54. package/dist/tools/input.d.ts.map +1 -1
  55. package/dist/tools/input.js +29 -3
  56. package/dist/tools/input.js.map +1 -1
  57. package/dist/tools/snapshots.d.ts.map +1 -1
  58. package/dist/tools/snapshots.js +478 -20
  59. package/dist/tools/snapshots.js.map +1 -1
  60. package/dist/tools/templates.d.ts.map +1 -1
  61. package/dist/tools/templates.js +50 -11
  62. package/dist/tools/templates.js.map +1 -1
  63. package/dist/tools/webhooks.d.ts.map +1 -1
  64. package/dist/tools/webhooks.js +116 -17
  65. package/dist/tools/webhooks.js.map +1 -1
  66. package/package.json +1 -1
@@ -1,47 +1,14 @@
1
1
  import { z } from 'zod';
2
- import { CancelledError, isTransientForPoll, MoveRequiredError, NotFoundError, RateLimitError, } from '../errors.js';
2
+ import { CancelledError, ConflictError, isTransientForPoll, MoveRequiredError, NotFoundError, } from '../errors.js';
3
3
  import { describe, guarded, incompleteWarning, json, refused, said, unwrapComputer, withoutCredentials, } from '../format.js';
4
4
  import * as P from '../paths.js';
5
+ import { heartbeat, POLL_MS, pollDelay, sleep } from '../poll.js';
5
6
  const idArg = {
6
7
  computer_id: z
7
8
  .string()
8
9
  .optional()
9
10
  .describe('Which computer. Defaults to the one selected with use_computer.'),
10
11
  };
11
- /**
12
- * A pause that ends early when the caller gives up.
13
- *
14
- * The wait loops check the signal at the top of each turn, so a sleep that
15
- * ignored it would still hold a cancelled call for its remaining seconds.
16
- */
17
- const sleep = (ms, signal) => new Promise((resolve) => {
18
- if (signal?.aborted)
19
- return resolve();
20
- const t = setTimeout(done, ms);
21
- function done() {
22
- clearTimeout(t);
23
- signal?.removeEventListener('abort', done);
24
- resolve();
25
- }
26
- signal?.addEventListener('abort', done, { once: true });
27
- });
28
- /** How long these loops leave between polls. */
29
- const POLL_MS = 2_000;
30
- /**
31
- * The same interval, unless the platform asked for longer.
32
- *
33
- * A 429 is the one failure that says how long to wait, and
34
- * {@link isTransientForPoll} now polls through it — so a loop that ignored
35
- * `Retry-After` and asked again in two seconds would be spending a rate limit
36
- * to discover it was still rate limited. The floor stays {@link POLL_MS}: the
37
- * header can say zero, and a poll loop with no interval is a request storm.
38
- *
39
- * Only reached from a failed poll, which is why it takes the error rather than
40
- * living in {@link sleep}: an ordinary turn has nothing to honour.
41
- */
42
- const pollDelay = (err) => err instanceof RateLimitError && err.retryAfterMs !== undefined
43
- ? Math.max(POLL_MS, err.retryAfterMs)
44
- : POLL_MS;
45
12
  /**
46
13
  * The answer to a wait the caller ended.
47
14
  *
@@ -82,8 +49,15 @@ const movesOf = (body) => {
82
49
  const moves = list.filter((row) => row !== null && typeof row === 'object' && !Array.isArray(row));
83
50
  return { moves, dropped: list.length - moves.length };
84
51
  };
85
- /** What arrived where a list was expected, for a refusal that names it. */
86
- const shapeOf = (v) => v === undefined ? 'no body at all' : v === null ? 'null' : typeof v;
52
+ /**
53
+ * What arrived where a list was expected, for a refusal that names it.
54
+ *
55
+ * A list is called a list. `typeof []` is `'object'`, and the usage refusal is
56
+ * reached BY an array — its guard rejects one explicitly — so without this it
57
+ * reports a body that arrived as an "object where the totals object goes",
58
+ * which is a contradiction in the sentence a model has to act on.
59
+ */
60
+ const shapeOf = (v) => v === undefined ? 'no body at all' : v === null ? 'null' : Array.isArray(v) ? 'a list' : typeof v;
87
61
  /**
88
62
  * The resize refusal that is an OFFER, turned into a next step (OPL-3775).
89
63
  *
@@ -127,12 +101,33 @@ const moveLine = (m) => `${m.computer_id}: ${m.state}${m.live ? ' (running)' : '
127
101
  * that could not be reached and comes right when it comes back, `unmetered` is a
128
102
  * host running a daemon older than the meter, and telling a caller to wait for
129
103
  * that one is advice that never comes true.
104
+ *
105
+ * EVERY DIMENSION THE PLATFORM PRICES IS IN THE LINE. This sentence is what a
106
+ * model reads before it acts on cost, and a dimension the account is billed on
107
+ * that appears only in the JSON underneath is a figure nobody weighs. Two were
108
+ * missing: `ram_gb_hours`, although the tool's own description promises hours
109
+ * "weighted by cores and memory", and `snapshot_gb_months`, which apidoc.ts
110
+ * calls "the unit snapshots are priced in" — the figure that explains the bill
111
+ * of an account holding many durable snapshots and running almost nothing.
112
+ *
113
+ * The `_hours` twins of the two `_months` figures are deliberately NOT here.
114
+ * `disk_gb_hours` and `snapshot_gb_hours` are the same integral in the unit the
115
+ * platform does not price, so printing both spellings would double the length
116
+ * of the line to say each thing twice. Add to this line when the platform
117
+ * prices something new, not when it reports something new.
118
+ *
119
+ * Zeroes are printed rather than omitted, like every other figure here: an
120
+ * account that ran nothing weighted by memory metered zero, and a clause that
121
+ * disappears makes that indistinguishable from a platform that did not send the
122
+ * figure at all — the distinction `get_usage` already refuses a missing totals
123
+ * object in order to keep.
130
124
  */
131
125
  const usageLine = (u) => {
132
126
  const t = u.usage ?? {};
133
127
  const window = u.from && u.to ? `${u.from} to ${u.to}` : 'this billing period';
134
- const head = `${t.vcpu_hours ?? 0} vCPU-hours, ${t.run_hours ?? 0} running hours and ` +
135
- `${t.disk_gb_months ?? 0} GB-months of disk over ${window}.`;
128
+ const head = `${t.vcpu_hours ?? 0} vCPU-hours, ${t.ram_gb_hours ?? 0} GB-hours of RAM, ` +
129
+ `${t.run_hours ?? 0} running hours, ${t.disk_gb_months ?? 0} GB-months of disk ` +
130
+ `and ${t.snapshot_gb_months ?? 0} GB-months of snapshots over ${window}.`;
136
131
  const short = [
137
132
  u.degraded && 'a hypervisor could not be reached (retry — this one clears)',
138
133
  u.unmetered &&
@@ -180,6 +175,16 @@ const finishedMove = (id, m) => {
180
175
  return refused(`The move of ${id} stopped being watched, so we cannot say whether it finished.${detail} Read ` +
181
176
  `get_computer to see which size it is at now before doing anything else.`, m);
182
177
  };
178
+ /**
179
+ * What follows an acknowledged power action, where anything does. A start is
180
+ * the one whose "ok" is furthest from "usable": the VM is booting or resuming
181
+ * and the desktop inside it answers later, which is the gap the second line of
182
+ * the server instructions exists for.
183
+ */
184
+ const POWER_NEXT = {
185
+ start: ' wait_for_computer with until="guest" is what says when the desktop is answering.',
186
+ restart: ' wait_for_computer with until="guest" is what says when the desktop is back.',
187
+ };
183
188
  const POWER_DESCRIPTIONS = {
184
189
  start: 'Boot a computer, or resume a suspended one — a resume restores the saved session, same processes and windows, in about a second.',
185
190
  stop: 'Shut a computer down: the guest is asked, and given time to do it. Discards a saved session if there is one. The disk is kept. `force` pulls the power instead, for a guest that will not come down on its own.',
@@ -192,7 +197,15 @@ export const registerComputers = (server, session, opts) => {
192
197
  description: 'The base images a computer can be created from — name, OS, and the default CPU, RAM and disk each one implies.',
193
198
  inputSchema: {},
194
199
  annotations: { readOnlyHint: true },
195
- }, (_args, extra) => guarded(async () => json(await session.api.with(extra.signal).json('GET', P.TEMPLATES))));
200
+ }, (_args, extra) => guarded(async () => {
201
+ const { items, incomplete } = await session.api.with(extra.signal).listing(P.TEMPLATES);
202
+ if (items === undefined || items === null) {
203
+ return refused('The platform did not return a template catalogue. Retry list_templates.');
204
+ }
205
+ return incomplete === null
206
+ ? json(items)
207
+ : said(incompleteWarning('templates', incomplete).trimEnd(), items);
208
+ }));
196
209
  server.registerTool('list_sizes', {
197
210
  title: 'List sizes',
198
211
  description: `The named sizes a computer can be launched at — each a template plus a CPU/RAM/disk shape. These are the shapes the platform keeps pre-booted, so ${opts.lifecycle ? 'create_computer with a `size`' : 'a create naming a `size`'} is typically answered in about a second where a custom shape boots cold. ` +
@@ -202,15 +215,28 @@ export const registerComputers = (server, session, opts) => {
202
215
  }, (_args, extra) => guarded(async () => json(await session.api.with(extra.signal).json('GET', P.SIZES))));
203
216
  server.registerTool('list_computers', {
204
217
  title: 'List computers',
205
- description: 'Every computer on this account. Desktop credentials are deliberately not included — use get_desktop_url for those.',
218
+ description: "Every computer on this account that exists or may exist. Desktop credentials are deliberately not included — use get_desktop_url for those. Read `state` before acting on a row: it is the platform's record of whether the machine exists, which is a different question from `status`, what its host says the guest is doing. A row reading `deleting` is on its way out and is not one to bind, start or wait for, and one reading `unreachable` is a row served from the record because the host did not answer — the computer is most likely fine, but nothing only its host knows is on it, `status` included. The two terminal states are not here at all: `deleted` and `lost` come back only when asked for with `state`.",
206
219
  inputSchema: {
207
220
  allow_partial: z
208
221
  .boolean()
209
222
  .optional()
210
223
  .describe('Accept a short list when a hypervisor cannot be reached, instead of the 503 the platform answers by default. The answer then says it is short — a short list reads exactly like the missing computers were deleted.'),
224
+ // The control plane's own record, not the guest's (OPL-4554).
225
+ // Read where the listing is assembled and never forwarded to a host, so
226
+ // a filtered listing is as complete as an unfiltered one.
227
+ //
228
+ // Said in the description rather than assumed: omitting this is NOT
229
+ // "every computer". `deleted` and `lost` are terminal and withheld from
230
+ // an unfiltered listing, so this parameter is the only way a caller ever
231
+ // sees one — which is the question somebody asks when a computer they
232
+ // remember is not in the list.
233
+ state: z
234
+ .enum(['live', 'unreachable', 'deleting', 'deleted', 'lost'])
235
+ .optional()
236
+ .describe("Only computers the platform's own record puts in this state — a different question from what the machine is doing, which is `status`. 'live': its host lists it. 'unreachable': its host did not answer THIS request, so the row is the identity on record and not what the machine says; the computer is most likely fine. 'deleting': a delete was sent and not answered yet. 'deleted' and 'lost' are terminal, and asking here is the ONLY way to see one — an unfiltered listing is live, unreachable and deleting, so a computer missing from it may still have a record."),
211
237
  },
212
238
  annotations: { readOnlyHint: true },
213
- }, ({ allow_partial }, extra) => guarded(async () => {
239
+ }, ({ allow_partial, state }, extra) => guarded(async () => {
214
240
  // listing, not json: with allow_partial the platform will hand over an
215
241
  // inventory it knows is short, and says so in X-GC-Incomplete. Reading
216
242
  // the body and dropping the header turns "here is part of the fleet"
@@ -218,7 +244,7 @@ export const registerComputers = (server, session, opts) => {
218
244
  const { items, incomplete } = await session.api
219
245
  .with(extra.signal)
220
246
  .listing(P.COMPUTERS, {
221
- query: { allow_partial: allow_partial ? 1 : undefined },
247
+ query: { allow_partial: allow_partial ? 1 : undefined, state },
222
248
  });
223
249
  // Checked rather than asserted. `listing<unknown[]>` is a claim about
224
250
  // what the platform sends, not a guarantee — a proxy or a future
@@ -262,6 +288,16 @@ export const registerComputers = (server, session, opts) => {
262
288
  if (incomplete !== null) {
263
289
  return said(`${warning}No computers came back from the part of the fleet that answered. This is NOT an empty account — do not create a computer on the strength of it. Retry in a moment.`);
264
290
  }
291
+ // A filtered listing that came back empty is a fact about the FILTER,
292
+ // and the sentence below is a fact about the account. Saying the
293
+ // account is empty because nothing is `deleted` is the same
294
+ // duplicate-create the incomplete branch above guards against,
295
+ // arrived at from a third direction — and this one is silent, since
296
+ // the platform answers a filter that matches nothing exactly as it
297
+ // answers an account with nothing in it.
298
+ if (state) {
299
+ return said(`${warning}No computers on this account are ${state}. Other computers may exist — this listing asked only for that state. Call list_computers without \`state\` to see the account.`);
300
+ }
265
301
  // Named only when it is there to call. Under MANDALA_NO_LIFECYCLE
266
302
  // create_computer is not registered, and this is the one place the
267
303
  // name reached the model at RUN time rather than in a description —
@@ -290,6 +326,15 @@ export const registerComputers = (server, session, opts) => {
290
326
  inputSchema: {
291
327
  computer_id: z.string().describe('The id from list_computers.'),
292
328
  },
329
+ // No readOnlyHint — this is not a pure read, so the hint would overclaim —
330
+ // but destructiveHint set, because the spec defaults it to TRUE once
331
+ // readOnlyHint is absent and this destroys nothing (OPL-4516). Without it,
332
+ // waiting for a machine to finish booting asks the operator whether
333
+ // destructive updates may be performed.
334
+ //
335
+ // Idempotent: asking again gives the same answer, and a host gating
336
+ // retry-of-a-timed-out-call on this flag should not refuse.
337
+ annotations: { destructiveHint: false, idempotentHint: true },
293
338
  }, ({ computer_id }, extra) => guarded(async () => {
294
339
  const selectionVersion = session.beginSelection(computer_id);
295
340
  try {
@@ -325,9 +370,23 @@ export const registerComputers = (server, session, opts) => {
325
370
  // parameter their route does not read.
326
371
  const power = (action, computer_id, extra, opts = {}) => guarded(async () => {
327
372
  const id = session.resolve(computer_id);
328
- const c = unwrapComputer(await session.api
373
+ const body = await session.api
329
374
  .with(extra.signal)
330
- .json('POST', P.computerAction(id, action), { query: opts.query }));
375
+ .json('POST', P.computerAction(id, action), { query: opts.query });
376
+ const c = unwrapComputer(body);
377
+ // What the platform documents for all four is an Ack — `{ok: true}` and
378
+ // nothing else — and that is what it sends. Formatting it as a computer
379
+ // record answered `suspend: (unnamed) · (no id) · unknown`, which the
380
+ // first agent to dogfood the skill (OPL-3914) read as a suspend that had
381
+ // not worked. The id is the one we sent, so say that; a record, should
382
+ // the platform ever start returning one, is described as before.
383
+ //
384
+ // Stripped of credentials on this branch too, and not only on the record
385
+ // one: the test for "is this an Ack" is the absence of an id, and a body
386
+ // with no id is not thereby a body with no `vnc`.
387
+ if (!c.id) {
388
+ return said(`${action}: ok — ${id}.${POWER_NEXT[action] ?? ''}${opts.note ?? ''}`, withoutCredentials(c));
389
+ }
331
390
  session.noteResolution(id, c.resolution);
332
391
  return said(`${action}: ${describe(c)}${opts.note ?? ''}`, withoutCredentials(c));
333
392
  });
@@ -412,7 +471,7 @@ export const registerComputers = (server, session, opts) => {
412
471
  }));
413
472
  server.registerTool('move_computer', {
414
473
  title: 'Move a computer to a host that can run a bigger size',
415
- description: 'Grow a computer past what its current host can run, by moving it to another host in the same region first. Only call this after update_computer has refused a resize and said a move is possible: it is the second half of that refusal and nothing else. THIS MOVES THE MACHINE TO DIFFERENT HARDWARE and copies its disk to get there — say so before you call it. The computer must be STOPPED (suspended is not stopped here: a saved desktop only loads on the host that wrote it, so resume and stop it, or discard the session). One move runs per account at a time. Everything is decided again when this runs, so it can still refuse. Waits for the outcome and reports it; list_moves reads it if the wait runs out.',
474
+ description: 'Grow a computer past what its current host can run, by moving it to another host in the same region first. Only call this after update_computer has refused a resize and said a move is possible: it is the second half of that refusal and nothing else. THIS MOVES THE MACHINE TO DIFFERENT HARDWARE and copies its disk to get there — say so before you call it. The computer must be STOPPED (suspended is not stopped here: a saved desktop only loads on the host that wrote it, so resume and stop it, or discard the session). One move runs per account at a time. Everything is decided again when this runs, so it can still refuse. Waits for the outcome and reports it, reporting progress while it waits so a client that sends a progressToken and sets resetTimeoutOnProgress can hold the request open; list_moves reads the outcome if the wait runs out, and is the answer for a client that cannot.',
416
475
  inputSchema: {
417
476
  ...idArg,
418
477
  // Required, unlike every other field here, and unlike the same argument
@@ -466,6 +525,11 @@ export const registerComputers = (server, session, opts) => {
466
525
  // and it is kept because it is the only description of this move that
467
526
  // does not depend on a later read succeeding.
468
527
  const started = (await api.json('POST', P.computerAction(id, 'move'), { body }));
528
+ // The keepalive. A disk crossing between two hosts is minutes, and a
529
+ // tool that says nothing for minutes is one a client cancels — see
530
+ // heartbeat, and OPL-4579 for the wait that proved it.
531
+ const beat = heartbeat(extra, server.server);
532
+ await beat(`Moving ${id} — the platform has accepted it.`);
469
533
  let last = started;
470
534
  let blocked;
471
535
  while (!untilDeadline.aborted) {
@@ -487,6 +551,7 @@ export const registerComputers = (server, session, opts) => {
487
551
  if (untilDeadline.aborted)
488
552
  break;
489
553
  blocked = err.message;
554
+ await beat(`Moving ${id} — the platform could not be asked: ${blocked}`);
490
555
  await sleep(POLL_MS, signal);
491
556
  continue;
492
557
  }
@@ -500,6 +565,7 @@ export const registerComputers = (server, session, opts) => {
500
565
  `was the poll failing, not the move. list_moves says where it got to.`, last);
501
566
  }
502
567
  blocked = err instanceof Error ? err.message : String(err);
568
+ await beat(`Moving ${id} — the platform could not be asked: ${blocked}`);
503
569
  await sleep(pollDelay(err), signal);
504
570
  continue;
505
571
  }
@@ -509,6 +575,7 @@ export const registerComputers = (server, session, opts) => {
509
575
  // not be asked rather than claiming a deletion nothing established.
510
576
  if (!table) {
511
577
  blocked = `GET /moves answered with ${shapeOf(raw?.moves)}, not a list of moves`;
578
+ await beat(`Moving ${id} — the platform could not be asked: ${blocked}`);
512
579
  await sleep(POLL_MS, signal);
513
580
  continue;
514
581
  }
@@ -526,6 +593,7 @@ export const registerComputers = (server, session, opts) => {
526
593
  // instead of claiming a deletion nothing showed.
527
594
  if (!mine && table.dropped) {
528
595
  blocked = `GET /moves answered with ${table.dropped} unreadable row(s), so this move may be among them`;
596
+ await beat(`Moving ${id} — the platform could not be asked: ${blocked}`);
529
597
  await sleep(POLL_MS, signal);
530
598
  continue;
531
599
  }
@@ -536,6 +604,7 @@ export const registerComputers = (server, session, opts) => {
536
604
  last = mine;
537
605
  if (!mine.live)
538
606
  return finishedMove(id, mine);
607
+ await beat(`Moving ${id} — ${mine.state}${mine.detail ? `: ${mine.detail}` : ''}`);
539
608
  await sleep(POLL_MS, signal);
540
609
  }
541
610
  return refused(blocked
@@ -601,7 +670,7 @@ export const registerComputers = (server, session, opts) => {
601
670
  }));
602
671
  server.registerTool('wait_for_computer', {
603
672
  title: 'Wait for a computer to be ready',
604
- description: 'Poll until the computer is running, or until the software inside it answers. Use "guest" before exec, files or windows, and before expecting a screenshot to show a desktop rather than a boot screen.',
673
+ description: 'Poll until the computer is running, or until the software inside it answers. Use "guest" before exec, files or windows, and before expecting a screenshot to show a desktop rather than a boot screen. Reports progress while it waits, so a client that sends a progressToken and sets resetTimeoutOnProgress can hold the request open; a client that cannot should lower timeout_s and call again rather than watch its own default timeout cancel the wait.',
605
674
  inputSchema: {
606
675
  ...idArg,
607
676
  until: z
@@ -610,6 +679,15 @@ export const registerComputers = (server, session, opts) => {
610
679
  .describe('"running" is the hypervisor reporting the VM up. "guest" is the software inside it answering, which is what exec and a painted desktop actually need.'),
611
680
  timeout_s: z.number().int().min(5).max(900).default(180),
612
681
  },
682
+ // No readOnlyHint — this is not a pure read, so the hint would overclaim —
683
+ // but destructiveHint set, because the spec defaults it to TRUE once
684
+ // readOnlyHint is absent and this destroys nothing (OPL-4516). Without it,
685
+ // waiting for a machine to finish booting asks the operator whether
686
+ // destructive updates may be performed.
687
+ //
688
+ // Idempotent: asking again gives the same answer, and a host gating
689
+ // retry-of-a-timed-out-call on this flag should not refuse.
690
+ annotations: { destructiveHint: false, idempotentHint: true },
613
691
  }, ({ computer_id, until, timeout_s }, extra) => guarded(async () => {
614
692
  const id = session.resolve(computer_id);
615
693
  // timeout_s used to gate only the top of the loop, which bounds how
@@ -627,6 +705,7 @@ export const registerComputers = (server, session, opts) => {
627
705
  ? AbortSignal.any([extra.signal, untilDeadline])
628
706
  : untilDeadline;
629
707
  const api = session.api.with(signal);
708
+ const beat = heartbeat(extra, server.server);
630
709
  let last = 'unknown';
631
710
  // Kept so the give-up message can name it. A hypervisor that was
632
711
  // unreachable for the whole window is the single most useful thing to
@@ -665,18 +744,37 @@ export const registerComputers = (server, session, opts) => {
665
744
  break;
666
745
  }
667
746
  blocked = err.message;
747
+ await beat(`Waiting for ${id} — the platform could not be asked: ${blocked}`);
668
748
  await sleep(POLL_MS, signal);
669
749
  continue;
670
750
  }
671
751
  if (!isTransientForPoll(err))
672
752
  throw err;
673
753
  blocked = err instanceof Error ? err.message : String(err);
754
+ await beat(`Waiting for ${id} — the platform could not be asked: ${blocked}`);
674
755
  await sleep(pollDelay(err), signal);
675
756
  continue;
676
757
  }
677
758
  blocked = undefined;
678
759
  session.noteResolution(id, c.resolution);
679
760
  last = c.status ?? 'unknown';
761
+ // ONE beat per turn, and this is not it when a guest probe is about to
762
+ // run. Beating here and again in the probe's failure branch sent two
763
+ // notifications per poll — and because the two lines DIFFER, each read
764
+ // as news to the throttle and neither was ever held, so the steady
765
+ // state of the commonest long wait was twice the per-poll rate the
766
+ // interval exists to avoid (/code-review).
767
+ //
768
+ // Fixed by making the two say the SAME thing rather than by silencing
769
+ // this one, which was the first attempt and dropped the wrong half of
770
+ // the pair (/code-review again). The probe below is the longest call
771
+ // in the loop — an undici header timeout or a proxy 524 can hold it
772
+ // for minutes — so the beat that must survive is the one IN FRONT of
773
+ // it. The 409 branch repeats this line and the throttle holds it; a
774
+ // probe that fails some other way says so, which is news and goes out.
775
+ await beat(until === 'guest' && last === 'running'
776
+ ? `Waiting for ${id} — running; asking the guest.`
777
+ : `Waiting for ${id} — ${last}.`);
680
778
  if (last === 'build-failed') {
681
779
  // `refused`, for the reason `cancelled` is: the wait never reached
682
780
  // what it was told to wait for, and this one never will. A caller
@@ -730,11 +828,34 @@ export const registerComputers = (server, session, opts) => {
730
828
  break;
731
829
  }
732
830
  blocked = err.message;
831
+ await beat(`Waiting for ${id} — running; the platform could not be asked: ${blocked}`);
733
832
  await sleep(POLL_MS, signal);
734
833
  continue;
735
834
  }
736
835
  if (!isTransientForPoll(err))
737
836
  throw err;
837
+ // What actually refused, rather than one sentence for every
838
+ // failure. A 409 IS the guest not being up yet — that is the
839
+ // probe working, and it repeats the line beat in front of the
840
+ // probe so the throttle holds it. A 503 is a hypervisor nobody
841
+ // can reach and a transport abort is neither: saying "the guest
842
+ // is not answering" over those tells the person watching the log
843
+ // the one thing this channel exists to get right.
844
+ //
845
+ // And it SETS `blocked`, which it never did — not before this
846
+ // change and not after the first version of it. A wait that spent
847
+ // its whole window failing the probe on 503s gave up saying "was
848
+ // last seen running" and named nothing, while the progress
849
+ // channel had been reporting the hypervisor the entire time: the
850
+ // same contradiction this comment set out to remove, pointed the
851
+ // other way (/code-review). Deliberately not for the 409, where
852
+ // the platform did answer and `blocked` would be a lie about it.
853
+ if (!(err instanceof ConflictError)) {
854
+ blocked = err instanceof Error ? err.message : String(err);
855
+ }
856
+ await beat(err instanceof ConflictError
857
+ ? `Waiting for ${id} — running; asking the guest.`
858
+ : `Waiting for ${id} — running; the platform could not be asked: ${blocked}`);
738
859
  // The guest probe's own failure decides this turn's interval, for
739
860
  // pollDelay's reason. The ordinary path below keeps POLL_MS.
740
861
  await sleep(pollDelay(err), signal);
@@ -761,7 +882,41 @@ export const registerComputers = (server, session, opts) => {
761
882
  .default(false)
762
883
  .describe('Return the full-control URL instead of the watch-only one. It carries a token that is root-equivalent on that machine — the watch-only socket has input dropped by the platform, not merely hidden by the client.'),
763
884
  },
764
- annotations: { readOnlyHint: true },
885
+ // NO readOnlyHint, for a reason distinct from both the ones already in
886
+ // this codebase: the SPEND rule (OPL-4499 — cursor_position and read_file
887
+ // resume a suspended computer) and the CONSUMING-READ rule (exec_poll,
888
+ // poll_events and wait_for_event advance a cursor no later call can
889
+ // re-read, and wait_for_file_change also configures). This is a fourth,
890
+ // decided in OPL-4505 and written here so it is not re-litigated.
891
+ //
892
+ // `GET /computers/:id` modifies nothing and spends nothing, so under the
893
+ // rule as first written the hint was accurate. What the rule was missing
894
+ // is that the annotation does not only describe the route: clients treat
895
+ // it as licence to call without asking, which is the reading input.ts
896
+ // already states beside `cursor_position`. This call hands back a
897
+ // credential — with `control: true`, one that is root-equivalent on the
898
+ // machine — so under a host that auto-approves read-only tools, a model
899
+ // could pass out control of a desktop with nobody asked. The description
900
+ // says "these are credentials in a link", but a description is not a gate.
901
+ //
902
+ // So, added to the list: the hint is withheld from a tool that returns a
903
+ // CREDENTIAL-EQUIVALENT. This is the only one today; the next tool that
904
+ // hands back a token, a signed URL or a key belongs here with it rather
905
+ // than in an argument about whether a read is a read.
906
+ //
907
+ // Credential-equivalent, and deliberately not "sensitive". A screenshot
908
+ // of a desktop with a password on it is sensitive, and it is not
909
+ // something this call revealed the keys to — a rule drawn that wide would
910
+ // take the hint off every read there is, which is why `screenshot`,
911
+ // `read_clipboard` and `list_windows` keep theirs.
912
+ //
913
+ // The other two flags are set rather than left to default, for the reason
914
+ // `cursor_position` sets them: the spec defaults destructiveHint to TRUE
915
+ // and idempotentHint to FALSE once readOnlyHint is gone, so leaving them
916
+ // out would have a host asking whether it may perform destructive updates
917
+ // in order to read a URL, and refusing to retry a call that is safe to
918
+ // retry.
919
+ annotations: { destructiveHint: false, idempotentHint: true },
765
920
  }, ({ computer_id, control }, extra) => guarded(async () => {
766
921
  const id = session.resolve(computer_id);
767
922
  const c = unwrapComputer(await session.api.with(extra.signal).json('GET', P.computer(id)));
@@ -1000,8 +1155,32 @@ export const registerComputers = (server, session, opts) => {
1000
1155
  // Unbound BEFORE the rethrow-or-report decision, because it is true
1001
1156
  // either way: whatever this answers, the caller must not be left
1002
1157
  // selected on a computer the platform says is gone.
1003
- if (!(err instanceof NotFoundError))
1158
+ if (!(err instanceof NotFoundError)) {
1159
+ // The VM is destroyed before snapshots are purged, so a failed
1160
+ // DELETE does not establish whether it survived. Ask once, with
1161
+ // the same account/workspace scope, and preserve the primary error
1162
+ // even if this read fails. Neither error prose nor a lost or
1163
+ // unreachable record proves deletion. The short deadline includes
1164
+ // reading the body; reconciliation must not hold the error hostage
1165
+ // to the transport's much longer foreground-exec allowance.
1166
+ if (!extra.signal.aborted) {
1167
+ const signal = AbortSignal.any([extra.signal, AbortSignal.timeout(5_000)]);
1168
+ let absent = false;
1169
+ try {
1170
+ const c = unwrapComputer(await session.api.with(signal).json('GET', P.computer(computer_id)));
1171
+ absent =
1172
+ c.id === computer_id.trim() && c.state === 'deleted' && c.unreachable !== true;
1173
+ }
1174
+ catch (readError) {
1175
+ absent = readError instanceof NotFoundError;
1176
+ }
1177
+ // unbind also drops events and invalidates pending selections
1178
+ // of this id, while preserving a different selected computer.
1179
+ if (absent && !signal.aborted)
1180
+ session.unbind(computer_id);
1181
+ }
1004
1182
  throw err;
1183
+ }
1005
1184
  session.unbind(computer_id);
1006
1185
  // Reported as a success rather than an error, and deliberately not as
1007
1186
  // a plain "Deleted": a caller retrying cannot be told its snapshots
@@ -1 +1 @@
1
- {"version":3,"file":"computers.js","sourceRoot":"","sources":["../../src/tools/computers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"computers.js","sourceRoot":"","sources":["../../src/tools/computers.ts"],"names":[],"mappings":"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"}