universal_automation_interface 0.2.0
universal_automation_interface: ^0.2.0 copied to clipboard
Pure-Dart contracts for the universal automation family: endpoints, session handles, drivers, actions, snapshots, fail-closed specs, and structured events. No Flutter, no protocol clients.
Changelog #
0.2.0 #
- Surface action catalog (the
InvokeActiontier): the dynamic-registry shape for drivers — framework- and app-specific verbs no longer require growing the universal verb set.- New sealed
InvokeAction(name, args): invoke a named action the surface under test registered for automation. - New
SurfaceActionDescriptor(name, description, JSON-Schema-subsetinputSchemacarried as plain data — the family depends on no schema library) and the opt-inAutomationActionCataloginterface (actions()); implementing it is non-breaking. CdpDriverimplements the catalog over the page'swindow.__mcpActionsregistry, so any web surface (Jaspr, plain JS, Flutter web) composes named, async handlers; newCdpPage.evaluateAsyncawaits Promise results and surfaces JS rejections instead of silentundefined.- WebDriver, AT-SPI, UIA, and AX drivers refuse
InvokeActionloudly — those tiers have no surface action registry. - Breaking: exhaustive switches over
AutomationActionmust handleInvokeAction(all family drivers do; behavioral synthesis refuses it — catalog actions carry their own dispatch).
- New sealed
- Behavior dynamics contract (ADR 0044): declarative, composable input
profiles for humans and agents.
- New
behaviormodule:BehaviorSteptimed input-step vocabulary,BehaviorPlan,BehaviorProfile(facets:ActionRhythm,ReactionDelay,SessionPacing,PointerMotion,KeystrokeCadence), priors (agentImmediatedegenerate profile,humanPrior(seed)hyper-prior),synthesizeBehavior/projectBehaviordeterministic synthesis,auditBehaviorself-consistency reporting,BehaviorReceiptsencoders, canonical JSON + SHA-256 hashing, and the pinnedxoshiro128**/splitmix32 PRNG. - New
BehavioralDriveropt-in capability surface (performWithwith typedBehaviorOutcome),ProfiledDriverwrapper, andDriverCapabilities.behaviorDynamics(defaultfalse;fullsets it). - Breaking:
DriverCapabilities.fullnow setsbehaviorDynamics: true; drivers claimingfullwithout implementingBehavioralDrivershould declare an explicit capability set instead.
- New