debug-toolkit 0.4.1 → 0.4.4
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 +76 -0
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,6 +7,82 @@ npx debug-toolkit demo # see it work (no AI needed)
|
|
|
7
7
|
npx debug-toolkit init # install in your project
|
|
8
8
|
```
|
|
9
9
|
|
|
10
|
+
## See It Work
|
|
11
|
+
|
|
12
|
+
Run `npx debug-toolkit demo` — creates a temp project with a real bug, walks through the full debug loop, no AI needed:
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
━━━ Step 1: debug_investigate ━━━
|
|
16
|
+
tool: debug_investigate
|
|
17
|
+
✓ Error type: TypeError — type
|
|
18
|
+
✓ Source: src/api.ts:8
|
|
19
|
+
>> 8 | const names = users.map(u => u.name); // BUG: users can be undefined
|
|
20
|
+
✓ Suggestion: Check for null/undefined values being accessed as objects
|
|
21
|
+
|
|
22
|
+
━━━ Step 2: debug_instrument ━━━
|
|
23
|
+
tool: debug_instrument
|
|
24
|
+
✓ Marker: DBG_001
|
|
25
|
+
✓ Hypothesis: "getUsers() returns undefined"
|
|
26
|
+
|
|
27
|
+
━━━ Step 3: debug_capture ━━━
|
|
28
|
+
tool: debug_capture
|
|
29
|
+
✓ Tagged output: [DBG_001] users = undefined
|
|
30
|
+
✓ Hypothesis confirmed → CONFIRMED
|
|
31
|
+
|
|
32
|
+
━━━ Step 5: debug_verify ━━━
|
|
33
|
+
✓ Exit code: 0 ✓ Errors: 0 ✓ Verdict: PASSED
|
|
34
|
+
|
|
35
|
+
━━━ Step 6: debug_cleanup ━━━
|
|
36
|
+
✓ Diagnosis saved to memory
|
|
37
|
+
✓ Causal chain: src/api.ts (error) → src/db.ts (cause)
|
|
38
|
+
|
|
39
|
+
━━━ Step 7: debug_recall (new session, same error) ━━━
|
|
40
|
+
✓ Past diagnosis found: 67% relevance
|
|
41
|
+
✓ Root cause: getUsers() returns undefined when db not connected
|
|
42
|
+
✓ Look at: src/db.ts (not src/api.ts)
|
|
43
|
+
→ Agent can skip investigation entirely and apply the known fix!
|
|
44
|
+
|
|
45
|
+
━━━ Step 8: debug_patterns ━━━
|
|
46
|
+
[WARNING] TypeError has occurred 4 times in src/api.ts
|
|
47
|
+
[WARNING] Possible regression: was fixed before but reappeared
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
<details>
|
|
51
|
+
<summary>Full demo output (value report)</summary>
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
┌─────────────────────────────────────────────────────────┐
|
|
55
|
+
│ VALUE REPORT │
|
|
56
|
+
└─────────────────────────────────────────────────────────┘
|
|
57
|
+
What the agent gathered in one debug session:
|
|
58
|
+
|
|
59
|
+
✓ Error classification TypeError, type error, severity high
|
|
60
|
+
✓ Source code at crash Exact line with surrounding context
|
|
61
|
+
✓ Git context Branch, commit, recent changes
|
|
62
|
+
✓ Runtime environment Node version, frameworks, env vars (redacted)
|
|
63
|
+
✓ Instrumented values users = undefined (tagged, linked to hypothesis)
|
|
64
|
+
✓ Verification result Exit code 0, 0 errors
|
|
65
|
+
✓ Causal chain error in api.ts caused by bug in db.ts
|
|
66
|
+
✓ Diagnosis persisted Searchable in future sessions
|
|
67
|
+
✓ Git SHA tagged Staleness detection for future recall
|
|
68
|
+
✓ Pattern detection Recurring errors, hot files, regressions
|
|
69
|
+
|
|
70
|
+
Data points collected: 17
|
|
71
|
+
Time elapsed: 2.9s
|
|
72
|
+
Memory entries: 4
|
|
73
|
+
Patterns detected: 5
|
|
74
|
+
|
|
75
|
+
Without debug-toolkit:
|
|
76
|
+
User pastes error → agent guesses fix → repeat 5-8 times
|
|
77
|
+
Typical: 8-12 conversation turns, no learning
|
|
78
|
+
|
|
79
|
+
With debug-toolkit:
|
|
80
|
+
investigate → instrument → capture → fix → verify → cleanup
|
|
81
|
+
1-2 turns with full context. Diagnosis saved for next time.
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
</details>
|
|
85
|
+
|
|
10
86
|
## The Problem
|
|
11
87
|
|
|
12
88
|
When an AI agent hits a bug, it reads code and guesses a fix. You run it, paste the error back, the agent guesses again. Repeat 5-8 times.
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
3
|
import { resolve, join } from "node:path";
|
|
4
|
-
import { existsSync,
|
|
4
|
+
import { existsSync, writeFileSync, readFileSync } from "node:fs";
|
|
5
5
|
import treeKill from "tree-kill";
|
|
6
6
|
import { pipeProcess } from "./capture.js";
|
|
7
7
|
import { startProxy, detectPort } from "./proxy.js";
|
|
@@ -67,11 +67,8 @@ function initCommand(cwd) {
|
|
|
67
67
|
}
|
|
68
68
|
catch { }
|
|
69
69
|
}
|
|
70
|
-
// Write MCP config
|
|
71
|
-
const
|
|
72
|
-
if (!existsSync(claudeDir))
|
|
73
|
-
mkdirSync(claudeDir, { recursive: true });
|
|
74
|
-
const mcpPath = join(claudeDir, "mcp.json");
|
|
70
|
+
// Write MCP config — .mcp.json at project root (Claude Code v2.x standard)
|
|
71
|
+
const mcpPath = join(cwd, ".mcp.json");
|
|
75
72
|
const existing = existsSync(mcpPath) ? JSON.parse(readFileSync(mcpPath, "utf-8")) : { mcpServers: {} };
|
|
76
73
|
existing.mcpServers ??= {};
|
|
77
74
|
// OPTION A: Pure MCP mode (zero-config, no proxy)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|