@@ -2,8 +2,10 @@ package cmd
22
33import (
44 "fmt"
5+ "strings"
56
67 "github.com/GrayCodeAI/hawk/internal/engine"
8+ "github.com/charmbracelet/lipgloss"
79)
810
911// Four container autonomy tiers (Inspect → Edit → Run → Trust).
@@ -61,14 +63,52 @@ func autonomyTierHint(level engine.AutonomyLevel) string {
6163 }
6264}
6365
66+ func autonomyTierColor (level engine.AutonomyLevel ) lipgloss.Color {
67+ switch level {
68+ case engine .AutonomyBasic :
69+ return tierInspect
70+ case engine .AutonomySemi :
71+ return tierEdit
72+ case engine .AutonomyFull :
73+ return tierRun
74+ case engine .AutonomyYOLO :
75+ return tierTrust
76+ default :
77+ return tierEdit
78+ }
79+ }
80+
81+ func autonomyTierStyle (level engine.AutonomyLevel ) lipgloss.Style {
82+ return lipgloss .NewStyle ().Foreground (autonomyTierColor (level )).Bold (true ).Inline (true )
83+ }
84+
85+ func renderAutonomyTierLabel (level engine.AutonomyLevel ) string {
86+ return autonomyTierStyle (level ).Render (autonomyTierName (level ))
87+ }
88+
6489func formatAutonomyTierMessage (level engine.AutonomyLevel ) string {
65- name := autonomyTierName (level )
90+ name := renderAutonomyTierLabel (level )
6691 if hint := autonomyTierHint (level ); hint != "" {
6792 return fmt .Sprintf ("Autonomy → %s (%s)" , name , hint )
6893 }
6994 return fmt .Sprintf ("Autonomy → %s" , name )
7095}
7196
97+ func autonomyLevelForTierName (name string ) engine.AutonomyLevel {
98+ switch strings .TrimSpace (name ) {
99+ case "Inspect" :
100+ return engine .AutonomyBasic
101+ case "Edit" :
102+ return engine .AutonomySemi
103+ case "Run" :
104+ return engine .AutonomyFull
105+ case "Trust" :
106+ return engine .AutonomyYOLO
107+ default :
108+ return DefaultContainerAutonomy
109+ }
110+ }
111+
72112// autonomyFromSettings maps settings.json autonomy (1–4) to a tier level.
73113// 0 or unset leaves session default until the container is ready.
74114func autonomyFromSettings (n int ) engine.AutonomyLevel {
0 commit comments