diff --git a/release/app/package-lock.json b/release/app/package-lock.json deleted file mode 100644 index 8cc5f5f..0000000 --- a/release/app/package-lock.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "GodMode", - "version": "1.0.0-beta.4", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "GodMode", - "version": "1.0.0-beta.4", - "hasInstallScript": true, - "license": "MIT" - } - } -} diff --git a/release/app/package.json b/release/app/package.json deleted file mode 100644 index 604d573..0000000 --- a/release/app/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "GodMode", - "version": "1.0.0-beta.4", - "description": "A foundation for scalable desktop apps", - "license": "MIT", - "author": { - "name": "Electron React Boilerplate Maintainers", - "email": "electronreactboilerplate@gmail.com", - "url": "https://github.com/electron-react-boilerplate" - }, - "main": "./dist/main/main.js", - "scripts": { - "rebuild": "node -r ts-node/register ../../scripts/scripts/electron-rebuild.js", - "postinstall": "npm run rebuild && npm run link-modules", - "link-modules": "node -r ts-node/register ../../scripts/scripts/link-modules.ts" - }, - "dependencies": {} -} \ No newline at end of file diff --git a/src/providers/scite.js b/src/providers/scite.js new file mode 100644 index 0000000..eadf271 --- /dev/null +++ b/src/providers/scite.js @@ -0,0 +1,101 @@ +const Provider = require('./provider'); + +class SciteAssistant extends Provider { + static webviewId = 'webiewSciteAssistant'; + static fullName = 'Scite Assistant'; + static shortName = 'Scite'; + + static url = 'https://scite.ai/assistant'; + + static handleInput(input) { + try { + const fullName = this.fullName; + this.getWebview().executeJavaScript(`{ + var inputElement = document.querySelector('textarea[placeholder*="What do you need"]'); + if (!inputElement) { + console.error('inputElement for ${fullName} doesnt exist, have you logged in or are you on the right page?') + } else { + var nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, "value").set; + nativeTextAreaValueSetter.call(inputElement, \`${input}\`); + + var event = new Event('input', { bubbles: true}); + inputElement.dispatchEvent(event); + } + }`); + } catch (e) { + console.debug('Error in LeptonLlama.handleInput():', e); + } + } + + static codeForInputElement = `var inputElement = document.querySelector('textarea[placeholder*="Ask"]');`; + static codeForSetInputElementValue(prompt) { + return ` + var nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, "value").set; + nativeTextAreaValueSetter.call(inputElement, \`${prompt}\`); + var event = new Event('input', { bubbles: true}); + inputElement.dispatchEvent(event); + `; + } + static codeForClickingSubmit = ` + var buttons = Array.from(document.querySelectorAll('button.ant-btn-primary')); + var buttonsWithSvgPath = buttons.filter(button => button.querySelector('svg path')); + + var button = buttonsWithSvgPath[buttonsWithSvgPath.length - 1]; + + button.click(); + `; + static codeForExtractingResponse = `[...document.querySelectorAll('.ant-space.ant-space-horizontal .ant-typography pre')].slice(-1)[0]`; // dont append semicolon, we will append innerhtml etc + + static handleSubmit() { + try { + this.getWebview().executeJavaScript(`{ + var buttons = Array.from(document.querySelectorAll('button.ant-btn-primary')); + var buttonsWithSvgPath = buttons.filter(button => button.querySelector('svg path')); + + var button = buttonsWithSvgPath[buttonsWithSvgPath.length - 1]; + + button.click(); + } + `); + } catch (e) { + console.debug('Error in LeptonLlama.handleSubmit():', e); + } + } + + static handleCss() { + this.getWebview().addEventListener('dom-ready', () => { + // hide message below text input, sidebar, suggestions on new chat + // try { + // // setTimeout(() => { + // // this.getWebview().executeJavaScript(`{ + // // // Add Dark Mode + // // document.documentElement.classList.add('dark'); + // // }`); + // // }, 100); + // setTimeout(() => { + // this.getWebview().executeJavaScript(`{ + // // Dispatch the change event manually if there are any event listeners + // var event = new Event('change'); + // selectElement.dispatchEvent(event); + // }`); + // }, 1000); + // } catch (e) { + // console.debug('Error in LeptonLlama.handleCss():', e); + // } + setTimeout(() => { + // hide temperature/length settings + this.getWebview().insertCSS(` + div.ant-col.ant-col-24.css-11zb6yo.ant-col-sm-24.ant-col-md-7.ant-col-xl-5.ant-col-xxl-4.css-lqewvt { + display: none; + } + `); + }, 100); + }); + } + + static isEnabled() { + return window.electron.electronStore.get(`${this.webviewId}Enabled`, false); + } +} + +module.exports = SciteAssistant;