Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .apm/instructions/tests.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,8 @@ URL string is the same code shape as a security-critical sanitizer check, and
the analyzer cannot tell them apart. Treating every URL assertion uniformly
through `urlparse` keeps CI green AND reinforces the security pattern that
production code must follow (see
`src/apm_cli/install/mcp_registry.py::_redact_url_credentials` and
`src/apm_cli/install/mcp_registry.py::_is_local_or_metadata_host`).
`src/apm_cli/install/mcp/registry.py::_redact_url_credentials` and
`src/apm_cli/install/mcp/registry.py::_is_local_or_metadata_host`).

## Other rules

Expand Down
4 changes: 2 additions & 2 deletions .github/instructions/tests.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,8 @@ URL string is the same code shape as a security-critical sanitizer check, and
the analyzer cannot tell them apart. Treating every URL assertion uniformly
through `urlparse` keeps CI green AND reinforces the security pattern that
production code must follow (see
`src/apm_cli/install/mcp_registry.py::_redact_url_credentials` and
`src/apm_cli/install/mcp_registry.py::_is_local_or_metadata_host`).
`src/apm_cli/install/mcp/registry.py::_redact_url_credentials` and
`src/apm_cli/install/mcp/registry.py::_is_local_or_metadata_host`).

## Other rules

Expand Down
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- Marketplace `url:` sources now require `https://github.com/` or `http://github.com/` URLs; GHES, GitLab, and other non-GitHub hosts are no longer resolved. (#951)
- Grouped the seven `apm_cli/install/mcp_*.py` helper modules into an `apm_cli/install/mcp/` subpackage and stripped the redundant `mcp_` prefix from each filename, aligning with the unprefixed-noun naming convention used by the rest of `install/`. Pure refactor; behaviour and public API unchanged. (#951)
- `apm marketplace init` and `apm init --marketplace` next-step hints now point at `apm pack` (was `apm marketplace build`). (#722)
- **Manifest contract: invalid `target:` values now raise a parse error.** Previously, an unknown token (or a CSV string like `target: opencode,claude,copilot,agents` instead of the YAML list `target: [opencode, claude, copilot, agents]`) was silently ignored, leaving `apm install` and `apm compile` to exit 0 while deploying nothing. The shared parser used by `--target` now also validates `apm.yml`'s `target:`, so the same input resolves the same way at every entry point. **Migration:** three previously-silent inputs now fail loud -- (1) unknown tokens (`target: bogus` -> fix the typo), (2) empty values (`target: ""`, `target: []` -> remove the line if you meant auto-detect), (3) `all` mixed with other targets (`target: [all, claude]` -> use `all` alone). Omitting `target:` entirely still triggers auto-detection. (#820)
- Rename `DownloadStrategyManager` to `DownloadDelegate` to better reflect Facade/Delegate pattern (#918)
Expand All @@ -37,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Fixed

- Fixed `AttributeError: 'str' object has no attribute 'get'` crash when running `apm install --mcp <name>` without `--transport`, `--url`, `--mcp-version`, `--registry`, or a post-`--` stdio command. The bare-string registry shorthand now exits 0 and persists correctly to `apm.yml`. Closes #938 (#951)
- `apm install` and `apm compile` no longer exit 0 with success messages when `target:` in `apm.yml` is a CSV string -- the value now parses identically to the same input on `--target`, and zero-target resolution surfaces a warning instead of a silent no-op. (#820)
- Remove redundant `seen` set from `_scan_patterns()` discovery walk (#918)
- `apm pack` (marketplace producer) now respects `GITHUB_HOST` for GitHub Enterprise repos -- ref resolution, token lookup, and metadata fetch all use the configured host instead of hardcoded `github.com`. `git ls-remote` is authenticated so private repos work without separate credential setup. (#1008)
Expand Down
Loading