From eda8bc373e4de9e4b91fccf9434a02e5200e03d8 Mon Sep 17 00:00:00 2001 From: lucaronin Date: Fri, 6 Mar 2026 07:17:10 +0100 Subject: [PATCH] fix: align ws-bridge.js imports with simplified vault.js API MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After ai-agent-full-shell simplified vault.js to read-only, ws-bridge.js still imported removed functions (createNote, appendToNote, editNoteFrontmatter, deleteNote, linkNotes, listNotes, readNote) — breaking CI bundle step. Fix: - Import only getNote, searchNotes, vaultContext from vault.js - Update open_note/read_note handlers to use getNote - Remove write tool handlers — agent uses native bash/write tools - Remove orphaned buildFrontmatter helper --- mcp-server/ws-bridge.js | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/mcp-server/ws-bridge.js b/mcp-server/ws-bridge.js index 2e6ce311..0b5a5a7d 100644 --- a/mcp-server/ws-bridge.js +++ b/mcp-server/ws-bridge.js @@ -22,8 +22,7 @@ import { createServer } from 'node:http' import { WebSocketServer } from 'ws' import { - readNote, createNote, searchNotes, appendToNote, - editNoteFrontmatter, deleteNote, linkNotes, listNotes, vaultContext, + getNote, searchNotes, vaultContext, } from './vault.js' const VAULT_PATH = process.env.VAULT_PATH || process.env.HOME + '/Laputa' @@ -41,22 +40,11 @@ function broadcastUiAction(action, payload) { } } -function buildFrontmatter(args) { - const fm = {} - if (args.is_a) fm.is_a = args.is_a - return fm -} const TOOL_HANDLERS = { - open_note: (args) => readNote(VAULT_PATH, args.path).then(text => ({ content: text })), - read_note: (args) => readNote(VAULT_PATH, args.path).then(text => ({ content: text })), - create_note: (args) => createNote(VAULT_PATH, args.path, args.title, buildFrontmatter(args)).then(r => { broadcastUiAction('vault_changed', { path: args.path }); return r }), + open_note: (args) => getNote(VAULT_PATH, args.path).then(note => ({ content: note.content, frontmatter: note.frontmatter })), + read_note: (args) => getNote(VAULT_PATH, args.path).then(note => ({ content: note.content, frontmatter: note.frontmatter })), search_notes: (args) => searchNotes(VAULT_PATH, args.query, args.limit), - append_to_note: (args) => appendToNote(VAULT_PATH, args.path, args.text).then(() => { broadcastUiAction('vault_changed', { path: args.path }); return { ok: true } }), - edit_note_frontmatter: (args) => editNoteFrontmatter(VAULT_PATH, args.path, args.patch).then(r => { broadcastUiAction('vault_changed', { path: args.path }); return r }), - delete_note: (args) => deleteNote(VAULT_PATH, args.path).then(() => { broadcastUiAction('vault_changed', { path: args.path }); return { ok: true } }), - link_notes: (args) => linkNotes(VAULT_PATH, args.source_path, args.property, args.target_title).then(r => { broadcastUiAction('vault_changed', { path: args.source_path }); return r }), - list_notes: (args) => listNotes(VAULT_PATH, args.type_filter, args.sort), vault_context: () => vaultContext(VAULT_PATH), ui_open_note: (args) => { broadcastUiAction('open_note', { path: args.path }); return { ok: true } }, ui_open_tab: (args) => { broadcastUiAction('open_tab', { path: args.path }); return { ok: true } },