@thehammer/danx-dashboard-mcp 0.1.337 → 0.1.338

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.
@@ -115,7 +115,7 @@ export class PlanEventRelay {
115
115
  lastActivityAt = 0;
116
116
  heartbeat = null;
117
117
  reporter = null;
118
- /** DX-5415: the stop of the last suspended reporter (its final settle); resolved when none is running. */
118
+ /** DX-5415: the chain of every reporter stop still storing held finals (a suspend's and a transcript switch's); null when none is pending. Never rejects (see `chainSettling`). */
119
119
  settling = null;
120
120
  /** DX-5415: set by `close()` (the server's shutdown) and never cleared: a call paused across the close, or made after it, answers empty and starts nothing. */
121
121
  closed = false;
@@ -176,6 +176,8 @@ export class PlanEventRelay {
176
176
  this.start(cursor);
177
177
  if (this.buffer.length > 0)
178
178
  return this.answer();
179
+ // DX-5415 / DX-4233: supersede where the waiter is installed, not before the pauses: calls resume in call order, so the newest always holds the slot and an older one that resumed late cannot orphan the waiter beneath it.
180
+ this.supersedeWaiter();
179
181
  return new Promise((resolve) => {
180
182
  const onAbort = () => this.supersedeWaiter();
181
183
  signal?.addEventListener("abort", onAbort, { once: true });
@@ -308,7 +310,11 @@ export class PlanEventRelay {
308
310
  forceReconnect: () => this.run?.forceReconnect?.(),
309
311
  }, transcriptPath ?? null);
310
312
  }
311
- /** DX-5415: the one settle chain: the last settle and `stopping` both finish before it clears itself. */
313
+ /**
314
+ * DX-5415: the one settle chain: the last settle and `stopping` both finish before it clears itself.
315
+ * `stopping` never rejects (a reporter's stop settles its own failures), so `settling` never rejects and
316
+ * every waiter on it resumes; do not add a swallowing fallback here.
317
+ */
312
318
  chainSettling(stopping) {
313
319
  const settling = Promise.all([this.settling, stopping]).then(() => {
314
320
  if (this.settling === settling)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thehammer/danx-dashboard-mcp",
3
- "version": "0.1.337",
3
+ "version": "0.1.338",
4
4
  "description": "Stdio MCP server fronting danxbot's dashboard API for agents (operator sessions and dispatched workers alike): the generic danxbot_api/danxbot_api_list/danxbot_api_spec tools reach any route the caller's credential may call, plus dedicated agent-specific tools (plan_connect, request_permission, attach_file, and danxbot_slack_reply) (DX-3465, PLN-11 R-25).",
5
5
  "license": "MIT",
6
6
  "type": "module",