NAME

Langertha::Raider::ToolEffects - Internal static table of what each built-in tool can do (effect classes)

VERSION

version 0.504

DESCRIPTION

Internal module. Its interface may change without notice.

One place that says what each built-in tool of raider can do to the world, in five effect classes (ADR 0005, information only -- nothing here allows or refuses a call):

read -- reads local files or state
write -- changes local files
network -- talks to the internet
code -- runs arbitrary code; it can do anything the other classes do
message -- sends something to a person or to another agent

A tool with an empty list has no effect outside the run (pure control flow). A tool that is not in the table has no answer: "effects_for" returns undef and reports say unknown. The table is keyed by name, so ask it only about tools the caller knows to be built-in -- an external MCP server may use any name, and its read_file is not ours. explain_config asks about the tools raider itself mounted; a later policy (the gate of ADR 0005) must combine it with the tool's source.

perl_eval and perl_check are code: perl -c runs BEGIN blocks and use. perl_cpanm is network and code: it downloads and then runs distribution build and test code. bash is code alone, as the class covers the rest. hall_spawn starts another raider with a mission, so it is message and code. raider_wait_for is code: the host runs a callback of its own for the condition and raider cannot say what it does, so the table takes the cautious reading. raider_manage_mcps is code (activating starts a tool server) and raider_switch_engine is network (later prompts go to another provider). glob and grep only read (they do not follow symbolic links out of the root). todo_write keeps a list in the state of the run and has no effect outside it. ask_user is message, like raider_ask_user: it puts a question to a person.

skill is read: it returns a skill file from the local skill directories.

list_mcp_resources and read_mcp_resource are read: they return resources of the configured MCP servers, as Claude Code's read-only ListMcpResourcesTool and ReadMcpResourceTool.

bash_output is read: it returns what a background shell of the session wrote, or a subagent's status and report. kill_shell has no effect class: it can only stop a shell raider itself started with bash (which was code and passed the gate then) or a subagent of the session (whose calls passed the gate themselves); it starts nothing, and asking before stopping would make stopping harder than starting (ADR 0024, ADR 0027).

monitor is code, like bash, whose command it runs in the background and whose gates apply to it (ADR 0031). cron_create, cron_delete and cron_list have no effect class: a job only queues a prompt for a later turn of the session, and what that turn does goes through the gate again when it does it; a prompt gives no permission (ADR 0005).

exit_plan_mode has no effect class: it hands a plan to the person and may switch the permission mode of the run (ADR 0021), which changes nothing outside it. Neither has enter_plan_mode, which switches the mode to plan; the permission gate asks the person before it runs (ADR 0025).

task_create, task_update, task_list and task_get keep the task list of the conversation, like todo_write; no effect outside it.

enter_worktree and exit_worktree are write (ADR 0032 §4): the one makes a checkout and a branch, the other may delete both.

agent has no class of its own (ADR 0020): it starts a subagent, whose tool calls carry their effects in the subagent's journal. Neither has send_message (ADR 0027 §5): it only drives a subagent, whose calls carry their own effects through the policy it inherited.

classes

The effect classes, in display order.

tool_names

All built-in tool names of the table, sorted.

effects_for

my $classes = Langertha::Raider::ToolEffects->effects_for('write_file');   # ['write']

A new array ref of effect classes (empty: no effect outside the run), or undef for a tool that is not in the table.

SUPPORT

Issues

Please report bugs and feature requests at https://github.com/Getty/langertha-raider/issues.

IRC

Join #langertha on irc.perl.org or message Getty directly.

CONTRIBUTING

Contributions are welcome! Please fork the repository and submit a pull request.

AUTHOR

Torsten Raudssus <torsten@raudssus.de> https://raudssus.de/

COPYRIGHT AND LICENSE

This software is copyright (c) 2026 by Torsten Raudssus.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

https://raudssus.de/