Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions amplifier_app_cli/commands/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -213,17 +213,28 @@ def run(
)
providers_list = config_data.get("providers", [])

# Find the target provider
# Find the target provider by name first, then by module
target_idx = None
for i, entry in enumerate(providers_list):
if isinstance(entry, dict) and entry.get("module") == provider_module:
if isinstance(entry, dict) and entry.get("name") == provider:
target_idx = i
provider_module = entry.get("module", provider_module)
break
if target_idx is None:
for i, entry in enumerate(providers_list):
if isinstance(entry, dict) and entry.get("module") == provider_module:
target_idx = i
break

if target_idx is None:
def _provider_label(p: dict) -> str:
name = p.get("name")
module = p.get("module", "?").replace("provider-", "")
return f"{name} ({module})" if name else module

console.print(
f"[red]Error:[/red] Provider '{provider}' not configured\n"
f"Available providers: {', '.join(p.get('module', '?').replace('provider-', '') for p in providers_list if isinstance(p, dict))}\n"
f"Available providers: {', '.join(_provider_label(p) for p in providers_list if isinstance(p, dict))}\n"
f"Run 'amplifier provider use --help' for configuration options"
)
sys.exit(1)
Expand Down
8 changes: 6 additions & 2 deletions amplifier_app_cli/effective_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,12 @@ def get_effective_config_summary(
provider_config = selected_provider.get("config", {})
model = provider_config.get("default_model", "default")

# Try to get friendly provider name
provider_name = _get_provider_display_name(provider_module)
# Use explicit 'name' from settings if set, otherwise derive from module ID
instance_name = selected_provider.get("name")
if instance_name:
provider_name = instance_name.replace("-", " ").title()
else:
provider_name = _get_provider_display_name(provider_module)
else:
provider_module = "none"
provider_name = "None"
Expand Down
21 changes: 15 additions & 6 deletions amplifier_app_cli/session_spawner.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,11 +157,15 @@ def _apply_provider_override(
target_idx = None
for i, p in enumerate(providers):
module_id = p.get("module", "")
# Match: "anthropic", "provider-anthropic", or full module ID
if provider_id and provider_id in (
module_id,
module_id.replace("provider-", ""),
f"provider-{provider_id}",
entry_name = p.get("name", "")
# Match: config name, module shorthand, full module ID
if provider_id and (
provider_id == entry_name
or provider_id in (
module_id,
module_id.replace("provider-", ""),
f"provider-{provider_id}",
)
):
target_idx = i
break
Expand All @@ -178,10 +182,15 @@ def _apply_provider_override(
target_idx = i

if target_idx is None:
available = []
for p in providers:
name = p.get("name")
mod = p.get("module", "?").replace("provider-", "")
available.append(name if name and name != mod else mod)
logger.warning(
"Provider '%s' not found in config. Available: %s",
provider_id,
", ".join(p.get("module", "?") for p in providers),
", ".join(available),
)
return config

Expand Down