{"record":{"id":"4e617178c94314b1","repo":"MemPalace/mempalace","slug":"unknown-source-adapter-adapter-name-r-install-i","errorCode":null,"errorMessage":"unknown source adapter {adapter_name!r}; install its adapter package or check the adapter name with `mempalace mine --help`","messagePattern":"unknown source adapter (.+?); install its adapter package or check the adapter name with `mempalace mine --help`","errorType":"exception","errorClass":"UnknownSourceAdapterError","httpStatus":null,"severity":"error","filePath":"mempalace/cli.py","lineNumber":949,"sourceCode":"    miners.  Until those miners are migrated to first-party adapters, no-flag\n    and ``--mode`` calls must retain their established dispatch paths.\n    \"\"\"\n    from .knowledge_graph import KnowledgeGraph\n    from .palace import get_collection, mine_palace_lock\n    from .sources import (\n        DrawerRecord,\n        PalaceContext,\n        SourceRef,\n        SourceItemMetadata,\n        get_adapter,\n        resolve_adapter_for_source,\n    )\n\n    adapter_name = resolve_adapter_for_source(explicit=source_name)\n    try:\n        adapter = get_adapter(adapter_name)\n    except KeyError as exc:\n        raise UnknownSourceAdapterError(\n            f\"unknown source adapter {adapter_name!r}; install its adapter package or \"\n            \"check the adapter name with `mempalace mine --help`\"\n        ) from exc\n\n    if \"supports_incremental\" in adapter.capabilities:\n        raise UnsupportedSourceAdapterProtocolError(\n            f\"source adapter {adapter_name!r} requires incremental ingestion, which \"\n            \"mempalace mine does not support yet\"\n        )\n\n    # A dry run must never open a collection: backend opens can create or\n    # repair storage even when requested as read-only.  Non-dry runs hold one\n    # writer lease from handle creation through adapter iteration, including\n    # direct KG mutations by adapters.\n    lock = mine_palace_lock(palace_path) if not dry_run else contextlib.nullcontext()\n    with lock:\n        knowledge_graph = None\n        try:","sourceCodeStart":931,"sourceCodeEnd":967,"githubUrl":"https://github.com/MemPalace/mempalace/blob/06cb6987f02610784fefbad4b2bd5d026d164ba6/mempalace/cli.py#L931-L967","documentation":"Raised by `mempalace mine` in cli.py: the source adapter name resolved for your source is not registered by `get_adapter` (KeyError wrapped into this error). Adapters are plugins — an unknown name means the adapter package is not installed, was renamed, or the name was misspelled.","triggerScenarios":"Running `mempalace mine --source <name>` (or letting `resolve_adapter_for_source` infer from explicit=) where `<name>` is not in the adapter registry — e.g. `--source slack` when the Slack adapter package was never installed, or a typo like `--source gdrive` vs `--source googledrive`.","commonSituations":"New install missing optional adapter extras (`pip install mempalace[slack]` not run); adapter renamed across versions; CI environment with fewer extras than the developer's machine; the source auto-detection inferring a name with no installed adapter.","solutions":["Run `mempalace mine --help` and use the exact adapter name it lists.","Install the adapter's package/extra for your source (e.g. `uv sync --extra <adapter>` or `pip install mempalace[<adapter>]`).","If inference picked the wrong name, pass the adapter explicitly via the source flag instead of relying on auto-detection.","After upgrading mempalace, re-check the adapter list — names change between versions."],"exampleFix":"# before\nmempalace mine --source slack   # adapter package not installed / wrong name\n\n# after\nmempalace mine --help            # confirm exact adapter name\nuv sync --extra slack            # install the adapter\nmempalace mine --source slack","handlingStrategy":"validation","validationCode":"from mempalace.adapters import get_adapter  # registry\n\ndef adapter_available(name) -> bool:\n    try:\n        get_adapter(name)\n        return True\n    except KeyError:\n        return False","typeGuard":null,"tryCatchPattern":"try:\n    run_mine(source=\"slack\", ...)\nexcept UnknownSourceAdapterError as e:\n    raise SystemExit(f\"{e}. Run `mempalace mine --help` and install the adapter extra.\") from e","preventionTips":["Run `mempalace mine --help` first and copy the adapter name exactly.","Install adapter extras in the same environment that runs the CLI (check `uv sync --extra ...`).","Pin the mempalace version so adapter names don't shift under you."],"tags":["cli","mine","adapter","plugin","installation"],"backgroundTag":null,"analyzedSha":"06cb6987f02610784fefbad4b2bd5d026d164ba6","analyzedAt":"2026-08-15T03:03:36.213Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}