relaycode
Version:
A developer assistant that automates applying code changes from LLMs.
2 lines • 3.86 kB
JavaScript
;var g=require('clipboardy'),logger=require('../utils/logger'),o=require('fs'),c=require('path'),child_process=require('child_process'),shell=require('../utils/shell'),constants=require('../utils/constants'),url=require('url');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var g__default=/*#__PURE__*/_interopDefault(g);var o__default=/*#__PURE__*/_interopDefault(o);var c__default=/*#__PURE__*/_interopDefault(c);const W=c__default.default.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('clipboard.cjs', document.baseURI).href)))),D=c__default.default.join(W,".."),d=c__default.default.join(D,constants.FALLBACKS_DIR,constants.WINDOWS_DIR,constants.WINDOWS_CLIPBOARD_EXE_NAME),R=async()=>{if(process.platform==="linux"){logger.logger.debug("Checking for clipboard dependencies on Linux (xsel or xclip)...");try{const{exitCode:r}=await shell.executeShellCommand("command -v xsel >/dev/null 2>&1 || command -v xclip >/dev/null 2>&1");r!==0?(logger.logger.error("-----------------------------------------------------------------------"),logger.logger.error("ACTION REQUIRED: Clipboard support on Linux requires `xsel` or `xclip`."),logger.logger.error("Please install one of these tools to enable clipboard monitoring."),logger.logger.error("Example on Debian/Ubuntu: sudo apt install xsel"),logger.logger.error("Example on Fedora/CentOS: sudo dnf install xsel"),logger.logger.error("Example on Arch Linux: sudo pacman -S xsel"),logger.logger.error("-----------------------------------------------------------------------")):logger.logger.debug("Linux clipboard dependency check passed.");}catch(r){logger.logger.warn(`An error occurred while checking for clipboard dependencies: ${logger.getErrorMessage(r)}`);}}},m=c__default.default.join(process.cwd(),constants.FALLBACKS_DIR,constants.WINDOWS_DIR),a=c__default.default.join(m,constants.WINDOWS_CLIPBOARD_EXE_NAME),I=()=>()=>new Promise(r=>{try{if(!o__default.default.existsSync(a))return logger.logger.error("Windows clipboard executable not found. Cannot watch clipboard on Windows."),r("");const t=`"${a}" --paste`;child_process.exec(t,{encoding:"utf8"},(p,u,l)=>{p?(logger.logger.debug(`Windows clipboard read command failed (this is often normal): ${l.trim()}`),r("")):r(u);});}catch(t){logger.logger.error(`A synchronous error occurred while setting up clipboard reader: ${logger.getErrorMessage(t)}`),r("");}}),A=()=>{if(process.platform==="win32")try{if(o__default.default.existsSync(m)||o__default.default.mkdirSync(m,{recursive:!0}),o__default.default.existsSync(d)){let r=!0;o__default.default.existsSync(a)&&o__default.default.statSync(d).size===o__default.default.statSync(a).size&&(r=!1),r&&(o__default.default.copyFileSync(d,a),logger.logger.info("Copied Windows clipboard executable to local fallbacks directory"));}else logger.logger.error(`Windows clipboard executable not found in package at: ${d}`);}catch(r){logger.logger.warn("Error ensuring clipboard executable: "+logger.getErrorMessage(r));}},j=(r,t,p)=>{A(),R();const u=process.platform==="win32"?I():p||g__default.default.read;let l="",i=null;const b=async()=>{try{const n=await u();n&&n!==l&&(l=n,t(n));}catch(n){logger.logger.warn("Could not read from clipboard: "+logger.getErrorMessage(n));}},y=()=>{i||(logger.logger.info(`Starting clipboard watcher (polling every ${r}ms)`),b(),i=setInterval(b,r));},h=()=>{i&&(clearInterval(i),i=null,logger.logger.info("Clipboard watcher stopped."));};return y(),{stop:h}};exports.createClipboardWatcher=j;//# sourceMappingURL=clipboard.cjs.map
//# sourceMappingURL=clipboard.cjs.map