dap-mcp-server 0.1.10 → 0.1.12
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 +5 -2
- package/SKILL.md +175 -28
- package/TODO.md +32 -0
- package/build/adapters/builtin.js +27 -3
- package/build/adapters/builtin.js.map +1 -1
- package/build/dap/dap-client.d.ts +71 -4
- package/build/dap/dap-client.js +324 -53
- package/build/dap/dap-client.js.map +1 -1
- package/build/dap/types.d.ts +29 -7
- package/build/server.js +229 -34
- package/build/server.js.map +1 -1
- package/build/session/inspect.d.ts +64 -0
- package/build/session/inspect.js +116 -0
- package/build/session/inspect.js.map +1 -0
- package/build/session/run.d.ts +52 -0
- package/build/session/run.js +111 -0
- package/build/session/run.js.map +1 -0
- package/build/session/session.d.ts +8 -9
- package/build/session/session.js +67 -9
- package/build/session/session.js.map +1 -1
- package/package.json +1 -1
- package/src/adapters/builtin.ts +28 -3
- package/src/adapters/registry.test.ts +3 -2
- package/src/dap/dap-client.test.ts +31 -0
- package/src/dap/dap-client.ts +402 -52
- package/src/dap/types.ts +30 -7
- package/src/integration/debug-lifecycle.test.ts +21 -0
- package/src/server.ts +254 -34
- package/src/session/inspect.test.ts +126 -0
- package/src/session/inspect.ts +160 -0
- package/src/session/run.test.ts +74 -0
- package/src/session/run.ts +144 -0
- package/src/session/session.test.ts +42 -0
- package/src/session/session.ts +68 -21
- package/src/test-fixtures/mock-adapter.js +23 -1
- package/src/test-fixtures/no-stop-adapter.js +77 -0
- package/src/test-fixtures/tcp-mock-adapter.js +87 -0
|
@@ -0,0 +1,116 @@
|
|
|
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
|
+
import { DebugSession } from "./session.js";
|
|
23
|
+
/**
|
|
24
|
+
* Launch a program, run until it hits the given breakpoint, evaluate a set of
|
|
25
|
+
* expressions in that frame, and disconnect. Collapses a multi-call workflow
|
|
26
|
+
* into a single operation suitable for "what is X at line N?" debugging.
|
|
27
|
+
*/
|
|
28
|
+
export async function runDebugInspect(registry, sessions, opts) {
|
|
29
|
+
const config = opts.adapterConfig ?? registry.get(opts.adapter);
|
|
30
|
+
if (!config) {
|
|
31
|
+
throw new Error(`Adapter '${opts.adapter}' not found. Use list_adapters to see available adapters or configure_adapter to register one.`);
|
|
32
|
+
}
|
|
33
|
+
const id = sessions.generateId();
|
|
34
|
+
const session = new DebugSession(id, config);
|
|
35
|
+
sessions.add(session);
|
|
36
|
+
try {
|
|
37
|
+
await session.initialize();
|
|
38
|
+
const launchArgs = {
|
|
39
|
+
...config.launchDefaults,
|
|
40
|
+
program: opts.program,
|
|
41
|
+
stopOnEntry: false,
|
|
42
|
+
};
|
|
43
|
+
if (opts.args !== undefined)
|
|
44
|
+
launchArgs.args = opts.args;
|
|
45
|
+
if (opts.cwd !== undefined)
|
|
46
|
+
launchArgs.cwd = opts.cwd;
|
|
47
|
+
if (opts.env !== undefined)
|
|
48
|
+
launchArgs.env = opts.env;
|
|
49
|
+
// delve: mirror cwd → dlvCwd so `go build` finds go.mod from the right dir.
|
|
50
|
+
if (config.type === "go" && opts.cwd !== undefined && launchArgs.dlvCwd === undefined) {
|
|
51
|
+
launchArgs.dlvCwd = opts.cwd;
|
|
52
|
+
}
|
|
53
|
+
const launchPromise = session.launch(launchArgs);
|
|
54
|
+
// Suppress unhandled rejection: the real `await launchPromise` below will
|
|
55
|
+
// still throw if launch fails. Without this, an early launch rejection
|
|
56
|
+
// (e.g. adapter rejects the request) crashes the MCP server.
|
|
57
|
+
launchPromise.catch(() => { });
|
|
58
|
+
await session.waitForInitialized(10000);
|
|
59
|
+
await session.setBreakpoints(opts.at.file, [
|
|
60
|
+
{
|
|
61
|
+
line: opts.at.line,
|
|
62
|
+
condition: opts.at.condition,
|
|
63
|
+
hitCondition: opts.at.hitCondition,
|
|
64
|
+
},
|
|
65
|
+
]);
|
|
66
|
+
await session.configurationDone();
|
|
67
|
+
await launchPromise;
|
|
68
|
+
const waitMs = opts.timeout ?? 30000;
|
|
69
|
+
try {
|
|
70
|
+
await session.waitForStopped(waitMs);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
const { output } = session.getOutput();
|
|
74
|
+
return {
|
|
75
|
+
hit: false,
|
|
76
|
+
status: session.state,
|
|
77
|
+
output: output.map((e) => e.text),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const state = await session.collectState();
|
|
81
|
+
const values = {};
|
|
82
|
+
if (opts.expressions && opts.expressions.length > 0) {
|
|
83
|
+
// Some adapters (vscode-js-debug) require a frameId to evaluate names
|
|
84
|
+
// bound in the current function's scope. Use the top frame's id when
|
|
85
|
+
// available so locals resolve correctly.
|
|
86
|
+
const topFrameId = state.stackTrace?.[0]?.id;
|
|
87
|
+
for (const expr of opts.expressions) {
|
|
88
|
+
try {
|
|
89
|
+
const r = await session.evaluate(expr, topFrameId);
|
|
90
|
+
values[expr] = { result: r.result, type: r.type };
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
values[expr] = { error: err instanceof Error ? err.message : String(err) };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
hit: true,
|
|
99
|
+
reason: state.reason,
|
|
100
|
+
location: state.location,
|
|
101
|
+
values: opts.expressions && opts.expressions.length > 0 ? values : undefined,
|
|
102
|
+
output: state.output,
|
|
103
|
+
status: "stopped",
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
sessions.remove(session.id);
|
|
108
|
+
try {
|
|
109
|
+
await session.disconnect();
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
/* best-effort cleanup */
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=inspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/session/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
import { AdapterRegistry } from "../adapters/registry.js";
|
|
23
|
+
import { SessionManager } from "./session-manager.js";
|
|
24
|
+
import { AdapterConfig } from "../dap/types.js";
|
|
25
|
+
export interface RunOptions {
|
|
26
|
+
adapter: string;
|
|
27
|
+
program: string;
|
|
28
|
+
args?: string[];
|
|
29
|
+
cwd?: string;
|
|
30
|
+
env?: Record<string, string>;
|
|
31
|
+
/** Optional logpoints — break with logMessage emits formatted output without pausing. */
|
|
32
|
+
logpoints?: Array<{
|
|
33
|
+
file: string;
|
|
34
|
+
line: number;
|
|
35
|
+
logMessage: string;
|
|
36
|
+
}>;
|
|
37
|
+
/** Total wall-clock timeout for the whole run (default: 60_000ms). */
|
|
38
|
+
timeout?: number;
|
|
39
|
+
adapterConfig?: AdapterConfig;
|
|
40
|
+
}
|
|
41
|
+
export interface RunResult {
|
|
42
|
+
terminated: boolean;
|
|
43
|
+
output: string[];
|
|
44
|
+
status: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Launch a program with no stops, let it run to completion, and return the
|
|
48
|
+
* collected output. Use for "what does this script actually do / print / crash with?"
|
|
49
|
+
* cases where you don't need to inspect intermediate state. Pair with logpoints
|
|
50
|
+
* for printf-style debugging.
|
|
51
|
+
*/
|
|
52
|
+
export declare function runDebugRun(registry: AdapterRegistry, sessions: SessionManager, opts: RunOptions): Promise<RunResult>;
|
|
@@ -0,0 +1,111 @@
|
|
|
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
|
+
import { DebugSession } from "./session.js";
|
|
23
|
+
/**
|
|
24
|
+
* Launch a program with no stops, let it run to completion, and return the
|
|
25
|
+
* collected output. Use for "what does this script actually do / print / crash with?"
|
|
26
|
+
* cases where you don't need to inspect intermediate state. Pair with logpoints
|
|
27
|
+
* for printf-style debugging.
|
|
28
|
+
*/
|
|
29
|
+
export async function runDebugRun(registry, sessions, opts) {
|
|
30
|
+
const config = opts.adapterConfig ?? registry.get(opts.adapter);
|
|
31
|
+
if (!config) {
|
|
32
|
+
throw new Error(`Adapter '${opts.adapter}' not found. Use list_adapters to see available adapters or configure_adapter to register one.`);
|
|
33
|
+
}
|
|
34
|
+
const id = sessions.generateId();
|
|
35
|
+
const session = new DebugSession(id, config);
|
|
36
|
+
sessions.add(session);
|
|
37
|
+
const totalTimeout = opts.timeout ?? 60_000;
|
|
38
|
+
const deadline = Date.now() + totalTimeout;
|
|
39
|
+
try {
|
|
40
|
+
await session.initialize();
|
|
41
|
+
const launchArgs = {
|
|
42
|
+
...config.launchDefaults,
|
|
43
|
+
program: opts.program,
|
|
44
|
+
stopOnEntry: false,
|
|
45
|
+
};
|
|
46
|
+
if (opts.args !== undefined)
|
|
47
|
+
launchArgs.args = opts.args;
|
|
48
|
+
if (opts.cwd !== undefined)
|
|
49
|
+
launchArgs.cwd = opts.cwd;
|
|
50
|
+
if (opts.env !== undefined)
|
|
51
|
+
launchArgs.env = opts.env;
|
|
52
|
+
// delve: mirror cwd → dlvCwd so `go build` finds go.mod from the right dir.
|
|
53
|
+
if (config.type === "go" && opts.cwd !== undefined && launchArgs.dlvCwd === undefined) {
|
|
54
|
+
launchArgs.dlvCwd = opts.cwd;
|
|
55
|
+
}
|
|
56
|
+
const launchPromise = session.launch(launchArgs);
|
|
57
|
+
// Suppress unhandled rejection: the real `await launchPromise` below will
|
|
58
|
+
// still throw if launch fails.
|
|
59
|
+
launchPromise.catch(() => { });
|
|
60
|
+
await session.waitForInitialized(10000);
|
|
61
|
+
if (opts.logpoints && opts.logpoints.length > 0) {
|
|
62
|
+
const byFile = new Map();
|
|
63
|
+
for (const lp of opts.logpoints) {
|
|
64
|
+
const existing = byFile.get(lp.file) ?? [];
|
|
65
|
+
existing.push({ line: lp.line, logMessage: lp.logMessage });
|
|
66
|
+
byFile.set(lp.file, existing);
|
|
67
|
+
}
|
|
68
|
+
for (const [file, bps] of byFile) {
|
|
69
|
+
await session.setBreakpoints(file, bps);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
await session.configurationDone();
|
|
73
|
+
await launchPromise;
|
|
74
|
+
// Loop: if the program stops unexpectedly (e.g. exception, surprise breakpoint),
|
|
75
|
+
// continue. Exit when the program terminates or the deadline passes.
|
|
76
|
+
while (session.state !== "terminated") {
|
|
77
|
+
const remaining = deadline - Date.now();
|
|
78
|
+
if (remaining <= 0)
|
|
79
|
+
break;
|
|
80
|
+
if (session.state === "stopped") {
|
|
81
|
+
await session.continueExecution();
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
await Promise.race([
|
|
85
|
+
session.waitForTerminated(remaining),
|
|
86
|
+
session.waitForStopped(remaining),
|
|
87
|
+
]);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Both rejected (timeout). Bail.
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const { output } = session.getOutput();
|
|
95
|
+
return {
|
|
96
|
+
terminated: session.state === "terminated",
|
|
97
|
+
output: output.map((e) => e.text),
|
|
98
|
+
status: session.state,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
sessions.remove(session.id);
|
|
103
|
+
try {
|
|
104
|
+
await session.disconnect();
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
/* best-effort cleanup */
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/session/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
20
|
* SOFTWARE.
|
|
21
21
|
*/
|
|
22
|
-
import { SessionState, StoppedState, AdapterConfig, OutputEntry, BreakpointConfig, BreakpointResult } from "../dap/types.js";
|
|
22
|
+
import { SessionState, StoppedState, AdapterConfig, OutputEntry, BreakpointConfig, BreakpointResult, Variable } from "../dap/types.js";
|
|
23
23
|
import { DebugProtocol } from "@vscode/debugprotocol";
|
|
24
24
|
export declare class DebugSession {
|
|
25
25
|
readonly id: string;
|
|
@@ -27,6 +27,7 @@ export declare class DebugSession {
|
|
|
27
27
|
private adapterConfig;
|
|
28
28
|
private _state;
|
|
29
29
|
private outputBuffer;
|
|
30
|
+
private nextOutputSeq;
|
|
30
31
|
private breakpointsMap;
|
|
31
32
|
private capabilities;
|
|
32
33
|
private stoppedThreadId?;
|
|
@@ -36,8 +37,10 @@ export declare class DebugSession {
|
|
|
36
37
|
private launchMode;
|
|
37
38
|
private stoppedResolvers;
|
|
38
39
|
private initializedResolvers;
|
|
40
|
+
private terminatedResolvers;
|
|
39
41
|
private _initializedReceived;
|
|
40
42
|
constructor(id: string, config: AdapterConfig);
|
|
43
|
+
private resolveTerminatedWaiters;
|
|
41
44
|
get state(): SessionState;
|
|
42
45
|
initialize(): Promise<DebugProtocol.Capabilities>;
|
|
43
46
|
waitForInitialized(timeout?: number): Promise<void>;
|
|
@@ -51,17 +54,12 @@ export declare class DebugSession {
|
|
|
51
54
|
stepIn(threadId?: number): Promise<void>;
|
|
52
55
|
stepOut(threadId?: number): Promise<void>;
|
|
53
56
|
pause(threadId?: number): Promise<void>;
|
|
57
|
+
waitForTerminated(timeout?: number): Promise<void>;
|
|
54
58
|
waitForStopped(timeout?: number): Promise<DebugProtocol.StoppedEvent>;
|
|
55
59
|
getThreads(): Promise<DebugProtocol.Thread[]>;
|
|
56
60
|
getStackTrace(threadId: number, depth?: number): Promise<DebugProtocol.StackFrame[]>;
|
|
57
61
|
getScopes(frameId: number): Promise<DebugProtocol.Scope[]>;
|
|
58
|
-
getVariables(variablesReference: number, depth?: number): Promise<
|
|
59
|
-
name: string;
|
|
60
|
-
value: string;
|
|
61
|
-
type?: string;
|
|
62
|
-
hasChildren: boolean;
|
|
63
|
-
variablesReference: number;
|
|
64
|
-
}>>;
|
|
62
|
+
getVariables(variablesReference: number, depth?: number): Promise<Variable[]>;
|
|
65
63
|
evaluate(expression: string, frameId?: number, context?: "repl" | "watch" | "hover"): Promise<{
|
|
66
64
|
result: string;
|
|
67
65
|
type?: string;
|
|
@@ -70,9 +68,10 @@ export declare class DebugSession {
|
|
|
70
68
|
}>;
|
|
71
69
|
collectState(threadId?: number, depth?: number, variableDepth?: number): Promise<StoppedState>;
|
|
72
70
|
addOutput(category: string, text: string): void;
|
|
73
|
-
getOutput(category?: string, clear?: boolean): {
|
|
71
|
+
getOutput(category?: string, clear?: boolean, since?: number): {
|
|
74
72
|
output: OutputEntry[];
|
|
75
73
|
truncated: boolean;
|
|
74
|
+
nextSince: number;
|
|
76
75
|
};
|
|
77
76
|
disconnect(terminateDebuggee?: boolean): Promise<void>;
|
|
78
77
|
getLaunchConfig(): Record<string, unknown> | undefined;
|
package/build/session/session.js
CHANGED
|
@@ -30,6 +30,7 @@ export class DebugSession {
|
|
|
30
30
|
adapterConfig;
|
|
31
31
|
_state = "idle";
|
|
32
32
|
outputBuffer = new RingBuffer(MAX_OUTPUT_LINES);
|
|
33
|
+
nextOutputSeq = 1;
|
|
33
34
|
breakpointsMap = new Map();
|
|
34
35
|
capabilities = {};
|
|
35
36
|
stoppedThreadId;
|
|
@@ -39,6 +40,7 @@ export class DebugSession {
|
|
|
39
40
|
launchMode = "launch";
|
|
40
41
|
stoppedResolvers = [];
|
|
41
42
|
initializedResolvers = [];
|
|
43
|
+
terminatedResolvers = [];
|
|
42
44
|
_initializedReceived = false;
|
|
43
45
|
constructor(id, config) {
|
|
44
46
|
this.id = id;
|
|
@@ -46,7 +48,10 @@ export class DebugSession {
|
|
|
46
48
|
const runtime = config.runtime || "";
|
|
47
49
|
const program = config.program;
|
|
48
50
|
const args = config.args || [];
|
|
49
|
-
this.client = new DAPClient(runtime, program, args
|
|
51
|
+
this.client = new DAPClient(runtime, program, args, {
|
|
52
|
+
transport: config.transport,
|
|
53
|
+
portMatcher: config.portMatcher,
|
|
54
|
+
});
|
|
50
55
|
this.client.on("event", (event) => {
|
|
51
56
|
this.handleEvent(event);
|
|
52
57
|
});
|
|
@@ -54,8 +59,15 @@ export class DebugSession {
|
|
|
54
59
|
if (this._state !== "terminated") {
|
|
55
60
|
this._state = "terminated";
|
|
56
61
|
}
|
|
62
|
+
this.resolveTerminatedWaiters();
|
|
57
63
|
});
|
|
58
64
|
}
|
|
65
|
+
resolveTerminatedWaiters() {
|
|
66
|
+
const resolvers = this.terminatedResolvers;
|
|
67
|
+
this.terminatedResolvers = [];
|
|
68
|
+
for (const r of resolvers)
|
|
69
|
+
r();
|
|
70
|
+
}
|
|
59
71
|
get state() {
|
|
60
72
|
return this._state;
|
|
61
73
|
}
|
|
@@ -78,7 +90,12 @@ export class DebugSession {
|
|
|
78
90
|
});
|
|
79
91
|
this.capabilities = response.body || {};
|
|
80
92
|
this._state = "configuring";
|
|
81
|
-
|
|
93
|
+
// Note: per DAP spec, the "initialized" event signals the adapter is
|
|
94
|
+
// ready for configuration (setBreakpoints, etc.). Different adapters
|
|
95
|
+
// emit it at different times: delve emits it immediately after the
|
|
96
|
+
// initialize response, but debugpy only emits it after `launch` is
|
|
97
|
+
// received. The orchestrator (server.ts) is responsible for waiting
|
|
98
|
+
// for it AFTER firing the launch/attach request — see waitForInitialized.
|
|
82
99
|
return this.capabilities;
|
|
83
100
|
}
|
|
84
101
|
catch (err) {
|
|
@@ -172,6 +189,33 @@ export class DebugSession {
|
|
|
172
189
|
const tid = threadId ?? this.stoppedThreadId ?? 1;
|
|
173
190
|
await this.client.sendRequest("pause", { threadId: tid });
|
|
174
191
|
}
|
|
192
|
+
async waitForTerminated(timeout = DEFAULT_TIMEOUT) {
|
|
193
|
+
if (this._state === "terminated")
|
|
194
|
+
return;
|
|
195
|
+
return new Promise((resolve, reject) => {
|
|
196
|
+
let settled = false;
|
|
197
|
+
const wrapped = () => {
|
|
198
|
+
if (settled)
|
|
199
|
+
return;
|
|
200
|
+
settled = true;
|
|
201
|
+
clearTimeout(timer);
|
|
202
|
+
const idx = this.terminatedResolvers.indexOf(wrapped);
|
|
203
|
+
if (idx !== -1)
|
|
204
|
+
this.terminatedResolvers.splice(idx, 1);
|
|
205
|
+
resolve();
|
|
206
|
+
};
|
|
207
|
+
const timer = setTimeout(() => {
|
|
208
|
+
if (settled)
|
|
209
|
+
return;
|
|
210
|
+
settled = true;
|
|
211
|
+
const idx = this.terminatedResolvers.indexOf(wrapped);
|
|
212
|
+
if (idx !== -1)
|
|
213
|
+
this.terminatedResolvers.splice(idx, 1);
|
|
214
|
+
reject(new Error("timeout"));
|
|
215
|
+
}, timeout);
|
|
216
|
+
this.terminatedResolvers.push(wrapped);
|
|
217
|
+
});
|
|
218
|
+
}
|
|
175
219
|
async waitForStopped(timeout = DEFAULT_TIMEOUT) {
|
|
176
220
|
if (this._state === "stopped") {
|
|
177
221
|
return {
|
|
@@ -233,8 +277,7 @@ export class DebugSession {
|
|
|
233
277
|
if (depth > 1) {
|
|
234
278
|
for (const v of vars) {
|
|
235
279
|
if (v.hasChildren) {
|
|
236
|
-
|
|
237
|
-
v.value = `${v.value} { ${children.map((c) => `${c.name}: ${c.value}`).join(", ")} }`;
|
|
280
|
+
v.children = await this.getVariables(v.variablesReference, depth - 1);
|
|
238
281
|
}
|
|
239
282
|
}
|
|
240
283
|
}
|
|
@@ -291,11 +334,23 @@ export class DebugSession {
|
|
|
291
334
|
};
|
|
292
335
|
}
|
|
293
336
|
addOutput(category, text) {
|
|
294
|
-
this.outputBuffer.push({
|
|
337
|
+
this.outputBuffer.push({
|
|
338
|
+
seq: this.nextOutputSeq++,
|
|
339
|
+
category,
|
|
340
|
+
text,
|
|
341
|
+
timestamp: new Date().toISOString(),
|
|
342
|
+
});
|
|
295
343
|
}
|
|
296
|
-
getOutput(category, clear = false) {
|
|
297
|
-
const
|
|
298
|
-
|
|
344
|
+
getOutput(category, clear = false, since) {
|
|
345
|
+
const matches = (e) => {
|
|
346
|
+
if (category && e.category !== category)
|
|
347
|
+
return false;
|
|
348
|
+
if (since !== undefined && e.seq <= since)
|
|
349
|
+
return false;
|
|
350
|
+
return true;
|
|
351
|
+
};
|
|
352
|
+
const entries = category !== undefined || since !== undefined
|
|
353
|
+
? this.outputBuffer.getFiltered(matches)
|
|
299
354
|
: this.outputBuffer.getAll();
|
|
300
355
|
const truncated = this.outputBuffer.truncated;
|
|
301
356
|
if (clear) {
|
|
@@ -306,7 +361,9 @@ export class DebugSession {
|
|
|
306
361
|
this.outputBuffer.clear();
|
|
307
362
|
}
|
|
308
363
|
}
|
|
309
|
-
|
|
364
|
+
const lastInResult = entries.length > 0 ? entries[entries.length - 1].seq : undefined;
|
|
365
|
+
const nextSince = lastInResult ?? since ?? this.nextOutputSeq - 1;
|
|
366
|
+
return { output: entries, truncated, nextSince };
|
|
310
367
|
}
|
|
311
368
|
async disconnect(terminateDebuggee) {
|
|
312
369
|
const terminate = terminateDebuggee ?? this.launchMode === "launch";
|
|
@@ -366,6 +423,7 @@ export class DebugSession {
|
|
|
366
423
|
case "terminated":
|
|
367
424
|
case "exited":
|
|
368
425
|
this._state = "terminated";
|
|
426
|
+
this.resolveTerminatedWaiters();
|
|
369
427
|
break;
|
|
370
428
|
}
|
|
371
429
|
}
|
|
@@ -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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"}
|
package/package.json
CHANGED
package/src/adapters/builtin.ts
CHANGED
|
@@ -33,14 +33,39 @@ export const BUILTIN_ADAPTERS: AdapterConfig[] = [
|
|
|
33
33
|
},
|
|
34
34
|
installHint: "pip install debugpy",
|
|
35
35
|
},
|
|
36
|
-
// node adapter removed — no reliable universal path to js-debug-dap.
|
|
37
|
-
// Configure via configure_adapter if needed.
|
|
38
36
|
{
|
|
39
37
|
type: "go",
|
|
40
38
|
program: "dlv",
|
|
41
|
-
args: ["dap"],
|
|
39
|
+
args: ["dap", "--listen=127.0.0.1:0"],
|
|
40
|
+
transport: "tcp",
|
|
41
|
+
// Matches: "DAP server listening at: 127.0.0.1:38251"
|
|
42
|
+
portMatcher: "DAP server listening at:\\s*\\S+:(\\d+)",
|
|
42
43
|
installHint: "go install github.com/go-delve/delve/cmd/dlv@latest",
|
|
43
44
|
},
|
|
45
|
+
// node adapter: vscode-js-debug's dapDebugServer.js. The user must install
|
|
46
|
+
// it (no universal path); the registry's availability check will mark this
|
|
47
|
+
// unavailable when the program is missing.
|
|
48
|
+
{
|
|
49
|
+
type: "node",
|
|
50
|
+
runtime: "node",
|
|
51
|
+
program: "dapDebugServer.js",
|
|
52
|
+
// Bind to IPv4 explicitly; the default is IPv6 ('::1') which our client
|
|
53
|
+
// (which connects to 127.0.0.1) can't reach on systems without v4↔v6
|
|
54
|
+
// bridging.
|
|
55
|
+
args: ["0", "127.0.0.1"],
|
|
56
|
+
transport: "tcp",
|
|
57
|
+
// Matches: "Debug server listening at 127.0.0.1:38251" (vscode-js-debug)
|
|
58
|
+
portMatcher: "[Ll]istening at\\s*\\S*?:(\\d+)",
|
|
59
|
+
// vscode-js-debug requires these in the launch request; pwa-node is the
|
|
60
|
+
// "production worker agent" Node launcher.
|
|
61
|
+
launchDefaults: {
|
|
62
|
+
type: "pwa-node",
|
|
63
|
+
request: "launch",
|
|
64
|
+
},
|
|
65
|
+
installHint:
|
|
66
|
+
"Install vscode-js-debug DAP server and set the adapter's `program` to its dapDebugServer.js path " +
|
|
67
|
+
"(e.g. via `configure_adapter`). See https://github.com/microsoft/vscode-js-debug.",
|
|
68
|
+
},
|
|
44
69
|
{
|
|
45
70
|
type: "cppdbg",
|
|
46
71
|
program: "lldb-dap",
|
|
@@ -43,8 +43,9 @@ describe("AdapterRegistry", () => {
|
|
|
43
43
|
const adapters = registry.listAll();
|
|
44
44
|
expect(adapters.some((a) => a.type === "python")).toBe(true);
|
|
45
45
|
expect(adapters.some((a) => a.type === "go")).toBe(true);
|
|
46
|
-
// node adapter
|
|
47
|
-
|
|
46
|
+
// node adapter now points at vscode-js-debug's dapDebugServer.js via TCP.
|
|
47
|
+
// The user must install/configure it; the registry just publishes the entry.
|
|
48
|
+
expect(adapters.some((a) => a.type === "node")).toBe(true);
|
|
48
49
|
});
|
|
49
50
|
|
|
50
51
|
it("registers a custom adapter", () => {
|