SessionTitleInvalidError narrows the one rename failure that blames the input; the fallback-unpin append extracts to appendFallback beside ensureFallback's guarded twin; a deferred-provider test proves rename supersedes ACTIVE generation; the invariant companion enforces messageSeqs-empty iff user-source on every appended session/title event (tsconfig gains the session-title invariant path); SessionTitleEventData field docs state the third source kind and the empty-seqs rule, mirrored into the bilingual core-data-structures page; the note qualifies the refresh unpin as conditional on a derivable replacement.
session-title/ — log-backed session-title capability family
English | 中文
Durable session-title state, one optional asynchronous provider seam, and two opt-in model-backed implementations. The built-in first-message fallback is part of the service, so every composition can title a session without an auxiliary model call.
| Package | Role | ctx key |
|---|---|---|
session-title/ |
Log fold, deterministic fallback, provider registry, and refresh API | ctx.sessionTitle |
session-title-llm/ |
Shared route, request logging, prompt, timeout, stream, and validation helper | — |
session-title-first-message-llm/ |
Optional provider using the first eligible human message | registers on ctx.sessionTitle |
session-title-all-messages-llm/ |
Optional provider using every eligible human message | registers on ctx.sessionTitle |
Only one provider may register at a time. The shared demo spine mounts the fallback service but leaves both model providers outside default composition, so deployments choose auxiliary cost and retitling cadence explicitly.