The Swift Package Index logo.Swift Package Index

Build Information

Failed to build XMPPChatSwift, reference main (ff6f24), with Swift 6.2 for macOS (SPM) on 29 Jun 2026 04:22:09 UTC.

Build Command

env DEVELOPER_DIR=/Applications/Xcode-26.3.0.app xcrun swift build --arch arm64

Build Log

     :
 353 |             guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
 354 |             self.offlineReconnectAttempts += 1
 355 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 356 |                 await self.reconnect()
 357 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 307 |
 308 |     // MARK: - Reconnection
 309 |     private func scheduleReconnect(reason: String) {
     |                  `- note: add '@available' attribute to enclosing instance method
 310 |         // Don't reconnect if connection was replaced
 311 |         if connectionReplaced {
     :
 353 |             guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
 354 |             self.offlineReconnectAttempts += 1
 355 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 356 |                 await self.reconnect()
 357 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:27: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 382 |
 383 |     // MARK: - Connection Status
 384 |     public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
     |                 `- note: add '@available' attribute to enclosing instance method
 385 |         guard status != .online else { return }
 386 |
     :
 398 |                     throw XMPPError.connectionTimeout
 399 |                 }
 400 |                 try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
     |                           |- error: 'Task' is only available in macOS 10.15 or newer
     |                           `- note: add 'if #available' version check
 401 |             }
 402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:32: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 382 |
 383 |     // MARK: - Connection Status
 384 |     public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
     |                 `- note: add '@available' attribute to enclosing instance method
 385 |         guard status != .online else { return }
 386 |
     :
 398 |                     throw XMPPError.connectionTimeout
 399 |                 }
 400 |                 try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
     |                                |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
     |                                `- note: add 'if #available' version check
 401 |             }
 402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
     |                      |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
     |                      `- note: add 'if #available' version check
 412 |             messageQueue.append {
 413 |                 let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
 412 |             messageQueue.append {
     :
 415 |                 return result
 416 |             }
 417 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 418 |                 await processQueue()
 419 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
 412 |             messageQueue.append {
     :
 415 |                 return result
 416 |             }
 417 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 418 |                 await processQueue()
 419 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:46: note: expanded code originates here
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
     +--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
     |409 |
     |410 |
     |411 |                                              #isolation
     |    |                                               `- error: 'isolation()' is only available in macOS 10.15 or newer
     +------------------------------------------------------------------------------------------------
 412 |             messageQueue.append {
 413 |                 let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:24: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 421 |     }
 422 |
 423 |     private func processQueue() async {
     |                  `- note: add '@available' attribute to enclosing instance method
 424 |         guard !processingQueue else { return }
 425 |         processingQueue = true
     :
 444 |
 445 |         if !messageQueue.isEmpty && status == .online {
 446 |             try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
     |                        |- error: 'Task' is only available in macOS 10.15 or newer
     |                        `- note: add 'if #available' version check
 447 |             await processQueue()
 448 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 421 |     }
 422 |
 423 |     private func processQueue() async {
     |                  `- note: add '@available' attribute to enclosing instance method
 424 |         guard !processingQueue else { return }
 425 |         processingQueue = true
     :
 444 |
 445 |         if !messageQueue.isEmpty && status == .online {
 446 |             try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
     |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
     |                             `- note: add 'if #available' version check
 447 |             await processQueue()
 448 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:481:13: warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
 479 |         let idleTime: TimeInterval = 2.0
 480 |         // Match TypeScript: const pongWait = 2000;
 481 |         let pongWait: TimeInterval = 2.0
     |             `- warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
 482 |
 483 |         idlePingTimeout = Timer.scheduledTimer(withTimeInterval: idleTime, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 576 |     // This should be called when XMPP stream becomes online
 577 |     // We need to add a method to XMPPStreamDelegate for this
 578 |     public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
     |                 `- note: add '@available' attribute to enclosing instance method
 579 |         Task {
     |         |- error: 'Task' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
 580 |             await handleOnlineEvent(jid: jid)
 581 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 576 |     // This should be called when XMPP stream becomes online
 577 |     // We need to add a method to XMPPStreamDelegate for this
 578 |     public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
     |                 `- note: add '@available' attribute to enclosing instance method
 579 |         Task {
     |         |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
 580 |             await handleOnlineEvent(jid: jid)
 581 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:24: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 642 |
 643 |             // Wait a bit for the server to process the initial presence
 644 |             try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
     |                        |- error: 'Task' is only available in macOS 10.15 or newer
     |                        `- note: add 'if #available' version check
 645 |
 646 |             // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 642 |
 643 |             // Wait a bit for the server to process the initial presence
 644 |             try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
     |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
     |                             `- note: add 'if #available' version check
 645 |
 646 |             // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 651 |
 652 |             // Match TypeScript: this.processQueue().catch(() => {});
 653 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 654 |                 await processQueue()
 655 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 651 |
 652 |             // Match TypeScript: this.processQueue().catch(() => {});
 653 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 654 |                 await processQueue()
 655 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:662:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 660 |             // await drainHeap()
 661 |
 662 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 663 |             // Match TypeScript: console.log('Error', error);
 664 |             //NSlog("Error %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:681:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 679 |                 //NSlog("   Disconnect Error Code: %ld", nsError.code)
 680 |                 //NSlog("   Disconnect Error Description: %@", nsError.localizedDescription)
 681 |                 if let reason = nsError.userInfo["reason"] as? String {
     |                        `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 682 |                     //NSlog("   Disconnect Reason: %@", reason)
 683 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:684:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 682 |                     //NSlog("   Disconnect Reason: %@", reason)
 683 |                 }
 684 |                 if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
     |                        `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 685 |                     //NSlog("   WebSocket Close Code: %u", code)
 686 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:690:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 688 |                 //print("   Disconnect Error Code: \(nsError.code)")
 689 |                 //print("   Disconnect Error Description: \(nsError.localizedDescription)")
 690 |                 if let reason = nsError.userInfo["reason"] as? String {
     |                        `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 691 |                     //print("   Disconnect Reason: \(reason)")
 692 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:693:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 691 |                     //print("   Disconnect Reason: \(reason)")
 692 |                 }
 693 |                 if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
     |                        `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 694 |                     //print("   WebSocket Close Code: \(code)")
 695 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:852:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 850 |                 handlePong()
 851 |             }
 852 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 853 |             // Ignore errors - match TypeScript empty catch
 854 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 931 |     /// it. If the probe times out, the caller (`SessionRecoveryManager`)
 932 |     /// forces a hard reconnect rather than relying on `status == .online`.
 933 |     public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
     |                 `- note: add '@available' attribute to enclosing instance method
 934 |         guard status == .online,
 935 |               let stream = xmppStream,
     :
 954 |         lastPingId = pingId
 955 |
 956 |         return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
     |                      |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
     |                      `- note: add 'if #available' version check
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:63: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 931 |     /// it. If the probe times out, the caller (`SessionRecoveryManager`)
 932 |     /// forces a hard reconnect rather than relying on `status == .online`.
 933 |     public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
     |                 `- note: add '@available' attribute to enclosing instance method
 934 |         guard status == .online,
 935 |               let stream = xmppStream,
     :
 954 |         lastPingId = pingId
 955 |
 956 |         return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
     |                                                               |- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
     |                                                               `- note: add 'if #available' version check
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:46: note: expanded code originates here
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 931 |     /// it. If the probe times out, the caller (`SessionRecoveryManager`)
 932 |     /// forces a hard reconnect rather than relying on `status == .online`.
 933 |     public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
     |                 `- note: add '@available' attribute to enclosing instance method
 934 |         guard status == .online,
 935 |               let stream = xmppStream,
     :
 954 |         lastPingId = pingId
 955 |
 956 |         return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
     +--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
     |954 |
     |955 |
     |956 |                                              #isolation
     |    |                                               `- error: 'isolation()' is only available in macOS 10.15 or newer
     +------------------------------------------------------------------------------------------------
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:959:34: warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: class 'XMPPClient' does not conform to the 'Sendable' protocol
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
 959 |                 guard let self = self else { return }
     |                                  `- warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
 960 |                 guard let cont = self.pingProbeContinuation else { return }
 961 |                 self.pingProbeContinuation = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1013 |     /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 |     /// This ensures messages are available even if no ChatRoomViewModel is active
1015 |     private func processIncomingMessage(_ message: Message) {
     |                  `- note: add '@available' attribute to enclosing instance method
1016 |         let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 |         let selfLocal = self.username.components(separatedBy: "@").first ?? ""
     :
1031 |
1032 |         // MessageCache is @MainActor, so we need to call it from main actor context
1033 |         Task { @MainActor in
     |         |- error: 'Task' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
1034 |             // Load existing messages from cache
1035 |             var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1013 |     /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 |     /// This ensures messages are available even if no ChatRoomViewModel is active
1015 |     private func processIncomingMessage(_ message: Message) {
     |                  `- note: add '@available' attribute to enclosing instance method
1016 |         let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 |         let selfLocal = self.username.components(separatedBy: "@").first ?? ""
     :
1031 |
1032 |         // MessageCache is @MainActor, so we need to call it from main actor context
1033 |         Task { @MainActor in
     |         |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
1034 |             // Load existing messages from cache
1035 |             var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1059:21: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1013 |     /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 |     /// This ensures messages are available even if no ChatRoomViewModel is active
1015 |     private func processIncomingMessage(_ message: Message) {
     |                  `- note: add '@available' attribute to enclosing instance method
1016 |         let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 |         let selfLocal = self.username.components(separatedBy: "@").first ?? ""
     :
1057 |                 if var storeRoom = RoomStore.shared.rooms[roomJID] {
1058 |                     storeRoom.messages = messagesToSave
1059 |                     RoomStore.shared.rooms[roomJID] = storeRoom
     |                     |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
     |                     `- note: add 'if #available' version check
1060 |                 }
1061 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1177 |
1178 |             // Update RoomStore (must be on MainActor)
1179 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1180 |                 RoomStore.shared.setReactions(
1181 |                     roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1177 |
1178 |             // Update RoomStore (must be on MainActor)
1179 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1180 |                 RoomStore.shared.setReactions(
1181 |                     roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1229 |             print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1232 |                 // If the user previously left this room, our client
1233 |                 // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1229 |             print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1232 |                 // If the user previously left this room, our client
1233 |                 // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1290 |             guard let self = self, !roomJID.isEmpty else { return }
1291 |             print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1293 |                 RoomStore.shared.deleteRoom(jid: roomJID)
1294 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1290 |             guard let self = self, !roomJID.isEmpty else { return }
1291 |             print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1293 |                 RoomStore.shared.deleteRoom(jid: roomJID)
1294 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1323 |             // Match TypeScript: deleteRoomMessage completely removes message from array
1324 |             // Update RoomStore (must be on MainActor) - completely remove message
1325 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1326 |                 RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1323 |             // Match TypeScript: deleteRoomMessage completely removes message from array
1324 |             // Update RoomStore (must be on MainActor) - completely remove message
1325 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1326 |                 RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1344 |
1345 |             // Update RoomStore (must be on MainActor)
1346 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1347 |                 var updates = PartialMessageUpdate()
1348 |                 updates.body = newText
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1344 |
1345 |             // Update RoomStore (must be on MainActor)
1346 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1347 |                 var updates = PartialMessageUpdate()
1348 |                 updates.body = newText
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[106/108] Compiling XMPPChatCore XMPPClient+Operations.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:16:5: error: 'Task' is only available in macOS 10.15 or newer
 8 | import Foundation
 9 |
10 | public func resendMessage(
   |             `- note: add '@available' attribute to enclosing global function
11 |     message: Message,
12 |     client: XMPPClient,
   :
14 |     completion: @escaping (Result<Message, Error>) -> Void
15 | ) {
16 |     Task {
   |     |- error: 'Task' is only available in macOS 10.15 or newer
   |     `- note: add 'if #available' version check
17 |         do {
18 |             if let mimetype = message.mimetype, mimetype.hasPrefix("media/") {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:16:5: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 8 | import Foundation
 9 |
10 | public func resendMessage(
   |             `- note: add '@available' attribute to enclosing global function
11 |     message: Message,
12 |     client: XMPPClient,
   :
14 |     completion: @escaping (Result<Message, Error>) -> Void
15 | ) {
16 |     Task {
   |     |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
   |     `- note: add 'if #available' version check
17 |         do {
18 |             if let mimetype = message.mimetype, mimetype.hasPrefix("media/") {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:64:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
62 |                 completion(.success(message))
63 |             }
64 |         } catch {
   |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
65 |             completion(.failure(error))
66 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient+Operations.swift:99:24: error: 'Task' is only available in macOS 10.15 or newer
  9 | import Foundation
 10 |
 11 | extension XMPPClient {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Send global `<presence/>` stanza to XMPP server (announce online).
 13 |     public func sendGlobalPresence() {
    :
 87 |     }
 88 |
 89 |     internal func waitForRoomPresenceResponses(roomJIDs: [String], timeout: TimeInterval) async -> [String] {
    |                   `- note: add '@available' attribute to enclosing instance method
 90 |         let normalized = roomJIDs.map { $0.components(separatedBy: "/").first ?? $0 }
 91 |         let start = Date()
    :
 97 |                 return []
 98 |             }
 99 |             try? await Task.sleep(nanoseconds: 100_000_000)
    |                        |- error: 'Task' is only available in macOS 10.15 or newer
    |                        `- note: add 'if #available' version check
100 |         }
101 |         let unresolved = normalized.filter { !hasPresenceResponseForRoom($0) }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient+Operations.swift:99:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  9 | import Foundation
 10 |
 11 | extension XMPPClient {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Send global `<presence/>` stanza to XMPP server (announce online).
 13 |     public func sendGlobalPresence() {
    :
 87 |     }
 88 |
 89 |     internal func waitForRoomPresenceResponses(roomJIDs: [String], timeout: TimeInterval) async -> [String] {
    |                   `- note: add '@available' attribute to enclosing instance method
 90 |         let normalized = roomJIDs.map { $0.components(separatedBy: "/").first ?? $0 }
 91 |         let start = Date()
    :
 97 |                 return []
 98 |             }
 99 |             try? await Task.sleep(nanoseconds: 100_000_000)
    |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
100 |         }
101 |         let unresolved = normalized.filter { !hasPresenceResponseForRoom($0) }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:64:40: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
  62 |     // either by a matching `<iq type='result' id='probe-...'/>` (handlePong)
  63 |     // or by the probe timer firing.
  64 |     private var pingProbeContinuation: CheckedContinuation<Bool, Never>?
     |                                        `- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
  65 |     private var pingProbeTimer: Timer?
  66 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:232:13: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 161 |     // MARK: - Connection Management
 162 |     // Match TypeScript: async initializeClient()
 163 |     private func initializeClient() {
     |                  `- note: add '@available' attribute to enclosing instance method
 164 |         // Prevent multiple simultaneous connection attempts
 165 |         guard !isConnecting else {
     :
 230 |
 231 |             // Match TypeScript: this.client.start().catch((error) => { console.error('Error starting client:', error); });
 232 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 233 |                 do {
 234 |                     xmppStream?.connect(username: username, password: password, resource: resource)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:232:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 161 |     // MARK: - Connection Management
 162 |     // Match TypeScript: async initializeClient()
 163 |     private func initializeClient() {
     |                  `- note: add '@available' attribute to enclosing instance method
 164 |         // Prevent multiple simultaneous connection attempts
 165 |         guard !isConnecting else {
     :
 230 |
 231 |             // Match TypeScript: this.client.start().catch((error) => { console.error('Error starting client:', error); });
 232 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 233 |                 do {
 234 |                     xmppStream?.connect(username: username, password: password, resource: resource)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:235:19: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 233 |                 do {
 234 |                     xmppStream?.connect(username: username, password: password, resource: resource)
 235 |                 } catch {
     |                   `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 236 |                     //NSlog("Error starting client: %@", error.localizedDescription)
 237 |                     //print("Error starting client: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:246:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 244 |
 245 |             logStep("initializeClient:started")
 246 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 247 |             //NSlog("Error initializing client: %@", error.localizedDescription)
 248 |             //print("Error initializing client: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:293:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 291 |             //NSlog("Client disconnected")
 292 |             //print("Client disconnected")
 293 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 294 |             // Match TypeScript: console.error('Error disconnecting client:', error);
 295 |             //NSlog("Error disconnecting client: %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 307 |
 308 |     // MARK: - Reconnection
 309 |     private func scheduleReconnect(reason: String) {
     |                  `- note: add '@available' attribute to enclosing instance method
 310 |         // Don't reconnect if connection was replaced
 311 |         if connectionReplaced {
     :
 353 |             guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
 354 |             self.offlineReconnectAttempts += 1
 355 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 356 |                 await self.reconnect()
 357 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 307 |
 308 |     // MARK: - Reconnection
 309 |     private func scheduleReconnect(reason: String) {
     |                  `- note: add '@available' attribute to enclosing instance method
 310 |         // Don't reconnect if connection was replaced
 311 |         if connectionReplaced {
     :
 353 |             guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
 354 |             self.offlineReconnectAttempts += 1
 355 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 356 |                 await self.reconnect()
 357 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:27: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 382 |
 383 |     // MARK: - Connection Status
 384 |     public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
     |                 `- note: add '@available' attribute to enclosing instance method
 385 |         guard status != .online else { return }
 386 |
     :
 398 |                     throw XMPPError.connectionTimeout
 399 |                 }
 400 |                 try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
     |                           |- error: 'Task' is only available in macOS 10.15 or newer
     |                           `- note: add 'if #available' version check
 401 |             }
 402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:32: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 382 |
 383 |     // MARK: - Connection Status
 384 |     public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
     |                 `- note: add '@available' attribute to enclosing instance method
 385 |         guard status != .online else { return }
 386 |
     :
 398 |                     throw XMPPError.connectionTimeout
 399 |                 }
 400 |                 try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
     |                                |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
     |                                `- note: add 'if #available' version check
 401 |             }
 402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
     |                      |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
     |                      `- note: add 'if #available' version check
 412 |             messageQueue.append {
 413 |                 let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
 412 |             messageQueue.append {
     :
 415 |                 return result
 416 |             }
 417 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 418 |                 await processQueue()
 419 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
 412 |             messageQueue.append {
     :
 415 |                 return result
 416 |             }
 417 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 418 |                 await processQueue()
 419 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:46: note: expanded code originates here
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
     +--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
     |409 |
     |410 |
     |411 |                                              #isolation
     |    |                                               `- error: 'isolation()' is only available in macOS 10.15 or newer
     +------------------------------------------------------------------------------------------------
 412 |             messageQueue.append {
 413 |                 let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:24: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 421 |     }
 422 |
 423 |     private func processQueue() async {
     |                  `- note: add '@available' attribute to enclosing instance method
 424 |         guard !processingQueue else { return }
 425 |         processingQueue = true
     :
 444 |
 445 |         if !messageQueue.isEmpty && status == .online {
 446 |             try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
     |                        |- error: 'Task' is only available in macOS 10.15 or newer
     |                        `- note: add 'if #available' version check
 447 |             await processQueue()
 448 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 421 |     }
 422 |
 423 |     private func processQueue() async {
     |                  `- note: add '@available' attribute to enclosing instance method
 424 |         guard !processingQueue else { return }
 425 |         processingQueue = true
     :
 444 |
 445 |         if !messageQueue.isEmpty && status == .online {
 446 |             try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
     |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
     |                             `- note: add 'if #available' version check
 447 |             await processQueue()
 448 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:481:13: warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
 479 |         let idleTime: TimeInterval = 2.0
 480 |         // Match TypeScript: const pongWait = 2000;
 481 |         let pongWait: TimeInterval = 2.0
     |             `- warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
 482 |
 483 |         idlePingTimeout = Timer.scheduledTimer(withTimeInterval: idleTime, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 576 |     // This should be called when XMPP stream becomes online
 577 |     // We need to add a method to XMPPStreamDelegate for this
 578 |     public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
     |                 `- note: add '@available' attribute to enclosing instance method
 579 |         Task {
     |         |- error: 'Task' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
 580 |             await handleOnlineEvent(jid: jid)
 581 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 576 |     // This should be called when XMPP stream becomes online
 577 |     // We need to add a method to XMPPStreamDelegate for this
 578 |     public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
     |                 `- note: add '@available' attribute to enclosing instance method
 579 |         Task {
     |         |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
 580 |             await handleOnlineEvent(jid: jid)
 581 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:24: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 642 |
 643 |             // Wait a bit for the server to process the initial presence
 644 |             try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
     |                        |- error: 'Task' is only available in macOS 10.15 or newer
     |                        `- note: add 'if #available' version check
 645 |
 646 |             // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 642 |
 643 |             // Wait a bit for the server to process the initial presence
 644 |             try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
     |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
     |                             `- note: add 'if #available' version check
 645 |
 646 |             // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 651 |
 652 |             // Match TypeScript: this.processQueue().catch(() => {});
 653 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 654 |                 await processQueue()
 655 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 651 |
 652 |             // Match TypeScript: this.processQueue().catch(() => {});
 653 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 654 |                 await processQueue()
 655 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:662:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 660 |             // await drainHeap()
 661 |
 662 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 663 |             // Match TypeScript: console.log('Error', error);
 664 |             //NSlog("Error %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:681:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 679 |                 //NSlog("   Disconnect Error Code: %ld", nsError.code)
 680 |                 //NSlog("   Disconnect Error Description: %@", nsError.localizedDescription)
 681 |                 if let reason = nsError.userInfo["reason"] as? String {
     |                        `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 682 |                     //NSlog("   Disconnect Reason: %@", reason)
 683 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:684:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 682 |                     //NSlog("   Disconnect Reason: %@", reason)
 683 |                 }
 684 |                 if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
     |                        `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 685 |                     //NSlog("   WebSocket Close Code: %u", code)
 686 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:690:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 688 |                 //print("   Disconnect Error Code: \(nsError.code)")
 689 |                 //print("   Disconnect Error Description: \(nsError.localizedDescription)")
 690 |                 if let reason = nsError.userInfo["reason"] as? String {
     |                        `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 691 |                     //print("   Disconnect Reason: \(reason)")
 692 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:693:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 691 |                     //print("   Disconnect Reason: \(reason)")
 692 |                 }
 693 |                 if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
     |                        `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 694 |                     //print("   WebSocket Close Code: \(code)")
 695 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:852:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 850 |                 handlePong()
 851 |             }
 852 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 853 |             // Ignore errors - match TypeScript empty catch
 854 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 931 |     /// it. If the probe times out, the caller (`SessionRecoveryManager`)
 932 |     /// forces a hard reconnect rather than relying on `status == .online`.
 933 |     public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
     |                 `- note: add '@available' attribute to enclosing instance method
 934 |         guard status == .online,
 935 |               let stream = xmppStream,
     :
 954 |         lastPingId = pingId
 955 |
 956 |         return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
     |                      |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
     |                      `- note: add 'if #available' version check
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:63: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 931 |     /// it. If the probe times out, the caller (`SessionRecoveryManager`)
 932 |     /// forces a hard reconnect rather than relying on `status == .online`.
 933 |     public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
     |                 `- note: add '@available' attribute to enclosing instance method
 934 |         guard status == .online,
 935 |               let stream = xmppStream,
     :
 954 |         lastPingId = pingId
 955 |
 956 |         return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
     |                                                               |- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
     |                                                               `- note: add 'if #available' version check
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:46: note: expanded code originates here
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 931 |     /// it. If the probe times out, the caller (`SessionRecoveryManager`)
 932 |     /// forces a hard reconnect rather than relying on `status == .online`.
 933 |     public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
     |                 `- note: add '@available' attribute to enclosing instance method
 934 |         guard status == .online,
 935 |               let stream = xmppStream,
     :
 954 |         lastPingId = pingId
 955 |
 956 |         return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
     +--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
     |954 |
     |955 |
     |956 |                                              #isolation
     |    |                                               `- error: 'isolation()' is only available in macOS 10.15 or newer
     +------------------------------------------------------------------------------------------------
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:959:34: warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: class 'XMPPClient' does not conform to the 'Sendable' protocol
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
 959 |                 guard let self = self else { return }
     |                                  `- warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
 960 |                 guard let cont = self.pingProbeContinuation else { return }
 961 |                 self.pingProbeContinuation = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1013 |     /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 |     /// This ensures messages are available even if no ChatRoomViewModel is active
1015 |     private func processIncomingMessage(_ message: Message) {
     |                  `- note: add '@available' attribute to enclosing instance method
1016 |         let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 |         let selfLocal = self.username.components(separatedBy: "@").first ?? ""
     :
1031 |
1032 |         // MessageCache is @MainActor, so we need to call it from main actor context
1033 |         Task { @MainActor in
     |         |- error: 'Task' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
1034 |             // Load existing messages from cache
1035 |             var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1013 |     /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 |     /// This ensures messages are available even if no ChatRoomViewModel is active
1015 |     private func processIncomingMessage(_ message: Message) {
     |                  `- note: add '@available' attribute to enclosing instance method
1016 |         let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 |         let selfLocal = self.username.components(separatedBy: "@").first ?? ""
     :
1031 |
1032 |         // MessageCache is @MainActor, so we need to call it from main actor context
1033 |         Task { @MainActor in
     |         |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
1034 |             // Load existing messages from cache
1035 |             var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1059:21: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1013 |     /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 |     /// This ensures messages are available even if no ChatRoomViewModel is active
1015 |     private func processIncomingMessage(_ message: Message) {
     |                  `- note: add '@available' attribute to enclosing instance method
1016 |         let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 |         let selfLocal = self.username.components(separatedBy: "@").first ?? ""
     :
1057 |                 if var storeRoom = RoomStore.shared.rooms[roomJID] {
1058 |                     storeRoom.messages = messagesToSave
1059 |                     RoomStore.shared.rooms[roomJID] = storeRoom
     |                     |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
     |                     `- note: add 'if #available' version check
1060 |                 }
1061 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1177 |
1178 |             // Update RoomStore (must be on MainActor)
1179 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1180 |                 RoomStore.shared.setReactions(
1181 |                     roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1177 |
1178 |             // Update RoomStore (must be on MainActor)
1179 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1180 |                 RoomStore.shared.setReactions(
1181 |                     roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1229 |             print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1232 |                 // If the user previously left this room, our client
1233 |                 // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1229 |             print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1232 |                 // If the user previously left this room, our client
1233 |                 // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1290 |             guard let self = self, !roomJID.isEmpty else { return }
1291 |             print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1293 |                 RoomStore.shared.deleteRoom(jid: roomJID)
1294 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1290 |             guard let self = self, !roomJID.isEmpty else { return }
1291 |             print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1293 |                 RoomStore.shared.deleteRoom(jid: roomJID)
1294 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1323 |             // Match TypeScript: deleteRoomMessage completely removes message from array
1324 |             // Update RoomStore (must be on MainActor) - completely remove message
1325 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1326 |                 RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1323 |             // Match TypeScript: deleteRoomMessage completely removes message from array
1324 |             // Update RoomStore (must be on MainActor) - completely remove message
1325 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1326 |                 RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1344 |
1345 |             // Update RoomStore (must be on MainActor)
1346 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1347 |                 var updates = PartialMessageUpdate()
1348 |                 updates.body = newText
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1344 |
1345 |             // Update RoomStore (must be on MainActor)
1346 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1347 |                 var updates = PartialMessageUpdate()
1348 |                 updates.body = newText
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[107/108] Compiling XMPPChatCore XMPPClient.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:16:5: error: 'Task' is only available in macOS 10.15 or newer
 8 | import Foundation
 9 |
10 | public func resendMessage(
   |             `- note: add '@available' attribute to enclosing global function
11 |     message: Message,
12 |     client: XMPPClient,
   :
14 |     completion: @escaping (Result<Message, Error>) -> Void
15 | ) {
16 |     Task {
   |     |- error: 'Task' is only available in macOS 10.15 or newer
   |     `- note: add 'if #available' version check
17 |         do {
18 |             if let mimetype = message.mimetype, mimetype.hasPrefix("media/") {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:16:5: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 8 | import Foundation
 9 |
10 | public func resendMessage(
   |             `- note: add '@available' attribute to enclosing global function
11 |     message: Message,
12 |     client: XMPPClient,
   :
14 |     completion: @escaping (Result<Message, Error>) -> Void
15 | ) {
16 |     Task {
   |     |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
   |     `- note: add 'if #available' version check
17 |         do {
18 |             if let mimetype = message.mimetype, mimetype.hasPrefix("media/") {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:64:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
62 |                 completion(.success(message))
63 |             }
64 |         } catch {
   |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
65 |             completion(.failure(error))
66 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient+Operations.swift:99:24: error: 'Task' is only available in macOS 10.15 or newer
  9 | import Foundation
 10 |
 11 | extension XMPPClient {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Send global `<presence/>` stanza to XMPP server (announce online).
 13 |     public func sendGlobalPresence() {
    :
 87 |     }
 88 |
 89 |     internal func waitForRoomPresenceResponses(roomJIDs: [String], timeout: TimeInterval) async -> [String] {
    |                   `- note: add '@available' attribute to enclosing instance method
 90 |         let normalized = roomJIDs.map { $0.components(separatedBy: "/").first ?? $0 }
 91 |         let start = Date()
    :
 97 |                 return []
 98 |             }
 99 |             try? await Task.sleep(nanoseconds: 100_000_000)
    |                        |- error: 'Task' is only available in macOS 10.15 or newer
    |                        `- note: add 'if #available' version check
100 |         }
101 |         let unresolved = normalized.filter { !hasPresenceResponseForRoom($0) }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient+Operations.swift:99:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  9 | import Foundation
 10 |
 11 | extension XMPPClient {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Send global `<presence/>` stanza to XMPP server (announce online).
 13 |     public func sendGlobalPresence() {
    :
 87 |     }
 88 |
 89 |     internal func waitForRoomPresenceResponses(roomJIDs: [String], timeout: TimeInterval) async -> [String] {
    |                   `- note: add '@available' attribute to enclosing instance method
 90 |         let normalized = roomJIDs.map { $0.components(separatedBy: "/").first ?? $0 }
 91 |         let start = Date()
    :
 97 |                 return []
 98 |             }
 99 |             try? await Task.sleep(nanoseconds: 100_000_000)
    |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
100 |         }
101 |         let unresolved = normalized.filter { !hasPresenceResponseForRoom($0) }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:64:40: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
  62 |     // either by a matching `<iq type='result' id='probe-...'/>` (handlePong)
  63 |     // or by the probe timer firing.
  64 |     private var pingProbeContinuation: CheckedContinuation<Bool, Never>?
     |                                        `- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
  65 |     private var pingProbeTimer: Timer?
  66 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:232:13: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 161 |     // MARK: - Connection Management
 162 |     // Match TypeScript: async initializeClient()
 163 |     private func initializeClient() {
     |                  `- note: add '@available' attribute to enclosing instance method
 164 |         // Prevent multiple simultaneous connection attempts
 165 |         guard !isConnecting else {
     :
 230 |
 231 |             // Match TypeScript: this.client.start().catch((error) => { console.error('Error starting client:', error); });
 232 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 233 |                 do {
 234 |                     xmppStream?.connect(username: username, password: password, resource: resource)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:232:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 161 |     // MARK: - Connection Management
 162 |     // Match TypeScript: async initializeClient()
 163 |     private func initializeClient() {
     |                  `- note: add '@available' attribute to enclosing instance method
 164 |         // Prevent multiple simultaneous connection attempts
 165 |         guard !isConnecting else {
     :
 230 |
 231 |             // Match TypeScript: this.client.start().catch((error) => { console.error('Error starting client:', error); });
 232 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 233 |                 do {
 234 |                     xmppStream?.connect(username: username, password: password, resource: resource)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:235:19: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 233 |                 do {
 234 |                     xmppStream?.connect(username: username, password: password, resource: resource)
 235 |                 } catch {
     |                   `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 236 |                     //NSlog("Error starting client: %@", error.localizedDescription)
 237 |                     //print("Error starting client: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:246:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 244 |
 245 |             logStep("initializeClient:started")
 246 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 247 |             //NSlog("Error initializing client: %@", error.localizedDescription)
 248 |             //print("Error initializing client: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:293:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 291 |             //NSlog("Client disconnected")
 292 |             //print("Client disconnected")
 293 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 294 |             // Match TypeScript: console.error('Error disconnecting client:', error);
 295 |             //NSlog("Error disconnecting client: %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 307 |
 308 |     // MARK: - Reconnection
 309 |     private func scheduleReconnect(reason: String) {
     |                  `- note: add '@available' attribute to enclosing instance method
 310 |         // Don't reconnect if connection was replaced
 311 |         if connectionReplaced {
     :
 353 |             guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
 354 |             self.offlineReconnectAttempts += 1
 355 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 356 |                 await self.reconnect()
 357 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 307 |
 308 |     // MARK: - Reconnection
 309 |     private func scheduleReconnect(reason: String) {
     |                  `- note: add '@available' attribute to enclosing instance method
 310 |         // Don't reconnect if connection was replaced
 311 |         if connectionReplaced {
     :
 353 |             guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
 354 |             self.offlineReconnectAttempts += 1
 355 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 356 |                 await self.reconnect()
 357 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:27: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 382 |
 383 |     // MARK: - Connection Status
 384 |     public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
     |                 `- note: add '@available' attribute to enclosing instance method
 385 |         guard status != .online else { return }
 386 |
     :
 398 |                     throw XMPPError.connectionTimeout
 399 |                 }
 400 |                 try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
     |                           |- error: 'Task' is only available in macOS 10.15 or newer
     |                           `- note: add 'if #available' version check
 401 |             }
 402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:32: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 382 |
 383 |     // MARK: - Connection Status
 384 |     public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
     |                 `- note: add '@available' attribute to enclosing instance method
 385 |         guard status != .online else { return }
 386 |
     :
 398 |                     throw XMPPError.connectionTimeout
 399 |                 }
 400 |                 try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
     |                                |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
     |                                `- note: add 'if #available' version check
 401 |             }
 402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
     |                      |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
     |                      `- note: add 'if #available' version check
 412 |             messageQueue.append {
 413 |                 let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
 412 |             messageQueue.append {
     :
 415 |                 return result
 416 |             }
 417 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 418 |                 await processQueue()
 419 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
 412 |             messageQueue.append {
     :
 415 |                 return result
 416 |             }
 417 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 418 |                 await processQueue()
 419 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:46: note: expanded code originates here
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
     +--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
     |409 |
     |410 |
     |411 |                                              #isolation
     |    |                                               `- error: 'isolation()' is only available in macOS 10.15 or newer
     +------------------------------------------------------------------------------------------------
 412 |             messageQueue.append {
 413 |                 let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:24: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 421 |     }
 422 |
 423 |     private func processQueue() async {
     |                  `- note: add '@available' attribute to enclosing instance method
 424 |         guard !processingQueue else { return }
 425 |         processingQueue = true
     :
 444 |
 445 |         if !messageQueue.isEmpty && status == .online {
 446 |             try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
     |                        |- error: 'Task' is only available in macOS 10.15 or newer
     |                        `- note: add 'if #available' version check
 447 |             await processQueue()
 448 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 421 |     }
 422 |
 423 |     private func processQueue() async {
     |                  `- note: add '@available' attribute to enclosing instance method
 424 |         guard !processingQueue else { return }
 425 |         processingQueue = true
     :
 444 |
 445 |         if !messageQueue.isEmpty && status == .online {
 446 |             try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
     |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
     |                             `- note: add 'if #available' version check
 447 |             await processQueue()
 448 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:481:13: warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
 479 |         let idleTime: TimeInterval = 2.0
 480 |         // Match TypeScript: const pongWait = 2000;
 481 |         let pongWait: TimeInterval = 2.0
     |             `- warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
 482 |
 483 |         idlePingTimeout = Timer.scheduledTimer(withTimeInterval: idleTime, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 576 |     // This should be called when XMPP stream becomes online
 577 |     // We need to add a method to XMPPStreamDelegate for this
 578 |     public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
     |                 `- note: add '@available' attribute to enclosing instance method
 579 |         Task {
     |         |- error: 'Task' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
 580 |             await handleOnlineEvent(jid: jid)
 581 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 576 |     // This should be called when XMPP stream becomes online
 577 |     // We need to add a method to XMPPStreamDelegate for this
 578 |     public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
     |                 `- note: add '@available' attribute to enclosing instance method
 579 |         Task {
     |         |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
 580 |             await handleOnlineEvent(jid: jid)
 581 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:24: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 642 |
 643 |             // Wait a bit for the server to process the initial presence
 644 |             try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
     |                        |- error: 'Task' is only available in macOS 10.15 or newer
     |                        `- note: add 'if #available' version check
 645 |
 646 |             // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 642 |
 643 |             // Wait a bit for the server to process the initial presence
 644 |             try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
     |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
     |                             `- note: add 'if #available' version check
 645 |
 646 |             // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 651 |
 652 |             // Match TypeScript: this.processQueue().catch(() => {});
 653 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 654 |                 await processQueue()
 655 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 651 |
 652 |             // Match TypeScript: this.processQueue().catch(() => {});
 653 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 654 |                 await processQueue()
 655 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:662:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 660 |             // await drainHeap()
 661 |
 662 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 663 |             // Match TypeScript: console.log('Error', error);
 664 |             //NSlog("Error %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:681:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 679 |                 //NSlog("   Disconnect Error Code: %ld", nsError.code)
 680 |                 //NSlog("   Disconnect Error Description: %@", nsError.localizedDescription)
 681 |                 if let reason = nsError.userInfo["reason"] as? String {
     |                        `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 682 |                     //NSlog("   Disconnect Reason: %@", reason)
 683 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:684:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 682 |                     //NSlog("   Disconnect Reason: %@", reason)
 683 |                 }
 684 |                 if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
     |                        `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 685 |                     //NSlog("   WebSocket Close Code: %u", code)
 686 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:690:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 688 |                 //print("   Disconnect Error Code: \(nsError.code)")
 689 |                 //print("   Disconnect Error Description: \(nsError.localizedDescription)")
 690 |                 if let reason = nsError.userInfo["reason"] as? String {
     |                        `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 691 |                     //print("   Disconnect Reason: \(reason)")
 692 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:693:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 691 |                     //print("   Disconnect Reason: \(reason)")
 692 |                 }
 693 |                 if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
     |                        `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 694 |                     //print("   WebSocket Close Code: \(code)")
 695 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:852:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 850 |                 handlePong()
 851 |             }
 852 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 853 |             // Ignore errors - match TypeScript empty catch
 854 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 931 |     /// it. If the probe times out, the caller (`SessionRecoveryManager`)
 932 |     /// forces a hard reconnect rather than relying on `status == .online`.
 933 |     public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
     |                 `- note: add '@available' attribute to enclosing instance method
 934 |         guard status == .online,
 935 |               let stream = xmppStream,
     :
 954 |         lastPingId = pingId
 955 |
 956 |         return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
     |                      |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
     |                      `- note: add 'if #available' version check
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:63: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 931 |     /// it. If the probe times out, the caller (`SessionRecoveryManager`)
 932 |     /// forces a hard reconnect rather than relying on `status == .online`.
 933 |     public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
     |                 `- note: add '@available' attribute to enclosing instance method
 934 |         guard status == .online,
 935 |               let stream = xmppStream,
     :
 954 |         lastPingId = pingId
 955 |
 956 |         return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
     |                                                               |- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
     |                                                               `- note: add 'if #available' version check
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:46: note: expanded code originates here
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 931 |     /// it. If the probe times out, the caller (`SessionRecoveryManager`)
 932 |     /// forces a hard reconnect rather than relying on `status == .online`.
 933 |     public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
     |                 `- note: add '@available' attribute to enclosing instance method
 934 |         guard status == .online,
 935 |               let stream = xmppStream,
     :
 954 |         lastPingId = pingId
 955 |
 956 |         return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
     +--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
     |954 |
     |955 |
     |956 |                                              #isolation
     |    |                                               `- error: 'isolation()' is only available in macOS 10.15 or newer
     +------------------------------------------------------------------------------------------------
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:959:34: warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: class 'XMPPClient' does not conform to the 'Sendable' protocol
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
 959 |                 guard let self = self else { return }
     |                                  `- warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
 960 |                 guard let cont = self.pingProbeContinuation else { return }
 961 |                 self.pingProbeContinuation = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1013 |     /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 |     /// This ensures messages are available even if no ChatRoomViewModel is active
1015 |     private func processIncomingMessage(_ message: Message) {
     |                  `- note: add '@available' attribute to enclosing instance method
1016 |         let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 |         let selfLocal = self.username.components(separatedBy: "@").first ?? ""
     :
1031 |
1032 |         // MessageCache is @MainActor, so we need to call it from main actor context
1033 |         Task { @MainActor in
     |         |- error: 'Task' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
1034 |             // Load existing messages from cache
1035 |             var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1013 |     /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 |     /// This ensures messages are available even if no ChatRoomViewModel is active
1015 |     private func processIncomingMessage(_ message: Message) {
     |                  `- note: add '@available' attribute to enclosing instance method
1016 |         let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 |         let selfLocal = self.username.components(separatedBy: "@").first ?? ""
     :
1031 |
1032 |         // MessageCache is @MainActor, so we need to call it from main actor context
1033 |         Task { @MainActor in
     |         |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
1034 |             // Load existing messages from cache
1035 |             var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1059:21: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1013 |     /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 |     /// This ensures messages are available even if no ChatRoomViewModel is active
1015 |     private func processIncomingMessage(_ message: Message) {
     |                  `- note: add '@available' attribute to enclosing instance method
1016 |         let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 |         let selfLocal = self.username.components(separatedBy: "@").first ?? ""
     :
1057 |                 if var storeRoom = RoomStore.shared.rooms[roomJID] {
1058 |                     storeRoom.messages = messagesToSave
1059 |                     RoomStore.shared.rooms[roomJID] = storeRoom
     |                     |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
     |                     `- note: add 'if #available' version check
1060 |                 }
1061 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1177 |
1178 |             // Update RoomStore (must be on MainActor)
1179 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1180 |                 RoomStore.shared.setReactions(
1181 |                     roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1177 |
1178 |             // Update RoomStore (must be on MainActor)
1179 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1180 |                 RoomStore.shared.setReactions(
1181 |                     roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1229 |             print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1232 |                 // If the user previously left this room, our client
1233 |                 // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1229 |             print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1232 |                 // If the user previously left this room, our client
1233 |                 // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1290 |             guard let self = self, !roomJID.isEmpty else { return }
1291 |             print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1293 |                 RoomStore.shared.deleteRoom(jid: roomJID)
1294 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1290 |             guard let self = self, !roomJID.isEmpty else { return }
1291 |             print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1293 |                 RoomStore.shared.deleteRoom(jid: roomJID)
1294 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1323 |             // Match TypeScript: deleteRoomMessage completely removes message from array
1324 |             // Update RoomStore (must be on MainActor) - completely remove message
1325 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1326 |                 RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1323 |             // Match TypeScript: deleteRoomMessage completely removes message from array
1324 |             // Update RoomStore (must be on MainActor) - completely remove message
1325 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1326 |                 RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1344 |
1345 |             // Update RoomStore (must be on MainActor)
1346 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1347 |                 var updates = PartialMessageUpdate()
1348 |                 updates.body = newText
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1344 |
1345 |             // Update RoomStore (must be on MainActor)
1346 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1347 |                 var updates = PartialMessageUpdate()
1348 |                 updates.body = newText
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[108/108] Compiling XMPPChatCore XMPPStanza.swift
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:16:5: error: 'Task' is only available in macOS 10.15 or newer
 8 | import Foundation
 9 |
10 | public func resendMessage(
   |             `- note: add '@available' attribute to enclosing global function
11 |     message: Message,
12 |     client: XMPPClient,
   :
14 |     completion: @escaping (Result<Message, Error>) -> Void
15 | ) {
16 |     Task {
   |     |- error: 'Task' is only available in macOS 10.15 or newer
   |     `- note: add 'if #available' version check
17 |         do {
18 |             if let mimetype = message.mimetype, mimetype.hasPrefix("media/") {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:16:5: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 8 | import Foundation
 9 |
10 | public func resendMessage(
   |             `- note: add '@available' attribute to enclosing global function
11 |     message: Message,
12 |     client: XMPPClient,
   :
14 |     completion: @escaping (Result<Message, Error>) -> Void
15 | ) {
16 |     Task {
   |     |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
   |     `- note: add 'if #available' version check
17 |         do {
18 |             if let mimetype = message.mimetype, mimetype.hasPrefix("media/") {
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/Utilities/ResendMessage.swift:64:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
62 |                 completion(.success(message))
63 |             }
64 |         } catch {
   |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
65 |             completion(.failure(error))
66 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient+Operations.swift:99:24: error: 'Task' is only available in macOS 10.15 or newer
  9 | import Foundation
 10 |
 11 | extension XMPPClient {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Send global `<presence/>` stanza to XMPP server (announce online).
 13 |     public func sendGlobalPresence() {
    :
 87 |     }
 88 |
 89 |     internal func waitForRoomPresenceResponses(roomJIDs: [String], timeout: TimeInterval) async -> [String] {
    |                   `- note: add '@available' attribute to enclosing instance method
 90 |         let normalized = roomJIDs.map { $0.components(separatedBy: "/").first ?? $0 }
 91 |         let start = Date()
    :
 97 |                 return []
 98 |             }
 99 |             try? await Task.sleep(nanoseconds: 100_000_000)
    |                        |- error: 'Task' is only available in macOS 10.15 or newer
    |                        `- note: add 'if #available' version check
100 |         }
101 |         let unresolved = normalized.filter { !hasPresenceResponseForRoom($0) }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient+Operations.swift:99:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  9 | import Foundation
 10 |
 11 | extension XMPPClient {
    | `- note: add '@available' attribute to enclosing extension
 12 |     /// Send global `<presence/>` stanza to XMPP server (announce online).
 13 |     public func sendGlobalPresence() {
    :
 87 |     }
 88 |
 89 |     internal func waitForRoomPresenceResponses(roomJIDs: [String], timeout: TimeInterval) async -> [String] {
    |                   `- note: add '@available' attribute to enclosing instance method
 90 |         let normalized = roomJIDs.map { $0.components(separatedBy: "/").first ?? $0 }
 91 |         let start = Date()
    :
 97 |                 return []
 98 |             }
 99 |             try? await Task.sleep(nanoseconds: 100_000_000)
    |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
    |                             `- note: add 'if #available' version check
100 |         }
101 |         let unresolved = normalized.filter { !hasPresenceResponseForRoom($0) }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:64:40: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
  62 |     // either by a matching `<iq type='result' id='probe-...'/>` (handlePong)
  63 |     // or by the probe timer firing.
  64 |     private var pingProbeContinuation: CheckedContinuation<Bool, Never>?
     |                                        `- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
  65 |     private var pingProbeTimer: Timer?
  66 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:232:13: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 161 |     // MARK: - Connection Management
 162 |     // Match TypeScript: async initializeClient()
 163 |     private func initializeClient() {
     |                  `- note: add '@available' attribute to enclosing instance method
 164 |         // Prevent multiple simultaneous connection attempts
 165 |         guard !isConnecting else {
     :
 230 |
 231 |             // Match TypeScript: this.client.start().catch((error) => { console.error('Error starting client:', error); });
 232 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 233 |                 do {
 234 |                     xmppStream?.connect(username: username, password: password, resource: resource)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:232:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 161 |     // MARK: - Connection Management
 162 |     // Match TypeScript: async initializeClient()
 163 |     private func initializeClient() {
     |                  `- note: add '@available' attribute to enclosing instance method
 164 |         // Prevent multiple simultaneous connection attempts
 165 |         guard !isConnecting else {
     :
 230 |
 231 |             // Match TypeScript: this.client.start().catch((error) => { console.error('Error starting client:', error); });
 232 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 233 |                 do {
 234 |                     xmppStream?.connect(username: username, password: password, resource: resource)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:235:19: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 233 |                 do {
 234 |                     xmppStream?.connect(username: username, password: password, resource: resource)
 235 |                 } catch {
     |                   `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 236 |                     //NSlog("Error starting client: %@", error.localizedDescription)
 237 |                     //print("Error starting client: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:246:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 244 |
 245 |             logStep("initializeClient:started")
 246 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 247 |             //NSlog("Error initializing client: %@", error.localizedDescription)
 248 |             //print("Error initializing client: \(error.localizedDescription)")
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:293:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 291 |             //NSlog("Client disconnected")
 292 |             //print("Client disconnected")
 293 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 294 |             // Match TypeScript: console.error('Error disconnecting client:', error);
 295 |             //NSlog("Error disconnecting client: %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 307 |
 308 |     // MARK: - Reconnection
 309 |     private func scheduleReconnect(reason: String) {
     |                  `- note: add '@available' attribute to enclosing instance method
 310 |         // Don't reconnect if connection was replaced
 311 |         if connectionReplaced {
     :
 353 |             guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
 354 |             self.offlineReconnectAttempts += 1
 355 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 356 |                 await self.reconnect()
 357 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:355:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 307 |
 308 |     // MARK: - Reconnection
 309 |     private func scheduleReconnect(reason: String) {
     |                  `- note: add '@available' attribute to enclosing instance method
 310 |         // Don't reconnect if connection was replaced
 311 |         if connectionReplaced {
     :
 353 |             guard self.isBrowserOnline() && !self.pausedDueToOfflineCap else { return }
 354 |             self.offlineReconnectAttempts += 1
 355 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 356 |                 await self.reconnect()
 357 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:27: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 382 |
 383 |     // MARK: - Connection Status
 384 |     public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
     |                 `- note: add '@available' attribute to enclosing instance method
 385 |         guard status != .online else { return }
 386 |
     :
 398 |                     throw XMPPError.connectionTimeout
 399 |                 }
 400 |                 try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
     |                           |- error: 'Task' is only available in macOS 10.15 or newer
     |                           `- note: add 'if #available' version check
 401 |             }
 402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:400:32: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 382 |
 383 |     // MARK: - Connection Status
 384 |     public func ensureConnected(timeout: TimeInterval = 10.0) async throws {
     |                 `- note: add '@available' attribute to enclosing instance method
 385 |         guard status != .online else { return }
 386 |
     :
 398 |                     throw XMPPError.connectionTimeout
 399 |                 }
 400 |                 try await Task.sleep(nanoseconds: 500_000_000) // 0.5 seconds
     |                                |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
     |                                `- note: add 'if #available' version check
 401 |             }
 402 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
     |                      |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
     |                      `- note: add 'if #available' version check
 412 |             messageQueue.append {
 413 |                 let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
 412 |             messageQueue.append {
     :
 415 |                 return result
 416 |             }
 417 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 418 |                 await processQueue()
 419 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:417:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
 412 |             messageQueue.append {
     :
 415 |                 return result
 416 |             }
 417 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 418 |                 await processQueue()
 419 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:411:46: note: expanded code originates here
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 408 |
 409 |     // MARK: - Message Queue
 410 |     private func enqueue(_ task: @escaping () async -> Bool) async -> Bool {
     |                  `- note: add '@available' attribute to enclosing instance method
 411 |         return await withCheckedContinuation { continuation in
     +--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
     |409 |
     |410 |
     |411 |                                              #isolation
     |    |                                               `- error: 'isolation()' is only available in macOS 10.15 or newer
     +------------------------------------------------------------------------------------------------
 412 |             messageQueue.append {
 413 |                 let result = await task()
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:24: error: 'Task' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 421 |     }
 422 |
 423 |     private func processQueue() async {
     |                  `- note: add '@available' attribute to enclosing instance method
 424 |         guard !processingQueue else { return }
 425 |         processingQueue = true
     :
 444 |
 445 |         if !messageQueue.isEmpty && status == .online {
 446 |             try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
     |                        |- error: 'Task' is only available in macOS 10.15 or newer
     |                        `- note: add 'if #available' version check
 447 |             await processQueue()
 448 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:446:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: add '@available' attribute to enclosing class
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 421 |     }
 422 |
 423 |     private func processQueue() async {
     |                  `- note: add '@available' attribute to enclosing instance method
 424 |         guard !processingQueue else { return }
 425 |         processingQueue = true
     :
 444 |
 445 |         if !messageQueue.isEmpty && status == .online {
 446 |             try? await Task.sleep(nanoseconds: 1_000_000_000) // 1 second
     |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
     |                             `- note: add 'if #available' version check
 447 |             await processQueue()
 448 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:481:13: warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
 479 |         let idleTime: TimeInterval = 2.0
 480 |         // Match TypeScript: const pongWait = 2000;
 481 |         let pongWait: TimeInterval = 2.0
     |             `- warning: immutable value 'pongWait' was never used; consider replacing with '_' or removing it [#no-usage]
 482 |
 483 |         idlePingTimeout = Timer.scheduledTimer(withTimeInterval: idleTime, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 576 |     // This should be called when XMPP stream becomes online
 577 |     // We need to add a method to XMPPStreamDelegate for this
 578 |     public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
     |                 `- note: add '@available' attribute to enclosing instance method
 579 |         Task {
     |         |- error: 'Task' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
 580 |             await handleOnlineEvent(jid: jid)
 581 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:579:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 576 |     // This should be called when XMPP stream becomes online
 577 |     // We need to add a method to XMPPStreamDelegate for this
 578 |     public func xmppStreamDidBecomeOnline(_ stream: XMPPStream, jid: String) {
     |                 `- note: add '@available' attribute to enclosing instance method
 579 |         Task {
     |         |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
 580 |             await handleOnlineEvent(jid: jid)
 581 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:24: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 642 |
 643 |             // Wait a bit for the server to process the initial presence
 644 |             try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
     |                        |- error: 'Task' is only available in macOS 10.15 or newer
     |                        `- note: add 'if #available' version check
 645 |
 646 |             // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:644:29: error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 642 |
 643 |             // Wait a bit for the server to process the initial presence
 644 |             try? await Task.sleep(nanoseconds: 100_000_000) // 0.1 seconds
     |                             |- error: 'sleep(nanoseconds:)' is only available in macOS 10.15 or newer
     |                             `- note: add 'if #available' version check
 645 |
 646 |             // Match TypeScript: await this.sendAllPresencesAndMarkReady();
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 651 |
 652 |             // Match TypeScript: this.processQueue().catch(() => {});
 653 |             Task {
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 654 |                 await processQueue()
 655 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:653:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 582 |     }
 583 |
 584 |     private func handleOnlineEvent(jid: String) async {
     |                  `- note: add '@available' attribute to enclosing instance method
 585 |         // Match TypeScript: this.client.on('online', async (jid) => { ... })
 586 |         do {
     :
 651 |
 652 |             // Match TypeScript: this.processQueue().catch(() => {});
 653 |             Task {
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
 654 |                 await processQueue()
 655 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:662:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 660 |             // await drainHeap()
 661 |
 662 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 663 |             // Match TypeScript: console.log('Error', error);
 664 |             //NSlog("Error %@", error.localizedDescription)
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:681:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 679 |                 //NSlog("   Disconnect Error Code: %ld", nsError.code)
 680 |                 //NSlog("   Disconnect Error Description: %@", nsError.localizedDescription)
 681 |                 if let reason = nsError.userInfo["reason"] as? String {
     |                        `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 682 |                     //NSlog("   Disconnect Reason: %@", reason)
 683 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:684:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 682 |                     //NSlog("   Disconnect Reason: %@", reason)
 683 |                 }
 684 |                 if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
     |                        `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 685 |                     //NSlog("   WebSocket Close Code: %u", code)
 686 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:690:24: warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 688 |                 //print("   Disconnect Error Code: \(nsError.code)")
 689 |                 //print("   Disconnect Error Description: \(nsError.localizedDescription)")
 690 |                 if let reason = nsError.userInfo["reason"] as? String {
     |                        `- warning: value 'reason' was defined but never used; consider replacing with boolean test [#no-usage]
 691 |                     //print("   Disconnect Reason: \(reason)")
 692 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:693:24: warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 691 |                     //print("   Disconnect Reason: \(reason)")
 692 |                 }
 693 |                 if let code = nsError.userInfo["disconnectCode"] as? UInt16 {
     |                        `- warning: value 'code' was defined but never used; consider replacing with boolean test [#no-usage]
 694 |                     //print("   WebSocket Close Code: \(code)")
 695 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:852:11: warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 850 |                 handlePong()
 851 |             }
 852 |         } catch {
     |           `- warning: 'catch' block is unreachable because no errors are thrown in 'do' block
 853 |             // Ignore errors - match TypeScript empty catch
 854 |         }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:22: error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 931 |     /// it. If the probe times out, the caller (`SessionRecoveryManager`)
 932 |     /// forces a hard reconnect rather than relying on `status == .online`.
 933 |     public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
     |                 `- note: add '@available' attribute to enclosing instance method
 934 |         guard status == .online,
 935 |               let stream = xmppStream,
     :
 954 |         lastPingId = pingId
 955 |
 956 |         return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
     |                      |- error: 'withCheckedContinuation(isolation:function:_:)' is only available in macOS 10.15 or newer
     |                      `- note: add 'if #available' version check
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:63: error: 'CheckedContinuation' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 931 |     /// it. If the probe times out, the caller (`SessionRecoveryManager`)
 932 |     /// forces a hard reconnect rather than relying on `status == .online`.
 933 |     public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
     |                 `- note: add '@available' attribute to enclosing instance method
 934 |         guard status == .online,
 935 |               let stream = xmppStream,
     :
 954 |         lastPingId = pingId
 955 |
 956 |         return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
     |                                                               |- error: 'CheckedContinuation' is only available in macOS 10.15 or newer
     |                                                               `- note: add 'if #available' version check
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:47: error: 'isolation()' is only available in macOS 10.15 or newer
`- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:956:46: note: expanded code originates here
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
 931 |     /// it. If the probe times out, the caller (`SessionRecoveryManager`)
 932 |     /// forces a hard reconnect rather than relying on `status == .online`.
 933 |     public func pingProbe(timeout: TimeInterval = 2.0) async -> Bool {
     |                 `- note: add '@available' attribute to enclosing instance method
 934 |         guard status == .online,
 935 |               let stream = xmppStream,
     :
 954 |         lastPingId = pingId
 955 |
 956 |         return await withCheckedContinuation { (continuation: CheckedContinuation<Bool, Never>) in
     +--- /Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift
     |954 |
     |955 |
     |956 |                                              #isolation
     |    |                                               `- error: 'isolation()' is only available in macOS 10.15 or newer
     +------------------------------------------------------------------------------------------------
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:959:34: warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
  17 | }
  18 |
  19 | public class XMPPClient {
     |              `- note: class 'XMPPClient' does not conform to the 'Sendable' protocol
  20 |     // MARK: - Properties
  21 |     public weak var delegate: XMPPClientDelegate?
     :
 957 |             pingProbeContinuation = continuation
 958 |             pingProbeTimer = Timer.scheduledTimer(withTimeInterval: timeout, repeats: false) { [weak self] _ in
 959 |                 guard let self = self else { return }
     |                                  `- warning: capture of 'self' with non-Sendable type 'XMPPClient?' in a '@Sendable' closure [#SendableClosureCaptures]
 960 |                 guard let cont = self.pingProbeContinuation else { return }
 961 |                 self.pingProbeContinuation = nil
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1013 |     /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 |     /// This ensures messages are available even if no ChatRoomViewModel is active
1015 |     private func processIncomingMessage(_ message: Message) {
     |                  `- note: add '@available' attribute to enclosing instance method
1016 |         let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 |         let selfLocal = self.username.components(separatedBy: "@").first ?? ""
     :
1031 |
1032 |         // MessageCache is @MainActor, so we need to call it from main actor context
1033 |         Task { @MainActor in
     |         |- error: 'Task' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
1034 |             // Load existing messages from cache
1035 |             var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1033:9: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1013 |     /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 |     /// This ensures messages are available even if no ChatRoomViewModel is active
1015 |     private func processIncomingMessage(_ message: Message) {
     |                  `- note: add '@available' attribute to enclosing instance method
1016 |         let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 |         let selfLocal = self.username.components(separatedBy: "@").first ?? ""
     :
1031 |
1032 |         // MessageCache is @MainActor, so we need to call it from main actor context
1033 |         Task { @MainActor in
     |         |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |         `- note: add 'if #available' version check
1034 |             // Load existing messages from cache
1035 |             var cachedMessages = MessageCache.shared.loadMessages(forRoomJID: roomJID) ?? []
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1059:21: error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1013 |     /// Process incoming message (save to cache, post notification for RoomListViewModel)
1014 |     /// This ensures messages are available even if no ChatRoomViewModel is active
1015 |     private func processIncomingMessage(_ message: Message) {
     |                  `- note: add '@available' attribute to enclosing instance method
1016 |         let roomJID = message.roomJid.components(separatedBy: "/").first ?? message.roomJid
1017 |         let selfLocal = self.username.components(separatedBy: "@").first ?? ""
     :
1057 |                 if var storeRoom = RoomStore.shared.rooms[roomJID] {
1058 |                     storeRoom.messages = messagesToSave
1059 |                     RoomStore.shared.rooms[roomJID] = storeRoom
     |                     |- error: cannot pass as inout because setter for 'rooms' is only available in macOS 10.15 or newer
     |                     `- note: add 'if #available' version check
1060 |                 }
1061 |
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1177 |
1178 |             // Update RoomStore (must be on MainActor)
1179 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1180 |                 RoomStore.shared.setReactions(
1181 |                     roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1179:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1177 |
1178 |             // Update RoomStore (must be on MainActor)
1179 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1180 |                 RoomStore.shared.setReactions(
1181 |                     roomJID: roomJID,
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1229 |             print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1232 |                 // If the user previously left this room, our client
1233 |                 // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1231:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1229 |             print("📨 XMPPClient: Chat invite received for room \(roomJID)")
1230 |
1231 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1232 |                 // If the user previously left this room, our client
1233 |                 // still has a hidden flag set (see `RoomStore.hideRoom`).
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1290 |             guard let self = self, !roomJID.isEmpty else { return }
1291 |             print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1293 |                 RoomStore.shared.deleteRoom(jid: roomJID)
1294 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1292:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1290 |             guard let self = self, !roomJID.isEmpty else { return }
1291 |             print("🗑️ XMPPClient: Room destroyed/kicked — \(roomJID)")
1292 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1293 |                 RoomStore.shared.deleteRoom(jid: roomJID)
1294 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1323 |             // Match TypeScript: deleteRoomMessage completely removes message from array
1324 |             // Update RoomStore (must be on MainActor) - completely remove message
1325 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1326 |                 RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1325:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1323 |             // Match TypeScript: deleteRoomMessage completely removes message from array
1324 |             // Update RoomStore (must be on MainActor) - completely remove message
1325 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1326 |                 RoomStore.shared.deleteMessage(roomJID: roomJID, messageId: messageId)
1327 |             }
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'Task' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1344 |
1345 |             // Update RoomStore (must be on MainActor)
1346 |             Task { @MainActor in
     |             |- error: 'Task' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1347 |                 var updates = PartialMessageUpdate()
1348 |                 updates.body = newText
/Users/admin/builder/spi-builder-workspace/Sources/XMPPChatCore/XMPPClient/XMPPClient.swift:1346:13: error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
 553 |
 554 | // MARK: - XMPPStreamDelegate
 555 | extension XMPPClient: XMPPStreamDelegate {
     | `- note: add '@available' attribute to enclosing extension
 556 |     public func xmppStreamDidConnect(_ stream: XMPPStream) {
 557 |         // Match TypeScript: this.client.on('connecting', () => { ... })
     :
1087 |     }
1088 |
1089 |     private func setupStanzaHandlers() {
     |                  `- note: add '@available' attribute to enclosing instance method
1090 |         guard let handlers = stanzaHandlers else { return }
1091 |
     :
1344 |
1345 |             // Update RoomStore (must be on MainActor)
1346 |             Task { @MainActor in
     |             |- error: 'init(name:priority:operation:)' is only available in macOS 10.15 or newer
     |             `- note: add 'if #available' version check
1347 |                 var updates = PartialMessageUpdate()
1348 |                 updates.body = newText
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
Fetching https://github.com/daltoniam/Starscream.git
[1/5112] Fetching starscream
Fetched https://github.com/daltoniam/Starscream.git from cache (1.58s)
Computing version for https://github.com/daltoniam/Starscream.git
Computed https://github.com/daltoniam/Starscream.git at 4.0.8 (4.46s)
Creating working copy for https://github.com/daltoniam/Starscream.git
Working copy of https://github.com/daltoniam/Starscream.git resolved at 4.0.8
warning: 'starscream': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/admin/builder/spi-builder-workspace/.build/checkouts/Starscream/Sources/Info.plist
BUILD FAILURE 6.2 macosSpm