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
package/dist/paths.js CHANGED
@@ -8,12 +8,12 @@
8
8
  * rather than a failure here.
9
9
  */
10
10
  export const TEMPLATES = 'templates';
11
- /** The JSON Schema for a `mandala/v1` document (platform OPL-3568). */
11
+ /** The JSON Schema for a `mandala/v1` document (OPL-3568). */
12
12
  export const TEMPLATE_SCHEMA = 'templates/schema';
13
13
  /** Check a document without publishing it. Side-effect free, and claims no ref. */
14
14
  export const TEMPLATE_VALIDATE = 'templates/validate';
15
15
  /**
16
- * Every build this account has started (platform OPL-3791).
16
+ * Every build this account has started (OPL-3791).
17
17
  *
18
18
  * A collection, like {@link MOVES} and for the same reason: a build is a job
19
19
  * rather than a property of a computer, and it outlives the request that
@@ -44,7 +44,7 @@ export const USAGE = 'usage';
44
44
  */
45
45
  export const RETENTION = 'retention';
46
46
  /**
47
- * The account's webhook subscriptions (platform OPL-4300; OPL-4306 here).
47
+ * The account's webhook subscriptions (OPL-4300; OPL-4306 here).
48
48
  *
49
49
  * Account-scoped like {@link USAGE}: a subscription receives events from many
50
50
  * computers, so it belongs to the account and not to any of them. Answered by
@@ -126,7 +126,7 @@ export const execHandle = (id, pid) => {
126
126
  /** One window on the desktop (OPL-3583). The id is `0x2600003`-shaped. */
127
127
  export const window_ = (id, windowId) => `${computer(id)}/windows/${segment('window_id', windowId)}`;
128
128
  /**
129
- * One published template, by the two halves of its ref (platform OPL-3789).
129
+ * One published template, by the two halves of its ref (OPL-3789).
130
130
  *
131
131
  * Two segments and not one, because that is the shape of the route: the
132
132
  * platform reduces `templates/<a>/<b>` to `templates/:namespace/:name`, so a
@@ -180,11 +180,11 @@ export const buildAction = (id, action) => `${build(id)}/${action}`;
180
180
  * `no_reuse`, sent only when it is asked for.
181
181
  *
182
182
  * Omitted rather than sent as `false`, and the reason is the documented schema
183
- * rather than a claim about the parser: lib/apidoc gives this parameter
183
+ * rather than a claim about the parser: the platform's reference gives this parameter
184
184
  * `enum: ['true']`, so `true` is the only value the reference admits.
185
185
  *
186
186
  * This said the platform reads the key's PRESENCE, which is false —
187
- * server/buildjob.go reads `Get("no_reuse") == "true"`. The request was right
187
+ * the platform reads `no_reuse == "true"`. The request was right
188
188
  * either way; the stated reason was not (/code-review, OPL-3835).
189
189
  */
190
190
  export const buildQuery = (noReuse) => noReuse ? { no_reuse: 'true' } : {};
@@ -223,6 +223,16 @@ export function openUrlCommand(url) {
223
223
  // with one, so that is refused outright rather than quoted.
224
224
  if (trimmed.startsWith('-'))
225
225
  throw new Error(`url must not start with '-': ${trimmed}`);
226
+ // Refused here, where the caller can act on it. `execBody` refuses the same
227
+ // text a moment later, but `open_url` takes no `command` — a refusal naming
228
+ // one, and telling the caller to cut it on a character boundary, names a
229
+ // parameter they cannot see and never passed. `z.string().url()` accepts an
230
+ // unpaired surrogate, so this is the check, not a second opinion.
231
+ if (hasUnpairedSurrogate(trimmed)) {
232
+ throw new Error('url must not contain an unpaired surrogate — half of a character, usually from a string cut ' +
233
+ 'through the middle of an emoji. It is not valid UTF-8, so the browser would be asked for an ' +
234
+ 'address other than the one you sent.');
235
+ }
226
236
  return `nohup firefox ${shellQuote(trimmed)} >/dev/null 2>&1 &`;
227
237
  }
228
238
  /** POSIX single-quoting: the only characters that survive are the ones inside. */
@@ -234,7 +244,7 @@ export function execBody(args) {
234
244
  // reaches the guest without anything checking it. `execEnv` below refuses one
235
245
  // for this exact reason, and the platform refuses one in `cwd` and in every
236
246
  // file path — `validGuestPath` rejects the whole control range — but its only
237
- // test on `command` is that it is not empty (server/api.go). So a command
247
+ // test on `command` is that it is not empty. So a command
238
248
  // carrying a NUL is truncated at the guest's argv boundary: a shorter command
239
249
  // than the caller wrote runs, and its exit code is reported as an ordinary
240
250
  // success. The same shape as the surrogate refusals — a call that works and
@@ -243,6 +253,23 @@ export function execBody(args) {
243
253
  throw new Error('command must not contain a NUL: a NUL ends a C string, so the guest would run only the part ' +
244
254
  'in front of it and report that as a success.');
245
255
  }
256
+ // The other half of that same shape. A command cut through the middle of an
257
+ // emoji reaches the guest as U+FFFD — `JSON.stringify` escapes the lone code
258
+ // unit and Go's `encoding/json` decodes it to the replacement character — so
259
+ // a command that is not the one asked for runs, and its exit code is reported
260
+ // as an ordinary success. `cwd` names a directory that then does not exist,
261
+ // which fails loudly, but it is the same corruption and the same refusal.
262
+ if (hasUnpairedSurrogate(args.command)) {
263
+ throw new Error('command must not contain an unpaired surrogate — half of a character, usually from a string ' +
264
+ 'cut through the middle of an emoji. It is not valid UTF-8: the guest would receive a ' +
265
+ 'replacement character in its place and run a command other than the one you sent, then ' +
266
+ 'report that as a success. Send the whole character, or cut the command on a character boundary.');
267
+ }
268
+ if (args.cwd !== undefined && hasUnpairedSurrogate(args.cwd)) {
269
+ throw new Error('cwd must not contain an unpaired surrogate — half of a character, usually from a string cut ' +
270
+ 'through the middle of an emoji. It is not valid UTF-8, so the guest would look for a ' +
271
+ 'directory whose name is not the one you sent.');
272
+ }
246
273
  const body = { command: args.command };
247
274
  if (args.timeout_s !== undefined)
248
275
  body.timeout_s = args.timeout_s;
@@ -263,7 +290,7 @@ export function execBody(args) {
263
290
  * The environment for one command, refused here rather than at the platform.
264
291
  *
265
292
  * An empty object is dropped rather than sent, for the reason `desktop` is
266
- * dropped: `execEnvList` returns nil for `len(env) == 0`, so an empty object and
293
+ * dropped: the platform drops an empty list of its own accord, so an empty object and
267
294
  * an absent one are already the same request, and the one that says so in fewer
268
295
  * fields is the one worth sending.
269
296
  *
@@ -281,6 +308,15 @@ export function execBody(args) {
281
308
  * assignment written into the name, which is the same mistake as writing the
282
309
  * assignment into the command line — so the refusal says the shape rather than
283
310
  * just the rule.
311
+ *
312
+ * The UNPAIRED SURROGATE is not one of the platform's rules and is not being
313
+ * mirrored from it. It is this server's own refusal to send text that silently
314
+ * becomes something else, the one {@link clipboardBody}, {@link typeBody} and
315
+ * `write_file` already make: `JSON.stringify` escapes the lone code unit, Go's
316
+ * `encoding/json` decodes it to U+FFFD, and the guest gets an environment value
317
+ * that is not the one the caller asked for while the call reports success. A
318
+ * model emitting half of a truncated emoji is the ordinary way in, and env is
319
+ * the fourth path a caller's own characters take into the guest.
284
320
  */
285
321
  export function execEnv(env) {
286
322
  if (!env)
@@ -299,9 +335,17 @@ export function execEnv(env) {
299
335
  if (name.includes('\0') || value.includes('\0')) {
300
336
  throw new Error(`env entry ${name} must not contain a NUL`);
301
337
  }
338
+ if (hasUnpairedSurrogate(name) || hasUnpairedSurrogate(value)) {
339
+ throw new Error(`env entry ${name}: ${envSurrogateRefusal}`);
340
+ }
302
341
  }
303
342
  return Object.fromEntries(entries);
304
343
  }
344
+ const envSurrogateRefusal = 'that name or value has an unpaired surrogate in it — half of a character, usually from a ' +
345
+ 'string cut through the middle of an emoji. It is not valid UTF-8: it reaches the guest as a ' +
346
+ 'replacement character, so the command would run with an environment that is not the one you ' +
347
+ 'asked for and the call would report success. Nothing was run. Send the whole character, or ' +
348
+ 'cut the text on a character boundary.';
305
349
  // --- input ----------------------------------------------------------------
306
350
  //
307
351
  // The verb set is Anthropic's computer tool, in full, because the platform's
@@ -332,7 +376,7 @@ function wholePoint(x, y) {
332
376
  * No coordinate means "where the pointer already is", which is a real and
333
377
  * different request from clicking (0, 0) — the corner of the screen. So the
334
378
  * keys are omitted rather than sent as zeros; the platform carries that
335
- * distinction all the way down to `inputWire` in server/input.go.
379
+ * distinction all the way down to the platform's own input wire format.
336
380
  */
337
381
  export function clickBody(action, x, y, modifiers = []) {
338
382
  wholePoint(x, y);
@@ -406,8 +450,8 @@ export function scrollBody(args) {
406
450
  *
407
451
  * What happens NEXT is this route's own, and it is worth stating precisely
408
452
  * rather than borrowing the clipboard's sentence. The platform's `type` handler
409
- * walks runes and looks each one up in `charKeys` — a printable-ASCII map — and
410
- * `continue`s past anything it does not find (server/input.go). So the
453
+ * walks runes and looks each one up in a printable-ASCII map — and
454
+ * `continue`s past anything it does not find. So the
411
455
  * replacement character is not typed onto the desktop; it is DROPPED, and the
412
456
  * tool goes on to report `Typed N character(s).` counting the character that
413
457
  * never arrived. Either way the screen does not hold what the caller asked for
@@ -493,7 +537,7 @@ export function windowBody(args) {
493
537
  *
494
538
  * Mirrored so a request that can only fail is not made. NOT machine-checked —
495
539
  * `scripts/check-surface.mjs` reads the platform's `web/lib`, and this number
496
- * lives in its `server/clipboard.go` as `clipboardWriteMax`. It is not
540
+ * lives in the platform's own source as a constant. It is not
497
541
  * arbitrary: the platform puts the text inside one argument of one command,
498
542
  * Linux caps a single argv string at 128 KiB, and two layers of base64 stand
499
543
  * between the text and that ceiling, so each byte costs about 1.8 of it. Past
@@ -592,7 +636,7 @@ export function clipboardBody(text) {
592
636
  * A name that is only whitespace is dropped rather than sent, and that is the
593
637
  * one case worth spelling out. The daemon defaults an EMPTY name to
594
638
  * "<computer> <timestamp>" and stores anything else exactly as it arrives (see
595
- * `newSnapMeta` in the platform's server/snapshot.go), so " " is the single
639
+ * the platform's own snapshot metadata), so " " is the single
596
640
  * input that produces a snapshot nobody can pick out of a list — a blank row
597
641
  * where the generated name it displaced would have said something.
598
642
  */
@@ -615,7 +659,7 @@ export function agentBody(args) {
615
659
  export const webhook = (id) => `${WEBHOOKS}/${segment('webhook_id', id)}`;
616
660
  /** rotate | test | deliveries */
617
661
  export const webhookAction = (id, action) => `${webhook(id)}/${action}`;
618
- /** The platform's own caps (`DESCRIPTION_MAX`, `COMPUTERS_MAX` in its lib/webhooks). */
662
+ /** The platform's own caps (`DESCRIPTION_MAX` and `COMPUTERS_MAX` on the platform side). */
619
663
  export const WEBHOOK_DESCRIPTION_MAX = 200;
620
664
  export const WEBHOOK_COMPUTERS_MAX = 64;
621
665
  /**
@@ -659,8 +703,16 @@ export function webhookBody(args) {
659
703
  throw new Error(`description is ${args.description.length} characters; the platform keeps at most ${WEBHOOK_DESCRIPTION_MAX}`);
660
704
  }
661
705
  const events = args.events === undefined ? undefined : [...new Set(args.events)];
662
- const computers = args.computers === undefined ? undefined : [...new Set(args.computers)];
663
- if (computers?.some((c) => !c.trim())) {
706
+ // Trimmed BEFORE the de-duplication, and the trimmed ids are what is sent.
707
+ // The tool's schema is a bare array of strings, so whatever a model writes
708
+ // arrives verbatim: `['vm-1', ' vm-1']` deduped to two entries naming one
709
+ // machine, both counted against the platform's cap, and the second of them a
710
+ // filter that matches no computer — a subscription that silently delivers
711
+ // nothing for a machine the caller asked for. `segment()` normalises an id on
712
+ // every other route for the same reason, and `session.ts`'s `id()` lists what
713
+ // it costs not to.
714
+ const computers = args.computers === undefined ? undefined : [...new Set(args.computers.map((c) => c.trim()))];
715
+ if (computers?.some((c) => !c)) {
664
716
  throw new Error('computers must not contain an empty id');
665
717
  }
666
718
  if (computers && computers.length > WEBHOOK_COMPUTERS_MAX) {
package/dist/paths.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
package/dist/poll.d.ts ADDED
@@ -0,0 +1,103 @@
1
+ /**
2
+ * The machinery every wait loop in this server shares.
3
+ *
4
+ * Its own module rather than lines in computers.ts, because there are now poll
5
+ * loops in two tool files: `wait_for_computer` and `move_computer` watch a
6
+ * computer, and `create_snapshot` watches a capture the platform answers a 202
7
+ * for. A second copy of a two-second interval is not the problem — a second
8
+ * copy of the RULES around it is, and the one that matters is `pollDelay`:
9
+ * a loop that forgot it spends a rate limit discovering it is still rate
10
+ * limited, and nothing about the call site says so.
11
+ */
12
+ /**
13
+ * A pause that ends early when the caller gives up.
14
+ *
15
+ * The wait loops check the signal at the top of each turn, so a sleep that
16
+ * ignored it would still hold a cancelled call for its remaining seconds.
17
+ */
18
+ export declare const sleep: (ms: number, signal?: AbortSignal) => Promise<void>;
19
+ /** How long these loops leave between polls. */
20
+ export declare const POLL_MS = 2000;
21
+ /**
22
+ * The same interval, unless the platform asked for longer.
23
+ *
24
+ * A 429 is the one failure that says how long to wait, and
25
+ * {@link isTransientForPoll} now polls through it — so a loop that ignored
26
+ * `Retry-After` and asked again in two seconds would be spending a rate limit
27
+ * to discover it was still rate limited. The floor stays {@link POLL_MS}: the
28
+ * header can say zero, and a poll loop with no interval is a request storm.
29
+ *
30
+ * Only reached from a failed poll, which is why it takes the error rather than
31
+ * living in {@link sleep}: an ordinary turn has nothing to honour.
32
+ */
33
+ export declare const pollDelay: (err: unknown) => number;
34
+ /**
35
+ * How long a wait may go without saying anything.
36
+ *
37
+ * The loops here wake every {@link POLL_MS}, and a notification per turn would
38
+ * be 900 of them across a half-hour capture — the MCP spec asks implementations
39
+ * to rate-limit progress, and a client rendering every frame of "still
40
+ * capturing" is not better informed for it. So a turn that CHANGED something is
41
+ * always reported and an unchanged one is reported at this interval, which is
42
+ * well inside the 60s default that makes any of this necessary.
43
+ */
44
+ export declare const HEARTBEAT_MS = 10000;
45
+ /**
46
+ * What a tool needs from its MCP request in order to be heard while it waits.
47
+ *
48
+ * Structural rather than the SDK's own type: the two members below are all this
49
+ * uses, and naming them here keeps `src/poll.ts` from importing the server's
50
+ * request plumbing to describe a keepalive.
51
+ */
52
+ export type ProgressExtra = {
53
+ _meta?: {
54
+ progressToken?: string | number;
55
+ } | undefined;
56
+ sendNotification: (notification: {
57
+ method: 'notifications/progress';
58
+ params: {
59
+ progressToken: string | number;
60
+ progress: number;
61
+ total?: number;
62
+ message?: string;
63
+ };
64
+ }) => Promise<void>;
65
+ };
66
+ /** Somewhere to log a line for a person watching, without importing McpServer. */
67
+ export type Logger = {
68
+ sendLoggingMessage: (m: {
69
+ level: 'info';
70
+ data: string;
71
+ }) => Promise<void>;
72
+ };
73
+ /**
74
+ * The keepalive a wait longer than a minute owes the client it is keeping.
75
+ *
76
+ * WHY A TOOL THAT WAITS HAS TO SPEAK. `_onprogress` in the SDK's
77
+ * shared/protocol.js resets a pending request's timer; `notifications/message`
78
+ * — what `sendLoggingMessage` emits — never touches it. So a tool that only
79
+ * logs is, to the client's timer, a tool that has hung: the request is
80
+ * cancelled at the 60s default while the platform goes on copying a disk, and
81
+ * the model reads a transport error instead of the sentence the tool was
82
+ * written to give it. Observed, not theorised — a live capture took 107s and
83
+ * was cancelled at 60 (OPL-4579), and `run_agent` had the same defect before
84
+ * OPL-4419, where a twenty-step run was cancelled mid-way while still billing
85
+ * the caller's own Anthropic key.
86
+ *
87
+ * IT IS NOT SUFFICIENT ON ITS OWN and no description may claim it is.
88
+ * protocol.js reads `options?.resetTimeoutOnProgress ?? false`, so the reset
89
+ * happens only for a client that asked for it when it made the call. What this
90
+ * does is make the keepalive AVAILABLE — without it no client could hold the
91
+ * request open at all; with it, one that opts in can. The rest is the client's
92
+ * to set, and every tool using this has a `wait: false` or a second call for a
93
+ * client that cannot.
94
+ *
95
+ * Both channels on the same turns, because they answer different people. The
96
+ * progress notification is for the client's timer; the log line is what someone
97
+ * watching a terminal sees, and is the only channel when no token was sent.
98
+ *
99
+ * Failures are swallowed on purpose: a notification nobody could take delivery
100
+ * of must not end a wait that is otherwise going fine.
101
+ */
102
+ export declare function heartbeat(extra: ProgressExtra, log: Logger | undefined, everyMs?: number): (line: string) => Promise<void>;
103
+ //# sourceMappingURL=poll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll.d.ts","sourceRoot":"","sources":["../src/poll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,EAAE,SAAS,WAAW,kBAUlD,CAAC;AAEL,gDAAgD;AAChD,eAAO,MAAM,OAAO,OAAQ,CAAC;AAE7B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GAAI,KAAK,OAAO,KAAG,MAG5B,CAAC;AAEd;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,QAAS,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACxD,gBAAgB,EAAE,CAAC,YAAY,EAAE;QAC/B,MAAM,EAAE,wBAAwB,CAAC;QACjC,MAAM,EAAE;YACN,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;YAC/B,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;KACH,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB,CAAC;AAEF,kFAAkF;AAClF,MAAM,MAAM,MAAM,GAAG;IAAE,kBAAkB,EAAE,CAAC,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAEnG;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,OAAO,GAAE,MAAqB,GAC7B,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAwCjC"}
package/dist/poll.js ADDED
@@ -0,0 +1,129 @@
1
+ /**
2
+ * The machinery every wait loop in this server shares.
3
+ *
4
+ * Its own module rather than lines in computers.ts, because there are now poll
5
+ * loops in two tool files: `wait_for_computer` and `move_computer` watch a
6
+ * computer, and `create_snapshot` watches a capture the platform answers a 202
7
+ * for. A second copy of a two-second interval is not the problem — a second
8
+ * copy of the RULES around it is, and the one that matters is `pollDelay`:
9
+ * a loop that forgot it spends a rate limit discovering it is still rate
10
+ * limited, and nothing about the call site says so.
11
+ */
12
+ import { RateLimitError } from './errors.js';
13
+ /**
14
+ * A pause that ends early when the caller gives up.
15
+ *
16
+ * The wait loops check the signal at the top of each turn, so a sleep that
17
+ * ignored it would still hold a cancelled call for its remaining seconds.
18
+ */
19
+ export const sleep = (ms, signal) => new Promise((resolve) => {
20
+ if (signal?.aborted)
21
+ return resolve();
22
+ const t = setTimeout(done, ms);
23
+ function done() {
24
+ clearTimeout(t);
25
+ signal?.removeEventListener('abort', done);
26
+ resolve();
27
+ }
28
+ signal?.addEventListener('abort', done, { once: true });
29
+ });
30
+ /** How long these loops leave between polls. */
31
+ export const POLL_MS = 2_000;
32
+ /**
33
+ * The same interval, unless the platform asked for longer.
34
+ *
35
+ * A 429 is the one failure that says how long to wait, and
36
+ * {@link isTransientForPoll} now polls through it — so a loop that ignored
37
+ * `Retry-After` and asked again in two seconds would be spending a rate limit
38
+ * to discover it was still rate limited. The floor stays {@link POLL_MS}: the
39
+ * header can say zero, and a poll loop with no interval is a request storm.
40
+ *
41
+ * Only reached from a failed poll, which is why it takes the error rather than
42
+ * living in {@link sleep}: an ordinary turn has nothing to honour.
43
+ */
44
+ export const pollDelay = (err) => err instanceof RateLimitError && err.retryAfterMs !== undefined
45
+ ? Math.max(POLL_MS, err.retryAfterMs)
46
+ : POLL_MS;
47
+ /**
48
+ * How long a wait may go without saying anything.
49
+ *
50
+ * The loops here wake every {@link POLL_MS}, and a notification per turn would
51
+ * be 900 of them across a half-hour capture — the MCP spec asks implementations
52
+ * to rate-limit progress, and a client rendering every frame of "still
53
+ * capturing" is not better informed for it. So a turn that CHANGED something is
54
+ * always reported and an unchanged one is reported at this interval, which is
55
+ * well inside the 60s default that makes any of this necessary.
56
+ */
57
+ export const HEARTBEAT_MS = 10_000;
58
+ /**
59
+ * The keepalive a wait longer than a minute owes the client it is keeping.
60
+ *
61
+ * WHY A TOOL THAT WAITS HAS TO SPEAK. `_onprogress` in the SDK's
62
+ * shared/protocol.js resets a pending request's timer; `notifications/message`
63
+ * — what `sendLoggingMessage` emits — never touches it. So a tool that only
64
+ * logs is, to the client's timer, a tool that has hung: the request is
65
+ * cancelled at the 60s default while the platform goes on copying a disk, and
66
+ * the model reads a transport error instead of the sentence the tool was
67
+ * written to give it. Observed, not theorised — a live capture took 107s and
68
+ * was cancelled at 60 (OPL-4579), and `run_agent` had the same defect before
69
+ * OPL-4419, where a twenty-step run was cancelled mid-way while still billing
70
+ * the caller's own Anthropic key.
71
+ *
72
+ * IT IS NOT SUFFICIENT ON ITS OWN and no description may claim it is.
73
+ * protocol.js reads `options?.resetTimeoutOnProgress ?? false`, so the reset
74
+ * happens only for a client that asked for it when it made the call. What this
75
+ * does is make the keepalive AVAILABLE — without it no client could hold the
76
+ * request open at all; with it, one that opts in can. The rest is the client's
77
+ * to set, and every tool using this has a `wait: false` or a second call for a
78
+ * client that cannot.
79
+ *
80
+ * Both channels on the same turns, because they answer different people. The
81
+ * progress notification is for the client's timer; the log line is what someone
82
+ * watching a terminal sees, and is the only channel when no token was sent.
83
+ *
84
+ * Failures are swallowed on purpose: a notification nobody could take delivery
85
+ * of must not end a wait that is otherwise going fine.
86
+ */
87
+ export function heartbeat(extra, log, everyMs = HEARTBEAT_MS) {
88
+ const progressToken = extra._meta?.progressToken;
89
+ let sent = 0;
90
+ let spoken = false;
91
+ let last = '';
92
+ let at = 0;
93
+ return async (line) => {
94
+ const now = Date.now();
95
+ // A changed line is news and goes out at once; an unchanged one is a
96
+ // keepalive and goes out on the interval. `spoken` covers the first turn,
97
+ // which is the one that establishes the channel — a client that will not
98
+ // hear anything for ten seconds has already spent a sixth of its default
99
+ // budget.
100
+ //
101
+ // Its own flag rather than `sent > 0`, which is the notification COUNT and
102
+ // is therefore stuck at zero for the whole of a wait whose client minted no
103
+ // token (/code-review). The throttle then never applied to the one channel
104
+ // still running: ~900 identical "still copying" log lines across a
105
+ // half-hour capture, which is the flood the comment above says is avoided.
106
+ // The two are different questions — whether anything has been said, and how
107
+ // many progress frames have gone out — and only the first gates this.
108
+ if (spoken && line === last && now - at < everyMs)
109
+ return;
110
+ spoken = true;
111
+ last = line;
112
+ at = now;
113
+ if (progressToken !== undefined) {
114
+ sent += 1;
115
+ await extra
116
+ .sendNotification({
117
+ method: 'notifications/progress',
118
+ // `progress` is the count of notifications, which the SDK's
119
+ // ProgressSchema asks to increase every time. No `total`: a wait does
120
+ // not know how many turns it will take, and a total of 0 renders as a
121
+ // finished bar.
122
+ params: { progressToken, progress: sent, message: line },
123
+ })
124
+ .catch(() => { });
125
+ }
126
+ await log?.sendLoggingMessage({ level: 'info', data: line }).catch(() => { });
127
+ };
128
+ }
129
+ //# sourceMappingURL=poll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll.js","sourceRoot":"","sources":["../src/poll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,MAAoB,EAAE,EAAE,CACxD,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;IAC5B,IAAI,MAAM,EAAE,OAAO;QAAE,OAAO,OAAO,EAAE,CAAC;IACtC,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/B,SAAS,IAAI;QACX,YAAY,CAAC,CAAC,CAAC,CAAC;QAChB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEL,gDAAgD;AAChD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC;AAE7B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAY,EAAU,EAAE,CAChD,GAAG,YAAY,cAAc,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS;IAC7D,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC;IACrC,CAAC,CAAC,OAAO,CAAC;AAEd;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AAyBnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,SAAS,CACvB,KAAoB,EACpB,GAAuB,EACvB,UAAkB,YAAY;IAE9B,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC;IACjD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,OAAO,KAAK,EAAE,IAAY,EAAE,EAAE;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,qEAAqE;QACrE,0EAA0E;QAC1E,yEAAyE;QACzE,yEAAyE;QACzE,UAAU;QACV,EAAE;QACF,2EAA2E;QAC3E,4EAA4E;QAC5E,2EAA2E;QAC3E,mEAAmE;QACnE,2EAA2E;QAC3E,4EAA4E;QAC5E,sEAAsE;QACtE,IAAI,MAAM,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,OAAO;YAAE,OAAO;QAC1D,MAAM,GAAG,IAAI,CAAC;QACd,IAAI,GAAG,IAAI,CAAC;QACZ,EAAE,GAAG,GAAG,CAAC;QACT,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,CAAC;YACV,MAAM,KAAK;iBACR,gBAAgB,CAAC;gBAChB,MAAM,EAAE,wBAAwB;gBAChC,4DAA4D;gBAC5D,sEAAsE;gBACtE,sEAAsE;gBACtE,gBAAgB;gBAChB,MAAM,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;aACzD,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,MAAM,GAAG,EAAE,kBAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC/E,CAAC,CAAC;AACJ,CAAC"}
package/dist/server.d.ts CHANGED
@@ -2,7 +2,7 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { type SessionConfig } from './session.js';
3
3
  import type { ToolOptions } from './tools/types.js';
4
4
  export declare const SERVER_NAME = "mandala-computer";
5
- export declare const SERVER_VERSION = "0.1.0";
5
+ export declare const SERVER_VERSION = "0.1.2";
6
6
  export type ServerConfig = SessionConfig & Partial<ToolOptions> & {
7
7
  /** Internal HTTP hook: hold a session active for the real tool callback lifetime. */
8
8
  activity?: () => () => void;
package/dist/server.js CHANGED
@@ -9,7 +9,7 @@ import { registerSnapshots } from './tools/snapshots.js';
9
9
  import { registerTemplates } from './tools/templates.js';
10
10
  import { registerWebhooks } from './tools/webhooks.js';
11
11
  export const SERVER_NAME = 'mandala-computer';
12
- export const SERVER_VERSION = '0.1.0';
12
+ export const SERVER_VERSION = '0.1.2';
13
13
  /**
14
14
  * Told to the client on connect, and shown to the model before any tool is
15
15
  * called. It is the only place to say the things that are true of the whole
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/tools/agent.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,EAAE,SAwI3B,CAAC"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/tools/agent.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,EAAE,SAqJ3B,CAAC"}
@@ -104,7 +104,7 @@ export const registerAgent = (server, session) => {
104
104
  // Terminal means it SAYS SO, which is watch_build's discipline
105
105
  // (OPL-3835) applied to this stream's own vocabulary: `stop` is the
106
106
  // field the platform always sends on a result — the AgentResult type
107
- // in its lib/agent.ts requires it, and every `done` it yields carries
107
+ // on the platform side requires it, and every `done` it yields carries
108
108
  // one — and it is the field the verdict below reads. A record
109
109
  // without it is not a result, so it is kept, in case nothing better
110
110
  // arrives, but it does not end the loop and discard the frame that
@@ -139,7 +139,19 @@ export const registerAgent = (server, session) => {
139
139
  : stop === 'refusal'
140
140
  ? 'the model declined the task'
141
141
  : `ended: ${stop}`;
142
- const result = `${verdict}\n\n${String(done.text ?? '')}\n\nWhat it did:\n${steps.join('\n')}`;
142
+ // Interpolated only when it IS a string, which is the same discipline
143
+ // `stop` gets three lines up. `String()` over a shape this build does
144
+ // not know — a content-block array is the plausible one — renders the
145
+ // run's whole output as `[object Object]` in the sentence that carries
146
+ // it, and a model reading that has lost the result while being told it
147
+ // finished. Serialized instead: unfamiliar but readable beats confident
148
+ // and empty.
149
+ const text = typeof done.text === 'string'
150
+ ? done.text
151
+ : done.text === undefined || done.text === null
152
+ ? ''
153
+ : JSON.stringify(done.text);
154
+ const result = `${verdict}\n\n${text}\n\nWhat it did:\n${steps.join('\n')}`;
143
155
  return stop === 'end_turn' ? said(result, done) : refused(result, done);
144
156
  }));
145
157
  };
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/tools/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/tools/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAGjC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,aAAa,GAAc,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IAC1D,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,OAAO;IAE9B,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,sCAAsC;QAC7C,WAAW,EACT,2qBAA2qB;QAC7qB,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACrF,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CACP,6GAA6G,CAC9G;SACJ;QACD,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;KACrC,EACD,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,CACpD,OAAO,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAyC,CAAC;QAC9C,gEAAgE;QAChE,kEAAkE;QAClE,kEAAkE;QAClE,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC;QAEjD,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YAC5E,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC9D,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,QAAkB,EAAE;YAC3D,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,EAAE,CAAC;YACH,IAAI,EAAE,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACjC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAwD,CAAC;gBACtE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;gBAC5E,kEAAkE;gBAClE,oDAAoD;gBACpD,2DAA2D;gBAC3D,kEAAkE;gBAClE,mEAAmE;gBACnE,qEAAqE;gBACrE,qEAAqE;gBACrE,4DAA4D;gBAC5D,EAAE;gBACF,iEAAiE;gBACjE,uEAAuE;gBACvE,iEAAiE;gBACjE,mEAAmE;gBACnE,mEAAmE;gBACnE,sBAAsB;gBACtB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAChC,MAAM,KAAK;yBACR,gBAAgB,CAAC;wBAChB,MAAM,EAAE,wBAAwB;wBAChC,MAAM,EAAE;4BACN,aAAa;4BACb,yDAAyD;4BACzD,0DAA0D;4BAC1D,2DAA2D;4BAC3D,uDAAuD;4BACvD,QAAQ,EAAE,KAAK,CAAC,MAAM;4BACtB,KAAK,EAAE,SAAS;4BAChB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;yBACjC;qBACF,CAAC;yBACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACrB,CAAC;gBACD,qEAAqE;gBACrE,qEAAqE;gBACrE,eAAe;gBACf,MAAM,MAAM,CAAC,MAAM;qBAChB,kBAAkB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;qBACpE,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACrB,CAAC;iBAAM,IAAI,EAAE,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBAC/B,6DAA6D;gBAC7D,mEAAmE;gBACnE,qEAAqE;gBACrE,oEAAoE;gBACpE,8CAA8C;gBAC9C,EAAE;gBACF,+DAA+D;gBAC/D,oEAAoE;gBACpE,qEAAqE;gBACrE,uEAAuE;gBACvE,8DAA8D;gBAC9D,oEAAoE;gBACpE,mEAAmE;gBACnE,qEAAqE;gBACrE,qEAAqE;gBACrE,IAAI,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtB,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;oBACf,IAAI,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI;wBAAE,MAAM;gBAC9D,CAAC;YACH,CAAC;iBAAM,IAAI,EAAE,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;gBAChC,iEAAiE;gBACjE,kEAAkE;gBAClE,oEAAoE;gBACpE,mEAAmE;gBACnE,iCAAiC;gBACjC,OAAO,OAAO,CAAC,wBAAwB,KAAK,CAAC,MAAM,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,OAAO,CACZ,2CAA2C,KAAK,CAAC,MAAM,2BAA2B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrG,CAAC;QACJ,CAAC;QACD,oEAAoE;QACpE,iEAAiE;QACjE,kEAAkE;QAClE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;QAC5C,MAAM,OAAO,GACX,IAAI,KAAK,UAAU;YACjB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,IAAI,KAAK,WAAW;gBACpB,CAAC,CAAC,0BAA0B,IAAI,CAAC,KAAK,IAAI,SAAS,oCAAoC;gBACvF,CAAC,CAAC,IAAI,KAAK,SAAS;oBAClB,CAAC,CAAC,6BAA6B;oBAC/B,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3B,sEAAsE;QACtE,sEAAsE;QACtE,sEAAsE;QACtE,uEAAuE;QACvE,uEAAuE;QACvE,wEAAwE;QACxE,aAAa;QACb,MAAM,IAAI,GACR,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YAC3B,CAAC,CAAC,IAAI,CAAC,IAAI;YACX,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;gBAC7C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,GAAG,OAAO,OAAO,IAAI,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CACL,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"computers.d.ts","sourceRoot":"","sources":["../../src/tools/computers.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA8P5C,eAAO,MAAM,iBAAiB,EAAE,SA6iC/B,CAAC"}
1
+ {"version":3,"file":"computers.d.ts","sourceRoot":"","sources":["../../src/tools/computers.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAgQ5C,eAAO,MAAM,iBAAiB,EAAE,SAwuC/B,CAAC"}