{"record":{"id":"50ac333ca6952ea9","repo":"affaan-m/ECC","slug":"no-provider-registered-for-type-provider-type","errorCode":null,"errorMessage":"No provider registered for type: {provider_type}","messagePattern":"No provider registered for type: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/llm/providers/resolver.py","lineNumber":73,"sourceCode":"    if env_provider:\n        return _strip_env_value(env_provider).lower()\n\n    saved_config = _read_saved_llm_config()\n    return saved_config.get(\"LLM_PROVIDER\", \"claude\").lower()\n\n\ndef get_provider(provider_type: ProviderType | str | None = None, **kwargs: str) -> LLMProvider:\n    provider_type = _resolve_provider_type(provider_type)\n\n    if isinstance(provider_type, str):\n        try:\n            provider_type = ProviderType(provider_type)\n        except ValueError:\n            raise ValueError(f\"Unknown provider type: {provider_type}. Valid types: {[p.value for p in ProviderType]}\")\n\n    provider_cls = _PROVIDER_MAP.get(provider_type)\n    if not provider_cls:\n        raise ValueError(f\"No provider registered for type: {provider_type}\")\n\n    return provider_cls(**kwargs)\n\n\ndef register_provider(provider_type: ProviderType, provider_cls: type[LLMProvider]) -> None:\n    _PROVIDER_MAP[provider_type] = provider_cls\n","sourceCodeStart":55,"sourceCodeEnd":80,"githubUrl":"https://github.com/affaan-m/ECC/blob/8321021c54d670126ce3b2969d5deb880b4b0c2a/src/llm/providers/resolver.py#L55-L80","documentation":"After resolving the provider type, get_provider() looks the class up in _PROVIDER_MAP. If no class is registered for that ProviderType it raises ValueError 'No provider registered for type: ...'. This means the enum value is valid but no implementation was registered in the map.","triggerScenarios":"Calling get_provider(ProviderType.X) where X is a valid enum member whose class was never registered in _PROVIDER_MAP (e.g. a new enum value added without a register_provider call, or provider module not imported).","commonSituations":"Adding a new ProviderType member but forgetting to register its class; forgetting to import the providers module that performs registrations at import time; plugin/optional provider not installed.","solutions":["Import the providers module that registers implementations before calling get_provider","Call register_provider(ProviderType.X, MyProviderClass) for custom providers","Verify _PROVIDER_MAP contents / whether an optional provider package is installed","If you added a new enum member, wire its registration in the provider registry"],"exampleFix":"// before\nresolver = get_provider(ProviderType.MISTRAL)  # nothing registered\n// after\nimport src.llm.providers.mistral  # performs register_provider at import\nresolver = get_provider(ProviderType.MISTRAL)","handlingStrategy":"try-catch","validationCode":"from src.llm.providers.resolver import _PROVIDER_MAP\nassert provider_type in _PROVIDER_MAP, f\"No implementation registered for {provider_type}\"","typeGuard":null,"tryCatchPattern":"try:\n    provider = get_provider(provider_type)\nexcept ValueError as e:\n    if \"No provider registered\" in str(e):\n        import src.llm.providers  # trigger registrations, then retry\n        provider = get_provider(provider_type)\n    else:\n        raise","preventionTips":["Always import the providers package (which registers classes) before resolving","Register every new ProviderType member in the registry","Add a startup smoke test resolving all enum values","Fail fast with a clear message listing registered providers"],"tags":["resolver","registry","configuration"],"backgroundTag":"entity-not-found","analyzedSha":"8321021c54d670126ce3b2969d5deb880b4b0c2a","analyzedAt":"2026-09-16T10:08:13.343Z","contentChangedAt":"2026-09-16T10:08:13.343Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}