package jevdecide import ( "os" "strings" "sync" ) var ( flagsMu sync.RWMutex activeMode = defaultMode() ) func defaultMode() Mode { return ParseMode(os.Getenv("JEV_DECIDE_MODE")) } // ParseMode maps env string to Mode; unknown → off (fail-closed). func ParseMode(raw string) Mode { switch strings.ToLower(strings.TrimSpace(raw)) { case "", "off", "0", "false", "no": return ModeOff case "shadow": return ModeShadow case "assist": return ModeAssist default: return ModeOff } } // CurrentMode returns the active integration mode. func CurrentMode() Mode { flagsMu.RLock() defer flagsMu.RUnlock() return activeMode } // SetModeForTest overrides mode in tests. func SetModeForTest(m Mode) { flagsMu.Lock() activeMode = m flagsMu.Unlock() } // ResetModeForTest restores mode from the process environment. func ResetModeForTest() { flagsMu.Lock() activeMode = defaultMode() flagsMu.Unlock() } // Enabled reports whether shadow or assist is active. func Enabled() bool { m := CurrentMode() return m == ModeShadow || m == ModeAssist }