fix: remove eslint-disable directive in tools/index.ts
This commit is contained in:
@@ -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}` }],
|
||||||
|
|||||||
Reference in New Issue
Block a user