UNPKG

user-feedback-mcp

Version:

mcp server to request user feedback via an UI instead of normal chat

2 lines (1 loc) 2.29 kB
"use strict";var w=Object.create;var E=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var R=Object.getPrototypeOf,U=Object.prototype.hasOwnProperty;var L=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of I(r))!U.call(e,n)&&n!==t&&E(e,n,{get:()=>r[n],enumerable:!(s=T(r,n))||s.enumerable});return e};var i=(e,r,t)=>(t=e!=null?w(R(e)):{},L(r||!e||!e.__esModule?E(t,"default",{value:e,enumerable:!0}):t,e));var o=require("electron"),d=i(require("path")),h=i(require("url")),m=require("fs");var u=i(require("path")),b=i(require("os")),F="User Feedback",g=600,k=400,N=u.join(b.tmpdir(),"user-feedback-mcp");var _="USER_FEEDBACK_PROMPT",x="USER_FEEDBACK_FILE";var c=i(require("fs-extra"));async function l(e,r,t=!1,s){let n={feedback:r,timestamp:Date.now(),cancelled:t};s&&s.length>0&&(n.images=s),await c.writeJson(e,n,{spaces:2})}var a=null,p=!1,D=process.env[_]||"Test",f=process.env[x]||"/Users/jan/projects/private/user-feedback-mcp/apps/cli/pack/feedback.json";D||(console.error("Prompt is required"),o.app.exit(1));f||(console.error("Feedback file path is required"),o.app.exit(1));function W(){a=new o.BrowserWindow({width:g,height:k,title:F,webPreferences:{nodeIntegration:!1,contextIsolation:!0,preload:d.join(__dirname,"preload.js")}});let e,r=d.join(__dirname,"renderer/index.html");if((0,m.existsSync)(r))e=r;else{let t=d.join(__dirname,"../renderer/index.html");(0,m.existsSync)(t)?e=t:e=d.join(__dirname,"../renderer/index.html")}console.log(`Loading HTML from: ${e}`),a.loadURL(h.format({pathname:e,protocol:"file:",slashes:!0})),a.on("close",async t=>{if(a&&!a.isDestroyed()&&!p)try{await l(f,"",!0),console.log("User cancelled feedback by closing the window")}catch(s){console.error("Failed to write cancelled status:",s)}}),a.on("closed",()=>{a=null,p=!1})}o.app.on("ready",()=>{W()});o.app.on("window-all-closed",()=>{o.app.quit()});o.ipcMain.handle("get-prompt",()=>D);o.ipcMain.handle("submit-feedback",async(e,r,t)=>{try{return p=!0,await l(f,r,!1,t),a&&a.close(),{success:!0}}catch(s){return p=!1,console.error("Failed to write feedback:",s),{success:!1,error:s.message}}});process.on("uncaughtException",e=>{console.error("Uncaught exception:",e),a&&a.webContents.send("error",e.message),o.app.exit(1)});