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 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAmW5C,eAAO,MAAM,cAAc,EAAE,SAq3B5B,CAAC"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA2c5C,eAAO,MAAM,cAAc,EAAE,SA49B5B,CAAC"}
@@ -23,7 +23,7 @@ const KNOWN_TYPES = [
23
23
  'window.focused',
24
24
  'window.blurred',
25
25
  'clipboard.changed',
26
- // The one type nobody is sent unasked (platform OPL-3927). It is here so a
26
+ // The one type nobody is sent unasked (OPL-3927). It is here so a
27
27
  // model reading this list knows it exists; a wait that names it and nothing
28
28
  // else, on a stream watching nothing, is answered with the sentence that says
29
29
  // how to make one arrive rather than with a timeout.
@@ -56,6 +56,8 @@ const KNOWN_TYPES = [
56
56
  const MAX_WAIT_S = 55;
57
57
  /** How long a first call gives the socket to reach its opening frame. */
58
58
  const ATTACH_MS = 20_000;
59
+ /** Optional context must not hold an already-consumed event answer indefinitely. */
60
+ const RECONCILE_MS = 2_000;
59
61
  /**
60
62
  * Wait for a subscription to say something about itself, inside a budget.
61
63
  *
@@ -93,20 +95,87 @@ async function attached(sub, cancel, deadline) {
93
95
  * the caller already has, and a windows listing that 409s because the guest is
94
96
  * busy must not turn a delivered event into a failed tool call.
95
97
  */
96
- async function reconcile(session, id, signal) {
97
- const api = session.api.with(signal);
98
- const state = {};
99
- const [windows, computer] = await Promise.allSettled([
100
- api.json('GET', P.computerAction(id, 'windows')),
101
- api.json('GET', P.computer(id)),
98
+ async function reconcile(session, id, cancel, deadline) {
99
+ const signal = AbortSignal.any([
100
+ AbortSignal.timeout(RECONCILE_MS),
101
+ ...(cancel ? [cancel] : []),
102
+ ...(deadline ? [deadline] : []),
102
103
  ]);
103
- if (windows.status === 'fulfilled')
104
- state.windows_now = windows.value;
105
- if (computer.status === 'fulfilled') {
106
- state.computer_now = withoutCredentials(unwrapComputer(computer.value));
104
+ const state = {};
105
+ if (!signal.aborted) {
106
+ const api = session.api.with(signal);
107
+ let end = () => { };
108
+ const expired = new Promise((resolve) => {
109
+ end = resolve;
110
+ signal.addEventListener('abort', end, { once: true });
111
+ });
112
+ try {
113
+ // Keep whichever half arrived before the deadline. The race also bounds
114
+ // embedders whose fetch implementation does not honour cancellation.
115
+ await Promise.race([
116
+ expired,
117
+ Promise.allSettled([
118
+ api.json('GET', P.computerAction(id, 'windows')).then((windows) => {
119
+ if (!signal.aborted)
120
+ state.windows_now = windows;
121
+ }),
122
+ api.json('GET', P.computer(id)).then((computer) => {
123
+ if (!signal.aborted) {
124
+ state.computer_now = withoutCredentials(unwrapComputer(computer));
125
+ }
126
+ }),
127
+ ]),
128
+ ]);
129
+ }
130
+ finally {
131
+ signal.removeEventListener('abort', end);
132
+ }
133
+ }
134
+ if (!('windows_now' in state) || !('computer_now' in state)) {
135
+ state.reconciliation_note = reconciled(state).trim();
107
136
  }
108
137
  return state;
109
138
  }
139
+ /** No continuity claim based solely on capabilities cached from an old socket. */
140
+ function connectionNote(sub, version) {
141
+ if (sub.state.status === 'stopped') {
142
+ return 'The event stream has stopped. These are the events buffered so far; call again for the remaining events and the reason it stopped.';
143
+ }
144
+ if (!sub.connected) {
145
+ return 'The event stream is reconnecting. These are the events buffered so far; more history may arrive on replay, so silence here is not an answer about what the computer did. Call again.';
146
+ }
147
+ if (version === undefined || version !== sub.connectionVersion) {
148
+ return 'The event stream was interrupted during this wait and has reopened. These are the events buffered so far; replayed events will be returned as they arrive. Call again to keep waiting.';
149
+ }
150
+ return '';
151
+ }
152
+ /**
153
+ * The sentence that points at the reconciliation — naming only the keys it
154
+ * actually produced.
155
+ *
156
+ * `reconcile` assigns each key on a fulfilled read and swallows the rest, so
157
+ * `{}` is a real return value: the windows read 409s while the guest is busy,
158
+ * the computer read fails, or the caller's own signal aborts both. Naming
159
+ * `windows_now` and `computer_now` regardless sends a model looking for two
160
+ * keys that are not in the payload — a wasted turn on the one answer that is
161
+ * already admitting a hole, and the tool that has to be believed about holes.
162
+ */
163
+ function reconciled(extras) {
164
+ const reads = [
165
+ { key: 'windows_now', tool: 'list_windows' },
166
+ { key: 'computer_now', tool: 'get_computer' },
167
+ ];
168
+ const here = reads.filter((r) => r.key in extras).map((r) => r.key);
169
+ const absent = reads.filter((r) => !(r.key in extras)).map((r) => r.tool);
170
+ if (!here.length) {
171
+ return (' See lost for what is known about it. Where the computer actually stands could NOT be read ' +
172
+ 'just now, so it is not in this answer — call list_windows and get_computer for what the ' +
173
+ 'missing events would have told you.');
174
+ }
175
+ return (` See lost for what is known about it, and ${here.join(' and ')} for where the computer ` +
176
+ `actually stands, which is what the missing events would have told you.` +
177
+ (absent.length ? ` The other half could not be read just now — call ${absent[0]} for it.` : ''));
178
+ }
110
179
  /**
111
180
  * Why a computer is missing part of the guest half, in words.
112
181
  *
@@ -143,7 +212,7 @@ function guestHalf(can) {
143
212
  // too, so a computer reporting it plainly has one.
144
213
  return ('It does report the desktop half, which needs the same terminal channel a file watch runs ' +
145
214
  'over — so the channel is there and it is the file watch that is missing. The host holding ' +
146
- 'this computer predates them (platform OPL-3927), and there is nothing to do about that ' +
215
+ 'this computer predates them (OPL-3927), and there is nothing to do about that ' +
147
216
  'from here.');
148
217
  }
149
218
  if (files && desktop) {
@@ -193,7 +262,7 @@ function name(ev) {
193
262
  return detail ? `${ev.type} (${detail})` : ev.type;
194
263
  }
195
264
  /** The body these tools answer with, minus the keys there is nothing to say about. */
196
- function body(id, d, watching) {
265
+ function body(id, d, sub, watching) {
197
266
  const out = { computer: id, events: d.events, cursor: d.cursor };
198
267
  if (d.more)
199
268
  out.more_waiting = d.more;
@@ -204,14 +273,22 @@ function body(id, d, watching) {
204
273
  // another call can evict it, and a reconnect can find it disarmed. A reader
205
274
  // that had to remember which of four trees was live from a call several turns
206
275
  // ago is a reader that will get it wrong.
207
- if (watching?.length)
208
- out.watching = watching;
276
+ if (watching?.length) {
277
+ out.watching = watching.map((watch) => ({ ...watch, armed: watch.armed && sub.connected }));
278
+ }
209
279
  // Only where it is news. `can_emit` is what stops a model waiting for
210
280
  // something this machine will never produce, and the opening frame is the one
211
281
  // place that answer exists — but repeating it on every poll would be a field
212
282
  // that means nothing on the ninety-ninth call.
283
+ //
284
+ // Read from the LIVE list rather than from the greeting that seeded it. A
285
+ // `capabilities` frame replaces what `hello` advertised and goes both ways —
286
+ // a guest that turns out to have no watcher withdraws the half `hello`
287
+ // promised — and one landing between the opening frame and this subscription's
288
+ // first read would otherwise publish, exactly once and never again, a
289
+ // vocabulary that contradicts the one every refusal path here already acts on.
213
290
  if (d.attached && d.hello) {
214
- out.can_emit = d.hello.events;
291
+ out.can_emit = sub.eventTypes ?? d.hello.events;
215
292
  if (d.hello.windows)
216
293
  out.windows_on_attach = d.hello.windows;
217
294
  }
@@ -255,8 +332,22 @@ function stopped(session, id, reason, sub, read) {
255
332
  const d = sub.read(read);
256
333
  const n = d.events.length;
257
334
  const drained = !d.more;
335
+ // The sub this call drained, named, so the drop cannot take a replacement.
336
+ // Two calls on one computer overlap by design here, and a second one holding
337
+ // a handle this one has already dropped would otherwise close the fresh
338
+ // stream opened in between.
258
339
  if (drained)
259
- session.events.drop(id, reason, true);
340
+ session.events.drop(id, reason, true, sub);
341
+ // KNOWN GAP on the `!drained` side of that same overlap: if this call is the
342
+ // one holding the older handle, "call again for them" is a promise this
343
+ // server cannot keep. The next call resolves through `EventHub.open()`, which
344
+ // returns the subscription now in `#subs` — the replacement — and the events
345
+ // still in THIS one's ring are unreachable from that moment. Reaching it
346
+ // needs two calls overlapping on one computer with the older one parked
347
+ // mid-wait, which is why it has no test. Anything written here has to be
348
+ // narrower than "a fresh stream is running, there is nothing to fix": that
349
+ // sentence was tried, and it both dropped the disclosure above and reported a
350
+ // replacement that had itself stopped as healthy.
260
351
  const held = n
261
352
  ? `${n} event${n === 1 ? '' : 's'} had already arrived before it stopped and ${n === 1 ? 'is' : 'are'} ` +
262
353
  (drained
@@ -275,7 +366,7 @@ function stopped(session, id, reason, sub, read) {
275
366
  // Without the watch set, deliberately. This stream has stopped, so a tree
276
367
  // it was carrying is a tree nothing is watching — and `watching` reports
277
368
  // `armed` from the last opening frame, which would read as live.
278
- n || d.loss ? body(id, d) : undefined);
369
+ n || d.loss ? body(id, d, sub) : undefined);
279
370
  }
280
371
  /**
281
372
  * A stream that has not yet got as far as its opening frame.
@@ -357,6 +448,21 @@ export const registerEvents = (server, session) => {
357
448
  // had already taken — the same defect one tool over, with a ring in this
358
449
  // session instead of a cursor in the guest. Nothing is created and nothing
359
450
  // is destroyed, which is what made the annotation look right.
451
+ // No readOnlyHint, for the reason above — and BOTH other flags set,
452
+ // because the spec's defaults are wrong in one direction and unstated in
453
+ // the other the moment readOnlyHint is absent (OPL-4516).
454
+ //
455
+ // destructiveHint would default to TRUE, so without it this asks a host
456
+ // whether it may perform DESTRUCTIVE UPDATES in order to read.
457
+ // `cursor_position` and `read_file` set it for that reason; these were not
458
+ // revisited with them.
459
+ //
460
+ // idempotentHint is FALSE, which is the difference from those two, and it
461
+ // is set rather than left to its default for the same reason as the other:
462
+ // a host reading an absent flag as "unknown, safe to retry" would retry a
463
+ // timed-out poll and silently drop what the first attempt consumed, which
464
+ // is the harm the paragraph above it is about.
465
+ annotations: { destructiveHint: false, idempotentHint: false },
360
466
  }, ({ computer_id, types, pid, timeout_s, since, limit }, extra) => guarded(async () => {
361
467
  const id = session.resolve(computer_id);
362
468
  const sub = session.events.open(id);
@@ -382,6 +488,7 @@ export const registerEvents = (server, session) => {
382
488
  return cancelledDuringAttach(id);
383
489
  if (!sub.eventTypes)
384
490
  return unattached(id, Date.now() - started);
491
+ const connection = sub.connected ? sub.connectionVersion : undefined;
385
492
  // A `pid` on its own means the exit of THAT command. Without this the
386
493
  // filter below reads "anything that is not a process.exited passes",
387
494
  // and `wait_for_event({pid: 99})` — which is how the argument's own
@@ -504,8 +611,8 @@ export const registerEvents = (server, session) => {
504
611
  const waited = Math.round((Date.now() - started) / 1000);
505
612
  if (hit === undefined) {
506
613
  if (extra.signal?.aborted) {
507
- return refused(`Cancelled while waiting on ${id}. The stream is still open and still buffering ` +
508
- `nothing was missed.`);
614
+ return refused(`Cancelled while waiting on ${id}. Buffered events remain available on the next call. ` +
615
+ (connectionNote(sub, connection) || 'The stream is still open and buffering.'));
509
616
  }
510
617
  const now = sub.state;
511
618
  if (now.status === 'stopped')
@@ -526,7 +633,7 @@ export const registerEvents = (server, session) => {
526
633
  // again cost nothing. Reporting it as a failure would teach a model to
527
634
  // stop asking — back to the screenshot loop this tool exists to end.
528
635
  const d = sub.read({ since, limit });
529
- const extras = d.loss ? await reconcile(session, id, extra.signal) : {};
636
+ const extras = d.loss ? await reconcile(session, id, extra.signal, deadline) : {};
530
637
  // What did NOT match still happened, and this read has just handed it
531
638
  // over — so the sentence has to name it. Saying "nothing happened"
532
639
  // over a payload holding three events is the one thing a model must
@@ -537,6 +644,11 @@ export const registerEvents = (server, session) => {
537
644
  ? ` ${d.events.length} other event${d.events.length === 1 ? '' : 's'} did happen and ` +
538
645
  `${d.events.length === 1 ? 'is' : 'are'} below.`
539
646
  : '';
647
+ const interrupted = connectionNote(sub, connection);
648
+ if (interrupted || d.loss) {
649
+ return said(`${interrupted || `No matching event is buffered on ${id}.`}${others}` +
650
+ (d.loss ? reconciled(extras) : ''), { ...body(id, d, sub, sub.watching), ...extras });
651
+ }
540
652
  return said(`Nothing ${wanted ? `matching ${[...wanted].join(' or ')} ` : ''}happened on ${id} in ` +
541
653
  `${timeout_s}s.${others} This server kept listening the whole time and is still ` +
542
654
  `listening — nothing was missed and nothing is being missed now. Call again to ` +
@@ -545,11 +657,11 @@ export const registerEvents = (server, session) => {
545
657
  // wait was real: what must not happen is a model reading "nothing
546
658
  // happened" as covering a type nothing was ever going to send.
547
659
  (unwatched() ? ` One thing was NOT being waited for: ${nominate()}` : '') +
548
- (d.loss ? ' Some events were lost before they could be read — see lost.' : ''), { ...body(id, d, sub.watching), ...extras });
660
+ (d.loss ? ' Some events were lost before they could be read — see lost.' : ''), { ...body(id, d, sub, sub.watching), ...extras });
549
661
  }
550
662
  const d = sub.read({ since, limit, through: hit });
551
663
  const last = d.events[d.events.length - 1];
552
- const extras = d.loss ? await reconcile(session, id, extra.signal) : {};
664
+ const extras = d.loss ? await reconcile(session, id, extra.signal, deadline) : {};
553
665
  const before = d.events.length - 1;
554
666
  // Empty when another call on this computer consumed the matched event
555
667
  // first: the ring is one buffer with one delivered cursor, and two
@@ -558,7 +670,7 @@ export const registerEvents = (server, session) => {
558
670
  if (!last) {
559
671
  return said(`Something happened on ${id} and another call on this computer was handed it before ` +
560
672
  `this one could read it — the events are in that call's answer, not below. Nothing ` +
561
- `is lost; look there, or call again for whatever comes next.`, { ...body(id, d, sub.watching), ...extras });
673
+ `is lost; look there, or call again for whatever comes next.`, { ...body(id, d, sub, sub.watching), ...extras });
562
674
  }
563
675
  return said(`${name(last)} on ${id} after ${waited}s` +
564
676
  (before > 0 ? `, and ${before} before it` : '') +
@@ -568,7 +680,7 @@ export const registerEvents = (server, session) => {
568
680
  'and computer.ready is announced once per desktop session — so the real event had ' +
569
681
  'happened before there was anything here to hear it, and waiting for it would have ' +
570
682
  'waited forever.'
571
- : ''), { ...body(id, d, sub.watching), ...extras });
683
+ : ''), { ...body(id, d, sub, sub.watching), ...extras });
572
684
  }));
573
685
  /**
574
686
  * What one `file.changed` says, in a sentence.
@@ -691,6 +803,21 @@ export const registerEvents = (server, session) => {
691
803
  // tree out of the watch set. A client treating the hint as licence to
692
804
  // retry a call that timed out would silently drop events and, on the
693
805
  // fifth distinct path, silently stop watching the first.
806
+ // No readOnlyHint, for the two reasons above — and destructiveHint TRUE,
807
+ // which is where this parts company with the three consuming reads beside
808
+ // it (OPL-4516).
809
+ //
810
+ // The spec reads `false` as "performs only additive updates", and this does
811
+ // not: a nomination past MAX_WATCHES evicts the least recent tree and
812
+ // deletes its armed, lost and host state, so a fifth call ends event
813
+ // delivery on the first with nothing said. Claiming additive-only would be
814
+ // the same false all-clear the missing readOnlyHint already avoids — a host
815
+ // that auto-approves non-destructive tools would let the model do it with
816
+ // nobody asked. Same value the absent annotation defaulted to, said out
817
+ // loud so it reads as a decision rather than an omission.
818
+ //
819
+ // idempotentHint false for the reason the others set it: this consumes.
820
+ annotations: { destructiveHint: true, idempotentHint: false },
694
821
  }, ({ computer_id, path, timeout_s, since, limit }, extra) => guarded(async () => {
695
822
  const id = session.resolve(computer_id);
696
823
  // Before anything is opened. A path this host will not accept is a 400
@@ -777,7 +904,7 @@ export const registerEvents = (server, session) => {
777
904
  if (sub.watchesHonoured === false) {
778
905
  return refused(`${id} opened its event stream but said nothing about ${root}, so this server cannot ` +
779
906
  `tell whether the tree is being watched — and a wait would be a wait on silence. The ` +
780
- `host holding this computer may predate file watches (platform OPL-3927). Use exec ` +
907
+ `host holding this computer may predate file watches (OPL-3927). Use exec ` +
781
908
  `to look at the directory instead.` +
782
909
  evicted);
783
910
  }
@@ -817,6 +944,7 @@ export const registerEvents = (server, session) => {
817
944
  // whatever happened in between was never reported and the tree has to
818
945
  // be re-read.
819
946
  const generation = sub.armGeneration(root);
947
+ const connection = sub.connected ? sub.connectionVersion : undefined;
820
948
  // Said once, on the first answer about a tree this subscription
821
949
  // inherited from one that went away. A tree is watched by the
822
950
  // CONNECTION, so the idle reap that took the previous subscription also
@@ -901,8 +1029,8 @@ export const registerEvents = (server, session) => {
901
1029
  if (now.status === 'stopped')
902
1030
  return stopped(session, id, now.reason, sub, { since, limit });
903
1031
  const d = sub.read({ since, limit });
904
- const extras = d.loss ? await reconcile(session, id, extra.signal) : {};
905
- const answer = { ...body(id, d, sub.watching), watch: wire, ...extras };
1032
+ const extras = d.loss ? await reconcile(session, id, extra.signal, deadline) : {};
1033
+ const answer = { ...body(id, d, sub, sub.watching), watch: wire, ...extras };
906
1034
  // THESE FIRST, and in this order, because each would otherwise be
907
1035
  // described as something else. Evicting a tree does not reset its arm
908
1036
  // generation — that is kept monotonic on purpose — but it does take
@@ -912,7 +1040,7 @@ export const registerEvents = (server, session) => {
912
1040
  // the set for a quite different reason, which is why the refusal is
913
1041
  // asked about ahead of the membership.
914
1042
  const why = settled(sub, id, root, wire, () => interrupted() + evicted, {
915
- ...body(id, d, sub.watching),
1043
+ ...body(id, d, sub, sub.watching),
916
1044
  ...extras,
917
1045
  });
918
1046
  if (why)
@@ -959,6 +1087,15 @@ export const registerEvents = (server, session) => {
959
1087
  interrupted() +
960
1088
  evicted, answer);
961
1089
  }
1090
+ const connectionChanged = connectionNote(sub, connection);
1091
+ if (connectionChanged || d.loss) {
1092
+ return said(`${connectionChanged || `No file change is buffered for ${wire}.`} ` +
1093
+ `A quiet directory cannot be confirmed for this whole wait.` +
1094
+ (d.loss ? reconciled(extras) : '') +
1095
+ interrupted() +
1096
+ renamed +
1097
+ evicted, answer);
1098
+ }
962
1099
  // NOT an error, for the reason wait_for_event's timeout is not: the
963
1100
  // tree was being watched for the whole of it, so "nothing changed" is
964
1101
  // an answer rather than an absence of one. This is the sentence the
@@ -979,17 +1116,42 @@ export const registerEvents = (server, session) => {
979
1116
  }
980
1117
  const d = sub.read({ since, limit, through: hit });
981
1118
  const last = d.events[d.events.length - 1];
982
- const extras = d.loss ? await reconcile(session, id, extra.signal) : {};
1119
+ const extras = d.loss ? await reconcile(session, id, extra.signal, deadline) : {};
983
1120
  const earlier = d.events.length - 1;
984
1121
  // The one `lost` that is not a re-read: it says the tree is not being
985
1122
  // watched, so it is the request failing rather than the watch reporting.
986
1123
  // It arrives as an ordinary file.changed and would otherwise be
987
1124
  // described by changeLine, which has nothing useful to say about it.
988
1125
  if ((last?.data?.lost ?? '') === 'unwatchable') {
989
- return refused(`${unwatchable(wire)} It was being watched until now; from here it is not.` +
1126
+ // Only when the tree is not being watched NOW. An `unwatchable` sits
1127
+ // in the ring until something reads it, and a caller who created the
1128
+ // directory and called again re-nominates: the guest answers the new
1129
+ // nomination with an arm, and this marker — already reported to the
1130
+ // call that refused on it — is then describing a watch that has since
1131
+ // been replaced. Handed back as the answer it refuses a second time
1132
+ // over a directory that plainly exists, which is the same false
1133
+ // "not there yet" the re-nomination exists to clear, one call later.
1134
+ //
1135
+ // `isArmed` is what tells the two apart, and it is exact rather than a
1136
+ // proxy: `unwatchable` is the one `lost` that disarms, so a tree still
1137
+ // carrying this marker as its live state reads false here, while one
1138
+ // the guest has since armed reads true. Said with the re-arm's own
1139
+ // sentence, because that is what happened and the window is genuinely
1140
+ // unreported either way.
1141
+ if (!sub.isArmed(root)) {
1142
+ return refused(`${unwatchable(wire)} It was being watched until now; from here it is not.` +
1143
+ interrupted() +
1144
+ renamed +
1145
+ evicted, { ...body(id, d, sub, sub.watching), watch: wire, ...extras });
1146
+ }
1147
+ return said(`${wire} on ${id} was not watchable when this stream last asked — it was reported ` +
1148
+ `missing or unreadable — and it is being watched now: the nomination was retried and ` +
1149
+ `the guest armed it. Reporting starts HERE, so nothing that happened under it before ` +
1150
+ `this was reported or ever will be. Re-read the directory with exec if that window ` +
1151
+ `matters, then call again to wait for what comes next.` +
990
1152
  interrupted() +
991
1153
  renamed +
992
- evicted, { ...body(id, d, sub.watching), watch: wire, ...extras });
1154
+ evicted, { ...body(id, d, sub, sub.watching), watch: wire, ...extras });
993
1155
  }
994
1156
  // A `through` read can come back empty when another call on this
995
1157
  // computer consumed the matched event first — the ring is one buffer
@@ -1002,14 +1164,14 @@ export const registerEvents = (server, session) => {
1002
1164
  `not below. Nothing is lost; look there, or call again for whatever comes next.` +
1003
1165
  interrupted() +
1004
1166
  renamed +
1005
- evicted, { ...body(id, d, sub.watching), watch: wire, ...extras });
1167
+ evicted, { ...body(id, d, sub, sub.watching), watch: wire, ...extras });
1006
1168
  }
1007
1169
  return said(`${changeLine(last, id)} after ${waited}s` +
1008
1170
  (earlier > 0 ? `, and ${earlier} event${earlier === 1 ? '' : 's'} before it` : '') +
1009
1171
  '.' +
1010
1172
  interrupted() +
1011
1173
  renamed +
1012
- evicted, { ...body(id, d, sub.watching), watch: wire, ...extras });
1174
+ evicted, { ...body(id, d, sub, sub.watching), watch: wire, ...extras });
1013
1175
  }));
1014
1176
  server.registerTool('poll_events', {
1015
1177
  title: 'Read what has happened',
@@ -1036,6 +1198,21 @@ export const registerEvents = (server, session) => {
1036
1198
  // had already taken — the same defect one tool over, with a ring in this
1037
1199
  // session instead of a cursor in the guest. Nothing is created and nothing
1038
1200
  // is destroyed, which is what made the annotation look right.
1201
+ // No readOnlyHint, for the reason above — and BOTH other flags set,
1202
+ // because the spec's defaults are wrong in one direction and unstated in
1203
+ // the other the moment readOnlyHint is absent (OPL-4516).
1204
+ //
1205
+ // destructiveHint would default to TRUE, so without it this asks a host
1206
+ // whether it may perform DESTRUCTIVE UPDATES in order to read.
1207
+ // `cursor_position` and `read_file` set it for that reason; these were not
1208
+ // revisited with them.
1209
+ //
1210
+ // idempotentHint is FALSE, which is the difference from those two, and it
1211
+ // is set rather than left to its default for the same reason as the other:
1212
+ // a host reading an absent flag as "unknown, safe to retry" would retry a
1213
+ // timed-out poll and silently drop what the first attempt consumed, which
1214
+ // is the harm the paragraph above it is about.
1215
+ annotations: { destructiveHint: false, idempotentHint: false },
1039
1216
  }, ({ computer_id, since, limit }, extra) => guarded(async () => {
1040
1217
  const id = session.resolve(computer_id);
1041
1218
  const sub = session.events.open(id);
@@ -1053,8 +1230,16 @@ export const registerEvents = (server, session) => {
1053
1230
  return cancelledDuringAttach(id);
1054
1231
  if (!sub.eventTypes)
1055
1232
  return unattached(id, Date.now() - started);
1233
+ const connection = sub.connected ? sub.connectionVersion : undefined;
1056
1234
  const d = sub.read({ since, limit });
1057
1235
  const extras = d.loss ? await reconcile(session, id, extra.signal) : {};
1236
+ const interruption = connectionNote(sub, connection);
1237
+ if (interruption) {
1238
+ return said(interruption + (d.loss ? reconciled(extras) : ''), {
1239
+ ...body(id, d, sub, sub.watching),
1240
+ ...extras,
1241
+ });
1242
+ }
1058
1243
  if (!d.events.length) {
1059
1244
  // The one case where "this is an answer rather than a gap" is exactly
1060
1245
  // wrong: a gap whose surviving events were all read already leaves an
@@ -1062,16 +1247,16 @@ export const registerEvents = (server, session) => {
1062
1247
  // either way; the sentence has to agree with it.
1063
1248
  if (d.loss) {
1064
1249
  return said(`Nothing new on ${id} that survived — there is a hole in the history here, and what ` +
1065
- `was in it is gone. See lost for what is known about it, and windows_now and ` +
1066
- `computer_now for where the computer actually stands, which is what the missing ` +
1067
- `events would have told you.`, { ...body(id, d, sub.watching), ...extras });
1250
+ `was in it is gone.${reconciled(extras)}`, { ...body(id, d, sub, sub.watching), ...extras });
1068
1251
  }
1069
1252
  return said(`Nothing new on ${id}. The stream is open and buffering, so this is an answer rather ` +
1070
- `than a gap: nothing has been reported since you last read.`, { ...body(id, d, sub.watching), ...extras });
1253
+ `than a gap: nothing has been reported since you last read.`, { ...body(id, d, sub, sub.watching), ...extras });
1071
1254
  }
1072
1255
  const kinds = [...new Set(d.events.map((e) => e.type))].join(', ');
1073
1256
  return said(`${d.events.length} event${d.events.length === 1 ? '' : 's'} on ${id}: ${kinds}.` +
1074
- (d.more ? ` ${d.more} more are buffered — call again for them.` : ''), { ...body(id, d, sub.watching), ...extras });
1257
+ (d.more
1258
+ ? ` ${d.more} more ${d.more === 1 ? 'is' : 'are'} buffered — call again for ${d.more === 1 ? 'it' : 'them'}.`
1259
+ : ''), { ...body(id, d, sub, sub.watching), ...extras });
1075
1260
  }));
1076
1261
  };
1077
1262
  //# sourceMappingURL=events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/tools/events.ts"],"names":[],"mappings":"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"}