diff --git a/packages/backend/server/src/plugins/copilot/resolver.ts b/packages/backend/server/src/plugins/copilot/resolver.ts index de5cc7e495..fc9c916a77 100644 --- a/packages/backend/server/src/plugins/copilot/resolver.ts +++ b/packages/backend/server/src/plugins/copilot/resolver.ts @@ -280,6 +280,9 @@ class CopilotSessionType { @Field(() => ID) id!: string; + @Field(() => ID, { nullable: true }) + parentSessionId!: string | undefined; + @Field(() => String) promptName!: string; } diff --git a/packages/backend/server/src/plugins/copilot/session.ts b/packages/backend/server/src/plugins/copilot/session.ts index abd58457bc..502c59ab2f 100644 --- a/packages/backend/server/src/plugins/copilot/session.ts +++ b/packages/backend/server/src/plugins/copilot/session.ts @@ -401,7 +401,13 @@ export class ChatSessionService { workspaceId: string, docId?: string, options?: { action?: boolean } - ): Promise> { + ): Promise< + Array<{ + id: string; + parentSessionId?: string; + promptName: string; + }> + > { return await this.db.aiSession .findMany({ where: { @@ -415,12 +421,14 @@ export class ChatSessionService { }, select: { id: true, + parentSessionId: true, promptName: true, }, }) .then(sessions => - sessions.map(({ id, promptName }) => ({ + sessions.map(({ id, parentSessionId, promptName }) => ({ id, + parentSessionId: parentSessionId || undefined, promptName, })) ); diff --git a/packages/backend/server/src/schema.gql b/packages/backend/server/src/schema.gql index 2a47ec46c0..5400fdeaa4 100644 --- a/packages/backend/server/src/schema.gql +++ b/packages/backend/server/src/schema.gql @@ -197,6 +197,7 @@ type CopilotQuota { type CopilotSessionType { id: ID! + parentSessionId: ID promptName: String! } diff --git a/packages/frontend/graphql/src/graphql/copilot-sessions-get.gql b/packages/frontend/graphql/src/graphql/copilot-sessions-get.gql index 05f5fb0a48..dd208e4ec3 100644 --- a/packages/frontend/graphql/src/graphql/copilot-sessions-get.gql +++ b/packages/frontend/graphql/src/graphql/copilot-sessions-get.gql @@ -7,6 +7,7 @@ query getCopilotSessions( copilot(workspaceId: $workspaceId) { sessions(docId: $docId, options: $options) { id + parentSessionId promptName } } diff --git a/packages/frontend/graphql/src/graphql/index.ts b/packages/frontend/graphql/src/graphql/index.ts index 2a7ff9bd3d..23ad7bd5ba 100644 --- a/packages/frontend/graphql/src/graphql/index.ts +++ b/packages/frontend/graphql/src/graphql/index.ts @@ -426,6 +426,7 @@ query getCopilotSessions($workspaceId: String!, $docId: String, $options: QueryC copilot(workspaceId: $workspaceId) { sessions(docId: $docId, options: $options) { id + parentSessionId promptName } } @@ -1700,13 +1701,20 @@ export const getWorkspaceRolePermissionsQuery = { query getWorkspaceRolePermissions($id: String!) { workspaceRolePermissions(id: $id) { permissions { + Workspace_Adminitrators_Manage + Workspace_Blobs_List + Workspace_Blobs_Read + Workspace_Blobs_Write + Workspace_Copilot Workspace_CreateDoc Workspace_Delete Workspace_Organize_Read + Workspace_Payment_Manage Workspace_Properties_Create Workspace_Properties_Delete Workspace_Properties_Read Workspace_Properties_Update + Workspace_Read Workspace_Settings_Read Workspace_Settings_Update Workspace_Sync diff --git a/packages/frontend/graphql/src/graphql/workspace-role-permissions.gql b/packages/frontend/graphql/src/graphql/workspace-role-permissions.gql index e142878db0..637f5b9321 100644 --- a/packages/frontend/graphql/src/graphql/workspace-role-permissions.gql +++ b/packages/frontend/graphql/src/graphql/workspace-role-permissions.gql @@ -1,13 +1,20 @@ query getWorkspaceRolePermissions($id: String!) { workspaceRolePermissions(id: $id) { permissions { + Workspace_Adminitrators_Manage + Workspace_Blobs_List + Workspace_Blobs_Read + Workspace_Blobs_Write + Workspace_Copilot Workspace_CreateDoc Workspace_Delete Workspace_Organize_Read + Workspace_Payment_Manage Workspace_Properties_Create Workspace_Properties_Delete Workspace_Properties_Read Workspace_Properties_Update + Workspace_Read Workspace_Settings_Read Workspace_Settings_Update Workspace_Sync diff --git a/packages/frontend/graphql/src/schema.ts b/packages/frontend/graphql/src/schema.ts index baf159fbd6..4befc74ab5 100644 --- a/packages/frontend/graphql/src/schema.ts +++ b/packages/frontend/graphql/src/schema.ts @@ -82,6 +82,11 @@ export interface Copilot { histories: Array; /** Get the quota of the user in the workspace */ quota: CopilotQuota; + /** + * Get the session id list in the workspace + * @deprecated Use `sessions` instead + */ + sessionIds: Array; /** Get the session list in the workspace */ sessions: Array; workspaceId: Maybe; @@ -97,6 +102,11 @@ export interface CopilotHistoriesArgs { options?: InputMaybe; } +export interface CopilotSessionIdsArgs { + docId?: InputMaybe; + options?: InputMaybe; +} + export interface CopilotSessionsArgs { docId?: InputMaybe; options?: InputMaybe; @@ -262,6 +272,7 @@ export interface CopilotQuota { export interface CopilotSessionType { __typename?: 'CopilotSessionType'; id: Scalars['ID']['output']; + parentSessionId: Maybe; promptName: Scalars['String']['output']; } @@ -389,6 +400,12 @@ export interface DocTypeGrantedUsersListArgs { pagination: PaginationInput; } +export interface DocUpdateBlockedDataType { + __typename?: 'DocUpdateBlockedDataType'; + docId: Scalars['String']['output']; + spaceId: Scalars['String']['output']; +} + export interface EditorType { __typename?: 'EditorType'; avatarUrl: Maybe; @@ -409,6 +426,7 @@ export type ErrorDataUnion = | DocActionDeniedDataType | DocHistoryNotFoundDataType | DocNotFoundDataType + | DocUpdateBlockedDataType | ExpectToGrantDocUserRolesDataType | ExpectToRevokeDocUserRolesDataType | ExpectToUpdateDocUserRoleDataType @@ -416,6 +434,7 @@ export type ErrorDataUnion = | InvalidEmailDataType | InvalidHistoryTimestampDataType | InvalidLicenseUpdateParamsDataType + | InvalidOauthCallbackCodeDataType | InvalidPasswordLengthDataType | InvalidRuntimeConfigTypeDataType | MemberNotFoundInSpaceDataType @@ -452,6 +471,7 @@ export enum ErrorNames { CANNOT_DELETE_OWN_ACCOUNT = 'CANNOT_DELETE_OWN_ACCOUNT', CANT_UPDATE_ONETIME_PAYMENT_SUBSCRIPTION = 'CANT_UPDATE_ONETIME_PAYMENT_SUBSCRIPTION', CAN_NOT_BATCH_GRANT_DOC_OWNER_PERMISSIONS = 'CAN_NOT_BATCH_GRANT_DOC_OWNER_PERMISSIONS', + CAN_NOT_REVOKE_YOURSELF = 'CAN_NOT_REVOKE_YOURSELF', CAPTCHA_VERIFICATION_FAILED = 'CAPTCHA_VERIFICATION_FAILED', COPILOT_ACTION_TAKEN = 'COPILOT_ACTION_TAKEN', COPILOT_CONTEXT_FILE_NOT_SUPPORTED = 'COPILOT_CONTEXT_FILE_NOT_SUPPORTED', @@ -474,6 +494,7 @@ export enum ErrorNames { DOC_HISTORY_NOT_FOUND = 'DOC_HISTORY_NOT_FOUND', DOC_IS_NOT_PUBLIC = 'DOC_IS_NOT_PUBLIC', DOC_NOT_FOUND = 'DOC_NOT_FOUND', + DOC_UPDATE_BLOCKED = 'DOC_UPDATE_BLOCKED', EARLY_ACCESS_REQUIRED = 'EARLY_ACCESS_REQUIRED', EMAIL_ALREADY_USED = 'EMAIL_ALREADY_USED', EMAIL_TOKEN_NOT_FOUND = 'EMAIL_TOKEN_NOT_FOUND', @@ -495,6 +516,7 @@ export enum ErrorNames { INVALID_LICENSE_SESSION_ID = 'INVALID_LICENSE_SESSION_ID', INVALID_LICENSE_TO_ACTIVATE = 'INVALID_LICENSE_TO_ACTIVATE', INVALID_LICENSE_UPDATE_PARAMS = 'INVALID_LICENSE_UPDATE_PARAMS', + INVALID_OAUTH_CALLBACK_CODE = 'INVALID_OAUTH_CALLBACK_CODE', INVALID_OAUTH_CALLBACK_STATE = 'INVALID_OAUTH_CALLBACK_STATE', INVALID_PASSWORD_LENGTH = 'INVALID_PASSWORD_LENGTH', INVALID_RUNTIME_CONFIG_TYPE = 'INVALID_RUNTIME_CONFIG_TYPE', @@ -511,6 +533,7 @@ export enum ErrorNames { NO_COPILOT_PROVIDER_AVAILABLE = 'NO_COPILOT_PROVIDER_AVAILABLE', OAUTH_ACCOUNT_ALREADY_CONNECTED = 'OAUTH_ACCOUNT_ALREADY_CONNECTED', OAUTH_STATE_EXPIRED = 'OAUTH_STATE_EXPIRED', + OWNER_CAN_NOT_LEAVE_WORKSPACE = 'OWNER_CAN_NOT_LEAVE_WORKSPACE', PASSWORD_REQUIRED = 'PASSWORD_REQUIRED', QUERY_TOO_LONG = 'QUERY_TOO_LONG', RUNTIME_CONFIG_NOT_FOUND = 'RUNTIME_CONFIG_NOT_FOUND', @@ -622,6 +645,12 @@ export interface InvalidLicenseUpdateParamsDataType { reason: Scalars['String']['output']; } +export interface InvalidOauthCallbackCodeDataType { + __typename?: 'InvalidOauthCallbackCodeDataType'; + body: Scalars['String']['output']; + status: Scalars['Int']['output']; +} + export interface InvalidPasswordLengthDataType { __typename?: 'InvalidPasswordLengthDataType'; max: Scalars['Int']['output']; @@ -787,7 +816,7 @@ export interface Mutation { /** add a doc to context */ addContextDoc: Array; addWorkspaceFeature: Scalars['Boolean']['output']; - approveMember: Scalars['String']['output']; + approveMember: Scalars['Boolean']['output']; cancelSubscription: SubscriptionType; changeEmail: UserType; changePassword: Scalars['Boolean']['output']; @@ -823,7 +852,7 @@ export interface Mutation { forkCopilotSession: Scalars['String']['output']; generateLicenseKey: Scalars['String']['output']; grantDocUserRoles: Scalars['Boolean']['output']; - grantMember: Scalars['String']['output']; + grantMember: Scalars['Boolean']['output']; invite: Scalars['String']['output']; inviteBatch: Array; leaveWorkspace: Scalars['Boolean']['output']; @@ -1239,15 +1268,16 @@ export interface Query { error: ErrorDataUnion; /** send workspace invitation */ getInviteInfo: InvitationType; - /** Get is admin of workspace */ - isAdmin: Scalars['Boolean']['output']; - /** Get is owner of workspace */ - isOwner: Scalars['Boolean']['output']; /** - * List blobs of workspace - * @deprecated use `workspace.blobs` instead + * Get is admin of workspace + * @deprecated use WorkspaceType[role] instead */ - listBlobs: Array; + isAdmin: Scalars['Boolean']['output']; + /** + * Get is owner of workspace + * @deprecated use WorkspaceType[role] instead + */ + isOwner: Scalars['Boolean']['output']; /** List all copilot prompts */ listCopilotPrompts: Array; prices: Array; @@ -1268,7 +1298,10 @@ export interface Query { usersCount: Scalars['Int']['output']; /** Get workspace by id */ workspace: WorkspaceType; - /** Get workspace role permissions */ + /** + * Get workspace role permissions + * @deprecated use WorkspaceType[permissions] instead + */ workspaceRolePermissions: WorkspaceRolePermissions; /** Get all accessible workspaces for current user */ workspaces: Array; @@ -1290,10 +1323,6 @@ export interface QueryIsOwnerArgs { workspaceId: Scalars['String']['input']; } -export interface QueryListBlobsArgs { - workspaceId: Scalars['String']['input']; -} - export interface QueryUserArgs { email: Scalars['String']['input']; } @@ -1706,13 +1735,20 @@ export interface WorkspacePermissionNotFoundDataType { export interface WorkspacePermissions { __typename?: 'WorkspacePermissions'; + Workspace_Adminitrators_Manage: Scalars['Boolean']['output']; + Workspace_Blobs_List: Scalars['Boolean']['output']; + Workspace_Blobs_Read: Scalars['Boolean']['output']; + Workspace_Blobs_Write: Scalars['Boolean']['output']; + Workspace_Copilot: Scalars['Boolean']['output']; Workspace_CreateDoc: Scalars['Boolean']['output']; Workspace_Delete: Scalars['Boolean']['output']; Workspace_Organize_Read: Scalars['Boolean']['output']; + Workspace_Payment_Manage: Scalars['Boolean']['output']; Workspace_Properties_Create: Scalars['Boolean']['output']; Workspace_Properties_Delete: Scalars['Boolean']['output']; Workspace_Properties_Read: Scalars['Boolean']['output']; Workspace_Properties_Update: Scalars['Boolean']['output']; + Workspace_Read: Scalars['Boolean']['output']; Workspace_Settings_Read: Scalars['Boolean']['output']; Workspace_Settings_Update: Scalars['Boolean']['output']; Workspace_Sync: Scalars['Boolean']['output']; @@ -1785,6 +1821,8 @@ export interface WorkspaceType { owner: UserType; /** Cloud page metadata of workspace */ pageMeta: WorkspacePageMeta; + /** map of action permissions */ + permissions: WorkspacePermissions; /** is Public workspace */ public: Scalars['Boolean']['output']; /** Get public docs of a workspace */ @@ -2247,6 +2285,7 @@ export type GetCopilotSessionsQuery = { sessions: Array<{ __typename?: 'CopilotSessionType'; id: string; + parentSessionId: string | null; promptName: string; }>; }; @@ -3396,13 +3435,20 @@ export type GetWorkspaceRolePermissionsQuery = { __typename?: 'WorkspaceRolePermissions'; permissions: { __typename?: 'WorkspacePermissions'; + Workspace_Adminitrators_Manage: boolean; + Workspace_Blobs_List: boolean; + Workspace_Blobs_Read: boolean; + Workspace_Blobs_Write: boolean; + Workspace_Copilot: boolean; Workspace_CreateDoc: boolean; Workspace_Delete: boolean; Workspace_Organize_Read: boolean; + Workspace_Payment_Manage: boolean; Workspace_Properties_Create: boolean; Workspace_Properties_Delete: boolean; Workspace_Properties_Read: boolean; Workspace_Properties_Update: boolean; + Workspace_Read: boolean; Workspace_Settings_Read: boolean; Workspace_Settings_Update: boolean; Workspace_Sync: boolean; @@ -3420,7 +3466,7 @@ export type ApproveWorkspaceTeamMemberMutationVariables = Exact<{ export type ApproveWorkspaceTeamMemberMutation = { __typename?: 'Mutation'; - approveMember: string; + approveMember: boolean; }; export type GrantWorkspaceTeamMemberMutationVariables = Exact<{ @@ -3431,7 +3477,7 @@ export type GrantWorkspaceTeamMemberMutationVariables = Exact<{ export type GrantWorkspaceTeamMemberMutation = { __typename?: 'Mutation'; - grantMember: string; + grantMember: boolean; }; export type Queries =