Packages

Elixir/OTP runtime for supervised coding-agent sessions with ACP, Subagents, Workflows, and replayable evidence.

Current section

Files

Jump to
pixir lib pixir tools close_agent.ex
Raw

lib/pixir/tools/close_agent.ex

defmodule Pixir.Tools.CloseAgent do
@moduledoc "Close or cancel a Subagent thread."
use Pixir.Tool
alias Pixir.{Subagents, Tool}
@impl Pixir.Tool
def __tool__ do
%{
name: "close_agent",
description: "Close a Subagent thread, interrupting it first if it is still running.",
parameters: %{
"type" => "object",
"properties" => %{"id" => %{"type" => "string", "description" => "Subagent id"}},
"required" => ["id"]
}
}
end
@impl Pixir.Tool
def execute(%{"id" => id}, context) when is_binary(id) do
with {:ok, agent} <- Subagents.close(context.session_id, id, workspace: context.workspace) do
{:ok, %{"output" => "Closed #{id}.", "subagent" => agent}}
end
end
def execute(_args, _context),
do: {:error, Tool.error(:invalid_args, "id is required", %{})}
@impl Pixir.Tool
def dry_run(%{"id" => id}, _context) when is_binary(id) do
{:ok, %{"dry_run" => true, "would" => "close_agent", "id" => id}}
end
def dry_run(_args, _context),
do: {:error, Tool.error(:invalid_args, "id is required", %{})}
end