Workspace is now a thin host adapter. Engine owns sessions and notebook entries (via store observation), GitHub auth + OAuth device flow, hook-pack discovery, address annotations and address actions, the disassembler cache, and all instrument lifecycle. EventLog is @Observable so SwiftUI tracks it directly; the host no longer mirrors event arrays or version counters. R2 (live disassembly + trace inspection) lives entirely in LumaCore as concrete Disassembler / TraceDisassembler classes returning portable StyledText spans. ProcessNodeViewModel and InstrumentRuntime are gone; views read engine.processNodes / node.instruments / engine.descriptor(for:) directly. Reorganize Luma/Models/ — instrument UI dispatch lives under Luma/Instruments/, Monaco editor glue under Luma/Editor/, and the remaining UI types sit at the top of Luma/.
21 lines
532 B
Swift
21 lines
532 B
Swift
import Foundation
|
|
import LumaCore
|
|
|
|
enum TargetPickerContext: Equatable, Identifiable {
|
|
case newSession
|
|
case reestablish(session: LumaCore.ProcessSession, reason: String)
|
|
|
|
var id: String {
|
|
switch self {
|
|
case .newSession:
|
|
return "newSession"
|
|
case .reestablish(let session, let reason):
|
|
return "reestablish-\(session.id.uuidString)-\(reason)"
|
|
}
|
|
}
|
|
|
|
static func == (lhs: TargetPickerContext, rhs: TargetPickerContext) -> Bool {
|
|
lhs.id == rhs.id
|
|
}
|
|
}
|