@thehammer/danx-dashboard-mcp 0.1.297 → 0.1.300

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.
package/dist/handlers.js CHANGED
@@ -131,6 +131,7 @@ export async function danxbotApi(client, args) {
131
131
  query: args.query,
132
132
  body: args.body,
133
133
  board: args.board,
134
+ background: args.background,
134
135
  });
135
136
  }
136
137
  // ---------------- danxbot_api_list (DX-3465 A5, PLN-11 R-25) ----------------
@@ -50,6 +50,9 @@ export class DashboardHttpClient {
50
50
  if (this.config.session) {
51
51
  headers["x-danx-session-id"] = this.config.session.id;
52
52
  }
53
+ if (args.background === true) {
54
+ headers["x-danx-plugin-background"] = "1";
55
+ }
53
56
  let bodyString;
54
57
  if (args.body !== undefined) {
55
58
  headers["Content-Type"] = "application/json";
package/dist/index.js CHANGED
@@ -568,6 +568,8 @@ strictTool("danxbot_api",
568
568
  // instead of reaching the dashboard malformed.
569
569
  body: bodyValueSchema.optional(),
570
570
  ...boardField,
571
+ // DX-5033 - sends x-danx-plugin-background (see DanxbotApiArgs.background); an agent setting it would hide its own calls from the pause and idle logic.
572
+ background: z.boolean().optional().describe("Set only by plugin hooks; an agent never sets it."),
571
573
  },
572
574
  // DX-3997 — the result rides back verbatim, plus the dashboard's own `reminders[]` entries
573
575
  // for this plan-connected session (the server decides; `listener-reminder.ts` only relays).
package/dist/listen.js CHANGED
@@ -126,6 +126,8 @@ export function invalidEventReason(value) {
126
126
  if (value.viaKey !== null && !(isRecord(value.viaKey) && typeof value.viaKey.id === "number" && typeof value.viaKey.name === "string")) {
127
127
  return "viaKey is not null or {id, name}";
128
128
  }
129
+ if (value.release !== undefined && value.release !== true)
130
+ return "release is not true";
129
131
  const d = value.detail;
130
132
  if (!isRecord(d))
131
133
  return "detail is not an object";
@@ -227,6 +229,8 @@ function describe(event) {
227
229
  // listening to the stream can tell which of its open problems just
228
230
  // got a reply.
229
231
  const problem = d.problem;
232
+ if (event.release === true)
233
+ return `${who} notice: ${quoted(d.excerpt)}`;
230
234
  if (problem === undefined)
231
235
  return `${who} commented: ${quoted(d.excerpt)}`;
232
236
  return `${who} commented on problem ${quoted(problem.statement)}: ${quoted(d.excerpt)}`;
@@ -572,10 +576,12 @@ export async function runListener(options, deps) {
572
576
  // origin: a fault worth surfacing at all must never be hidden behind a
573
577
  // 10-minute digest wait just because it happened to come from an agent or
574
578
  // a machine writer.
575
- const origin = invalid === null ? parsed.origin : null;
579
+ const release = invalid === null && parsed.release === true;
580
+ // DX-4951: a pause release is the session's own notice: emitted at once (`origin: null`), and kept across a plan move (`scope: "session"`).
581
+ const origin = invalid === null && !release ? parsed.origin : null;
576
582
  // DX-4721: an unreadable event is a fault line; a readable one is urgent by its kind (none is today).
577
583
  const urgent = isUrgent(invalid === null ? { source: "activity", kind: parsed.kind } : { source: "fault" });
578
- deps.write({ type: "event", id: knownId ? id : null, text, origin, urgent });
584
+ deps.write({ type: "event", id: knownId ? id : null, text, origin, urgent, ...(release ? { scope: "session" } : {}) });
579
585
  if (knownId)
580
586
  remember(id);
581
587
  return null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thehammer/danx-dashboard-mcp",
3
- "version": "0.1.297",
3
+ "version": "0.1.300",
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",