Skip to content

feat: cross-account session continuation (closes #3) - #4

Merged
Spielewoy merged 3 commits into
mainfrom
feat/session-continuation
Jun 11, 2026
Merged

feat: cross-account session continuation (closes #3)#4
Spielewoy merged 3 commits into
mainfrom
feat/session-continuation

Conversation

@Spielewoy

Copy link
Copy Markdown
Owner

Summary

Implements cross-account session continuation: a session started under one account can be resumed under another. Adds a continue command plus default base-session seeding across both the bash and PowerShell launchers.

Closes #3

What it does

  • New continue command and default base-session seeding for codex, claude-cli, gemini-cli, and commandcode.
  • Declarative adapter session block describing per-tool session state, so support is data-driven, not hard-coded.
  • Works across both launchers (multi-cli bash + multi-cli.ps1 PowerShell).

Supported vs unsupported

  • Supported (seeded): codex, claude-cli, gemini-cli, commandcode.
  • Declared non-portable (documented, not seeded): opencode, cursor.

Security guarantee

  • Credentials are never copied between accounts.
  • Hardened against link attacks on session state: symlink, junction, hardlink, and path-traversal guards.

Test coverage

  • 37 bats + 39 Pester tests, using real fixtures (no mocks).
  • CI wired for ubuntu / macOS / windows.

Test plan

  • bats suite green on ubuntu + macOS
  • Pester suite green on windows
  • Manual: start session under account A, continue under account B for each supported tool
  • Verify no credential files are copied during seeding
  • Verify symlink/junction/hardlink/traversal guards reject crafted session state

…se seeding)

Add a `continue` command and default base-session seeding so a session
started under one account can be resumed under another, across bash and
PowerShell launchers.

- new `continue` command + default base seeding for codex, claude-cli,
  gemini-cli, and commandcode (bash + powershell)
- declarative adapter `session` block describing per-tool session state
- opencode and cursor declared non-portable (documented, not seeded)
- credentials are never copied; symlink/junction/hardlink/traversal guards
  harden against link attacks on session state
- 37 bats + 39 Pester real tests (real fixtures, no mocks) plus CI wiring
  for ubuntu/macOS/windows

Closes #3
- Set the multi-cli launcher mode to 100755 so tests/helpers/common.bash can
  invoke it directly on the bats runners (was 100644 -> exit 126).
- pester job installs Pester 3.4.0 on the windows runner; run-pester.ps1 now
  deterministically loads a 3.x (>=3.4, <4), errors clearly if none, and fails
  the build only on Failed > 0 (Inconclusive/Skipped/Pending do not fail).
- safety.bats symlink/hardlink fixtures are now portable: POSIX ln on
  Linux/macOS, fsutil/mklink on git-bash; skip cleanly when a host refuses.
The two staleness tests used GNU-only flags (stat -c, touch -d @epoch)
that BSD/macOS coreutils reject, failing the bats (macos-latest) job.
Replace size reads with wc -c, set equal mtime via touch -r reference,
and make the strictly-newer dest with a real later touch (sleep 1; touch)
instead of epoch arithmetic. Assertions unchanged in meaning.
@Spielewoy
Spielewoy merged commit f0b31e6 into main Jun 11, 2026
7 checks passed
@Spielewoy
Spielewoy deleted the feat/session-continuation branch June 11, 2026 11:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

how would i resume a chat from different session?

1 participant