| | import { z } from 'zod'; |
| | import { |
| | Permissions, |
| | PermissionTypes, |
| | permissionsSchema, |
| | agentPermissionsSchema, |
| | promptPermissionsSchema, |
| | memoryPermissionsSchema, |
| | runCodePermissionsSchema, |
| | bookmarkPermissionsSchema, |
| | webSearchPermissionsSchema, |
| | fileSearchPermissionsSchema, |
| | multiConvoPermissionsSchema, |
| | temporaryChatPermissionsSchema, |
| | peoplePickerPermissionsSchema, |
| | fileCitationsPermissionsSchema, |
| | } from './permissions'; |
| |
|
| | |
| | |
| | |
| | export enum SystemRoles { |
| | |
| | |
| | |
| | ADMIN = 'ADMIN', |
| | |
| | |
| | |
| | USER = 'USER', |
| | } |
| |
|
| | export const roleSchema = z.object({ |
| | name: z.string(), |
| | permissions: permissionsSchema, |
| | }); |
| |
|
| | export type TRole = z.infer<typeof roleSchema>; |
| |
|
| | const defaultRolesSchema = z.object({ |
| | [SystemRoles.ADMIN]: roleSchema.extend({ |
| | name: z.literal(SystemRoles.ADMIN), |
| | permissions: permissionsSchema.extend({ |
| | [PermissionTypes.PROMPTS]: promptPermissionsSchema.extend({ |
| | [Permissions.SHARED_GLOBAL]: z.boolean().default(true), |
| | [Permissions.USE]: z.boolean().default(true), |
| | [Permissions.CREATE]: z.boolean().default(true), |
| | |
| | }), |
| | [PermissionTypes.BOOKMARKS]: bookmarkPermissionsSchema.extend({ |
| | [Permissions.USE]: z.boolean().default(true), |
| | }), |
| | [PermissionTypes.MEMORIES]: memoryPermissionsSchema.extend({ |
| | [Permissions.USE]: z.boolean().default(true), |
| | [Permissions.CREATE]: z.boolean().default(true), |
| | [Permissions.UPDATE]: z.boolean().default(true), |
| | [Permissions.READ]: z.boolean().default(true), |
| | [Permissions.OPT_OUT]: z.boolean().default(true), |
| | }), |
| | [PermissionTypes.AGENTS]: agentPermissionsSchema.extend({ |
| | [Permissions.SHARED_GLOBAL]: z.boolean().default(true), |
| | [Permissions.USE]: z.boolean().default(true), |
| | [Permissions.CREATE]: z.boolean().default(true), |
| | |
| | }), |
| | [PermissionTypes.MULTI_CONVO]: multiConvoPermissionsSchema.extend({ |
| | [Permissions.USE]: z.boolean().default(true), |
| | }), |
| | [PermissionTypes.TEMPORARY_CHAT]: temporaryChatPermissionsSchema.extend({ |
| | [Permissions.USE]: z.boolean().default(true), |
| | }), |
| | [PermissionTypes.RUN_CODE]: runCodePermissionsSchema.extend({ |
| | [Permissions.USE]: z.boolean().default(true), |
| | }), |
| | [PermissionTypes.WEB_SEARCH]: webSearchPermissionsSchema.extend({ |
| | [Permissions.USE]: z.boolean().default(true), |
| | }), |
| | [PermissionTypes.PEOPLE_PICKER]: peoplePickerPermissionsSchema.extend({ |
| | [Permissions.VIEW_USERS]: z.boolean().default(true), |
| | [Permissions.VIEW_GROUPS]: z.boolean().default(true), |
| | [Permissions.VIEW_ROLES]: z.boolean().default(true), |
| | }), |
| | [PermissionTypes.MARKETPLACE]: z.object({ |
| | [Permissions.USE]: z.boolean().default(false), |
| | }), |
| | [PermissionTypes.FILE_SEARCH]: fileSearchPermissionsSchema.extend({ |
| | [Permissions.USE]: z.boolean().default(true), |
| | }), |
| | [PermissionTypes.FILE_CITATIONS]: fileCitationsPermissionsSchema.extend({ |
| | [Permissions.USE]: z.boolean().default(true), |
| | }), |
| | }), |
| | }), |
| | [SystemRoles.USER]: roleSchema.extend({ |
| | name: z.literal(SystemRoles.USER), |
| | permissions: permissionsSchema, |
| | }), |
| | }); |
| |
|
| | export const roleDefaults = defaultRolesSchema.parse({ |
| | [SystemRoles.ADMIN]: { |
| | name: SystemRoles.ADMIN, |
| | permissions: { |
| | [PermissionTypes.PROMPTS]: { |
| | [Permissions.SHARED_GLOBAL]: true, |
| | [Permissions.USE]: true, |
| | [Permissions.CREATE]: true, |
| | }, |
| | [PermissionTypes.BOOKMARKS]: { |
| | [Permissions.USE]: true, |
| | }, |
| | [PermissionTypes.MEMORIES]: { |
| | [Permissions.USE]: true, |
| | [Permissions.CREATE]: true, |
| | [Permissions.UPDATE]: true, |
| | [Permissions.READ]: true, |
| | [Permissions.OPT_OUT]: true, |
| | }, |
| | [PermissionTypes.AGENTS]: { |
| | [Permissions.SHARED_GLOBAL]: true, |
| | [Permissions.USE]: true, |
| | [Permissions.CREATE]: true, |
| | }, |
| | [PermissionTypes.MULTI_CONVO]: { |
| | [Permissions.USE]: true, |
| | }, |
| | [PermissionTypes.TEMPORARY_CHAT]: { |
| | [Permissions.USE]: true, |
| | }, |
| | [PermissionTypes.RUN_CODE]: { |
| | [Permissions.USE]: true, |
| | }, |
| | [PermissionTypes.WEB_SEARCH]: { |
| | [Permissions.USE]: true, |
| | }, |
| | [PermissionTypes.PEOPLE_PICKER]: { |
| | [Permissions.VIEW_USERS]: true, |
| | [Permissions.VIEW_GROUPS]: true, |
| | [Permissions.VIEW_ROLES]: true, |
| | }, |
| | [PermissionTypes.MARKETPLACE]: { |
| | [Permissions.USE]: true, |
| | }, |
| | [PermissionTypes.FILE_SEARCH]: { |
| | [Permissions.USE]: true, |
| | }, |
| | [PermissionTypes.FILE_CITATIONS]: { |
| | [Permissions.USE]: true, |
| | }, |
| | }, |
| | }, |
| | [SystemRoles.USER]: { |
| | name: SystemRoles.USER, |
| | permissions: { |
| | [PermissionTypes.PROMPTS]: {}, |
| | [PermissionTypes.BOOKMARKS]: {}, |
| | [PermissionTypes.MEMORIES]: {}, |
| | [PermissionTypes.AGENTS]: {}, |
| | [PermissionTypes.MULTI_CONVO]: {}, |
| | [PermissionTypes.TEMPORARY_CHAT]: {}, |
| | [PermissionTypes.RUN_CODE]: {}, |
| | [PermissionTypes.WEB_SEARCH]: {}, |
| | [PermissionTypes.PEOPLE_PICKER]: { |
| | [Permissions.VIEW_USERS]: false, |
| | [Permissions.VIEW_GROUPS]: false, |
| | [Permissions.VIEW_ROLES]: false, |
| | }, |
| | [PermissionTypes.MARKETPLACE]: { |
| | [Permissions.USE]: false, |
| | }, |
| | [PermissionTypes.FILE_SEARCH]: {}, |
| | [PermissionTypes.FILE_CITATIONS]: {}, |
| | }, |
| | }, |
| | }); |
| |
|