Commit 8e0f32b4 authored by Travis Fischer's avatar Travis Fischer

feat: add timeout support to browser sendMessage

parent 0d09ca96
import delay from 'delay'
import html2md from 'html-to-md'
import pTimeout from 'p-timeout'
import type { Browser, HTTPRequest, HTTPResponse, Page } from 'puppeteer'
import { getBrowser, getOpenAIAuth } from './openai-auth'
......@@ -275,7 +276,14 @@ export class ChatGPTAPIBrowser {
}
}
async sendMessage(message: string): Promise<string> {
async sendMessage(
message: string,
opts: {
timeoutMs?: number
} = {}
): Promise<string> {
const { timeoutMs } = opts
const inputBox = await this._getInputBox()
if (!inputBox) throw new Error('not signed in')
......@@ -294,6 +302,8 @@ export class ChatGPTAPIBrowser {
}
}
const responseP = new Promise<string>(async (resolve, reject) => {
try {
do {
await delay(1000)
......@@ -303,10 +313,21 @@ export class ChatGPTAPIBrowser {
newLastMessage &&
lastMessage?.toLowerCase() !== newLastMessage?.toLowerCase()
) {
await delay(5000)
return newLastMessage
return resolve(newLastMessage)
}
} while (true)
} catch (err) {
return reject(err)
}
})
if (timeoutMs) {
return pTimeout(responseP, {
milliseconds: timeoutMs
})
} else {
return responseP
}
}
async resetThread() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment