## What changed - add App and PetCore portable Agent Pet Maker skill management, with fd-relative ownership and race-safe install/uninstall - improve Pi no-model failure projection, session bubble message selection, child-session filtering, onboarding rendering, and related App behavior - delete verified PR source branches with exact leases after merge while dispatching exact-main CI first - document direct/train multi-agent delivery, explicit add/commit/clean/push checks, post-merge worktree audits, and exact-SHA release proof ## Validation - full `cargo test -p petcore` - Swift package suite: 734 tests - Pi connector privacy tests - promotion/release Python tests and actionlint - `./script/validate_pre_push.sh` - independent specification and safety reviews: no remaining blockers This PR changes the protected CI control plane, so it is intended for full CI followed by trusted exact-head squash merge. --------- Co-authored-by: gd-ops <gd-ops@xmfunny.com>
56 lines
1.4 KiB
Swift
56 lines
1.4 KiB
Swift
import Foundation
|
|
|
|
enum PortableMakerSkillState: String, Decodable, Equatable, Sendable {
|
|
case missing
|
|
case current
|
|
case updateAvailable = "update_available"
|
|
case needsReinstall = "needs_reinstall"
|
|
case unmanagedCurrent = "unmanaged_current"
|
|
case conflict
|
|
}
|
|
|
|
struct PortableMakerSkillStatus: Decodable, Equatable, Sendable {
|
|
let schemaVersion: String
|
|
let name: String
|
|
let state: PortableMakerSkillState
|
|
let targetDisplayPath: String
|
|
let expectedVersion: String
|
|
let installedVersion: String?
|
|
let managed: Bool
|
|
let targetExists: Bool
|
|
let canInstall: Bool
|
|
let canUpdate: Bool
|
|
let canReinstall: Bool
|
|
let canUninstall: Bool
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case schemaVersion = "schema_version"
|
|
case name
|
|
case state
|
|
case targetDisplayPath = "target_display_path"
|
|
case expectedVersion = "expected_version"
|
|
case installedVersion = "installed_version"
|
|
case managed
|
|
case targetExists = "target_exists"
|
|
case canInstall = "can_install"
|
|
case canUpdate = "can_update"
|
|
case canReinstall = "can_reinstall"
|
|
case canUninstall = "can_uninstall"
|
|
}
|
|
}
|
|
|
|
enum PortableMakerSkillOperation: Equatable {
|
|
case idle
|
|
case checking
|
|
case installing
|
|
case uninstalling
|
|
|
|
var isBusy: Bool { self != .idle }
|
|
}
|
|
|
|
enum PortableMakerSkillFailure: Equatable {
|
|
case load
|
|
case install
|
|
case uninstall
|
|
}
|