Raxol.Adaptive.LayoutRecommender (Raxol v2.3.0)

View Source

Rule-based layout recommendation engine.

Subscribes to BehaviorTracker aggregates and applies heuristic rules to suggest layout changes. Emits recommendations to subscribers when confidence exceeds threshold and cooldown has elapsed.

Cold start design: pure rule-based. No Nx dependency. Swap in an Nx model later by replacing apply_rules/1.

Summary

Types

change()

@type change() :: %{
  pane_id: atom(),
  action: :hide | :show | :expand | :shrink,
  params: map()
}

recommendation()

@type recommendation() :: %{
  id: binary(),
  layout_changes: [change()],
  confidence: float(),
  reasoning: String.t(),
  timestamp: integer()
}

t()

@type t() :: %Raxol.Adaptive.LayoutRecommender{
  confidence_threshold: float(),
  last_recommendation: recommendation() | nil,
  last_recommendation_at: integer() | nil,
  model_params: map() | nil,
  pane_ids: [atom()],
  recommendation_cooldown_ms: pos_integer(),
  subscribers: MapSet.t(pid())
}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

get_last_recommendation(server \\ __MODULE__)

@spec get_last_recommendation(GenServer.server()) :: recommendation() | nil

set_model_params(server \\ __MODULE__, params)

@spec set_model_params(GenServer.server(), map()) :: :ok

set_pane_ids(server \\ __MODULE__, pane_ids)

@spec set_pane_ids(GenServer.server(), [atom()]) :: :ok

start_link(opts \\ [])

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

subscribe(server \\ __MODULE__)

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