Skip to content

Commit 802d87e

Browse files
committed
fix Poe AI "Clear Context" (#349)
1 parent 4f162d2 commit 802d87e

File tree

9 files changed

+39
-13
lines changed

9 files changed

+39
-13
lines changed

src/services/apis/azure-openai-api.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { isEmpty } from 'lodash-es'
1010
* @param {Session} session
1111
*/
1212
export async function generateAnswersWithAzureOpenaiApi(port, question, session) {
13-
const { controller, messageListener } = setAbortController(port)
13+
const { controller, messageListener, disconnectListener } = setAbortController(port)
1414
const config = await getUserConfig()
1515

1616
const prompt = getConversationPairs(
@@ -60,9 +60,11 @@ export async function generateAnswersWithAzureOpenaiApi(port, question, session)
6060
async onStart() {},
6161
async onEnd() {
6262
port.onMessage.removeListener(messageListener)
63+
port.onDisconnect.removeListener(disconnectListener)
6364
},
6465
async onError(resp) {
6566
port.onMessage.removeListener(messageListener)
67+
port.onDisconnect.removeListener(disconnectListener)
6668
if (resp instanceof Error) throw resp
6769
const error = await resp.json().catch(() => ({}))
6870
throw new Error(

src/services/apis/bard-web.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Bard from '../clients/bard'
88
* @param {string} cookies
99
*/
1010
export async function generateAnswersWithBardWebApi(port, question, session, cookies) {
11-
// const { controller, messageListener } = setAbortController(port)
11+
// const { controller, messageListener, disconnectListener } = setAbortController(port)
1212
const bot = new Bard(cookies)
1313

1414
// eslint-disable-next-line
@@ -18,9 +18,11 @@ export async function generateAnswersWithBardWebApi(port, question, session, coo
1818
pushRecord(session, question, answer)
1919
console.debug('conversation history', { content: session.conversationRecords })
2020
// port.onMessage.removeListener(messageListener)
21+
// port.onDisconnect.removeListener(disconnectListener)
2122
port.postMessage({ answer: answer, done: true, session: session })
2223
} catch (err) {
2324
// port.onMessage.removeListener(messageListener)
25+
// port.onDisconnect.removeListener(disconnectListener)
2426
throw err
2527
}
2628
}

src/services/apis/bing-web.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export async function generateAnswersWithBingWebApi(
1616
accessToken,
1717
sydneyMode = false,
1818
) {
19-
const { controller, messageListener } = setAbortController(port)
19+
const { controller, messageListener, disconnectListener } = setAbortController(port)
2020
const config = await getUserConfig()
2121
let modelMode
2222
if (session.modelName.includes('-')) modelMode = session.modelName.split('-')[1]
@@ -59,6 +59,7 @@ export async function generateAnswersWithBingWebApi(
5959
})
6060
.catch((err) => {
6161
port.onMessage.removeListener(messageListener)
62+
port.onDisconnect.removeListener(disconnectListener)
6263
throw err
6364
})
6465

@@ -87,5 +88,6 @@ export async function generateAnswersWithBingWebApi(
8788
pushRecord(session, question, answer)
8889
console.debug('conversation history', { content: session.conversationRecords })
8990
port.onMessage.removeListener(messageListener)
91+
port.onDisconnect.removeListener(disconnectListener)
9092
port.postMessage({ answer: answer, done: true, session: session })
9193
}

src/services/apis/chatgpt-web.mjs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,13 @@ export async function generateAnswersWithChatgptWebApi(port, question, session,
6060
session.parentMessageId = uuidv4()
6161
}
6262

63-
const { controller, messageListener } = setAbortController(port, null, () => {
63+
const { controller, messageListener, disconnectListener } = setAbortController(port, null, () => {
6464
if (session.autoClean) deleteConversation(accessToken, session.conversationId)
6565
})
6666

6767
const models = await getModels(accessToken).catch(() => {
6868
port.onMessage.removeListener(messageListener)
69+
port.onDisconnect.removeListener(disconnectListener)
6970
})
7071
console.debug('models', models)
7172
const config = await getUserConfig()
@@ -141,9 +142,11 @@ export async function generateAnswersWithChatgptWebApi(port, question, session,
141142
},
142143
async onEnd() {
143144
port.onMessage.removeListener(messageListener)
145+
port.onDisconnect.removeListener(disconnectListener)
144146
},
145147
async onError(resp) {
146148
port.onMessage.removeListener(messageListener)
149+
port.onDisconnect.removeListener(disconnectListener)
147150
if (resp instanceof Error) throw resp
148151
if (resp.status === 403) {
149152
throw new Error('CLOUDFLARE')

src/services/apis/custom-api.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { getCustomApiPromptBase, pushRecord, setAbortController } from './shared
1919
* @param {string} modelName
2020
*/
2121
export async function generateAnswersWithCustomApi(port, question, session, apiKey, modelName) {
22-
const { controller, messageListener } = setAbortController(port)
22+
const { controller, messageListener, disconnectListener } = setAbortController(port)
2323

2424
const config = await getUserConfig()
2525
const prompt = getConversationPairs(
@@ -73,9 +73,11 @@ export async function generateAnswersWithCustomApi(port, question, session, apiK
7373
async onStart() {},
7474
async onEnd() {
7575
port.onMessage.removeListener(messageListener)
76+
port.onDisconnect.removeListener(disconnectListener)
7677
},
7778
async onError(resp) {
7879
port.onMessage.removeListener(messageListener)
80+
port.onDisconnect.removeListener(disconnectListener)
7981
if (resp instanceof Error) throw resp
8082
const error = await resp.json().catch(() => ({}))
8183
throw new Error(!isEmpty(error) ? JSON.stringify(error) : `${resp.status} ${resp.statusText}`)

src/services/apis/openai-api.mjs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export async function generateAnswersWithGptCompletionApi(
2525
apiKey,
2626
modelName,
2727
) {
28-
const { controller, messageListener } = setAbortController(port)
28+
const { controller, messageListener, disconnectListener } = setAbortController(port)
2929

3030
const config = await getUserConfig()
3131
const prompt =
@@ -74,9 +74,11 @@ export async function generateAnswersWithGptCompletionApi(
7474
async onStart() {},
7575
async onEnd() {
7676
port.onMessage.removeListener(messageListener)
77+
port.onDisconnect.removeListener(disconnectListener)
7778
},
7879
async onError(resp) {
7980
port.onMessage.removeListener(messageListener)
81+
port.onDisconnect.removeListener(disconnectListener)
8082
if (resp instanceof Error) throw resp
8183
const error = await resp.json().catch(() => ({}))
8284
throw new Error(!isEmpty(error) ? JSON.stringify(error) : `${resp.status} ${resp.statusText}`)
@@ -92,7 +94,7 @@ export async function generateAnswersWithGptCompletionApi(
9294
* @param {string} modelName
9395
*/
9496
export async function generateAnswersWithChatgptApi(port, question, session, apiKey, modelName) {
95-
const { controller, messageListener } = setAbortController(port)
97+
const { controller, messageListener, disconnectListener } = setAbortController(port)
9698

9799
const config = await getUserConfig()
98100
const prompt = getConversationPairs(
@@ -143,9 +145,11 @@ export async function generateAnswersWithChatgptApi(port, question, session, api
143145
async onStart() {},
144146
async onEnd() {
145147
port.onMessage.removeListener(messageListener)
148+
port.onDisconnect.removeListener(disconnectListener)
146149
},
147150
async onError(resp) {
148151
port.onMessage.removeListener(messageListener)
152+
port.onDisconnect.removeListener(disconnectListener)
149153
if (resp instanceof Error) throw resp
150154
const error = await resp.json().catch(() => ({}))
151155
throw new Error(!isEmpty(error) ? JSON.stringify(error) : `${resp.status} ${resp.statusText}`)

src/services/apis/poe-web.mjs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,16 @@ import PoeAiClient from '../clients/poe/index.mjs'
99
*/
1010
export async function generateAnswersWithPoeWebApi(port, question, session, modelName) {
1111
const bot = new PoeAiClient(session.poe_chatId)
12-
const { messageListener } = setAbortController(port, () => {
13-
bot.breakMsg()
14-
bot.close()
15-
})
12+
const { messageListener, disconnectListener } = setAbortController(
13+
port,
14+
() => {
15+
bot.close()
16+
},
17+
() => {
18+
bot.breakMsg()
19+
bot.close()
20+
},
21+
)
1622

1723
let answer = ''
1824
await bot
@@ -29,12 +35,15 @@ export async function generateAnswersWithPoeWebApi(port, question, session, mode
2935
pushRecord(session, question, answer)
3036
console.debug('conversation history', { content: session.conversationRecords })
3137
port.onMessage.removeListener(messageListener)
38+
if (session.conversationRecords.length > 1)
39+
port.onDisconnect.removeListener(disconnectListener)
3240
port.postMessage({ answer: answer, done: true, session: session })
3341
bot.close()
3442
},
3543
)
3644
.catch((err) => {
3745
port.onMessage.removeListener(messageListener)
46+
port.onDisconnect.removeListener(disconnectListener)
3847
bot.close()
3948
throw err
4049
})

src/services/apis/shared.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export function setAbortController(port, onStop, onDisconnect) {
3636
}
3737
port.onDisconnect.addListener(disconnectListener)
3838

39-
return { controller, messageListener }
39+
return { controller, messageListener, disconnectListener }
4040
}
4141

4242
export function pushRecord(session, question, answer) {

src/services/apis/waylaidwanderer-api.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { isEmpty } from 'lodash-es'
99
* @param {Session} session
1010
*/
1111
export async function generateAnswersWithWaylaidwandererApi(port, question, session) {
12-
const { controller, messageListener } = setAbortController(port)
12+
const { controller, messageListener, disconnectListener } = setAbortController(port)
1313

1414
const config = await getUserConfig()
1515

@@ -65,9 +65,11 @@ export async function generateAnswersWithWaylaidwandererApi(port, question, sess
6565
async onStart() {},
6666
async onEnd() {
6767
port.onMessage.removeListener(messageListener)
68+
port.onDisconnect.removeListener(disconnectListener)
6869
},
6970
async onError(resp) {
7071
port.onMessage.removeListener(messageListener)
72+
port.onDisconnect.removeListener(disconnectListener)
7173
if (resp instanceof Error) throw resp
7274
const error = await resp.json().catch(() => ({}))
7375
throw new Error(!isEmpty(error) ? JSON.stringify(error) : `${resp.status} ${resp.statusText}`)

0 commit comments

Comments
 (0)