Skip to content

Commit

Permalink
Fixed up a new vercel ai provider (#117)
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanleomk authored Aug 14, 2023
1 parent 1df7ab6 commit fe6caa8
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 0 deletions.
1 change: 1 addition & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ const providers = {
Perplexity: require('./providers/perplexity'),
Phind: require('./providers/phind'),
PerplexityLlama: require('./providers/perplexity-llama.js'),
VercelAIChat: require('./providers/vercel'),
Poe: require('./providers/poe'),
HuggingChat: require('./providers/huggingchat'),
OobaBooga: require('./providers/oobabooga'),
Expand Down
1 change: 1 addition & 0 deletions interface.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ const providers = {
Perplexity: require('./providers/perplexity'),
Phind: require('./providers/phind'),
PerplexityLlama: require('./providers/perplexity-llama.js'),
VercelAIChat: require('./providers/vercel'),
HuggingChat: require('./providers/huggingchat'),
Poe: require('./providers/poe'),
OobaBooga: require('./providers/oobabooga'),
Expand Down
63 changes: 63 additions & 0 deletions providers/vercel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
const Store = require('electron-store');
const store = new Store();

const Provider = require('./provider');

class Vercel extends Provider {
static webviewId = 'webviewVercelAI';
static fullName = 'Vercel AI Chatbot';

static url = 'https://chat.vercel.ai/';

static handleInput(input) {
this.getWebview().executeJavaScript(`
var inputElement = document.querySelector('textarea[placeholder*="Send a message."]'); // can be "Ask anything" or "Ask follow-up"
var nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, "value").set;
nativeTextAreaValueSetter.call(inputElement, "${input}");
var event = new Event('input', { bubbles: true});
inputElement.dispatchEvent(event);
`);
}

static handleSubmit(){
this.getWebview().executeJavaScript(`
var buttons = Array.from(document.querySelectorAll('button[type="submit"]'));
var buttonsWithSrOnly = buttons.filter(button => {
var span = button.querySelector('span');
return span && span.textContent.trim() === 'Send message';
});
if (buttonsWithSrOnly.length == 1){
var button = buttonsWithSrOnly[0];
button.click();
}
`)

}
static handleCss() {
this.getWebview().addEventListener('dom-ready', () => {
// hide message below text input, sidebar, suggestions on new chat
setTimeout(() => {
this.getWebview().executeJavaScript(`
`);
}, 100);
// Hide the "Try asking" segment
setTimeout(() => {
this.getWebview().insertCSS(`
.mt-lg {
display: none;
}
`);
}, 100);
});
}

static isEnabled() {
return store.get(`${this.webviewId}Enabled`, true);
}
}

module.exports = Vercel;

0 comments on commit fe6caa8

Please sign in to comment.