fix(web): blank means the conversation has not started
The summary blank bit switches from log emptiness to the absence of any turn/start: standalone plugin events — command lifecycle records, plan/mode, session titles, goal metadata — no longer surface a fresh session in lists or steal the New Session view. Running /plan (or /goal) on a blank session keeps it blank and reusable; the first accepted prompt's turn clears it. Both carriers share one predicate (summarize + the host/session-added frame); the cold path keeps its constant false with the index-read rationale; the client mirror already flips only on prompt acceptance and needed no change.
This commit is contained in:
@@ -132,11 +132,13 @@ export interface SessionSummary {
|
||||
/** Status of the attached agent; always false for cold (unattached) sessions. */
|
||||
running: boolean
|
||||
/**
|
||||
* Derived emptiness bit: true while the session log holds zero events (no
|
||||
* user message yet). Clients hide blank sessions from lists and reuse them
|
||||
* for New Session on the same workspace. Always false for cold sessions —
|
||||
* lazy persistence keeps a never-appended session out of the store, so a
|
||||
* listed cold session necessarily has events.
|
||||
* Derived conversation-not-started bit: true while no turn has run (no
|
||||
* prompt was accepted yet). Standalone plugin events — command lifecycle
|
||||
* records, plan/mode, titles, goals — do not open a turn and therefore do
|
||||
* not clear it. Clients hide blank sessions from lists and reuse them for
|
||||
* New Session on the same workspace. Always false for cold sessions —
|
||||
* lazy persistence keeps a never-appended session out of the store, and a
|
||||
* listed cold session's log holds its turns.
|
||||
*/
|
||||
blank: boolean
|
||||
/** fork/spawn lineage (session.header.parentSession passthrough); absent for root sessions. */
|
||||
|
||||
Reference in New Issue
Block a user