first commit

This commit is contained in:
2026-08-14 23:41:57 +08:00
commit 086803a8dd
471 changed files with 91938 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
package session
// Context inheritance plumbing for the "infinite context" feature (#483, built
// on the header fields added by #480). A session created to *continue* another
// session's collapsed context records two things on its header:
//
// - ContextFrom: the source session id whose checkpoint holds the collapsed
// prefix (see runtime.LoadCheckpoint / CheckpointPath).
// - ContextWatermark: the message index up to which that prefix was collapsed;
// on resume/fork the runtime (#481) can load the source checkpoint and skip
// re-summarizing messages [0, ContextWatermark).
//
// This is deliberately side-effect-free header plumbing: it never touches the
// memory dir or the runtime. It sits alongside ParentSession (which records
// lineage) — inheritance additionally records *where the collapsed context came
// from* so a forked/continued session need not re-summarize early context.
// SetContextInheritance records on header that this session continues fromID's
// collapsed context up to watermark. A non-positive watermark or an empty fromID
// clears inheritance (both fields reset to their zero/omitempty state), so the
// header round-trips as a session with no inherited checkpoint. This mirrors how
// ParentSession is a plain header field set at creation time.
func SetContextInheritance(header *SessionHeader, fromID string, watermark int) {
if header == nil {
return
}
if fromID == "" || watermark <= 0 {
header.ContextFrom = ""
header.ContextWatermark = 0
return
}
header.ContextFrom = fromID
header.ContextWatermark = watermark
}
// ContextInheritance reports the inherited-context source recorded on header:
// the source session id, the watermark, and whether inheritance is set. It is
// the read counterpart to SetContextInheritance — a convenience accessor the
// runtime (#481) uses on resume/fork to decide whether to load the source
// checkpoint. ok is true only when a non-empty source and a positive watermark
// are both present, so a header with only one of the two (a malformed or
// partially written record) reports ok=false rather than a half-configured
// inheritance.
func (h SessionHeader) ContextInheritance() (fromID string, watermark int, ok bool) {
if h.ContextFrom == "" || h.ContextWatermark <= 0 {
return "", 0, false
}
return h.ContextFrom, h.ContextWatermark, true
}
// HasContextInheritance reports whether header declares inherited collapsed
// context. It is shorthand for the ok return of ContextInheritance.
func (h SessionHeader) HasContextInheritance() bool {
_, _, ok := h.ContextInheritance()
return ok
}