New Features (2026-06-19) — Plugin SDK
A third-party pip package can now register new AC_* executor commands
declaratively via a setuptools entry point in the
je_auto_control.commands group — turning the monolith into an ecosystem
(how pytest/Playwright grew). AutoControl discovers them at runtime;
discovered commands are immediately usable from JSON action files, the
socket server, the scheduler, and MCP. Pure standard library
(importlib.metadata); full stack.
Discovering & loading
from je_auto_control import discover_plugins, load_plugins
discover_plugins() # {command_name: handler} from all plugins
load_plugins() # discover + register into the executor
Broken plugins are skipped (logged), not fatal. Exposed as
AC_list_plugins (discover names) / AC_load_plugins (discover +
register) and ac_list_plugins / ac_load_plugins. The entry-point
source is injectable, so discovery is unit-testable without installing a
real plugin. This is the declarative, namespaced complement to the existing
runtime path loader.