Ship SCUM user SQL management page
This commit is contained in:
@@ -11,8 +11,8 @@ import {
|
||||
|
||||
const plugin: PluginBridgeManifestContract = {
|
||||
id: "game.example",
|
||||
declaredPermissions: ["server.read", "server.logs.read", "server.files.read", "server.artifacts.read", "ai.invoke"],
|
||||
bridgeActions: ["server.instances.read", "logs.query", "files.request", "artifacts.open", "ai.invoke"],
|
||||
declaredPermissions: ["server.read", "server.logs.read", "server.files.read", "server.artifacts.read", "server.remote.access", "ai.invoke"],
|
||||
bridgeActions: ["server.instances.read", "logs.query", "files.request", "artifacts.open", "remote.access.request", "ai.invoke"],
|
||||
pages: [
|
||||
{
|
||||
key: "logs",
|
||||
@@ -20,6 +20,13 @@ const plugin: PluginBridgeManifestContract = {
|
||||
path: "/logs",
|
||||
permissions: ["server.logs.read", "server.files.read", "server.artifacts.read", "ai.invoke"],
|
||||
bridgeActions: ["logs.query", "files.request", "artifacts.open", "ai.invoke"]
|
||||
},
|
||||
{
|
||||
key: "remote",
|
||||
title: "Remote",
|
||||
path: "/remote",
|
||||
permissions: ["server.remote.access"],
|
||||
bridgeActions: ["remote.access.request"]
|
||||
}
|
||||
],
|
||||
aiPurposes: ["logs.diagnose"]
|
||||
@@ -110,6 +117,11 @@ describe("plugin bridge host utilities", () => {
|
||||
expect(client.executePluginBridge).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("allows mediated remote SQL execute payloads without direct connection material", () => {
|
||||
const context = createPluginBridgeHostContext({ plugin, routeKey: "remote", serverInstanceId: "server-1", themeTokens: { colorScheme: "dark", accentColor: "#22c55e" } });
|
||||
expect(validateBridgeExecutionRequest(context, { requestId: "sql-1", action: "remote.access.request", payload: { capability: "remote.run.db.sqlite.execute", declarationKey: "sqlite-db", targetKey: "scum-db", idempotencyKey: "sql-1", "input.sqlText": "UPDATE prisoner SET stamina = 855 WHERE id = 'steam-123';" } })).toBeNull();
|
||||
});
|
||||
|
||||
it("dispatches mediated AI requests without provider configuration", async () => {
|
||||
const context = createPluginBridgeHostContext({
|
||||
plugin,
|
||||
|
||||
@@ -110,7 +110,7 @@ export function validateBridgeExecutionRequest(context: PluginBridgeHostContext,
|
||||
return { code: "payload_too_large", message: "bridge payload has too many keys" };
|
||||
}
|
||||
const encodedSize = Object.entries(payload).reduce((sum, [key, value]) => sum + key.length + value.length, 0);
|
||||
if (encodedSize > 4096) {
|
||||
if (encodedSize > 16 * 1024) {
|
||||
return { code: "payload_too_large", message: "bridge payload is too large" };
|
||||
}
|
||||
for (const [key, value] of Object.entries(payload)) {
|
||||
|
||||
Reference in New Issue
Block a user