CliSubprocessCore.ProviderFeatures (CliSubprocessCore v0.1.0)

Copy Markdown View Source

Canonical provider feature metadata for the built-in CLI profiles.

This module is the public, authoritative source for:

  • provider-native permission mode terminology and CLI flag rendering
  • provider-local partial features such as Ollama-backed model routing

Summary

Types

manifest()

@type manifest() :: %{
  provider: atom(),
  permission_modes: %{optional(atom()) => permission_manifest()},
  partial_features: %{optional(atom()) => partial_feature_manifest()}
}

partial_feature_manifest()

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

permission_manifest()

@type permission_manifest() :: %{
  native_mode: atom(),
  cli_args: [String.t()],
  cli_excerpt: String.t() | nil,
  label: String.t()
}

Functions

manifest(provider)

@spec manifest(atom()) :: {:ok, manifest()} | :error

manifest!(provider)

@spec manifest!(atom()) :: manifest()

partial_feature(provider, feature)

@spec partial_feature(atom(), atom()) :: {:ok, partial_feature_manifest()} | :error

partial_feature!(provider, feature)

@spec partial_feature!(atom(), atom()) :: partial_feature_manifest()

permission_args(provider, mode)

@spec permission_args(atom(), atom() | String.t()) :: [String.t()]

permission_mode(provider, mode)

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

permission_mode!(provider, mode)

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