dap-mcp-server 0.1.12 → 0.1.17
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 +50 -10
- package/SKILL.md +39 -184
- package/build/adapters/builtin.js +25 -0
- package/build/adapters/builtin.js.map +1 -1
- package/build/adapters/detect.d.ts +12 -0
- package/build/adapters/detect.js +91 -0
- package/build/adapters/detect.js.map +1 -1
- package/build/adapters/recipes.d.ts +46 -0
- package/build/adapters/recipes.js +128 -0
- package/build/adapters/recipes.js.map +1 -0
- package/build/adapters/registry.js +35 -12
- package/build/adapters/registry.js.map +1 -1
- package/build/dap/types.d.ts +20 -0
- package/build/diagnostics/doctor.d.ts +70 -0
- package/build/diagnostics/doctor.js +268 -0
- package/build/diagnostics/doctor.js.map +1 -0
- package/build/server.js +432 -161
- package/build/server.js.map +1 -1
- package/build/session/inspect.d.ts +12 -2
- package/build/session/inspect.js +33 -20
- package/build/session/inspect.js.map +1 -1
- package/build/session/run.d.ts +2 -0
- package/build/session/run.js +13 -23
- package/build/session/run.js.map +1 -1
- package/build/session/session.d.ts +38 -2
- package/build/session/session.js +158 -12
- package/build/session/session.js.map +1 -1
- package/{src/test-fixtures/crash-adapter.js → build/session/state-format.d.ts} +11 -2
- package/build/session/state-format.js +62 -0
- package/build/session/state-format.js.map +1 -0
- package/integrations/claude/dap-debugging/.claude-plugin/plugin.json +9 -0
- package/integrations/claude/dap-debugging/.mcp.json +8 -0
- package/integrations/claude/dap-debugging/skills/dap-debugging/SKILL.md +51 -0
- package/package.json +8 -3
- package/.forgejo/workflows/publish.yml +0 -63
- package/CLAUDE.md +0 -71
- package/TODO.md +0 -32
- package/docs/plans/2026-03-05-dap-wrapper-mcp-design.md +0 -326
- package/docs/plans/2026-03-05-dap-wrapper-mcp-implementation.md +0 -2815
- package/src/adapters/builtin.ts +0 -75
- package/src/adapters/detect.test.ts +0 -36
- package/src/adapters/detect.ts +0 -36
- package/src/adapters/registry.test.ts +0 -74
- package/src/adapters/registry.ts +0 -86
- package/src/dap/dap-client.test.ts +0 -118
- package/src/dap/dap-client.ts +0 -588
- package/src/dap/protocol.test.ts +0 -82
- package/src/dap/protocol.ts +0 -78
- package/src/dap/ring-buffer.test.ts +0 -82
- package/src/dap/ring-buffer.ts +0 -64
- package/src/dap/types.ts +0 -115
- package/src/index.ts +0 -30
- package/src/integration/debug-lifecycle.test.ts +0 -131
- package/src/server.ts +0 -1096
- package/src/session/inspect.test.ts +0 -126
- package/src/session/inspect.ts +0 -160
- package/src/session/run.test.ts +0 -74
- package/src/session/run.ts +0 -144
- package/src/session/session-manager.test.ts +0 -74
- package/src/session/session-manager.ts +0 -67
- package/src/session/session.test.ts +0 -126
- package/src/session/session.ts +0 -482
- package/src/test-fixtures/mock-adapter.js +0 -164
- package/src/test-fixtures/no-stop-adapter.js +0 -77
- package/src/test-fixtures/silent-adapter.js +0 -24
- package/src/test-fixtures/tcp-mock-adapter.js +0 -87
- package/tsconfig.json +0 -16
package/build/session/session.js
CHANGED
|
@@ -23,7 +23,14 @@ import { DAPClient } from "../dap/dap-client.js";
|
|
|
23
23
|
import { RingBuffer } from "../dap/ring-buffer.js";
|
|
24
24
|
import path from "node:path";
|
|
25
25
|
const MAX_OUTPUT_LINES = 10000;
|
|
26
|
+
const MAX_STATE_OUTPUT_ENTRIES = 50;
|
|
26
27
|
const DEFAULT_TIMEOUT = 30000;
|
|
28
|
+
function isRegistersScope(scope) {
|
|
29
|
+
return scope.presentationHint === "registers" || /^registers?$/i.test(scope.name);
|
|
30
|
+
}
|
|
31
|
+
function isFrameLocalScope(scope) {
|
|
32
|
+
return !scope.expensive && !/^(global|static)/i.test(scope.name);
|
|
33
|
+
}
|
|
27
34
|
export class DebugSession {
|
|
28
35
|
id;
|
|
29
36
|
client;
|
|
@@ -31,16 +38,21 @@ export class DebugSession {
|
|
|
31
38
|
_state = "idle";
|
|
32
39
|
outputBuffer = new RingBuffer(MAX_OUTPUT_LINES);
|
|
33
40
|
nextOutputSeq = 1;
|
|
41
|
+
lastReportedOutputSeq = 0;
|
|
34
42
|
breakpointsMap = new Map();
|
|
35
43
|
capabilities = {};
|
|
36
44
|
stoppedThreadId;
|
|
37
45
|
stoppedReason;
|
|
46
|
+
stoppedDescription;
|
|
47
|
+
_exitCode;
|
|
48
|
+
exitCodeResolvers = [];
|
|
38
49
|
launchConfig;
|
|
39
50
|
attachConfig;
|
|
40
51
|
launchMode = "launch";
|
|
41
52
|
stoppedResolvers = [];
|
|
42
53
|
initializedResolvers = [];
|
|
43
54
|
terminatedResolvers = [];
|
|
55
|
+
lifecycleResolvers = [];
|
|
44
56
|
_initializedReceived = false;
|
|
45
57
|
constructor(id, config) {
|
|
46
58
|
this.id = id;
|
|
@@ -60,6 +72,7 @@ export class DebugSession {
|
|
|
60
72
|
this._state = "terminated";
|
|
61
73
|
}
|
|
62
74
|
this.resolveTerminatedWaiters();
|
|
75
|
+
this.resolveLifecycleWaiters({ status: "terminated" });
|
|
63
76
|
});
|
|
64
77
|
}
|
|
65
78
|
resolveTerminatedWaiters() {
|
|
@@ -68,6 +81,12 @@ export class DebugSession {
|
|
|
68
81
|
for (const r of resolvers)
|
|
69
82
|
r();
|
|
70
83
|
}
|
|
84
|
+
resolveLifecycleWaiters(outcome) {
|
|
85
|
+
const resolvers = this.lifecycleResolvers;
|
|
86
|
+
this.lifecycleResolvers = [];
|
|
87
|
+
for (const resolve of resolvers)
|
|
88
|
+
resolve(outcome);
|
|
89
|
+
}
|
|
71
90
|
get state() {
|
|
72
91
|
return this._state;
|
|
73
92
|
}
|
|
@@ -156,34 +175,34 @@ export class DebugSession {
|
|
|
156
175
|
async launch(config) {
|
|
157
176
|
this.launchConfig = config;
|
|
158
177
|
this.launchMode = "launch";
|
|
159
|
-
await this.client.sendRequest("launch", config);
|
|
160
178
|
this._state = "running";
|
|
179
|
+
await this.client.sendRequest("launch", config);
|
|
161
180
|
}
|
|
162
181
|
async attach(config) {
|
|
163
182
|
this.attachConfig = config;
|
|
164
183
|
this.launchMode = "attach";
|
|
165
|
-
await this.client.sendRequest("attach", config);
|
|
166
184
|
this._state = "running";
|
|
185
|
+
await this.client.sendRequest("attach", config);
|
|
167
186
|
}
|
|
168
187
|
async continueExecution(threadId) {
|
|
169
188
|
const tid = threadId ?? this.stoppedThreadId ?? 1;
|
|
170
|
-
await this.client.sendRequest("continue", { threadId: tid });
|
|
171
189
|
this._state = "running";
|
|
190
|
+
await this.client.sendRequest("continue", { threadId: tid });
|
|
172
191
|
}
|
|
173
192
|
async next(threadId) {
|
|
174
193
|
const tid = threadId ?? this.stoppedThreadId ?? 1;
|
|
175
|
-
await this.client.sendRequest("next", { threadId: tid });
|
|
176
194
|
this._state = "running";
|
|
195
|
+
await this.client.sendRequest("next", { threadId: tid });
|
|
177
196
|
}
|
|
178
197
|
async stepIn(threadId) {
|
|
179
198
|
const tid = threadId ?? this.stoppedThreadId ?? 1;
|
|
180
|
-
await this.client.sendRequest("stepIn", { threadId: tid });
|
|
181
199
|
this._state = "running";
|
|
200
|
+
await this.client.sendRequest("stepIn", { threadId: tid });
|
|
182
201
|
}
|
|
183
202
|
async stepOut(threadId) {
|
|
184
203
|
const tid = threadId ?? this.stoppedThreadId ?? 1;
|
|
185
|
-
await this.client.sendRequest("stepOut", { threadId: tid });
|
|
186
204
|
this._state = "running";
|
|
205
|
+
await this.client.sendRequest("stepOut", { threadId: tid });
|
|
187
206
|
}
|
|
188
207
|
async pause(threadId) {
|
|
189
208
|
const tid = threadId ?? this.stoppedThreadId ?? 1;
|
|
@@ -249,6 +268,66 @@ export class DebugSession {
|
|
|
249
268
|
this.stoppedResolvers.push(wrappedResolve);
|
|
250
269
|
});
|
|
251
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* Wait for the next meaningful lifecycle outcome without racing two promises.
|
|
273
|
+
* Unlike waitForStopped/waitForTerminated, a timeout is returned as data so
|
|
274
|
+
* callers can reliably distinguish a running process from a completed one.
|
|
275
|
+
*/
|
|
276
|
+
async waitForStopOrTermination(timeout = DEFAULT_TIMEOUT) {
|
|
277
|
+
if (this._state === "stopped") {
|
|
278
|
+
return {
|
|
279
|
+
status: "stopped",
|
|
280
|
+
event: {
|
|
281
|
+
seq: 0,
|
|
282
|
+
type: "event",
|
|
283
|
+
event: "stopped",
|
|
284
|
+
body: { reason: this.stoppedReason || "unknown", threadId: this.stoppedThreadId },
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
if (this._state === "terminated")
|
|
289
|
+
return { status: "terminated" };
|
|
290
|
+
return new Promise((resolve) => {
|
|
291
|
+
let settled = false;
|
|
292
|
+
const wrappedResolve = (outcome) => {
|
|
293
|
+
if (settled)
|
|
294
|
+
return;
|
|
295
|
+
settled = true;
|
|
296
|
+
clearTimeout(timer);
|
|
297
|
+
const index = this.lifecycleResolvers.indexOf(wrappedResolve);
|
|
298
|
+
if (index !== -1)
|
|
299
|
+
this.lifecycleResolvers.splice(index, 1);
|
|
300
|
+
resolve(outcome);
|
|
301
|
+
};
|
|
302
|
+
const timer = setTimeout(() => wrappedResolve({ status: "timeout" }), timeout);
|
|
303
|
+
this.lifecycleResolvers.push(wrappedResolve);
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
get exitCode() {
|
|
307
|
+
return this._exitCode;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* The debuggee's exit code, if the adapter reports one. Adapters disagree on
|
|
311
|
+
* whether `exited` precedes or trails `terminated`, so callers that have just
|
|
312
|
+
* seen termination give it a short grace period.
|
|
313
|
+
*/
|
|
314
|
+
async waitForExitCode(timeout = 250) {
|
|
315
|
+
if (this._exitCode !== undefined)
|
|
316
|
+
return this._exitCode;
|
|
317
|
+
await new Promise((resolve) => {
|
|
318
|
+
const timer = setTimeout(done, timeout);
|
|
319
|
+
const resolvers = this.exitCodeResolvers;
|
|
320
|
+
function done() {
|
|
321
|
+
clearTimeout(timer);
|
|
322
|
+
const idx = resolvers.indexOf(done);
|
|
323
|
+
if (idx !== -1)
|
|
324
|
+
resolvers.splice(idx, 1);
|
|
325
|
+
resolve();
|
|
326
|
+
}
|
|
327
|
+
resolvers.push(done);
|
|
328
|
+
});
|
|
329
|
+
return this._exitCode;
|
|
330
|
+
}
|
|
252
331
|
async getThreads() {
|
|
253
332
|
const response = await this.client.sendRequest("threads");
|
|
254
333
|
return response.body?.threads || [];
|
|
@@ -284,9 +363,14 @@ export class DebugSession {
|
|
|
284
363
|
return vars;
|
|
285
364
|
}
|
|
286
365
|
async evaluate(expression, frameId, context = "repl") {
|
|
366
|
+
let resolvedFrameId = frameId;
|
|
367
|
+
if (resolvedFrameId === undefined && this._state === "stopped") {
|
|
368
|
+
const frames = await this.getStackTrace(this.stoppedThreadId ?? 1, 1);
|
|
369
|
+
resolvedFrameId = frames[0]?.id;
|
|
370
|
+
}
|
|
287
371
|
const args = { expression, context };
|
|
288
|
-
if (
|
|
289
|
-
args.frameId =
|
|
372
|
+
if (resolvedFrameId !== undefined)
|
|
373
|
+
args.frameId = resolvedFrameId;
|
|
290
374
|
const response = await this.client.sendRequest("evaluate", args);
|
|
291
375
|
return {
|
|
292
376
|
result: response.body?.result ?? "",
|
|
@@ -295,7 +379,44 @@ export class DebugSession {
|
|
|
295
379
|
variablesReference: response.body?.variablesReference ?? 0,
|
|
296
380
|
};
|
|
297
381
|
}
|
|
298
|
-
async
|
|
382
|
+
async getExceptionDetails(threadId) {
|
|
383
|
+
if (this.capabilities.supportsExceptionInfoRequest) {
|
|
384
|
+
try {
|
|
385
|
+
const response = await this.client.sendRequest("exceptionInfo", { threadId });
|
|
386
|
+
const body = response.body;
|
|
387
|
+
if (body) {
|
|
388
|
+
return {
|
|
389
|
+
id: body.exceptionId,
|
|
390
|
+
description: body.description ?? body.details?.message,
|
|
391
|
+
breakMode: body.breakMode,
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
catch {
|
|
396
|
+
/* Fall back to what the stopped event said */
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
return this.stoppedDescription ? { description: this.stoppedDescription } : undefined;
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Output no earlier state has reported yet, capped to the newest entries.
|
|
403
|
+
* The full buffer always stays available through getOutput().
|
|
404
|
+
*/
|
|
405
|
+
unreportedOutput(consume) {
|
|
406
|
+
const since = this.lastReportedOutputSeq;
|
|
407
|
+
const entries = this.outputBuffer.getFiltered((e) => e.seq > since);
|
|
408
|
+
if (consume && entries.length > 0) {
|
|
409
|
+
this.lastReportedOutputSeq = entries[entries.length - 1].seq;
|
|
410
|
+
}
|
|
411
|
+
if (entries.length === 0)
|
|
412
|
+
return {};
|
|
413
|
+
const omitted = Math.max(0, entries.length - MAX_STATE_OUTPUT_ENTRIES);
|
|
414
|
+
return {
|
|
415
|
+
output: entries.slice(omitted).map((e) => e.text),
|
|
416
|
+
outputOmitted: omitted > 0 ? omitted : undefined,
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
async collectState(threadId, depth = 10, variableDepth = 1, options = {}) {
|
|
299
420
|
const tid = threadId ?? this.stoppedThreadId ?? 1;
|
|
300
421
|
const threads = await this.getThreads();
|
|
301
422
|
const frames = await this.getStackTrace(tid, depth);
|
|
@@ -309,17 +430,28 @@ export class DebugSession {
|
|
|
309
430
|
}
|
|
310
431
|
: { file: "<unknown>", line: 0 };
|
|
311
432
|
const scopes = [];
|
|
433
|
+
const omittedScopes = [];
|
|
312
434
|
if (topFrame) {
|
|
435
|
+
const requested = options.scopes?.map((name) => name.toLowerCase());
|
|
313
436
|
const rawScopes = await this.getScopes(topFrame.id);
|
|
314
437
|
for (const scope of rawScopes) {
|
|
438
|
+
const wanted = requested
|
|
439
|
+
? requested.includes(scope.name.toLowerCase())
|
|
440
|
+
: !isRegistersScope(scope) && (!options.localsOnly || isFrameLocalScope(scope));
|
|
441
|
+
if (!wanted) {
|
|
442
|
+
omittedScopes.push(scope.name);
|
|
443
|
+
continue;
|
|
444
|
+
}
|
|
315
445
|
const variables = await this.getVariables(scope.variablesReference, variableDepth);
|
|
316
446
|
scopes.push({ name: scope.name, variables });
|
|
317
447
|
}
|
|
318
448
|
}
|
|
319
|
-
const
|
|
449
|
+
const reason = this.stoppedReason || "unknown";
|
|
450
|
+
const exception = reason === "exception" ? await this.getExceptionDetails(tid) : undefined;
|
|
320
451
|
return {
|
|
321
452
|
status: "stopped",
|
|
322
|
-
reason
|
|
453
|
+
reason,
|
|
454
|
+
exception,
|
|
323
455
|
location,
|
|
324
456
|
threads: threads.map((t) => ({ id: t.id, name: t.name, stopped: t.id === tid })),
|
|
325
457
|
stackTrace: frames.map((f) => ({
|
|
@@ -330,7 +462,8 @@ export class DebugSession {
|
|
|
330
462
|
column: f.column,
|
|
331
463
|
})),
|
|
332
464
|
scopes,
|
|
333
|
-
|
|
465
|
+
omittedScopes: omittedScopes.length > 0 ? omittedScopes : undefined,
|
|
466
|
+
...this.unreportedOutput(options.consumeOutput ?? false),
|
|
334
467
|
};
|
|
335
468
|
}
|
|
336
469
|
addOutput(category, text) {
|
|
@@ -374,6 +507,8 @@ export class DebugSession {
|
|
|
374
507
|
/* Ignore — adapter may have already exited */
|
|
375
508
|
}
|
|
376
509
|
this._state = "terminated";
|
|
510
|
+
this.resolveTerminatedWaiters();
|
|
511
|
+
this.resolveLifecycleWaiters({ status: "terminated" });
|
|
377
512
|
await this.client.dispose();
|
|
378
513
|
}
|
|
379
514
|
getLaunchConfig() {
|
|
@@ -406,12 +541,17 @@ export class DebugSession {
|
|
|
406
541
|
this._state = "stopped";
|
|
407
542
|
this.stoppedThreadId = event.body?.threadId;
|
|
408
543
|
this.stoppedReason = event.body?.reason;
|
|
544
|
+
this.stoppedDescription = (event.body?.text ?? event.body?.description);
|
|
409
545
|
{
|
|
410
546
|
const resolvers = this.stoppedResolvers;
|
|
411
547
|
this.stoppedResolvers = [];
|
|
412
548
|
for (const resolve of resolvers)
|
|
413
549
|
resolve(event);
|
|
414
550
|
}
|
|
551
|
+
this.resolveLifecycleWaiters({
|
|
552
|
+
status: "stopped",
|
|
553
|
+
event: event,
|
|
554
|
+
});
|
|
415
555
|
break;
|
|
416
556
|
case "continued":
|
|
417
557
|
this._state = "running";
|
|
@@ -422,8 +562,14 @@ export class DebugSession {
|
|
|
422
562
|
break;
|
|
423
563
|
case "terminated":
|
|
424
564
|
case "exited":
|
|
565
|
+
if (event.event === "exited" && typeof event.body?.exitCode === "number") {
|
|
566
|
+
this._exitCode = event.body.exitCode;
|
|
567
|
+
for (const resolve of [...this.exitCodeResolvers])
|
|
568
|
+
resolve();
|
|
569
|
+
}
|
|
425
570
|
this._state = "terminated";
|
|
426
571
|
this.resolveTerminatedWaiters();
|
|
572
|
+
this.resolveLifecycleWaiters({ status: "terminated" });
|
|
427
573
|
break;
|
|
428
574
|
}
|
|
429
575
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,5 +19,14 @@
|
|
|
19
19
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
20
|
* SOFTWARE.
|
|
21
21
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
import { StoppedState } from "../dap/types.js";
|
|
23
|
+
export type StateDetail = "compact" | "full";
|
|
24
|
+
/** Stack depth worth paying for on every step; get_state can ask for more. */
|
|
25
|
+
export declare const COMPACT_STACK_DEPTH = 5;
|
|
26
|
+
/**
|
|
27
|
+
* The token-frugal view of a stopped state: no columns, no redundant
|
|
28
|
+
* variable bookkeeping, and no thread list unless there are threads to tell
|
|
29
|
+
* apart. Undefined members disappear on JSON serialization.
|
|
30
|
+
*/
|
|
31
|
+
export declare function compactState(state: StoppedState): Record<string, unknown>;
|
|
32
|
+
export declare function renderState(state: StoppedState, detail: StateDetail, extra?: Record<string, unknown>): string;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 Ivan Iraci <ivan.iraci@professioneit.com>
|
|
3
|
+
*
|
|
4
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
* in the Software without restriction, including without limitation the rights
|
|
7
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
* furnished to do so, subject to the following conditions:
|
|
10
|
+
*
|
|
11
|
+
* The above copyright notice and this permission notice shall be included in
|
|
12
|
+
* all copies or substantial portions of the Software.
|
|
13
|
+
*
|
|
14
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
|
+
* SOFTWARE.
|
|
21
|
+
*/
|
|
22
|
+
/** Stack depth worth paying for on every step; get_state can ask for more. */
|
|
23
|
+
export const COMPACT_STACK_DEPTH = 5;
|
|
24
|
+
function compactVariable(variable) {
|
|
25
|
+
return {
|
|
26
|
+
name: variable.name,
|
|
27
|
+
value: variable.value,
|
|
28
|
+
type: variable.type || undefined,
|
|
29
|
+
variablesReference: variable.variablesReference > 0 ? variable.variablesReference : undefined,
|
|
30
|
+
children: variable.children?.map(compactVariable),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The token-frugal view of a stopped state: no columns, no redundant
|
|
35
|
+
* variable bookkeeping, and no thread list unless there are threads to tell
|
|
36
|
+
* apart. Undefined members disappear on JSON serialization.
|
|
37
|
+
*/
|
|
38
|
+
export function compactState(state) {
|
|
39
|
+
const { column: _column, ...location } = state.location;
|
|
40
|
+
const compact = {
|
|
41
|
+
status: state.status,
|
|
42
|
+
reason: state.reason,
|
|
43
|
+
exception: state.exception,
|
|
44
|
+
location,
|
|
45
|
+
threads: state.threads.length > 1 ? state.threads : undefined,
|
|
46
|
+
stackTrace: state.stackTrace.map(({ column: _frameColumn, ...frame }) => frame),
|
|
47
|
+
scopes: state.scopes.map((scope) => ({
|
|
48
|
+
name: scope.name,
|
|
49
|
+
variables: scope.variables.map(compactVariable),
|
|
50
|
+
})),
|
|
51
|
+
omittedScopes: state.omittedScopes,
|
|
52
|
+
output: state.output,
|
|
53
|
+
outputOmitted: state.outputOmitted,
|
|
54
|
+
};
|
|
55
|
+
return JSON.parse(JSON.stringify(compact));
|
|
56
|
+
}
|
|
57
|
+
export function renderState(state, detail, extra = {}) {
|
|
58
|
+
return detail === "compact"
|
|
59
|
+
? JSON.stringify({ ...extra, ...compactState(state) })
|
|
60
|
+
: JSON.stringify({ ...extra, ...state }, null, 2);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=state-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-format.js","sourceRoot":"","sources":["../../src/session/state-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,SAAS,eAAe,CAAC,QAAkB;IACzC,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,SAAS;QAChC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;QAC7F,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,eAAe,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAmB;IAC9C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IACxD,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ;QACR,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QAC7D,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC;QAC/E,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;SAChD,CAAC,CAAC;QACH,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC;IACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAA4B,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,KAAmB,EACnB,MAAmB,EACnB,QAAiC,EAAE;IAEnC,OAAO,MAAM,KAAK,SAAS;QACzB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dap-debugging",
|
|
3
|
+
"description": "LLM-first runtime debugging through standard Debug Adapter Protocol adapters",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Ivan Iraci"
|
|
7
|
+
},
|
|
8
|
+
"repository": "ssh://git@forgejo.professioneit.com/ProfessioneIT/dap-mcp-server.git"
|
|
9
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dap-debugging
|
|
3
|
+
description: Use a real debugger for opaque test failures, crashes, swallowed exceptions, incorrect runtime state, or a bug that remains unexplained after static inspection or a failed fix. Prefer this over adding multiple print statements when actual values, branches, or call stacks are needed.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Debug Code with DAP
|
|
7
|
+
|
|
8
|
+
Use the `dap` MCP server when static inspection cannot explain a runtime failure. Debugging executes local code and can trigger its normal side effects, so do not run untrusted targets.
|
|
9
|
+
|
|
10
|
+
## Preferred Workflow
|
|
11
|
+
|
|
12
|
+
1. Call `debug_doctor` with the project `cwd`. Follow its remediation when `ready` is false.
|
|
13
|
+
2. Choose an executable line near the first observable bad state.
|
|
14
|
+
3. Call `debug_at` with `file`, `line`, and a small set of hypothesis-driven `expressions`. It detects the adapter, launches, inspects, and cleans up in one call.
|
|
15
|
+
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"cwd": "/workspace/project",
|
|
19
|
+
"program": "/workspace/project/app.py",
|
|
20
|
+
"file": "/workspace/project/app.py",
|
|
21
|
+
"line": 42,
|
|
22
|
+
"expressions": ["request.user", "result"]
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Read the outcome precisely:
|
|
27
|
+
|
|
28
|
+
- `hit: true`: use the location and values as evidence.
|
|
29
|
+
- `status: terminated`: execution finished before the breakpoint; verify path, arguments, and branch.
|
|
30
|
+
- `timedOut: true`: inspect captured output and narrow the target.
|
|
31
|
+
- With `hit: false`, `breakpoint.verified: false` means the adapter could not bind the source location.
|
|
32
|
+
|
|
33
|
+
Pass adapter-specific fields through `launchConfig`. Use absolute program and source paths.
|
|
34
|
+
|
|
35
|
+
## Failing Tests
|
|
36
|
+
|
|
37
|
+
Debug the smallest failing test. Supply its runner as `program` or through `launchConfig`, and its selector in `args`. Launch conventions differ across adapters; retain known-good fields from `.vscode/launch.json`. Put the breakpoint in application code before the assertion or exception boundary.
|
|
38
|
+
|
|
39
|
+
## Interactive Exploration
|
|
40
|
+
|
|
41
|
+
Use `debug_launch` only for multiple stops or stepping. A launch with breakpoints waits by default and reports stopped, terminated, or timeout.
|
|
42
|
+
|
|
43
|
+
1. Inspect the state returned by `debug_launch`.
|
|
44
|
+
2. Use `evaluate` for focused questions.
|
|
45
|
+
3. Prefer `step` with `next`; use `stepIn` only when the callee is suspect.
|
|
46
|
+
4. Move breakpoints with `set_breakpoints` as the hypothesis changes.
|
|
47
|
+
5. Finish with `debug_disconnect`.
|
|
48
|
+
|
|
49
|
+
`step` answers compactly (frame-local scopes, short stack, new output only); use `get_state` for globals, deeper stacks, or `scopes: ["Registers"]`. For a running or suspended process, call `debug_attach` with `breakpoints` so they bind before it resumes.
|
|
50
|
+
|
|
51
|
+
Omit `sessionId` when one session is active. Use `debug_run` when output and termination are sufficient. For repeated observations, use logpoints (`logMessage`) and read them with `get_output` instead of editing source to add prints.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dap-mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.17",
|
|
4
4
|
"description": "MCP server wrapping the Debug Adapter Protocol for AI-driven debugging",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"LLM",
|
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
"bin": {
|
|
20
20
|
"dap-mcp-server": "build/index.js"
|
|
21
21
|
},
|
|
22
|
+
"files": [
|
|
23
|
+
"build",
|
|
24
|
+
"SKILL.md",
|
|
25
|
+
"integrations/claude/dap-debugging"
|
|
26
|
+
],
|
|
22
27
|
"directories": {
|
|
23
28
|
"doc": "docs"
|
|
24
29
|
},
|
|
@@ -31,7 +36,7 @@
|
|
|
31
36
|
"typecheck": "tsc --noEmit"
|
|
32
37
|
},
|
|
33
38
|
"dependencies": {
|
|
34
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
39
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
35
40
|
"@vscode/debugprotocol": "^1.68.0"
|
|
36
41
|
},
|
|
37
42
|
"peerDependencies": {
|
|
@@ -40,6 +45,6 @@
|
|
|
40
45
|
"devDependencies": {
|
|
41
46
|
"@types/node": "^25.3.3",
|
|
42
47
|
"typescript": "^5.9.3",
|
|
43
|
-
"vitest": "^4.
|
|
48
|
+
"vitest": "^4.1.11"
|
|
44
49
|
}
|
|
45
50
|
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
name: Publish to npm
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches:
|
|
6
|
-
- main
|
|
7
|
-
|
|
8
|
-
jobs:
|
|
9
|
-
publish:
|
|
10
|
-
runs-on: docker
|
|
11
|
-
steps:
|
|
12
|
-
- name: Checkout
|
|
13
|
-
uses: actions/checkout@v4
|
|
14
|
-
with:
|
|
15
|
-
fetch-depth: 0
|
|
16
|
-
token: ${{ secrets.REPO_TOKEN }}
|
|
17
|
-
|
|
18
|
-
- name: Setup Node.js
|
|
19
|
-
uses: actions/setup-node@v4
|
|
20
|
-
with:
|
|
21
|
-
node-version: '20'
|
|
22
|
-
registry-url: 'https://registry.npmjs.org'
|
|
23
|
-
|
|
24
|
-
- name: Install dependencies
|
|
25
|
-
run: npm ci
|
|
26
|
-
|
|
27
|
-
- name: Run tests
|
|
28
|
-
run: npm test
|
|
29
|
-
|
|
30
|
-
- name: Run typecheck
|
|
31
|
-
run: npm run typecheck
|
|
32
|
-
|
|
33
|
-
- name: Build
|
|
34
|
-
run: npm run build
|
|
35
|
-
|
|
36
|
-
- name: Configure git
|
|
37
|
-
run: |
|
|
38
|
-
git config user.name "Forgejo Actions"
|
|
39
|
-
git config user.email "actions@forgejo.local"
|
|
40
|
-
|
|
41
|
-
- name: Bump version and publish
|
|
42
|
-
env:
|
|
43
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
44
|
-
run: |
|
|
45
|
-
# Get current version
|
|
46
|
-
CURRENT_VERSION=$(node -p "require('./package.json').version")
|
|
47
|
-
echo "Current version: $CURRENT_VERSION"
|
|
48
|
-
|
|
49
|
-
# Bump patch version
|
|
50
|
-
npm version patch --no-git-tag-version
|
|
51
|
-
NEW_VERSION=$(node -p "require('./package.json').version")
|
|
52
|
-
echo "New version: $NEW_VERSION"
|
|
53
|
-
|
|
54
|
-
# Commit version bump
|
|
55
|
-
git add package.json package-lock.json
|
|
56
|
-
git commit -m "chore: bump version to $NEW_VERSION [skip ci]"
|
|
57
|
-
git tag "v$NEW_VERSION"
|
|
58
|
-
|
|
59
|
-
# Push changes back to repository
|
|
60
|
-
git push origin main --tags
|
|
61
|
-
|
|
62
|
-
# Publish to npm
|
|
63
|
-
npm publish --access public
|