//go:build darwin package sandbox import ( "fmt" "os" ) // generateLearnedTemplatePlatform stops the daemon eslogger session, // parses the eslogger log with PID-based process tree filtering, // and generates a template (macOS). func (m *Manager) generateLearnedTemplatePlatform(cmdName string) (string, error) { if m.learningLog == "" { return "", fmt.Errorf("no eslogger log available (was learning mode enabled?)") } // Stop daemon learning session if m.daemonClient != nil && m.learningID != "" { if err := m.daemonClient.StopLearning(m.learningID); err != nil { m.logDebug("Warning: failed to stop learning session: %v", err) } } // Parse eslogger log with root PID for process tree tracking result, err := ParseEsloggerLog(m.learningLog, m.learningRootPID, m.debug) if err != nil { return "", fmt.Errorf("failed to parse eslogger log: %w", err) } templatePath, err := GenerateLearnedTemplate(result, cmdName, m.debug) if err != nil { return "", err } // Clean up eslogger log _ = os.Remove(m.learningLog) m.learningLog = "" m.learningID = "" return templatePath, nil }