feat: lit-site-status, Admin-Tab und Admin-Hinweis zeigen Divi-Fähigkeiten mit Zustand, Quelle, Problemen und betroffenen Werkzeugen

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Jan-Niclas Loosen
2026-10-18 22:29:38 +02:00
co-authored by Claude Sonnet 5.5
parent b92545a8fe
commit 2aef6e1154
13 changed files with 831 additions and 31 deletions
+42 -3
View File
@@ -31,8 +31,10 @@ final class SiteStatusAbility implements Ability
{
return 'Überblick: Website, WordPress-Version, eigener Benutzer und Rollen, '
. 'erkannte Integrationen (Divi, Pods, The Events Calendar). '
. 'Bei Divi nennt problems Divi-Stellen, die nach einem Update fehlen oder sich geändert haben, und '
. 'release, ob LIT MCP mit dieser Divi-Version schreiben darf (released, untested, incompatible).';
. 'Bei Divi nennt problems Divi-Stellen, die nach einem Update fehlen oder sich geändert haben, '
. 'release den Gesamtzustand und features je Fähigkeit (z. B. Seiten schreiben) Zustand '
. '(released, untested, incompatible), Quelle (code, database, auto), Probleme und betroffene Werkzeuge. '
. 'Werkzeuge, deren Fähigkeit nicht released ist, lehnen ab; alle anderen Divi-Werkzeuge laufen weiter.';
}
public function inputSchema(): array
@@ -49,12 +51,49 @@ final class SiteStatusAbility implements Ability
'wordpress' => ['type' => 'string'],
'user' => ['type' => 'object'],
'allowed_roles' => ['type' => 'array', 'items' => ['type' => 'string']],
'components' => ['type' => 'array'],
'components' => ['type' => 'array', 'items' => self::componentSchema()],
],
'required' => ['site', 'wordpress', 'user', 'allowed_roles', 'components'],
];
}
/** @return array<string, mixed> */
private static function componentSchema(): array
{
$text = ['type' => 'string'];
return [
'type' => 'object',
'properties' => [
'id' => $text,
'active' => ['type' => 'boolean'],
'version' => ['type' => ['string', 'null']],
'problems' => ['type' => 'array', 'items' => $text],
'release' => ['type' => ['object', 'null']],
'features' => [
'type' => 'array',
'description' => 'Nur bei Divi: Zustand je Fähigkeit.',
'items' => [
'type' => 'object',
'properties' => [
'id' => $text,
'label' => $text,
'state' => ['type' => 'string', 'enum' => ['released', 'untested', 'incompatible']],
'source' => [
'type' => ['string', 'null'],
'description' => 'code, database, auto oder null (nicht nutzbar).',
],
'problems' => ['type' => 'array', 'items' => $text],
'tools' => ['type' => 'array', 'items' => $text],
],
'required' => ['id', 'label', 'state', 'source', 'problems', 'tools'],
],
],
],
'required' => ['id', 'active', 'version', 'problems', 'release'],
];
}
public function annotations(): array
{
return Annotations::read();