Raxol.Adaptive.BehaviorTracker (Raxol v2.3.0)

View Source

Records pilot interactions as time-series events.

Captures pane focus dwell times, command frequency, alert response latency, and layout overrides. Computes windowed aggregates and notifies subscribers for downstream recommendation.

Summary

Types

aggregate()

@type aggregate() :: %{
  window_start: integer(),
  pane_dwell_times: %{required(atom()) => float()},
  command_frequency: %{required(String.t()) => non_neg_integer()},
  avg_alert_response_ms: float(),
  most_used_panes: [atom()],
  least_used_panes: [atom()]
}

behavior_event()

@type behavior_event() :: %{timestamp: integer(), type: event_type(), data: map()}

event_type()

@type event_type() ::
  :pane_focus
  | :pane_dwell
  | :command_issued
  | :alert_response
  | :scroll_pattern
  | :takeover_start
  | :takeover_end
  | :layout_override

t()

@type t() :: %Raxol.Adaptive.BehaviorTracker{
  aggregate_ref: reference() | nil,
  aggregates: %{required(integer()) => aggregate()},
  buffer_size: pos_integer(),
  events: CircularBuffer.t(),
  session_id: binary() | nil,
  subscribers: MapSet.t(pid()),
  tracking_enabled: boolean(),
  window_size_ms: pos_integer()
}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

disable(server \\ __MODULE__)

@spec disable(GenServer.server()) :: :ok

enable(server \\ __MODULE__)

@spec enable(GenServer.server()) :: :ok

get_aggregates(server \\ __MODULE__, window_count \\ 5)

@spec get_aggregates(GenServer.server(), pos_integer()) :: [aggregate()]

get_recent_events(server \\ __MODULE__, count \\ 20)

@spec get_recent_events(GenServer.server(), pos_integer()) :: [behavior_event()]

record(server \\ __MODULE__, event_type, data)

@spec record(GenServer.server(), event_type(), map()) :: :ok

start_link(opts \\ [])

@spec start_link(keyword()) :: GenServer.on_start()

subscribe(server \\ __MODULE__)

@spec subscribe(GenServer.server()) :: :ok