Files
Pulse/internal/dockeragent/system.go
rcourtman 3040800e7b fix: AI Patrol now respects exact user-configured thresholds
BREAKING CHANGE: AI Patrol now uses EXACT alert thresholds by default
instead of warning 5-15% before the threshold.

Changes:
- Default behavior: Patrol warns at your configured threshold (e.g., 96% = warns at 96%)
- New setting: 'use_proactive_thresholds' enables the old early-warning behavior
- API: Added use_proactive_thresholds to GET/PUT /api/settings/ai
- Backend: Added SetProactiveMode/GetProactiveMode to PatrolService
- Backend: Added GetThresholds to PatrolService for UI display
- Tests: Updated and added tests for both exact and proactive modes
- Also fixed unused imports in dockeragent/agent.go

When proactive mode is disabled (default):
- Watch: threshold - 5% (slight buffer)
- Warning: exact threshold

When proactive mode is enabled:
- Watch: threshold - 15%
- Warning: threshold - 5%

Related to #951
2025-12-29 08:40:34 +00:00

37 lines
593 B
Go

package dockeragent
import (
"bufio"
"errors"
"strconv"
"strings"
)
func readProcUptime() (float64, error) {
f, err := openProcUptime()
if err != nil {
return 0, err
}
defer f.Close()
scanner := bufio.NewScanner(f)
if !scanner.Scan() {
if err := scanner.Err(); err != nil {
return 0, err
}
return 0, errors.New("empty /proc/uptime")
}
fields := strings.Fields(scanner.Text())
if len(fields) == 0 {
return 0, errors.New("invalid /proc/uptime contents")
}
value, err := strconv.ParseFloat(fields[0], 64)
if err != nil {
return 0, err
}
return value, nil
}