diff --git a/src/Builders/PromptBuilder.php b/src/Builders/PromptBuilder.php index 538392db..b4b189c3 100644 --- a/src/Builders/PromptBuilder.php +++ b/src/Builders/PromptBuilder.php @@ -613,7 +613,12 @@ public function isSupported(?CapabilityEnum $capability = null): bool // If still no capability, infer from output modalities if ($capability === null) { - $capability = $this->inferCapabilityFromOutputModalities(); + try { + $capability = $this->inferCapabilityFromOutputModalities(); + } catch (RuntimeException $e) { + // The output modality maps to no capability, so no model can support it. + return false; + } } } diff --git a/tests/unit/Builders/PromptBuilderTest.php b/tests/unit/Builders/PromptBuilderTest.php index 23a58959..c3b5b899 100644 --- a/tests/unit/Builders/PromptBuilderTest.php +++ b/tests/unit/Builders/PromptBuilderTest.php @@ -3864,6 +3864,19 @@ public function testIsSupportedWithInferredCapability(): void $this->assertTrue($builder->isSupported()); } + /** + * Tests isSupported returns false for an output modality without a matching capability. + * + * @return void + */ + public function testIsSupportedReturnsFalseForUnsupportedOutputModality(): void + { + $builder = new PromptBuilder($this->registry, 'Test prompt'); + $builder->asOutputModalities(ModalityEnum::document()); + + $this->assertFalse($builder->isSupported()); + } + /** * Tests isSupported method with inferred capability from model interfaces. *