ASM.ProviderFeatures (ASM v0.9.2)

Copy Markdown View Source

Public provider feature manifests for ASM.

This module exposes two related surfaces:

  • provider-native permission mode metadata inherited from CliSubprocessCore.ProviderFeatures
  • ASM common features that are only supported by some providers, such as the common Ollama surface

Summary

Types

common_feature_manifest()

@type common_feature_manifest() :: %{
  supported?: boolean(),
  common_surface: true,
  common_opts: [atom()],
  activation: map() | nil,
  model_strategy: atom() | nil,
  compatibility: map() | nil,
  notes: [String.t()]
}

manifest()

@type manifest() :: %{
  provider: ASM.Provider.provider_name(),
  permission_modes: %{optional(atom()) => permission_manifest()},
  common_features: %{optional(atom()) => common_feature_manifest()}
}

permission_manifest()

Functions

common_feature(provider_or_name, feature)

@spec common_feature(ASM.Provider.t() | ASM.Provider.provider_name(), atom()) ::
  {:ok, common_feature_manifest()} | {:error, ASM.Error.t()}

common_feature!(provider_or_name, feature)

manifest(provider_or_name)

@spec manifest(ASM.Provider.t() | ASM.Provider.provider_name()) ::
  {:ok, manifest()} | {:error, ASM.Error.t()}

manifest!(provider_or_name)

@spec manifest!(ASM.Provider.t() | ASM.Provider.provider_name()) :: manifest()

permission_mode(provider_or_name, mode)

@spec permission_mode(
  ASM.Provider.t() | ASM.Provider.provider_name(),
  atom() | String.t()
) ::
  {:ok, permission_manifest()} | {:error, ASM.Error.t()}

permission_mode!(provider_or_name, mode)

@spec permission_mode!(
  ASM.Provider.t() | ASM.Provider.provider_name(),
  atom() | String.t()
) ::
  permission_manifest()

supports_common_feature?(provider_or_name, feature)

@spec supports_common_feature?(
  ASM.Provider.t() | ASM.Provider.provider_name(),
  atom()
) :: boolean()