mandala-computer-mcp 0.8.0 → 0.9.0

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 (71) hide show
  1. package/README.md +143 -32
  2. package/dist/api.d.ts +6 -0
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +13 -3
  5. package/dist/api.js.map +1 -1
  6. package/dist/cli.d.ts +5 -0
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +28 -9
  9. package/dist/cli.js.map +1 -1
  10. package/dist/credentials.d.ts +55 -0
  11. package/dist/credentials.d.ts.map +1 -1
  12. package/dist/credentials.js +104 -2
  13. package/dist/credentials.js.map +1 -1
  14. package/dist/errors.d.ts +25 -8
  15. package/dist/errors.d.ts.map +1 -1
  16. package/dist/errors.js +62 -34
  17. package/dist/errors.js.map +1 -1
  18. package/dist/format.d.ts +9 -0
  19. package/dist/format.d.ts.map +1 -1
  20. package/dist/format.js +17 -1
  21. package/dist/format.js.map +1 -1
  22. package/dist/http.d.ts +33 -7
  23. package/dist/http.d.ts.map +1 -1
  24. package/dist/http.js +344 -61
  25. package/dist/http.js.map +1 -1
  26. package/dist/paths.d.ts +7 -5
  27. package/dist/paths.d.ts.map +1 -1
  28. package/dist/paths.js +17 -7
  29. package/dist/paths.js.map +1 -1
  30. package/dist/secret-store.d.ts +2 -1
  31. package/dist/secret-store.d.ts.map +1 -1
  32. package/dist/secret-store.js +6 -1
  33. package/dist/secret-store.js.map +1 -1
  34. package/dist/server.d.ts +2 -1
  35. package/dist/server.d.ts.map +1 -1
  36. package/dist/server.js +2 -1
  37. package/dist/server.js.map +1 -1
  38. package/dist/session.d.ts +24 -0
  39. package/dist/session.d.ts.map +1 -1
  40. package/dist/session.js +6 -0
  41. package/dist/session.js.map +1 -1
  42. package/dist/stdio.d.ts.map +1 -1
  43. package/dist/stdio.js +9 -1
  44. package/dist/stdio.js.map +1 -1
  45. package/dist/tool-filters.d.ts +1 -1
  46. package/dist/tool-filters.d.ts.map +1 -1
  47. package/dist/tool-filters.js +3 -0
  48. package/dist/tool-filters.js.map +1 -1
  49. package/dist/tools/account.d.ts.map +1 -1
  50. package/dist/tools/account.js +80 -6
  51. package/dist/tools/account.js.map +1 -1
  52. package/dist/tools/chat.d.ts.map +1 -1
  53. package/dist/tools/chat.js +14 -7
  54. package/dist/tools/chat.js.map +1 -1
  55. package/dist/tools/computers.d.ts.map +1 -1
  56. package/dist/tools/computers.js +62 -4
  57. package/dist/tools/computers.js.map +1 -1
  58. package/dist/tools/guest.d.ts.map +1 -1
  59. package/dist/tools/guest.js +7 -1
  60. package/dist/tools/guest.js.map +1 -1
  61. package/dist/tools/input.d.ts.map +1 -1
  62. package/dist/tools/input.js +98 -48
  63. package/dist/tools/input.js.map +1 -1
  64. package/dist/tools/secrets.d.ts.map +1 -1
  65. package/dist/tools/secrets.js +76 -19
  66. package/dist/tools/secrets.js.map +1 -1
  67. package/dist/version.d.ts +8 -0
  68. package/dist/version.d.ts.map +1 -0
  69. package/dist/version.js +8 -0
  70. package/dist/version.js.map +1 -0
  71. package/package.json +1 -1
@@ -12,6 +12,34 @@ const modifiers = z
12
12
  .array(z.enum(['shift', 'ctrl', 'alt', 'super', 'meta', 'cmd']))
13
13
  .optional()
14
14
  .describe('Keys held down for the duration of the action.');
15
+ /**
16
+ * `context`, as every input tool but cursor_position takes it: the platform's
17
+ * `?context=1`, which has an input answer carry the desktop's windows as they
18
+ * stand just after the action.
19
+ */
20
+ const contextArg = {
21
+ context: z
22
+ .boolean()
23
+ .default(false)
24
+ .describe("Answer the desktop's windows, and which one has focus, as they stand just after the action — what list_windows would say, without a second call. Read at once, so a window still opening may not be listed yet. If they cannot be read the action still happened, and the answer says why."),
25
+ };
26
+ /**
27
+ * A finished input action's answer, with the context it was asked for.
28
+ *
29
+ * `line` is what the tool says about the action itself; the windows follow it,
30
+ * or the reason the platform gave for not reading them. The action happened
31
+ * either way, so neither is an error. One renderer, so every input tool says
32
+ * it the same way.
33
+ */
34
+ const withContext = (line, res) => {
35
+ const ctx = res?.context;
36
+ if (ctx && typeof ctx === 'object')
37
+ return said(`${line} The desktop now:`, ctx);
38
+ const why = typeof res?.context_error === 'string' && res.context_error
39
+ ? res.context_error
40
+ : 'the platform answered no context';
41
+ return said(`${line} Its windows could not be read (${why}); screenshot to see the result.`);
42
+ };
15
43
  /**
16
44
  * A coordinate pair that is genuinely optional.
17
45
  *
@@ -221,6 +249,25 @@ export const registerInput = (server, session) => {
221
249
  const post = (computerId, body, signal) => session.api
222
250
  .with(signal)
223
251
  .send('POST', P.computerAction(session.resolve(computerId), 'input'), { body });
252
+ /**
253
+ * An input action that was asked for context: sent with `?context=1`, and
254
+ * read with `json` rather than `post`'s `send`, because the answer is now
255
+ * the point.
256
+ */
257
+ const postForContext = (computerId, body, signal) => session.api
258
+ .with(signal)
259
+ .json('POST', P.computerAction(session.resolve(computerId), 'input'), { body, query: { context: '1' } });
260
+ /**
261
+ * Send an action that answers nothing of its own, and say `line` — with the
262
+ * desktop after it when `context` asked.
263
+ */
264
+ const act = async (computerId, body, context, signal, line) => {
265
+ if (!context) {
266
+ await post(computerId, body, signal);
267
+ return said(line);
268
+ }
269
+ return withContext(line, await postForContext(computerId, body, signal));
270
+ };
224
271
  server.registerTool('screenshot', {
225
272
  title: 'Screenshot the desktop',
226
273
  description: 'A picture of what is on the screen right now, returned as an image. Coordinates in this picture are the ones click, drag and scroll take — except a saved frame of a suspended computer (served with fresh: false), which is labelled as one: a downscaled picture of the screen as it was, not in click coordinates.',
@@ -380,19 +427,22 @@ export const registerInput = (server, session) => {
380
427
  .number()
381
428
  .int()
382
429
  .min(1)
383
- .max(3)
430
+ .max(P.MAX_CLICK_COUNT)
384
431
  .default(1)
385
- .describe('1, 2 for a double click, 3 for a triple click. Left button only.'),
432
+ .describe(`How many clicks, 1 to ${P.MAX_CLICK_COUNT}: 2 is a double click and 3 a triple click, on any button. The presses are paced as a double click's are, so the desktop sees one multi-click.`),
433
+ ...contextArg,
386
434
  modifiers,
387
435
  },
388
- }, ({ computer_id, x, y, button, count, modifiers: mods }, extra) => guarded(async () => {
389
- const action = clickAction(button, count);
390
- if (!action) {
391
- return refused(`A ${count}-times ${button} click is not a thing the desktop can be asked for; only the left button doubles and triples.`);
392
- }
393
- await post(computer_id, P.clickBody(action, x, y, mods ?? []), extra.signal);
436
+ }, ({ computer_id, x, y, button, count, context, modifiers: mods }, extra) => guarded(async () => {
437
+ const { action, repeat } = clickAction(button, count);
438
+ const body = P.clickBody(action, x, y, mods ?? [], repeat);
394
439
  const where = x === undefined ? 'where the pointer was' : `at ${x},${y}`;
395
- return said(`${action} ${where}. Screenshot to see the result.`);
440
+ const did = repeat === undefined ? action : `${action} x${repeat}`;
441
+ if (!context) {
442
+ await post(computer_id, body, extra.signal);
443
+ return said(`${did} ${where}. Screenshot to see the result.`);
444
+ }
445
+ return withContext(`${did} ${where}.`, await postForContext(computer_id, body, extra.signal));
396
446
  }));
397
447
  server.registerTool('type_text', {
398
448
  title: 'Type text',
@@ -406,9 +456,13 @@ export const registerInput = (server, session) => {
406
456
  message: `text must be at most ${TYPE_TEXT_MAX_CHARS} characters; type longer text in pieces, or write it to a file`,
407
457
  })
408
458
  .describe(`The characters to type, at most ${TYPE_TEXT_MAX_CHARS}. Longer text goes in several calls, or through write_file or write_clipboard.`),
459
+ ...contextArg,
409
460
  },
410
- }, ({ computer_id, text }, extra) => guarded(async () => {
411
- const answer = await post(computer_id, P.typeBody(text), extra.signal);
461
+ }, ({ computer_id, text, context }, extra) => guarded(async () => {
462
+ const body = P.typeBody(text);
463
+ const answer = context
464
+ ? await postForContext(computer_id, body, extra.signal)
465
+ : await post(computer_id, body, extra.signal);
412
466
  // Code points, not `.length`. A string's length is its UTF-16 code
413
467
  // units, so an emoji is two and "Typed 2 character(s)" is a number this
414
468
  // server made up about a single keystroke's worth of text — a number a
@@ -426,7 +480,10 @@ export const registerInput = (server, session) => {
426
480
  const how = typeof mechanism === 'string' && Object.hasOwn(TYPE_MECHANISMS, mechanism)
427
481
  ? ` ${TYPE_MECHANISMS[mechanism]}`
428
482
  : '';
429
- return said(`Typed ${typed} character(s)${how}. That confirms the keys were sent, not that the application accepted the text: check with a screenshot before relying on it.`);
483
+ const line = `Typed ${typed} character(s)${how}. That confirms the keys were sent, not that the application accepted the text: check with a screenshot before relying on it.`;
484
+ return context
485
+ ? withContext(line, answer)
486
+ : said(line);
430
487
  }));
431
488
  server.registerTool('paste_text', {
432
489
  title: 'Paste text',
@@ -441,11 +498,9 @@ export const registerInput = (server, session) => {
441
498
  .enum(P.PASTE_SHORTCUTS)
442
499
  .optional()
443
500
  .describe('"ctrl+v" (the default) or "ctrl+shift+v", which terminals need. Shift+Insert is not offered: it can paste the separate primary selection instead.'),
501
+ ...contextArg,
444
502
  },
445
- }, ({ computer_id, text, shortcut }, extra) => guarded(async () => {
446
- await post(computer_id, P.pasteBody(text, shortcut), extra.signal);
447
- return said(`Pasted ${[...text].length} character(s) with ${shortcut ?? 'ctrl+v'}. The text is still on the clipboard. That confirms the paste was sent, not that the application accepted it: check with a screenshot before relying on it.`);
448
- }));
503
+ }, ({ computer_id, text, shortcut, context }, extra) => guarded(() => act(computer_id, P.pasteBody(text, shortcut), context, extra.signal, `Pasted ${[...text].length} character(s) with ${shortcut ?? 'ctrl+v'}. The text is still on the clipboard. That confirms the paste was sent, not that the application accepted it: check with a screenshot before relying on it.`)));
449
504
  server.registerTool('press_key', {
450
505
  title: 'Press a key or a chord',
451
506
  description: 'Press named keys — "Return", "Tab", "Escape", "Page_Down", or a chord like ["ctrl","c"]. X keysym names, so "Return" rather than "Enter".',
@@ -461,13 +516,11 @@ export const registerInput = (server, session) => {
461
516
  .max(30)
462
517
  .optional()
463
518
  .describe('Hold the keys down this long instead of tapping them. Capped at 30s.'),
519
+ ...contextArg,
464
520
  },
465
- }, ({ computer_id, keys, hold_seconds }, extra) => guarded(async () => {
466
- await post(computer_id, P.keyBody(keys, hold_seconds), extra.signal);
467
- return said(hold_seconds
468
- ? `Held ${keys.join('+')} for ${hold_seconds}s.`
469
- : `Pressed ${keys.join('+')}.`);
470
- }));
521
+ }, ({ computer_id, keys, hold_seconds, context }, extra) => guarded(() => act(computer_id, P.keyBody(keys, hold_seconds), context, extra.signal, hold_seconds
522
+ ? `Held ${keys.join('+')} for ${hold_seconds}s.`
523
+ : `Pressed ${keys.join('+')}.`)));
471
524
  server.registerTool('scroll', {
472
525
  title: 'Scroll',
473
526
  description: 'Turn the wheel. With no coordinate it scrolls whatever is under the pointer; with one it scrolls what is at that point.',
@@ -477,11 +530,9 @@ export const registerInput = (server, session) => {
477
530
  amount: z.number().int().min(1).max(50).default(3).describe('Wheel clicks.'),
478
531
  ...point,
479
532
  modifiers,
533
+ ...contextArg,
480
534
  },
481
- }, ({ computer_id, direction, amount, x, y, modifiers: mods }, extra) => guarded(async () => {
482
- await post(computer_id, P.scrollBody({ direction, amount, x, y, modifiers: mods }), extra.signal);
483
- return said(`Scrolled ${direction} by ${amount}.`);
484
- }));
535
+ }, ({ computer_id, direction, amount, x, y, modifiers: mods, context }, extra) => guarded(() => act(computer_id, P.scrollBody({ direction, amount, x, y, modifiers: mods }), context, extra.signal, `Scrolled ${direction} by ${amount}.`)));
485
536
  server.registerTool('drag', {
486
537
  title: 'Drag',
487
538
  description: 'Press, move and release as one gesture — for selecting text, moving a file, or dragging a slider. Not the same as two clicks. modifiers holds keys down for the whole gesture, e.g. ["shift"] to extend a selection.',
@@ -496,21 +547,19 @@ export const registerInput = (server, session) => {
496
547
  .describe('Where to start. Both from_x and from_y, or neither — half of an origin is refused rather than ignored.'),
497
548
  from_y: z.number().int().optional(),
498
549
  modifiers,
550
+ ...contextArg,
499
551
  },
500
- }, ({ computer_id, to_x, to_y, from_x, from_y, modifiers: mods }, extra) => guarded(async () => {
501
- await post(computer_id, P.dragBody(to_x, to_y, from_x, from_y, mods ?? []), extra.signal);
552
+ }, ({ computer_id, to_x, to_y, from_x, from_y, modifiers: mods, context }, extra) => guarded(() => {
553
+ const body = P.dragBody(to_x, to_y, from_x, from_y, mods ?? []);
502
554
  const from = from_x === undefined ? 'the pointer' : `${from_x},${from_y}`;
503
555
  const held = mods?.length ? ` holding ${mods.join('+')}` : '';
504
- return said(`Dragged from ${from} to ${to_x},${to_y}${held}.`);
556
+ return act(computer_id, body, context, extra.signal, `Dragged from ${from} to ${to_x},${to_y}${held}.`);
505
557
  }));
506
558
  server.registerTool('move_mouse', {
507
559
  title: 'Move the pointer',
508
560
  description: 'Move the pointer without clicking — for hovering over a menu or a tooltip.',
509
- inputSchema: { ...idArg, x: z.number().int(), y: z.number().int() },
510
- }, ({ computer_id, x, y }, extra) => guarded(async () => {
511
- await post(computer_id, P.pointerBody('mouse_move', x, y), extra.signal);
512
- return said(`Pointer at ${x},${y}.`);
513
- }));
561
+ inputSchema: { ...idArg, x: z.number().int(), y: z.number().int(), ...contextArg },
562
+ }, ({ computer_id, x, y, context }, extra) => guarded(() => act(computer_id, P.pointerBody('mouse_move', x, y), context, extra.signal, `Pointer at ${x},${y}.`)));
514
563
  server.registerTool('mouse_button', {
515
564
  title: 'Hold or release the mouse button',
516
565
  description: 'The two halves of a click, for gestures drag cannot express — a lasso across several stops, or a press held while the keyboard is used.',
@@ -518,11 +567,9 @@ export const registerInput = (server, session) => {
518
567
  ...idArg,
519
568
  state: z.enum(['down', 'up']),
520
569
  ...point,
570
+ ...contextArg,
521
571
  },
522
- }, ({ computer_id, state, x, y }, extra) => guarded(async () => {
523
- await post(computer_id, P.buttonBody(`left_mouse_${state}`, x, y), extra.signal);
524
- return said(`Left button ${state}${x === undefined ? '' : ` at ${x},${y}`}.`);
525
- }));
572
+ }, ({ computer_id, state, x, y, context }, extra) => guarded(() => act(computer_id, P.buttonBody(`left_mouse_${state}`, x, y), context, extra.signal, `Left button ${state}${x === undefined ? '' : ` at ${x},${y}`}.`)));
526
573
  server.registerTool('cursor_position', {
527
574
  title: 'Where is the pointer',
528
575
  description: 'Where the pointer was last put. `known` is false on a computer nothing has moved it on yet — the guest cannot be asked, so there is no coordinate to report and a confident 0,0 would be a wrong answer dressed as a right one. This reads a coordinate but reaches the computer to do it: a suspended one is resumed to answer, and that resume is charged. read_clipboard, by contrast, refuses a suspended computer rather than starting it.',
@@ -564,18 +611,21 @@ export const registerInput = (server, session) => {
564
611
  inputSchema: {
565
612
  ...idArg,
566
613
  seconds: z.number().positive().max(30).default(2),
614
+ ...contextArg,
567
615
  },
568
- }, ({ computer_id, seconds }, extra) => guarded(async () => {
569
- await post(computer_id, P.waitBody(seconds), extra.signal);
570
- return said(`Waited ${seconds}s.`);
571
- }));
616
+ }, ({ computer_id, seconds, context }, extra) => guarded(() => act(computer_id, P.waitBody(seconds), context, extra.signal, `Waited ${seconds}s.`)));
572
617
  };
573
- /** The platform's verb for a button and a repeat count, or nothing if there isn't one. */
618
+ /**
619
+ * The platform's verb for a button and a repeat count, and the `count` to send
620
+ * with it. A left double or triple click keeps the verb the platform has always
621
+ * had for it; every other repeat is the button's own click with a `count`
622
+ * (OPL-5472), which is what lets a right or middle button repeat at all.
623
+ */
574
624
  function clickAction(button, count) {
575
- if (count === 1)
576
- return `${button}_click`;
577
- if (button !== 'left')
578
- return undefined;
579
- return count === 2 ? 'double_click' : 'triple_click';
625
+ if (button === 'left' && count === 2)
626
+ return { action: 'double_click' };
627
+ if (button === 'left' && count === 3)
628
+ return { action: 'triple_click' };
629
+ return count === 1 ? { action: `${button}_click` } : { action: `${button}_click`, repeat: count };
580
630
  }
581
631
  //# sourceMappingURL=input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/tools/input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/tools/input.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/tools/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAIL,KAAK,MAAM,EAEZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,sDAAsD;AACtD,eAAO,MAAM,SAAS,oCAAoC,CAAC;AAE3D,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAiBlC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;KA0DrD;AAwFD,2DAA2D;AAC3D,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAiDxC,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIxF;AAOD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAclF;AAsED,eAAO,MAAM,eAAe,EAAE,SAqR7B,CAAC"}
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/tools/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,OAAO,EAIL,KAAK,MAAM,EAEZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,sDAAsD;AACtD,eAAO,MAAM,SAAS,oCAAoC,CAAC;AAE3D,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAiBlC;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;KA0DrD;AAwFD,2DAA2D;AAC3D,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAwExC,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIxF;AAOD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAclF;AA2ED,eAAO,MAAM,eAAe,EAAE,SAqT7B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { APIError, ConflictError, MandalaError, NotFoundError, statusAdvice } from '../errors.js';
2
+ import { APIError, ConflictError, MandalaError, NotFoundError, reasonAdvice, statusAdvice, } from '../errors.js';
3
3
  import { guarded, refused, said, unavailableAdvice } from '../format.js';
4
4
  import * as P from '../paths.js';
5
5
  import { DOCUMENTED_REASONS, isRequestId, overlaps, } from '../secret-store.js';
@@ -188,9 +188,29 @@ const workspaceArg = z
188
188
  .refine(isId, 'workspace_id must not be empty or have spaces around it')
189
189
  .optional()
190
190
  .describe('The workspace the secret belongs to. Leave it out for an account-wide secret. A secret in a workspace is found only with its workspace_id.');
191
+ /**
192
+ * What a left-out workspace_id means, said in the tool's schema: the local
193
+ * server started from a saved profile falls back to that profile's default
194
+ * workspace from `mandala workspaces use`. Every other session (an explicit
195
+ * or environment key, and every hosted one) keeps the words it always had.
196
+ */
197
+ function scopeDefault(session) {
198
+ const d = session.defaultWorkspace;
199
+ if (d === undefined)
200
+ return '';
201
+ const here = session.defaultWorkspaceUnreadable
202
+ ? 'unknown, because ~/.mandala/defaults.json cannot be read: list_secrets and get_secret use account-wide, and create_secret, set_secret, replace_secret and delete_secret refuse a call without workspace_id'
203
+ : d
204
+ ? `workspace ${d.name} (${d.id})`
205
+ : 'account-wide';
206
+ return ` Default when left out: the saved profile's workspace from \`mandala workspaces use\`, else account-wide — here ${here}.`;
207
+ }
191
208
  /** A secret's name as a tool argument, checked for what the platform would refuse. */
192
209
  const nameArg = z
193
210
  .string()
211
+ // Trimmed BEFORE the length check, as the platform trims it: a padded name
212
+ // that is 60 characters once trimmed is one the platform takes (OPL-5522).
213
+ .trim()
194
214
  .min(1, 'name must not be empty')
195
215
  .refine((v) => [...v].length <= SECRET_NAME_MAX_CHARS, {
196
216
  message: `name must be at most ${SECRET_NAME_MAX_CHARS} characters`,
@@ -251,6 +271,11 @@ function storeAdvice(err, change) {
251
271
  case 404:
252
272
  return 'no such secret in this scope. A secret in a workspace is found only with its workspace_id; list_secrets says which exist';
253
273
  case 409:
274
+ // The platform's word, where it says which of the two conflicts this was;
275
+ // this server's own sentence for it, never the platform's.
276
+ if (err.reason === 'name_taken' || err.reason === 'stale_revision') {
277
+ return `${reasonAdvice(err.reason)}. Nothing changed`;
278
+ }
254
279
  return change
255
280
  ? 'refused as a conflict and nothing changed: for a create, the name is taken in that scope; for a replace or delete, the revision_id is no longer the current one — get_secret for the current one, and send it again only if you still mean to'
256
281
  : 'refused as a conflict';
@@ -300,6 +325,21 @@ async function storeGuarded(what, change, value, fn) {
300
325
  return value === undefined ? result : withoutValue(result, value);
301
326
  }
302
327
  export const registerSecrets = (server, session) => {
328
+ // A left-out workspace_id: the saved profile's default, where there is one.
329
+ const scoped = (workspace_id) => workspace_id ?? session.defaultWorkspace?.id ?? undefined;
330
+ // A tool that writes, called without workspace_id while defaults.json cannot
331
+ // be read: the profile's default is unknown, and account-wide is the widest
332
+ // scope, where any computer on the account may be bound to what is stored.
333
+ // Refused before any request; the reading tools go on account-wide.
334
+ const unknownDefault = (workspace_id) => workspace_id === undefined && session.defaultWorkspaceUnreadable !== undefined
335
+ ? refused(`Nothing was sent: ~/.mandala/defaults.json cannot be read (${session.defaultWorkspaceUnreadable}), so the saved profile's default workspace is unknown and this would otherwise act account-wide. Pass workspace_id explicitly, or fix or delete the file and restart this server.`)
336
+ : undefined;
337
+ const byDefault = (workspace_id) => workspace_id === undefined && session.defaultWorkspace
338
+ ? " (the saved profile's default from mandala workspaces use)"
339
+ : '';
340
+ const scopeArg = (text) => workspaceArg.describe((text ??
341
+ 'The workspace the secret belongs to. Leave it out for an account-wide secret. A secret in a workspace is found only with its workspace_id.') +
342
+ scopeDefault(session));
303
343
  server.registerTool('get_computer_secrets', {
304
344
  title: "Read a computer's secret bindings",
305
345
  description: `Which of the account's secrets a computer is bound to: for each, the secret id, the revision last delivered, and where the guest finds it — an environment variable name, or a file under ${FILES_DIR}. Values are NEVER shown — no value crosses this route. Also answers \`version\`, the number to send to set_computer_secrets so it changes only this list (0 for a computer never bound). Any role may read it. The list is what the computer receives at its next start or restart, which a running computer may not have yet. ${LIVE_VALUES}`,
@@ -366,16 +406,19 @@ export const registerSecrets = (server, session) => {
366
406
  // because cleaning up what a task created is part of the task.
367
407
  server.registerTool('list_secrets', {
368
408
  title: "List the account's secrets",
369
- description: "The secrets stored on this account, in one scope: the account-wide ones by default, or one workspace's with workspace_id. For each: its name, its id (what set_computer_secrets binds), its current revision_id (what replace_secret and delete_secret need), its scope and when it was last delivered to a computer. Values are NEVER shown — no route returns one. Also says whether binding secrets to computers is switched on here, and the store's limits. Owners and members may read; a viewer is refused. An API key confined to a workspace lists that workspace's secrets, and naming another scope is refused.",
409
+ description: "The secrets stored on this account, in one scope: the account-wide ones by default, or one workspace's with workspace_id. For each: its name, its id (what set_computer_secrets binds), its current revision_id (what replace_secret and delete_secret need), its scope and when it was last delivered to a computer. Values are NEVER shown — no route returns one. Also says whether binding secrets to computers is switched on here, and the store's limits. Owners and members may read; a viewer is refused. An API key confined to a workspace lists that workspace's secrets, and naming another scope is refused." +
410
+ scopeDefault(session),
370
411
  inputSchema: {
371
- workspace_id: workspaceArg.describe('The workspace to list. Leave it out for the account-wide secrets.'),
412
+ workspace_id: scopeArg('The workspace to list. Leave it out for the account-wide secrets.'),
372
413
  },
373
414
  annotations: { readOnlyHint: true },
374
415
  }, ({ workspace_id }, extra) => storeGuarded('Listing the secrets', false, undefined, async () => {
416
+ const workspace = scoped(workspace_id);
375
417
  const list = await session.api
376
418
  .with(extra.signal)
377
- .secrets.list({ workspaceId: workspace_id });
378
- const scope = workspace_id === undefined ? 'account-wide' : `in workspace ${workspace_id}`;
419
+ .secrets.list({ workspaceId: workspace });
420
+ const scope = (workspace === undefined ? 'account-wide' : `in workspace ${workspace}`) +
421
+ byDefault(workspace_id);
379
422
  const delivery = list.delivery
380
423
  ? 'Binding secrets to computers is on.'
381
424
  : 'Binding secrets to computers is OFF on this platform: secrets can be stored, but set_computer_secrets and a create carrying secrets are refused.';
@@ -390,27 +433,30 @@ export const registerSecrets = (server, session) => {
390
433
  server.registerTool('get_secret', {
391
434
  title: 'Read one secret',
392
435
  description: "One secret's name, scope, current revision_id and when it was last delivered — never its value. Read it for the current revision_id after replace_secret or delete_secret is refused because the revision moved. A secret in a workspace is found only with its workspace_id; otherwise it is not found.",
393
- inputSchema: { secret_id: secretIdArg, workspace_id: workspaceArg },
436
+ inputSchema: { secret_id: secretIdArg, workspace_id: scopeArg() },
394
437
  annotations: { readOnlyHint: true },
395
438
  }, ({ secret_id, workspace_id }, extra) => storeGuarded(`Reading ${secret_id}`, false, undefined, async () => {
396
439
  const secret = await session.api
397
440
  .with(extra.signal)
398
- .secrets.get(secret_id, { workspaceId: workspace_id });
441
+ .secrets.get(secret_id, { workspaceId: scoped(workspace_id) });
399
442
  return said(`${secretLine(secret)} (values are never shown)`, secret);
400
443
  }));
401
444
  server.registerTool('create_secret', {
402
445
  title: 'Store a new secret',
403
- description: `Store a value under a name on this account, encrypted, for binding to computers with set_computer_secrets (or the secrets field of a create). The value is sent once and NEVER shown again: this answer, every other tool and every route give back only the name, id and revision. Do not put the value anywhere else — not in a command line, a file or a message — when a binding can deliver it. Owners only. A name is unique within its scope (up to ${SECRET_NAME_MAX_CHARS} characters, no control characters); a taken name is refused with 409. The account holds at most 100 secrets at once and may create at most 1000 over its lifetime — list_secrets reports both. Without workspace_id the secret is account-wide and any computer on the account may be bound to it. NOT safe to repeat blind: if the answer is lost, list_secrets before creating again, since the secret may exist.`,
446
+ description: `Store a value under a name on this account, encrypted, for binding to computers with set_computer_secrets (or the secrets field of a create). The value is sent once and NEVER shown again: this answer, every other tool and every route give back only the name, id and revision. Do not put the value anywhere else — not in a command line, a file or a message — when a binding can deliver it. Owners only. A name is unique within its scope (up to ${SECRET_NAME_MAX_CHARS} characters, no control characters); a taken name is refused with 409. The account holds at most 100 secrets at once and may create at most 1000 over its lifetime — list_secrets reports both. Without workspace_id the secret is account-wide and any computer on the account may be bound to it. NOT safe to repeat blind: if the answer is lost, list_secrets before creating again, since the secret may exist.${scopeDefault(session)}`,
404
447
  inputSchema: {
405
448
  name: nameArg,
406
449
  value: valueArg('The value'),
407
- workspace_id: workspaceArg.describe('The workspace it belongs to. Leave it out for an account-wide secret.'),
450
+ workspace_id: scopeArg('The workspace it belongs to. Leave it out for an account-wide secret.'),
408
451
  },
409
452
  annotations: { destructiveHint: false, idempotentHint: false },
410
453
  }, ({ name, value, workspace_id }, extra) => storeGuarded('Storing the secret', true, value, async () => {
454
+ const unknown = unknownDefault(workspace_id);
455
+ if (unknown)
456
+ return unknown;
411
457
  const secret = await session.api
412
458
  .with(extra.signal)
413
- .secrets.create({ name, value, workspaceId: workspace_id });
459
+ .secrets.create({ name, value, workspaceId: scoped(workspace_id) });
414
460
  return said(`Stored ${secret.name} as ${secret.id}, revision ${secret.revision_id}, ${secret.workspace_id === null ? 'account-wide' : `in workspace ${secret.workspace_id}`}. The value is not shown and cannot be read back. Bind it to a computer with set_computer_secrets.`, secret);
415
461
  }));
416
462
  server.registerTool('set_secret', {
@@ -419,21 +465,25 @@ export const registerSecrets = (server, session) => {
419
465
  inputSchema: {
420
466
  name: nameArg,
421
467
  value: valueArg('The value'),
422
- workspace_id: workspaceArg.describe('The scope to look in, and to create in. Leave it out for the account-wide secrets.'),
468
+ workspace_id: scopeArg('The scope to look in, and to create in. Leave it out for the account-wide secrets.'),
423
469
  },
424
470
  annotations: { destructiveHint: true, idempotentHint: false },
425
471
  }, ({ name, value, workspace_id }, extra) => storeGuarded(`Setting ${name.trim()}`, true, value, async () => {
472
+ const unknown = unknownDefault(workspace_id);
473
+ if (unknown)
474
+ return unknown;
426
475
  const store = session.api.with(extra.signal).secrets;
476
+ const workspace = scoped(workspace_id);
427
477
  for (let attempt = 0;; attempt++) {
428
- const found = namedSecret((await store.list({ workspaceId: workspace_id })).secrets, name);
478
+ const found = namedSecret((await store.list({ workspaceId: workspace })).secrets, name);
429
479
  try {
430
480
  const secret = found
431
481
  ? await store.replace(found.id, {
432
482
  value,
433
483
  revisionId: found.revision_id,
434
- workspaceId: workspace_id,
484
+ workspaceId: workspace,
435
485
  })
436
- : await store.create({ name: name.trim(), value, workspaceId: workspace_id });
486
+ : await store.create({ name: name.trim(), value, workspaceId: workspace });
437
487
  const scope = secret.workspace_id === null ? 'account-wide' : `in workspace ${secret.workspace_id}`;
438
488
  return said(found
439
489
  ? `Replaced the value of ${secret.name} (${secret.id}), ${scope}; it is now at revision ${secret.revision_id}. The value is not shown. Computers bound to it get it at their next start or restart, and a running one is sent it now on a best-effort basis.`
@@ -453,14 +503,17 @@ export const registerSecrets = (server, session) => {
453
503
  secret_id: secretIdArg,
454
504
  value: valueArg('The new value'),
455
505
  revision_id: revisionArg('A stale one is refused and nothing changes.'),
456
- workspace_id: workspaceArg,
506
+ workspace_id: scopeArg(),
457
507
  },
458
508
  annotations: { destructiveHint: true, idempotentHint: false },
459
509
  }, ({ secret_id, value, revision_id, workspace_id }, extra) => storeGuarded(`Replacing the value of ${secret_id}`, true, value, async () => {
510
+ const unknown = unknownDefault(workspace_id);
511
+ if (unknown)
512
+ return unknown;
460
513
  const secret = await session.api.with(extra.signal).secrets.replace(secret_id, {
461
514
  value,
462
515
  revisionId: revision_id,
463
- workspaceId: workspace_id,
516
+ workspaceId: scoped(workspace_id),
464
517
  });
465
518
  return said(`Replaced the value of ${secret.name} (${secret.id}); it is now at revision ${secret.revision_id}. The value is not shown. Computers bound to it get it at their next start or restart, and a running one is sent it now on a best-effort basis.`, secret);
466
519
  }));
@@ -470,22 +523,26 @@ export const registerSecrets = (server, session) => {
470
523
  inputSchema: {
471
524
  secret_id: secretIdArg,
472
525
  revision_id: revisionArg('Required; a stale one is refused and nothing is deleted.'),
473
- workspace_id: workspaceArg,
526
+ workspace_id: scopeArg(),
474
527
  confirm: z
475
528
  .literal(true)
476
529
  .describe('Must be true. A computer still bound to this secret cannot start again until that binding is removed.'),
477
530
  },
478
531
  annotations: { destructiveHint: true, idempotentHint: true },
479
532
  }, ({ secret_id, revision_id, workspace_id }, extra) => storeGuarded(`Deleting ${secret_id}`, true, undefined, async () => {
533
+ const unknown = unknownDefault(workspace_id);
534
+ if (unknown)
535
+ return unknown;
536
+ const workspace = scoped(workspace_id);
480
537
  try {
481
538
  await session.api
482
539
  .with(extra.signal)
483
- .secrets.delete(secret_id, { revisionId: revision_id, workspaceId: workspace_id });
540
+ .secrets.delete(secret_id, { revisionId: revision_id, workspaceId: workspace });
484
541
  }
485
542
  catch (err) {
486
543
  if (!(err instanceof NotFoundError))
487
544
  throw err;
488
- return refused(`Nothing was deleted: no secret ${secret_id} was found${workspace_id === undefined ? ' among the account-wide secrets' : ` in workspace ${workspace_id}`}. Either it was already deleted, or it is in a scope this did not name — list_secrets says which.`);
545
+ return refused(`Nothing was deleted: no secret ${secret_id} was found${workspace === undefined ? ' among the account-wide secrets' : ` in workspace ${workspace}${byDefault(workspace_id)}`}. Either it was already deleted, or it is in a scope this did not name — list_secrets says which.`);
489
546
  }
490
547
  return said(`Deleted ${secret_id}. Any computer still bound to it cannot start again until set_computer_secrets removes that binding.`);
491
548
  }));