@thehammer/danx-dashboard-mcp 0.1.143 → 0.1.146

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
@@ -1514,14 +1514,11 @@ export async function failureCategoryUpdate(client, args) {
1514
1514
  * no dashboard-side change needed, that data is already captured today for
1515
1515
  * every worker dispatch).
1516
1516
  *
1517
- * Why this exists instead of a filesystem path: CLAUDE.md Core Principle 5
1518
- * makes the worktree boundary binary (inside allow, outside reject, no
1519
- * per-card opt-in) — a Grep/Glob tool pointed at `~/.claude/projects/`, or a
1520
- * worktree-guard carve-out for that path, both widen that boundary the same
1521
- * way a Bash `grep` would. This tool needs no such carve-out: it is an
1522
- * ordinary HTTP call authenticated the same way every other
1523
- * `mcp__danx-dashboard__*` tool already is, so worktree-guard never enters
1524
- * the picture and CP5 stays untouched.
1517
+ * Why this exists instead of a filesystem path: the transcript lives in
1518
+ * ANOTHER dispatch's storage, not this one's container, so there is no local
1519
+ * path to point Read/Grep at — an ordinary HTTP call authenticated the same
1520
+ * way every other `mcp__danx-dashboard__*` tool already is, is how a
1521
+ * dispatch reaches it at all.
1525
1522
  *
1526
1523
  * Why this ALSO fixes the underlying complaint `Read` can't: `Read`
1527
1524
  * paginates by LINE, and a persisted JSONL entry can itself be one giant
package/dist/index.js CHANGED
@@ -192,9 +192,6 @@ function resolveCredentialOrDie() {
192
192
  * `CLAUDE_CODE_SESSION_ID` is set on every process an interactive Claude Code
193
193
  * session spawns — this server among them — so no launcher, no dispatch
194
194
  * overlay and no agent cooperation is needed for a session to be identifiable.
195
- * The same variable is what `src/agent/nested-claude-preflight.ts` already
196
- * relies on to detect a nested session, so this is an established fact about
197
- * the runtime rather than a new assumption.
198
195
  *
199
196
  * OPTIONAL, unlike every other env this package reads. A process running
200
197
  * outside a Claude Code session has no session to report; it sends no session
@@ -1134,7 +1131,7 @@ strictTool("failure_category_update", "Patch an existing failure category. Board
1134
1131
  expectedRate: expectedRateField,
1135
1132
  }, async (args) => jsonResult(await failureCategoryUpdate(client, args)));
1136
1133
  // ---------------- dispatch_transcript_search (DX-3221) ----------------
1137
- strictTool("dispatch_transcript_search", "Search or tail another dispatch's stored JSONL transcript. Needs no filesystem access (an authenticated HTTP call — never touches worktree-guard or the worktree boundary) and fixes what Read cannot: a single JSONL entry can exceed Read's token cap with no way to sub-page inside it, so this tool searches itself and returns only a bounded excerpt around a match. With `pattern`: up to `maxMatches` matching lines (case-insensitive regex), each windowed to `contextChars` around the first match. Without `pattern`: the most recent `tail` lines instead, each capped at `contextChars` (`truncated: true` marks a capped excerpt either way, never a thrown error). `dispatchId` is a real `dispatches.id` — e.g. from a failure-repair card's own body.", {
1134
+ strictTool("dispatch_transcript_search", "Search or tail another dispatch's stored JSONL transcript. Needs no filesystem access (an authenticated HTTP call, not a local read) and fixes what Read cannot: a single JSONL entry can exceed Read's token cap with no way to sub-page inside it, so this tool searches itself and returns only a bounded excerpt around a match. With `pattern`: up to `maxMatches` matching lines (case-insensitive regex), each windowed to `contextChars` around the first match. Without `pattern`: the most recent `tail` lines instead, each capped at `contextChars` (`truncated: true` marks a capped excerpt either way, never a thrown error). `dispatchId` is a real `dispatches.id` — e.g. from a failure-repair card's own body.", {
1138
1135
  dispatchId: z.string().min(1).describe("The dispatch id whose transcript to search — from a failure-repair card's own body, or any other dispatch id you already have."),
1139
1136
  pattern: z.string().min(1).optional().describe("Case-insensitive regex tested against each raw JSONL line. Omit to get a tail read of the most recent lines instead."),
1140
1137
  tail: z.number().int().positive().optional().describe("Only used when `pattern` is omitted. How many of the most recent lines to return. Defaults to 20, capped at 200."),
package/package.json CHANGED
@@ -1,42 +1,42 @@
1
- {
2
- "name": "@thehammer/danx-dashboard-mcp",
3
- "version": "0.1.143",
4
- "description": "Stdio MCP server wrapping danxbot's dashboard /api/issues/* normalized DB-backed HTTP routes for dispatched agents (DX-704 Phase 2).",
5
- "license": "MIT",
6
- "type": "module",
7
- "main": "dist/index.js",
8
- "bin": {
9
- "danx-dashboard-mcp": "dist/index.js"
10
- },
11
- "files": [
12
- "dist",
13
- "README.md"
14
- ],
15
- "repository": {
16
- "type": "git",
17
- "url": "https://github.com/newms87/danxbot.git",
18
- "directory": "packages/danx-dashboard-mcp"
19
- },
20
- "engines": {
21
- "node": ">=20"
22
- },
23
- "scripts": {
24
- "build": "tsc -p tsconfig.json && node -e \"require('fs').chmodSync('dist/index.js', 0o755)\"",
25
- "verify:boot": "bash scripts/verify-boot.sh",
26
- "start": "node dist/index.js",
27
- "dev": "tsx src/index.ts",
28
- "gen-tool-defs": "tsx scripts/gen-tool-defs.ts",
29
- "test": "vitest run",
30
- "test:watch": "vitest"
31
- },
32
- "dependencies": {
33
- "@modelcontextprotocol/sdk": "1.29.0",
34
- "zod": "^3.25.76"
35
- },
36
- "devDependencies": {
37
- "@types/node": "^22.0.0",
38
- "tsx": "^4.0.0",
39
- "typescript": "^5.7.0",
40
- "vitest": "^4.1.5"
41
- }
42
- }
1
+ {
2
+ "name": "@thehammer/danx-dashboard-mcp",
3
+ "version": "0.1.146",
4
+ "description": "Stdio MCP server wrapping danxbot's dashboard /api/issues/* normalized DB-backed HTTP routes for dispatched agents (DX-704 Phase 2).",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "bin": {
9
+ "danx-dashboard-mcp": "dist/index.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "README.md"
14
+ ],
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/newms87/danxbot.git",
18
+ "directory": "packages/danx-dashboard-mcp"
19
+ },
20
+ "engines": {
21
+ "node": ">=20"
22
+ },
23
+ "scripts": {
24
+ "build": "tsc -p tsconfig.json && node -e \"require('fs').chmodSync('dist/index.js', 0o755)\"",
25
+ "verify:boot": "bash scripts/verify-boot.sh",
26
+ "start": "node dist/index.js",
27
+ "dev": "tsx src/index.ts",
28
+ "gen-tool-defs": "tsx scripts/gen-tool-defs.ts",
29
+ "test": "vitest run",
30
+ "test:watch": "vitest"
31
+ },
32
+ "dependencies": {
33
+ "@modelcontextprotocol/sdk": "1.29.0",
34
+ "zod": "^3.25.76"
35
+ },
36
+ "devDependencies": {
37
+ "@types/node": "^22.0.0",
38
+ "tsx": "^4.0.0",
39
+ "typescript": "^5.7.0",
40
+ "vitest": "^4.1.5"
41
+ }
42
+ }