defmodule ASM.Options.Claude do @moduledoc """ Claude provider-specific option schema. """ @spec schema() :: keyword() def schema do [ model: [type: :string], system_prompt: [type: {:or, [:string, :map, nil]}, default: nil], append_system_prompt: [type: {:or, [:string, nil]}, default: nil], provider_backend: [type: {:or, [{:in, [:anthropic, :ollama]}, :string, nil]}, default: nil], external_model_overrides: [ type: {:custom, ASM.Options, :validate_passthrough_map, [:external_model_overrides]}, default: %{} ], anthropic_base_url: [type: {:or, [:string, nil]}, default: nil], anthropic_auth_token: [type: {:or, [:string, nil]}, default: nil], include_thinking: [type: :boolean, default: false], # A completion is not a coding agent: an empty tool set, no settings # sources, strict MCP config, and plan mode. It REPLACES any # caller-supplied permission mode rather than merging with it. completion_only: [type: :boolean, default: false], # Allow a Claude model newer than the shared registry to pass through to # the CLI `--model` (default false = require a registered model). allow_unknown_model: [type: :boolean, default: false], max_turns: [type: {:or, [:pos_integer, nil]}, default: nil] ] end end