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 { createNoteTools } from './note-tools-factory';
import { createVaultTools } from './vault-tools-factory'; import { createVaultTools } from './vault-tools-factory';
import { NotificationManager } from '../ui/notifications'; import { NotificationManager } from '../ui/notifications';
import { YAMLValue } from '../utils/frontmatter-utils';
export class ToolRegistry { export class ToolRegistry {
private noteTools: NoteTools; 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: Record<string, unknown>): Promise<CallToolResult> {
async callTool(name: string, args: any): Promise<CallToolResult> {
const startTime = Date.now(); const startTime = Date.now();
// Show tool call notification // Show tool call notification
@@ -487,124 +487,160 @@ export class ToolRegistry {
let result: CallToolResult; let result: CallToolResult;
switch (name) { switch (name) {
case "read_note": case "read_note": {
result = await this.noteTools.readNote(args.path, { const a = args as { path: string; withFrontmatter?: boolean; withContent?: boolean; parseFrontmatter?: boolean };
withFrontmatter: args.withFrontmatter, result = await this.noteTools.readNote(a.path, {
withContent: args.withContent, withFrontmatter: a.withFrontmatter,
parseFrontmatter: args.parseFrontmatter withContent: a.withContent,
parseFrontmatter: a.parseFrontmatter
}); });
break; 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( result = await this.noteTools.createNote(
args.path, a.path,
args.content, a.content,
args.createParents ?? false, a.createParents ?? false,
args.onConflict ?? 'error', a.onConflict ?? 'error',
args.validateLinks ?? true a.validateLinks ?? true
); );
break; break;
case "update_note": }
case "update_note": {
const a = args as { path: string; content: string; validateLinks?: boolean };
result = await this.noteTools.updateNote( result = await this.noteTools.updateNote(
args.path, a.path,
args.content, a.content,
args.validateLinks ?? true a.validateLinks ?? true
); );
break; 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( result = await this.noteTools.updateFrontmatter(
args.path, a.path,
args.patch, a.patch,
args.remove ?? [], a.remove ?? [],
args.ifMatch a.ifMatch
); );
break; 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( result = await this.noteTools.updateSections(
args.path, a.path,
args.edits, a.edits,
args.ifMatch, a.ifMatch,
args.validateLinks ?? true a.validateLinks ?? true
); );
break; break;
case "rename_file": }
case "rename_file": {
const a = args as { path: string; newPath: string; updateLinks?: boolean; ifMatch?: string };
result = await this.noteTools.renameFile( result = await this.noteTools.renameFile(
args.path, a.path,
args.newPath, a.newPath,
args.updateLinks ?? true, a.updateLinks ?? true,
args.ifMatch a.ifMatch
); );
break; break;
case "delete_note": }
case "delete_note": {
const a = args as { path: string; soft?: boolean; dryRun?: boolean; ifMatch?: string };
result = await this.noteTools.deleteNote( result = await this.noteTools.deleteNote(
args.path, a.path,
args.soft ?? true, a.soft ?? true,
args.dryRun ?? false, a.dryRun ?? false,
args.ifMatch a.ifMatch
); );
break; 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({ result = await this.vaultTools.search({
query: args.query, query: a.query,
isRegex: args.isRegex, isRegex: a.isRegex,
caseSensitive: args.caseSensitive, caseSensitive: a.caseSensitive,
includes: args.includes, includes: a.includes,
excludes: args.excludes, excludes: a.excludes,
folder: args.folder, folder: a.folder,
returnSnippets: args.returnSnippets, returnSnippets: a.returnSnippets,
snippetLength: args.snippetLength, snippetLength: a.snippetLength,
maxResults: args.maxResults maxResults: a.maxResults
}); });
break; 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; break;
}
case "get_vault_info": case "get_vault_info":
result = await this.vaultTools.getVaultInfo(); result = await this.vaultTools.getVaultInfo();
break; 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({ result = await this.vaultTools.list({
path: args.path, path: a.path,
recursive: args.recursive, recursive: a.recursive,
includes: args.includes, includes: a.includes,
excludes: args.excludes, excludes: a.excludes,
only: args.only, only: a.only,
limit: args.limit, limit: a.limit,
cursor: args.cursor, cursor: a.cursor,
withFrontmatterSummary: args.withFrontmatterSummary, withFrontmatterSummary: a.withFrontmatterSummary,
includeWordCount: args.includeWordCount includeWordCount: a.includeWordCount
}); });
break; 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; 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; break;
case "read_excalidraw": }
result = await this.noteTools.readExcalidraw(args.path, { case "read_excalidraw": {
includeCompressed: args.includeCompressed, const a = args as { path: string; includeCompressed?: boolean; includePreview?: boolean };
includePreview: args.includePreview result = await this.noteTools.readExcalidraw(a.path, {
includeCompressed: a.includeCompressed,
includePreview: a.includePreview
}); });
break; 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; 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; 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; 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; break;
case "backlinks": }
case "backlinks": {
const a = args as { path: string; includeUnlinked?: boolean; includeSnippets?: boolean };
result = await this.vaultTools.getBacklinks( result = await this.vaultTools.getBacklinks(
args.path, a.path,
args.includeUnlinked ?? false, a.includeUnlinked ?? false,
args.includeSnippets ?? true a.includeSnippets ?? true
); );
break; break;
}
default: default:
result = { result = {
content: [{ type: "text", text: `Unknown tool: ${name}` }], content: [{ type: "text", text: `Unknown tool: ${name}` }],