feat(claude-code): full-session retain with document upsert and configurable tags - #695
Merged
Merged
Conversation
…configurable tags
Switch default retain behavior from per-turn chunks to full-session upsert.
Each session is now retained as a single document (document_id = session_id)
that gets updated on every Stop event, instead of creating fragmented
documents with timestamp-suffixed IDs.
New config options:
- retainMode: "full-session" (default) or "chunked" (legacy)
- retainTags: list with template variable support ({session_id}, {bank_id}, {timestamp})
- retainMetadata: extra metadata dict merged with built-in fields, supports templates
The turn-count gating was only applied in chunked mode, meaning full-session mode would re-ingest the entire transcript on every single Stop event. Now retainEveryNTurns gates both modes. Also fix test isolation: resolve ~/.hindsight/claude-code.json at call time (not module load) so HOME override in tests works correctly.
Update tests to use HOME env var override instead of monkeypatching the removed USER_CONFIG_PATH constant. Add autouse fixture to TestLoadConfig to isolate all config tests from real user config and HINDSIGHT_* env vars.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
session_idas thedocument_idfor upsert semantics. Previously each retain call created a new fragmented document with a timestamp-suffixed ID.retainTags): list of tags sent with each retain call, with template variable support ({session_id},{bank_id},{timestamp}). Default:["{session_id}"].retainMetadata): extra metadata merged with built-in fields, same template support.chunkedmode preserved viaretainMode: "chunked"config.Test plan
retainMode: "chunked"