feat: v0.7.0 — registre de providers LLM : am providers list/show/add/remove/default, settings.providers + default_provider (closes #88)

This commit is contained in:
2026-08-19 15:32:45 -04:00
parent 1948e3bc79
commit d38cd7352f
18 changed files with 823 additions and 13 deletions
+45
View File
@@ -192,6 +192,8 @@ pub enum Command {
/// Manage remote catalogs: update the official one, add external ones
#[command(subcommand)]
Catalog(CatalogCmd),
/// Manage the LLM provider registry: base URLs, models, default provider
Providers(ProviderArgs),
/// Suggest agents matching a query, boosted by real usage (issue #61)
Suggest {
/// Free-form request ("un agent pour du Python")
@@ -634,6 +636,49 @@ pub enum CatalogCmd {
List,
}
/// LLM provider registry subcommands (issue #88). The subcommand is
/// optional: `am providers` alone lists the registry.
#[derive(Args, Debug, Clone, Default)]
pub struct ProviderArgs {
#[command(subcommand)]
pub sub: Option<ProvidersCmd>,
}
#[derive(Subcommand, Debug, Clone)]
pub enum ProvidersCmd {
/// List the registered providers (the default one is starred)
List,
/// Show one provider in detail (base URL, models, default model)
Show {
/// Provider name
name: String,
},
/// Register a provider, or update an existing one
Add {
/// Provider name (lowercase slug, e.g. openai)
name: String,
/// Base URL of the provider API
#[arg(long, value_name = "URL", required = true)]
base_url: String,
/// Model used by default for this provider
#[arg(long, value_name = "MODEL")]
model: Option<String>,
/// Comma-separated model list
#[arg(long, value_name = "MODELS")]
models: Option<String>,
},
/// Remove a provider from the registry
Remove {
/// Provider name
name: String,
},
/// Set the default provider
Default {
/// Provider name
name: String,
},
}
/// Environment profile subcommands (issue #40).
#[derive(Subcommand, Debug, Clone)]
pub enum ProfileCmd {