chore: rename project to clawdbot

This commit is contained in:
Peter Steinberger
2026-01-04 14:32:47 +00:00
parent d48dc71fa4
commit 246adaa119
841 changed files with 4590 additions and 4328 deletions

View File

@@ -0,0 +1,111 @@
import Foundation
import SwiftUI
enum SessionRole {
case main
case other
}
enum ToolKind: String, Codable {
case bash, read, write, edit, attach, other
}
enum ActivityKind: Codable, Equatable {
case job
case tool(ToolKind)
}
enum IconState: Equatable {
case idle
case workingMain(ActivityKind)
case workingOther(ActivityKind)
case overridden(ActivityKind)
enum BadgeProminence: Equatable {
case primary
case secondary
case overridden
}
var badgeSymbolName: String {
switch self.activity {
case .tool(.bash): "chevron.left.slash.chevron.right"
case .tool(.read): "doc"
case .tool(.write): "pencil"
case .tool(.edit): "pencil.tip"
case .tool(.attach): "paperclip"
case .tool(.other), .job: "gearshape.fill"
}
}
var badgeProminence: BadgeProminence? {
switch self {
case .idle: nil
case .workingMain: .primary
case .workingOther: .secondary
case .overridden: .overridden
}
}
var isWorking: Bool {
switch self {
case .idle: false
default: true
}
}
private var activity: ActivityKind {
switch self {
case let .workingMain(kind),
let .workingOther(kind),
let .overridden(kind):
kind
case .idle:
.job
}
}
}
enum IconOverrideSelection: String, CaseIterable, Identifiable {
case system
case idle
case mainBash, mainRead, mainWrite, mainEdit, mainOther
case otherBash, otherRead, otherWrite, otherEdit, otherOther
var id: String { self.rawValue }
var label: String {
switch self {
case .system: "System (auto)"
case .idle: "Idle"
case .mainBash: "Working main bash"
case .mainRead: "Working main read"
case .mainWrite: "Working main write"
case .mainEdit: "Working main edit"
case .mainOther: "Working main other"
case .otherBash: "Working other bash"
case .otherRead: "Working other read"
case .otherWrite: "Working other write"
case .otherEdit: "Working other edit"
case .otherOther: "Working other other"
}
}
func toIconState() -> IconState {
let map: (ToolKind) -> ActivityKind = { .tool($0) }
switch self {
case .system: return .idle
case .idle: return .idle
case .mainBash: return .workingMain(map(.bash))
case .mainRead: return .workingMain(map(.read))
case .mainWrite: return .workingMain(map(.write))
case .mainEdit: return .workingMain(map(.edit))
case .mainOther: return .workingMain(map(.other))
case .otherBash: return .workingOther(map(.bash))
case .otherRead: return .workingOther(map(.read))
case .otherWrite: return .workingOther(map(.write))
case .otherEdit: return .workingOther(map(.edit))
case .otherOther: return .workingOther(map(.other))
}
}
}