fix: wire pollingTimeoutSec from config to TelegramClient
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+4
-1
@@ -17,6 +17,7 @@ export interface TelegramBridgeOptions {
|
|||||||
provider?: string
|
provider?: string
|
||||||
model?: string
|
model?: string
|
||||||
maxMessageLength?: number
|
maxMessageLength?: number
|
||||||
|
pollingTimeoutSec?: number
|
||||||
cwd?: string
|
cwd?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,7 +64,9 @@ export class TelegramBridge {
|
|||||||
this.token = options.token
|
this.token = options.token
|
||||||
this.allowedUserIds = options.allowedUserIds
|
this.allowedUserIds = options.allowedUserIds
|
||||||
this.allowAllUsers = options.allowAllUsers
|
this.allowAllUsers = options.allowAllUsers
|
||||||
this.client = options.client ?? new TelegramClient(options.token)
|
this.client = options.client ?? new TelegramClient(options.token, {
|
||||||
|
pollingTimeoutSec: options.pollingTimeoutSec ?? 30,
|
||||||
|
})
|
||||||
this.sleep = options.sleep ?? defaultSleep
|
this.sleep = options.sleep ?? defaultSleep
|
||||||
this.provider = options.provider ?? 'deepseek-official'
|
this.provider = options.provider ?? 'deepseek-official'
|
||||||
this.model = options.model ?? 'deepseek-v4-flash'
|
this.model = options.model ?? 'deepseek-v4-flash'
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ export function apply(ctx: Context, config: TelegramChannelConfig): void {
|
|||||||
provider: config.provider ?? 'deepseek-official',
|
provider: config.provider ?? 'deepseek-official',
|
||||||
model: config.model ?? 'deepseek-v4-flash',
|
model: config.model ?? 'deepseek-v4-flash',
|
||||||
maxMessageLength: config.maxMessageLength ?? 4096,
|
maxMessageLength: config.maxMessageLength ?? 4096,
|
||||||
|
pollingTimeoutSec: config.pollingTimeoutSec ?? 30,
|
||||||
cwd: config.cwd ?? process.cwd(),
|
cwd: config.cwd ?? process.cwd(),
|
||||||
})
|
})
|
||||||
ctx.effect(() => {
|
ctx.effect(() => {
|
||||||
|
|||||||
@@ -315,3 +315,32 @@ test('stop disposes all chat handles', async () => {
|
|||||||
await bridge.stop()
|
await bridge.stop()
|
||||||
assert.equal(track.disposeCount, 2)
|
assert.equal(track.disposeCount, 2)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('default client uses pollingTimeoutSec from bridge options', async () => {
|
||||||
|
const calls: Array<{ body: unknown }> = []
|
||||||
|
const originalFetch = globalThis.fetch
|
||||||
|
globalThis.fetch = async (_input, init) => {
|
||||||
|
calls.push({ body: JSON.parse(String(init?.body)) })
|
||||||
|
return new Response(JSON.stringify({ ok: true, result: [] }), { status: 200 })
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const bridge = new TelegramBridge(bridgeCtx(fakeAgents({
|
||||||
|
createCount: 0,
|
||||||
|
disposeCount: 0,
|
||||||
|
sessionIds: [],
|
||||||
|
followups: [],
|
||||||
|
})) as never, {
|
||||||
|
token: 'SECRET-TOKEN',
|
||||||
|
allowedUserIds: [1],
|
||||||
|
allowAllUsers: false,
|
||||||
|
pollingTimeoutSec: 15,
|
||||||
|
sleep: async () => {},
|
||||||
|
})
|
||||||
|
bridge.start()
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 80))
|
||||||
|
await bridge.stop()
|
||||||
|
assert.ok(calls.some((call) => (call.body as { timeout?: number }).timeout === 15))
|
||||||
|
} finally {
|
||||||
|
globalThis.fetch = originalFetch
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user