cmux/Sources/SentryHelper.swift
Lawrence Chen 168e6b9b25
Auto-heal missing CLI listener socket (#679)
* Auto-heal missing CLI socket listener

* Add Sentry socket listener breadcrumbs and failure capture
2026-02-28 01:19:38 -08:00

45 lines
1.4 KiB
Swift

import Sentry
/// Add a Sentry breadcrumb for user-action context in hang/crash reports.
func sentryBreadcrumb(_ message: String, category: String = "ui", data: [String: Any]? = nil) {
guard TelemetrySettings.enabledForCurrentLaunch else { return }
let crumb = Breadcrumb(level: .info, category: category)
crumb.message = message
crumb.data = data
SentrySDK.addBreadcrumb(crumb)
}
private func sentryCaptureMessage(
_ message: String,
level: SentryLevel,
category: String,
data: [String: Any]?,
contextKey: String?
) {
guard TelemetrySettings.enabledForCurrentLaunch else { return }
_ = SentrySDK.capture(message: message) { scope in
scope.setLevel(level)
scope.setTag(value: category, key: "category")
if let data {
scope.setContext(value: data, key: contextKey ?? category)
}
}
}
func sentryCaptureWarning(
_ message: String,
category: String = "ui",
data: [String: Any]? = nil,
contextKey: String? = nil
) {
sentryCaptureMessage(message, level: .warning, category: category, data: data, contextKey: contextKey)
}
func sentryCaptureError(
_ message: String,
category: String = "ui",
data: [String: Any]? = nil,
contextKey: String? = nil
) {
sentryCaptureMessage(message, level: .error, category: category, data: data, contextKey: contextKey)
}