@@ -38,9 +38,9 @@ public class MutagenDaemon: FileSyncDaemon {
3838 private let mutagenDaemonSocket : URL
3939
4040 // Non-nil when the daemon is running
41+ var client : DaemonClient ?
4142 private var group : MultiThreadedEventLoopGroup ?
4243 private var channel : GRPCChannel ?
43- private var client : DaemonClient ?
4444
4545 // Protect start & stop transitions against re-entrancy
4646 private let transition = AsyncSemaphore ( value: 1 )
@@ -293,59 +293,6 @@ public class MutagenDaemon: FileSyncDaemon {
293293 }
294294}
295295
296-
297- extension MutagenDaemon {
298- typealias PromptStream = GRPCAsyncBidirectionalStreamingCall < Prompting_HostRequest , Prompting_HostResponse >
299-
300- func Host( allowPrompts: Bool = true ) async throws ( DaemonError) -> ( PromptStream , identifier: String ) {
301- let stream = client!. prompt. makeHostCall ( )
302-
303- do {
304- try await stream. requestStream. send ( . with { req in req. allowPrompts = allowPrompts } )
305- } catch {
306- throw . grpcFailure( error)
307- }
308-
309- // We can't make call `makeAsyncIterator` more than once
310- // (as a for-loop would do implicitly)
311- var iter = stream. responseStream. makeAsyncIterator ( )
312-
313- // "Receive the initialization response, validate it, and extract the prompt identifier"
314- let initResp : Prompting_HostResponse ?
315- do {
316- initResp = try await iter. next ( )
317- } catch {
318- throw . grpcFailure( error)
319- }
320- guard let initResp = initResp else {
321- throw . unexpectedStreamClosure
322- }
323- // TODO: we'll always accept prompts for now
324- try initResp. ensureValid ( first: true , allowPrompts: allowPrompts)
325-
326- Task . detached ( priority: . background) {
327- do {
328- while let resp = try await iter. next ( ) {
329- debugPrint ( resp)
330- try resp. ensureValid ( first: false , allowPrompts: allowPrompts)
331- switch resp. isPrompt {
332- case true :
333- // TODO: Handle prompt
334- break
335- case false :
336- // TODO: Handle message
337- break
338- }
339- }
340- } catch {
341- // TODO: Log prompter stream error
342- }
343- }
344- return ( stream, identifier: initResp. identifier)
345- }
346- }
347-
348-
349296struct DaemonClient {
350297 let mgmt : Daemon_DaemonAsyncClient
351298 let sync : Synchronization_SynchronizationAsyncClient
0 commit comments