Files
luma/Luma/TargetPickerContext.swift
Ole André Vadla Ravnås 0e669be3dc Move the rest of business logic into LumaCore
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/.
2026-04-07 10:11:31 +02:00

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
}
}