Task / Process Mining (Automation-Candidate Discovery)
Enterprise RPA suites discover what to automate by mining recorded desktop
actions for frequent, repeatable sub-sequences. AutoControl records rich action
logs but never analysed them; mine_action_log turns a log into a ranked list
of automation candidates — it counts repeated command n-grams, builds a
directly-follows graph, and scores candidates by how often and how long each
repeated run is.
It operates on the project’s action-list shape (each step is a ["AC_name",
{...}] pair or a {"command": "AC_name", ...} mapping). Pure standard
library (collections); imports no PySide6.
Headless API
from je_auto_control import mine_action_log, directly_follows
report = mine_action_log(recorded_actions, min_len=2, max_len=5, min_count=3)
report.total_actions
for cand in report.candidates[:5]: # best first
print(cand.pattern.actions, cand.pattern.count, cand.score)
directly_follows(recorded_actions) # {(a, b): edge_count} flow graph
find_repeated_sequences returns the raw n-gram SequencePattern list;
rank_automation_candidates scores them (count × length — more and longer
repeats rank higher). A candidate that recurs often and spans several steps is a
strong “extract this into a reusable skill” signal.
Executor command
AC_mine_actions takes actions (a list, or a JSON-string list from the
visual builder) plus min_len / max_len / min_count and returns
{total_actions, patterns, candidates}. The same operation is exposed as the
MCP tool ac_mine_actions and as a Script Builder command under Report.