docs: name tools and error codes the way the client sees them

Indirect abilities are written lit/<name> (via mcp-adapter-execute-ability) in
guides, descriptions and hints, direct tools lit-<name>; guides use the
client-visible codes (write_failed, partial_write) and say exactly which tools
return a revision_id. ToolNamingTest keeps guides and sources consistent with
Ability::isDirect() and checks the overview's direct-tool list.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01At3V6SjwbMe6eMzVGW3Hs7
This commit is contained in:
2026-09-26 01:28:18 +02:00
co-authored by Claude Opus 5.5
parent b3c9109e47
commit fea75b03d6
19 changed files with 186 additions and 55 deletions
@@ -41,7 +41,7 @@ final class PostDuplicateAbility implements Ability
{
return 'Legt eine Entwurfskopie eines Eintrags an (Inhalt, Felder/Meta, Begriffe, Beitragsbild, Template, '
. 'Divi-Einstellungen). Typischer Ablauf: Kopie bearbeiten, prüfen, dann mit '
. 'lit-post-replace-with-copy ins Original übernehmen – so bleibt die veröffentlichte Seite bis dahin '
. 'lit/post-replace-with-copy ins Original übernehmen – so bleibt die veröffentlichte Seite bis dahin '
. 'unverändert. Die Antwort enthält die rev der Kopie für lit-content-update.';
}
@@ -60,7 +60,7 @@ final class PostReplaceWithCopyAbility implements Ability
public function description(): string
{
return 'Übernimmt Titel, Inhalt, Felder/Meta und Begriffe einer mit lit-post-duplicate erstellten Kopie '
return 'Übernimmt Titel, Inhalt, Felder/Meta und Begriffe einer mit lit/post-duplicate erstellten Kopie '
. 'ins Original. ID, URL, Status und Menüeinträge des Originals bleiben; vorher entsteht eine '
. 'Revision und eine vollständige Sicherung des Originals (im Papierkorb, backup_id), die Kopie kommt '
. 'danach in den Papierkorb. Die Kopie muss Entwurf oder ausstehend sein. rev des Originals aus '
@@ -165,8 +165,8 @@ final class PostReplaceWithCopyAbility implements Ability
if ($copy->post_type !== $original->post_type || $copyOf !== $originalId || $copyId === $originalId) {
return Errors::invalidInput(
'Die Kopie gehört nicht zu diesem Original.',
['copy_id' => sprintf('keine mit lit-post-duplicate erstellte Kopie von %d', $originalId)],
'Kopie mit lit-post-duplicate aus diesem Original erstellen.'
['copy_id' => sprintf('keine mit lit/post-duplicate erstellte Kopie von %d', $originalId)],
'Kopie mit lit/post-duplicate aus diesem Original erstellen.'
);
}
@@ -174,7 +174,7 @@ final class PostReplaceWithCopyAbility implements Ability
return Errors::invalidInput(
sprintf('Die Kopie hat den Status "%s"; übernommen wird nur ein Entwurf.', $copy->post_status),
['copy_id' => 'Kopie muss Entwurf oder ausstehend sein'],
'Mit lit-post-duplicate eine neue Kopie erstellen (bzw. die Kopie in WordPress wiederherstellen).'
'Mit lit/post-duplicate eine neue Kopie erstellen (bzw. die Kopie in WordPress wiederherstellen).'
);
}
@@ -290,9 +290,9 @@ final class PostReplaceWithCopyAbility implements Ability
$backupId
),
'Den Aufruf nicht einfach wiederholen. Zuerst den Stand mit lit-content-get prüfen; Titel, Inhalt '
. 'und Auszug lassen sich mit lit/revision-restore (revision_id) zurückholen, Felder/Meta und '
. 'Begriffe stehen in der Sicherung backup_id (in WordPress aus dem Papierkorb holen). Dem '
. 'Nutzer Bescheid geben.',
. 'und Auszug lassen sich mit lit/revision-restore (revision_id, über '
. 'mcp-adapter-execute-ability) zurückholen, Felder/Meta und Begriffe stehen in der Sicherung '
. 'backup_id (in WordPress aus dem Papierkorb holen). Dem Nutzer Bescheid geben.',
$details
);
}