@thehammer/danx-dashboard-mcp 0.1.208 → 0.1.210

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/README.md CHANGED
@@ -29,7 +29,7 @@ There is no dedicated `resource_fields` tool (removed DX-3465 — it was a thin
29
29
 
30
30
  A dedicated tool survives only for something about the agent itself, never a card/plan operation: `plan_connect` (binds the session to a plan; the event-bridge hook keys on it) and the per-dispatch worker callbacks (`danxbot_complete`, `danxbot_slack_reply`, `danxbot_slack_post_update`, `load_template_app`/`save_template_app`, `quality_gate_complete`, `link_thread_to_issue`, `attach_file`, the `slack_recovery_*` trio, `danxbot_set_evaluator_summary`) — see `src/lifecycle.ts`. The live list is always `tool-defs.json` in this package, regenerated by `npm run gen-tool-defs` — read it rather than trusting a list copied into prose.
31
31
 
32
- Card and plan reads/writes go through `danxbot_api` against the issue/plan route families documented in `GET /api/openapi` (via `danxbot_api_spec`) — `POST /api/issues`, `GET /api/issues/:id` (or `/batch` for many at once, DX-2727), `PATCH /api/issues/:id/edit`, `POST /api/issues/:id/transition`, the problems/solutions/dependencies/comments/quality-gates/retro sub-resource routes, and the equivalent `/api/plans/*` family (`GET /api/plans/:planId` — cheap scalars by default, `fields` opts into `cards`/`records`/`architecture`/`sessions`; `GET /api/plans` for the list, with an optional `status` filter over the same computed `complete`/`awaiting-session`/`building`/`planning` value `GET /api/plans/:planId` always returns ungated).
32
+ Card and plan reads/writes go through `danxbot_api` against the issue/plan route families documented in `GET /api/openapi` (via `danxbot_api_spec`) — `POST /api/issues`, `GET /api/issues/:id` (or `/batch` for many at once, DX-2727), `PATCH /api/issues/:id/edit`, `POST /api/issues/:id/transition`, the problems/solutions/dependencies/comments/quality-gates/retro sub-resource routes, and the equivalent `/api/plans/*` family (`GET /api/plans/:planId` — cheap scalars by default, `fields` opts into `cards`/`records`/`architecture`/`session_history`/`worker_dispatches`; `GET /api/plans` for the list, with an optional `status` filter over the same computed `complete`/`awaiting-session`/`building`/`planning` value `GET /api/plans/:planId` always returns ungated).
33
33
 
34
34
  ## `bridge` — a working session's event stream client
35
35
 
package/dist/index.js CHANGED
@@ -249,8 +249,7 @@ EXACT current shape of the one(s) you picked, before calling them through \`danx
249
249
  schema, required permission, and every documented error envelope. Never guess a field name or a route path.
250
250
 
251
251
  ALWAYS PASS \`fields\`. The default response for a list/get route is minimal — scalars only, no relations, no
252
- heavy text. Every resource that supports it takes a \`fields\` query param (a field tree, or a flat group list on
253
- an older route) that opts into exactly what you need. Passing nothing and then being surprised a field is
252
+ heavy text. Every resource that supports it takes a \`fields\` query param (a JSON field tree) that opts into exactly what you need. Passing nothing and then being surprised a field is
254
253
  missing is a caller bug, not a server one — check the spec for the resource's own field vocabulary.
255
254
 
256
255
  THE STALE-HASH RULE. A write that touches contested text (a card's title/description/checklists, a plan
@@ -5,10 +5,14 @@
5
5
  * the main danxbot repo — this package cannot import them, see below).
6
6
  *
7
7
  * The dashboard stamps `X-Danx-Mcp-Min-Version` on every routed `/api/*`
8
- * response with its currently-advertised floor (`MIN_MCP_VERSION` in
9
- * `src/mcp-contract.ts` — DX-3597 made that floor track the version where
10
- * an MCP-exposed contract last changed, not "whatever's currently
11
- * published"; see that file's module doc for the full decision).
8
+ * response with the floor of the `api` surface (`MCP_SURFACE_MIN_VERSIONS.api`
9
+ * in `src/mcp-contract.ts` — DX-3597 made a floor track the version where
10
+ * its surface's MCP-exposed contract last changed, not "whatever's currently
11
+ * published"; DX-4215 scoped floors per surface, so only a change to the
12
+ * `danxbot_api` passthrough itself blocks this client's calls. A floor for
13
+ * another surface, such as the stats wire, is enforced by the server on
14
+ * requests to that surface alone and never reaches this header; see that
15
+ * file's module doc for the full decision).
12
16
  *
13
17
  * `DashboardHttpClient.request()` (`./http-client.ts`) reads this header on
14
18
  * the FIRST call this process makes (regardless of outcome — a proactive
@@ -104,8 +108,8 @@ export class McpOutdatedError extends Error {
104
108
  have;
105
109
  need;
106
110
  constructor(have, need) {
107
- super(`[danx-dashboard-mcp] mcp_outdated: this MCP is running ${MCP_PACKAGE_NAME}@${have}, but the dashboard ` +
108
- `requires >= ${need}. Restart your Claude Code session to pick up the published update.`);
111
+ super(`[danx-dashboard-mcp] mcp_outdated: this MCP is running ${MCP_PACKAGE_NAME}@${have}, but the dashboard's ` +
112
+ `danxbot_api surface requires >= ${need}. Restart your Claude Code session to pick up the published update.`);
109
113
  this.name = "McpOutdatedError";
110
114
  this.have = have;
111
115
  this.need = need;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thehammer/danx-dashboard-mcp",
3
- "version": "0.1.208",
3
+ "version": "0.1.210",
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",