- Remove ProjectMember model entirely (RBAC manages project access) - Add 'expose' RBAC role for /mcp-config endpoint access (edit implies expose) - Rename CLI flags: --llm-provider → --proxy-mode-llm-provider, --llm-model → --proxy-mode-llm-model - Add attach-server / detach-server CLI commands (mcpctl --project NAME attach-server SERVER) - Add POST/DELETE /api/v1/projects/:id/servers endpoints for server attach/detach - Remove members from backup/restore, apply, get, describe - Prisma migration to drop ProjectMember table Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
25 lines
1.0 KiB
TypeScript
25 lines
1.0 KiB
TypeScript
import { z } from 'zod';
|
|
|
|
export const CreateProjectSchema = z.object({
|
|
name: z.string().min(1).max(100).regex(/^[a-z0-9-]+$/, 'Name must be lowercase alphanumeric with hyphens'),
|
|
description: z.string().max(1000).default(''),
|
|
proxyMode: z.enum(['direct', 'filtered']).default('direct'),
|
|
llmProvider: z.string().max(100).optional(),
|
|
llmModel: z.string().max(100).optional(),
|
|
servers: z.array(z.string().min(1)).default([]),
|
|
}).refine(
|
|
(d) => d.proxyMode !== 'filtered' || d.llmProvider,
|
|
{ message: 'llmProvider is required when proxyMode is "filtered"' },
|
|
);
|
|
|
|
export const UpdateProjectSchema = z.object({
|
|
description: z.string().max(1000).optional(),
|
|
proxyMode: z.enum(['direct', 'filtered']).optional(),
|
|
llmProvider: z.string().max(100).nullable().optional(),
|
|
llmModel: z.string().max(100).nullable().optional(),
|
|
servers: z.array(z.string().min(1)).optional(),
|
|
});
|
|
|
|
export type CreateProjectInput = z.infer<typeof CreateProjectSchema>;
|
|
export type UpdateProjectInput = z.infer<typeof UpdateProjectSchema>;
|