70 lines
1.4 KiB
Swift
70 lines
1.4 KiB
Swift
import ClawdisProtocol
|
|
import Foundation
|
|
|
|
struct SkillsStatusReport: Codable {
|
|
let workspaceDir: String
|
|
let managedSkillsDir: String
|
|
let skills: [SkillStatus]
|
|
}
|
|
|
|
struct SkillStatus: Codable, Identifiable {
|
|
let name: String
|
|
let description: String
|
|
let source: String
|
|
let filePath: String
|
|
let baseDir: String
|
|
let skillKey: String
|
|
let primaryEnv: String?
|
|
let emoji: String?
|
|
let always: Bool
|
|
let disabled: Bool
|
|
let eligible: Bool
|
|
let requirements: SkillRequirements
|
|
let missing: SkillMissing
|
|
let configChecks: [SkillStatusConfigCheck]
|
|
let install: [SkillInstallOption]
|
|
|
|
var id: String { self.name }
|
|
}
|
|
|
|
struct SkillRequirements: Codable {
|
|
let bins: [String]
|
|
let env: [String]
|
|
let config: [String]
|
|
}
|
|
|
|
struct SkillMissing: Codable {
|
|
let bins: [String]
|
|
let env: [String]
|
|
let config: [String]
|
|
}
|
|
|
|
struct SkillStatusConfigCheck: Codable, Identifiable {
|
|
let path: String
|
|
let value: AnyCodable?
|
|
let satisfied: Bool
|
|
|
|
var id: String { self.path }
|
|
}
|
|
|
|
struct SkillInstallOption: Codable, Identifiable {
|
|
let id: String
|
|
let kind: String
|
|
let label: String
|
|
let bins: [String]
|
|
}
|
|
|
|
struct SkillInstallResult: Codable {
|
|
let ok: Bool
|
|
let message: String
|
|
let stdout: String?
|
|
let stderr: String?
|
|
let code: Int?
|
|
}
|
|
|
|
struct SkillUpdateResult: Codable {
|
|
let ok: Bool
|
|
let skillKey: String
|
|
let config: [String: AnyCodable]?
|
|
}
|