Files
agent-pet-companion/apps/macos/Sources/AgentPetCompanion/App/PortableMakerSkill.swift
T
xjxandgd-ops 1807246b7e Add portable skill management and harden protected delivery (#10)
## 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>
2026-08-12 01:49:51 +08:00

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
}