fix: require providers for new CLI agents

This commit is contained in:
Mohamed Boudra
2026-04-24 21:40:59 +07:00
parent 2b37276577
commit d3f9655e33
4 changed files with 66 additions and 18 deletions
@@ -0,0 +1,38 @@
import { describe, expect, test } from "vitest";
import { resolveProviderAndModel } from "./provider-model.js";
describe("resolveProviderAndModel", () => {
test("requires an explicit provider when no default is supplied", () => {
expect(() => resolveProviderAndModel({})).toThrow(
expect.objectContaining({
code: "MISSING_PROVIDER",
message: "Provider is required",
}),
);
});
test("uses an explicit default provider when supplied by a scoped caller", () => {
expect(resolveProviderAndModel({ defaultProvider: "claude" })).toEqual({
provider: "claude",
model: undefined,
});
});
test("parses provider/model shorthand", () => {
expect(resolveProviderAndModel({ provider: "codex/gpt-5.4" })).toEqual({
provider: "codex",
model: "gpt-5.4",
});
});
test("rejects conflicting model values", () => {
expect(() =>
resolveProviderAndModel({ provider: "codex/gpt-5.4", model: "gpt-5.4-mini" }),
).toThrow(
expect.objectContaining({
code: "CONFLICTING_MODEL_OPTIONS",
}),
);
});
});
+11 -1
View File
@@ -14,9 +14,19 @@ export interface ResolvedProviderModel {
export function resolveProviderAndModel(
options: ResolveProviderAndModelOptions,
): ResolvedProviderModel {
const providerInput = options.provider?.trim() || options.defaultProvider || "claude";
const providerInput = options.provider?.trim() || options.defaultProvider;
const modelInput = options.model?.trim();
if (!providerInput) {
const error: CommandError = {
code: "MISSING_PROVIDER",
message: "Provider is required",
details:
"Pass --provider <provider> or --provider <provider>/<model>. Use `paseo provider ls` to see providers and `paseo provider models <provider>` to see models.",
};
throw error;
}
if (options.model !== undefined && !modelInput) {
const error: CommandError = {
code: "INVALID_MODEL",