/// store/store_assistant.mbt —— 项目助理登记(内存后端,multi-agent-lock v3 阶段2 精简版)
///
/// 助理选举/心跳/退位/清扫。SQLite 后端在 store_sqlite.mbt 侧实现同构语义,
/// 选举裁决共用 store.mbt 的 assistant_claim_action 单一真源。

///|
/// 内存后端:写入/覆盖一个助理登记(幂等)。
pub fn MemoryStore::assistant_upsert(
  self : MemoryStore,
  reg : AssistantReg,
) -> Unit {
  self.assistant_reg.set(reg.agent, reg)
}

///|
/// 内存后端:查询某 agent 的助理登记(不存在返回 None)。
pub fn MemoryStore::assistant_get(
  self : MemoryStore,
  agent : String,
) -> AssistantReg? {
  self.assistant_reg.get(agent)
}

///|
/// 内存后端:列出全部助理登记。
pub fn MemoryStore::assistant_list(self : MemoryStore) -> Array[AssistantReg] {
  let out : Array[AssistantReg] = []
  self.assistant_reg.each(fn(_, r) { out.push(r) })
  out
}

///|
/// 内存后端:改某 agent 登记的 status(dead / resigned 等;不存在返回 false)。
pub fn MemoryStore::assistant_set_status(
  self : MemoryStore,
  agent : String,
  status : String,
) -> Bool {
  match self.assistant_reg.get(agent) {
    Some(r) => {
      self.assistant_reg.set(agent, { ..r, status, })
      true
    }
    None => false
  }
}

///|
/// 内存后端:追加一条锁违例(助理接管等治理动作落案底)。
pub fn MemoryStore::lock_violations_push(
  self : MemoryStore,
  v : LockViolation,
) -> Unit {
  self.lock_violations.push(v)
}