v1.11.5: ContextBar inline next to agent picker; remove ChatContextPopover
ContextBar relocated from a dedicated row above MessageList to inline with the agent-picker row, filling the space to the right of the picker + plus button. Always-visible (zero-state when no assistant message has run yet) via chat.model_context_limit, which GET /api/sessions/:id/chats now populates from a single getModelContext lookup per session. ChatContextPopover above the input is removed entirely along with its useChatContextStats hook (no remaining callers). Color tiers and the auto-compaction threshold tooltip unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,6 +3,7 @@ import { z } from 'zod';
|
||||
import type { Sql } from '../db.js';
|
||||
import type { Broker } from '../services/broker.js';
|
||||
import type { Chat, Message } from '../types/api.js';
|
||||
import { getModelContext } from '../services/model-context.js';
|
||||
|
||||
const CreateBody = z.object({
|
||||
name: z.string().min(1).max(200).optional(),
|
||||
@@ -60,7 +61,20 @@ export function registerChatRoutes(
|
||||
WHERE c.session_id = ${req.params.id} AND c.status = ${status}
|
||||
ORDER BY c.updated_at DESC
|
||||
`;
|
||||
return rows;
|
||||
// v1.11.5: enrich each chat with its model's context window so the
|
||||
// ContextBar can render a zero-state (and the auto-compaction threshold
|
||||
// tooltip) before the first assistant message lands. All chats in a
|
||||
// session share the session's model, so we do ONE getModelContext
|
||||
// lookup and apply the result to the whole list. Failed lookups
|
||||
// (model unknown, llama-swap down) yield null and the frontend falls
|
||||
// through to the "model context unknown" placeholder.
|
||||
const sessRow = await sql<{ model: string | null }[]>`
|
||||
SELECT model FROM sessions WHERE id = ${req.params.id}
|
||||
`;
|
||||
const sessionModel = sessRow[0]?.model ?? null;
|
||||
const mctx = sessionModel ? await getModelContext(sessionModel) : null;
|
||||
const modelContextLimit = mctx?.n_ctx ?? null;
|
||||
return rows.map((r) => ({ ...r, model_context_limit: modelContextLimit }));
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -89,6 +89,12 @@ export interface Chat {
|
||||
message_count?: number;
|
||||
last_message_preview?: string | null;
|
||||
effective_context_tokens?: number | null;
|
||||
// v1.11.5: model's full context window (from llama-swap props), threaded
|
||||
// to the frontend so ContextBar can render a zero-state + the auto-
|
||||
// compaction threshold tooltip before any assistant message lands.
|
||||
// Shared across all chats in a session (chats inherit session.model).
|
||||
// null when the upstream lookup failed (model unknown, llama-swap down).
|
||||
model_context_limit?: number | null;
|
||||
}
|
||||
|
||||
// KEEP IN SYNC: apps/server/src/schema.sql messages_role_chk / messages_status_chk
|
||||
|
||||
Reference in New Issue
Block a user