Skip to main content

lib/pi/protocol/tool/ast/replace.ex

defmodule Pi.Protocol.Tool.AST.Replace do
  @moduledoc "Structured AST replace tool payload."

  use JSONCodec, fast_path: :json

  alias Pi.Protocol.Tool.AST.Diff
  alias Pi.Protocol.Tool.AST.Replacement

  defstruct kind: "ast_replace",
            dry_run: false,
            pattern: nil,
            replacement: nil,
            path: nil,
            replacements: [],
            total: 0,
            diffs: [],
            display: nil

  @type t :: %__MODULE__{
          kind: String.t(),
          dry_run: boolean(),
          pattern: String.t(),
          replacement: String.t(),
          path: String.t() | nil,
          replacements: [Replacement.t()],
          total: non_neg_integer(),
          diffs: [Diff.t()],
          display: Pi.Protocol.UI.Display.t() | nil
        }
end