ExMCP.ACPCompat (ex_mcp v1.3.0)

Copy Markdown View Source

Repository-only tooling for tracking ACP ecosystem compatibility.

The checked-in manifest is the reviewed source of truth. Remote catalogs and repositories are treated as untrusted drift inputs: this module reports changes but never installs agents or rewrites the manifest.

Summary

Functions

Fetches every configured source and returns a drift report.

Compares a manifest with already-fetched remote snapshots.

Returns the repository's default ACP compatibility manifest path.

Formats a human-readable report for CI logs.

Returns a reviewed ecosystem smoke-test entry by id.

Extracts the primary agent name from each bullet on the ACP agents page.

Builds the stable registry identity/version snapshot used by the manifest.

Validates the stable fields used by the drift checker and smoke suite.

Types

drift()

@type drift() :: map()

report()

@type report() :: %{
  manifest: String.t(),
  checked_at: String.t(),
  drift: [drift()],
  errors: [map()]
}

Functions

check_remote(manifest, opts \\ [])

@spec check_remote(
  map(),
  keyword()
) :: report()

Fetches every configured source and returns a drift report.

compare(manifest, snapshots)

@spec compare(map(), map()) :: [drift()]

Compares a manifest with already-fetched remote snapshots.

default_manifest()

@spec default_manifest() :: String.t()

Returns the repository's default ACP compatibility manifest path.

format_report(report)

@spec format_report(report()) :: String.t()

Formats a human-readable report for CI logs.

interop_agent(manifest, id)

@spec interop_agent(map(), String.t()) :: {:ok, map()} | {:error, :unknown_agent}

Returns a reviewed ecosystem smoke-test entry by id.

load_manifest(path \\ "/Users/azmaveth/code/ex_mcp/test/interop/acp_compatibility.json")

@spec load_manifest(Path.t()) :: {:ok, map()} | {:error, term()}

Loads and validates an ACP compatibility manifest.

parse_catalog(markdown)

@spec parse_catalog(binary()) :: {:ok, [String.t()]} | {:error, term()}

Extracts the primary agent name from each bullet on the ACP agents page.

registry_snapshot(arg1)

@spec registry_snapshot(map()) :: {:ok, [map()]} | {:error, term()}

Builds the stable registry identity/version snapshot used by the manifest.

validate_manifest(manifest)

@spec validate_manifest(map()) :: :ok | {:error, term()}

Validates the stable fields used by the drift checker and smoke suite.