refactor(#2302): type socket wire fields as ident, validated by serde on deserialize
This commit is contained in:
parent
bf644cc126
commit
84b750fba5
33 changed files with 333 additions and 263 deletions
|
|
@ -70,7 +70,7 @@ pub async fn build_all(coord: &Coordinator) -> Vec<ContainerView> {
|
|||
// Parse the nspawn machine suffix into an Ident once at this
|
||||
// enumeration origin; a suffix that isn't a valid ident isn't one
|
||||
// of our agents, so skip it.
|
||||
let Ok(logical) = hive_host_sock::Ident::parse(logical) else {
|
||||
let Ok(logical) = hive_types::Ident::parse(logical) else {
|
||||
continue;
|
||||
};
|
||||
let deployed_full = locked
|
||||
|
|
@ -133,7 +133,7 @@ pub fn claude_has_session(dir: &Path) -> bool {
|
|||
/// the consolidated `hyperhive-harness.json`. Falls back to the legacy
|
||||
/// individual sentinel files written by older harness builds so in-place
|
||||
/// upgrades don't lose state during the transition window.
|
||||
fn read_harness_flags(name: &hive_host_sock::Ident) -> (bool, bool) {
|
||||
fn read_harness_flags(name: &hive_types::Ident) -> (bool, bool) {
|
||||
let dir = Coordinator::agent_notes_dir(name);
|
||||
if let Ok(raw) = std::fs::read_to_string(dir.join("hyperhive-harness.json"))
|
||||
&& let Ok(v) = serde_json::from_str::<serde_json::Value>(&raw)
|
||||
|
|
@ -154,7 +154,7 @@ fn read_harness_flags(name: &hive_host_sock::Ident) -> (bool, bool) {
|
|||
(rate_limited, needs_login)
|
||||
}
|
||||
|
||||
fn auth_failed_sentinel(name: &hive_host_sock::Ident) -> bool {
|
||||
fn auth_failed_sentinel(name: &hive_types::Ident) -> bool {
|
||||
read_harness_flags(name).1
|
||||
}
|
||||
|
||||
|
|
@ -165,7 +165,7 @@ fn auth_failed_sentinel(name: &hive_host_sock::Ident) -> bool {
|
|||
/// NB: callers building `AgentMeta` for a *stopped* container should
|
||||
/// clear the result — the on-disk status is a stale snapshot from
|
||||
/// before the stop. Use `read_agent_status_live` for that.
|
||||
pub fn read_agent_status(name: &hive_host_sock::Ident) -> (Option<String>, Option<i64>) {
|
||||
pub fn read_agent_status(name: &hive_types::Ident) -> (Option<String>, Option<i64>) {
|
||||
let path = Coordinator::agent_notes_dir(name).join("hyperhive-status");
|
||||
let meta = std::fs::metadata(&path).ok();
|
||||
// Read at most STATUS_MAX_CHARS * 4 + 2 bytes: 4 is the max UTF-8 byte
|
||||
|
|
@ -206,7 +206,7 @@ pub fn read_agent_status(name: &hive_host_sock::Ident) -> (Option<String>, Optio
|
|||
/// Returned tuple is `(status_text, status_set_at, running)`.
|
||||
/// `name` is the logical agent name (same as the broker recipient).
|
||||
pub async fn read_agent_status_live(
|
||||
name: &hive_host_sock::Ident,
|
||||
name: &hive_types::Ident,
|
||||
) -> (Option<String>, Option<i64>, bool) {
|
||||
if !lifecycle::is_running(name.as_str()).await {
|
||||
return (None, None, false);
|
||||
|
|
@ -221,7 +221,7 @@ pub async fn read_agent_status_live(
|
|||
/// so it always reflects the resolved priority (nix config > runtime
|
||||
/// override > default). Returns `None` when the field is absent or the
|
||||
/// harness has not yet started a turn.
|
||||
fn read_active_model(name: &hive_host_sock::Ident) -> Option<String> {
|
||||
fn read_active_model(name: &hive_types::Ident) -> Option<String> {
|
||||
let path = Coordinator::agent_notes_dir(name).join("hyperhive-harness.json");
|
||||
let raw = std::fs::read_to_string(path).ok()?;
|
||||
let v: serde_json::Value = serde_json::from_str(&raw).ok()?;
|
||||
|
|
|
|||
Loading…
Reference in a new issue