The native adapter's route was named deepseek, colliding with pi-ai's catalog provider of the same name, so the two DeepSeek paths could never be mounted side by side. The web settings page needs both configurable at once. Compositions, fixtures, goldens, scaffolding defaults, and docs all move together (pre-release, no shim); TUI/session-query-spill/ missing-credential goldens re-recorded through their keyless refresh modes because provider-name length shifts box padding and spill truncation points.
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.