CliSubprocessCore.ProviderFeatures (CliSubprocessCore v0.2.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
  • decomposed tool capability metadata for normalized observation versus unadmitted host execution

Summary

Types

manifest()

@type manifest() :: %{
  provider: atom(),
  permission_modes: %{optional(atom()) => permission_manifest()},
  partial_features: %{optional(atom()) => partial_feature_manifest()},
  tool_capabilities: tool_capability_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()
}

tool_capability_key()

@type tool_capability_key() ::
  :tool_events
  | :tool_results
  | :host_tools
  | :tool_allowlist
  | :tool_denylist
  | :mcp_servers
  | :provider_builtin_tools
  | :no_tool_mode

tool_capability_manifest()

@type tool_capability_manifest() :: %{
  required(tool_capability_key()) => tool_capability_value(),
  optional(:notes) => [String.t()]
}

tool_capability_value()

@type tool_capability_value() :: boolean() | :unknown

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()

tool_capabilities(provider)

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

Returns decomposed tool capability metadata for a built-in provider.

:tool_events and :tool_results describe normalized observation payloads emitted by the core provider profiles. They do not imply host-executable tool registration, provider-native tool configuration, or tool suppression.

tool_capabilities!(provider)

@spec tool_capabilities!(atom()) :: tool_capability_manifest()

tool_capability(provider, capability)

@spec tool_capability(atom(), tool_capability_key()) ::
  {:ok, tool_capability_value()} | :error

tool_capability!(provider, capability)

@spec tool_capability!(atom(), tool_capability_key()) :: tool_capability_value()

tool_capability_keys()

@spec tool_capability_keys() :: [tool_capability_key(), ...]

Returns the required decomposed tool capability keys.