Skip to content

feat(app): add native sessions and durable local memory - #213

Merged
NarwhalChen merged 34 commits into
mainfrom
feat/native-session-letta-memory
Jul 31, 2026
Merged

feat(app): add native sessions and durable local memory#213
NarwhalChen merged 34 commits into
mainfrom
feat/native-session-letta-memory

Conversation

@NarwhalChen

@NarwhalChen NarwhalChen commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • make Codex persistent threads and Claude native session IDs the authoritative owners of provider history, while Convera keeps a durable public transcript and crash-recoverable turn journal
  • replace the experimental Letta/remote path with a local-only Off / Local memory engine; Local provides versioned blocks, archive search, correction, explicit forget, status, WAL recovery, and asynchronous subscription-native curation
  • add a repeatable Off/Local evaluation runner that emits standalone JSON and HTML reports for deterministic memory semantics and paired real-Codex recall trials
  • keep the subconscious curator text-only and tool-free, isolate memory/session state by conversation, actor, provider, and revision, and preserve source-agent provenance across multi-agent turns
  • rotate or rebase native sessions only when provider, prompt/sandbox fingerprint, branch, reset, deletion, or memory version requires it instead of resending the entire transcript every turn
  • apply one main-process host policy to Codex and Claude tools, bind web-bridge streams to their owning client, abort work on disconnect, and bound shutdown even when curation hangs
  • harden local Electron automation discovery, loopback proxy handling, and executable launch behavior; fail early on unsupported Node 26 instead of reporting a package success without an application artifact

Product behavior

  • Memory defaults to Off; existing local memory remains stored but is neither injected nor curated while paused
  • Local memory uses the selected native subscription provider for a hidden curation pass after completed turns; it does not require Letta Cloud, a Letta subscription, or a separate backend
  • memory context is injected only when a native session is created or the memory version changes
  • destructive forgetting remains approval-gated and survives crash/restart through durable intent replay
  • agents in the same channel share the public conversation while retaining actor-specific provider sessions, sandbox workspaces, and memory provenance
  • pnpm --filter @convera/app memory:eval runs the deterministic benchmark; pnpm --filter @convera/app memory:eval:real adds paired real-Codex trials and writes local ignored artifacts under .automation/artifacts/memory-eval

Verification

  • pnpm --filter @convera/app test: 64 files passed; 411 tests passed, with 1 gated real-provider test skipped by default
  • real Codex persistent-session integration passed: a nonce created before runtime disposal was recovered after restart from the same native thread
  • real Codex Off/Local A/B recall passed across three independent paired trials: Off recalled 0/3 and Local recalled 3/3; both modes satisfied their response contract in 3/3 trials
  • the latest real run measured a mean Local input-token overhead of 162.67 tokens per turn and a mean latency delta of +271.12 ms; three trials are a functional smoke sample, not enough to establish a stable latency direction
  • deterministic evaluation passed cross-restart recall, correction, user scope, workspace isolation, conversation isolation, and explicit forget; overall task accuracy was Off 33.3% versus Local 100%
  • an actual hidden Electron automation smoke launched one Convera renderer, found 14 visible elements before and after an atomic Escape action, captured a non-blank welcome-screen screenshot, and closed cleanly
  • automation TypeScript check, Prettier, git diff --check, and ESLint passed; ESLint reported 0 errors and 5 existing React hook warnings
  • Electron Forge completed under temporary Node 20 and prepared Chromedriver 132.0.6834.210 for Electron 34; the default Node 26 path now stops before packaging with an actionable compatibility error

Boundaries

  • no real Claude request was made
  • the benchmark report and screenshot are intentionally local ignored artifacts rather than committed generated outputs
  • opaque external MCP calls and unsandboxable host shell execution remain denied; computer control remains approval-gated
  • RobotJS removal and default Cua MCP integration remain isolated in PR Replace builtin computer control with managed Cua MCP #212
  • this PR is intentionally left open for review and does not merge itself into main

@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Actions Updated (UTC)
foxyfox-docs Skipped Skipped Jul 31, 2026 7:12am
foxyfox-website Skipped Skipped Jul 31, 2026 7:12am

Request Review

@vercel

vercel Bot commented Jul 31, 2026

Copy link
Copy Markdown

@NarwhalChen must be a member of the codefox-repo team on Vercel to deploy.
- Click here to add @NarwhalChen to the team.
- If you initiated this build, request access.

Learn more about collaboration on Vercel and other options here.

@NarwhalChen NarwhalChen changed the title feat(app): add native-session memory runtime feat(app): add native sessions and durable local memory Jul 31, 2026
@vercel
vercel Bot temporarily deployed to Preview – foxyfox-website July 31, 2026 07:12 Inactive
@vercel
vercel Bot temporarily deployed to Preview – foxyfox-docs July 31, 2026 07:12 Inactive
@NarwhalChen
NarwhalChen merged commit 57a4f0f into main Jul 31, 2026
5 checks passed
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.

1 participant