NAME

Developer::Dashboard::ActionRunner - trusted action execution runtime

SYNOPSIS

my $runner = Developer::Dashboard::ActionRunner->new(files => $files, paths => $paths);
my $result = $runner->run_page_action(...);

DESCRIPTION

This module executes built-in and trusted command actions for dashboard pages, including encoded action transport payloads.

METHODS

new, run_page_action, encode_action_payload, decode_action_payload, run_encoded_action, run_command_action

Construct and execute actions.

PURPOSE

This module validates and executes page actions. It decides whether a page action is a built-in dashboard action or an explicit command action, enforces the saved-page trust rules, captures command output, and returns structured result hashes for the page runtime and web routes.

WHY IT EXISTS

It exists because bookmark actions need one place that owns trust checks and command execution semantics. Without that boundary, the web layer, page renderer, and saved-action transport would each grow their own action policy and drift apart.

WHEN TO USE

Use this file when changing page action security, the transport payload for encoded actions, command backgrounding rules, or the way page actions report stdout, stderr, and exit codes back to callers.

HOW TO USE

Construct it with a file registry and path registry, then call run_page_action for one decoded action hash or encode_action_payload when a route needs a portable transport token. Keep action execution policy here instead of duplicating it in controllers or bookmark templates.

WHAT USES IT

It is used by Developer::Dashboard::Web::App, by provider pages resolved through the page resolver, by saved page action buttons in the browser, and by action/web regression tests.

EXAMPLES

Example 1:

perl -Ilib -MDeveloper::Dashboard::ActionRunner -e 1

Do a direct compile-and-load check against the module from a source checkout.

Example 2:

prove -lv t/00-load.t t/21-refactor-coverage.t

Run the focused regression tests that most directly exercise this module's behavior.

Example 3:

HARNESS_PERL_SWITCHES=-MDevel::Cover prove -lr t

Recheck the module under the repository coverage gate rather than relying on a load-only probe.

Example 4:

prove -lr t

Put any module-level change back through the entire repository suite before release.