feat(core): mcp server setting (#13630)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* MCP Server integration available in cloud workspaces with a dedicated
settings panel.
* Manage personal access tokens: generate/revoke tokens and view
revealed token.
  * One-click copy of a prefilled server configuration JSON.
  * New query to fetch revealed access tokens.

* **Improvements**
  * Integration list adapts to workspace type (cloud vs. local).
* More reliable token refresh with clearer loading, error and
revalidation states.

* **Localization**
* Added “Copied to clipboard” message and MCP Server name/description
translations.

* **Chores**
  * Updated icon dependency across many packages.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
EYHN
2025-09-24 16:02:47 +08:00
committed by GitHub
parent ca9811792d
commit 2f118206cc
16 changed files with 475 additions and 27 deletions

View File

@@ -50,6 +50,13 @@ export class AccessTokenResolver {
return await this.models.accessToken.list(user.id);
}
@Query(() => [RevealedAccessToken])
async revealedAccessTokens(
@CurrentUser() user: CurrentUser
): Promise<RevealedAccessToken[]> {
return await this.models.accessToken.list(user.id, true);
}
@Mutation(() => RevealedAccessToken)
async generateUserAccessToken(
@CurrentUser() user: CurrentUser,

View File

@@ -15,13 +15,14 @@ export class AccessTokenModel extends BaseModel {
super();
}
async list(userId: string) {
async list(userId: string, revealed: boolean = false) {
return await this.db.accessToken.findMany({
select: {
id: true,
name: true,
createdAt: true,
expiresAt: true,
token: revealed,
},
where: {
userId,

View File

@@ -1596,6 +1596,7 @@ type Query {
"""query workspace embedding status"""
queryWorkspaceEmbeddingStatus(workspaceId: String!): ContextWorkspaceEmbeddingStatus!
revealedAccessTokens: [RevealedAccessToken!]!
"""server config"""
serverConfig: ServerConfigType!