feat(agents): Enhance agent update confirmation and status handling

This commit is contained in:
Abhimanyu Saharan
2026-02-04 18:25:13 +05:30
parent d2f4d11508
commit 554ecc4c85
6 changed files with 39 additions and 15 deletions

View File

@@ -108,7 +108,7 @@ async def _ensure_gateway_session(
def _with_computed_status(agent: Agent) -> Agent:
now = datetime.utcnow()
if agent.status == "deleting":
if agent.status in {"deleting", "updating"}:
return agent
if agent.last_seen_at is None:
agent.status = "provisioning"
@@ -283,6 +283,7 @@ async def update_agent(
agent.provision_confirm_token_hash = hash_agent_token(provision_token)
agent.provision_requested_at = datetime.utcnow()
agent.provision_action = "update"
agent.status = "updating"
session.add(agent)
session.commit()
session.refresh(agent)
@@ -560,6 +561,8 @@ def confirm_provision_agent(
agent.provision_confirm_token_hash = None
agent.provision_requested_at = None
agent.provision_action = None
if action == "update":
agent.status = "online"
agent.updated_at = datetime.utcnow()
session.add(agent)
record_activity(

View File

@@ -210,9 +210,10 @@ def build_update_message(
"```\n"
"Note: if any agents.list entry defines heartbeat, only those agents "
"run heartbeats.\n"
"7) After the update completes, confirm by calling:\n"
"7) After the update completes (and only after files are written), confirm by calling:\n"
f" POST {context['base_url']}/api/v1/agents/{context['agent_id']}/provision/confirm\n"
f" Body: {{\"token\": \"{confirm_token}\", \"action\": \"update\"}}\n\n"
f" Body: {{\"token\": \"{confirm_token}\", \"action\": \"update\"}}\n"
" Mission Control will send the hello message only after this confirmation.\n\n"
"Files:" + file_blocks
)