Build Information
Successful build of LiveAndAiChat, reference main (785bea), with Swift 6.1 for macOS (SPM) on 3 Oct 2026 04:43:59 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 InferSendableFromCapturesBuild 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 MessageList.swift
[13/44] Compiling LiveAndAiChat MessageRow.swift
[14/44] Compiling LiveAndAiChat AttachmentQueue.swift
[15/44] Compiling LiveAndAiChat AttachmentSourceResolver.swift
[16/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]
[17/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]
[18/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]
[19/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]
[20/44] Compiling LiveAndAiChat LiveAndAiChatConfig.swift
[21/44] Compiling LiveAndAiChat LiveAndAiChatError.swift
[22/44] Compiling LiveAndAiChat Bootstrap.swift
[23/44] Compiling LiveAndAiChat ChatMessage.swift
[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 Conversation.swift
[29/44] Compiling LiveAndAiChat OrgChatConfig.swift
[30/44] Compiling LiveAndAiChat Operations.swift
[31/44] Compiling LiveAndAiChat SessionManager.swift
[32/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 | }
[33/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 | }
[34/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 | }
[35/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 | }
[36/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 | }
[37/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 | }
[38/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 | }
[39/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 | }
[40/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 | }
[41/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 |
[42/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 |
[43/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 |
[44/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 |
Build complete! (11.20s)
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.