Files
Juan DenisandClaude Opus 5 cc72494d59 refactor(gui): route agent commands through the SDK, and declare them all
serverkit-gui called the agent registry directly, so its manifest permissions
were decoration — the install dialog said "screenshot and capabilities" while
/synthetic also asked for system:info and system:processes, neither declared.
Going through plugins_sdk.agents enforces the declaration, so the first thing
the retrofit needed was for the manifest to tell the truth: all four actions
are now declared, in both permissions and requires_agent_actions.

Per-endpoint behaviour is deliberately unchanged. /capabilities still answers
200 with the synthetic fallback when the agent can't do it, /frame still 502s a
failed capture and 503s an offline agent.

One case needed care. declared_permissions() reads the manifest captured in the
database at install time, not plugin.json on disk, so an install predating this
lists only the two gui actions and would have started 403-ing on /synthetic.
That endpoint exists to render something for a host with no display, and it
already degrades when the agent won't answer — so a permission this plugin
hasn't been granted now lands in the same place, with a log line naming the
fix. An older install keeps working with less detail instead of breaking, and
regains it on update. There is a test for exactly that install.

Two things improve for free: a handler failure arriving inside a
transport-successful reply now reports the agent's real error instead of the
vague "agent returned no frame", and a non-dict payload can no longer crash the
capabilities handler.

The registry index still advertises the published 0.1.0-beta.1 zip and its
sha256, so it is left alone — permissions there move when the release is cut.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 14:19:06 -04:00

35 lines
1.0 KiB
JSON

{
"name": "serverkit-gui",
"display_name": "ServerKit Agent GUI",
"version": "0.1.0",
"description": "Agent-powered desktop view for managed servers. Streams live Windows/Linux screenshots when available, with a synthetic desktop fallback for headless hosts.",
"author": "Juan Denis",
"homepage": "https://github.com/jhd3197/serverkit-gui",
"repository": "https://github.com/jhd3197/serverkit-gui",
"license": "MIT",
"category": "monitoring",
"entry_point": "blueprint:gui_bp",
"url_prefix": "/api/v1/server-gui",
"frontend_entry": "components/ServerGui.jsx",
"requires_agent_actions": [
"gui:screenshot",
"gui:capabilities",
"system:info",
"system:processes"
],
"minimum_agent_version": "0.4.0",
"permissions": [
"agent.command:gui:screenshot",
"agent.command:gui:capabilities",
"agent.command:system:info",
"agent.command:system:processes"
],
"contributions": {
"widgets": [
{
"slot": "global",
"component": "default"
}
]
}
}