Repository navigation
Conversation
- Add namespace CRUD to StoragePort and memory, sqlite, postgres adapters - Add session_explorer_namespaces table indexed by connection - Add validateNamespaceInput rejecting bare wildcard patterns Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Share one storage contract across memory, sqlite and postgres specs - Add live-Postgres spec with BIGINT threshold and JSONB schema cases - Reject cross-connection saves in tests for every adapter - Require safe integer thresholds and whitespace-free trimmed patterns Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Fan out SCAN MATCH/COUNT 1000 over cluster primaries, reusing parent auth/TLS and closing every node client it opens - Stop at the key cap, pipeline TYPE/PTTL/MEMORY USAGE/OBJECT IDLETIME per batch and aggregate per session; flag partial on failed nodes - Read session keys from their owning primary with a per-value byte cap, windowed list/zset reads, bounded HSCAN and raw JSON.GET strings Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Pipeline first reads per batch after a batched locate, keeping only windowed continuations serial - Add a 32 MB total byte budget; readSessionKeys and keysForSession now report truncation and failed nodes, plus missing keys for reads - Route cluster reads by key slot via cluster-key-slot; MOVED and per-key read errors omit the key instead of failing the request - Size JSON with JSON.DEBUG MEMORY when MEMORY USAGE is unavailable - Read strings with GETRANGE 0 cap-1 and flag truncation explicitly Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Namespace CRUD, preview, session list, detail and streamed export - Detail reports completeness: unparsed keys, truncation, failed nodes and missing keys Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 3 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 765c423. Configure here.
jamby77
left a comment
There was a problem hiding this comment.
Checked the scanner, reader, primary routing, service, controller and export stream, licence gating (LicenseGuard is global and SESSION_OVERSIZE_FLAGS is in the tier map), and the memory/sqlite/postgres namespace adapters, which behave the same. I skipped issues already raised in review comments and everything #553 fixes. Two defects remain: session lookup gives a 404 once a namespace is past the scan cap, and large hashes are read without a byte bound.
- Keep failed MEMORY USAGE reads as unknown instead of zero - Return unmeasured sessions, partial and failedNodes from oversize Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Summary
Second of three stacked PRs for the Session Explorer. This PR adds namespace storage, a bounded scanner and reader for session keys, and the
/session-explorerAPI, with oversize flags gated to Pro.Stack: fixtures → api → web
Changes
completeflag with the reasons it is false;GET .../oversize, which requiresSESSION_OVERSIZE_FLAGS.Checklist
roborev review --branchor/roborev-review-branchin Claude Code (internal)🤖 Generated with Claude Code
Note
Medium Risk
New live-read paths against customer Valkey data (including export) with cluster fan-out; mitigated by caps and no persistence, but responses can contain sensitive session contents.
Overview
Adds a Session Explorer API so users can define per-connection namespaces (key pattern, parsing preset, oversize threshold) and inspect live Valkey session data without persisting key contents.
Namespace config is stored via new
StoragePortmethods andsession_explorer_namespacestables in SQLite/Postgres (plus memory adapter), with shared contract tests. Live operations use SCAN (not KEYS) across cluster primaries (primary-nodes,cluster-key-slotrouting), a 10k-key scan cap, and a bounded reader (2 MB/key, 32 MB total) that pipelines reads and reports truncation, partial cluster failures, and unmeasured memory./session-explorerendpoints cover namespace CRUD, unsaved preview, session list/detail (with acompleteflag), streamed JSON export, and Pro-gated oversize session IDs (SESSION_OVERSIZE_FLAGS). Shared types gain oversize/preview/export shapes and richer session metadata (unmeasuredKeys, completeness fields). Tests assert session payloads are not logged or written to app storage.Reviewed by Cursor Bugbot for commit 253dea0. Bugbot is set up for automated code reviews on this repo. Configure here.