claude-ide-bridge 2.25.24 → 2.25.26
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/tools/bridgeStatus.d.ts +17 -1
- package/dist/tools/bridgeStatus.js +97 -1
- package/dist/tools/bridgeStatus.js.map +1 -1
- package/dist/tools/formatAndSave.d.ts +80 -0
- package/dist/tools/formatAndSave.js +72 -0
- package/dist/tools/formatAndSave.js.map +1 -0
- package/dist/tools/index.js +25 -5
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/jumpToFirstError.d.ts +70 -0
- package/dist/tools/jumpToFirstError.js +126 -0
- package/dist/tools/jumpToFirstError.js.map +1 -0
- package/dist/tools/navigateToSymbolByName.d.ts +76 -0
- package/dist/tools/navigateToSymbolByName.js +92 -0
- package/dist/tools/navigateToSymbolByName.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { AutomationHooks } from "../automation.js";
|
|
2
2
|
import { ClaudeOrchestrator } from "../claudeOrchestrator.js";
|
|
3
3
|
import type { ExtensionClient } from "../extensionClient.js";
|
|
4
|
+
import type { ProbeResults } from "../probe.js";
|
|
4
5
|
export interface DisconnectInfo {
|
|
5
6
|
at: string | null;
|
|
6
7
|
code: number | null;
|
|
7
8
|
reason: string | null;
|
|
8
9
|
}
|
|
9
|
-
export declare function createBridgeStatusTool(extensionClient: ExtensionClient, sessions?: Map<string, unknown>, orchestrator?: ClaudeOrchestrator | null, automationHooks?: AutomationHooks | null, getDisconnectInfo?: () => DisconnectInfo): {
|
|
10
|
+
export declare function createBridgeStatusTool(extensionClient: ExtensionClient, probes: ProbeResults, sessions?: Map<string, unknown>, orchestrator?: ClaudeOrchestrator | null, automationHooks?: AutomationHooks | null, getDisconnectInfo?: () => DisconnectInfo): {
|
|
10
11
|
schema: {
|
|
11
12
|
name: string;
|
|
12
13
|
description: string;
|
|
@@ -83,6 +84,21 @@ export declare function createBridgeStatusTool(extensionClient: ExtensionClient,
|
|
|
83
84
|
};
|
|
84
85
|
required: string[];
|
|
85
86
|
};
|
|
87
|
+
toolAvailability: {
|
|
88
|
+
type: string;
|
|
89
|
+
additionalProperties: {
|
|
90
|
+
type: string;
|
|
91
|
+
properties: {
|
|
92
|
+
available: {
|
|
93
|
+
type: string;
|
|
94
|
+
};
|
|
95
|
+
reason: {
|
|
96
|
+
type: string;
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
required: string[];
|
|
100
|
+
};
|
|
101
|
+
};
|
|
86
102
|
};
|
|
87
103
|
required: string[];
|
|
88
104
|
};
|
|
@@ -1,7 +1,48 @@
|
|
|
1
1
|
import { ClaudeOrchestrator } from "../claudeOrchestrator.js";
|
|
2
2
|
import { successStructured } from "./utils.js";
|
|
3
3
|
const startTime = Date.now();
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Table of known tools with their availability requirements. Populated manually
|
|
6
|
+
* from src/tools/index.ts registration — a drift-guard test that walks the
|
|
7
|
+
* registry is a follow-up. Tools NOT in this table are assumed always available
|
|
8
|
+
* (pure-bridge tools like gitCommit that don't depend on probes or the extension).
|
|
9
|
+
*
|
|
10
|
+
* Used by the toolAvailability field in getBridgeStatus to answer
|
|
11
|
+
* "why can't Claude call X?" in a single call.
|
|
12
|
+
*
|
|
13
|
+
* Spec flags:
|
|
14
|
+
* - `extensionRequired: true` — tool has no fallback. Unavailable when the
|
|
15
|
+
* extension is disconnected or the circuit breaker is open.
|
|
16
|
+
* - `probe: <name>` — tool requires this CLI probe.
|
|
17
|
+
* - `extensionFallback: true` — tool prefers the extension path but can fall
|
|
18
|
+
* back to the CLI probe. Available when EITHER the extension is connected
|
|
19
|
+
* OR the probe is present. `formatDocument` is the canonical example: the
|
|
20
|
+
* VS Code extension formats via its built-in TypeScript formatter; the CLI
|
|
21
|
+
* path requires prettier/biome/etc.
|
|
22
|
+
*/
|
|
23
|
+
const TOOL_AVAILABILITY_TABLE = {
|
|
24
|
+
// Extension-required tools (schema.extensionRequired: true)
|
|
25
|
+
findImplementations: { extensionRequired: true },
|
|
26
|
+
getHoverAtCursor: { extensionRequired: true },
|
|
27
|
+
getTypeHierarchy: { extensionRequired: true },
|
|
28
|
+
getWorkspaceSettings: { extensionRequired: true },
|
|
29
|
+
setWorkspaceSetting: { extensionRequired: true },
|
|
30
|
+
setEditorDecorations: { extensionRequired: true },
|
|
31
|
+
clearEditorDecorations: { extensionRequired: true },
|
|
32
|
+
getSemanticTokens: { extensionRequired: true },
|
|
33
|
+
getCodeLens: { extensionRequired: true },
|
|
34
|
+
// Tools that prefer the extension path but can fall back to a CLI probe.
|
|
35
|
+
formatDocument: { probe: "prettier", extensionFallback: true },
|
|
36
|
+
// Pure-probe tools (no extension path)
|
|
37
|
+
runTests: { probe: "vitest" },
|
|
38
|
+
getGitStatus: { probe: "git" },
|
|
39
|
+
getGitDiff: { probe: "git" },
|
|
40
|
+
getGitLog: { probe: "git" },
|
|
41
|
+
githubListPRs: { probe: "gh" },
|
|
42
|
+
githubCreatePR: { probe: "gh" },
|
|
43
|
+
githubViewPR: { probe: "gh" },
|
|
44
|
+
};
|
|
45
|
+
export function createBridgeStatusTool(extensionClient, probes, sessions, orchestrator, automationHooks, getDisconnectInfo) {
|
|
5
46
|
return {
|
|
6
47
|
schema: {
|
|
7
48
|
name: "getBridgeStatus",
|
|
@@ -45,6 +86,17 @@ export function createBridgeStatusTool(extensionClient, sessions, orchestrator,
|
|
|
45
86
|
},
|
|
46
87
|
required: ["at", "code", "reason"],
|
|
47
88
|
},
|
|
89
|
+
toolAvailability: {
|
|
90
|
+
type: "object",
|
|
91
|
+
additionalProperties: {
|
|
92
|
+
type: "object",
|
|
93
|
+
properties: {
|
|
94
|
+
available: { type: "boolean" },
|
|
95
|
+
reason: { type: "string" },
|
|
96
|
+
},
|
|
97
|
+
required: ["available"],
|
|
98
|
+
},
|
|
99
|
+
},
|
|
48
100
|
},
|
|
49
101
|
required: [
|
|
50
102
|
"extensionConnected",
|
|
@@ -83,6 +135,49 @@ export function createBridgeStatusTool(extensionClient, sessions, orchestrator,
|
|
|
83
135
|
baseSuggestedActions.push(`Automation hooks enabled but not wired in settings.json: ${unwired.join(", ")}. ` +
|
|
84
136
|
`Add CC hook entries calling the bridge notify tools (see CLAUDE.md Automation Policy section).`);
|
|
85
137
|
}
|
|
138
|
+
// Compute tool availability: answers "why can't Claude call X?" without
|
|
139
|
+
// requiring the caller to try the tool first and parse the error.
|
|
140
|
+
const toolAvailability = {};
|
|
141
|
+
for (const [name, spec] of Object.entries(TOOL_AVAILABILITY_TABLE)) {
|
|
142
|
+
if (spec.extensionRequired && !extensionConnected) {
|
|
143
|
+
toolAvailability[name] = {
|
|
144
|
+
available: false,
|
|
145
|
+
reason: "extension_disconnected",
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
else if (spec.extensionRequired && circuitBreaker.suspended) {
|
|
149
|
+
toolAvailability[name] = {
|
|
150
|
+
available: false,
|
|
151
|
+
reason: "circuit_breaker_open",
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
else if (spec.extensionFallback) {
|
|
155
|
+
// Available if extension is connected (extension path) OR probe is present (CLI fallback).
|
|
156
|
+
if (extensionConnected && !circuitBreaker.suspended) {
|
|
157
|
+
toolAvailability[name] = { available: true };
|
|
158
|
+
}
|
|
159
|
+
else if (spec.probe && probes[spec.probe]) {
|
|
160
|
+
toolAvailability[name] = { available: true };
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
toolAvailability[name] = {
|
|
164
|
+
available: false,
|
|
165
|
+
reason: spec.probe
|
|
166
|
+
? `extension_disconnected_and_missing_probe:${spec.probe}`
|
|
167
|
+
: "extension_disconnected",
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else if (spec.probe && !probes[spec.probe]) {
|
|
172
|
+
toolAvailability[name] = {
|
|
173
|
+
available: false,
|
|
174
|
+
reason: `missing_probe:${spec.probe}`,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
toolAvailability[name] = { available: true };
|
|
179
|
+
}
|
|
180
|
+
}
|
|
86
181
|
return successStructured({
|
|
87
182
|
extensionConnected,
|
|
88
183
|
activeSessions: sessions?.size ?? 1,
|
|
@@ -117,6 +212,7 @@ export function createBridgeStatusTool(extensionClient, sessions, orchestrator,
|
|
|
117
212
|
...(getDisconnectInfo && {
|
|
118
213
|
lastDisconnect: getDisconnectInfo(),
|
|
119
214
|
}),
|
|
215
|
+
toolAvailability,
|
|
120
216
|
});
|
|
121
217
|
},
|
|
122
218
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridgeStatus.js","sourceRoot":"","sources":["../../src/tools/bridgeStatus.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"bridgeStatus.js","sourceRoot":"","sources":["../../src/tools/bridgeStatus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* formatAndSave — composite tool that runs formatDocument and saveDocument
|
|
3
|
+
* in one call. Eliminates the race window between formatting a buffer and
|
|
4
|
+
* persisting it, and cuts the common "format then save" workflow from two
|
|
5
|
+
* tool calls to one.
|
|
6
|
+
*
|
|
7
|
+
* Implementation notes (from v2.25.25 session plan):
|
|
8
|
+
* - formatDocument returns `error({...})` on many failure paths
|
|
9
|
+
* (file-not-found, unsupported extension, non-zero exit). Guard against
|
|
10
|
+
* result.isError BEFORE reading structuredContent, otherwise we crash.
|
|
11
|
+
* - saveDocument may also error. Propagate in the same way.
|
|
12
|
+
* - Both tools take { filePath } as their first arg in identical shape.
|
|
13
|
+
* - This is a composite factory: it takes the already-constructed
|
|
14
|
+
* formatDocument + saveDocument tool instances so their handlers (and
|
|
15
|
+
* therefore their fallback logic) are reused as-is, not duplicated.
|
|
16
|
+
*/
|
|
17
|
+
import type { ProgressFn } from "../transport.js";
|
|
18
|
+
import type { createFormatDocumentTool } from "./formatDocument.js";
|
|
19
|
+
import type { createSaveDocumentTool } from "./saveDocument.js";
|
|
20
|
+
type FormatDocumentTool = ReturnType<typeof createFormatDocumentTool>;
|
|
21
|
+
type SaveDocumentTool = ReturnType<typeof createSaveDocumentTool>;
|
|
22
|
+
export declare function createFormatAndSaveTool(deps: {
|
|
23
|
+
formatDocument: FormatDocumentTool;
|
|
24
|
+
saveDocument: SaveDocumentTool;
|
|
25
|
+
}): {
|
|
26
|
+
schema: {
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
annotations: {
|
|
30
|
+
destructiveHint: boolean;
|
|
31
|
+
idempotentHint: boolean;
|
|
32
|
+
};
|
|
33
|
+
inputSchema: {
|
|
34
|
+
$schema: string;
|
|
35
|
+
type: "object";
|
|
36
|
+
additionalProperties: false;
|
|
37
|
+
required: string[];
|
|
38
|
+
properties: {
|
|
39
|
+
filePath: {
|
|
40
|
+
type: "string";
|
|
41
|
+
description: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
outputSchema: {
|
|
46
|
+
type: "object";
|
|
47
|
+
properties: {
|
|
48
|
+
formatted: {
|
|
49
|
+
type: string;
|
|
50
|
+
};
|
|
51
|
+
changes: {
|
|
52
|
+
type: string;
|
|
53
|
+
};
|
|
54
|
+
saved: {
|
|
55
|
+
type: string;
|
|
56
|
+
};
|
|
57
|
+
source: {
|
|
58
|
+
type: string;
|
|
59
|
+
};
|
|
60
|
+
message: {
|
|
61
|
+
type: string;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
handler(args: Record<string, unknown>, signal?: AbortSignal, progress?: ProgressFn): Promise<{
|
|
67
|
+
content: Array<{
|
|
68
|
+
type: string;
|
|
69
|
+
text: string;
|
|
70
|
+
}>;
|
|
71
|
+
structuredContent: unknown;
|
|
72
|
+
} | {
|
|
73
|
+
content: Array<{
|
|
74
|
+
type: string;
|
|
75
|
+
text: string;
|
|
76
|
+
}>;
|
|
77
|
+
isError: true;
|
|
78
|
+
}>;
|
|
79
|
+
};
|
|
80
|
+
export {};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { error, requireString, successStructured } from "./utils.js";
|
|
2
|
+
export function createFormatAndSaveTool(deps) {
|
|
3
|
+
return {
|
|
4
|
+
schema: {
|
|
5
|
+
name: "formatAndSave",
|
|
6
|
+
description: "Format a file and save it in one call. Runs formatDocument, then saveDocument. " +
|
|
7
|
+
"Eliminates the race window where the on-disk copy lags the formatted buffer. " +
|
|
8
|
+
"Formatter errors are propagated unchanged; save is not attempted on format failure.",
|
|
9
|
+
annotations: { destructiveHint: true, idempotentHint: true },
|
|
10
|
+
inputSchema: {
|
|
11
|
+
$schema: "http://json-schema.org/draft-07/schema#",
|
|
12
|
+
type: "object",
|
|
13
|
+
additionalProperties: false,
|
|
14
|
+
required: ["filePath"],
|
|
15
|
+
properties: {
|
|
16
|
+
filePath: {
|
|
17
|
+
type: "string",
|
|
18
|
+
description: "Path to the file (absolute or workspace-relative)",
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
outputSchema: {
|
|
23
|
+
type: "object",
|
|
24
|
+
properties: {
|
|
25
|
+
formatted: { type: "boolean" },
|
|
26
|
+
changes: { type: "string" },
|
|
27
|
+
saved: { type: "boolean" },
|
|
28
|
+
source: { type: "string" },
|
|
29
|
+
message: { type: "string" },
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
async handler(args, signal, progress) {
|
|
34
|
+
const filePath = requireString(args, "filePath");
|
|
35
|
+
// Step 1: format — reuse the existing tool's handler so all of its
|
|
36
|
+
// extension/CLI fallback logic is preserved.
|
|
37
|
+
const fmt = await deps.formatDocument.handler({ filePath }, signal, progress);
|
|
38
|
+
if ("isError" in fmt && fmt.isError)
|
|
39
|
+
return fmt;
|
|
40
|
+
const fmtData = fmt
|
|
41
|
+
.structuredContent;
|
|
42
|
+
if (!fmtData || typeof fmtData !== "object") {
|
|
43
|
+
return error("formatDocument returned unexpected shape (no structuredContent)");
|
|
44
|
+
}
|
|
45
|
+
// Step 2: save — reuse the existing tool's handler.
|
|
46
|
+
const save = await deps.saveDocument.handler({ filePath });
|
|
47
|
+
if ("isError" in save && save.isError)
|
|
48
|
+
return save;
|
|
49
|
+
const saveData = save
|
|
50
|
+
.structuredContent;
|
|
51
|
+
if (!saveData || typeof saveData !== "object") {
|
|
52
|
+
return error("saveDocument returned unexpected shape (no structuredContent)");
|
|
53
|
+
}
|
|
54
|
+
return successStructured({
|
|
55
|
+
formatted: fmtData.formatted ?? false,
|
|
56
|
+
changes: fmtData.changes ?? "unknown",
|
|
57
|
+
saved: saveData.saved ?? false,
|
|
58
|
+
source: saveData.source ?? fmtData.source ?? "unknown",
|
|
59
|
+
...(typeof fmtData.linesBeforeCount === "number" && {
|
|
60
|
+
linesBeforeCount: fmtData.linesBeforeCount,
|
|
61
|
+
}),
|
|
62
|
+
...(typeof fmtData.linesAfterCount === "number" && {
|
|
63
|
+
linesAfterCount: fmtData.linesAfterCount,
|
|
64
|
+
}),
|
|
65
|
+
...(typeof saveData.message === "string" && {
|
|
66
|
+
message: saveData.message,
|
|
67
|
+
}),
|
|
68
|
+
});
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=formatAndSave.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatAndSave.js","sourceRoot":"","sources":["../../src/tools/formatAndSave.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.js
CHANGED
|
@@ -21,6 +21,7 @@ import { createUnwatchFilesTool, createWatchFilesTool } from "./fileWatcher.js";
|
|
|
21
21
|
import { createFindFilesTool } from "./findFiles.js";
|
|
22
22
|
import { createFixAllLintErrorsTool } from "./fixAllLintErrors.js";
|
|
23
23
|
import { createFoldingRangesTool } from "./foldingRanges.js";
|
|
24
|
+
import { createFormatAndSaveTool } from "./formatAndSave.js";
|
|
24
25
|
import { createFormatDocumentTool } from "./formatDocument.js";
|
|
25
26
|
import { createGenerateAPIDocumentationTool } from "./generateAPIDocumentation.js";
|
|
26
27
|
import { createGenerateTestsTool } from "./generateTests.js";
|
|
@@ -56,9 +57,11 @@ import { createGetHandoffNoteTool, createSetHandoffNoteTool, } from "./handoffNo
|
|
|
56
57
|
import { createGetHoverAtCursorTool } from "./hoverAtCursor.js";
|
|
57
58
|
import { createParseHttpFileTool, createSendHttpRequestTool, } from "./httpClient.js";
|
|
58
59
|
import { createGetInlayHintsTool } from "./inlayHints.js";
|
|
60
|
+
import { createJumpToFirstErrorTool } from "./jumpToFirstError.js";
|
|
59
61
|
import { createListClaudeTasksTool } from "./listClaudeTasks.js";
|
|
60
62
|
import { createListTerminalsTool } from "./listTerminals.js";
|
|
61
63
|
import { createApplyCodeActionTool, createFindImplementationsTool, createFindReferencesTool, createFormatRangeTool, createGetCallHierarchyTool, createGetCodeActionsTool, createGetHoverTool, createGoToDeclarationTool, createGoToDefinitionTool, createGoToTypeDefinitionTool, createPrepareRenameTool, createPreviewCodeActionTool, createRenameSymbolTool, createSearchWorkspaceSymbolsTool, } from "./lsp.js";
|
|
64
|
+
import { createNavigateToSymbolByNameTool } from "./navigateToSymbolByName.js";
|
|
62
65
|
import { createOpenDiffTool } from "./openDiff.js";
|
|
63
66
|
import { createOpenFileTool } from "./openFile.js";
|
|
64
67
|
import { createOpenInBrowserTool } from "./openInBrowser.js";
|
|
@@ -164,8 +167,14 @@ export function registerAllTools(transport, config, openedFiles, probes, extensi
|
|
|
164
167
|
const workspaceFolders = config.workspaceFolders;
|
|
165
168
|
const diagnosticsTool = createGetDiagnosticsTool(workspace, probes, extensionClient, config.linters.length > 0 ? config.linters : undefined);
|
|
166
169
|
const testsTool = createRunTestsTool(workspace, probes, automationHooks ? (r) => automationHooks.handleTestRun(r) : undefined);
|
|
170
|
+
// Dep-injected tools for composite factories.
|
|
171
|
+
// Extract before `tools = [...]` so composite tools can receive them.
|
|
172
|
+
const formatDocumentTool = createFormatDocumentTool(workspace, probes, extensionClient);
|
|
173
|
+
const saveDocumentTool = createSaveDocumentTool(workspace, extensionClient);
|
|
174
|
+
const openFileTool = createOpenFileTool(workspace, config.editorCommand, openedFiles, extensionClient);
|
|
175
|
+
const setEditorDecorationsToolInstance = createSetEditorDecorationsTool(workspace, extensionClient);
|
|
167
176
|
const tools = [
|
|
168
|
-
|
|
177
|
+
openFileTool,
|
|
169
178
|
createOpenDiffTool(workspace, config.editorCommand),
|
|
170
179
|
createOpenInBrowserTool(),
|
|
171
180
|
createGetOpenEditorsTool(openedFiles, extensionClient, workspace),
|
|
@@ -175,7 +184,7 @@ export function registerAllTools(transport, config, openedFiles, probes, extensi
|
|
|
175
184
|
createGetLatestSelectionTool(extensionClient),
|
|
176
185
|
diagnosticsTool,
|
|
177
186
|
createCheckDocumentDirtyTool(workspace, extensionClient),
|
|
178
|
-
|
|
187
|
+
saveDocumentTool,
|
|
179
188
|
createCloseTabTool(workspace, extensionClient),
|
|
180
189
|
createCloseAllDiffTabsTool(),
|
|
181
190
|
createGetToolCapabilitiesTool(probes, extensionClient, config),
|
|
@@ -234,7 +243,7 @@ export function registerAllTools(transport, config, openedFiles, probes, extensi
|
|
|
234
243
|
createWatchActivityLogTool(activityLog),
|
|
235
244
|
]
|
|
236
245
|
: []),
|
|
237
|
-
createBridgeStatusTool(extensionClient, sessions, orchestrator, automationHooks, getDisconnectInfo),
|
|
246
|
+
createBridgeStatusTool(extensionClient, probes, sessions, orchestrator, automationHooks, getDisconnectInfo),
|
|
238
247
|
createWatchFilesTool(extensionClient),
|
|
239
248
|
createUnwatchFilesTool(extensionClient),
|
|
240
249
|
createListTerminalsTool(extensionClient, terminalPrefix),
|
|
@@ -250,7 +259,18 @@ export function registerAllTools(transport, config, openedFiles, probes, extensi
|
|
|
250
259
|
createGetBufferContentTool(workspace, extensionClient),
|
|
251
260
|
createReplaceBlockTool(workspace, extensionClient, fileLock, sessionId),
|
|
252
261
|
createEditTextTool(workspace, extensionClient, fileLock, sessionId),
|
|
253
|
-
|
|
262
|
+
formatDocumentTool,
|
|
263
|
+
createFormatAndSaveTool({
|
|
264
|
+
formatDocument: formatDocumentTool,
|
|
265
|
+
saveDocument: saveDocumentTool,
|
|
266
|
+
}),
|
|
267
|
+
createJumpToFirstErrorTool({
|
|
268
|
+
getDiagnostics: diagnosticsTool,
|
|
269
|
+
openFile: openFileTool,
|
|
270
|
+
setEditorDecorations: setEditorDecorationsToolInstance,
|
|
271
|
+
extensionClient,
|
|
272
|
+
}),
|
|
273
|
+
createNavigateToSymbolByNameTool(extensionClient),
|
|
254
274
|
createFixAllLintErrorsTool(workspace, probes, extensionClient),
|
|
255
275
|
createOrganizeImportsTool(workspace, extensionClient),
|
|
256
276
|
createWatchDiagnosticsTool(workspace, extensionClient, probes, config.linters.length > 0 ? config.linters : undefined),
|
|
@@ -284,7 +304,7 @@ export function registerAllTools(transport, config, openedFiles, probes, extensi
|
|
|
284
304
|
createSetDebugBreakpointsTool(workspace, extensionClient),
|
|
285
305
|
createStartDebuggingTool(extensionClient),
|
|
286
306
|
createStopDebuggingTool(extensionClient),
|
|
287
|
-
|
|
307
|
+
setEditorDecorationsToolInstance,
|
|
288
308
|
createClearEditorDecorationsTool(extensionClient),
|
|
289
309
|
createSetActiveWorkspaceFolderTool(config),
|
|
290
310
|
createSendHttpRequestTool({
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AASA,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EACL,kCAAkC,EAClC,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAuB,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,EAC7B,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,sBAAsB,EACtB,gCAAgC,GACjC,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,iCAAiC,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,kCAAkC,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAEvE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAS;IAC7C,eAAe;IACf,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,cAAc;IACd,UAAU;IACV,UAAU;IACV,mBAAmB;IACnB,kBAAkB;IAClB,eAAe;IACf,0BAA0B;IAC1B,gBAAgB;IAChB,kBAAkB;IAClB,oBAAoB;IACpB,gBAAgB;IAChB,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB;IACpB,iBAAiB;IACjB,UAAU;IACV,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;IACjB,cAAc;IACd,wBAAwB;IACxB,kBAAkB;IAClB,eAAe;IACf,eAAe;IACf,eAAe;IACf,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,yBAAyB;IACzB,eAAe;IACf,uBAAuB;IACvB,kBAAkB;IAClB,eAAe;IACf,qBAAqB;IACrB,0BAA0B;IAC1B,mBAAmB;IACnB,aAAa;IACb,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,kBAAkB;IAClB,wDAAwD;IACxD,sBAAsB;IACtB,wBAAwB;IACxB,WAAW;IACX,eAAe;IACf,oBAAoB;IACpB,qBAAqB;IACrB,gBAAgB;IAChB,eAAe;IACf,uBAAuB;IACvB,sBAAsB;IACtB,2FAA2F;IAC3F,iBAAiB;IACjB,qBAAqB;IACrB,cAAc;CACf,CAAC,CAAC;AAwBH,MAAM,UAAU,gBAAgB,CAC9B,SAAuB,EACvB,MAAc,EACd,WAAwB,EACxB,MAAoB,EACpB,eAAgC,EAChC,WAAyB,EACzB,cAAc,GAAG,EAAE,EACnB,QAAmB,EACnB,QAA+B,EAC/B,eAA0C,IAAI,EAC9C,SAAS,GAAG,EAAE,EACd,cAAkC,EAAE,EACpC,kBAA0C,IAAI,EAC9C,iBAAwC;IAExC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAEjD,MAAM,eAAe,GAAG,wBAAwB,CAC9C,SAAS,EACT,MAAM,EACN,eAAe,EACf,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACvD,CAAC;IAEF,MAAM,SAAS,GAAG,kBAAkB,CAClC,SAAS,EACT,MAAM,EACN,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CACtE,CAAC;IAEF,8CAA8C;IAC9C,sEAAsE;IACtE,MAAM,kBAAkB,GAAG,wBAAwB,CACjD,SAAS,EACT,MAAM,EACN,eAAe,CAChB,CAAC;IACF,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAC5E,MAAM,YAAY,GAAG,kBAAkB,CACrC,SAAS,EACT,MAAM,CAAC,aAAa,EACpB,WAAW,EACX,eAAe,CAChB,CAAC;IACF,MAAM,gCAAgC,GAAG,8BAA8B,CACrE,SAAS,EACT,eAAe,CAChB,CAAC;IAEF,MAAM,KAAK,GAAG;QACZ,YAAY;QACZ,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC;QACnD,uBAAuB,EAAE;QACzB,wBAAwB,CAAC,WAAW,EAAE,eAAe,EAAE,SAAS,CAAC;QACjE,6BAA6B,CAAC,gBAAgB,EAAE,eAAe,CAAC;QAChE,wBAAwB,CAAC,SAAS,CAAC;QACnC,6BAA6B,CAAC,eAAe,CAAC;QAC9C,4BAA4B,CAAC,eAAe,CAAC;QAC7C,eAAe;QACf,4BAA4B,CAAC,SAAS,EAAE,eAAe,CAAC;QACxD,gBAAgB;QAChB,kBAAkB,CAAC,SAAS,EAAE,eAAe,CAAC;QAC9C,0BAA0B,EAAE;QAC5B,6BAA6B,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC;QAC9D,sBAAsB,CACpB,SAAS,EACT,eAAe,EACf,MAAM,EACN,MAAM,CAAC,IAAI,IAAI,CAAC,CACjB;QACD,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC;QAC5C,0BAA0B,CAAC,SAAS,CAAC;QACrC,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC;QACtC,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC;QACxC,sBAAsB,CAAC,SAAS,CAAC;QACjC,oBAAoB,CAAC,SAAS,CAAC;QAC/B,mBAAmB,CAAC,SAAS,CAAC;QAC9B,0BAA0B,CAAC,SAAS,CAAC;QACrC,4BAA4B,CAAC,SAAS,CAAC;QACvC,gBAAgB,CAAC,SAAS,CAAC;QAC3B,mBAAmB,CACjB,SAAS,EACT,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CACxE;QACD,qBAAqB,CACnB,SAAS,EACT,eAAe;YACb,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAChD,CAAC,CAAC,SAAS,CACd;QACD,kBAAkB,CAAC,SAAS,CAAC;QAC7B,kBAAkB,CAAC,SAAS,CAAC;QAC7B,yBAAyB,CAAC,SAAS,CAAC;QACpC,iBAAiB,CACf,SAAS,EACT,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CACtE;QACD,iBAAiB,CACf,SAAS,EACT,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CACtE;QACD,kBAAkB,CAAC,SAAS,CAAC;QAC7B,qBAAqB,CAAC,SAAS,CAAC;QAChC,sBAAsB,CAAC,SAAS,CAAC;QACjC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC;QACvC,4BAA4B,CAAC,SAAS,EAAE,eAAe,CAAC;QACxD,wBAAwB,CAAC,SAAS,EAAE,eAAe,CAAC;QACpD,wBAAwB,CAAC,SAAS,EAAE,eAAe,CAAC;QACpD,6BAA6B,CAAC,SAAS,EAAE,eAAe,CAAC;QACzD,4BAA4B,CAAC,SAAS,EAAE,eAAe,CAAC;QACxD,yBAAyB,CAAC,SAAS,EAAE,eAAe,CAAC;QACrD,kBAAkB,CAAC,SAAS,EAAE,eAAe,CAAC;QAC9C,wBAAwB,CAAC,SAAS,EAAE,eAAe,CAAC;QACpD,yBAAyB,CAAC,SAAS,EAAE,eAAe,CAAC;QACrD,2BAA2B,CAAC,SAAS,EAAE,eAAe,CAAC;QACvD,yBAAyB,CAAC,SAAS,EAAE,eAAe,CAAC;QACrD,sBAAsB,CAAC,SAAS,EAAE,eAAe,CAAC;QAClD,gCAAgC,CAAC,SAAS,EAAE,eAAe,CAAC;QAC5D,0BAA0B,CAAC,SAAS,EAAE,eAAe,CAAC;QACtD,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC;QACnD,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC;QACnD,qBAAqB,CAAC,SAAS,EAAE,eAAe,CAAC;QACjD,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC;QACnD,yBAAyB,CAAC,SAAS,EAAE,eAAe,CAAC;QACrD,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC;QACnD,yBAAyB,CAAC,SAAS,EAAE,eAAe,CAAC;QACrD,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC;QACnD,kBAAkB;QAClB,GAAG,eAAe,CAAC,SAAS,CAAC;QAC7B,SAAS;QACT,GAAG,CAAC,WAAW;YACb,CAAC,CAAC;gBACE,wBAAwB,CAAC,WAAW,CAAC;gBACrC,0BAA0B,CAAC,WAAW,CAAC;aACxC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,sBAAsB,CACpB,eAAe,EACf,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,iBAAiB,CAClB;QACD,oBAAoB,CAAC,eAAe,CAAC;QACrC,sBAAsB,CAAC,eAAe,CAAC;QACvC,uBAAuB,CAAC,eAAe,EAAE,cAAc,CAAC;QACxD,2BAA2B,CAAC,eAAe,EAAE,cAAc,CAAC;QAC5D,wBAAwB,CAAC,SAAS,EAAE,eAAe,EAAE,cAAc,CAAC;QACpE,yBAAyB,CAAC,eAAe,EAAE,cAAc,CAAC;QAC1D,6BAA6B,CAC3B,eAAe,EACf,MAAM,CAAC,gBAAgB,EACvB,cAAc,CACf;QACD,uBAAuB,CACrB,SAAS,EACT,eAAe,EACf,MAAM,CAAC,gBAAgB,EACvB,cAAc,CACf;QACD,+BAA+B,CAAC,eAAe,EAAE,cAAc,CAAC;QAChE,oBAAoB,CAAC,SAAS,EAAE,eAAe,CAAC;QAChD,oBAAoB,CAAC,SAAS,EAAE,eAAe,CAAC;QAChD,oBAAoB,CAAC,SAAS,EAAE,eAAe,CAAC;QAChD,0BAA0B,CAAC,SAAS,EAAE,eAAe,CAAC;QACtD,sBAAsB,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,CAAC;QACvE,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,CAAC;QACnE,kBAAkB;QAClB,uBAAuB,CAAC;YACtB,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,gBAAgB;SAC/B,CAAC;QACF,0BAA0B,CAAC;YACzB,cAAc,EAAE,eAAe;YAC/B,QAAQ,EAAE,YAAY;YACtB,oBAAoB,EAAE,gCAAgC;YACtD,eAAe;SAChB,CAAC;QACF,gCAAgC,CAAC,eAAe,CAAC;QACjD,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC;QAC9D,yBAAyB,CAAC,SAAS,EAAE,eAAe,CAAC;QACrD,0BAA0B,CACxB,SAAS,EACT,eAAe,EACf,MAAM,EACN,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CACvD;QACD,+BAA+B;QAC/B,uBAAuB,CAAC,eAAe,CAAC;QACxC,wBAAwB,CAAC,eAAe,CAAC;QACzC,wBAAwB,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACzD,wBAAwB,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACpE,8BAA8B,CAAC,eAAe,CAAC;QAC/C,6BAA6B,CAAC,eAAe,CAAC;QAC9C,2BAA2B,CAAC,eAAe,CAAC;QAC5C,8BAA8B,CAAC,eAAe,EAAE,MAAM,CAAC;QACvD,4BAA4B,CAAC,eAAe,CAAC;QAC7C,yBAAyB,CAAC,eAAe,CAAC;QAC1C,uBAAuB,CAAC,eAAe,CAAC;QACxC,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC;QACnD,0BAA0B,CAAC,eAAe,CAAC;QAC3C,0BAA0B,CAAC,eAAe,CAAC;QAC3C,uBAAuB,CAAC,SAAS,CAAC;QAClC,+BAA+B,CAAC,SAAS,EAAE,eAAe,CAAC;QAC3D,0BAA0B,CAAC,SAAS,EAAE,eAAe,CAAC;QACtD,uBAAuB,CAAC,SAAS,EAAE,eAAe,CAAC;QACnD,6BAA6B,CAAC,SAAS,EAAE,eAAe,CAAC;QACzD,kCAAkC,CAAC,SAAS,EAAE,eAAe,CAAC;QAC9D,0BAA0B,CAAC,SAAS,EAAE,eAAe,CAAC;QACtD,2BAA2B,CAAC,SAAS,EAAE,eAAe,CAAC;QACvD,qBAAqB,CAAC,SAAS,EAAE,eAAe,CAAC;QACjD,yBAAyB,CAAC,SAAS,EAAE,eAAe,CAAC;QACrD,uBAAuB,CAAC,eAAe,CAAC;QACxC,4BAA4B,CAAC,eAAe,CAAC;QAC7C,6BAA6B,CAAC,SAAS,EAAE,eAAe,CAAC;QACzD,wBAAwB,CAAC,eAAe,CAAC;QACzC,uBAAuB,CAAC,eAAe,CAAC;QACxC,gCAAgC;QAChC,gCAAgC,CAAC,eAAe,CAAC;QACjD,kCAAkC,CAAC,MAAM,CAAC;QAC1C,yBAAyB,CAAC;YACxB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;SAC1C,CAAC;QACF,uBAAuB,CAAC,SAAS,CAAC;QAClC,8BAA8B;QAC9B,2BAA2B,CAAC,SAAS,EAAE,MAAM,CAAC;QAC9C,+BAA+B,CAAC,SAAS,EAAE,MAAM,CAAC;QAClD,2BAA2B,CAAC,SAAS,EAAE,MAAM,CAAC;QAC9C,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC;QAC7C,kCAAkC,CAAC,SAAS,CAAC;QAC7C,iCAAiC,CAAC,SAAS,EAAE,eAAe,CAAC;QAC7D,wBAAwB,CAAC,SAAS,CAAC;QACnC,uBAAuB,CAAC,SAAS,CAAC;QAClC,yBAAyB,CAAC,SAAS,CAAC;QACpC,uBAAuB,CAAC,SAAS,CAAC;QAClC,GAAG,CAAC,MAAM,CAAC,EAAE;YACX,CAAC,CAAC;gBACE,wBAAwB,CACtB,SAAS,EACT,eAAe;oBACb,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBAC7C,CAAC,CAAC,SAAS,CACd;gBACD,uBAAuB,CAAC,SAAS,CAAC;gBAClC,sBAAsB,CAAC,SAAS,CAAC;gBACjC,0BAA0B,CAAC,SAAS,CAAC;gBACrC,wBAAwB,CAAC,SAAS,CAAC;gBACnC,2BAA2B,CAAC,SAAS,CAAC;gBACtC,4BAA4B,CAAC,SAAS,CAAC;gBACvC,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC;gBAC7D,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC;gBAC/D,yBAAyB,CAAC,SAAS,CAAC;gBACpC,4BAA4B,CAAC,SAAS,CAAC;gBACvC,uBAAuB,CAAC,eAAe,CAAC;gBACxC,kCAAkC,CAChC,SAAS,EACT,eAAe,CAAC,gBAAgB,CACjC;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,YAAY,KAAK,IAAI;YACvB,CAAC,CAAC;gBACE,uBAAuB,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC;gBAC3D,6BAA6B,CAAC,YAAY,EAAE,SAAS,CAAC;gBACtD,0BAA0B,CAAC,YAAY,EAAE,SAAS,CAAC;gBACnD,yBAAyB,CAAC,YAAY,EAAE,SAAS,CAAC;gBAClD,0BAA0B,CAAC,YAAY,EAAE,SAAS,CAAC;aACpD;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ;QACjC,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5D,8EAA8E;IAC9E,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,WAAW,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;QACpD,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { ExtensionClient } from "../extensionClient.js";
|
|
2
|
+
import type { ProgressFn } from "../transport.js";
|
|
3
|
+
import type { createSetEditorDecorationsTool } from "./decorations.js";
|
|
4
|
+
import type { createGetDiagnosticsTool } from "./getDiagnostics.js";
|
|
5
|
+
import type { createOpenFileTool } from "./openFile.js";
|
|
6
|
+
type GetDiagnosticsTool = ReturnType<typeof createGetDiagnosticsTool>;
|
|
7
|
+
type OpenFileTool = ReturnType<typeof createOpenFileTool>;
|
|
8
|
+
type SetEditorDecorationsTool = ReturnType<typeof createSetEditorDecorationsTool>;
|
|
9
|
+
export declare function createJumpToFirstErrorTool(deps: {
|
|
10
|
+
getDiagnostics: GetDiagnosticsTool;
|
|
11
|
+
openFile: OpenFileTool;
|
|
12
|
+
setEditorDecorations?: SetEditorDecorationsTool;
|
|
13
|
+
extensionClient?: ExtensionClient;
|
|
14
|
+
}): {
|
|
15
|
+
schema: {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
annotations: {
|
|
19
|
+
readOnlyHint: boolean;
|
|
20
|
+
idempotentHint: boolean;
|
|
21
|
+
};
|
|
22
|
+
inputSchema: {
|
|
23
|
+
$schema: string;
|
|
24
|
+
type: "object";
|
|
25
|
+
additionalProperties: false;
|
|
26
|
+
properties: {};
|
|
27
|
+
};
|
|
28
|
+
outputSchema: {
|
|
29
|
+
type: "object";
|
|
30
|
+
properties: {
|
|
31
|
+
found: {
|
|
32
|
+
type: string;
|
|
33
|
+
};
|
|
34
|
+
file: {
|
|
35
|
+
type: string;
|
|
36
|
+
};
|
|
37
|
+
line: {
|
|
38
|
+
type: string;
|
|
39
|
+
};
|
|
40
|
+
column: {
|
|
41
|
+
type: string;
|
|
42
|
+
};
|
|
43
|
+
message: {
|
|
44
|
+
type: string;
|
|
45
|
+
};
|
|
46
|
+
rule: {
|
|
47
|
+
type: string;
|
|
48
|
+
};
|
|
49
|
+
decorationApplied: {
|
|
50
|
+
type: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
required: string[];
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
handler(_args: Record<string, unknown>, signal?: AbortSignal, progress?: ProgressFn): Promise<{
|
|
57
|
+
content: Array<{
|
|
58
|
+
type: string;
|
|
59
|
+
text: string;
|
|
60
|
+
}>;
|
|
61
|
+
structuredContent: unknown;
|
|
62
|
+
} | {
|
|
63
|
+
content: Array<{
|
|
64
|
+
type: string;
|
|
65
|
+
text: string;
|
|
66
|
+
}>;
|
|
67
|
+
isError: true;
|
|
68
|
+
}>;
|
|
69
|
+
};
|
|
70
|
+
export {};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* jumpToFirstError — composite tool that replaces the 3-call pattern of
|
|
3
|
+
* getDiagnostics → openFile → setEditorDecorations with a single call.
|
|
4
|
+
*
|
|
5
|
+
* Most common session-start workflow: "find the first error and take me to it".
|
|
6
|
+
*
|
|
7
|
+
* Implementation notes (from v2.25.25 session plan):
|
|
8
|
+
* - diagnostic.file may be `file://...` (LSP path) OR workspace-relative
|
|
9
|
+
* (CLI linter path). resolveFilePath handles relative but not `file://` —
|
|
10
|
+
* we strip the scheme before calling openFile.
|
|
11
|
+
* - Diagnostic field is `rule`, not `code`. (getDiagnostics outputSchema
|
|
12
|
+
* confirms.)
|
|
13
|
+
* - setEditorDecorations requires top-level `id` + `file` — the shape
|
|
14
|
+
* `{ startLine, style, message }` is only the inner decoration entry.
|
|
15
|
+
* - Guard for `fmt.isError` / `diag.isError` before reading structuredContent;
|
|
16
|
+
* several fix rounds in v2.25.18–24 fixed bugs caused by skipping this.
|
|
17
|
+
*/
|
|
18
|
+
import { fileURLToPath } from "node:url";
|
|
19
|
+
import { error, successStructured } from "./utils.js";
|
|
20
|
+
function normalizeFilePath(f) {
|
|
21
|
+
if (f.startsWith("file://")) {
|
|
22
|
+
try {
|
|
23
|
+
return fileURLToPath(f);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return f.slice("file://".length);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return f;
|
|
30
|
+
}
|
|
31
|
+
export function createJumpToFirstErrorTool(deps) {
|
|
32
|
+
return {
|
|
33
|
+
schema: {
|
|
34
|
+
name: "jumpToFirstError",
|
|
35
|
+
description: "Find the first error in the workspace and jump to it in one call. " +
|
|
36
|
+
"Replaces the 3-call getDiagnostics → openFile → setEditorDecorations pattern. " +
|
|
37
|
+
"Returns { found: false } if the workspace has no errors. When the extension is " +
|
|
38
|
+
"connected, also applies a red decoration at the error line.",
|
|
39
|
+
annotations: { readOnlyHint: false, idempotentHint: true },
|
|
40
|
+
inputSchema: {
|
|
41
|
+
$schema: "http://json-schema.org/draft-07/schema#",
|
|
42
|
+
type: "object",
|
|
43
|
+
additionalProperties: false,
|
|
44
|
+
properties: {},
|
|
45
|
+
},
|
|
46
|
+
outputSchema: {
|
|
47
|
+
type: "object",
|
|
48
|
+
properties: {
|
|
49
|
+
found: { type: "boolean" },
|
|
50
|
+
file: { type: "string" },
|
|
51
|
+
line: { type: "integer" },
|
|
52
|
+
column: { type: "integer" },
|
|
53
|
+
message: { type: "string" },
|
|
54
|
+
rule: { type: "string" },
|
|
55
|
+
decorationApplied: { type: "boolean" },
|
|
56
|
+
},
|
|
57
|
+
required: ["found"],
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
async handler(_args, signal, progress) {
|
|
61
|
+
// Step 1: fetch the first error
|
|
62
|
+
const diag = await deps.getDiagnostics.handler({ severity: "error", maxResults: 1 }, signal, progress);
|
|
63
|
+
if ("isError" in diag && diag.isError)
|
|
64
|
+
return diag;
|
|
65
|
+
const diagData = diag
|
|
66
|
+
.structuredContent;
|
|
67
|
+
if (!diagData || typeof diagData !== "object") {
|
|
68
|
+
return error("getDiagnostics returned unexpected shape (no structuredContent)");
|
|
69
|
+
}
|
|
70
|
+
const diagnostics = diagData.diagnostics;
|
|
71
|
+
if (!Array.isArray(diagnostics) || diagnostics.length === 0) {
|
|
72
|
+
return successStructured({ found: false });
|
|
73
|
+
}
|
|
74
|
+
const first = diagnostics[0];
|
|
75
|
+
const rawFile = typeof first.file === "string" ? first.file : undefined;
|
|
76
|
+
if (!rawFile) {
|
|
77
|
+
return error("first diagnostic missing 'file' field — cannot jump to error");
|
|
78
|
+
}
|
|
79
|
+
const filePath = normalizeFilePath(rawFile);
|
|
80
|
+
const line = typeof first.line === "number" ? first.line : 1;
|
|
81
|
+
const column = typeof first.column === "number" ? first.column : 1;
|
|
82
|
+
const message = typeof first.message === "string" ? first.message : "Unknown error";
|
|
83
|
+
const rule = typeof first.rule === "string" ? first.rule : undefined;
|
|
84
|
+
// Step 2: open the file at the error line
|
|
85
|
+
const openResult = await deps.openFile.handler({
|
|
86
|
+
filePath,
|
|
87
|
+
startLine: line,
|
|
88
|
+
});
|
|
89
|
+
if ("isError" in openResult && openResult.isError)
|
|
90
|
+
return openResult;
|
|
91
|
+
// Step 3: decorate the error line (best-effort; extension-only)
|
|
92
|
+
let decorationApplied = false;
|
|
93
|
+
if (deps.setEditorDecorations &&
|
|
94
|
+
deps.extensionClient?.isConnected() === true) {
|
|
95
|
+
try {
|
|
96
|
+
const decoResult = await deps.setEditorDecorations.handler({
|
|
97
|
+
id: "jump-to-first-error",
|
|
98
|
+
file: filePath,
|
|
99
|
+
decorations: [
|
|
100
|
+
{
|
|
101
|
+
startLine: line,
|
|
102
|
+
endLine: typeof first.endLine === "number" ? first.endLine : line,
|
|
103
|
+
style: "error",
|
|
104
|
+
message,
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
});
|
|
108
|
+
decorationApplied = !("isError" in decoResult && decoResult.isError);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// best-effort; decoration failure does not fail the jump
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return successStructured({
|
|
115
|
+
found: true,
|
|
116
|
+
file: filePath,
|
|
117
|
+
line,
|
|
118
|
+
column,
|
|
119
|
+
message,
|
|
120
|
+
...(rule && { rule }),
|
|
121
|
+
decorationApplied,
|
|
122
|
+
});
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=jumpToFirstError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jumpToFirstError.js","sourceRoot":"","sources":["../../src/tools/jumpToFirstError.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* navigateToSymbolByName — composite tool that searches for a symbol by name
|
|
3
|
+
* and jumps to its definition in one call. Replaces the 2-call
|
|
4
|
+
* searchSymbols → goToDefinition dance.
|
|
5
|
+
*
|
|
6
|
+
* Implementation notes (from v2.25.25 session plan + real handler inspection):
|
|
7
|
+
* - Client method is `extensionClient.searchSymbols`, NOT `searchWorkspaceSymbols`.
|
|
8
|
+
* - Second arg is a positional number (`maxResults`), NOT an options object.
|
|
9
|
+
* - Handler FLATTENS the LSP response — `symbols` return { name, kind, file,
|
|
10
|
+
* line, column, containerName } with 1-based line/column and absolute path.
|
|
11
|
+
* (Not nested range.start as the plan review speculated — verified against
|
|
12
|
+
* vscode-extension/src/handlers/lsp.ts:461-473.)
|
|
13
|
+
* - `goToDefinition` returns an ARRAY of locations (not a single one), each
|
|
14
|
+
* with { file, line, column, endLine, endColumn }, or null on no result /
|
|
15
|
+
* command error. Verified against lsp.ts:71-88.
|
|
16
|
+
* - `openFile` on the client is positional: `openFile(file, line?)`.
|
|
17
|
+
*
|
|
18
|
+
* Defensive shape parsing is still applied — the client methods are typed as
|
|
19
|
+
* `Promise<unknown>` by convention (see project_shape_mismatch_prevention.md).
|
|
20
|
+
*/
|
|
21
|
+
import type { ExtensionClient } from "../extensionClient.js";
|
|
22
|
+
import type { ProgressFn } from "../transport.js";
|
|
23
|
+
export declare function createNavigateToSymbolByNameTool(extensionClient: ExtensionClient): {
|
|
24
|
+
schema: {
|
|
25
|
+
name: string;
|
|
26
|
+
extensionRequired: boolean;
|
|
27
|
+
description: string;
|
|
28
|
+
annotations: {
|
|
29
|
+
readOnlyHint: boolean;
|
|
30
|
+
idempotentHint: boolean;
|
|
31
|
+
};
|
|
32
|
+
inputSchema: {
|
|
33
|
+
$schema: string;
|
|
34
|
+
type: "object";
|
|
35
|
+
additionalProperties: false;
|
|
36
|
+
required: string[];
|
|
37
|
+
properties: {
|
|
38
|
+
query: {
|
|
39
|
+
type: "string";
|
|
40
|
+
description: string;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
outputSchema: {
|
|
45
|
+
type: "object";
|
|
46
|
+
properties: {
|
|
47
|
+
found: {
|
|
48
|
+
type: string;
|
|
49
|
+
};
|
|
50
|
+
symbol: {
|
|
51
|
+
type: string;
|
|
52
|
+
};
|
|
53
|
+
definition: {
|
|
54
|
+
type: string;
|
|
55
|
+
};
|
|
56
|
+
alternatives: {
|
|
57
|
+
type: string;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
required: string[];
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
handler(args: Record<string, unknown>, signal?: AbortSignal, _progress?: ProgressFn): Promise<{
|
|
64
|
+
content: Array<{
|
|
65
|
+
type: string;
|
|
66
|
+
text: string;
|
|
67
|
+
}>;
|
|
68
|
+
structuredContent: unknown;
|
|
69
|
+
} | {
|
|
70
|
+
content: Array<{
|
|
71
|
+
type: string;
|
|
72
|
+
text: string;
|
|
73
|
+
}>;
|
|
74
|
+
isError: true;
|
|
75
|
+
}>;
|
|
76
|
+
};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { error, extensionRequired, requireString, successStructured, } from "./utils.js";
|
|
2
|
+
export function createNavigateToSymbolByNameTool(extensionClient) {
|
|
3
|
+
return {
|
|
4
|
+
schema: {
|
|
5
|
+
name: "navigateToSymbolByName",
|
|
6
|
+
extensionRequired: true,
|
|
7
|
+
description: "Find a workspace symbol by name and jump to its definition. " +
|
|
8
|
+
"Replaces the 2-call searchSymbols → goToDefinition pattern. " +
|
|
9
|
+
"Returns the chosen symbol, its definition, and up to 4 alternative matches.",
|
|
10
|
+
annotations: { readOnlyHint: false, idempotentHint: true },
|
|
11
|
+
inputSchema: {
|
|
12
|
+
$schema: "http://json-schema.org/draft-07/schema#",
|
|
13
|
+
type: "object",
|
|
14
|
+
additionalProperties: false,
|
|
15
|
+
required: ["query"],
|
|
16
|
+
properties: {
|
|
17
|
+
query: {
|
|
18
|
+
type: "string",
|
|
19
|
+
description: "Symbol name to search for",
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
outputSchema: {
|
|
24
|
+
type: "object",
|
|
25
|
+
properties: {
|
|
26
|
+
found: { type: "boolean" },
|
|
27
|
+
symbol: { type: "object" },
|
|
28
|
+
definition: { type: "object" },
|
|
29
|
+
alternatives: { type: "array" },
|
|
30
|
+
},
|
|
31
|
+
required: ["found"],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
async handler(args, signal, _progress) {
|
|
35
|
+
if (!extensionClient.isConnected()) {
|
|
36
|
+
return extensionRequired("navigateToSymbolByName");
|
|
37
|
+
}
|
|
38
|
+
const query = requireString(args, "query");
|
|
39
|
+
// Step 1: search workspace symbols
|
|
40
|
+
const raw = await extensionClient.searchSymbols(query, 5, signal);
|
|
41
|
+
if (raw === null || typeof raw !== "object") {
|
|
42
|
+
return successStructured({ found: false });
|
|
43
|
+
}
|
|
44
|
+
const symbolsList = raw.symbols;
|
|
45
|
+
if (!Array.isArray(symbolsList) || symbolsList.length === 0) {
|
|
46
|
+
return successStructured({ found: false });
|
|
47
|
+
}
|
|
48
|
+
// Defensively extract the first symbol's coordinates
|
|
49
|
+
const best = symbolsList[0];
|
|
50
|
+
const symbolFile = typeof best.file === "string" ? best.file : undefined;
|
|
51
|
+
const symbolLine = typeof best.line === "number" ? best.line : undefined;
|
|
52
|
+
const symbolColumn = typeof best.column === "number" ? best.column : undefined;
|
|
53
|
+
if (!symbolFile || symbolLine == null || symbolColumn == null) {
|
|
54
|
+
return error("searchSymbols returned unexpected shape for first match");
|
|
55
|
+
}
|
|
56
|
+
// Step 2: resolve to definition
|
|
57
|
+
const defRaw = await extensionClient.goToDefinition(symbolFile, symbolLine, symbolColumn, signal);
|
|
58
|
+
// Handler returns an array of locations, or null on no result / error
|
|
59
|
+
if (defRaw === null) {
|
|
60
|
+
return successStructured({
|
|
61
|
+
found: true,
|
|
62
|
+
symbol: best,
|
|
63
|
+
definition: null,
|
|
64
|
+
alternatives: symbolsList.slice(1, 5),
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
if (!Array.isArray(defRaw) || defRaw.length === 0) {
|
|
68
|
+
return successStructured({
|
|
69
|
+
found: true,
|
|
70
|
+
symbol: best,
|
|
71
|
+
definition: null,
|
|
72
|
+
alternatives: symbolsList.slice(1, 5),
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const firstDef = defRaw[0];
|
|
76
|
+
const defFile = typeof firstDef.file === "string" ? firstDef.file : undefined;
|
|
77
|
+
const defLine = typeof firstDef.line === "number" ? firstDef.line : undefined;
|
|
78
|
+
if (!defFile || defLine == null) {
|
|
79
|
+
return error("goToDefinition returned unexpected shape");
|
|
80
|
+
}
|
|
81
|
+
// Step 3: open the definition location
|
|
82
|
+
await extensionClient.openFile(defFile, defLine);
|
|
83
|
+
return successStructured({
|
|
84
|
+
found: true,
|
|
85
|
+
symbol: best,
|
|
86
|
+
definition: firstDef,
|
|
87
|
+
alternatives: symbolsList.slice(1, 5),
|
|
88
|
+
});
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=navigateToSymbolByName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigateToSymbolByName.js","sourceRoot":"","sources":["../../src/tools/navigateToSymbolByName.ts"],"names":[],"mappings":"AAsBA,OAAO,EACL,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,gCAAgC,CAC9C,eAAgC;IAEhC,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,wBAAwB;YAC9B,iBAAiB,EAAE,IAAI;YACvB,WAAW,EACT,8DAA8D;gBAC9D,8DAA8D;gBAC9D,6EAA6E;YAC/E,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE;YAC1D,WAAW,EAAE;gBACX,OAAO,EAAE,yCAAyC;gBAClD,IAAI,EAAE,QAAiB;gBACvB,oBAAoB,EAAE,KAAc;gBACpC,QAAQ,EAAE,CAAC,OAAO,CAAC;gBACnB,UAAU,EAAE;oBACV,KAAK,EAAE;wBACL,IAAI,EAAE,QAAiB;wBACvB,WAAW,EAAE,2BAA2B;qBACzC;iBACF;aACF;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC9B,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;iBAChC;gBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;aACpB;SACF;QACD,KAAK,CAAC,OAAO,CACX,IAA6B,EAC7B,MAAoB,EACpB,SAAsB;YAEtB,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;gBACnC,OAAO,iBAAiB,CAAC,wBAAwB,CAAC,CAAC;YACrD,CAAC;YACD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAE3C,mCAAmC;YACnC,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAClE,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5C,OAAO,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,MAAM,WAAW,GAAI,GAA6B,CAAC,OAAO,CAAC;YAC3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5D,OAAO,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7C,CAAC;YAED,qDAAqD;YACrD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAA4B,CAAC;YACvD,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACzE,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACzE,MAAM,YAAY,GAChB,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,IAAI,CAAC,UAAU,IAAI,UAAU,IAAI,IAAI,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;gBAC9D,OAAO,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAC1E,CAAC;YAED,gCAAgC;YAChC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,cAAc,CACjD,UAAU,EACV,UAAU,EACV,YAAY,EACZ,MAAM,CACP,CAAC;YAEF,sEAAsE;YACtE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,iBAAiB,CAAC;oBACvB,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACtC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,OAAO,iBAAiB,CAAC;oBACvB,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,IAAI;oBACZ,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACtC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAA4B,CAAC;YACtD,MAAM,OAAO,GACX,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,MAAM,OAAO,GACX,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAChE,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBAChC,OAAO,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC3D,CAAC;YAED,uCAAuC;YACvC,MAAM,eAAe,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEjD,OAAO,iBAAiB,CAAC;gBACvB,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,QAAQ;gBACpB,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACtC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-ide-bridge",
|
|
3
|
-
"version": "2.25.
|
|
3
|
+
"version": "2.25.26",
|
|
4
4
|
"description": "Standalone MCP bridge for Claude Code IDE integration with any editor — 136+ tools for LSP, debugging, terminals, Git, GitHub, and more",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|