@thehammer/danx-dashboard-mcp 0.1.250 → 0.1.252
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/index.js +2 -1
- package/dist/lifecycle.js +4 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -632,6 +632,7 @@ strictTool("request_permission", "Ask a person to grant this key ONE MORE permis
|
|
|
632
632
|
// a different reason: it MAKES a plan rather than acting on one, so there is
|
|
633
633
|
// no existing plan for an id to name yet.
|
|
634
634
|
strictTool("plan_connect",
|
|
635
|
+
// DX-4493 — the `naming` block carries the thread title the session must take before it connects.
|
|
635
636
|
// DX-4318 — states only what to do with the reply. What it used to add arrives where it is used: a rejected
|
|
636
637
|
// action's rule in the event line itself (`listen.ts`), the mantra in the reply's own `reminders[]` text.
|
|
637
638
|
// DX-4390 — signed out, this is also how the session asks for access.
|
|
@@ -644,7 +645,7 @@ strictTool("plan_connect",
|
|
|
644
645
|
"titles and a first page of open cards) and `listenerHealth` (when its `state` is not `healthy`, do its " +
|
|
645
646
|
"`nextStep`). A session is on at most one plan: connecting elsewhere moves it, and `movedFrom` names the " +
|
|
646
647
|
"plan it left. Afterwards a `danxbot_api` call to a `/api/plans/mine/...` route acts on this plan and " +
|
|
647
|
-
"takes no plan id.
|
|
648
|
+
"takes no plan id. A reply's `naming` block (status `needed`) gives your `{Name}: PLAN-NNN {short " +
|
|
648
649
|
"title}`; rename this thread to it (`set_session_title`, or ask for `/rename`), then connect again with that `title`.", {
|
|
649
650
|
plan_id: z
|
|
650
651
|
.number()
|
package/dist/lifecycle.js
CHANGED
|
@@ -252,7 +252,7 @@ export function registerLifecycleTools(strictTool) {
|
|
|
252
252
|
"register the Slack mirror so future card updates re-render the thread's card-view message. Thread " +
|
|
253
253
|
"scope is IMPLICIT (channel + thread_ts come from the dispatch) — pass only the issue id. Call this " +
|
|
254
254
|
"AFTER posting your substantive answer with danxbot_slack_reply (that reply becomes the card-view " +
|
|
255
|
-
'"message #1"). A second call on an already-linked thread fails loud with a 409 — never a silent re-link.', { issue_id: z.string().describe('The card id to bind this thread to (e.g. "
|
|
255
|
+
'"message #1"). A second call on an already-linked thread fails loud with a 409 — never a silent re-link.', { issue_id: z.string().describe('The card id to bind this thread to (e.g. "ABC-123").') }, async (args) => {
|
|
256
256
|
const url = readLifecycleUrlsFromEnv().linkThreadToIssue;
|
|
257
257
|
if (!url)
|
|
258
258
|
throw new Error("link_thread_to_issue called outside a Slack dispatch");
|
|
@@ -310,10 +310,11 @@ export function registerLifecycleTools(strictTool) {
|
|
|
310
310
|
.enum(["Bug", "Story", "Chore"])
|
|
311
311
|
.describe("The card type. Never Epic/Feature — a single Slack request never warrants a container card."),
|
|
312
312
|
title: z.string().describe("Card title."),
|
|
313
|
+
// DX-4515: the create route refuses a card with no summary.
|
|
313
314
|
summary: z
|
|
314
315
|
.string()
|
|
315
316
|
.min(1)
|
|
316
|
-
.describe("REQUIRED
|
|
317
|
+
.describe("REQUIRED: one plain line saying what the card is, shown at the top of the card page."),
|
|
317
318
|
description: z
|
|
318
319
|
.string()
|
|
319
320
|
.describe("Card description — sourced from the triggering human message's content."),
|
|
@@ -397,7 +398,7 @@ export function registerLifecycleTools(strictTool) {
|
|
|
397
398
|
strictTool("request_code_review", "TERMINAL for this dispatch — call it when your diff is done and its own tests are green, instead of " +
|
|
398
399
|
"danxbot_complete. Pushes your branch (card/<id> to origin/card/<id>), then dispatches every code " +
|
|
399
400
|
"gate this card carries as its OWN independent gate-reviewer dispatch (you never sign or review your " +
|
|
400
|
-
"own diff
|
|
401
|
+
"own diff). Ends this dispatch 'completed' and releases the card to ToDo; when the card is " +
|
|
401
402
|
"re-dispatched to you, read its quality_gates (through danxbot_api): every code gate pass/skipped → " +
|
|
402
403
|
"run agent-finalize.sh and complete normally; any fail → fix its findings, then call " +
|
|
403
404
|
"request_code_review again (never sign or remove a code gate yourself — removal is refused, 409). " +
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thehammer/danx-dashboard-mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.252",
|
|
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",
|