@wolfx/oh-my-openagent 4.2.0-patch.2 → 4.2.0-patch.3

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.
Files changed (97) hide show
  1. package/package.json +3 -2
  2. package/packages/lsp-tools-mcp/dist/cli.d.ts +3 -0
  3. package/packages/lsp-tools-mcp/dist/cli.d.ts.map +1 -0
  4. package/packages/lsp-tools-mcp/dist/cli.js +24 -0
  5. package/packages/lsp-tools-mcp/dist/cli.js.map +1 -0
  6. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +2 -0
  7. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts.map +1 -0
  8. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.js +7 -0
  9. package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.js.map +1 -0
  10. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.d.ts +14 -0
  11. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.d.ts.map +1 -0
  12. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.js +110 -0
  13. package/packages/lsp-tools-mcp/dist/lsp/client-wrapper.js.map +1 -0
  14. package/packages/lsp-tools-mcp/dist/lsp/client.d.ts +21 -0
  15. package/packages/lsp-tools-mcp/dist/lsp/client.d.ts.map +1 -0
  16. package/packages/lsp-tools-mcp/dist/lsp/client.js +130 -0
  17. package/packages/lsp-tools-mcp/dist/lsp/client.js.map +1 -0
  18. package/packages/lsp-tools-mcp/dist/lsp/config-loader.d.ts +25 -0
  19. package/packages/lsp-tools-mcp/dist/lsp/config-loader.d.ts.map +1 -0
  20. package/packages/lsp-tools-mcp/dist/lsp/config-loader.js +110 -0
  21. package/packages/lsp-tools-mcp/dist/lsp/config-loader.js.map +1 -0
  22. package/packages/lsp-tools-mcp/dist/lsp/connection.d.ts +5 -0
  23. package/packages/lsp-tools-mcp/dist/lsp/connection.d.ts.map +1 -0
  24. package/packages/lsp-tools-mcp/dist/lsp/connection.js +67 -0
  25. package/packages/lsp-tools-mcp/dist/lsp/connection.js.map +1 -0
  26. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +11 -0
  27. package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts.map +1 -0
  28. package/packages/lsp-tools-mcp/dist/lsp/constants.js +11 -0
  29. package/packages/lsp-tools-mcp/dist/lsp/constants.js.map +1 -0
  30. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.d.ts +4 -0
  31. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.d.ts.map +1 -0
  32. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.js +124 -0
  33. package/packages/lsp-tools-mcp/dist/lsp/directory-diagnostics.js.map +1 -0
  34. package/packages/lsp-tools-mcp/dist/lsp/errors.d.ts +36 -0
  35. package/packages/lsp-tools-mcp/dist/lsp/errors.d.ts.map +1 -0
  36. package/packages/lsp-tools-mcp/dist/lsp/errors.js +57 -0
  37. package/packages/lsp-tools-mcp/dist/lsp/errors.js.map +1 -0
  38. package/packages/lsp-tools-mcp/dist/lsp/formatters.d.ts +13 -0
  39. package/packages/lsp-tools-mcp/dist/lsp/formatters.d.ts.map +1 -0
  40. package/packages/lsp-tools-mcp/dist/lsp/formatters.js +109 -0
  41. package/packages/lsp-tools-mcp/dist/lsp/formatters.js.map +1 -0
  42. package/packages/lsp-tools-mcp/dist/lsp/infer-extension.d.ts +2 -0
  43. package/packages/lsp-tools-mcp/dist/lsp/infer-extension.d.ts.map +1 -0
  44. package/packages/lsp-tools-mcp/dist/lsp/infer-extension.js +59 -0
  45. package/packages/lsp-tools-mcp/dist/lsp/infer-extension.js.map +1 -0
  46. package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.d.ts +37 -0
  47. package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.d.ts.map +1 -0
  48. package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.js +248 -0
  49. package/packages/lsp-tools-mcp/dist/lsp/json-rpc-connection.js.map +1 -0
  50. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts +5 -0
  51. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts.map +1 -0
  52. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.js +170 -0
  53. package/packages/lsp-tools-mcp/dist/lsp/language-mappings.js.map +1 -0
  54. package/packages/lsp-tools-mcp/dist/lsp/manager.d.ts +48 -0
  55. package/packages/lsp-tools-mcp/dist/lsp/manager.d.ts.map +1 -0
  56. package/packages/lsp-tools-mcp/dist/lsp/manager.js +308 -0
  57. package/packages/lsp-tools-mcp/dist/lsp/manager.js.map +1 -0
  58. package/packages/lsp-tools-mcp/dist/lsp/process.d.ts +26 -0
  59. package/packages/lsp-tools-mcp/dist/lsp/process.d.ts.map +1 -0
  60. package/packages/lsp-tools-mcp/dist/lsp/process.js +124 -0
  61. package/packages/lsp-tools-mcp/dist/lsp/process.js.map +1 -0
  62. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.d.ts +5 -0
  63. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.d.ts.map +1 -0
  64. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.js +159 -0
  65. package/packages/lsp-tools-mcp/dist/lsp/server-definitions.js.map +1 -0
  66. package/packages/lsp-tools-mcp/dist/lsp/server-installation.d.ts +3 -0
  67. package/packages/lsp-tools-mcp/dist/lsp/server-installation.d.ts.map +1 -0
  68. package/packages/lsp-tools-mcp/dist/lsp/server-installation.js +51 -0
  69. package/packages/lsp-tools-mcp/dist/lsp/server-installation.js.map +1 -0
  70. package/packages/lsp-tools-mcp/dist/lsp/server-resolution.d.ts +12 -0
  71. package/packages/lsp-tools-mcp/dist/lsp/server-resolution.d.ts.map +1 -0
  72. package/packages/lsp-tools-mcp/dist/lsp/server-resolution.js +75 -0
  73. package/packages/lsp-tools-mcp/dist/lsp/server-resolution.js.map +1 -0
  74. package/packages/lsp-tools-mcp/dist/lsp/transport.d.ts +26 -0
  75. package/packages/lsp-tools-mcp/dist/lsp/transport.d.ts.map +1 -0
  76. package/packages/lsp-tools-mcp/dist/lsp/transport.js +234 -0
  77. package/packages/lsp-tools-mcp/dist/lsp/transport.js.map +1 -0
  78. package/packages/lsp-tools-mcp/dist/lsp/types.d.ts +125 -0
  79. package/packages/lsp-tools-mcp/dist/lsp/types.d.ts.map +1 -0
  80. package/packages/lsp-tools-mcp/dist/lsp/types.js +2 -0
  81. package/packages/lsp-tools-mcp/dist/lsp/types.js.map +1 -0
  82. package/packages/lsp-tools-mcp/dist/lsp/utils.d.ts +5 -0
  83. package/packages/lsp-tools-mcp/dist/lsp/utils.d.ts.map +1 -0
  84. package/packages/lsp-tools-mcp/dist/lsp/utils.js +43 -0
  85. package/packages/lsp-tools-mcp/dist/lsp/utils.js.map +1 -0
  86. package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.d.ts +9 -0
  87. package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.d.ts.map +1 -0
  88. package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.js +114 -0
  89. package/packages/lsp-tools-mcp/dist/lsp/workspace-edit.js.map +1 -0
  90. package/packages/lsp-tools-mcp/dist/mcp.d.ts +31 -0
  91. package/packages/lsp-tools-mcp/dist/mcp.d.ts.map +1 -0
  92. package/packages/lsp-tools-mcp/dist/mcp.js +95 -0
  93. package/packages/lsp-tools-mcp/dist/mcp.js.map +1 -0
  94. package/packages/lsp-tools-mcp/dist/tools.d.ts +91 -0
  95. package/packages/lsp-tools-mcp/dist/tools.d.ts.map +1 -0
  96. package/packages/lsp-tools-mcp/dist/tools.js +453 -0
  97. package/packages/lsp-tools-mcp/dist/tools.js.map +1 -0
@@ -0,0 +1,453 @@
1
+ import { resolve } from "node:path";
2
+ import { isDirectoryPath, withLspClient } from "./lsp/client-wrapper.js";
3
+ import { DEFAULT_MAX_DIAGNOSTICS, DEFAULT_MAX_REFERENCES, DEFAULT_MAX_SYMBOLS } from "./lsp/constants.js";
4
+ import { aggregateDiagnosticsForDirectory } from "./lsp/directory-diagnostics.js";
5
+ import { filterDiagnosticsBySeverity, formatApplyResult, formatDiagnostic, formatDocumentSymbol, formatLocation, formatPrepareRenameResult, formatSymbolInfo, } from "./lsp/formatters.js";
6
+ import { inferExtensionFromDirectory } from "./lsp/infer-extension.js";
7
+ import { getLspManager } from "./lsp/manager.js";
8
+ import { getAllServers } from "./lsp/server-resolution.js";
9
+ import { handleMissingDependencyError } from "./lsp/utils.js";
10
+ import { applyWorkspaceEdit } from "./lsp/workspace-edit.js";
11
+ const objectSchema = (properties, required = []) => ({
12
+ type: "object",
13
+ properties,
14
+ required,
15
+ });
16
+ function text(text, details, isError = false) {
17
+ return { content: [{ type: "text", text }], details, isError };
18
+ }
19
+ function isRecord(value) {
20
+ return typeof value === "object" && value !== null && !Array.isArray(value);
21
+ }
22
+ function requireString(params, key) {
23
+ const value = params[key];
24
+ if (typeof value !== "string" || value.length === 0) {
25
+ throw new Error(`Missing required string parameter '${key}'`);
26
+ }
27
+ return value;
28
+ }
29
+ function optionalString(params, key) {
30
+ const value = params[key];
31
+ return typeof value === "string" ? value : undefined;
32
+ }
33
+ function requireNumber(params, key) {
34
+ const value = params[key];
35
+ if (typeof value !== "number" || !Number.isFinite(value)) {
36
+ throw new Error(`Missing required number parameter '${key}'`);
37
+ }
38
+ return value;
39
+ }
40
+ function optionalNumber(params, key) {
41
+ const value = params[key];
42
+ return typeof value === "number" && Number.isFinite(value) ? value : undefined;
43
+ }
44
+ function optionalBoolean(params, key) {
45
+ const value = params[key];
46
+ return typeof value === "boolean" ? value : undefined;
47
+ }
48
+ function isSeverityFilter(value) {
49
+ return value === "error" || value === "warning" || value === "information" || value === "hint" || value === "all";
50
+ }
51
+ function severityFilter(params) {
52
+ const value = params.severity;
53
+ if (isSeverityFilter(value))
54
+ return value;
55
+ return "all";
56
+ }
57
+ function asDiagnosticArray(result) {
58
+ if (!result)
59
+ return [];
60
+ if (Array.isArray(result))
61
+ return result;
62
+ return result.items ?? [];
63
+ }
64
+ function isDocumentSymbol(symbol) {
65
+ return "range" in symbol;
66
+ }
67
+ async function executeLspStatus() {
68
+ const servers = getAllServers();
69
+ const snapshots = getLspManager().getSnapshot();
70
+ const installed = servers.filter((server) => server.installed && !server.disabled);
71
+ const configuredLines = servers.map((server) => {
72
+ const state = server.disabled ? "disabled" : server.installed ? "installed" : "missing";
73
+ return `- ${server.id}: ${state}; source=${server.source}; extensions=${server.extensions.join(", ")}`;
74
+ });
75
+ const activeLines = snapshots.map((snapshot) => {
76
+ const state = snapshot.alive ? (snapshot.isInitializing ? "initializing" : "alive") : "dead";
77
+ return `- ${snapshot.serverId}: ${state}; root=${snapshot.root}; refs=${snapshot.refCount}`;
78
+ });
79
+ const lines = [
80
+ `Configured LSP servers: ${servers.length}`,
81
+ `Installed LSP servers: ${installed.length}`,
82
+ "",
83
+ ...configuredLines,
84
+ "",
85
+ `Active LSP clients: ${snapshots.length}`,
86
+ ...activeLines,
87
+ ];
88
+ return text(lines.join("\n"), { servers, snapshots });
89
+ }
90
+ export async function executeLspDiagnostics(params, signal) {
91
+ const filePath = requireString(params, "filePath");
92
+ const severity = severityFilter(params);
93
+ try {
94
+ const absPath = resolve(filePath);
95
+ if (isDirectoryPath(absPath)) {
96
+ const extension = inferExtensionFromDirectory(absPath);
97
+ if (!extension) {
98
+ const message = `No supported source files found in directory: ${absPath}`;
99
+ const details = {
100
+ filePath,
101
+ severity,
102
+ mode: "directory",
103
+ diagnostics: [],
104
+ totalDiagnostics: 0,
105
+ truncated: false,
106
+ error: message,
107
+ errorKind: "no_files",
108
+ };
109
+ return text(message, details);
110
+ }
111
+ const output = await aggregateDiagnosticsForDirectory(absPath, extension, severity);
112
+ const details = {
113
+ filePath,
114
+ severity,
115
+ mode: "directory",
116
+ diagnostics: [],
117
+ totalDiagnostics: 0,
118
+ truncated: false,
119
+ };
120
+ return text(output, details);
121
+ }
122
+ const result = await withLspClient(filePath, async (client) => client.diagnostics(filePath), "diagnostics", {
123
+ signal,
124
+ });
125
+ const diagnostics = filterDiagnosticsBySeverity(asDiagnosticArray(result), severity);
126
+ const total = diagnostics.length;
127
+ const truncated = total > DEFAULT_MAX_DIAGNOSTICS;
128
+ const limited = truncated ? diagnostics.slice(0, DEFAULT_MAX_DIAGNOSTICS) : diagnostics;
129
+ const output = total === 0
130
+ ? "No diagnostics found"
131
+ : [
132
+ ...(truncated ? [`Found ${total} diagnostics (showing first ${DEFAULT_MAX_DIAGNOSTICS}):`] : []),
133
+ ...limited.map(formatDiagnostic),
134
+ ].join("\n");
135
+ const details = {
136
+ filePath,
137
+ severity,
138
+ mode: "file",
139
+ diagnostics: diagnostics.map((diagnostic) => ({ file: absPath, diagnostic })),
140
+ totalDiagnostics: total,
141
+ truncated,
142
+ };
143
+ return text(output, details);
144
+ }
145
+ catch (error) {
146
+ const message = handleMissingDependencyError(error);
147
+ if (message) {
148
+ const details = {
149
+ filePath,
150
+ severity,
151
+ mode: "file",
152
+ diagnostics: [],
153
+ totalDiagnostics: 0,
154
+ truncated: false,
155
+ error: message,
156
+ errorKind: "missing_dependency",
157
+ };
158
+ return text(message, details);
159
+ }
160
+ throw error;
161
+ }
162
+ }
163
+ async function executeLspGotoDefinition(params, signal) {
164
+ const filePath = requireString(params, "filePath");
165
+ const line = requireNumber(params, "line");
166
+ const character = requireNumber(params, "character");
167
+ try {
168
+ const result = await withLspClient(filePath, async (client) => client.definition(filePath, line, character), "definition", { signal });
169
+ const locations = !result ? [] : Array.isArray(result) ? result : [result];
170
+ const details = { filePath, line, character, locations };
171
+ if (locations.length === 0)
172
+ return text("No definition found", details);
173
+ return text(locations.map(formatLocation).join("\n"), details);
174
+ }
175
+ catch (error) {
176
+ const message = handleMissingDependencyError(error);
177
+ if (message) {
178
+ return text(message, {
179
+ filePath,
180
+ line,
181
+ character,
182
+ locations: [],
183
+ error: message,
184
+ errorKind: "missing_dependency",
185
+ });
186
+ }
187
+ throw error;
188
+ }
189
+ }
190
+ async function executeLspFindReferences(params, signal) {
191
+ const filePath = requireString(params, "filePath");
192
+ const line = requireNumber(params, "line");
193
+ const character = requireNumber(params, "character");
194
+ const includeDeclaration = optionalBoolean(params, "includeDeclaration") ?? true;
195
+ try {
196
+ const result = await withLspClient(filePath, async (client) => client.references(filePath, line, character, includeDeclaration), "references", { signal });
197
+ const references = Array.isArray(result) ? result : [];
198
+ const total = references.length;
199
+ const truncated = total > DEFAULT_MAX_REFERENCES;
200
+ const limited = truncated ? references.slice(0, DEFAULT_MAX_REFERENCES) : references;
201
+ const details = {
202
+ filePath,
203
+ line,
204
+ character,
205
+ references,
206
+ totalReferences: total,
207
+ truncated,
208
+ };
209
+ if (total === 0)
210
+ return text("No references found", details);
211
+ const output = [
212
+ ...(truncated ? [`Found ${total} references (showing first ${DEFAULT_MAX_REFERENCES}):`] : []),
213
+ ...limited.map(formatLocation),
214
+ ].join("\n");
215
+ return text(output, details);
216
+ }
217
+ catch (error) {
218
+ const message = handleMissingDependencyError(error);
219
+ if (message) {
220
+ return text(message, {
221
+ filePath,
222
+ line,
223
+ character,
224
+ references: [],
225
+ totalReferences: 0,
226
+ truncated: false,
227
+ error: message,
228
+ errorKind: "missing_dependency",
229
+ });
230
+ }
231
+ throw error;
232
+ }
233
+ }
234
+ async function executeLspSymbols(params, signal) {
235
+ const filePath = requireString(params, "filePath");
236
+ const rawScope = optionalString(params, "scope") ?? "document";
237
+ const scope = rawScope === "workspace" ? "workspace" : "document";
238
+ const limit = Math.min(optionalNumber(params, "limit") ?? DEFAULT_MAX_SYMBOLS, DEFAULT_MAX_SYMBOLS);
239
+ try {
240
+ if (scope === "workspace") {
241
+ const query = optionalString(params, "query");
242
+ if (!query) {
243
+ const message = "Error: 'query' is required for workspace scope";
244
+ return text(message, {
245
+ filePath,
246
+ scope,
247
+ query: undefined,
248
+ symbols: [],
249
+ totalSymbols: 0,
250
+ truncated: false,
251
+ error: message,
252
+ errorKind: "missing_query",
253
+ });
254
+ }
255
+ const symbols = await withLspClient(filePath, async (client) => client.workspaceSymbols(query), "workspaceSymbols", { signal });
256
+ return formatSymbolsResult(filePath, scope, symbols, limit, query);
257
+ }
258
+ const symbols = await withLspClient(filePath, async (client) => client.documentSymbols(filePath), "documentSymbols", { signal });
259
+ return formatSymbolsResult(filePath, scope, symbols, limit);
260
+ }
261
+ catch (error) {
262
+ const message = handleMissingDependencyError(error);
263
+ if (message) {
264
+ return text(message, {
265
+ filePath,
266
+ scope,
267
+ query: optionalString(params, "query"),
268
+ symbols: [],
269
+ totalSymbols: 0,
270
+ truncated: false,
271
+ error: message,
272
+ errorKind: "missing_dependency",
273
+ });
274
+ }
275
+ throw error;
276
+ }
277
+ }
278
+ function formatSymbolsResult(filePath, scope, symbols, limit, query) {
279
+ const total = symbols.length;
280
+ const truncated = total > limit;
281
+ const limited = truncated ? symbols.slice(0, limit) : symbols;
282
+ const details = { filePath, scope, query, symbols, totalSymbols: total, truncated };
283
+ if (total === 0)
284
+ return text("No symbols found", details);
285
+ const lines = [];
286
+ if (truncated)
287
+ lines.push(`Found ${total} symbols (showing first ${limit}):`);
288
+ const documentSymbols = limited.filter(isDocumentSymbol);
289
+ if (documentSymbols.length === limited.length) {
290
+ lines.push(...documentSymbols.map((symbol) => formatDocumentSymbol(symbol)));
291
+ }
292
+ else {
293
+ lines.push(...limited.filter((symbol) => !isDocumentSymbol(symbol)).map(formatSymbolInfo));
294
+ }
295
+ return text(lines.join("\n"), details);
296
+ }
297
+ async function executeLspPrepareRename(params, signal) {
298
+ const filePath = requireString(params, "filePath");
299
+ const line = requireNumber(params, "line");
300
+ const character = requireNumber(params, "character");
301
+ try {
302
+ const result = await withLspClient(filePath, async (client) => client.prepareRename(filePath, line, character), "prepareRename", { signal });
303
+ const details = { filePath, line, character, result };
304
+ return text(formatPrepareRenameResult(result), details);
305
+ }
306
+ catch (error) {
307
+ const message = handleMissingDependencyError(error);
308
+ if (message) {
309
+ return text(message, {
310
+ filePath,
311
+ line,
312
+ character,
313
+ result: null,
314
+ error: message,
315
+ errorKind: "missing_dependency",
316
+ });
317
+ }
318
+ throw error;
319
+ }
320
+ }
321
+ async function executeLspRename(params, signal) {
322
+ const filePath = requireString(params, "filePath");
323
+ const line = requireNumber(params, "line");
324
+ const character = requireNumber(params, "character");
325
+ const newName = requireString(params, "newName");
326
+ try {
327
+ const edit = await withLspClient(filePath, async (client) => client.rename(filePath, line, character, newName), "rename", { signal });
328
+ const apply = applyWorkspaceEdit(edit);
329
+ const details = { filePath, line, character, newName, apply, edit };
330
+ return text(formatApplyResult(apply), details, !apply.success);
331
+ }
332
+ catch (error) {
333
+ const message = handleMissingDependencyError(error);
334
+ if (message) {
335
+ return text(message, {
336
+ filePath,
337
+ line,
338
+ character,
339
+ newName,
340
+ apply: null,
341
+ edit: null,
342
+ error: message,
343
+ errorKind: "missing_dependency",
344
+ });
345
+ }
346
+ throw error;
347
+ }
348
+ }
349
+ export async function executeLspTool(name, params, signal) {
350
+ const tool = LSP_MCP_TOOLS.find((candidate) => matchesToolName(candidate, name));
351
+ if (!tool)
352
+ throw new Error(`Unknown LSP tool: ${name}`);
353
+ return tool.execute(params, signal);
354
+ }
355
+ function matchesToolName(tool, name) {
356
+ return tool.name === name || (tool.aliases?.includes(name) ?? false);
357
+ }
358
+ export function coerceToolArguments(value) {
359
+ return isRecord(value) ? value : {};
360
+ }
361
+ export const LSP_MCP_TOOLS = [
362
+ {
363
+ name: "status",
364
+ aliases: ["lsp_status"],
365
+ title: "LSP Status",
366
+ description: "List configured and active LSP servers without starting a new language server.",
367
+ inputSchema: objectSchema({}),
368
+ execute: executeLspStatus,
369
+ },
370
+ {
371
+ name: "diagnostics",
372
+ aliases: ["lsp_diagnostics"],
373
+ title: "LSP Diagnostics",
374
+ description: "Get errors, warnings, and hints for a source file or directory.",
375
+ inputSchema: objectSchema({
376
+ filePath: { type: "string", description: "File or directory path to check." },
377
+ severity: {
378
+ type: "string",
379
+ enum: ["error", "warning", "information", "hint", "all"],
380
+ description: "Severity filter. Defaults to all.",
381
+ },
382
+ }, ["filePath"]),
383
+ execute: executeLspDiagnostics,
384
+ },
385
+ {
386
+ name: "goto_definition",
387
+ aliases: ["lsp_goto_definition"],
388
+ title: "LSP Goto Definition",
389
+ description: "Find where a symbol is defined.",
390
+ inputSchema: objectSchema({
391
+ filePath: { type: "string", description: "Source file containing the symbol." },
392
+ line: { type: "number", description: "1-based line number." },
393
+ character: { type: "number", description: "0-based column." },
394
+ }, ["filePath", "line", "character"]),
395
+ execute: executeLspGotoDefinition,
396
+ },
397
+ {
398
+ name: "find_references",
399
+ aliases: ["lsp_find_references"],
400
+ title: "LSP Find References",
401
+ description: "Find references of a symbol across the workspace.",
402
+ inputSchema: objectSchema({
403
+ filePath: { type: "string", description: "Source file containing the symbol." },
404
+ line: { type: "number", description: "1-based line number." },
405
+ character: { type: "number", description: "0-based column." },
406
+ includeDeclaration: { type: "boolean", description: "Include the declaration. Defaults to true." },
407
+ }, ["filePath", "line", "character"]),
408
+ execute: executeLspFindReferences,
409
+ },
410
+ {
411
+ name: "symbols",
412
+ aliases: ["lsp_symbols"],
413
+ title: "LSP Symbols",
414
+ description: "List document symbols or search workspace symbols.",
415
+ inputSchema: objectSchema({
416
+ filePath: { type: "string", description: "File path used as LSP context." },
417
+ scope: {
418
+ type: "string",
419
+ enum: ["document", "workspace"],
420
+ description: "Use document for file outline or workspace for project-wide search.",
421
+ },
422
+ query: { type: "string", description: "Workspace symbol query." },
423
+ limit: { type: "number", description: "Maximum number of symbols to return." },
424
+ }, ["filePath", "scope"]),
425
+ execute: executeLspSymbols,
426
+ },
427
+ {
428
+ name: "prepare_rename",
429
+ aliases: ["lsp_prepare_rename"],
430
+ title: "LSP Prepare Rename",
431
+ description: "Check whether a symbol can be renamed at a position.",
432
+ inputSchema: objectSchema({
433
+ filePath: { type: "string", description: "Source file path." },
434
+ line: { type: "number", description: "1-based line number." },
435
+ character: { type: "number", description: "0-based column." },
436
+ }, ["filePath", "line", "character"]),
437
+ execute: executeLspPrepareRename,
438
+ },
439
+ {
440
+ name: "rename",
441
+ aliases: ["lsp_rename"],
442
+ title: "LSP Rename",
443
+ description: "Rename a symbol across the workspace and apply the returned workspace edit.",
444
+ inputSchema: objectSchema({
445
+ filePath: { type: "string", description: "Source file path." },
446
+ line: { type: "number", description: "1-based line number." },
447
+ character: { type: "number", description: "0-based column." },
448
+ newName: { type: "string", description: "New symbol name." },
449
+ }, ["filePath", "line", "character", "newName"]),
450
+ execute: executeLspRename,
451
+ },
452
+ ];
453
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}