Skip to content

client: persist interactive conversation state across navigation and restarts #154

Description

@ananmouaz

Problem / motivation

The new AiQuestion and part-action APIs enable interactive conversations, but host apps must retain accepted answers and pending state when transcript rows are evicted, screens are recreated, or the process restarts. A reliable recipe and explicit lifecycle contracts are needed beyond the happy path.

Proposed solution

Demonstrate durable restoration of messages, question answers, and pending actions using a pluggable application-owned store. Design correlated approval requests/responses as a separate, reviewable engine slice where needed. Coordinate in-flight reconnect with #98 rather than introduce another reconnect mechanism.

Acceptance criteria

  • Define ownership and serialization of settled answers and pending/failed actions, including migration/versioning expectations for stored application state.
  • Demonstrate restoring AiQuestion answers after lazy-list eviction, navigation, and process recreation without re-submitting accepted actions.
  • Define action identity and how the current message ID + original part index contract remains valid across restoration; do not silently rely on reordered parts keeping the same identity.
  • Specify pending/approved/denied/expired approval behavior, correlated responses, and retry handling before implementing public engine changes.
  • Cover duplicate responses, stale/late events, superseded turns, denial, disconnection, foreground/background transitions and explicit stop with lifecycle tests.
  • Coordinate server-side deduplication for side effects; document that client persistence alone cannot guarantee exactly-once execution.
  • Provide a runnable persistence recipe and document which restoration works offline versus requires a resumable backend.

Dependencies / boundaries

Build on the hosted-agent adapter #153 for remote run/session identities. Extend the reconnect design in #98. Keep the durable store pluggable and preserve current saved-message compatibility unless an explicit migration is designed.

Background

October 3 library review and interactive foundation release PR #152.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions