The Swift Package Index logo.Swift Package Index

Build Information

Successful build of LiveAndAiChat, reference 0.4.1 (785bea), with Swift 6.1 for macOS (SPM) on 3 Oct 2026 04:49:19 UTC.

Swift 6 data race errors: 8

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-2F0A5646E1D333AE.txt
[3/40] Emitting module LiveAndAiChat
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Audio/NotificationTone.swift:13:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationTone' may have shared mutable state; this is an error in the Swift 6 language mode
  9 | /// Audio session category is `.ambient` so playback respects the user's
 10 | /// silent-mode switch and never ducks other audio.
 11 | public final class NotificationTone {
    |                    `- note: class 'NotificationTone' does not conform to the 'Sendable' protocol
 12 |
 13 |     public static let shared = NotificationTone()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationTone' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 |
 15 |     public var isEnabled: Bool = true
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Diagnostics/DiagnosticLog.swift:16:24: warning: static property '_handler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 |     private static let lock = NSLock()
16 |     private static var _handler: Handler?
   |                        |- warning: static property '_handler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert '_handler' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: add '@MainActor' to make static property '_handler' part of global actor 'MainActor'
   |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     /// Install (or remove) the global diagnostic log handler. Passing
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:158:16: warning: static property 'connectionInitFrame' is not concurrency-safe because non-'Sendable' type '[String : Any]' may have shared mutable state; this is an error in the Swift 6 language mode
156 |     }
157 |
158 |     static let connectionInitFrame: [String: Any] = ["type": "connection_init", "payload": [String: Any]()]
    |                |- warning: static property 'connectionInitFrame' is not concurrency-safe because non-'Sendable' type '[String : Any]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'connectionInitFrame' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
159 |
160 |     private func openWs() {
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:57:23: warning: static property 'lightDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
 55 |     /// Spec-default light palette — matches the JSON in the user-facing
 56 |     /// spec and the gql-server `appearanceDefaults.ts`.
 57 |     public static let lightDefault: ChatColors = ChatColors(
    |                       |- warning: static property 'lightDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'lightDefault' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 58 |         primary: hex("#9333EA"),
 59 |         background: hex("#F7F7FB"),
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:103:23: warning: static property 'darkDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
101 |     /// for backgrounds, brand purple slightly desaturated to reduce
102 |     /// eye strain at low ambient brightness, near-white text.
103 |     public static let darkDefault: ChatColors = ChatColors(
    |                       |- warning: static property 'darkDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'darkDefault' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
104 |         primary: hex("#A855F7"),
105 |         background: hex("#0F0F14"),
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:232:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
230 |
231 | private struct ChatColorsKey: EnvironmentKey {
232 |     static let defaultValue: ChatColors = .lightDefault
    |                |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
233 | }
234 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:68:7: warning: non-final class 'LACEventSource' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 66 | }
 67 |
 68 | class LACEventSource: NSObject, LACEventSourceProtocol, URLSessionDataDelegate {
    |       `- warning: non-final class 'LACEventSource' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 69 |     static let DefaultRetryTime = 3000
 70 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:72:22: warning: stored property 'lastEventId' of 'Sendable'-conforming class 'LACEventSource' is mutable; this is an error in the Swift 6 language mode
 70 |
 71 |     let url: URL
 72 |     private(set) var lastEventId: String?
    |                      `- warning: stored property 'lastEventId' of 'Sendable'-conforming class 'LACEventSource' is mutable; this is an error in the Swift 6 language mode
 73 |     private(set) var retryTime = LACEventSource.DefaultRetryTime
 74 |     private(set) var headers: [String: String]
[4/44] Compiling LiveAndAiChat FileUploader.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEvent.swift:87:17: warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 85 |         var key: NSString?, value: NSString?
 86 |         let scanner = Scanner(string: line)
 87 |         scanner.scanUpTo(":", into: &key)
    |                 `- warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 88 |         scanner.scanString(":", into: nil)
 89 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEvent.swift:88:17: warning: 'scanString(_:into:)' was deprecated in macOS 10.15
 86 |         let scanner = Scanner(string: line)
 87 |         scanner.scanUpTo(":", into: &key)
 88 |         scanner.scanString(":", into: nil)
    |                 `- warning: 'scanString(_:into:)' was deprecated in macOS 10.15
 89 |
 90 |         for newline in newLineCharacters {
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEvent.swift:91:24: warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 89 |
 90 |         for newline in newLineCharacters {
 91 |             if scanner.scanUpTo(newline, into: &value) {
    |                        `- warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 92 |                 break
 93 |             }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:68:7: warning: non-final class 'LACEventSource' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 66 | }
 67 |
 68 | class LACEventSource: NSObject, LACEventSourceProtocol, URLSessionDataDelegate {
    |       `- warning: non-final class 'LACEventSource' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 69 |     static let DefaultRetryTime = 3000
 70 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:72:22: warning: stored property 'lastEventId' of 'Sendable'-conforming class 'LACEventSource' is mutable; this is an error in the Swift 6 language mode
 70 |
 71 |     let url: URL
 72 |     private(set) var lastEventId: String?
    |                      `- warning: stored property 'lastEventId' of 'Sendable'-conforming class 'LACEventSource' is mutable; this is an error in the Swift 6 language mode
 73 |     private(set) var retryTime = LACEventSource.DefaultRetryTime
 74 |     private(set) var headers: [String: String]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:246:35: warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
244 |
245 |             if let eventName = event.event, let eventHandler = eventListeners[eventName] {
246 |                 mainQueue.async { eventHandler(event.id, event.event, event.data) }
    |                                   |- warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
    |                                   `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
247 |             } else if let eventName = event.event {
248 |                 SseLog.warn("ES no listener for event '\(eventName)' — keys=\(listenedKeys)")
[5/44] Compiling LiveAndAiChat LACEvent.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEvent.swift:87:17: warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 85 |         var key: NSString?, value: NSString?
 86 |         let scanner = Scanner(string: line)
 87 |         scanner.scanUpTo(":", into: &key)
    |                 `- warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 88 |         scanner.scanString(":", into: nil)
 89 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEvent.swift:88:17: warning: 'scanString(_:into:)' was deprecated in macOS 10.15
 86 |         let scanner = Scanner(string: line)
 87 |         scanner.scanUpTo(":", into: &key)
 88 |         scanner.scanString(":", into: nil)
    |                 `- warning: 'scanString(_:into:)' was deprecated in macOS 10.15
 89 |
 90 |         for newline in newLineCharacters {
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEvent.swift:91:24: warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 89 |
 90 |         for newline in newLineCharacters {
 91 |             if scanner.scanUpTo(newline, into: &value) {
    |                        `- warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 92 |                 break
 93 |             }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:68:7: warning: non-final class 'LACEventSource' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 66 | }
 67 |
 68 | class LACEventSource: NSObject, LACEventSourceProtocol, URLSessionDataDelegate {
    |       `- warning: non-final class 'LACEventSource' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 69 |     static let DefaultRetryTime = 3000
 70 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:72:22: warning: stored property 'lastEventId' of 'Sendable'-conforming class 'LACEventSource' is mutable; this is an error in the Swift 6 language mode
 70 |
 71 |     let url: URL
 72 |     private(set) var lastEventId: String?
    |                      `- warning: stored property 'lastEventId' of 'Sendable'-conforming class 'LACEventSource' is mutable; this is an error in the Swift 6 language mode
 73 |     private(set) var retryTime = LACEventSource.DefaultRetryTime
 74 |     private(set) var headers: [String: String]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:246:35: warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
244 |
245 |             if let eventName = event.event, let eventHandler = eventListeners[eventName] {
246 |                 mainQueue.async { eventHandler(event.id, event.event, event.data) }
    |                                   |- warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
    |                                   `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
247 |             } else if let eventName = event.event {
248 |                 SseLog.warn("ES no listener for event '\(eventName)' — keys=\(listenedKeys)")
[6/44] Compiling LiveAndAiChat LACEventSource.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEvent.swift:87:17: warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 85 |         var key: NSString?, value: NSString?
 86 |         let scanner = Scanner(string: line)
 87 |         scanner.scanUpTo(":", into: &key)
    |                 `- warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 88 |         scanner.scanString(":", into: nil)
 89 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEvent.swift:88:17: warning: 'scanString(_:into:)' was deprecated in macOS 10.15
 86 |         let scanner = Scanner(string: line)
 87 |         scanner.scanUpTo(":", into: &key)
 88 |         scanner.scanString(":", into: nil)
    |                 `- warning: 'scanString(_:into:)' was deprecated in macOS 10.15
 89 |
 90 |         for newline in newLineCharacters {
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEvent.swift:91:24: warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 89 |
 90 |         for newline in newLineCharacters {
 91 |             if scanner.scanUpTo(newline, into: &value) {
    |                        `- warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 92 |                 break
 93 |             }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:68:7: warning: non-final class 'LACEventSource' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 66 | }
 67 |
 68 | class LACEventSource: NSObject, LACEventSourceProtocol, URLSessionDataDelegate {
    |       `- warning: non-final class 'LACEventSource' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 69 |     static let DefaultRetryTime = 3000
 70 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:72:22: warning: stored property 'lastEventId' of 'Sendable'-conforming class 'LACEventSource' is mutable; this is an error in the Swift 6 language mode
 70 |
 71 |     let url: URL
 72 |     private(set) var lastEventId: String?
    |                      `- warning: stored property 'lastEventId' of 'Sendable'-conforming class 'LACEventSource' is mutable; this is an error in the Swift 6 language mode
 73 |     private(set) var retryTime = LACEventSource.DefaultRetryTime
 74 |     private(set) var headers: [String: String]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:246:35: warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
244 |
245 |             if let eventName = event.event, let eventHandler = eventListeners[eventName] {
246 |                 mainQueue.async { eventHandler(event.id, event.event, event.data) }
    |                                   |- warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
    |                                   `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
247 |             } else if let eventName = event.event {
248 |                 SseLog.warn("ES no listener for event '\(eventName)' — keys=\(listenedKeys)")
[7/44] Compiling LiveAndAiChat LACEventStreamParser.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEvent.swift:87:17: warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 85 |         var key: NSString?, value: NSString?
 86 |         let scanner = Scanner(string: line)
 87 |         scanner.scanUpTo(":", into: &key)
    |                 `- warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 88 |         scanner.scanString(":", into: nil)
 89 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEvent.swift:88:17: warning: 'scanString(_:into:)' was deprecated in macOS 10.15
 86 |         let scanner = Scanner(string: line)
 87 |         scanner.scanUpTo(":", into: &key)
 88 |         scanner.scanString(":", into: nil)
    |                 `- warning: 'scanString(_:into:)' was deprecated in macOS 10.15
 89 |
 90 |         for newline in newLineCharacters {
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEvent.swift:91:24: warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 89 |
 90 |         for newline in newLineCharacters {
 91 |             if scanner.scanUpTo(newline, into: &value) {
    |                        `- warning: 'scanUpTo(_:into:)' was deprecated in macOS 10.15
 92 |                 break
 93 |             }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:68:7: warning: non-final class 'LACEventSource' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 66 | }
 67 |
 68 | class LACEventSource: NSObject, LACEventSourceProtocol, URLSessionDataDelegate {
    |       `- warning: non-final class 'LACEventSource' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
 69 |     static let DefaultRetryTime = 3000
 70 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:72:22: warning: stored property 'lastEventId' of 'Sendable'-conforming class 'LACEventSource' is mutable; this is an error in the Swift 6 language mode
 70 |
 71 |     let url: URL
 72 |     private(set) var lastEventId: String?
    |                      `- warning: stored property 'lastEventId' of 'Sendable'-conforming class 'LACEventSource' is mutable; this is an error in the Swift 6 language mode
 73 |     private(set) var retryTime = LACEventSource.DefaultRetryTime
 74 |     private(set) var headers: [String: String]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Vendor/EventSource/LACEventSource.swift:246:35: warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
244 |
245 |             if let eventName = event.event, let eventHandler = eventListeners[eventName] {
246 |                 mainQueue.async { eventHandler(event.id, event.event, event.data) }
    |                                   |- warning: capture of 'eventHandler' with non-sendable type '(String?, String?, String?) -> Void' in a '@Sendable' closure
    |                                   `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
247 |             } else if let eventName = event.event {
248 |                 SseLog.warn("ES no listener for event '\(eventName)' — keys=\(listenedKeys)")
[8/44] Compiling LiveAndAiChat ChatStore.swift
[9/44] Compiling LiveAndAiChat Backoff.swift
[10/44] Compiling LiveAndAiChat ChatCredential.swift
[11/44] Compiling LiveAndAiChat GqlClient.swift
[12/44] Compiling LiveAndAiChat LiveAndAiChatConfig.swift
[13/44] Compiling LiveAndAiChat LiveAndAiChatError.swift
[14/44] Compiling LiveAndAiChat Bootstrap.swift
[15/44] Compiling LiveAndAiChat ChatMessage.swift
[16/44] Compiling LiveAndAiChat Conversation.swift
[17/44] Compiling LiveAndAiChat OrgChatConfig.swift
[18/44] Compiling LiveAndAiChat Operations.swift
[19/44] Compiling LiveAndAiChat SessionManager.swift
[20/44] Compiling LiveAndAiChat ConnectionState.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Diagnostics/DiagnosticLog.swift:16:24: warning: static property '_handler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 |     private static let lock = NSLock()
16 |     private static var _handler: Handler?
   |                        |- warning: static property '_handler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert '_handler' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: add '@MainActor' to make static property '_handler' part of global actor 'MainActor'
   |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     /// Install (or remove) the global diagnostic log handler. Passing
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:572:47: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 570 |                 var vars: [String: Any] = ["conversationId": convId]
 571 |                 if let r = reason, !r.isEmpty { vars["reason"] = r }
 572 |                 let data = try await self.gql.execute(query: Operations.requestHandoff, variables: vars)
     |                                               `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 573 |                 guard let payload = data["requestCsHandoff"] as? [String: Any],
 574 |                       let assignmentDict = payload["assignment"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:593:37: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 591 |             var vars: [String: Any] = ["conversationId": convId]
 592 |             if let name = self.user?.customerName { vars["userName"] = name }
 593 |             _ = try? await self.gql.execute(query: Operations.sendTypingStart, variables: vars)
     |                                     `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 594 |         }
 595 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:601:37: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 599 |         Task { [weak self] in
 600 |             guard let self else { return }
 601 |             _ = try? await self.gql.execute(query: Operations.sendTypingStop, variables: ["conversationId": convId])
     |                                     `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 602 |         }
 603 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:648:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 646 |
 647 |     private func fetchBootstrap() async {
 648 |         guard let data = try? await gql.execute(query: Operations.getLiveChatBootstrap),
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 649 |               let node = data["getLiveChatBootstrap"]
 650 |         else { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:655:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 653 |
 654 |     private func fetchOrgConfig() async {
 655 |         guard let data = try? await gql.execute(query: Operations.getCsConfig),
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 656 |               let node = data["getCsConfig"],
 657 |               let cfg = try? GqlClient.decode(OrgChatConfig.self, from: node)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:682:42: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 680 |         if let savedConv = session.conversationId {
 681 |             // Hydrate existing conversation, then load message history.
 682 |             if let data = try? await gql.execute(
     |                                          `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 683 |                 query: Operations.getConversationState,
 684 |                 variables: ["conversationId": savedConv]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:697:34: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 695 |
 696 |         // Fresh init.
 697 |         let data = try await gql.execute(query: Operations.initChat, variables: ["input": initChatInput()])
     |                                  `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 698 |         guard let result = data["initCsAiChat"] as? [String: Any],
 699 |               let convId = result["conversationId"] as? String, !convId.isEmpty
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:730:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 728 |
 729 |     private func loadInitialHistory(conversationId: String) async {
 730 |         guard let data = try? await gql.execute(
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 731 |             query: Operations.getMessages,
 732 |             variables: ["conversationId": conversationId, "limit": 200]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:781:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 779 |
 780 |         SseLog.debug("gap-fill fetching getCsMessages for conv=\(conversationId.suffix(8))")
 781 |         guard let data = try? await gql.execute(
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 782 |             query: Operations.getMessages,
 783 |             variables: ["conversationId": conversationId, "limit": 500]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:1048:38: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
1046 |                 }
1047 |             }
1048 |             let data = try await gql.execute(query: Operations.sendMessage, variables: vars)
     |                                      `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
1049 |             guard let payload = data["sendCsCustomerMessage"] as? [String: Any] else { return }
1050 |             if let echo = payload["customerMessage"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:181:9: warning: cannot access property 'networkMonitor' with a non-sendable type 'NetworkMonitor' from nonisolated deinit; this is an error in the Swift 6 language mode
 179 |         // calling destroy() explicitly. As a defensive measure, stop the
 180 |         // network monitor (safe from any thread).
 181 |         networkMonitor.stop()
     |         `- warning: cannot access property 'networkMonitor' with a non-sendable type 'NetworkMonitor' from nonisolated deinit; this is an error in the Swift 6 language mode
 182 |     }
 183 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/NetworkMonitor.swift:11:13: note: class 'NetworkMonitor' does not conform to the 'Sendable' protocol
 9 | /// Mirrors Android's `NetworkMonitor` semantics: `isOnline` only flips
10 | /// true when the path is satisfied AND not expensive-only / unsatisfied.
11 | final class NetworkMonitor: ObservableObject {
   |             `- note: class 'NetworkMonitor' does not conform to the 'Sendable' protocol
12 |     @Published private(set) var isOnline: Bool = true
13 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:648:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 646 |
 647 |     private func fetchBootstrap() async {
 648 |         guard let data = try? await gql.execute(query: Operations.getLiveChatBootstrap),
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 649 |               let node = data["getLiveChatBootstrap"]
 650 |         else { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:730:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 728 |
 729 |     private func loadInitialHistory(conversationId: String) async {
 730 |         guard let data = try? await gql.execute(
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 731 |             query: Operations.getMessages,
 732 |             variables: ["conversationId": conversationId, "limit": 200]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:682:42: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 680 |         if let savedConv = session.conversationId {
 681 |             // Hydrate existing conversation, then load message history.
 682 |             if let data = try? await gql.execute(
     |                                          |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                          `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 683 |                 query: Operations.getConversationState,
 684 |                 variables: ["conversationId": savedConv]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:697:34: warning: sending value of non-Sendable type '[String : Any]' risks causing data races; this is an error in the Swift 6 language mode
 695 |
 696 |         // Fresh init.
 697 |         let data = try await gql.execute(query: Operations.initChat, variables: ["input": initChatInput()])
     |                                  |- warning: sending value of non-Sendable type '[String : Any]' risks causing data races; this is an error in the Swift 6 language mode
     |                                  `- note: sending main actor-isolated value of non-Sendable type '[String : Any]' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
 698 |         guard let result = data["initCsAiChat"] as? [String: Any],
 699 |               let convId = result["conversationId"] as? String, !convId.isEmpty
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:697:34: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 695 |
 696 |         // Fresh init.
 697 |         let data = try await gql.execute(query: Operations.initChat, variables: ["input": initChatInput()])
     |                                  |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                  `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 698 |         guard let result = data["initCsAiChat"] as? [String: Any],
 699 |               let convId = result["conversationId"] as? String, !convId.isEmpty
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:655:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 653 |
 654 |     private func fetchOrgConfig() async {
 655 |         guard let data = try? await gql.execute(query: Operations.getCsConfig),
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 656 |               let node = data["getCsConfig"],
 657 |               let cfg = try? GqlClient.decode(OrgChatConfig.self, from: node)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:1048:38: warning: sending 'vars.some' risks causing data races; this is an error in the Swift 6 language mode
1046 |                 }
1047 |             }
1048 |             let data = try await gql.execute(query: Operations.sendMessage, variables: vars)
     |                                      |- warning: sending 'vars.some' risks causing data races; this is an error in the Swift 6 language mode
     |                                      `- note: sending main actor-isolated 'vars.some' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
1049 |             guard let payload = data["sendCsCustomerMessage"] as? [String: Any] else { return }
1050 |             if let echo = payload["customerMessage"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:1048:38: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
1046 |                 }
1047 |             }
1048 |             let data = try await gql.execute(query: Operations.sendMessage, variables: vars)
     |                                      |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                      `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
1049 |             guard let payload = data["sendCsCustomerMessage"] as? [String: Any] else { return }
1050 |             if let echo = payload["customerMessage"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:432:57: warning: sending value of non-Sendable type '(Double) -> Void' risks causing data races; this is an error in the Swift 6 language mode
 430 |                     self.notifyAttachment(itemId)
 431 |                 }
 432 |                 let publicUrl = try await self.uploader.upload(
     |                                                         |- warning: sending value of non-Sendable type '(Double) -> Void' risks causing data races; this is an error in the Swift 6 language mode
     |                                                         `- note: sending main actor-isolated value of non-Sendable type '(Double) -> Void' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
 433 |                     data: resolved.data,
 434 |                     name: resolved.name,
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:432:57: warning: sending 'self.uploader' risks causing data races; this is an error in the Swift 6 language mode
 430 |                     self.notifyAttachment(itemId)
 431 |                 }
 432 |                 let publicUrl = try await self.uploader.upload(
     |                                                         |- warning: sending 'self.uploader' risks causing data races; this is an error in the Swift 6 language mode
     |                                                         `- note: sending main actor-isolated 'self.uploader' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 433 |                     data: resolved.data,
 434 |                     name: resolved.name,
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:572:47: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 570 |                 var vars: [String: Any] = ["conversationId": convId]
 571 |                 if let r = reason, !r.isEmpty { vars["reason"] = r }
 572 |                 let data = try await self.gql.execute(query: Operations.requestHandoff, variables: vars)
     |                                               |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                               `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 573 |                 guard let payload = data["requestCsHandoff"] as? [String: Any],
 574 |                       let assignmentDict = payload["assignment"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:593:37: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 591 |             var vars: [String: Any] = ["conversationId": convId]
 592 |             if let name = self.user?.customerName { vars["userName"] = name }
 593 |             _ = try? await self.gql.execute(query: Operations.sendTypingStart, variables: vars)
     |                                     |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                     `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 594 |         }
 595 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:601:37: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 599 |         Task { [weak self] in
 600 |             guard let self else { return }
 601 |             _ = try? await self.gql.execute(query: Operations.sendTypingStop, variables: ["conversationId": convId])
     |                                     |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                     `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 602 |         }
 603 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:781:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 779 |
 780 |         SseLog.debug("gap-fill fetching getCsMessages for conv=\(conversationId.suffix(8))")
 781 |         guard let data = try? await gql.execute(
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 782 |             query: Operations.getMessages,
 783 |             variables: ["conversationId": conversationId, "limit": 500]
[21/44] Compiling LiveAndAiChat DiagnosticLog.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Diagnostics/DiagnosticLog.swift:16:24: warning: static property '_handler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 |     private static let lock = NSLock()
16 |     private static var _handler: Handler?
   |                        |- warning: static property '_handler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert '_handler' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: add '@MainActor' to make static property '_handler' part of global actor 'MainActor'
   |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     /// Install (or remove) the global diagnostic log handler. Passing
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:572:47: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 570 |                 var vars: [String: Any] = ["conversationId": convId]
 571 |                 if let r = reason, !r.isEmpty { vars["reason"] = r }
 572 |                 let data = try await self.gql.execute(query: Operations.requestHandoff, variables: vars)
     |                                               `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 573 |                 guard let payload = data["requestCsHandoff"] as? [String: Any],
 574 |                       let assignmentDict = payload["assignment"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:593:37: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 591 |             var vars: [String: Any] = ["conversationId": convId]
 592 |             if let name = self.user?.customerName { vars["userName"] = name }
 593 |             _ = try? await self.gql.execute(query: Operations.sendTypingStart, variables: vars)
     |                                     `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 594 |         }
 595 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:601:37: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 599 |         Task { [weak self] in
 600 |             guard let self else { return }
 601 |             _ = try? await self.gql.execute(query: Operations.sendTypingStop, variables: ["conversationId": convId])
     |                                     `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 602 |         }
 603 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:648:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 646 |
 647 |     private func fetchBootstrap() async {
 648 |         guard let data = try? await gql.execute(query: Operations.getLiveChatBootstrap),
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 649 |               let node = data["getLiveChatBootstrap"]
 650 |         else { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:655:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 653 |
 654 |     private func fetchOrgConfig() async {
 655 |         guard let data = try? await gql.execute(query: Operations.getCsConfig),
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 656 |               let node = data["getCsConfig"],
 657 |               let cfg = try? GqlClient.decode(OrgChatConfig.self, from: node)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:682:42: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 680 |         if let savedConv = session.conversationId {
 681 |             // Hydrate existing conversation, then load message history.
 682 |             if let data = try? await gql.execute(
     |                                          `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 683 |                 query: Operations.getConversationState,
 684 |                 variables: ["conversationId": savedConv]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:697:34: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 695 |
 696 |         // Fresh init.
 697 |         let data = try await gql.execute(query: Operations.initChat, variables: ["input": initChatInput()])
     |                                  `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 698 |         guard let result = data["initCsAiChat"] as? [String: Any],
 699 |               let convId = result["conversationId"] as? String, !convId.isEmpty
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:730:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 728 |
 729 |     private func loadInitialHistory(conversationId: String) async {
 730 |         guard let data = try? await gql.execute(
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 731 |             query: Operations.getMessages,
 732 |             variables: ["conversationId": conversationId, "limit": 200]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:781:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 779 |
 780 |         SseLog.debug("gap-fill fetching getCsMessages for conv=\(conversationId.suffix(8))")
 781 |         guard let data = try? await gql.execute(
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 782 |             query: Operations.getMessages,
 783 |             variables: ["conversationId": conversationId, "limit": 500]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:1048:38: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
1046 |                 }
1047 |             }
1048 |             let data = try await gql.execute(query: Operations.sendMessage, variables: vars)
     |                                      `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
1049 |             guard let payload = data["sendCsCustomerMessage"] as? [String: Any] else { return }
1050 |             if let echo = payload["customerMessage"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:181:9: warning: cannot access property 'networkMonitor' with a non-sendable type 'NetworkMonitor' from nonisolated deinit; this is an error in the Swift 6 language mode
 179 |         // calling destroy() explicitly. As a defensive measure, stop the
 180 |         // network monitor (safe from any thread).
 181 |         networkMonitor.stop()
     |         `- warning: cannot access property 'networkMonitor' with a non-sendable type 'NetworkMonitor' from nonisolated deinit; this is an error in the Swift 6 language mode
 182 |     }
 183 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/NetworkMonitor.swift:11:13: note: class 'NetworkMonitor' does not conform to the 'Sendable' protocol
 9 | /// Mirrors Android's `NetworkMonitor` semantics: `isOnline` only flips
10 | /// true when the path is satisfied AND not expensive-only / unsatisfied.
11 | final class NetworkMonitor: ObservableObject {
   |             `- note: class 'NetworkMonitor' does not conform to the 'Sendable' protocol
12 |     @Published private(set) var isOnline: Bool = true
13 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:648:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 646 |
 647 |     private func fetchBootstrap() async {
 648 |         guard let data = try? await gql.execute(query: Operations.getLiveChatBootstrap),
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 649 |               let node = data["getLiveChatBootstrap"]
 650 |         else { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:730:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 728 |
 729 |     private func loadInitialHistory(conversationId: String) async {
 730 |         guard let data = try? await gql.execute(
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 731 |             query: Operations.getMessages,
 732 |             variables: ["conversationId": conversationId, "limit": 200]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:682:42: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 680 |         if let savedConv = session.conversationId {
 681 |             // Hydrate existing conversation, then load message history.
 682 |             if let data = try? await gql.execute(
     |                                          |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                          `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 683 |                 query: Operations.getConversationState,
 684 |                 variables: ["conversationId": savedConv]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:697:34: warning: sending value of non-Sendable type '[String : Any]' risks causing data races; this is an error in the Swift 6 language mode
 695 |
 696 |         // Fresh init.
 697 |         let data = try await gql.execute(query: Operations.initChat, variables: ["input": initChatInput()])
     |                                  |- warning: sending value of non-Sendable type '[String : Any]' risks causing data races; this is an error in the Swift 6 language mode
     |                                  `- note: sending main actor-isolated value of non-Sendable type '[String : Any]' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
 698 |         guard let result = data["initCsAiChat"] as? [String: Any],
 699 |               let convId = result["conversationId"] as? String, !convId.isEmpty
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:697:34: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 695 |
 696 |         // Fresh init.
 697 |         let data = try await gql.execute(query: Operations.initChat, variables: ["input": initChatInput()])
     |                                  |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                  `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 698 |         guard let result = data["initCsAiChat"] as? [String: Any],
 699 |               let convId = result["conversationId"] as? String, !convId.isEmpty
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:655:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 653 |
 654 |     private func fetchOrgConfig() async {
 655 |         guard let data = try? await gql.execute(query: Operations.getCsConfig),
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 656 |               let node = data["getCsConfig"],
 657 |               let cfg = try? GqlClient.decode(OrgChatConfig.self, from: node)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:1048:38: warning: sending 'vars.some' risks causing data races; this is an error in the Swift 6 language mode
1046 |                 }
1047 |             }
1048 |             let data = try await gql.execute(query: Operations.sendMessage, variables: vars)
     |                                      |- warning: sending 'vars.some' risks causing data races; this is an error in the Swift 6 language mode
     |                                      `- note: sending main actor-isolated 'vars.some' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
1049 |             guard let payload = data["sendCsCustomerMessage"] as? [String: Any] else { return }
1050 |             if let echo = payload["customerMessage"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:1048:38: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
1046 |                 }
1047 |             }
1048 |             let data = try await gql.execute(query: Operations.sendMessage, variables: vars)
     |                                      |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                      `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
1049 |             guard let payload = data["sendCsCustomerMessage"] as? [String: Any] else { return }
1050 |             if let echo = payload["customerMessage"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:432:57: warning: sending value of non-Sendable type '(Double) -> Void' risks causing data races; this is an error in the Swift 6 language mode
 430 |                     self.notifyAttachment(itemId)
 431 |                 }
 432 |                 let publicUrl = try await self.uploader.upload(
     |                                                         |- warning: sending value of non-Sendable type '(Double) -> Void' risks causing data races; this is an error in the Swift 6 language mode
     |                                                         `- note: sending main actor-isolated value of non-Sendable type '(Double) -> Void' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
 433 |                     data: resolved.data,
 434 |                     name: resolved.name,
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:432:57: warning: sending 'self.uploader' risks causing data races; this is an error in the Swift 6 language mode
 430 |                     self.notifyAttachment(itemId)
 431 |                 }
 432 |                 let publicUrl = try await self.uploader.upload(
     |                                                         |- warning: sending 'self.uploader' risks causing data races; this is an error in the Swift 6 language mode
     |                                                         `- note: sending main actor-isolated 'self.uploader' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 433 |                     data: resolved.data,
 434 |                     name: resolved.name,
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:572:47: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 570 |                 var vars: [String: Any] = ["conversationId": convId]
 571 |                 if let r = reason, !r.isEmpty { vars["reason"] = r }
 572 |                 let data = try await self.gql.execute(query: Operations.requestHandoff, variables: vars)
     |                                               |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                               `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 573 |                 guard let payload = data["requestCsHandoff"] as? [String: Any],
 574 |                       let assignmentDict = payload["assignment"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:593:37: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 591 |             var vars: [String: Any] = ["conversationId": convId]
 592 |             if let name = self.user?.customerName { vars["userName"] = name }
 593 |             _ = try? await self.gql.execute(query: Operations.sendTypingStart, variables: vars)
     |                                     |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                     `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 594 |         }
 595 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:601:37: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 599 |         Task { [weak self] in
 600 |             guard let self else { return }
 601 |             _ = try? await self.gql.execute(query: Operations.sendTypingStop, variables: ["conversationId": convId])
     |                                     |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                     `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 602 |         }
 603 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:781:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 779 |
 780 |         SseLog.debug("gap-fill fetching getCsMessages for conv=\(conversationId.suffix(8))")
 781 |         guard let data = try? await gql.execute(
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 782 |             query: Operations.getMessages,
 783 |             variables: ["conversationId": conversationId, "limit": 500]
[22/44] Compiling LiveAndAiChat Haptics.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Diagnostics/DiagnosticLog.swift:16:24: warning: static property '_handler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 |     private static let lock = NSLock()
16 |     private static var _handler: Handler?
   |                        |- warning: static property '_handler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert '_handler' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: add '@MainActor' to make static property '_handler' part of global actor 'MainActor'
   |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     /// Install (or remove) the global diagnostic log handler. Passing
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:572:47: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 570 |                 var vars: [String: Any] = ["conversationId": convId]
 571 |                 if let r = reason, !r.isEmpty { vars["reason"] = r }
 572 |                 let data = try await self.gql.execute(query: Operations.requestHandoff, variables: vars)
     |                                               `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 573 |                 guard let payload = data["requestCsHandoff"] as? [String: Any],
 574 |                       let assignmentDict = payload["assignment"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:593:37: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 591 |             var vars: [String: Any] = ["conversationId": convId]
 592 |             if let name = self.user?.customerName { vars["userName"] = name }
 593 |             _ = try? await self.gql.execute(query: Operations.sendTypingStart, variables: vars)
     |                                     `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 594 |         }
 595 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:601:37: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 599 |         Task { [weak self] in
 600 |             guard let self else { return }
 601 |             _ = try? await self.gql.execute(query: Operations.sendTypingStop, variables: ["conversationId": convId])
     |                                     `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 602 |         }
 603 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:648:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 646 |
 647 |     private func fetchBootstrap() async {
 648 |         guard let data = try? await gql.execute(query: Operations.getLiveChatBootstrap),
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 649 |               let node = data["getLiveChatBootstrap"]
 650 |         else { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:655:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 653 |
 654 |     private func fetchOrgConfig() async {
 655 |         guard let data = try? await gql.execute(query: Operations.getCsConfig),
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 656 |               let node = data["getCsConfig"],
 657 |               let cfg = try? GqlClient.decode(OrgChatConfig.self, from: node)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:682:42: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 680 |         if let savedConv = session.conversationId {
 681 |             // Hydrate existing conversation, then load message history.
 682 |             if let data = try? await gql.execute(
     |                                          `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 683 |                 query: Operations.getConversationState,
 684 |                 variables: ["conversationId": savedConv]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:697:34: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 695 |
 696 |         // Fresh init.
 697 |         let data = try await gql.execute(query: Operations.initChat, variables: ["input": initChatInput()])
     |                                  `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 698 |         guard let result = data["initCsAiChat"] as? [String: Any],
 699 |               let convId = result["conversationId"] as? String, !convId.isEmpty
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:730:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 728 |
 729 |     private func loadInitialHistory(conversationId: String) async {
 730 |         guard let data = try? await gql.execute(
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 731 |             query: Operations.getMessages,
 732 |             variables: ["conversationId": conversationId, "limit": 200]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:781:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 779 |
 780 |         SseLog.debug("gap-fill fetching getCsMessages for conv=\(conversationId.suffix(8))")
 781 |         guard let data = try? await gql.execute(
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 782 |             query: Operations.getMessages,
 783 |             variables: ["conversationId": conversationId, "limit": 500]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:1048:38: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
1046 |                 }
1047 |             }
1048 |             let data = try await gql.execute(query: Operations.sendMessage, variables: vars)
     |                                      `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
1049 |             guard let payload = data["sendCsCustomerMessage"] as? [String: Any] else { return }
1050 |             if let echo = payload["customerMessage"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:181:9: warning: cannot access property 'networkMonitor' with a non-sendable type 'NetworkMonitor' from nonisolated deinit; this is an error in the Swift 6 language mode
 179 |         // calling destroy() explicitly. As a defensive measure, stop the
 180 |         // network monitor (safe from any thread).
 181 |         networkMonitor.stop()
     |         `- warning: cannot access property 'networkMonitor' with a non-sendable type 'NetworkMonitor' from nonisolated deinit; this is an error in the Swift 6 language mode
 182 |     }
 183 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/NetworkMonitor.swift:11:13: note: class 'NetworkMonitor' does not conform to the 'Sendable' protocol
 9 | /// Mirrors Android's `NetworkMonitor` semantics: `isOnline` only flips
10 | /// true when the path is satisfied AND not expensive-only / unsatisfied.
11 | final class NetworkMonitor: ObservableObject {
   |             `- note: class 'NetworkMonitor' does not conform to the 'Sendable' protocol
12 |     @Published private(set) var isOnline: Bool = true
13 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:648:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 646 |
 647 |     private func fetchBootstrap() async {
 648 |         guard let data = try? await gql.execute(query: Operations.getLiveChatBootstrap),
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 649 |               let node = data["getLiveChatBootstrap"]
 650 |         else { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:730:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 728 |
 729 |     private func loadInitialHistory(conversationId: String) async {
 730 |         guard let data = try? await gql.execute(
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 731 |             query: Operations.getMessages,
 732 |             variables: ["conversationId": conversationId, "limit": 200]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:682:42: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 680 |         if let savedConv = session.conversationId {
 681 |             // Hydrate existing conversation, then load message history.
 682 |             if let data = try? await gql.execute(
     |                                          |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                          `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 683 |                 query: Operations.getConversationState,
 684 |                 variables: ["conversationId": savedConv]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:697:34: warning: sending value of non-Sendable type '[String : Any]' risks causing data races; this is an error in the Swift 6 language mode
 695 |
 696 |         // Fresh init.
 697 |         let data = try await gql.execute(query: Operations.initChat, variables: ["input": initChatInput()])
     |                                  |- warning: sending value of non-Sendable type '[String : Any]' risks causing data races; this is an error in the Swift 6 language mode
     |                                  `- note: sending main actor-isolated value of non-Sendable type '[String : Any]' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
 698 |         guard let result = data["initCsAiChat"] as? [String: Any],
 699 |               let convId = result["conversationId"] as? String, !convId.isEmpty
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:697:34: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 695 |
 696 |         // Fresh init.
 697 |         let data = try await gql.execute(query: Operations.initChat, variables: ["input": initChatInput()])
     |                                  |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                  `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 698 |         guard let result = data["initCsAiChat"] as? [String: Any],
 699 |               let convId = result["conversationId"] as? String, !convId.isEmpty
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:655:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 653 |
 654 |     private func fetchOrgConfig() async {
 655 |         guard let data = try? await gql.execute(query: Operations.getCsConfig),
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 656 |               let node = data["getCsConfig"],
 657 |               let cfg = try? GqlClient.decode(OrgChatConfig.self, from: node)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:1048:38: warning: sending 'vars.some' risks causing data races; this is an error in the Swift 6 language mode
1046 |                 }
1047 |             }
1048 |             let data = try await gql.execute(query: Operations.sendMessage, variables: vars)
     |                                      |- warning: sending 'vars.some' risks causing data races; this is an error in the Swift 6 language mode
     |                                      `- note: sending main actor-isolated 'vars.some' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
1049 |             guard let payload = data["sendCsCustomerMessage"] as? [String: Any] else { return }
1050 |             if let echo = payload["customerMessage"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:1048:38: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
1046 |                 }
1047 |             }
1048 |             let data = try await gql.execute(query: Operations.sendMessage, variables: vars)
     |                                      |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                      `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
1049 |             guard let payload = data["sendCsCustomerMessage"] as? [String: Any] else { return }
1050 |             if let echo = payload["customerMessage"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:432:57: warning: sending value of non-Sendable type '(Double) -> Void' risks causing data races; this is an error in the Swift 6 language mode
 430 |                     self.notifyAttachment(itemId)
 431 |                 }
 432 |                 let publicUrl = try await self.uploader.upload(
     |                                                         |- warning: sending value of non-Sendable type '(Double) -> Void' risks causing data races; this is an error in the Swift 6 language mode
     |                                                         `- note: sending main actor-isolated value of non-Sendable type '(Double) -> Void' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
 433 |                     data: resolved.data,
 434 |                     name: resolved.name,
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:432:57: warning: sending 'self.uploader' risks causing data races; this is an error in the Swift 6 language mode
 430 |                     self.notifyAttachment(itemId)
 431 |                 }
 432 |                 let publicUrl = try await self.uploader.upload(
     |                                                         |- warning: sending 'self.uploader' risks causing data races; this is an error in the Swift 6 language mode
     |                                                         `- note: sending main actor-isolated 'self.uploader' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 433 |                     data: resolved.data,
 434 |                     name: resolved.name,
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:572:47: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 570 |                 var vars: [String: Any] = ["conversationId": convId]
 571 |                 if let r = reason, !r.isEmpty { vars["reason"] = r }
 572 |                 let data = try await self.gql.execute(query: Operations.requestHandoff, variables: vars)
     |                                               |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                               `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 573 |                 guard let payload = data["requestCsHandoff"] as? [String: Any],
 574 |                       let assignmentDict = payload["assignment"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:593:37: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 591 |             var vars: [String: Any] = ["conversationId": convId]
 592 |             if let name = self.user?.customerName { vars["userName"] = name }
 593 |             _ = try? await self.gql.execute(query: Operations.sendTypingStart, variables: vars)
     |                                     |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                     `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 594 |         }
 595 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:601:37: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 599 |         Task { [weak self] in
 600 |             guard let self else { return }
 601 |             _ = try? await self.gql.execute(query: Operations.sendTypingStop, variables: ["conversationId": convId])
     |                                     |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                     `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 602 |         }
 603 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:781:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 779 |
 780 |         SseLog.debug("gap-fill fetching getCsMessages for conv=\(conversationId.suffix(8))")
 781 |         guard let data = try? await gql.execute(
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 782 |             query: Operations.getMessages,
 783 |             variables: ["conversationId": conversationId, "limit": 500]
[23/44] Compiling LiveAndAiChat LiveAndAiChat.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Diagnostics/DiagnosticLog.swift:16:24: warning: static property '_handler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
14 |
15 |     private static let lock = NSLock()
16 |     private static var _handler: Handler?
   |                        |- warning: static property '_handler' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert '_handler' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: add '@MainActor' to make static property '_handler' part of global actor 'MainActor'
   |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
17 |
18 |     /// Install (or remove) the global diagnostic log handler. Passing
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:572:47: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 570 |                 var vars: [String: Any] = ["conversationId": convId]
 571 |                 if let r = reason, !r.isEmpty { vars["reason"] = r }
 572 |                 let data = try await self.gql.execute(query: Operations.requestHandoff, variables: vars)
     |                                               `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 573 |                 guard let payload = data["requestCsHandoff"] as? [String: Any],
 574 |                       let assignmentDict = payload["assignment"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:593:37: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 591 |             var vars: [String: Any] = ["conversationId": convId]
 592 |             if let name = self.user?.customerName { vars["userName"] = name }
 593 |             _ = try? await self.gql.execute(query: Operations.sendTypingStart, variables: vars)
     |                                     `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 594 |         }
 595 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:601:37: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 599 |         Task { [weak self] in
 600 |             guard let self else { return }
 601 |             _ = try? await self.gql.execute(query: Operations.sendTypingStop, variables: ["conversationId": convId])
     |                                     `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 602 |         }
 603 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:648:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 646 |
 647 |     private func fetchBootstrap() async {
 648 |         guard let data = try? await gql.execute(query: Operations.getLiveChatBootstrap),
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 649 |               let node = data["getLiveChatBootstrap"]
 650 |         else { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:655:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 653 |
 654 |     private func fetchOrgConfig() async {
 655 |         guard let data = try? await gql.execute(query: Operations.getCsConfig),
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 656 |               let node = data["getCsConfig"],
 657 |               let cfg = try? GqlClient.decode(OrgChatConfig.self, from: node)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:682:42: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 680 |         if let savedConv = session.conversationId {
 681 |             // Hydrate existing conversation, then load message history.
 682 |             if let data = try? await gql.execute(
     |                                          `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 683 |                 query: Operations.getConversationState,
 684 |                 variables: ["conversationId": savedConv]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:697:34: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 695 |
 696 |         // Fresh init.
 697 |         let data = try await gql.execute(query: Operations.initChat, variables: ["input": initChatInput()])
     |                                  `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 698 |         guard let result = data["initCsAiChat"] as? [String: Any],
 699 |               let convId = result["conversationId"] as? String, !convId.isEmpty
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:730:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 728 |
 729 |     private func loadInitialHistory(conversationId: String) async {
 730 |         guard let data = try? await gql.execute(
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 731 |             query: Operations.getMessages,
 732 |             variables: ["conversationId": conversationId, "limit": 200]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:781:41: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 779 |
 780 |         SseLog.debug("gap-fill fetching getCsMessages for conv=\(conversationId.suffix(8))")
 781 |         guard let data = try? await gql.execute(
     |                                         `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
 782 |             query: Operations.getMessages,
 783 |             variables: ["conversationId": conversationId, "limit": 500]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:1048:38: warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
1046 |                 }
1047 |             }
1048 |             let data = try await gql.execute(query: Operations.sendMessage, variables: vars)
     |                                      `- warning: non-sendable result type '[String : Any]' cannot be sent from nonisolated context in call to instance method 'execute(query:variables:operationName:)'; this is an error in the Swift 6 language mode
1049 |             guard let payload = data["sendCsCustomerMessage"] as? [String: Any] else { return }
1050 |             if let echo = payload["customerMessage"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:181:9: warning: cannot access property 'networkMonitor' with a non-sendable type 'NetworkMonitor' from nonisolated deinit; this is an error in the Swift 6 language mode
 179 |         // calling destroy() explicitly. As a defensive measure, stop the
 180 |         // network monitor (safe from any thread).
 181 |         networkMonitor.stop()
     |         `- warning: cannot access property 'networkMonitor' with a non-sendable type 'NetworkMonitor' from nonisolated deinit; this is an error in the Swift 6 language mode
 182 |     }
 183 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/NetworkMonitor.swift:11:13: note: class 'NetworkMonitor' does not conform to the 'Sendable' protocol
 9 | /// Mirrors Android's `NetworkMonitor` semantics: `isOnline` only flips
10 | /// true when the path is satisfied AND not expensive-only / unsatisfied.
11 | final class NetworkMonitor: ObservableObject {
   |             `- note: class 'NetworkMonitor' does not conform to the 'Sendable' protocol
12 |     @Published private(set) var isOnline: Bool = true
13 |
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:648:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 646 |
 647 |     private func fetchBootstrap() async {
 648 |         guard let data = try? await gql.execute(query: Operations.getLiveChatBootstrap),
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 649 |               let node = data["getLiveChatBootstrap"]
 650 |         else { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:730:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 728 |
 729 |     private func loadInitialHistory(conversationId: String) async {
 730 |         guard let data = try? await gql.execute(
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 731 |             query: Operations.getMessages,
 732 |             variables: ["conversationId": conversationId, "limit": 200]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:682:42: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 680 |         if let savedConv = session.conversationId {
 681 |             // Hydrate existing conversation, then load message history.
 682 |             if let data = try? await gql.execute(
     |                                          |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                          `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 683 |                 query: Operations.getConversationState,
 684 |                 variables: ["conversationId": savedConv]
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:697:34: warning: sending value of non-Sendable type '[String : Any]' risks causing data races; this is an error in the Swift 6 language mode
 695 |
 696 |         // Fresh init.
 697 |         let data = try await gql.execute(query: Operations.initChat, variables: ["input": initChatInput()])
     |                                  |- warning: sending value of non-Sendable type '[String : Any]' risks causing data races; this is an error in the Swift 6 language mode
     |                                  `- note: sending main actor-isolated value of non-Sendable type '[String : Any]' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
 698 |         guard let result = data["initCsAiChat"] as? [String: Any],
 699 |               let convId = result["conversationId"] as? String, !convId.isEmpty
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:697:34: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 695 |
 696 |         // Fresh init.
 697 |         let data = try await gql.execute(query: Operations.initChat, variables: ["input": initChatInput()])
     |                                  |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                  `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 698 |         guard let result = data["initCsAiChat"] as? [String: Any],
 699 |               let convId = result["conversationId"] as? String, !convId.isEmpty
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:655:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 653 |
 654 |     private func fetchOrgConfig() async {
 655 |         guard let data = try? await gql.execute(query: Operations.getCsConfig),
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 656 |               let node = data["getCsConfig"],
 657 |               let cfg = try? GqlClient.decode(OrgChatConfig.self, from: node)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:1048:38: warning: sending 'vars.some' risks causing data races; this is an error in the Swift 6 language mode
1046 |                 }
1047 |             }
1048 |             let data = try await gql.execute(query: Operations.sendMessage, variables: vars)
     |                                      |- warning: sending 'vars.some' risks causing data races; this is an error in the Swift 6 language mode
     |                                      `- note: sending main actor-isolated 'vars.some' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
1049 |             guard let payload = data["sendCsCustomerMessage"] as? [String: Any] else { return }
1050 |             if let echo = payload["customerMessage"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:1048:38: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
1046 |                 }
1047 |             }
1048 |             let data = try await gql.execute(query: Operations.sendMessage, variables: vars)
     |                                      |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                      `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
1049 |             guard let payload = data["sendCsCustomerMessage"] as? [String: Any] else { return }
1050 |             if let echo = payload["customerMessage"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:432:57: warning: sending value of non-Sendable type '(Double) -> Void' risks causing data races; this is an error in the Swift 6 language mode
 430 |                     self.notifyAttachment(itemId)
 431 |                 }
 432 |                 let publicUrl = try await self.uploader.upload(
     |                                                         |- warning: sending value of non-Sendable type '(Double) -> Void' risks causing data races; this is an error in the Swift 6 language mode
     |                                                         `- note: sending main actor-isolated value of non-Sendable type '(Double) -> Void' to nonisolated callee risks causing races in between main actor-isolated and nonisolated uses
 433 |                     data: resolved.data,
 434 |                     name: resolved.name,
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:432:57: warning: sending 'self.uploader' risks causing data races; this is an error in the Swift 6 language mode
 430 |                     self.notifyAttachment(itemId)
 431 |                 }
 432 |                 let publicUrl = try await self.uploader.upload(
     |                                                         |- warning: sending 'self.uploader' risks causing data races; this is an error in the Swift 6 language mode
     |                                                         `- note: sending main actor-isolated 'self.uploader' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 433 |                     data: resolved.data,
 434 |                     name: resolved.name,
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:572:47: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 570 |                 var vars: [String: Any] = ["conversationId": convId]
 571 |                 if let r = reason, !r.isEmpty { vars["reason"] = r }
 572 |                 let data = try await self.gql.execute(query: Operations.requestHandoff, variables: vars)
     |                                               |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                               `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 573 |                 guard let payload = data["requestCsHandoff"] as? [String: Any],
 574 |                       let assignmentDict = payload["assignment"] as? [String: Any],
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:593:37: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 591 |             var vars: [String: Any] = ["conversationId": convId]
 592 |             if let name = self.user?.customerName { vars["userName"] = name }
 593 |             _ = try? await self.gql.execute(query: Operations.sendTypingStart, variables: vars)
     |                                     |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                     `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 594 |         }
 595 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:601:37: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 599 |         Task { [weak self] in
 600 |             guard let self else { return }
 601 |             _ = try? await self.gql.execute(query: Operations.sendTypingStop, variables: ["conversationId": convId])
     |                                     |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                     `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 602 |         }
 603 |     }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/LiveAndAiChat.swift:781:41: warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
 779 |
 780 |         SseLog.debug("gap-fill fetching getCsMessages for conv=\(conversationId.suffix(8))")
 781 |         guard let data = try? await gql.execute(
     |                                         |- warning: sending 'self.gql' risks causing data races; this is an error in the Swift 6 language mode
     |                                         `- note: sending main actor-isolated 'self.gql' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
 782 |             query: Operations.getMessages,
 783 |             variables: ["conversationId": conversationId, "limit": 500]
[24/44] Compiling LiveAndAiChat HTTP1EventSource.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/HTTP1EventSource.swift:126:13: warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 30 | /// fine there — those responses are finite and small).
 31 | @available(iOS 13.0, macOS 10.15, *)
 32 | final class HTTP1EventSource {
    |             `- note: class 'HTTP1EventSource' does not conform to the 'Sendable' protocol
 33 |
 34 |     // MARK: - Public surface (mirrors the LACEventSource shape)
    :
124 |         SseLog.debug("HTTP1 connect → \(url.absoluteString) (ALPN=http/1.1)")
125 |         connection.stateUpdateHandler = { [weak self] state in
126 |             self?.handleConnectionState(state)
    |             `- warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
127 |         }
128 |         connection.start(queue: queue)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/HTTP1EventSource.swift:202:17: warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
 30 | /// fine there — those responses are finite and small).
 31 | @available(iOS 13.0, macOS 10.15, *)
 32 | final class HTTP1EventSource {
    |             `- note: class 'HTTP1EventSource' does not conform to the 'Sendable' protocol
 33 |
 34 |     // MARK: - Public surface (mirrors the LACEventSource shape)
    :
200 |             if let error {
201 |                 SseLog.warn("HTTP1 send error: \(error.localizedDescription)")
202 |                 self?.finish(error: error)
    |                 `- warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
203 |             }
204 |         })
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/HTTP1EventSource.swift:211:23: warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
 30 | /// fine there — those responses are finite and small).
 31 | @available(iOS 13.0, macOS 10.15, *)
 32 | final class HTTP1EventSource {
    |             `- note: class 'HTTP1EventSource' does not conform to the 'Sendable' protocol
 33 |
 34 |     // MARK: - Public surface (mirrors the LACEventSource shape)
    :
209 |     private func receiveLoop() {
210 |         connection?.receive(minimumIncompleteLength: 1, maximumLength: 65_536) { [weak self] data, _, isComplete, error in
211 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
212 |             if let data, !data.isEmpty {
213 |                 self.handleIncoming(data)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/NetworkMonitor.swift:24:17: warning: capture of 'self' with non-sendable type 'NetworkMonitor?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 9 | /// Mirrors Android's `NetworkMonitor` semantics: `isOnline` only flips
10 | /// true when the path is satisfied AND not expensive-only / unsatisfied.
11 | final class NetworkMonitor: ObservableObject {
   |             `- note: class 'NetworkMonitor' does not conform to the 'Sendable' protocol
12 |     @Published private(set) var isOnline: Bool = true
13 |
   :
22 |             let online = path.status == .satisfied
23 |             DispatchQueue.main.async {
24 |                 self?.isOnline = online
   |                 `- warning: capture of 'self' with non-sendable type 'NetworkMonitor?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
25 |             }
26 |         }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:107:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
105 |     func start() {
106 |         queue.async { [weak self] in
107 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
108 |             if self.stopped { return }
109 |             if self.connectTask != nil { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:118:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
116 |     func stop() {
117 |         queue.async { [weak self] in
118 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
119 |             self.stopped = true
120 |             self.connectTask?.cancel()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:316:27: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
314 |         await withCheckedContinuation { (cont: CheckedContinuation<Void, Never>) in
315 |             queue.async { [weak self] in
316 |                 guard let self else {
    |                           `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
317 |                     cont.resume()
318 |                     return
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:344:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
342 |     private func onStreamOpened() {
343 |         queue.async { [weak self] in
344 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
345 |             self.attempts = 0
346 |             self.lastEventAt = Date()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:430:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
428 |     private func onStreamClosed() {
429 |         queue.async { [weak self] in
430 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
431 |             SseLog.debug("stream CLOSED (stopped=\(self.stopped))")
432 |             self.eventSource = nil
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:110:37: warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
108 |             if self.stopped { return }
109 |             if self.connectTask != nil { return }
110 |             self.connectTask = Task.detached { [weak self] in
    |                              |      |- warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
    |                              |      `- note: Passing value of non-Sendable type '() async -> Void' as a 'sending' argument risks causing races in between local and caller code
    |                              `- note: access can happen concurrently
111 |                 await self?.connectLoop()
112 |             }
[25/44] Compiling LiveAndAiChat NetworkMonitor.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/HTTP1EventSource.swift:126:13: warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 30 | /// fine there — those responses are finite and small).
 31 | @available(iOS 13.0, macOS 10.15, *)
 32 | final class HTTP1EventSource {
    |             `- note: class 'HTTP1EventSource' does not conform to the 'Sendable' protocol
 33 |
 34 |     // MARK: - Public surface (mirrors the LACEventSource shape)
    :
124 |         SseLog.debug("HTTP1 connect → \(url.absoluteString) (ALPN=http/1.1)")
125 |         connection.stateUpdateHandler = { [weak self] state in
126 |             self?.handleConnectionState(state)
    |             `- warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
127 |         }
128 |         connection.start(queue: queue)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/HTTP1EventSource.swift:202:17: warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
 30 | /// fine there — those responses are finite and small).
 31 | @available(iOS 13.0, macOS 10.15, *)
 32 | final class HTTP1EventSource {
    |             `- note: class 'HTTP1EventSource' does not conform to the 'Sendable' protocol
 33 |
 34 |     // MARK: - Public surface (mirrors the LACEventSource shape)
    :
200 |             if let error {
201 |                 SseLog.warn("HTTP1 send error: \(error.localizedDescription)")
202 |                 self?.finish(error: error)
    |                 `- warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
203 |             }
204 |         })
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/HTTP1EventSource.swift:211:23: warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
 30 | /// fine there — those responses are finite and small).
 31 | @available(iOS 13.0, macOS 10.15, *)
 32 | final class HTTP1EventSource {
    |             `- note: class 'HTTP1EventSource' does not conform to the 'Sendable' protocol
 33 |
 34 |     // MARK: - Public surface (mirrors the LACEventSource shape)
    :
209 |     private func receiveLoop() {
210 |         connection?.receive(minimumIncompleteLength: 1, maximumLength: 65_536) { [weak self] data, _, isComplete, error in
211 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
212 |             if let data, !data.isEmpty {
213 |                 self.handleIncoming(data)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/NetworkMonitor.swift:24:17: warning: capture of 'self' with non-sendable type 'NetworkMonitor?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 9 | /// Mirrors Android's `NetworkMonitor` semantics: `isOnline` only flips
10 | /// true when the path is satisfied AND not expensive-only / unsatisfied.
11 | final class NetworkMonitor: ObservableObject {
   |             `- note: class 'NetworkMonitor' does not conform to the 'Sendable' protocol
12 |     @Published private(set) var isOnline: Bool = true
13 |
   :
22 |             let online = path.status == .satisfied
23 |             DispatchQueue.main.async {
24 |                 self?.isOnline = online
   |                 `- warning: capture of 'self' with non-sendable type 'NetworkMonitor?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
25 |             }
26 |         }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:107:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
105 |     func start() {
106 |         queue.async { [weak self] in
107 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
108 |             if self.stopped { return }
109 |             if self.connectTask != nil { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:118:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
116 |     func stop() {
117 |         queue.async { [weak self] in
118 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
119 |             self.stopped = true
120 |             self.connectTask?.cancel()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:316:27: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
314 |         await withCheckedContinuation { (cont: CheckedContinuation<Void, Never>) in
315 |             queue.async { [weak self] in
316 |                 guard let self else {
    |                           `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
317 |                     cont.resume()
318 |                     return
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:344:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
342 |     private func onStreamOpened() {
343 |         queue.async { [weak self] in
344 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
345 |             self.attempts = 0
346 |             self.lastEventAt = Date()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:430:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
428 |     private func onStreamClosed() {
429 |         queue.async { [weak self] in
430 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
431 |             SseLog.debug("stream CLOSED (stopped=\(self.stopped))")
432 |             self.eventSource = nil
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:110:37: warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
108 |             if self.stopped { return }
109 |             if self.connectTask != nil { return }
110 |             self.connectTask = Task.detached { [weak self] in
    |                              |      |- warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
    |                              |      `- note: Passing value of non-Sendable type '() async -> Void' as a 'sending' argument risks causing races in between local and caller code
    |                              `- note: access can happen concurrently
111 |                 await self?.connectLoop()
112 |             }
[26/44] Compiling LiveAndAiChat SseEventParser.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/HTTP1EventSource.swift:126:13: warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 30 | /// fine there — those responses are finite and small).
 31 | @available(iOS 13.0, macOS 10.15, *)
 32 | final class HTTP1EventSource {
    |             `- note: class 'HTTP1EventSource' does not conform to the 'Sendable' protocol
 33 |
 34 |     // MARK: - Public surface (mirrors the LACEventSource shape)
    :
124 |         SseLog.debug("HTTP1 connect → \(url.absoluteString) (ALPN=http/1.1)")
125 |         connection.stateUpdateHandler = { [weak self] state in
126 |             self?.handleConnectionState(state)
    |             `- warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
127 |         }
128 |         connection.start(queue: queue)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/HTTP1EventSource.swift:202:17: warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
 30 | /// fine there — those responses are finite and small).
 31 | @available(iOS 13.0, macOS 10.15, *)
 32 | final class HTTP1EventSource {
    |             `- note: class 'HTTP1EventSource' does not conform to the 'Sendable' protocol
 33 |
 34 |     // MARK: - Public surface (mirrors the LACEventSource shape)
    :
200 |             if let error {
201 |                 SseLog.warn("HTTP1 send error: \(error.localizedDescription)")
202 |                 self?.finish(error: error)
    |                 `- warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
203 |             }
204 |         })
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/HTTP1EventSource.swift:211:23: warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
 30 | /// fine there — those responses are finite and small).
 31 | @available(iOS 13.0, macOS 10.15, *)
 32 | final class HTTP1EventSource {
    |             `- note: class 'HTTP1EventSource' does not conform to the 'Sendable' protocol
 33 |
 34 |     // MARK: - Public surface (mirrors the LACEventSource shape)
    :
209 |     private func receiveLoop() {
210 |         connection?.receive(minimumIncompleteLength: 1, maximumLength: 65_536) { [weak self] data, _, isComplete, error in
211 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
212 |             if let data, !data.isEmpty {
213 |                 self.handleIncoming(data)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/NetworkMonitor.swift:24:17: warning: capture of 'self' with non-sendable type 'NetworkMonitor?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 9 | /// Mirrors Android's `NetworkMonitor` semantics: `isOnline` only flips
10 | /// true when the path is satisfied AND not expensive-only / unsatisfied.
11 | final class NetworkMonitor: ObservableObject {
   |             `- note: class 'NetworkMonitor' does not conform to the 'Sendable' protocol
12 |     @Published private(set) var isOnline: Bool = true
13 |
   :
22 |             let online = path.status == .satisfied
23 |             DispatchQueue.main.async {
24 |                 self?.isOnline = online
   |                 `- warning: capture of 'self' with non-sendable type 'NetworkMonitor?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
25 |             }
26 |         }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:107:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
105 |     func start() {
106 |         queue.async { [weak self] in
107 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
108 |             if self.stopped { return }
109 |             if self.connectTask != nil { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:118:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
116 |     func stop() {
117 |         queue.async { [weak self] in
118 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
119 |             self.stopped = true
120 |             self.connectTask?.cancel()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:316:27: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
314 |         await withCheckedContinuation { (cont: CheckedContinuation<Void, Never>) in
315 |             queue.async { [weak self] in
316 |                 guard let self else {
    |                           `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
317 |                     cont.resume()
318 |                     return
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:344:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
342 |     private func onStreamOpened() {
343 |         queue.async { [weak self] in
344 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
345 |             self.attempts = 0
346 |             self.lastEventAt = Date()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:430:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
428 |     private func onStreamClosed() {
429 |         queue.async { [weak self] in
430 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
431 |             SseLog.debug("stream CLOSED (stopped=\(self.stopped))")
432 |             self.eventSource = nil
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:110:37: warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
108 |             if self.stopped { return }
109 |             if self.connectTask != nil { return }
110 |             self.connectTask = Task.detached { [weak self] in
    |                              |      |- warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
    |                              |      `- note: Passing value of non-Sendable type '() async -> Void' as a 'sending' argument risks causing races in between local and caller code
    |                              `- note: access can happen concurrently
111 |                 await self?.connectLoop()
112 |             }
[27/44] Compiling LiveAndAiChat SseSubscriptionClient.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/HTTP1EventSource.swift:126:13: warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 30 | /// fine there — those responses are finite and small).
 31 | @available(iOS 13.0, macOS 10.15, *)
 32 | final class HTTP1EventSource {
    |             `- note: class 'HTTP1EventSource' does not conform to the 'Sendable' protocol
 33 |
 34 |     // MARK: - Public surface (mirrors the LACEventSource shape)
    :
124 |         SseLog.debug("HTTP1 connect → \(url.absoluteString) (ALPN=http/1.1)")
125 |         connection.stateUpdateHandler = { [weak self] state in
126 |             self?.handleConnectionState(state)
    |             `- warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
127 |         }
128 |         connection.start(queue: queue)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/HTTP1EventSource.swift:202:17: warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
 30 | /// fine there — those responses are finite and small).
 31 | @available(iOS 13.0, macOS 10.15, *)
 32 | final class HTTP1EventSource {
    |             `- note: class 'HTTP1EventSource' does not conform to the 'Sendable' protocol
 33 |
 34 |     // MARK: - Public surface (mirrors the LACEventSource shape)
    :
200 |             if let error {
201 |                 SseLog.warn("HTTP1 send error: \(error.localizedDescription)")
202 |                 self?.finish(error: error)
    |                 `- warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
203 |             }
204 |         })
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/HTTP1EventSource.swift:211:23: warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
 30 | /// fine there — those responses are finite and small).
 31 | @available(iOS 13.0, macOS 10.15, *)
 32 | final class HTTP1EventSource {
    |             `- note: class 'HTTP1EventSource' does not conform to the 'Sendable' protocol
 33 |
 34 |     // MARK: - Public surface (mirrors the LACEventSource shape)
    :
209 |     private func receiveLoop() {
210 |         connection?.receive(minimumIncompleteLength: 1, maximumLength: 65_536) { [weak self] data, _, isComplete, error in
211 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'HTTP1EventSource?' in a '@Sendable' closure
212 |             if let data, !data.isEmpty {
213 |                 self.handleIncoming(data)
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/NetworkMonitor.swift:24:17: warning: capture of 'self' with non-sendable type 'NetworkMonitor?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 9 | /// Mirrors Android's `NetworkMonitor` semantics: `isOnline` only flips
10 | /// true when the path is satisfied AND not expensive-only / unsatisfied.
11 | final class NetworkMonitor: ObservableObject {
   |             `- note: class 'NetworkMonitor' does not conform to the 'Sendable' protocol
12 |     @Published private(set) var isOnline: Bool = true
13 |
   :
22 |             let online = path.status == .satisfied
23 |             DispatchQueue.main.async {
24 |                 self?.isOnline = online
   |                 `- warning: capture of 'self' with non-sendable type 'NetworkMonitor?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
25 |             }
26 |         }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:107:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
105 |     func start() {
106 |         queue.async { [weak self] in
107 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
108 |             if self.stopped { return }
109 |             if self.connectTask != nil { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:118:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
116 |     func stop() {
117 |         queue.async { [weak self] in
118 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
119 |             self.stopped = true
120 |             self.connectTask?.cancel()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:316:27: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
314 |         await withCheckedContinuation { (cont: CheckedContinuation<Void, Never>) in
315 |             queue.async { [weak self] in
316 |                 guard let self else {
    |                           `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
317 |                     cont.resume()
318 |                     return
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:344:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
342 |     private func onStreamOpened() {
343 |         queue.async { [weak self] in
344 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
345 |             self.attempts = 0
346 |             self.lastEventAt = Date()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:430:23: warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
 33 | /// API is near-identical (`addEventListener('next', ...)`, `close()`),
 34 | /// so the routing layer below can be mirrored exactly.
 35 | final class SseSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'SseSubscriptionClient' does not conform to the 'Sendable' protocol
 36 |
 37 |     // MARK: - Public surface
    :
428 |     private func onStreamClosed() {
429 |         queue.async { [weak self] in
430 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'SseSubscriptionClient?' in a '@Sendable' closure
431 |             SseLog.debug("stream CLOSED (stopped=\(self.stopped))")
432 |             self.eventSource = nil
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/SseSubscriptionClient.swift:110:37: warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
108 |             if self.stopped { return }
109 |             if self.connectTask != nil { return }
110 |             self.connectTask = Task.detached { [weak self] in
    |                              |      |- warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
    |                              |      `- note: Passing value of non-Sendable type '() async -> Void' as a 'sending' argument risks causing races in between local and caller code
    |                              `- note: access can happen concurrently
111 |                 await self?.connectLoop()
112 |             }
[28/44] Compiling LiveAndAiChat AttachmentSource.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Audio/NotificationTone.swift:13:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationTone' may have shared mutable state; this is an error in the Swift 6 language mode
  9 | /// Audio session category is `.ambient` so playback respects the user's
 10 | /// silent-mode switch and never ducks other audio.
 11 | public final class NotificationTone {
    |                    `- note: class 'NotificationTone' does not conform to the 'Sendable' protocol
 12 |
 13 |     public static let shared = NotificationTone()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationTone' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 |
 15 |     public var isEnabled: Bool = true
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Audio/NotificationTone.swift:32:13: warning: capture of 'self' with non-sendable type 'NotificationTone?' in a '@Sendable' closure
  9 | /// Audio session category is `.ambient` so playback respects the user's
 10 | /// silent-mode switch and never ducks other audio.
 11 | public final class NotificationTone {
    |                    `- note: class 'NotificationTone' does not conform to the 'Sendable' protocol
 12 |
 13 |     public static let shared = NotificationTone()
    :
 30 |         guard isEnabled else { return }
 31 |         queue.async { [weak self] in
 32 |             self?.playInternal()
    |             `- warning: capture of 'self' with non-sendable type 'NotificationTone?' in a '@Sendable' closure
 33 |         }
 34 |     }
[29/44] Compiling LiveAndAiChat NotificationTone.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Audio/NotificationTone.swift:13:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationTone' may have shared mutable state; this is an error in the Swift 6 language mode
  9 | /// Audio session category is `.ambient` so playback respects the user's
 10 | /// silent-mode switch and never ducks other audio.
 11 | public final class NotificationTone {
    |                    `- note: class 'NotificationTone' does not conform to the 'Sendable' protocol
 12 |
 13 |     public static let shared = NotificationTone()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationTone' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 |
 15 |     public var isEnabled: Bool = true
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Audio/NotificationTone.swift:32:13: warning: capture of 'self' with non-sendable type 'NotificationTone?' in a '@Sendable' closure
  9 | /// Audio session category is `.ambient` so playback respects the user's
 10 | /// silent-mode switch and never ducks other audio.
 11 | public final class NotificationTone {
    |                    `- note: class 'NotificationTone' does not conform to the 'Sendable' protocol
 12 |
 13 |     public static let shared = NotificationTone()
    :
 30 |         guard isEnabled else { return }
 31 |         queue.async { [weak self] in
 32 |             self?.playInternal()
    |             `- warning: capture of 'self' with non-sendable type 'NotificationTone?' in a '@Sendable' closure
 33 |         }
 34 |     }
[30/44] Compiling LiveAndAiChat CachedAsyncImage.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Audio/NotificationTone.swift:13:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationTone' may have shared mutable state; this is an error in the Swift 6 language mode
  9 | /// Audio session category is `.ambient` so playback respects the user's
 10 | /// silent-mode switch and never ducks other audio.
 11 | public final class NotificationTone {
    |                    `- note: class 'NotificationTone' does not conform to the 'Sendable' protocol
 12 |
 13 |     public static let shared = NotificationTone()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationTone' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 |
 15 |     public var isEnabled: Bool = true
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Audio/NotificationTone.swift:32:13: warning: capture of 'self' with non-sendable type 'NotificationTone?' in a '@Sendable' closure
  9 | /// Audio session category is `.ambient` so playback respects the user's
 10 | /// silent-mode switch and never ducks other audio.
 11 | public final class NotificationTone {
    |                    `- note: class 'NotificationTone' does not conform to the 'Sendable' protocol
 12 |
 13 |     public static let shared = NotificationTone()
    :
 30 |         guard isEnabled else { return }
 31 |         queue.async { [weak self] in
 32 |             self?.playInternal()
    |             `- warning: capture of 'self' with non-sendable type 'NotificationTone?' in a '@Sendable' closure
 33 |         }
 34 |     }
[31/44] Compiling LiveAndAiChat ImageCache.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Audio/NotificationTone.swift:13:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationTone' may have shared mutable state; this is an error in the Swift 6 language mode
  9 | /// Audio session category is `.ambient` so playback respects the user's
 10 | /// silent-mode switch and never ducks other audio.
 11 | public final class NotificationTone {
    |                    `- note: class 'NotificationTone' does not conform to the 'Sendable' protocol
 12 |
 13 |     public static let shared = NotificationTone()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationTone' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 |
 15 |     public var isEnabled: Bool = true
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Audio/NotificationTone.swift:32:13: warning: capture of 'self' with non-sendable type 'NotificationTone?' in a '@Sendable' closure
  9 | /// Audio session category is `.ambient` so playback respects the user's
 10 | /// silent-mode switch and never ducks other audio.
 11 | public final class NotificationTone {
    |                    `- note: class 'NotificationTone' does not conform to the 'Sendable' protocol
 12 |
 13 |     public static let shared = NotificationTone()
    :
 30 |         guard isEnabled else { return }
 31 |         queue.async { [weak self] in
 32 |             self?.playInternal()
    |             `- warning: capture of 'self' with non-sendable type 'NotificationTone?' in a '@Sendable' closure
 33 |         }
 34 |     }
[32/44] Compiling LiveAndAiChat ChatCloseEvent.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Audio/NotificationTone.swift:13:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationTone' may have shared mutable state; this is an error in the Swift 6 language mode
  9 | /// Audio session category is `.ambient` so playback respects the user's
 10 | /// silent-mode switch and never ducks other audio.
 11 | public final class NotificationTone {
    |                    `- note: class 'NotificationTone' does not conform to the 'Sendable' protocol
 12 |
 13 |     public static let shared = NotificationTone()
    |                       |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationTone' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 |
 15 |     public var isEnabled: Bool = true
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Audio/NotificationTone.swift:32:13: warning: capture of 'self' with non-sendable type 'NotificationTone?' in a '@Sendable' closure
  9 | /// Audio session category is `.ambient` so playback respects the user's
 10 | /// silent-mode switch and never ducks other audio.
 11 | public final class NotificationTone {
    |                    `- note: class 'NotificationTone' does not conform to the 'Sendable' protocol
 12 |
 13 |     public static let shared = NotificationTone()
    :
 30 |         guard isEnabled else { return }
 31 |         queue.async { [weak self] in
 32 |             self?.playInternal()
    |             `- warning: capture of 'self' with non-sendable type 'NotificationTone?' in a '@Sendable' closure
 33 |         }
 34 |     }
[33/44] Compiling LiveAndAiChat ChatTheme.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:57:23: warning: static property 'lightDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
 55 |     /// Spec-default light palette — matches the JSON in the user-facing
 56 |     /// spec and the gql-server `appearanceDefaults.ts`.
 57 |     public static let lightDefault: ChatColors = ChatColors(
    |                       |- warning: static property 'lightDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'lightDefault' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 58 |         primary: hex("#9333EA"),
 59 |         background: hex("#F7F7FB"),
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:103:23: warning: static property 'darkDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
101 |     /// for backgrounds, brand purple slightly desaturated to reduce
102 |     /// eye strain at low ambient brightness, near-white text.
103 |     public static let darkDefault: ChatColors = ChatColors(
    |                       |- warning: static property 'darkDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'darkDefault' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
104 |         primary: hex("#A855F7"),
105 |         background: hex("#0F0F14"),
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:232:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
230 |
231 | private struct ChatColorsKey: EnvironmentKey {
232 |     static let defaultValue: ChatColors = .lightDefault
    |                |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
233 | }
234 |
[34/44] Compiling LiveAndAiChat ChatThemeOverride.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:57:23: warning: static property 'lightDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
 55 |     /// Spec-default light palette — matches the JSON in the user-facing
 56 |     /// spec and the gql-server `appearanceDefaults.ts`.
 57 |     public static let lightDefault: ChatColors = ChatColors(
    |                       |- warning: static property 'lightDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'lightDefault' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 58 |         primary: hex("#9333EA"),
 59 |         background: hex("#F7F7FB"),
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:103:23: warning: static property 'darkDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
101 |     /// for backgrounds, brand purple slightly desaturated to reduce
102 |     /// eye strain at low ambient brightness, near-white text.
103 |     public static let darkDefault: ChatColors = ChatColors(
    |                       |- warning: static property 'darkDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'darkDefault' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
104 |         primary: hex("#A855F7"),
105 |         background: hex("#0F0F14"),
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:232:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
230 |
231 | private struct ChatColorsKey: EnvironmentKey {
232 |     static let defaultValue: ChatColors = .lightDefault
    |                |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
233 | }
234 |
[35/44] Compiling LiveAndAiChat Composer.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:57:23: warning: static property 'lightDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
 55 |     /// Spec-default light palette — matches the JSON in the user-facing
 56 |     /// spec and the gql-server `appearanceDefaults.ts`.
 57 |     public static let lightDefault: ChatColors = ChatColors(
    |                       |- warning: static property 'lightDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'lightDefault' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 58 |         primary: hex("#9333EA"),
 59 |         background: hex("#F7F7FB"),
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:103:23: warning: static property 'darkDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
101 |     /// for backgrounds, brand purple slightly desaturated to reduce
102 |     /// eye strain at low ambient brightness, near-white text.
103 |     public static let darkDefault: ChatColors = ChatColors(
    |                       |- warning: static property 'darkDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'darkDefault' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
104 |         primary: hex("#A855F7"),
105 |         background: hex("#0F0F14"),
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:232:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
230 |
231 | private struct ChatColorsKey: EnvironmentKey {
232 |     static let defaultValue: ChatColors = .lightDefault
    |                |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
233 | }
234 |
[36/44] Compiling LiveAndAiChat ImageViewer.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:57:23: warning: static property 'lightDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
 55 |     /// Spec-default light palette — matches the JSON in the user-facing
 56 |     /// spec and the gql-server `appearanceDefaults.ts`.
 57 |     public static let lightDefault: ChatColors = ChatColors(
    |                       |- warning: static property 'lightDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'lightDefault' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 58 |         primary: hex("#9333EA"),
 59 |         background: hex("#F7F7FB"),
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:103:23: warning: static property 'darkDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
101 |     /// for backgrounds, brand purple slightly desaturated to reduce
102 |     /// eye strain at low ambient brightness, near-white text.
103 |     public static let darkDefault: ChatColors = ChatColors(
    |                       |- warning: static property 'darkDefault' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: add '@MainActor' to make static property 'darkDefault' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
104 |         primary: hex("#A855F7"),
105 |         background: hex("#0F0F14"),
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/UI/ChatTheme.swift:232:16: warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | /// the spec defaults so the UI looks right before the merchant config
  6 | /// resolves.
  7 | public struct ChatColors: Equatable {
    |               `- note: consider making struct 'ChatColors' conform to the 'Sendable' protocol
  8 |     public var primary: Color
  9 |     public var background: Color
    :
230 |
231 | private struct ChatColorsKey: EnvironmentKey {
232 |     static let defaultValue: ChatColors = .lightDefault
    |                |- warning: static property 'defaultValue' is not concurrency-safe because non-'Sendable' type 'ChatColors' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'defaultValue' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
233 | }
234 |
[37/44] Compiling LiveAndAiChat MessageList.swift
[38/44] Compiling LiveAndAiChat MessageRow.swift
[39/44] Compiling LiveAndAiChat AttachmentQueue.swift
[40/44] Compiling LiveAndAiChat AttachmentSourceResolver.swift
[41/44] Compiling LiveAndAiChat SubscriptionClient.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:158:16: warning: static property 'connectionInitFrame' is not concurrency-safe because non-'Sendable' type '[String : Any]' may have shared mutable state; this is an error in the Swift 6 language mode
156 |     }
157 |
158 |     static let connectionInitFrame: [String: Any] = ["type": "connection_init", "payload": [String: Any]()]
    |                |- warning: static property 'connectionInitFrame' is not concurrency-safe because non-'Sendable' type '[String : Any]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'connectionInitFrame' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
159 |
160 |     private func openWs() {
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:82:23: warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 29 | ///   - client → server: connection_init, subscribe, complete, ping
 30 | ///   - server → client: connection_ack, next, error, complete, ping, pong
 31 | final class WsSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'WsSubscriptionClient' does not conform to the 'Sendable' protocol
 32 |
 33 |     private let _connectionState = CurrentValueSubject<ConnectionState, Never>(.idle)
    :
 80 |     func start() {
 81 |         queue.async { [weak self] in
 82 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 83 |             if self.stopped { return }
 84 |             if self.connectTask != nil { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:93:23: warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 29 | ///   - client → server: connection_init, subscribe, complete, ping
 30 | ///   - server → client: connection_ack, next, error, complete, ping, pong
 31 | final class WsSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'WsSubscriptionClient' does not conform to the 'Sendable' protocol
 32 |
 33 |     private let _connectionState = CurrentValueSubject<ConnectionState, Never>(.idle)
    :
 91 |     func stop() {
 92 |         queue.async { [weak self] in
 93 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 94 |             self.stopped = true
 95 |             self.connectTask?.cancel()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:172:23: warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 29 | ///   - client → server: connection_init, subscribe, complete, ping
 30 | ///   - server → client: connection_ack, next, error, complete, ping, pong
 31 | final class WsSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'WsSubscriptionClient' does not conform to the 'Sendable' protocol
 32 |
 33 |     private let _connectionState = CurrentValueSubject<ConnectionState, Never>(.idle)
    :
170 |         guard let t = task else { return }
171 |         t.receive { [weak self] result in
172 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
173 |             switch result {
174 |             case .failure:
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:85:37: warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
 83 |             if self.stopped { return }
 84 |             if self.connectTask != nil { return }
 85 |             self.connectTask = Task.detached { [weak self] in
    |                              |      |- warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
    |                              |      `- note: Passing value of non-Sendable type '() async -> Void' as a 'sending' argument risks causing races in between local and caller code
    |                              `- note: access can happen concurrently
 86 |                 await self?.connectLoop()
 87 |             }
[42/44] Compiling LiveAndAiChat WsSubscriptionClient.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:158:16: warning: static property 'connectionInitFrame' is not concurrency-safe because non-'Sendable' type '[String : Any]' may have shared mutable state; this is an error in the Swift 6 language mode
156 |     }
157 |
158 |     static let connectionInitFrame: [String: Any] = ["type": "connection_init", "payload": [String: Any]()]
    |                |- warning: static property 'connectionInitFrame' is not concurrency-safe because non-'Sendable' type '[String : Any]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'connectionInitFrame' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
159 |
160 |     private func openWs() {
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:82:23: warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 29 | ///   - client → server: connection_init, subscribe, complete, ping
 30 | ///   - server → client: connection_ack, next, error, complete, ping, pong
 31 | final class WsSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'WsSubscriptionClient' does not conform to the 'Sendable' protocol
 32 |
 33 |     private let _connectionState = CurrentValueSubject<ConnectionState, Never>(.idle)
    :
 80 |     func start() {
 81 |         queue.async { [weak self] in
 82 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 83 |             if self.stopped { return }
 84 |             if self.connectTask != nil { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:93:23: warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 29 | ///   - client → server: connection_init, subscribe, complete, ping
 30 | ///   - server → client: connection_ack, next, error, complete, ping, pong
 31 | final class WsSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'WsSubscriptionClient' does not conform to the 'Sendable' protocol
 32 |
 33 |     private let _connectionState = CurrentValueSubject<ConnectionState, Never>(.idle)
    :
 91 |     func stop() {
 92 |         queue.async { [weak self] in
 93 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 94 |             self.stopped = true
 95 |             self.connectTask?.cancel()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:172:23: warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 29 | ///   - client → server: connection_init, subscribe, complete, ping
 30 | ///   - server → client: connection_ack, next, error, complete, ping, pong
 31 | final class WsSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'WsSubscriptionClient' does not conform to the 'Sendable' protocol
 32 |
 33 |     private let _connectionState = CurrentValueSubject<ConnectionState, Never>(.idle)
    :
170 |         guard let t = task else { return }
171 |         t.receive { [weak self] result in
172 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
173 |             switch result {
174 |             case .failure:
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:85:37: warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
 83 |             if self.stopped { return }
 84 |             if self.connectTask != nil { return }
 85 |             self.connectTask = Task.detached { [weak self] in
    |                              |      |- warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
    |                              |      `- note: Passing value of non-Sendable type '() async -> Void' as a 'sending' argument risks causing races in between local and caller code
    |                              `- note: access can happen concurrently
 86 |                 await self?.connectLoop()
 87 |             }
[43/44] Compiling LiveAndAiChat ChatPresenter.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:158:16: warning: static property 'connectionInitFrame' is not concurrency-safe because non-'Sendable' type '[String : Any]' may have shared mutable state; this is an error in the Swift 6 language mode
156 |     }
157 |
158 |     static let connectionInitFrame: [String: Any] = ["type": "connection_init", "payload": [String: Any]()]
    |                |- warning: static property 'connectionInitFrame' is not concurrency-safe because non-'Sendable' type '[String : Any]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'connectionInitFrame' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
159 |
160 |     private func openWs() {
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:82:23: warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 29 | ///   - client → server: connection_init, subscribe, complete, ping
 30 | ///   - server → client: connection_ack, next, error, complete, ping, pong
 31 | final class WsSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'WsSubscriptionClient' does not conform to the 'Sendable' protocol
 32 |
 33 |     private let _connectionState = CurrentValueSubject<ConnectionState, Never>(.idle)
    :
 80 |     func start() {
 81 |         queue.async { [weak self] in
 82 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 83 |             if self.stopped { return }
 84 |             if self.connectTask != nil { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:93:23: warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 29 | ///   - client → server: connection_init, subscribe, complete, ping
 30 | ///   - server → client: connection_ack, next, error, complete, ping, pong
 31 | final class WsSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'WsSubscriptionClient' does not conform to the 'Sendable' protocol
 32 |
 33 |     private let _connectionState = CurrentValueSubject<ConnectionState, Never>(.idle)
    :
 91 |     func stop() {
 92 |         queue.async { [weak self] in
 93 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 94 |             self.stopped = true
 95 |             self.connectTask?.cancel()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:172:23: warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 29 | ///   - client → server: connection_init, subscribe, complete, ping
 30 | ///   - server → client: connection_ack, next, error, complete, ping, pong
 31 | final class WsSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'WsSubscriptionClient' does not conform to the 'Sendable' protocol
 32 |
 33 |     private let _connectionState = CurrentValueSubject<ConnectionState, Never>(.idle)
    :
170 |         guard let t = task else { return }
171 |         t.receive { [weak self] result in
172 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
173 |             switch result {
174 |             case .failure:
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:85:37: warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
 83 |             if self.stopped { return }
 84 |             if self.connectTask != nil { return }
 85 |             self.connectTask = Task.detached { [weak self] in
    |                              |      |- warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
    |                              |      `- note: Passing value of non-Sendable type '() async -> Void' as a 'sending' argument risks causing races in between local and caller code
    |                              `- note: access can happen concurrently
 86 |                 await self?.connectLoop()
 87 |             }
[44/44] Compiling LiveAndAiChat ChatScreen.swift
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:158:16: warning: static property 'connectionInitFrame' is not concurrency-safe because non-'Sendable' type '[String : Any]' may have shared mutable state; this is an error in the Swift 6 language mode
156 |     }
157 |
158 |     static let connectionInitFrame: [String: Any] = ["type": "connection_init", "payload": [String: Any]()]
    |                |- warning: static property 'connectionInitFrame' is not concurrency-safe because non-'Sendable' type '[String : Any]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'connectionInitFrame' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
159 |
160 |     private func openWs() {
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:82:23: warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 29 | ///   - client → server: connection_init, subscribe, complete, ping
 30 | ///   - server → client: connection_ack, next, error, complete, ping, pong
 31 | final class WsSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'WsSubscriptionClient' does not conform to the 'Sendable' protocol
 32 |
 33 |     private let _connectionState = CurrentValueSubject<ConnectionState, Never>(.idle)
    :
 80 |     func start() {
 81 |         queue.async { [weak self] in
 82 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 83 |             if self.stopped { return }
 84 |             if self.connectTask != nil { return }
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:93:23: warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 29 | ///   - client → server: connection_init, subscribe, complete, ping
 30 | ///   - server → client: connection_ack, next, error, complete, ping, pong
 31 | final class WsSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'WsSubscriptionClient' does not conform to the 'Sendable' protocol
 32 |
 33 |     private let _connectionState = CurrentValueSubject<ConnectionState, Never>(.idle)
    :
 91 |     func stop() {
 92 |         queue.async { [weak self] in
 93 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 94 |             self.stopped = true
 95 |             self.connectTask?.cancel()
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:172:23: warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
 29 | ///   - client → server: connection_init, subscribe, complete, ping
 30 | ///   - server → client: connection_ack, next, error, complete, ping, pong
 31 | final class WsSubscriptionClient: NSObject, SubscriptionClient {
    |             `- note: class 'WsSubscriptionClient' does not conform to the 'Sendable' protocol
 32 |
 33 |     private let _connectionState = CurrentValueSubject<ConnectionState, Never>(.idle)
    :
170 |         guard let t = task else { return }
171 |         t.receive { [weak self] result in
172 |             guard let self else { return }
    |                       `- warning: capture of 'self' with non-sendable type 'WsSubscriptionClient?' in a '@Sendable' closure
173 |             switch result {
174 |             case .failure:
/Users/admin/builder/spi-builder-workspace/Sources/LiveAndAiChat/Transport/WsSubscriptionClient.swift:85:37: warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
 83 |             if self.stopped { return }
 84 |             if self.connectTask != nil { return }
 85 |             self.connectTask = Task.detached { [weak self] in
    |                              |      |- warning: sending value of non-Sendable type '() async -> Void' risks causing data races; this is an error in the Swift 6 language mode
    |                              |      `- note: Passing value of non-Sendable type '() async -> Void' as a 'sending' argument risks causing races in between local and caller code
    |                              `- note: access can happen concurrently
 86 |                 await self?.connectLoop()
 87 |             }
Build complete! (11.48s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "LiveAndAiChat",
  "name" : "LiveAndAiChat",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "14.0"
    },
    {
      "name" : "macos",
      "version" : "11.0"
    }
  ],
  "products" : [
    {
      "name" : "LiveAndAiChat",
      "targets" : [
        "LiveAndAiChat"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "LiveAndAiChatTests",
      "module_type" : "SwiftTarget",
      "name" : "LiveAndAiChatTests",
      "path" : "Tests/LiveAndAiChatTests",
      "sources" : [
        "AttachmentSourceTests.swift",
        "AuthModeTests.swift",
        "BackoffTests.swift",
        "ChatCardLayoutTests.swift",
        "ChatStoreTests.swift",
        "LiveAndAiChatConfigTests.swift",
        "SerializationTests.swift",
        "SseEventParserTests.swift",
        "StateForwardingTests.swift"
      ],
      "target_dependencies" : [
        "LiveAndAiChat"
      ],
      "type" : "test"
    },
    {
      "c99name" : "LiveAndAiChat",
      "module_type" : "SwiftTarget",
      "name" : "LiveAndAiChat",
      "path" : "Sources/LiveAndAiChat",
      "product_memberships" : [
        "LiveAndAiChat"
      ],
      "sources" : [
        "AttachmentSource.swift",
        "Audio/NotificationTone.swift",
        "Caching/CachedAsyncImage.swift",
        "Caching/ImageCache.swift",
        "ChatCloseEvent.swift",
        "ConnectionState.swift",
        "Diagnostics/DiagnosticLog.swift",
        "Haptics/Haptics.swift",
        "LiveAndAiChat.swift",
        "LiveAndAiChatConfig.swift",
        "LiveAndAiChatError.swift",
        "Models/Bootstrap.swift",
        "Models/ChatMessage.swift",
        "Models/Conversation.swift",
        "Models/OrgChatConfig.swift",
        "Operations/Operations.swift",
        "Session/SessionManager.swift",
        "Store/ChatStore.swift",
        "Transport/Backoff.swift",
        "Transport/ChatCredential.swift",
        "Transport/GqlClient.swift",
        "Transport/HTTP1EventSource.swift",
        "Transport/NetworkMonitor.swift",
        "Transport/SseEventParser.swift",
        "Transport/SseSubscriptionClient.swift",
        "Transport/SubscriptionClient.swift",
        "Transport/WsSubscriptionClient.swift",
        "UI/ChatPresenter.swift",
        "UI/ChatScreen.swift",
        "UI/ChatTheme.swift",
        "UI/ChatThemeOverride.swift",
        "UI/Composer.swift",
        "UI/ImageViewer.swift",
        "UI/MessageList.swift",
        "UI/MessageRow.swift",
        "Upload/AttachmentQueue.swift",
        "Upload/AttachmentSourceResolver.swift",
        "Upload/FileUploader.swift",
        "Vendor/EventSource/LACEvent.swift",
        "Vendor/EventSource/LACEventSource.swift",
        "Vendor/EventSource/LACEventStreamParser.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.