Skip to content

Support bare path resume with interactive session picker #110

Description

@od0

Problem

Resuming a session in a different harness requires two commands:

path p import claude          # interactive session picker
path resume claude-<uuid>     # interactive harness picker

path share already aggregates all installed harnesses into a single fzf picker, but it's wired to Pathbase upload. There's no local-only equivalent. A user who wants to move a session from Claude into Gemini (or vice versa) has to either know the cache id or round-trip through Pathbase.

Proposal

Support bare path resume (no <input> argument). When invoked with no input and a TTY:

  1. Reuse the path share session-aggregation logic (gather_sessions) to build a cross-harness picker showing all installed providers' sessions, ranked by cwd match then recency.
  2. After the user picks a session, derive it into a toolpath Path (same as share does internally).
  3. Launch the existing harness picker (pre-selecting the source harness) and project into the chosen target.

No Pathbase interaction, no cache write required (though --cache could opt into it).

Behavior summary

Invocation Behavior
path resume <input> Existing: resolve input, harness picker, project, exec
path resume (TTY) New: session picker → derive → harness picker → project → exec
path resume (no TTY) Error: "no input provided and no TTY for interactive selection"
path resume --harness X (no input) Session picker filtered to harness X only, then project into target

Implementation notes

  • gather_sessions and format_picker_row in cmd_share.rs should be extracted into a shared module (or cmd_share should expose them as pub(crate)).
  • The derive step after session selection is already implemented per-harness in cmd_share.rs — same logic applies.
  • path resume --harness X with no input could mean either "pick from X's sessions" or "project into X." Suggest: use --harness for the target harness (matching current resume semantics) and add --from for filtering the session picker by source provider. Or just let the aggregated picker do its job and don't filter.
  • The --project / -C flag already exists on resume for the working directory; it should also influence cwd-matching rank in the picker (same as share uses shell cwd).

Non-goals

  • This doesn't replace path share. Sharing to Pathbase is a distinct action.
  • No new TUI chrome needed — it's the same fzf picker share already builds.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions