langchain-ai/deepagents · error · MarketplaceError
Git marketplace source is missing repository metadata
Error message
Git marketplace source is missing repository metadata
What it means
Analogous to the GitHub case: a marketplace source with source_type == "git" must be a RepositoryMarketplaceSource containing the repository URL/identifier. Without that metadata the library cannot clone the marketplace repository, so it raises this error.
Source
Thrown at libs/code/deepagents_code/plugins/marketplace.py:433
path = Path(source.value).expanduser().resolve()
return _load_marketplace_file(path), path
if source.source_type == "url":
path = _download_marketplace(source.value)
marketplace = _load_marketplace_file(path)
_reject_url_marketplace_with_local_plugins(marketplace, source.value)
return marketplace, path
if source.source_type == "github":
if not isinstance(source, RepositoryMarketplaceSource):
msg = "GitHub marketplace source is missing repository metadata"
raise MarketplaceError(msg)
root = _materialize_marketplace_repository(
source, f"https://github.com/{source.value}.git"
)
return load_marketplace(root), root
if source.source_type == "git":
if not isinstance(source, RepositoryMarketplaceSource):
msg = "Git marketplace source is missing repository metadata"
raise MarketplaceError(msg)
root = _materialize_marketplace_repository(source, source.value)
return load_marketplace(root), root
msg = f"Unsupported marketplace source type: {source.source_type}"
raise MarketplaceError(msg)
def _reject_url_marketplace_with_local_plugins(
marketplace: PluginMarketplace, url: str
) -> None:
"""Reject URL marketplaces whose plugins need a sibling filesystem tree.
Direct marketplace JSON URLs only cache the catalog file. Relative plugin
sources such as `./plugins/foo` cannot be resolved from that cache alone.
Raises:
MarketplaceError: If any plugin entry uses a local relative source.
"""
local_plugins = [View on GitHub (pinned to a1af029e6e)
Solutions
- Use RepositoryMarketplaceSource for git-type sources with the repo URL as value
- Fix the config parser/deserializer so git sources map to RepositoryMarketplaceSource
- Validate the marketplace config before passing it into materialize_marketplace_source
Example fix
// before source = MarketplaceSource(source_type="git", value="https://github.com/org/plugins.git") // after source = RepositoryMarketplaceSource(source_type="git", value="https://github.com/org/plugins.git")
Defensive patterns
Strategy: type-guard
Validate before calling
if source.source_type == "git" and not isinstance(source, RepositoryMarketplaceSource):
raise ValueError("git source must be RepositoryMarketplaceSource") Type guard
def is_repository_source(source: MarketplaceSource) -> bool:
return isinstance(source, RepositoryMarketplaceSource) Try / catch
try:
marketplace, path = materialize_marketplace_source(source)
except MarketplaceError as exc:
if "Git marketplace source is missing repository metadata" in str(exc):
source = RepositoryMarketplaceSource(source_type="git", value=source.value)
marketplace, path = materialize_marketplace_source(source)
else:
raise Prevention
- Construct git sources as RepositoryMarketplaceSource with the repo URL
- Validate configs before passing them to materialize_marketplace_source
- Write config parsers that emit the correct source subclass per type
When it happens
Trigger: materialize_marketplace_source receives a source with source_type == "git" that is not a RepositoryMarketplaceSource instance.
Common situations: Config parsing produced the base source class instead of the repository subclass; programmatic construction missing repository metadata; migrating configs between formats or versions.
Related errors
- GitHub marketplace source is missing repository metadata
- Marketplace {marketplace_name!r} is not configured
- Unsupported marketplace source type: {source.source_type}
- Marketplace URL {_redact_url_credentials(url)} contains plug
- Marketplace URL {_redact_url_credentials(url)} only download
AI-assisted analysis of langchain-ai/deepagents@a1af029e6e (2026-08-29).
Data as JSON: /api/errors/87bd907c71c33bbf.
Report an issue: GitHub.