add a special token type for MCP

This commit is contained in:
MaysWind
2025-07-07 01:20:38 +08:00
parent fbaf6086e3
commit 0140fc7622
26 changed files with 424 additions and 17 deletions
+5
View File
@@ -106,6 +106,8 @@ import type {
TransactionTemplateInfoResponse
} from '@/models/transaction_template.ts';
import type {
TokenGenerateMCPRequest,
TokenGenerateMCPResponse,
TokenRefreshResponse,
TokenInfoResponse
} from '@/models/token.ts';
@@ -289,6 +291,9 @@ export default {
getTokens: (): ApiResponsePromise<TokenInfoResponse[]> => {
return axios.get<ApiResponse<TokenInfoResponse[]>>('v1/tokens/list.json');
},
generateMCPToken: (req: TokenGenerateMCPRequest): ApiResponsePromise<TokenGenerateMCPResponse> => {
return axios.post<ApiResponse<TokenGenerateMCPResponse>>('v1/tokens/generate/mcp.json', req);
},
revokeToken: ({ tokenId, ignoreError }: { tokenId: string, ignoreError?: boolean }): ApiResponsePromise<boolean> => {
return axios.post<ApiResponse<boolean>>('v1/tokens/revoke.json', {
tokenId: tokenId
+11 -3
View File
@@ -1,6 +1,11 @@
import uaParser from 'ua-parser-js';
import { TOKEN_CLI_USER_AGENT, type TokenInfoResponse, SessionInfo } from '@/models/token.ts';
import {
TOKEN_TYPE_MCP,
TOKEN_CLI_USER_AGENT,
type TokenInfoResponse,
SessionInfo
} from '@/models/token.ts';
interface UserAgentInfo {
readonly device: {
@@ -81,11 +86,14 @@ function parseDeviceInfo(uaInfo: UserAgentInfo): string {
}
export function parseSessionInfo(token: TokenInfoResponse): SessionInfo {
const isCreateForMCP = token.tokenType === TOKEN_TYPE_MCP;
const isCreatedByCli = isSessionUserAgentCreatedByCli(token.userAgent);
const uaInfo = parseUserAgent(token.userAgent);
let deviceType = '';
if (isCreatedByCli) {
if (isCreateForMCP) {
deviceType = 'mcp';
} else if (isCreatedByCli) {
deviceType = 'cli';
} else {
if (uaInfo && uaInfo.device) {
@@ -109,7 +117,7 @@ export function parseSessionInfo(token: TokenInfoResponse): SessionInfo {
token.tokenId,
token.isCurrent,
deviceType,
isCreatedByCli ? token.userAgent : parseDeviceInfo(uaInfo),
isCreateForMCP || isCreatedByCli ? token.userAgent : parseDeviceInfo(uaInfo),
isCreatedByCli,
token.lastSeen
);