fix: remove eslint-disable directive in tools/index.ts

This commit is contained in:
2025-12-16 13:43:21 -05:00
parent 9c1c11df5a
commit e1e05e82ae

View File

@@ -5,6 +5,7 @@ import { VaultTools } from './vault-tools';
import { createNoteTools } from './note-tools-factory';
import { createVaultTools } from './vault-tools-factory';
import { NotificationManager } from '../ui/notifications';
import { YAMLValue } from '../utils/frontmatter-utils';
export class ToolRegistry {
private noteTools: NoteTools;
@@ -474,8 +475,7 @@ export class ToolRegistry {
];
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Tool arguments come from JSON-RPC and require runtime validation
async callTool(name: string, args: any): Promise<CallToolResult> {
async callTool(name: string, args: Record<string, unknown>): Promise<CallToolResult> {
const startTime = Date.now();
// Show tool call notification
@@ -487,124 +487,160 @@ export class ToolRegistry {
let result: CallToolResult;
switch (name) {
case "read_note":
result = await this.noteTools.readNote(args.path, {
withFrontmatter: args.withFrontmatter,
withContent: args.withContent,
parseFrontmatter: args.parseFrontmatter
case "read_note": {
const a = args as { path: string; withFrontmatter?: boolean; withContent?: boolean; parseFrontmatter?: boolean };
result = await this.noteTools.readNote(a.path, {
withFrontmatter: a.withFrontmatter,
withContent: a.withContent,
parseFrontmatter: a.parseFrontmatter
});
break;
case "create_note":
}
case "create_note": {
const a = args as { path: string; content: string; createParents?: boolean; onConflict?: 'error' | 'overwrite' | 'rename'; validateLinks?: boolean };
result = await this.noteTools.createNote(
args.path,
args.content,
args.createParents ?? false,
args.onConflict ?? 'error',
args.validateLinks ?? true
a.path,
a.content,
a.createParents ?? false,
a.onConflict ?? 'error',
a.validateLinks ?? true
);
break;
case "update_note":
}
case "update_note": {
const a = args as { path: string; content: string; validateLinks?: boolean };
result = await this.noteTools.updateNote(
args.path,
args.content,
args.validateLinks ?? true
a.path,
a.content,
a.validateLinks ?? true
);
break;
case "update_frontmatter":
}
case "update_frontmatter": {
const a = args as { path: string; patch?: Record<string, YAMLValue>; remove?: string[]; ifMatch?: string };
result = await this.noteTools.updateFrontmatter(
args.path,
args.patch,
args.remove ?? [],
args.ifMatch
a.path,
a.patch,
a.remove ?? [],
a.ifMatch
);
break;
case "update_sections":
}
case "update_sections": {
const a = args as { path: string; edits: Array<{ startLine: number; endLine: number; content: string }>; ifMatch?: string; validateLinks?: boolean };
result = await this.noteTools.updateSections(
args.path,
args.edits,
args.ifMatch,
args.validateLinks ?? true
a.path,
a.edits,
a.ifMatch,
a.validateLinks ?? true
);
break;
case "rename_file":
}
case "rename_file": {
const a = args as { path: string; newPath: string; updateLinks?: boolean; ifMatch?: string };
result = await this.noteTools.renameFile(
args.path,
args.newPath,
args.updateLinks ?? true,
args.ifMatch
a.path,
a.newPath,
a.updateLinks ?? true,
a.ifMatch
);
break;
case "delete_note":
}
case "delete_note": {
const a = args as { path: string; soft?: boolean; dryRun?: boolean; ifMatch?: string };
result = await this.noteTools.deleteNote(
args.path,
args.soft ?? true,
args.dryRun ?? false,
args.ifMatch
a.path,
a.soft ?? true,
a.dryRun ?? false,
a.ifMatch
);
break;
case "search":
}
case "search": {
const a = args as { query: string; isRegex?: boolean; caseSensitive?: boolean; includes?: string[]; excludes?: string[]; folder?: string; returnSnippets?: boolean; snippetLength?: number; maxResults?: number };
result = await this.vaultTools.search({
query: args.query,
isRegex: args.isRegex,
caseSensitive: args.caseSensitive,
includes: args.includes,
excludes: args.excludes,
folder: args.folder,
returnSnippets: args.returnSnippets,
snippetLength: args.snippetLength,
maxResults: args.maxResults
query: a.query,
isRegex: a.isRegex,
caseSensitive: a.caseSensitive,
includes: a.includes,
excludes: a.excludes,
folder: a.folder,
returnSnippets: a.returnSnippets,
snippetLength: a.snippetLength,
maxResults: a.maxResults
});
break;
case "search_waypoints":
result = await this.vaultTools.searchWaypoints(args.folder);
}
case "search_waypoints": {
const a = args as { folder?: string };
result = await this.vaultTools.searchWaypoints(a.folder);
break;
}
case "get_vault_info":
result = await this.vaultTools.getVaultInfo();
break;
case "list":
case "list": {
const a = args as { path?: string; recursive?: boolean; includes?: string[]; excludes?: string[]; only?: 'files' | 'directories' | 'any'; limit?: number; cursor?: string; withFrontmatterSummary?: boolean; includeWordCount?: boolean };
result = await this.vaultTools.list({
path: args.path,
recursive: args.recursive,
includes: args.includes,
excludes: args.excludes,
only: args.only,
limit: args.limit,
cursor: args.cursor,
withFrontmatterSummary: args.withFrontmatterSummary,
includeWordCount: args.includeWordCount
path: a.path,
recursive: a.recursive,
includes: a.includes,
excludes: a.excludes,
only: a.only,
limit: a.limit,
cursor: a.cursor,
withFrontmatterSummary: a.withFrontmatterSummary,
includeWordCount: a.includeWordCount
});
break;
case "stat":
result = await this.vaultTools.stat(args.path, args.includeWordCount);
}
case "stat": {
const a = args as { path: string; includeWordCount?: boolean };
result = await this.vaultTools.stat(a.path, a.includeWordCount);
break;
case "exists":
result = await this.vaultTools.exists(args.path);
}
case "exists": {
const a = args as { path: string };
result = await this.vaultTools.exists(a.path);
break;
case "read_excalidraw":
result = await this.noteTools.readExcalidraw(args.path, {
includeCompressed: args.includeCompressed,
includePreview: args.includePreview
}
case "read_excalidraw": {
const a = args as { path: string; includeCompressed?: boolean; includePreview?: boolean };
result = await this.noteTools.readExcalidraw(a.path, {
includeCompressed: a.includeCompressed,
includePreview: a.includePreview
});
break;
case "get_folder_waypoint":
result = await this.vaultTools.getFolderWaypoint(args.path);
}
case "get_folder_waypoint": {
const a = args as { path: string };
result = await this.vaultTools.getFolderWaypoint(a.path);
break;
case "is_folder_note":
result = await this.vaultTools.isFolderNote(args.path);
}
case "is_folder_note": {
const a = args as { path: string };
result = await this.vaultTools.isFolderNote(a.path);
break;
case "validate_wikilinks":
result = await this.vaultTools.validateWikilinks(args.path);
}
case "validate_wikilinks": {
const a = args as { path: string };
result = await this.vaultTools.validateWikilinks(a.path);
break;
case "resolve_wikilink":
result = await this.vaultTools.resolveWikilink(args.sourcePath, args.linkText);
}
case "resolve_wikilink": {
const a = args as { sourcePath: string; linkText: string };
result = await this.vaultTools.resolveWikilink(a.sourcePath, a.linkText);
break;
case "backlinks":
}
case "backlinks": {
const a = args as { path: string; includeUnlinked?: boolean; includeSnippets?: boolean };
result = await this.vaultTools.getBacklinks(
args.path,
args.includeUnlinked ?? false,
args.includeSnippets ?? true
a.path,
a.includeUnlinked ?? false,
a.includeSnippets ?? true
);
break;
}
default:
result = {
content: [{ type: "text", text: `Unknown tool: ${name}` }],