feat(desktop): add agent attention and recovery - #108
Conversation
Separate observer liveness from substantive progress, project actionable recovery states across Mission Inbox and thread surfaces, and back review state with durable receipts and reactions.\n\nCloses #105 Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com> # Conflicts: # desktop/src/features/agents/activeAgentTurnsStore.ts
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Mission Inbox priority sectionsDurable Channel-safe navigation fallbackAction rows retain their channel and conversation context when no root event exists. Possibly stalled recoveryHeartbeat-only activity keeps liveness visible without resetting meaningful progress; recovery actions stay beside the exception. Durable receipt actions
Telemetry unavailableObserver transport failure stays distinct from a progress stall and offers the appropriate recovery action. |
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Final attention/recovery hardeningFollow-up to independent fail-closed security, durability, and reliability reviews:
Verification on the final working tree:
|
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Final SDK/relay authority seam hardeningA stale fail-closed review of committed head This follow-up closes that seam end to end:
Verification on exact committed head
|
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>
Signed-off-by: oscarlehuu <oscar.lehuu@gmail.com>





Summary
lastSeenAt) from meaningful progress (lastSubstantiveProgressAt), so heartbeat/token/usage/raw-log traffic cannot hide a stalled turnNeeds you,Failed,Lost contact,Telemetry unavailable,Possibly stalled, andReady to reviewconsistently across Mission Inbox and thread surfaces46040 → 46041/46042signer/owner/request relationship in SDK builders, ACP emission, relay ingest, and an independent desktop projectionRespond,Inspect,Wait 10m, existing Stop/Retry,Mark reviewed, and in-threadRequest changes)46043authority seamUser flows
46040input request remains Needs you until an authorized durable46041answer or46042resolution arrives. Forged authors, targets, and relationship tags are rejected/ignored.46043terminal receipt becomes Ready to review. Opening the thread does not review it; only an explicit reaction from the agent's verified owner does.Authority and durability
46040: registered owned agent → intended owner46041: intended owner or verified same-owner sibling → known request/requesting agent46042: requesting agent → known request/intended owner46043: registered agent terminal receipt; review uses channel-scoped standard NIP-25 last-valid-esemanticsVerification
just ci(Rust fmt/clippy/tests, desktop checks/tests, web/admin-web, mobile 1,275 tests)d2f549161)Visual evidence
Current production-E2E captures cover:
All five captures have distinct SHA-256 hashes and passed visual inspection for legibility, clipping, hierarchy, and adjacent recovery actions.
Closes #105