tweak: add experimental chatMaxRetries to config (#2116)

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
This commit is contained in:
Danilo Favato
2025-10-28 14:09:41 -03:00
committed by GitHub
parent eb398f1951
commit b66e7b6fce
3 changed files with 13 additions and 6 deletions

View File

@@ -586,6 +586,7 @@ export namespace Config {
.optional(),
})
.optional(),
chatMaxRetries: z.number().optional().describe("Number of retries for chat completions on failure"),
disable_paste_summary: z.boolean().optional(),
})
.optional(),

View File

@@ -16,6 +16,7 @@ import { Log } from "../util/log"
import { SessionLock } from "./lock"
import { ProviderTransform } from "@/provider/transform"
import { SessionRetry } from "./retry"
import { Config } from "@/config/config"
export namespace SessionCompaction {
const log = Log.create({ service: "session.compaction" })
@@ -258,12 +259,14 @@ export namespace SessionCompaction {
}
let stream = doStream()
const cfg = await Config.get()
const maxRetries = cfg.experimental?.chatMaxRetries ?? MAX_RETRIES
let result = await process(stream, {
count: 0,
max: MAX_RETRIES,
max: maxRetries,
})
if (result.shouldRetry) {
for (let retry = 1; retry < MAX_RETRIES; retry++) {
for (let retry = 1; retry < maxRetries; retry++) {
const lastRetryPart = result.parts.findLast((p) => p.type === "retry")
if (lastRetryPart) {
@@ -300,7 +303,7 @@ export namespace SessionCompaction {
stream = doStream()
result = await process(stream, {
count: retry,
max: MAX_RETRIES,
max: maxRetries,
})
if (!result.shouldRetry) {
break

View File

@@ -50,6 +50,7 @@ import { Command } from "../command"
import { $, fileURLToPath } from "bun"
import { ConfigMarkdown } from "../config/markdown"
import { SessionSummary } from "./summary"
import { Config } from "@/config/config"
export namespace SessionPrompt {
const log = Log.create({ service: "session.prompt" })
@@ -330,12 +331,14 @@ export namespace SessionPrompt {
})
let stream = doStream()
const cfg = await Config.get()
const maxRetries = cfg.experimental?.chatMaxRetries ?? MAX_RETRIES
let result = await processor.process(stream, {
count: 0,
max: MAX_RETRIES,
max: maxRetries,
})
if (result.shouldRetry) {
for (let retry = 1; retry < MAX_RETRIES; retry++) {
for (let retry = 1; retry < maxRetries; retry++) {
const lastRetryPart = result.parts.findLast((p) => p.type === "retry")
if (lastRetryPart) {
@@ -372,7 +375,7 @@ export namespace SessionPrompt {
stream = doStream()
result = await processor.process(stream, {
count: retry,
max: MAX_RETRIES,
max: maxRetries,
})
if (!result.shouldRetry) {
break