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.
@@ -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
- export function createBridgeStatusTool(extensionClient, sessions, orchestrator, automationHooks, getDisconnectInfo) {
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;AAE9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAQ7B,MAAM,UAAU,sBAAsB,CACpC,eAAgC,EAChC,QAA+B,EAC/B,YAAwC,EACxC,eAAwC,EACxC,iBAAwC;IAExC,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,iBAAiB;YACvB,WAAW,EACT,2GAA2G;YAC7G,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;YACnC,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE,EAAE;gBACd,oBAAoB,EAAE,KAAc;aACrC;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBACvC,cAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBACnC,cAAc,EAAE;wBACd,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;4BAC9B,mBAAmB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;4BACxC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;yBACjC;wBACD,QAAQ,EAAE,CAAC,WAAW,EAAE,qBAAqB,CAAC;qBAC/C;oBACD,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oBAClC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;oBACxC,iBAAiB,EAAE;wBACjB,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;qBACtC;oBACD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;oBACjD,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACnC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,gBAAgB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;oBAC9D,cAAc,EAAE;wBACd,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;4BAChC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;4BACnC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;yBACrC;wBACD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;qBACnC;iBACF;gBACD,QAAQ,EAAE;oBACR,oBAAoB;oBACpB,gBAAgB;oBAChB,gBAAgB;oBAChB,eAAe;oBACf,MAAM;iBACP;aACF;SACF;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,kBAAkB,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;YACzD,MAAM,cAAc,GAAG,eAAe,CAAC,sBAAsB,EAAE,CAAC;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,MAAM,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;YACxE,MAAM,iBAAiB,GACrB,SAAS,KAAK,IAAI;gBAChB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,SAAS,GAAG,GAAG;oBACf,CAAC,CAAE,SAAmB;oBACtB,CAAC,CAAC,SAAS,GAAG,GAAG;wBACf,CAAC,CAAE,UAAoB;wBACvB,CAAC,CAAE,MAAgB,CAAC;YAE5B,MAAM,gBAAgB,GAAG,eAAe,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC;YAC9D,MAAM,OAAO,GAAG,gBAAgB,EAAE,mBAAmB,IAAI,EAAE,CAAC;YAE5D,MAAM,oBAAoB,GAAG,kBAAkB;gBAC7C,CAAC,CAAC;oBACE,0DAA0D;oBAC1D,4EAA4E;oBAC5E,mEAAmE;iBACpE;gBACH,CAAC,CAAC;oBACE,qEAAqE;oBACrE,iFAAiF;iBAClF,CAAC;YAEN,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,oBAAoB,CAAC,IAAI,CACvB,4DAA4D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBAChF,gGAAgG,CACnG,CAAC;YACJ,CAAC;YAED,OAAO,iBAAiB,CAAC;gBACvB,kBAAkB;gBAClB,cAAc,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;gBACnC,cAAc,EAAE;oBACd,SAAS,EAAE,cAAc,CAAC,SAAS;oBACnC,mBAAmB,EAAE,cAAc,CAAC,QAAQ;oBAC5C,GAAG,CAAC,cAAc,CAAC,SAAS,IAAI;wBAC9B,WAAW,EAAE,IAAI,CAAC,GAAG,CACnB,CAAC,EACD,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAC3C;qBACF,CAAC;iBACH;gBACD,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC1C,SAAS,EAAE,SAAS,IAAI,IAAI;gBAC5B,GAAG,CAAC,iBAAiB,KAAK,SAAS,IAAI,EAAE,iBAAiB,EAAE,CAAC;gBAC7D,GAAG,CAAC,YAAY,KAAK,IAAI;oBACvB,YAAY,KAAK,SAAS,IAAI;oBAC5B,WAAW,EAAE;wBACX,YAAY,EAAE,YAAY,CAAC,YAAY;wBACvC,cAAc,EAAE,kBAAkB,CAAC,gBAAgB;qBACpD;iBACF,CAAC;gBACJ,GAAG,CAAC,gBAAgB,KAAK,IAAI,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;gBAClE,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;gBAC3C,eAAe,EAAE,kBAAkB;oBACjC,CAAC,CAAC,uEAAuE;oBACzE,CAAC,CAAC,6HAA6H;gBACjI,gBAAgB,EAAE,oBAAoB;gBACtC,IAAI,EAAE,kBAAkB;oBACtB,CAAC,CAAC,sBAAsB;oBACxB,CAAC,CAAC,mHAAmH;wBACnH,sDAAsD;wBACtD,oGAAoG;gBACxG,GAAG,CAAC,iBAAiB,IAAI;oBACvB,cAAc,EAAE,iBAAiB,EAAE;iBACpC,CAAC;aACH,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,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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"}
@@ -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
- createOpenFileTool(workspace, config.editorCommand, openedFiles, extensionClient),
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
- createSaveDocumentTool(workspace, extensionClient),
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
- createFormatDocumentTool(workspace, probes, extensionClient),
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
- createSetEditorDecorationsTool(workspace, extensionClient),
307
+ setEditorDecorationsToolInstance,
288
308
  createClearEditorDecorationsTool(extensionClient),
289
309
  createSetActiveWorkspaceFolderTool(config),
290
310
  createSendHttpRequestTool({
@@ -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.24",
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",