claude-ide-bridge 2.25.24 → 2.25.25
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 +69 -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,37 @@
|
|
|
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
|
+
const TOOL_AVAILABILITY_TABLE = {
|
|
14
|
+
// Extension-required tools (schema.extensionRequired: true)
|
|
15
|
+
findImplementations: { extensionRequired: true },
|
|
16
|
+
getHoverAtCursor: { extensionRequired: true },
|
|
17
|
+
getTypeHierarchy: { extensionRequired: true },
|
|
18
|
+
getWorkspaceSettings: { extensionRequired: true },
|
|
19
|
+
setWorkspaceSetting: { extensionRequired: true },
|
|
20
|
+
setEditorDecorations: { extensionRequired: true },
|
|
21
|
+
clearEditorDecorations: { extensionRequired: true },
|
|
22
|
+
getSemanticTokens: { extensionRequired: true },
|
|
23
|
+
getCodeLens: { extensionRequired: true },
|
|
24
|
+
// Probe-gated CLI/formatter tools (extension path also works when connected)
|
|
25
|
+
formatDocument: { probe: "prettier" },
|
|
26
|
+
runTests: { probe: "vitest" },
|
|
27
|
+
getGitStatus: { probe: "git" },
|
|
28
|
+
getGitDiff: { probe: "git" },
|
|
29
|
+
getGitLog: { probe: "git" },
|
|
30
|
+
githubListPRs: { probe: "gh" },
|
|
31
|
+
githubCreatePR: { probe: "gh" },
|
|
32
|
+
githubViewPR: { probe: "gh" },
|
|
33
|
+
};
|
|
34
|
+
export function createBridgeStatusTool(extensionClient, probes, sessions, orchestrator, automationHooks, getDisconnectInfo) {
|
|
5
35
|
return {
|
|
6
36
|
schema: {
|
|
7
37
|
name: "getBridgeStatus",
|
|
@@ -45,6 +75,17 @@ export function createBridgeStatusTool(extensionClient, sessions, orchestrator,
|
|
|
45
75
|
},
|
|
46
76
|
required: ["at", "code", "reason"],
|
|
47
77
|
},
|
|
78
|
+
toolAvailability: {
|
|
79
|
+
type: "object",
|
|
80
|
+
additionalProperties: {
|
|
81
|
+
type: "object",
|
|
82
|
+
properties: {
|
|
83
|
+
available: { type: "boolean" },
|
|
84
|
+
reason: { type: "string" },
|
|
85
|
+
},
|
|
86
|
+
required: ["available"],
|
|
87
|
+
},
|
|
88
|
+
},
|
|
48
89
|
},
|
|
49
90
|
required: [
|
|
50
91
|
"extensionConnected",
|
|
@@ -83,6 +124,32 @@ export function createBridgeStatusTool(extensionClient, sessions, orchestrator,
|
|
|
83
124
|
baseSuggestedActions.push(`Automation hooks enabled but not wired in settings.json: ${unwired.join(", ")}. ` +
|
|
84
125
|
`Add CC hook entries calling the bridge notify tools (see CLAUDE.md Automation Policy section).`);
|
|
85
126
|
}
|
|
127
|
+
// Compute tool availability: answers "why can't Claude call X?" without
|
|
128
|
+
// requiring the caller to try the tool first and parse the error.
|
|
129
|
+
const toolAvailability = {};
|
|
130
|
+
for (const [name, spec] of Object.entries(TOOL_AVAILABILITY_TABLE)) {
|
|
131
|
+
if (spec.extensionRequired && !extensionConnected) {
|
|
132
|
+
toolAvailability[name] = {
|
|
133
|
+
available: false,
|
|
134
|
+
reason: "extension_disconnected",
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
else if (spec.extensionRequired && circuitBreaker.suspended) {
|
|
138
|
+
toolAvailability[name] = {
|
|
139
|
+
available: false,
|
|
140
|
+
reason: "circuit_breaker_open",
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
else if (spec.probe && !probes[spec.probe]) {
|
|
144
|
+
toolAvailability[name] = {
|
|
145
|
+
available: false,
|
|
146
|
+
reason: `missing_probe:${spec.probe}`,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
toolAvailability[name] = { available: true };
|
|
151
|
+
}
|
|
152
|
+
}
|
|
86
153
|
return successStructured({
|
|
87
154
|
extensionConnected,
|
|
88
155
|
activeSessions: sessions?.size ?? 1,
|
|
@@ -117,6 +184,7 @@ export function createBridgeStatusTool(extensionClient, sessions, orchestrator,
|
|
|
117
184
|
...(getDisconnectInfo && {
|
|
118
185
|
lastDisconnect: getDisconnectInfo(),
|
|
119
186
|
}),
|
|
187
|
+
toolAvailability,
|
|
120
188
|
});
|
|
121
189
|
},
|
|
122
190
|
};
|
|
@@ -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":"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"}
|
|
@@ -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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-ide-bridge",
|
|
3
|
-
"version": "2.25.
|
|
3
|
+
"version": "2.25.25",
|
|
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",
|