fix(palace): wire palace MCP tools into register-note-tools registry
This commit is contained in:
parent
97662d1dc0
commit
1ae35a7e21
@ -29,26 +29,39 @@ const { executableToolsMock, toolNames } = vi.hoisted(() => ({
|
||||
vi.mock('./note-tools.js', () => ({
|
||||
NotesExecutableMcpTools: executableToolsMock,
|
||||
}));
|
||||
vi.mock('./palace-tools.js', () => ({
|
||||
PalaceMcpToolDefinitions: [
|
||||
{
|
||||
name: 'notes.mempalace.search',
|
||||
description: 'Search palace',
|
||||
requiredRole: 'viewer' as const,
|
||||
inputSchema: { safeParse: vi.fn() },
|
||||
execute: vi.fn(async () => []),
|
||||
readOnly: true,
|
||||
},
|
||||
],
|
||||
}));
|
||||
|
||||
import { getNotesMcpToolsForRegistration, registerNotesMcpTools } from './register-note-tools.js';
|
||||
|
||||
describe('register note tools adapter', () => {
|
||||
it('returns a registration-friendly tool list', () => {
|
||||
it('returns a registration-friendly tool list including palace tools', () => {
|
||||
const tools = getNotesMcpToolsForRegistration();
|
||||
|
||||
expect(tools).toHaveLength(2);
|
||||
expect(tools).toHaveLength(3);
|
||||
expect(tools.map(tool => tool.name)).toEqual([
|
||||
toolNames.list,
|
||||
toolNames.createDraft,
|
||||
'notes.mempalace.search',
|
||||
]);
|
||||
});
|
||||
|
||||
it('registers every executable tool through the provided callback', () => {
|
||||
it('registers every executable tool (notes + palace) through the provided callback', () => {
|
||||
const registerTool = vi.fn();
|
||||
|
||||
registerNotesMcpTools(registerTool);
|
||||
|
||||
expect(registerTool).toHaveBeenCalledTimes(2);
|
||||
expect(registerTool).toHaveBeenCalledTimes(3);
|
||||
expect(registerTool).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
expect.objectContaining({ name: toolNames.list, requiredRole: 'viewer' })
|
||||
@ -57,5 +70,9 @@ describe('register note tools adapter', () => {
|
||||
2,
|
||||
expect.objectContaining({ name: toolNames.createDraft, requiredRole: 'admin' })
|
||||
);
|
||||
expect(registerTool).toHaveBeenNthCalledWith(
|
||||
3,
|
||||
expect.objectContaining({ name: 'notes.mempalace.search', requiredRole: 'viewer' })
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import type { ZodTypeAny } from 'zod';
|
||||
import { NotesExecutableMcpTools } from './note-tools.js';
|
||||
import { PalaceMcpToolDefinitions } from './palace-tools.js';
|
||||
|
||||
export interface RegisterableMcpTool<TInput = unknown> {
|
||||
name: string;
|
||||
@ -12,7 +13,7 @@ export interface RegisterableMcpTool<TInput = unknown> {
|
||||
export type RegisterToolFn = (tool: RegisterableMcpTool) => void;
|
||||
|
||||
export function registerNotesMcpTools(registerTool: RegisterToolFn): void {
|
||||
for (const tool of NotesExecutableMcpTools) {
|
||||
for (const tool of [...NotesExecutableMcpTools, ...PalaceMcpToolDefinitions]) {
|
||||
registerTool({
|
||||
name: tool.name,
|
||||
description: tool.description,
|
||||
@ -24,7 +25,7 @@ export function registerNotesMcpTools(registerTool: RegisterToolFn): void {
|
||||
}
|
||||
|
||||
export function getNotesMcpToolsForRegistration(): RegisterableMcpTool[] {
|
||||
return NotesExecutableMcpTools.map(tool => ({
|
||||
return [...NotesExecutableMcpTools, ...PalaceMcpToolDefinitions].map(tool => ({
|
||||
name: tool.name,
|
||||
description: tool.description,
|
||||
requiredRole: tool.requiredRole,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user