@thehammer/danx-dashboard-mcp 0.1.181 → 0.1.183

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/lifecycle.js CHANGED
@@ -152,7 +152,10 @@ export function registerLifecycleTools(strictTool) {
152
152
  "cause is card-specific, first transition the card with action 'block' and a reason through " +
153
153
  "danxbot_api ({method:'POST', path:'/api/issues/:id/transition', body:{action:'block', reason}}). " +
154
154
  "Waiting on other work is a depends_on edge, not a block; when a human is 100% required, add a " +
155
- "problem with solutions instead; " +
155
+ "problem with solutions FIRST (POST /api/issues/:id/problems), THEN end with this same status " +
156
+ "(DX-3759) — the server checks the card for a real open problem and records no strike when it " +
157
+ "finds one, regardless of this summary's length, because you stopped correctly for an operator " +
158
+ "decision rather than failing; " +
156
159
  "cancelled = agent voluntarily abandons the dispatch (does NOT cancel the card — transition it first); " +
157
160
  "critical_failure = environment broken in a way that affects every dispatch (MCP tools not loading, " +
158
161
  "Bash unavailable, Claude auth missing) — halts the poller until a human clears it; " +
@@ -113,7 +113,11 @@ export class OperatorSessionStats {
113
113
  this.watcher?.stop();
114
114
  }
115
115
  begin(stored) {
116
- if (this.transcriptPath === null || this.stopped)
116
+ // `this.watcher !== null`: the bridge fires `tick` without awaiting it, so
117
+ // two ticks can both be waiting on a pre-collection heartbeat. The first
118
+ // answer starts collection; a second must not start (and leak) another
119
+ // tailer over the same transcript.
120
+ if (this.transcriptPath === null || this.stopped || this.watcher !== null)
117
121
  return;
118
122
  const path = this.transcriptPath;
119
123
  const activities = createActivityObserver({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thehammer/danx-dashboard-mcp",
3
- "version": "0.1.181",
3
+ "version": "0.1.183",
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, danxbot_complete, and other per-dispatch lifecycle callbacks) (DX-3465, PLN-11 R-25).",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@modelcontextprotocol/sdk": "1.29.0",
34
- "@thehammer/danx-session-telemetry": "0.1.15",
34
+ "@thehammer/danx-session-telemetry": "0.1.16",
35
35
  "zod": "^3.25.76"
36
36
  },
37
37
  "devDependencies": {