{"record":{"id":"fe45cd30f6f3e782","repo":"langchain-ai/deepagents","slug":"marketplace-url-redact-url-credentials-url-con","errorCode":null,"errorMessage":"Marketplace URL {_redact_url_credentials(url)} contains plugins with unsupported remote sources: [{names}]","messagePattern":"Marketplace URL (.+?) contains plugins with unsupported remote sources: \\[(.+?)\\]","errorType":"exception","errorClass":"MarketplaceError","httpStatus":null,"severity":"error","filePath":"libs/code/deepagents_code/plugins/marketplace.py","lineNumber":469,"sourceCode":"    local_plugins = [\n        plugin.name\n        for plugin in marketplace.plugins\n        if _source_path(plugin.source) is not None\n    ]\n    if not local_plugins:\n        unsupported = [\n            plugin.name\n            for plugin in marketplace.plugins\n            if _plugin_repository_source(plugin) is None\n        ]\n        if not unsupported:\n            return\n        names = \", \".join(sorted(unsupported))\n        msg = (\n            f\"Marketplace URL {_redact_url_credentials(url)} contains plugins \"\n            f\"with unsupported remote sources: [{names}]\"\n        )\n        raise MarketplaceError(msg)\n    names = \", \".join(sorted(local_plugins))\n    msg = (\n        f\"Marketplace URL {_redact_url_credentials(url)} only downloads the \"\n        f\"catalog JSON, but plugins [{names}] use local relative sources. \"\n        \"Use a git repository or local directory for this marketplace.\"\n    )\n    raise MarketplaceError(msg)\n\n\ndef load_marketplace_location(path: Path) -> PluginMarketplace:\n    \"\"\"Load a marketplace from either a cached directory or JSON file.\n\n    Args:\n        path: Directory or marketplace JSON path.\n\n    Returns:\n        Parsed marketplace.\n    \"\"\"","sourceCodeStart":451,"sourceCodeEnd":487,"githubUrl":"https://github.com/langchain-ai/deepagents/blob/a1af029e6e73cb17c36bff823d227747b28e91e1/libs/code/deepagents_code/plugins/marketplace.py#L451-L487","documentation":"URL-based marketplaces only download the catalog JSON file, so every plugin in the catalog must be fetchable remotely. If any plugin in a URL marketplace uses a source type that requires the marketplace's sibling filesystem tree (a remote-unsupported source), the library rejects the whole marketplace and lists the offending plugin names.","triggerScenarios":"materialize_marketplace_source with a URL source calls _reject_url_marketplace_with_local_plugins, which scans the catalog and finds plugins whose sources cannot be resolved from a single downloaded JSON file.","commonSituations":"A catalog designed for a git repository clone being served as a bare JSON URL; plugins referencing sibling directories or repo-relative paths; mixing source kinds in one marketplace.","solutions":["Publish the marketplace as a git repository and register it with a git/github source instead of a URL","Convert the offending plugins to remotely fetchable sources (e.g. their own git URLs)","Remove the unsupported plugins from the URL catalog"],"exampleFix":"// before\nadd_marketplace_source(\"https://example.com/catalog.json\")  # contains plugin with local-relative source\n// after\nadd_marketplace_source(\"git\", RepositoryMarketplaceSource(source_type=\"git\", value=\"https://github.com/org/catalog.git\"))","handlingStrategy":"validation","validationCode":"unsupported = {\n    p.name for p in catalog[\"plugins\"]\n    if p.get(\"source\", {}).get(\"type\") not in (\"git\", \"github\", \"url\")\n}\nif unsupported:\n    raise ValueError(f\"plugins need a repo marketplace: {sorted(unsupported)}\")","typeGuard":null,"tryCatchPattern":"try:\n    marketplace, path = materialize_marketplace_source(source)\nexcept MarketplaceError as exc:\n    if \"unsupported remote sources\" in str(exc):\n        log.error(\"Convert listed plugins to remote sources or host marketplace as a git repo\")\n    raise","preventionTips":["Audit catalog plugin sources before serving it as a bare URL","Publish marketplaces as git repositories when plugins have repo-relative sources","Keep plugin sources remotely fetchable in URL-hosted catalogs"],"tags":["marketplace","plugins","configuration","validation"],"backgroundTag":"unsupported-remote-plugin-source","analyzedSha":"a1af029e6e73cb17c36bff823d227747b28e91e1","analyzedAt":"2026-08-29T11:43:24.718Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}