




























@@ -257,10 +257,29 @@ function isRetryableAcpBindWarmupText(texts: string[]): boolean {
257257combined.includes("acp runtime backend is currently unavailable") ||
258258combined.includes("try again in a moment") ||
259259combined.includes("acp runtime backend is not configured") ||
260-combined.includes("acp dispatch is disabled")
260+combined.includes("acp dispatch is disabled") ||
261+combined.includes("startup timed out before initialize completed")
261262);
262263}
263264265+describe("isRetryableAcpBindWarmupText", () => {
266+it.each([
267+{
268+texts: ["ACP runtime backend is currently unavailable; try again in a moment."],
269+expected: true,
270+},
271+{
272+texts: [
273+"ACP error (ACP_SESSION_INIT_FAILED): Gemini CLI ACP startup timed out before initialize completed.",
274+],
275+expected: true,
276+},
277+{ texts: ["ACP error (ACP_SESSION_INIT_FAILED): ACP metadata is missing."], expected: false },
278+])("returns $expected for $texts", ({ texts, expected }) => {
279+expect(isRetryableAcpBindWarmupText(texts)).toBe(expected);
280+});
281+});
282+264283function formatAssistantTextPreview(texts: string[], maxChars = 600): string {
265284const combined = texts.join("\n\n").trim();
266285if (!combined) {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。