Add _meta to CallToolResult (#148)
This commit is contained in:
parent
056c7b6103
commit
7a3b473c40
1 changed files with 26 additions and 10 deletions
|
|
@ -38,14 +38,16 @@ class CallToolResult implements ResultInterface
|
||||||
/**
|
/**
|
||||||
* Create a new CallToolResult.
|
* Create a new CallToolResult.
|
||||||
*
|
*
|
||||||
* @param Content[] $content The content of the tool result
|
* @param Content[] $content The content of the tool result
|
||||||
* @param bool $isError Whether the tool execution resulted in an error. If not set, this is assumed to be false (the call was successful).
|
* @param bool $isError Whether the tool execution resulted in an error. If not set, this is assumed to be false (the call was successful).
|
||||||
* @param mixed[] $structuredContent JSON content for `structuredContent`
|
* @param mixed[] $structuredContent JSON content for `structuredContent`
|
||||||
|
* @param array<string, mixed>|null $meta Optional metadata
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
public readonly array $content,
|
public readonly array $content,
|
||||||
public readonly bool $isError = false,
|
public readonly bool $isError = false,
|
||||||
public readonly ?array $structuredContent = null,
|
public readonly ?array $structuredContent = null,
|
||||||
|
public readonly ?array $meta = null,
|
||||||
) {
|
) {
|
||||||
foreach ($this->content as $item) {
|
foreach ($this->content as $item) {
|
||||||
if (!$item instanceof Content) {
|
if (!$item instanceof Content) {
|
||||||
|
|
@ -57,27 +59,30 @@ class CallToolResult implements ResultInterface
|
||||||
/**
|
/**
|
||||||
* Create a new CallToolResult with success status.
|
* Create a new CallToolResult with success status.
|
||||||
*
|
*
|
||||||
* @param Content[] $content The content of the tool result
|
* @param Content[] $content The content of the tool result
|
||||||
|
* @param array<string, mixed>|null $meta Optional metadata
|
||||||
*/
|
*/
|
||||||
public static function success(array $content): self
|
public static function success(array $content, ?array $meta = null): self
|
||||||
{
|
{
|
||||||
return new self($content, false);
|
return new self($content, false, null, $meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new CallToolResult with error status.
|
* Create a new CallToolResult with error status.
|
||||||
*
|
*
|
||||||
* @param Content[] $content The content of the tool result
|
* @param Content[] $content The content of the tool result
|
||||||
|
* @param array<string, mixed>|null $meta Optional metadata
|
||||||
*/
|
*/
|
||||||
public static function error(array $content): self
|
public static function error(array $content, ?array $meta = null): self
|
||||||
{
|
{
|
||||||
return new self($content, true);
|
return new self($content, true, null, $meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array{
|
* @param array{
|
||||||
* content: array<mixed>,
|
* content: array<mixed>,
|
||||||
* isError?: bool,
|
* isError?: bool,
|
||||||
|
* _meta?: array<string, mixed>,
|
||||||
* } $data
|
* } $data
|
||||||
*/
|
*/
|
||||||
public static function fromArray(array $data): self
|
public static function fromArray(array $data): self
|
||||||
|
|
@ -98,13 +103,20 @@ class CallToolResult implements ResultInterface
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return new self($contents, $data['isError'] ?? false);
|
return new self(
|
||||||
|
$contents,
|
||||||
|
$data['isError'] ?? false,
|
||||||
|
$data['structuredContent'] ?? null,
|
||||||
|
$data['_meta'] ?? null
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array{
|
* @return array{
|
||||||
* content: array<mixed>,
|
* content: array<mixed>,
|
||||||
* isError: bool,
|
* isError: bool,
|
||||||
|
* structuredContent?: array<mixed>,
|
||||||
|
* _meta?: array<string, mixed>,
|
||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
public function jsonSerialize(): array
|
public function jsonSerialize(): array
|
||||||
|
|
@ -118,6 +130,10 @@ class CallToolResult implements ResultInterface
|
||||||
$result['structuredContent'] = $this->structuredContent;
|
$result['structuredContent'] = $this->structuredContent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->meta) {
|
||||||
|
$result['_meta'] = $this->meta;
|
||||||
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue