fix: hide direct-only abilities from the adapter meta-tools

This commit is contained in:
2026-09-26 05:05:48 +02:00
parent 8d0979cb73
commit 648d53cb96
2 changed files with 25 additions and 1 deletions
@@ -69,6 +69,24 @@ final class AbilityRegistrarTest extends TestCase
self::assertFalse($args['meta']['show_in_rest']);
}
public function testDirectOnlyAbilitiesAreNotPublicForTheMetaTools(): void
{
$ability = Mockery::mock(Ability::class);
$ability->allows('name')->andReturn('lit/media-download');
$ability->allows('label')->andReturn('Download');
$ability->allows('description')->andReturn('Download');
$ability->allows('inputSchema')->andReturn(['type' => 'object', 'properties' => []]);
$ability->allows('outputSchema')->andReturn(null);
$ability->allows('annotations')->andReturn(['readonly' => true]);
$ability->allows('isDirect')->andReturn(true);
$args = $this->registrarFor($ability)->argsFor($ability);
self::assertFalse($args['meta']['mcp']['public']);
self::assertSame('tool', $args['meta']['mcp']['type']);
self::assertIsCallable($args['execute_callback']);
}
public function testPermissionDeniedWithoutLitCapability(): void
{
Functions\when('current_user_can')->justReturn(false);