@thehammer/danx-dashboard-mcp 0.1.182 → 0.1.184

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
@@ -147,15 +147,13 @@ export function registerLifecycleTools(strictTool) {
147
147
  "({method:'POST', path:'/api/issues/:id/transition', body:{action:...}}), then call this tool. " +
148
148
  "Always call this when done instead of simply stopping output.", {
149
149
  status: z.enum(AGENT_COMPLETE_STATUSES).describe("complete = work shipped, ends the dispatch row (does NOT move the card — transition it first); " +
150
- "failed = the dispatch could not finish its job; ends the dispatch row failed + a strike; see " +
151
- `summary for its ≥${ADEQUATE_SUMMARY_MIN_CHARS}-char requirement. Does NOT block the card — if the ` +
150
+ "failed = the dispatch stopped without shipping: an environment failure, a card-specific block, " +
151
+ "or a stop for an operator decision. Ends the dispatch row failed; it strikes your agent only " +
152
+ `when the summary is under ${ADEQUATE_SUMMARY_MIN_CHARS} characters. Does NOT block the card — if the ` +
152
153
  "cause is card-specific, first transition the card with action 'block' and a reason through " +
153
154
  "danxbot_api ({method:'POST', path:'/api/issues/:id/transition', body:{action:'block', reason}}). " +
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 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; " +
155
+ "Waiting on other work is a depends_on edge, not a block; when a human is 100% required, first " +
156
+ "add a problem with solutions (POST /api/issues/:id/problems), then end with this status; " +
159
157
  "cancelled = agent voluntarily abandons the dispatch (does NOT cancel the card — transition it first); " +
160
158
  "critical_failure = environment broken in a way that affects every dispatch (MCP tools not loading, " +
161
159
  "Bash unavailable, Claude auth missing) — halts the poller until a human clears it; " +
@@ -165,8 +163,8 @@ export function registerLifecycleTools(strictTool) {
165
163
  "which delete your branch)."),
166
164
  summary: z
167
165
  .string()
168
- .describe("Brief summary of what happened. For failed, the dispatch-environment failure reason, " +
169
- `≥${ADEQUATE_SUMMARY_MIN_CHARS} chars or the call downgrades to cancelled + a strike. For ` +
166
+ .describe("Brief summary of what happened. For failed, why the dispatch stopped, " +
167
+ `≥${ADEQUATE_SUMMARY_MIN_CHARS} chars or your agent takes a strike. For ` +
170
168
  "critical_failure, the specific environment issue. For complete, a one-line summary of what shipped. " +
171
169
  "Card-side context belongs on the transition call (through danxbot_api), not here."),
172
170
  }, async (args) => {
@@ -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.182",
3
+ "version": "0.1.184",
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": {