feat: eager vLLM warmup and smart page titles in paginate stage
- Add warmup() to LlmProvider interface for eager subprocess startup - ManagedVllmProvider.warmup() starts vLLM in background on project load - ProviderRegistry.warmupAll() triggers all managed providers - NamedProvider proxies warmup() to inner provider - paginate stage generates LLM-powered descriptive page titles when available, cached by content hash, falls back to generic "Page N" - project-mcp-endpoint calls warmupAll() on router creation so vLLM is loading while the session initializes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "McpServer" ADD COLUMN "runtime" TEXT;
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "McpTemplate" ADD COLUMN "runtime" TEXT;
|
||||
@@ -0,0 +1,2 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "Project" ADD COLUMN "proxyModel" TEXT NOT NULL DEFAULT '';
|
||||
@@ -0,0 +1,27 @@
|
||||
-- CreateTable
|
||||
CREATE TABLE "AuditEvent" (
|
||||
"id" TEXT NOT NULL,
|
||||
"timestamp" TIMESTAMP(3) NOT NULL,
|
||||
"sessionId" TEXT NOT NULL,
|
||||
"projectName" TEXT NOT NULL,
|
||||
"eventKind" TEXT NOT NULL,
|
||||
"source" TEXT NOT NULL,
|
||||
"verified" BOOLEAN NOT NULL DEFAULT false,
|
||||
"serverName" TEXT,
|
||||
"correlationId" TEXT,
|
||||
"parentEventId" TEXT,
|
||||
"payload" JSONB NOT NULL,
|
||||
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "AuditEvent_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "Project" ADD COLUMN "serverOverrides" JSONB;
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "AuditEvent_sessionId_idx" ON "AuditEvent"("sessionId");
|
||||
CREATE INDEX "AuditEvent_projectName_idx" ON "AuditEvent"("projectName");
|
||||
CREATE INDEX "AuditEvent_correlationId_idx" ON "AuditEvent"("correlationId");
|
||||
CREATE INDEX "AuditEvent_timestamp_idx" ON "AuditEvent"("timestamp");
|
||||
CREATE INDEX "AuditEvent_eventKind_idx" ON "AuditEvent"("eventKind");
|
||||
@@ -57,6 +57,7 @@ model McpServer {
|
||||
name String @unique
|
||||
description String @default("")
|
||||
packageName String?
|
||||
runtime String?
|
||||
dockerImage String?
|
||||
transport Transport @default(STDIO)
|
||||
repositoryUrl String?
|
||||
@@ -93,6 +94,7 @@ model McpTemplate {
|
||||
version String @default("1.0.0")
|
||||
description String @default("")
|
||||
packageName String?
|
||||
runtime String?
|
||||
dockerImage String?
|
||||
transport Transport @default(STDIO)
|
||||
repositoryUrl String?
|
||||
@@ -172,10 +174,12 @@ model Project {
|
||||
description String @default("")
|
||||
prompt String @default("")
|
||||
proxyMode String @default("direct")
|
||||
proxyModel String @default("")
|
||||
gated Boolean @default(true)
|
||||
llmProvider String?
|
||||
llmModel String?
|
||||
ownerId String
|
||||
llmProvider String?
|
||||
llmModel String?
|
||||
serverOverrides Json?
|
||||
ownerId String
|
||||
version Int @default(1)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
@@ -271,6 +275,29 @@ model PromptRequest {
|
||||
@@index([createdBySession])
|
||||
}
|
||||
|
||||
// ── Audit Events (pipeline/gate/tool trace from mcplocal) ──
|
||||
|
||||
model AuditEvent {
|
||||
id String @id @default(cuid())
|
||||
timestamp DateTime
|
||||
sessionId String
|
||||
projectName String
|
||||
eventKind String
|
||||
source String
|
||||
verified Boolean @default(false)
|
||||
serverName String?
|
||||
correlationId String?
|
||||
parentEventId String?
|
||||
payload Json
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
@@index([sessionId])
|
||||
@@index([projectName])
|
||||
@@index([correlationId])
|
||||
@@index([timestamp])
|
||||
@@index([eventKind])
|
||||
}
|
||||
|
||||
// ── Audit Logs ──
|
||||
|
||||
model AuditLog {
|
||||
|
||||
@@ -28,6 +28,7 @@ export async function cleanupTestDb(): Promise<void> {
|
||||
|
||||
export async function clearAllTables(client: PrismaClient): Promise<void> {
|
||||
// Delete in order respecting foreign keys
|
||||
await client.auditEvent.deleteMany();
|
||||
await client.auditLog.deleteMany();
|
||||
await client.mcpInstance.deleteMany();
|
||||
await client.promptRequest.deleteMany();
|
||||
|
||||
Reference in New Issue
Block a user