From 09e07f276be2258a9fc4447cd7de1e5022b3d7ad Mon Sep 17 00:00:00 2001 From: hangwin Date: Thu, 9 Oct 2025 11:06:23 +0000 Subject: [PATCH] feat(extension/options): add Userscripts Manager UI and tool-call bridge Register options page via manifest (wxt.config.ts). Add options page (index.html, main.ts, App.vue). Support create/list/toggle/delete/export userscripts. Bridge UI to tools: handle 'call_tool' in background. Lint/typecheck/build passed. --- .../entrypoints/background/native-host.ts | 10 + .../entrypoints/options/App.vue | 387 ++++++++++++++++++ .../entrypoints/options/index.html | 12 + .../entrypoints/options/main.ts | 4 + app/chrome-extension/wxt.config.ts | 4 + 5 files changed, 417 insertions(+) create mode 100644 app/chrome-extension/entrypoints/options/App.vue create mode 100644 app/chrome-extension/entrypoints/options/index.html create mode 100644 app/chrome-extension/entrypoints/options/main.ts diff --git a/app/chrome-extension/entrypoints/background/native-host.ts b/app/chrome-extension/entrypoints/background/native-host.ts index 72a9df3..41696ff 100644 --- a/app/chrome-extension/entrypoints/background/native-host.ts +++ b/app/chrome-extension/entrypoints/background/native-host.ts @@ -180,6 +180,16 @@ export const initNativeHostListener = () => { chrome.runtime.onStartup.addListener(connectNativeHost); chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => { + // Allow UI to call tools directly + if (message && message.type === 'call_tool' && message.name) { + handleCallTool({ name: message.name, args: message.args }) + .then((res) => sendResponse({ success: true, result: res })) + .catch((err) => + sendResponse({ success: false, error: err instanceof Error ? err.message : String(err) }), + ); + return true; + } + if ( message === NativeMessageType.CONNECT_NATIVE || message.type === NativeMessageType.CONNECT_NATIVE diff --git a/app/chrome-extension/entrypoints/options/App.vue b/app/chrome-extension/entrypoints/options/App.vue new file mode 100644 index 0000000..0a2f0f1 --- /dev/null +++ b/app/chrome-extension/entrypoints/options/App.vue @@ -0,0 +1,387 @@ +