The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of Citadel, reference main (48d4a8), with Swift 6.1 for macOS (SPM) on 24 Oct 2025 14:12:25 UTC.

Swift 6 data race errors: 33

Build Command

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

Build Log

 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:148:13: warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
 38 | }
 39 |
 40 | final class ExecHandler: ChannelDuplexHandler {
    |             `- note: class 'ExecHandler' does not conform to the 'Sendable' protocol
 41 |     typealias InboundIn = SSHChannelData
 42 |     typealias InboundOut = SSHChannelData
    :
146 |                 )
147 |         }.flatMap { pipeChannel -> EventLoopFuture<Channel> in
148 |             self.pipeChannel = pipeChannel
    |             `- warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
149 |             let start = channel.eventLoop.makePromise(of: Void.self)
150 |             start.completeWithTask {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:153:34: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
151 |                 do {
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
    |                                  `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
154 |                         outputHandler: handler
155 |                     )
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:20:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 18 | import NIOFoundationCompat
 19 | import NIOPosix
 20 | import NIOSSH
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 21 |
 22 | #if canImport(Darwin)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:154:40: warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
154 |                         outputHandler: handler
    |                                        `- warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
155 |                     )
156 |                 } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecDelegate.swift:16:20: note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
14 | }
15 |
16 | public final class ExecOutputHandler {
   |                    `- note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
17 |     public typealias ExitHandler = @Sendable (ExecExitContext) -> ()
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:152:21: warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
 38 | }
 39 |
 40 | final class ExecHandler: ChannelDuplexHandler {
    |             `- note: class 'ExecHandler' does not conform to the 'Sendable' protocol
 41 |     typealias InboundIn = SSHChannelData
 42 |     typealias InboundOut = SSHChannelData
    :
150 |             start.completeWithTask {
151 |                 do {
152 |                     self.context = try await delegate.start(
    |                     `- warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
153 |                         command: event.command,
154 |                         outputHandler: handler
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:153:34: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
151 |                 do {
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
    |                                  `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
154 |                         outputHandler: handler
155 |                     )
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:154:40: warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
154 |                         outputHandler: handler
    |                                        `- warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
155 |                     )
156 |                 } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecDelegate.swift:16:20: note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
14 | }
15 |
16 | public final class ExecOutputHandler {
   |                    `- note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
17 |     public typealias ExitHandler = @Sendable (ExecExitContext) -> ()
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:162:20: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
160 |
161 |             return start.futureResult.flatMap {
162 |                 if event.wantReply {
    |                    `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
163 |                     return channel.triggerUserOutboundEvent(ChannelSuccessEvent()).map {
164 |                         pipeChannel
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:181:20: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
179 |                 channel.close(promise: nil)
180 |             case .failure:
181 |                 if event.wantReply {
    |                    `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
182 |                     channel.triggerUserOutboundEvent(ChannelFailureEvent()).whenComplete { _ in
183 |                         channel.close(promise: nil)
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:65:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 63 |
 64 |     func channelInactive(context: ChannelHandlerContext) {
 65 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 66 |             try await self.context?.terminate()
    |                       `- note: closure captures 'self' which is accessible to code in the current task
 67 |             self.context = nil
 68 |             self.pipeChannel = nil
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:90:18: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 88 |             }
 89 |         case ChannelEvent.inputClosed:
 90 |             Task {
    |                  `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 91 |                 try await self.context?.inputClosed()
    |                           `- note: closure captures 'self' which is accessible to code in the current task
 92 |             }
 93 |         default:
[915/923] Compiling Citadel ExecClient.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Errors.swift:19:10: warning: associated value 'invalidPayload(type:)' of 'Sendable'-conforming enum 'SFTPError' has non-sendable type 'SFTPMessageType'; this is an error in the Swift 6 language mode
17 | public enum SFTPError: Error {
18 |     case unknownMessage
19 |     case invalidPayload(type: SFTPMessageType)
   |          `- warning: associated value 'invalidPayload(type:)' of 'Sendable'-conforming enum 'SFTPError' has non-sendable type 'SFTPMessageType'; this is an error in the Swift 6 language mode
20 |     case invalidResponse
21 |     case noResponseTarget
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Client/ExecClient.swift:34:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 32 |     func handlerAdded(context: ChannelHandlerContext) {
 33 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 34 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 35 |         }
 36 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Client/ExecClient.swift:119:25: warning: type 'TTYHandler' does not conform to the 'Sendable' protocol
  5 | /// A channel handler that manages TTY (terminal) input/output for SSH command execution.
  6 | /// This handler processes both incoming and outgoing data through the SSH channel.
  7 | final class TTYHandler: ChannelDuplexHandler {
    |             `- note: class 'TTYHandler' does not conform to the 'Sendable' protocol
  8 |     typealias InboundIn = SSHChannelData
  9 |     typealias InboundOut = ByteBuffer
    :
117 |                 sshHandler.value.createChannel(createChannel) { channel, _ in
118 |                     channel.pipeline.addHandlers(
119 |                         TTYHandler(
    |                         `- warning: type 'TTYHandler' does not conform to the 'Sendable' protocol
120 |                             maxResponseSize: maxResponseSize,
121 |                             done: promise
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:60:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |     func handlerAdded(context: ChannelHandlerContext) {
 59 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 60 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |         }
 62 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:80:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 78 |             } else if event.wantReply {
 79 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).whenComplete { _ in
 80 |                     context.channel.close(promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 81 |                 }
 82 |             }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:138:37: warning: type 'GlueHandler' does not conform to the 'Sendable' protocol
136 |         }
137 |
138 |         channel.pipeline.addHandler(ours).flatMap {
    |                                     `- warning: type 'GlueHandler' does not conform to the 'Sendable' protocol
139 |             NIOPipeBootstrap(group: channel.eventLoop)
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/NIOGlueHandler.swift:17:13: note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:142:54: warning: type 'SSHInboundChannelDataWrapper' does not conform to the 'Sendable' protocol
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
    |                                                      `- warning: type 'SSHInboundChannelDataWrapper' does not conform to the 'Sendable' protocol
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:40:13: note: class 'SSHInboundChannelDataWrapper' does not conform to the 'Sendable' protocol
38 | }
39 |
40 | final class SSHInboundChannelDataWrapper: ChannelInboundHandler {
   |             `- note: class 'SSHInboundChannelDataWrapper' does not conform to the 'Sendable' protocol
41 |     typealias InboundIn = ByteBuffer
42 |     typealias InboundOut = SSHChannelData
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:142:86: warning: type 'GlueHandler' does not conform to the 'Sendable' protocol
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
    |                                                                                      `- warning: type 'GlueHandler' does not conform to the 'Sendable' protocol
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/NIOGlueHandler.swift:17:13: note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:143:19: warning: 'withPipes(inputDescriptor:outputDescriptor:)' is deprecated: renamed to 'takingOwnershipOfDescriptors(input:output:)'
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
143 |                 }.withPipes(
    |                   |- warning: 'withPipes(inputDescriptor:outputDescriptor:)' is deprecated: renamed to 'takingOwnershipOfDescriptors(input:output:)'
    |                   `- note: use 'takingOwnershipOfDescriptors(input:output:)' instead
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
145 |                     outputDescriptor: dup(handler.stdinPipe.fileHandleForWriting.fileDescriptor)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:142:86: warning: capture of 'theirs' with non-sendable type 'GlueHandler' in a '@Sendable' closure
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
    |                                                                                      `- warning: capture of 'theirs' with non-sendable type 'GlueHandler' in a '@Sendable' closure
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/NIOGlueHandler.swift:17:13: note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:144:42: warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
    |                                          `- warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
145 |                     outputDescriptor: dup(handler.stdinPipe.fileHandleForWriting.fileDescriptor)
146 |                 )
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecDelegate.swift:16:20: note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
14 | }
15 |
16 | public final class ExecOutputHandler {
   |                    `- note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
17 |     public typealias ExitHandler = @Sendable (ExecExitContext) -> ()
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:142:86: warning: capture of 'theirs' with non-sendable type 'GlueHandler' in a '@Sendable' closure
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
    |                                                                                      `- warning: capture of 'theirs' with non-sendable type 'GlueHandler' in a '@Sendable' closure
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/NIOGlueHandler.swift:17:13: note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:148:13: warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
 38 | }
 39 |
 40 | final class ExecHandler: ChannelDuplexHandler {
    |             `- note: class 'ExecHandler' does not conform to the 'Sendable' protocol
 41 |     typealias InboundIn = SSHChannelData
 42 |     typealias InboundOut = SSHChannelData
    :
146 |                 )
147 |         }.flatMap { pipeChannel -> EventLoopFuture<Channel> in
148 |             self.pipeChannel = pipeChannel
    |             `- warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
149 |             let start = channel.eventLoop.makePromise(of: Void.self)
150 |             start.completeWithTask {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:153:34: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
151 |                 do {
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
    |                                  `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
154 |                         outputHandler: handler
155 |                     )
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:20:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 18 | import NIOFoundationCompat
 19 | import NIOPosix
 20 | import NIOSSH
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 21 |
 22 | #if canImport(Darwin)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:154:40: warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
154 |                         outputHandler: handler
    |                                        `- warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
155 |                     )
156 |                 } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecDelegate.swift:16:20: note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
14 | }
15 |
16 | public final class ExecOutputHandler {
   |                    `- note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
17 |     public typealias ExitHandler = @Sendable (ExecExitContext) -> ()
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:152:21: warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
 38 | }
 39 |
 40 | final class ExecHandler: ChannelDuplexHandler {
    |             `- note: class 'ExecHandler' does not conform to the 'Sendable' protocol
 41 |     typealias InboundIn = SSHChannelData
 42 |     typealias InboundOut = SSHChannelData
    :
150 |             start.completeWithTask {
151 |                 do {
152 |                     self.context = try await delegate.start(
    |                     `- warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
153 |                         command: event.command,
154 |                         outputHandler: handler
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:153:34: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
151 |                 do {
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
    |                                  `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
154 |                         outputHandler: handler
155 |                     )
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:154:40: warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
154 |                         outputHandler: handler
    |                                        `- warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
155 |                     )
156 |                 } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecDelegate.swift:16:20: note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
14 | }
15 |
16 | public final class ExecOutputHandler {
   |                    `- note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
17 |     public typealias ExitHandler = @Sendable (ExecExitContext) -> ()
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:162:20: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
160 |
161 |             return start.futureResult.flatMap {
162 |                 if event.wantReply {
    |                    `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
163 |                     return channel.triggerUserOutboundEvent(ChannelSuccessEvent()).map {
164 |                         pipeChannel
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:181:20: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
179 |                 channel.close(promise: nil)
180 |             case .failure:
181 |                 if event.wantReply {
    |                    `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
182 |                     channel.triggerUserOutboundEvent(ChannelFailureEvent()).whenComplete { _ in
183 |                         channel.close(promise: nil)
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:65:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 63 |
 64 |     func channelInactive(context: ChannelHandlerContext) {
 65 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 66 |             try await self.context?.terminate()
    |                       `- note: closure captures 'self' which is accessible to code in the current task
 67 |             self.context = nil
 68 |             self.pipeChannel = nil
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:90:18: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 88 |             }
 89 |         case ChannelEvent.inputClosed:
 90 |             Task {
    |                  `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 91 |                 try await self.context?.inputClosed()
    |                           `- note: closure captures 'self' which is accessible to code in the current task
 92 |             }
 93 |         default:
[916/923] Compiling Citadel ExecDelegate.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Errors.swift:19:10: warning: associated value 'invalidPayload(type:)' of 'Sendable'-conforming enum 'SFTPError' has non-sendable type 'SFTPMessageType'; this is an error in the Swift 6 language mode
17 | public enum SFTPError: Error {
18 |     case unknownMessage
19 |     case invalidPayload(type: SFTPMessageType)
   |          `- warning: associated value 'invalidPayload(type:)' of 'Sendable'-conforming enum 'SFTPError' has non-sendable type 'SFTPMessageType'; this is an error in the Swift 6 language mode
20 |     case invalidResponse
21 |     case noResponseTarget
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Client/ExecClient.swift:34:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 32 |     func handlerAdded(context: ChannelHandlerContext) {
 33 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 34 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 35 |         }
 36 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Client/ExecClient.swift:119:25: warning: type 'TTYHandler' does not conform to the 'Sendable' protocol
  5 | /// A channel handler that manages TTY (terminal) input/output for SSH command execution.
  6 | /// This handler processes both incoming and outgoing data through the SSH channel.
  7 | final class TTYHandler: ChannelDuplexHandler {
    |             `- note: class 'TTYHandler' does not conform to the 'Sendable' protocol
  8 |     typealias InboundIn = SSHChannelData
  9 |     typealias InboundOut = ByteBuffer
    :
117 |                 sshHandler.value.createChannel(createChannel) { channel, _ in
118 |                     channel.pipeline.addHandlers(
119 |                         TTYHandler(
    |                         `- warning: type 'TTYHandler' does not conform to the 'Sendable' protocol
120 |                             maxResponseSize: maxResponseSize,
121 |                             done: promise
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:60:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |     func handlerAdded(context: ChannelHandlerContext) {
 59 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 60 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |         }
 62 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:80:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 78 |             } else if event.wantReply {
 79 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).whenComplete { _ in
 80 |                     context.channel.close(promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 81 |                 }
 82 |             }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:138:37: warning: type 'GlueHandler' does not conform to the 'Sendable' protocol
136 |         }
137 |
138 |         channel.pipeline.addHandler(ours).flatMap {
    |                                     `- warning: type 'GlueHandler' does not conform to the 'Sendable' protocol
139 |             NIOPipeBootstrap(group: channel.eventLoop)
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/NIOGlueHandler.swift:17:13: note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:142:54: warning: type 'SSHInboundChannelDataWrapper' does not conform to the 'Sendable' protocol
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
    |                                                      `- warning: type 'SSHInboundChannelDataWrapper' does not conform to the 'Sendable' protocol
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:40:13: note: class 'SSHInboundChannelDataWrapper' does not conform to the 'Sendable' protocol
38 | }
39 |
40 | final class SSHInboundChannelDataWrapper: ChannelInboundHandler {
   |             `- note: class 'SSHInboundChannelDataWrapper' does not conform to the 'Sendable' protocol
41 |     typealias InboundIn = ByteBuffer
42 |     typealias InboundOut = SSHChannelData
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:142:86: warning: type 'GlueHandler' does not conform to the 'Sendable' protocol
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
    |                                                                                      `- warning: type 'GlueHandler' does not conform to the 'Sendable' protocol
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/NIOGlueHandler.swift:17:13: note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:143:19: warning: 'withPipes(inputDescriptor:outputDescriptor:)' is deprecated: renamed to 'takingOwnershipOfDescriptors(input:output:)'
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
143 |                 }.withPipes(
    |                   |- warning: 'withPipes(inputDescriptor:outputDescriptor:)' is deprecated: renamed to 'takingOwnershipOfDescriptors(input:output:)'
    |                   `- note: use 'takingOwnershipOfDescriptors(input:output:)' instead
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
145 |                     outputDescriptor: dup(handler.stdinPipe.fileHandleForWriting.fileDescriptor)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:142:86: warning: capture of 'theirs' with non-sendable type 'GlueHandler' in a '@Sendable' closure
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
    |                                                                                      `- warning: capture of 'theirs' with non-sendable type 'GlueHandler' in a '@Sendable' closure
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/NIOGlueHandler.swift:17:13: note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:144:42: warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
    |                                          `- warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
145 |                     outputDescriptor: dup(handler.stdinPipe.fileHandleForWriting.fileDescriptor)
146 |                 )
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecDelegate.swift:16:20: note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
14 | }
15 |
16 | public final class ExecOutputHandler {
   |                    `- note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
17 |     public typealias ExitHandler = @Sendable (ExecExitContext) -> ()
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:142:86: warning: capture of 'theirs' with non-sendable type 'GlueHandler' in a '@Sendable' closure
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
    |                                                                                      `- warning: capture of 'theirs' with non-sendable type 'GlueHandler' in a '@Sendable' closure
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/NIOGlueHandler.swift:17:13: note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:148:13: warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
 38 | }
 39 |
 40 | final class ExecHandler: ChannelDuplexHandler {
    |             `- note: class 'ExecHandler' does not conform to the 'Sendable' protocol
 41 |     typealias InboundIn = SSHChannelData
 42 |     typealias InboundOut = SSHChannelData
    :
146 |                 )
147 |         }.flatMap { pipeChannel -> EventLoopFuture<Channel> in
148 |             self.pipeChannel = pipeChannel
    |             `- warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
149 |             let start = channel.eventLoop.makePromise(of: Void.self)
150 |             start.completeWithTask {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:153:34: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
151 |                 do {
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
    |                                  `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
154 |                         outputHandler: handler
155 |                     )
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:20:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 18 | import NIOFoundationCompat
 19 | import NIOPosix
 20 | import NIOSSH
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 21 |
 22 | #if canImport(Darwin)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:154:40: warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
154 |                         outputHandler: handler
    |                                        `- warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
155 |                     )
156 |                 } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecDelegate.swift:16:20: note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
14 | }
15 |
16 | public final class ExecOutputHandler {
   |                    `- note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
17 |     public typealias ExitHandler = @Sendable (ExecExitContext) -> ()
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:152:21: warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
 38 | }
 39 |
 40 | final class ExecHandler: ChannelDuplexHandler {
    |             `- note: class 'ExecHandler' does not conform to the 'Sendable' protocol
 41 |     typealias InboundIn = SSHChannelData
 42 |     typealias InboundOut = SSHChannelData
    :
150 |             start.completeWithTask {
151 |                 do {
152 |                     self.context = try await delegate.start(
    |                     `- warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
153 |                         command: event.command,
154 |                         outputHandler: handler
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:153:34: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
151 |                 do {
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
    |                                  `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
154 |                         outputHandler: handler
155 |                     )
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:154:40: warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
154 |                         outputHandler: handler
    |                                        `- warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
155 |                     )
156 |                 } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecDelegate.swift:16:20: note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
14 | }
15 |
16 | public final class ExecOutputHandler {
   |                    `- note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
17 |     public typealias ExitHandler = @Sendable (ExecExitContext) -> ()
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:162:20: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
160 |
161 |             return start.futureResult.flatMap {
162 |                 if event.wantReply {
    |                    `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
163 |                     return channel.triggerUserOutboundEvent(ChannelSuccessEvent()).map {
164 |                         pipeChannel
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:181:20: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
179 |                 channel.close(promise: nil)
180 |             case .failure:
181 |                 if event.wantReply {
    |                    `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
182 |                     channel.triggerUserOutboundEvent(ChannelFailureEvent()).whenComplete { _ in
183 |                         channel.close(promise: nil)
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:65:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 63 |
 64 |     func channelInactive(context: ChannelHandlerContext) {
 65 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 66 |             try await self.context?.terminate()
    |                       `- note: closure captures 'self' which is accessible to code in the current task
 67 |             self.context = nil
 68 |             self.pipeChannel = nil
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:90:18: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 88 |             }
 89 |         case ChannelEvent.inputClosed:
 90 |             Task {
    |                  `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 91 |                 try await self.context?.inputClosed()
    |                           `- note: closure captures 'self' which is accessible to code in the current task
 92 |             }
 93 |         default:
[917/923] Compiling Citadel ExecHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Errors.swift:19:10: warning: associated value 'invalidPayload(type:)' of 'Sendable'-conforming enum 'SFTPError' has non-sendable type 'SFTPMessageType'; this is an error in the Swift 6 language mode
17 | public enum SFTPError: Error {
18 |     case unknownMessage
19 |     case invalidPayload(type: SFTPMessageType)
   |          `- warning: associated value 'invalidPayload(type:)' of 'Sendable'-conforming enum 'SFTPError' has non-sendable type 'SFTPMessageType'; this is an error in the Swift 6 language mode
20 |     case invalidResponse
21 |     case noResponseTarget
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/SFTPBasicEnums.swift:38:13: note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 36 | }
 37 |
 38 | public enum SFTPMessageType: UInt8 {
    |             `- note: consider making enum 'SFTPMessageType' conform to the 'Sendable' protocol
 39 |     case initialize = 1
 40 |     case version = 2
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Client/ExecClient.swift:34:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 32 |     func handlerAdded(context: ChannelHandlerContext) {
 33 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 34 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 35 |         }
 36 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Client/ExecClient.swift:119:25: warning: type 'TTYHandler' does not conform to the 'Sendable' protocol
  5 | /// A channel handler that manages TTY (terminal) input/output for SSH command execution.
  6 | /// This handler processes both incoming and outgoing data through the SSH channel.
  7 | final class TTYHandler: ChannelDuplexHandler {
    |             `- note: class 'TTYHandler' does not conform to the 'Sendable' protocol
  8 |     typealias InboundIn = SSHChannelData
  9 |     typealias InboundOut = ByteBuffer
    :
117 |                 sshHandler.value.createChannel(createChannel) { channel, _ in
118 |                     channel.pipeline.addHandlers(
119 |                         TTYHandler(
    |                         `- warning: type 'TTYHandler' does not conform to the 'Sendable' protocol
120 |                             maxResponseSize: maxResponseSize,
121 |                             done: promise
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:60:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |     func handlerAdded(context: ChannelHandlerContext) {
 59 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 60 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |         }
 62 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:80:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 78 |             } else if event.wantReply {
 79 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).whenComplete { _ in
 80 |                     context.channel.close(promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 81 |                 }
 82 |             }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:138:37: warning: type 'GlueHandler' does not conform to the 'Sendable' protocol
136 |         }
137 |
138 |         channel.pipeline.addHandler(ours).flatMap {
    |                                     `- warning: type 'GlueHandler' does not conform to the 'Sendable' protocol
139 |             NIOPipeBootstrap(group: channel.eventLoop)
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/NIOGlueHandler.swift:17:13: note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:142:54: warning: type 'SSHInboundChannelDataWrapper' does not conform to the 'Sendable' protocol
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
    |                                                      `- warning: type 'SSHInboundChannelDataWrapper' does not conform to the 'Sendable' protocol
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:40:13: note: class 'SSHInboundChannelDataWrapper' does not conform to the 'Sendable' protocol
38 | }
39 |
40 | final class SSHInboundChannelDataWrapper: ChannelInboundHandler {
   |             `- note: class 'SSHInboundChannelDataWrapper' does not conform to the 'Sendable' protocol
41 |     typealias InboundIn = ByteBuffer
42 |     typealias InboundOut = SSHChannelData
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:142:86: warning: type 'GlueHandler' does not conform to the 'Sendable' protocol
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
    |                                                                                      `- warning: type 'GlueHandler' does not conform to the 'Sendable' protocol
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/NIOGlueHandler.swift:17:13: note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:143:19: warning: 'withPipes(inputDescriptor:outputDescriptor:)' is deprecated: renamed to 'takingOwnershipOfDescriptors(input:output:)'
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
143 |                 }.withPipes(
    |                   |- warning: 'withPipes(inputDescriptor:outputDescriptor:)' is deprecated: renamed to 'takingOwnershipOfDescriptors(input:output:)'
    |                   `- note: use 'takingOwnershipOfDescriptors(input:output:)' instead
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
145 |                     outputDescriptor: dup(handler.stdinPipe.fileHandleForWriting.fileDescriptor)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:142:86: warning: capture of 'theirs' with non-sendable type 'GlueHandler' in a '@Sendable' closure
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
    |                                                                                      `- warning: capture of 'theirs' with non-sendable type 'GlueHandler' in a '@Sendable' closure
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/NIOGlueHandler.swift:17:13: note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:144:42: warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
    |                                          `- warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
145 |                     outputDescriptor: dup(handler.stdinPipe.fileHandleForWriting.fileDescriptor)
146 |                 )
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecDelegate.swift:16:20: note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
14 | }
15 |
16 | public final class ExecOutputHandler {
   |                    `- note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
17 |     public typealias ExitHandler = @Sendable (ExecExitContext) -> ()
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:142:86: warning: capture of 'theirs' with non-sendable type 'GlueHandler' in a '@Sendable' closure
140 |                 .channelOption(ChannelOptions.allowRemoteHalfClosure, value: true)
141 |                 .channelInitializer { pipeChannel in
142 |                     pipeChannel.pipeline.addHandlers(SSHInboundChannelDataWrapper(), theirs)
    |                                                                                      `- warning: capture of 'theirs' with non-sendable type 'GlueHandler' in a '@Sendable' closure
143 |                 }.withPipes(
144 |                     inputDescriptor: dup(handler.stdoutPipe.fileHandleForReading.fileDescriptor),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/NIOGlueHandler.swift:17:13: note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 15 | import NIOCore
 16 |
 17 | final class GlueHandler {
    |             `- note: class 'GlueHandler' does not conform to the 'Sendable' protocol
 18 |     private var partner: GlueHandler?
 19 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:148:13: warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
 38 | }
 39 |
 40 | final class ExecHandler: ChannelDuplexHandler {
    |             `- note: class 'ExecHandler' does not conform to the 'Sendable' protocol
 41 |     typealias InboundIn = SSHChannelData
 42 |     typealias InboundOut = SSHChannelData
    :
146 |                 )
147 |         }.flatMap { pipeChannel -> EventLoopFuture<Channel> in
148 |             self.pipeChannel = pipeChannel
    |             `- warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
149 |             let start = channel.eventLoop.makePromise(of: Void.self)
150 |             start.completeWithTask {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:153:34: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
151 |                 do {
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
    |                                  `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
154 |                         outputHandler: handler
155 |                     )
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:20:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 18 | import NIOFoundationCompat
 19 | import NIOPosix
 20 | import NIOSSH
    | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 21 |
 22 | #if canImport(Darwin)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:154:40: warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
154 |                         outputHandler: handler
    |                                        `- warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
155 |                     )
156 |                 } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecDelegate.swift:16:20: note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
14 | }
15 |
16 | public final class ExecOutputHandler {
   |                    `- note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
17 |     public typealias ExitHandler = @Sendable (ExecExitContext) -> ()
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:152:21: warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
 38 | }
 39 |
 40 | final class ExecHandler: ChannelDuplexHandler {
    |             `- note: class 'ExecHandler' does not conform to the 'Sendable' protocol
 41 |     typealias InboundIn = SSHChannelData
 42 |     typealias InboundOut = SSHChannelData
    :
150 |             start.completeWithTask {
151 |                 do {
152 |                     self.context = try await delegate.start(
    |                     `- warning: capture of 'self' with non-sendable type 'ExecHandler' in a '@Sendable' closure
153 |                         command: event.command,
154 |                         outputHandler: handler
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:153:34: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
151 |                 do {
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
    |                                  `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
154 |                         outputHandler: handler
155 |                     )
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:154:40: warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
152 |                     self.context = try await delegate.start(
153 |                         command: event.command,
154 |                         outputHandler: handler
    |                                        `- warning: capture of 'handler' with non-sendable type 'ExecOutputHandler' in a '@Sendable' closure
155 |                     )
156 |                 } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecDelegate.swift:16:20: note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
14 | }
15 |
16 | public final class ExecOutputHandler {
   |                    `- note: class 'ExecOutputHandler' does not conform to the 'Sendable' protocol
17 |     public typealias ExitHandler = @Sendable (ExecExitContext) -> ()
18 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:162:20: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
160 |
161 |             return start.futureResult.flatMap {
162 |                 if event.wantReply {
    |                    `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
163 |                     return channel.triggerUserOutboundEvent(ChannelSuccessEvent()).map {
164 |                         pipeChannel
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:181:20: warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
179 |                 channel.close(promise: nil)
180 |             case .failure:
181 |                 if event.wantReply {
    |                    `- warning: capture of 'event' with non-sendable type 'SSHChannelRequestEvent.ExecRequest' in a '@Sendable' closure
182 |                     channel.triggerUserOutboundEvent(ChannelFailureEvent()).whenComplete { _ in
183 |                         channel.close(promise: nil)
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/Child Channels/ChildChannelUserEvents.swift:126:19: note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
124 |
125 |     /// A request for this session to exec a command.
126 |     public struct ExecRequest: Hashable {
    |                   `- note: struct 'ExecRequest' does not conform to the 'Sendable' protocol
127 |         /// The command to exec.
128 |         public var command: String
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:65:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 63 |
 64 |     func channelInactive(context: ChannelHandlerContext) {
 65 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 66 |             try await self.context?.terminate()
    |                       `- note: closure captures 'self' which is accessible to code in the current task
 67 |             self.context = nil
 68 |             self.pipeChannel = nil
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Exec/Server/ExecHandler.swift:90:18: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 88 |             }
 89 |         case ChannelEvent.inputClosed:
 90 |             Task {
    |                  `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 91 |                 try await self.context?.inputClosed()
    |                           `- note: closure captures 'self' which is accessible to code in the current task
 92 |             }
 93 |         default:
[918/923] Compiling Citadel Server.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 38 |     func handlerAdded(context: ChannelHandlerContext) {
 39 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 40 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 41 |         }
 42 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 57 |             guard let shell = shell, let parent = context.channel.parent else {
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 60 |                     return context.channel.close()
 61 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
 60 |                     return context.channel.close()
    |                            `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |                 }
 62 |                 return
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 65 |             parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 66 |                 ShellServerSubsystem.setupChannelHanders(
 67 |                     channel: context.channel,
    |                              `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 68 |                     shell: shell,
 69 |                     logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 71 |                 )
 72 |             }.flatMap { () -> EventLoopFuture<Void> in
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
    |                               `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
    |                 `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
 78 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                 `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 79 |             }
 80 |         case let event as SSHChannelRequestEvent.SubsystemRequest:
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 89 |                 parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 90 |                     SFTPServerSubsystem.setupChannelHanders(
 91 |                         channel: context.channel,
    |                                  `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 92 |                         sftp: sftp,
 93 |                         logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 95 |                     )
 96 |                 }.flatMap { () -> EventLoopFuture<Void> in
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
    |                                   `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
102 |                     context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 |                 }
104 |             default:
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 |         }
116 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |                                     `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 |         }
116 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 43 | ///         }
 44 | ///     }
 45 | public struct NIOAny {
    |               `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 46 |     @usableFromInline
 47 |     let _storage: _NIOAny
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:168:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
166 |             handlers.append(ExecHandler(delegate: exec, username: username))
167 |
168 |             return channel.pipeline.addHandlers(handlers)
    |                                                 `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
169 |         case .directTCPIP(let request):
170 |             guard let delegate = directTCPIP else {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:174:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
172 |             }
173 |
174 |             return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
    |                                                `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
175 |                 return delegate.initializeDirectTCPIPChannel(
176 |                     channel,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
   |                      `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:324:21: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
322 |
323 |                 return channel.pipeline.addHandlers([
324 |                     NIOSSHHandler(
    |                     `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
325 |                         role: .server(server),
326 |                         allocator: channel.allocator,
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 79 |
 80 | @available(*, unavailable)
 81 | extension NIOSSHHandler: Sendable {}
    | `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 82 |
 83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:333:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
    :
331 |                         }
332 |                     ),
333 |                     CloseErrorHandler(logger: logger)
    |                     `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
334 |                 ])
335 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:341:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 |     let channel: Channel
243 |     let delegate: CitadelServerDelegate
    :
339 |         return try await bootstrap.bind(host: host, port: port).map { channel in
340 |             SSHServer(channel: channel, logger: logger, delegate: delegate)
341 |         }.get()
    |           `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
342 |     }
343 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 |         }
101 |
102 |         done.futureResult.whenFailure(context.fireErrorCaught)
    |                                               `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 |     }
104 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 80 |                     )
 81 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 82 |
 83 |                 group.addTask {
 84 |                     for try await message in self.outbound.stream {
    |                                              `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
    |             `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 |             CloseErrorHandler(logger: logger)
138 |         )
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 |         )
139 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 |             self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 |         }
126 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 |                 streamContinuation.yield(.stderr(stderr))
284 |             case .eof(let error):
285 |                 self.logger.debug("EOF triggered, ending the command stream.")
    |                 `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 |                 if let error {
287 |                     streamContinuation.finish(throwing: error)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
    |                    `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 |     private(set) var session: SSHClientSession
114 |     private var userInitiatedClose = false
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 73 |         done.completeWithTask {
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 76 |                     try await self.delegate.startShell(
    |                               `- note: closure captures non-Sendable 'self'
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- note: closure captures non-Sendable 'shellContext'
 80 |                     )
 81 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 81 |                 }
 82 |
 83 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 84 |                     for try await message in self.outbound.stream {
    |                                              `- note: closure captures 'self' which is accessible to code in the current task
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:467:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
465 |         )
466 |
467 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
468 |             do {
469 |                 let stream = try await executeCommandStream(command, inShell: inShell)
    |                                        `- note: closure captures 'self' which is accessible to code in the current task
470 |                 for try await chunk in stream {
471 |                     switch chunk {
[919/923] Compiling Citadel ShellDelegate.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 38 |     func handlerAdded(context: ChannelHandlerContext) {
 39 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 40 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 41 |         }
 42 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 57 |             guard let shell = shell, let parent = context.channel.parent else {
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 60 |                     return context.channel.close()
 61 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
 60 |                     return context.channel.close()
    |                            `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |                 }
 62 |                 return
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 65 |             parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 66 |                 ShellServerSubsystem.setupChannelHanders(
 67 |                     channel: context.channel,
    |                              `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 68 |                     shell: shell,
 69 |                     logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 71 |                 )
 72 |             }.flatMap { () -> EventLoopFuture<Void> in
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
    |                               `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
    |                 `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
 78 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                 `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 79 |             }
 80 |         case let event as SSHChannelRequestEvent.SubsystemRequest:
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 89 |                 parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 90 |                     SFTPServerSubsystem.setupChannelHanders(
 91 |                         channel: context.channel,
    |                                  `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 92 |                         sftp: sftp,
 93 |                         logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 95 |                     )
 96 |                 }.flatMap { () -> EventLoopFuture<Void> in
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
    |                                   `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
102 |                     context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 |                 }
104 |             default:
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 |         }
116 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |                                     `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 |         }
116 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 43 | ///         }
 44 | ///     }
 45 | public struct NIOAny {
    |               `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 46 |     @usableFromInline
 47 |     let _storage: _NIOAny
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:168:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
166 |             handlers.append(ExecHandler(delegate: exec, username: username))
167 |
168 |             return channel.pipeline.addHandlers(handlers)
    |                                                 `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
169 |         case .directTCPIP(let request):
170 |             guard let delegate = directTCPIP else {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:174:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
172 |             }
173 |
174 |             return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
    |                                                `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
175 |                 return delegate.initializeDirectTCPIPChannel(
176 |                     channel,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
   |                      `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:324:21: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
322 |
323 |                 return channel.pipeline.addHandlers([
324 |                     NIOSSHHandler(
    |                     `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
325 |                         role: .server(server),
326 |                         allocator: channel.allocator,
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 79 |
 80 | @available(*, unavailable)
 81 | extension NIOSSHHandler: Sendable {}
    | `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 82 |
 83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:333:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
    :
331 |                         }
332 |                     ),
333 |                     CloseErrorHandler(logger: logger)
    |                     `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
334 |                 ])
335 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:341:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 |     let channel: Channel
243 |     let delegate: CitadelServerDelegate
    :
339 |         return try await bootstrap.bind(host: host, port: port).map { channel in
340 |             SSHServer(channel: channel, logger: logger, delegate: delegate)
341 |         }.get()
    |           `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
342 |     }
343 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 |         }
101 |
102 |         done.futureResult.whenFailure(context.fireErrorCaught)
    |                                               `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 |     }
104 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 80 |                     )
 81 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 82 |
 83 |                 group.addTask {
 84 |                     for try await message in self.outbound.stream {
    |                                              `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
    |             `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 |             CloseErrorHandler(logger: logger)
138 |         )
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 |         )
139 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 |             self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 |         }
126 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 |                 streamContinuation.yield(.stderr(stderr))
284 |             case .eof(let error):
285 |                 self.logger.debug("EOF triggered, ending the command stream.")
    |                 `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 |                 if let error {
287 |                     streamContinuation.finish(throwing: error)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
    |                    `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 |     private(set) var session: SSHClientSession
114 |     private var userInitiatedClose = false
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 73 |         done.completeWithTask {
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 76 |                     try await self.delegate.startShell(
    |                               `- note: closure captures non-Sendable 'self'
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- note: closure captures non-Sendable 'shellContext'
 80 |                     )
 81 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 81 |                 }
 82 |
 83 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 84 |                     for try await message in self.outbound.stream {
    |                                              `- note: closure captures 'self' which is accessible to code in the current task
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:467:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
465 |         )
466 |
467 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
468 |             do {
469 |                 let stream = try await executeCommandStream(command, inShell: inShell)
    |                                        `- note: closure captures 'self' which is accessible to code in the current task
470 |                 for try await chunk in stream {
471 |                     switch chunk {
[920/923] Compiling Citadel TTY.swift
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 38 |     func handlerAdded(context: ChannelHandlerContext) {
 39 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 40 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 41 |         }
 42 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 57 |             guard let shell = shell, let parent = context.channel.parent else {
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 60 |                     return context.channel.close()
 61 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
 60 |                     return context.channel.close()
    |                            `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |                 }
 62 |                 return
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 65 |             parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 66 |                 ShellServerSubsystem.setupChannelHanders(
 67 |                     channel: context.channel,
    |                              `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 68 |                     shell: shell,
 69 |                     logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 71 |                 )
 72 |             }.flatMap { () -> EventLoopFuture<Void> in
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
    |                               `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
    |                 `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
 78 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                 `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 79 |             }
 80 |         case let event as SSHChannelRequestEvent.SubsystemRequest:
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 89 |                 parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 90 |                     SFTPServerSubsystem.setupChannelHanders(
 91 |                         channel: context.channel,
    |                                  `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 92 |                         sftp: sftp,
 93 |                         logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 95 |                     )
 96 |                 }.flatMap { () -> EventLoopFuture<Void> in
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
    |                                   `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
102 |                     context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 |                 }
104 |             default:
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 |         }
116 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |                                     `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 |         }
116 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 43 | ///         }
 44 | ///     }
 45 | public struct NIOAny {
    |               `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 46 |     @usableFromInline
 47 |     let _storage: _NIOAny
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:168:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
166 |             handlers.append(ExecHandler(delegate: exec, username: username))
167 |
168 |             return channel.pipeline.addHandlers(handlers)
    |                                                 `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
169 |         case .directTCPIP(let request):
170 |             guard let delegate = directTCPIP else {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:174:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
172 |             }
173 |
174 |             return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
    |                                                `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
175 |                 return delegate.initializeDirectTCPIPChannel(
176 |                     channel,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
   |                      `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:324:21: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
322 |
323 |                 return channel.pipeline.addHandlers([
324 |                     NIOSSHHandler(
    |                     `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
325 |                         role: .server(server),
326 |                         allocator: channel.allocator,
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 79 |
 80 | @available(*, unavailable)
 81 | extension NIOSSHHandler: Sendable {}
    | `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 82 |
 83 | extension NIOSSHHandler {
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:333:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
    :
331 |                         }
332 |                     ),
333 |                     CloseErrorHandler(logger: logger)
    |                     `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
334 |                 ])
335 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:341:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 |     let channel: Channel
243 |     let delegate: CitadelServerDelegate
    :
339 |         return try await bootstrap.bind(host: host, port: port).map { channel in
340 |             SSHServer(channel: channel, logger: logger, delegate: delegate)
341 |         }.get()
    |           `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
342 |     }
343 | }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 |         }
101 |
102 |         done.futureResult.whenFailure(context.fireErrorCaught)
    |                                               `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 |     }
104 |
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 80 |                     )
 81 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 82 |
 83 |                 group.addTask {
 84 |                     for try await message in self.outbound.stream {
    |                                              `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
    |             `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 |             CloseErrorHandler(logger: logger)
138 |         )
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 |         )
139 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 |             self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 |         }
126 |     }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1792:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1790 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1791 | /// `ChannelHandler`.
1792 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1793 |     // visible for ChannelPipeline to modify
1794 |     fileprivate var next: Optional<ChannelHandlerContext>
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 |                 streamContinuation.yield(.stderr(stderr))
284 |             case .eof(let error):
285 |                 self.logger.debug("EOF triggered, ending the command stream.")
    |                 `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 |                 if let error {
287 |                     streamContinuation.finish(throwing: error)
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
    |                    `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 |     private(set) var session: SSHClientSession
114 |     private var userInitiatedClose = false
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 73 |         done.completeWithTask {
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 76 |                     try await self.delegate.startShell(
    |                               `- note: closure captures non-Sendable 'self'
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- note: closure captures non-Sendable 'shellContext'
 80 |                     )
 81 |                 }
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 81 |                 }
 82 |
 83 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 84 |                     for try await message in self.outbound.stream {
    |                                              `- note: closure captures 'self' which is accessible to code in the current task
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:467:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
465 |         )
466 |
467 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
468 |             do {
469 |                 let stream = try await executeCommandStream(command, inShell: inShell)
    |                                        `- note: closure captures 'self' which is accessible to code in the current task
470 |                 for try await chunk in stream {
471 |                     switch chunk {
[921/930] Emitting module CitadelServerExample
[922/930] Compiling CitadelServerExample Terminal.swift
[923/930] Compiling CitadelServerExample Extensions.swift
[924/930] Compiling CitadelServerExample BasicCommands.swift
[925/930] Compiling CitadelServerExample Server.swift
/Users/admin/builder/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:24:42: warning: non-sendable result type 'SSHServer' cannot be sent from nonisolated context in call to static method 'host(host:port:hostKeys:algorithms:protocolOptions:logger:authenticationDelegate:group:)'; this is an error in the Swift 6 language mode
22 |         }
23 |
24 |         let server = try await SSHServer.host(
   |                                          `- warning: non-sendable result type 'SSHServer' cannot be sent from nonisolated context in call to static method 'host(host:port:hostKeys:algorithms:protocolOptions:logger:authenticationDelegate:group:)'; this is an error in the Swift 6 language mode
25 |             host: "localhost",
26 |             port: 2323,
/Users/admin/builder/spi-builder-workspace/Sources/Citadel/Server.swift:241:20: note: class 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 |     let channel: Channel
243 |     let delegate: CitadelServerDelegate
/Users/admin/builder/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:1:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Citadel'
 1 | import Citadel
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Citadel'
 2 | import Crypto
 3 | import Foundation
/Users/admin/builder/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:76:36: warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
74 |     ) {
75 |         if case .password(.init(password: password)) = request.request, request.username == username {
76 |             return responsePromise.succeed(.success)
   |                                    `- warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
77 |         }
78 |
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/User Authentication/UserAuthenticationMethod.swift:211:13: note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
209 |
210 | /// The outcome of a user authentication attempt.
211 | public enum NIOSSHUserAuthenticationOutcome {
    |             `- note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
212 |     case success
213 |     case partialSuccess(remainingMethods: NIOSSHAvailableUserAuthenticationMethods)
/Users/admin/builder/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:5:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 3 | import Foundation
 4 | import NIO
 5 | import NIOSSH
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 6 |
 7 | @main struct ExampleSSHServer {
/Users/admin/builder/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:79:32: warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
77 |         }
78 |
79 |         return responsePromise.succeed(.failure)
   |                                `- warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
80 |     }
81 | }
/Users/admin/builder/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/User Authentication/UserAuthenticationMethod.swift:211:13: note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
209 |
210 | /// The outcome of a user authentication attempt.
211 | public enum NIOSSHUserAuthenticationOutcome {
    |             `- note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
212 |     case success
213 |     case partialSuccess(remainingMethods: NIOSSHAvailableUserAuthenticationMethods)
[926/930] Compiling CitadelServerExample HostKeyFile.swift
[927/930] Compiling CitadelServerExample EchoShell.swift
[927/930] Write Objects.LinkFileList
[928/930] Linking CitadelServerExample
[929/930] Applying CitadelServerExample
Build complete! (57.78s)
Fetching https://github.com/apple/swift-crypto.git from cache
Fetching https://github.com/Joannis/swift-nio-ssh.git
Fetching https://github.com/attaswift/BigInt.git
Fetching https://github.com/mtynior/ColorizeSwift.git
Fetching https://github.com/apple/swift-log.git from cache
[1/2845] Fetching swift-nio-ssh
[2/3136] Fetching swift-nio-ssh, colorizeswift
[61/7962] Fetching swift-nio-ssh, colorizeswift, bigint
Fetched https://github.com/Joannis/swift-nio-ssh.git from cache (1.24s)
Fetched https://github.com/mtynior/ColorizeSwift.git from cache (1.24s)
Fetched https://github.com/attaswift/BigInt.git from cache (1.24s)
Fetched https://github.com/apple/swift-log.git from cache (1.25s)
Fetched https://github.com/apple/swift-crypto.git from cache (1.56s)
Computing version for https://github.com/Joannis/swift-nio-ssh.git
Computed https://github.com/Joannis/swift-nio-ssh.git at 0.3.5 (2.13s)
Fetching https://github.com/apple/swift-nio.git from cache
Fetching https://github.com/apple/swift-atomics.git from cache
Fetched https://github.com/apple/swift-atomics.git from cache (0.75s)
Fetched https://github.com/apple/swift-nio.git from cache (2.52s)
Computing version for https://github.com/mtynior/ColorizeSwift.git
Computed https://github.com/mtynior/ColorizeSwift.git at 1.7.0 (5.78s)
Computing version for https://github.com/apple/swift-atomics.git
Computed https://github.com/apple/swift-atomics.git at 1.3.0 (0.47s)
Computing version for https://github.com/apple/swift-crypto.git
Computed https://github.com/apple/swift-crypto.git at 3.15.1 (2.99s)
Fetching https://github.com/apple/swift-asn1.git from cache
Fetched https://github.com/apple/swift-asn1.git from cache (0.64s)
Computing version for https://github.com/apple/swift-asn1.git
Computed https://github.com/apple/swift-asn1.git at 1.5.0 (3.17s)
Computing version for https://github.com/attaswift/BigInt.git
Computed https://github.com/attaswift/BigInt.git at 5.7.0 (0.46s)
Computing version for https://github.com/apple/swift-nio.git
Computed https://github.com/apple/swift-nio.git at 2.87.0 (0.63s)
Fetching https://github.com/apple/swift-system.git from cache
Fetching https://github.com/apple/swift-collections.git from cache
Fetched https://github.com/apple/swift-system.git from cache (1.34s)
Fetched https://github.com/apple/swift-collections.git from cache (1.35s)
Computing version for https://github.com/apple/swift-system.git
Computed https://github.com/apple/swift-system.git at 1.6.3 (1.88s)
Computing version for https://github.com/apple/swift-collections.git
Computed https://github.com/apple/swift-collections.git at 1.3.0 (0.57s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.4 (0.45s)
Creating working copy for https://github.com/apple/swift-collections.git
Working copy of https://github.com/apple/swift-collections.git resolved at 1.3.0
Creating working copy for https://github.com/apple/swift-system.git
Working copy of https://github.com/apple/swift-system.git resolved at 1.6.3
Creating working copy for https://github.com/apple/swift-nio.git
Working copy of https://github.com/apple/swift-nio.git resolved at 2.87.0
Creating working copy for https://github.com/Joannis/swift-nio-ssh.git
Working copy of https://github.com/Joannis/swift-nio-ssh.git resolved at 0.3.5
Creating working copy for https://github.com/attaswift/BigInt.git
Working copy of https://github.com/attaswift/BigInt.git resolved at 5.7.0
Creating working copy for https://github.com/mtynior/ColorizeSwift.git
Working copy of https://github.com/mtynior/ColorizeSwift.git resolved at 1.7.0
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.6.4
Creating working copy for https://github.com/apple/swift-asn1.git
Working copy of https://github.com/apple/swift-asn1.git resolved at 1.5.0
Creating working copy for https://github.com/apple/swift-atomics.git
Working copy of https://github.com/apple/swift-atomics.git resolved at 1.3.0
Creating working copy for https://github.com/apple/swift-crypto.git
Working copy of https://github.com/apple/swift-crypto.git resolved at 3.15.1
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-nio-ssh",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.3.4",
            "upper_bound" : "0.4.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Joannis/swift-nio-ssh.git"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log.git"
    },
    {
      "identity" : "bigint",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "5.2.0",
            "upper_bound" : "6.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/attaswift/BigInt.git"
    },
    {
      "identity" : "swift-crypto",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "3.12.3",
            "upper_bound" : "4.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-crypto.git"
    },
    {
      "identity" : "colorizeswift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/mtynior/ColorizeSwift.git"
    }
  ],
  "manifest_display_name" : "Citadel",
  "name" : "Citadel",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "14.0"
    },
    {
      "name" : "ios",
      "version" : "17.0"
    }
  ],
  "products" : [
    {
      "name" : "Citadel",
      "targets" : [
        "Citadel"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "CitadelServerExample",
      "targets" : [
        "CitadelServerExample"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "CitadelTests",
      "module_type" : "SwiftTarget",
      "name" : "CitadelTests",
      "path" : "Tests/CitadelTests",
      "product_dependencies" : [
        "NIOSSH",
        "BigInt",
        "Logging"
      ],
      "sources" : [
        "Citadel2Tests.swift",
        "EndToEndTests.swift",
        "KeyTests.swift",
        "RemotePortForwardTests.swift"
      ],
      "target_dependencies" : [
        "Citadel"
      ],
      "type" : "test"
    },
    {
      "c99name" : "CitadelServerExample",
      "module_type" : "SwiftTarget",
      "name" : "CitadelServerExample",
      "path" : "Sources/CitadelServerExample",
      "product_dependencies" : [
        "ColorizeSwift"
      ],
      "product_memberships" : [
        "CitadelServerExample"
      ],
      "sources" : [
        "EchoShell/BasicCommands.swift",
        "EchoShell/EchoShell.swift",
        "EchoShell/Extensions.swift",
        "EchoShell/Terminal.swift",
        "HostKeyFile.swift",
        "Server.swift"
      ],
      "target_dependencies" : [
        "Citadel"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "Citadel",
      "module_type" : "SwiftTarget",
      "name" : "Citadel",
      "path" : "Sources/Citadel",
      "product_dependencies" : [
        "NIOSSH",
        "Crypto",
        "_CryptoExtras",
        "BigInt",
        "Logging"
      ],
      "product_memberships" : [
        "Citadel",
        "CitadelServerExample"
      ],
      "sources" : [
        "Algorithms/AES.swift",
        "Algorithms/DH-Helpers.swift",
        "Algorithms/DiffieHellmanGroup14Sha1.swift",
        "Algorithms/DiffieHellmanGroup14Sha256.swift",
        "Algorithms/RSA.swift",
        "BCrypt.swift",
        "ByteBufferHelpers.swift",
        "ChannelUnwrapper.swift",
        "Client.swift",
        "ClientSession.swift",
        "DirectTCPIP/Client/DirectTCPIP+Client.swift",
        "DirectTCPIP/Server/DirectTCPIP+Server.swift",
        "Errors.swift",
        "Exec/Client/ExecClient.swift",
        "Exec/Server/ExecDelegate.swift",
        "Exec/Server/ExecHandler.swift",
        "NIOGlueHandler.swift",
        "OpenSSHKey.swift",
        "RemotePortForward/Client/RemotePortForward+Client.swift",
        "RemotePortForward/Server/RemotePortForward+Server.swift",
        "SFTP/Client/SFTPClient.swift",
        "SFTP/Client/SFTPClientInboundHandler.swift",
        "SFTP/Client/SFTPFile.swift",
        "SFTP/SFTPBasicEnums.swift",
        "SFTP/SFTPFileFlags.swift",
        "SFTP/SFTPMessage.swift",
        "SFTP/SFTPMessageParser.swift",
        "SFTP/SFTPSerializer.swift",
        "SFTP/Server/SFTPServer.swift",
        "SFTP/Server/SFTPServerInboundHandler.swift",
        "SSHAuthenticationMethod.swift",
        "SSHCert.swift",
        "SSHConnectionPoolSettings.swift",
        "SSHKeyTypeDetection.swift",
        "Server.swift",
        "Shell/Server/ShellDelegate.swift",
        "TTY/Client/TTY.swift"
      ],
      "target_dependencies" : [
        "CCitadelBcrypt"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CCitadelBcrypt",
      "module_type" : "ClangTarget",
      "name" : "CCitadelBcrypt",
      "path" : "Sources/CCitadelBcrypt",
      "product_memberships" : [
        "Citadel",
        "CitadelServerExample"
      ],
      "sources" : [
        "bcrypt-kdf.c",
        "bcrypt.c",
        "blf.c"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
Done.