Active tool's id (from ActiveToolContext).
OptionalambientIds of always-on tools. Their bindings are assembled at AMBIENT scope, so
they lose to the active tool on a tie — which is what "always listening,
never in the way" needs. Chrome that floats over the scene lives here:
@weasel-js/hud's tool is the worked example.
Without this an ambient tool's bindings were assembled nowhere at all:
the walk covered hotkey and active tools plus actions' defaultBinding,
and an ambient tool is in neither set.
Dep sources keyed by name.
OptionalgetThunk returning a fresh RuleCtx for the current frame. When
supplied, the dispatcher filters matched candidates by their
declared Action.eligible rule (omitted => always eligible).
When omitted, no eligibility filtering is applied — preserves
backward compatibility for callers (tests, legacy harnesses) that
don't wire up chrome-caps state.
Held-hotkey stack, top of stack last.
Platform flag for mod shorthand resolution.
Lookup for tool definitions.
All registered actions; the dispatcher walks
.defaultBindingfor ambient bindings.