fix(providers): allow two minutes for catalog refreshes

Provider catalog discovery can exceed one minute during cold startup. Increase the default deadline while preserving explicit config and environment overrides.
This commit is contained in:
Mohamed Boudra
2026-08-13 18:52:16 +02:00
parent 0f27230746
commit a4b92768d9
3 changed files with 36 additions and 2 deletions
+1 -1
View File
@@ -17,7 +17,7 @@ Provider definitions live under `agents.providers` in config.json:
Provider IDs must be lowercase alphanumeric with hyphens (`/^[a-z][a-z0-9-]*$/`).
Each provider catalog refresh waits up to 60 seconds. If a provider loads many plugins or a large
Each provider catalog refresh waits up to 2 minutes. If a provider loads many plugins or a large
agent catalog during startup, raise the limit in milliseconds:
```json
@@ -442,6 +442,40 @@ describe("ProviderSnapshotManager public surface", () => {
}
});
test("defaults provider refreshes to a two-minute deadline", async () => {
vi.useFakeTimers();
const manager = new ProviderSnapshotManager({
logger: createTestLogger(),
providerOverrides: {
claude: { enabled: false },
copilot: { enabled: false },
opencode: { enabled: false },
pi: { enabled: false },
},
extraClients: {
codex: createExtraClient("codex", { isAvailable: waitUntilAborted }),
},
});
try {
const entryPromise = manager.getProvider({
cwd: "/tmp/project",
provider: "codex",
wait: true,
});
await vi.advanceTimersByTimeAsync(120_000);
await expect(entryPromise).resolves.toMatchObject({
status: "error",
error: "Timed out refreshing Codex after 120000ms; pending: availability",
});
} finally {
manager.destroy();
vi.useRealTimers();
}
});
test("one refresh timeout covers availability and catalog discovery", async () => {
vi.useFakeTimers();
const manager = new ProviderSnapshotManager({
@@ -45,7 +45,7 @@ import {
validateAgentConfigurationAgainstProvider,
} from "./agent-configuration-validator.js";
const DEFAULT_REFRESH_TIMEOUT_MS = 60_000;
const DEFAULT_REFRESH_TIMEOUT_MS = 120_000;
const MAX_REFRESH_TIMEOUT_MS = 2_147_483_647;
const DEFAULT_DIAGNOSTIC_TIMEOUT_MS = 120_000;
const REFRESH_TIMEOUT_ENV_VAR = "PASEO_PROVIDER_REFRESH_TIMEOUT_MS";