-
Notifications
You must be signed in to change notification settings - Fork 156
[FEATURE] URL-based marketplace work Extension #692
Copy link
Copy link
Open
Labels
area/docs-sitedocs/src/content (Starlight), README, doc generation.docs/src/content (Starlight), README, doc generation.area/marketplacemarketplace.json schema, federation, authoring suite, source parity.marketplace.json schema, federation, authoring suite, source parity.enhancementDeprecated: use type/feature. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use type/feature. Kept for issue history; will be removed in milestone 0.10.0.marketplaceDeprecated: use area/marketplace. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use area/marketplace. Kept for issue history; will be removed in milestone 0.10.0.needs-triageDeprecated: use status/needs-triage. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use status/needs-triage. Kept for issue history; will be removed in milestone 0.10.0.status/needs-designDirection approved, design discussion required before code.Direction approved, design discussion required before code.status/triagedInitial agentic triage complete; pending maintainer ratification (silence = approval).Initial agentic triage complete; pending maintainer ratification (silence = approval).theme/portabilityOne manifest, every target. Multi-target deploy, marketplace, packaging, install.One manifest, every target. Multi-target deploy, marketplace, packaging, install.type/architectureDesign-impacting change (new module, pattern, contract).Design-impacting change (new module, pattern, contract).
Metadata
Metadata
Assignees
Labels
area/docs-sitedocs/src/content (Starlight), README, doc generation.docs/src/content (Starlight), README, doc generation.area/marketplacemarketplace.json schema, federation, authoring suite, source parity.marketplace.json schema, federation, authoring suite, source parity.enhancementDeprecated: use type/feature. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use type/feature. Kept for issue history; will be removed in milestone 0.10.0.marketplaceDeprecated: use area/marketplace. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use area/marketplace. Kept for issue history; will be removed in milestone 0.10.0.needs-triageDeprecated: use status/needs-triage. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use status/needs-triage. Kept for issue history; will be removed in milestone 0.10.0.status/needs-designDirection approved, design discussion required before code.Direction approved, design discussion required before code.status/triagedInitial agentic triage complete; pending maintainer ratification (silence = approval).Initial agentic triage complete; pending maintainer ratification (silence = approval).theme/portabilityOne manifest, every target. Multi-target deploy, marketplace, packaging, install.One manifest, every target. Multi-target deploy, marketplace, packaging, install.type/architectureDesign-impacting change (new module, pattern, contract).Design-impacting change (new module, pattern, contract).
Type
Projects
Status
Todo
Overview
This issue tracks the future extension of the URL-based marketplace work (#676) to support installing full APM packages directly from a URL — without requiring the package to be hosted on GitHub or registered in a marketplace.
Motivation
Issue #676 teaches APM to discover skills from a URL-based index. The natural next step is to allow installing any full APM package (
apm.yml-bearing repository) directly from a URL:Capabilities Required
apm install <url>resolved the same way asapm install owner/repoapm.ymlfrom a URL endpoint or inside an archive.tar.gz/.zipwith safety checks (path traversal, decompression bombs) — overlaps Step 7 of #676apm install https://…#sha256:<hex>syntax for reproducible installssource_url+source_digestfields inLockedDependency— overlaps Step 5 of #676apm.ymlresolved recursively, same as GitHub installs~/.apm/auth.json, analogous to GHE token supportDesign Constraints for #676
The following decisions in #676 must remain compatible with this direction:
source_typediscriminator onMarketplaceSource— the"github"/"url"pattern should be extended (not replaced). Avoid hardcoding a two-value enum; leave it open for"url-package"or similar._fetch_url_direct()inclient.py— keep it generic (plain HTTPS GET, no Agent Skills assumptions). Future callers can reuse it for package manifest and archive fetches. Do not embed Agent Skills index logic inside this function._detect_index_format()heuristic — the detection pattern (inspect a key, dispatch to a parser) is the right abstraction for detectingapm.ymlvs Agent Skills vs legacymarketplace.json. Keep it extensible.LockedDependencyfields added in Step 5 (marketplace_index_url,marketplace_index_digest) — name and design these to generalise to any URL-sourced install. Considersource_url/source_digestas more neutral names.Archive support in Step 7 — implement extraction as a standalone utility (
apm_cli/utils/archive.py) decoupled from the marketplace layer, so the package installer can reuse it without importing marketplace internals.Resolver changes in Step 8 — design the resolver interface so that a future
resolve_url_package()is a parallel code path, not a special-case fork inside existing functions.Security Considerations
_fetch_url_direct), not just at the command layer.REQUESTS_CA_BUNDLEenv var — no APM-specific--ca-bundleflag needed.Related
addsource parity with the Anthropic spec #676 — feat: support URL-based marketplace registration for Agent Skills discovery indexes