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