功能修改
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import type { GamePluginResponse } from "../api/types";
|
||||
|
||||
export type PluginPermission =
|
||||
| "server.create"
|
||||
| "server.read"
|
||||
@@ -7,6 +9,13 @@ export type PluginPermission =
|
||||
| "server.logs.read"
|
||||
| "server.artifacts.read"
|
||||
| "server.artifacts.write"
|
||||
| "server.remote.access"
|
||||
| "server.run.distribution"
|
||||
| "server.dependencies.manage"
|
||||
| "server.client-manager.manage"
|
||||
| "server.game-client.read"
|
||||
| "server.game-client.command"
|
||||
| "server.game-client.maintenance"
|
||||
| "ai.invoke";
|
||||
|
||||
export type PluginBridgeAction =
|
||||
@@ -15,8 +24,56 @@ export type PluginBridgeAction =
|
||||
| "logs.query"
|
||||
| "artifacts.open"
|
||||
| "files.request"
|
||||
| "remote.access.request"
|
||||
| "run.distribution.request"
|
||||
| "dependencies.request"
|
||||
| "logs.backfill.request"
|
||||
| "client-manager.request"
|
||||
| "plugin-lifecycle.request"
|
||||
| "ai.invoke";
|
||||
|
||||
const pluginPermissions: readonly PluginPermission[] = [
|
||||
"server.create",
|
||||
"server.read",
|
||||
"server.lifecycle",
|
||||
"server.files.read",
|
||||
"server.files.write",
|
||||
"server.logs.read",
|
||||
"server.artifacts.read",
|
||||
"server.artifacts.write",
|
||||
"server.remote.access",
|
||||
"server.run.distribution",
|
||||
"server.dependencies.manage",
|
||||
"server.client-manager.manage",
|
||||
"server.game-client.read",
|
||||
"server.game-client.command",
|
||||
"server.game-client.maintenance",
|
||||
"ai.invoke"
|
||||
];
|
||||
|
||||
const pluginBridgeActions: readonly PluginBridgeAction[] = [
|
||||
"server.instances.read",
|
||||
"jobs.dispatch",
|
||||
"logs.query",
|
||||
"artifacts.open",
|
||||
"files.request",
|
||||
"remote.access.request",
|
||||
"run.distribution.request",
|
||||
"dependencies.request",
|
||||
"logs.backfill.request",
|
||||
"client-manager.request",
|
||||
"plugin-lifecycle.request",
|
||||
"ai.invoke"
|
||||
];
|
||||
|
||||
export function isPluginPermission(value: string): value is PluginPermission {
|
||||
return pluginPermissions.includes(value as PluginPermission);
|
||||
}
|
||||
|
||||
export function isPluginBridgeAction(value: string): value is PluginBridgeAction {
|
||||
return pluginBridgeActions.includes(value as PluginBridgeAction);
|
||||
}
|
||||
|
||||
export interface PluginPageContract {
|
||||
key: string;
|
||||
title: string;
|
||||
@@ -33,6 +90,24 @@ export interface PluginBridgeManifestContract {
|
||||
aiPurposes?: string[];
|
||||
}
|
||||
|
||||
export function pluginBridgeManifestContractFromResponse(
|
||||
plugin: Pick<GamePluginResponse, "id" | "declaredPermissions" | "bridgeActions" | "pages" | "aiPurposes">
|
||||
): PluginBridgeManifestContract {
|
||||
return {
|
||||
id: plugin.id,
|
||||
declaredPermissions: plugin.declaredPermissions.filter(isPluginPermission),
|
||||
bridgeActions: plugin.bridgeActions.filter(isPluginBridgeAction),
|
||||
pages: plugin.pages.map((page) => ({
|
||||
key: page.key,
|
||||
title: page.title,
|
||||
path: page.path,
|
||||
permissions: page.permissions.filter(isPluginPermission),
|
||||
bridgeActions: page.bridgeActions?.filter(isPluginBridgeAction)
|
||||
})),
|
||||
aiPurposes: [...plugin.aiPurposes]
|
||||
};
|
||||
}
|
||||
|
||||
export interface PluginBridgeThemeTokens {
|
||||
colorScheme: "light" | "dark";
|
||||
accentColor: string;
|
||||
|
||||
Reference in New Issue
Block a user