{
"tool_response": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Domain\/Entity\/TaskResult.php",
"oldString": " \/\/ Getters\n public function getId(): ?int\n {\n return $this->id;\n }\n\n public function getTaskId(): int\n {\n return $this->taskId;\n }\n\n public function getAssignmentId(): ?int\n {\n return $this->assignmentId;\n }\n\n public function getExecutor(): string\n {\n return $this->executor;\n }\n\n public function getExecutorType(): AssigneeType\n {\n return $this->executorType;\n }\n\n public function getModelName(): ?string\n {\n return $this->modelName;\n }\n\n public function getRequest(): ?string\n {\n return $this->request;\n }\n\n public function getResponse(): ?string\n {\n return $this->response;\n }\n\n public function getRequestTimestamp(): \\DateTimeImmutable\n {\n return $this->requestTimestamp;\n }\n\n public function getResponseTimestamp(): ?\\DateTimeImmutable\n {\n return $this->responseTimestamp;\n }\n\n public function getDurationMs(): ?int\n {\n return $this->durationMs;\n }\n\n public function getTokensInput(): ?int\n {\n return $this->tokensInput;\n }\n\n public function getTokensOutput(): ?int\n {\n return $this->tokensOutput;\n }\n\n public function getTokensTotal(): ?int\n {\n return $this->tokensTotal;\n }\n\n public function getCostUsd(): ?float\n {\n return $this->costUsd;\n }\n\n public function getStatus(): string\n {\n return $this->status;\n }\n\n public function getErrorMessage(): ?string\n {\n return $this->errorMessage;\n }\n\n public function getCreatedAt(): \\DateTimeImmutable\n {\n return $this->createdAt;\n }\n\n \/\/ Setters\n public function setId(int $id): self\n {\n $this->id = $id;\n\n return $this;\n }\n\n public function setTaskId(int $taskId): self\n {\n $this->taskId = $taskId;\n\n return $this;\n }\n\n public function setAssignmentId(?int $assignmentId): self\n {\n $this->assignmentId = $assignmentId;\n\n return $this;\n }\n\n public function setExecutor(string $executor): self\n {\n $this->executor = $executor;\n\n return $this;\n }\n\n public function setExecutorType(AssigneeType $executorType): self\n {\n $this->executorType = $executorType;\n\n return $this;\n }\n\n public function setModelName(?string $modelName): self\n {\n $this->modelName = $modelName;\n\n return $this;\n }\n\n public function setRequest(?string $request): self\n {\n $this->request = $request;\n\n return $this;\n }\n\n public function setResponse(?string $response): self\n {\n $this->response = $response;\n $this->responseTimestamp = new \\DateTimeImmutable();\n $this->calculateDuration();\n\n return $this;\n }\n\n public function setRequestTimestamp(\\DateTimeImmutable $requestTimestamp): self\n {\n $this->requestTimestamp = $requestTimestamp;\n\n return $this;\n }\n\n public function setResponseTimestamp(?\\DateTimeImmutable $responseTimestamp): self\n {\n $this->responseTimestamp = $responseTimestamp;\n $this->calculateDuration();\n\n return $this;\n }\n\n public function setDurationMs(?int $durationMs): self\n {\n $this->durationMs = $durationMs;\n\n return $this;\n }\n\n public function setTokensInput(?int $tokensInput): self\n {\n $this->tokensInput = $tokensInput;\n $this->calculateTotalTokens();\n\n return $this;\n }\n\n public function setTokensOutput(?int $tokensOutput): self\n {\n $this->tokensOutput = $tokensOutput;\n $this->calculateTotalTokens();\n\n return $this;\n }\n\n public function setTokensTotal(?int $tokensTotal): self\n {\n $this->tokensTotal = $tokensTotal;\n\n return $this;\n }\n\n public function setCostUsd(?float $costUsd): self\n {\n $this->costUsd = $costUsd;\n\n return $this;\n }\n\n public function setStatus(string $status): self\n {\n $this->status = $status;\n\n return $this;\n }\n\n public function setErrorMessage(?string $errorMessage): self\n {\n $this->errorMessage = $errorMessage;\n if ($errorMessage !== null) {\n $this->status = 'error';\n }\n\n return $this;\n }\n\n public function setCreatedAt(\\DateTimeImmutable $createdAt): self\n {\n $this->createdAt = $createdAt;\n\n return $this;\n }\n\n private function calculateDuration(): void\n {\n if ($this->responseTimestamp !== null) {\n $diff = $this->responseTimestamp->getTimestamp() - $this->requestTimestamp->getTimestamp();\n $this->durationMs = $diff * 1000;\n }\n }\n\n private function calculateTotalTokens(): void\n {\n if ($this->tokensInput !== null && $this->tokensOutput !== null) {\n $this->tokensTotal = $this->tokensInput + $this->tokensOutput;\n }\n }\n\n public function estimateTokens(): void\n {\n if ($this->request !== null) {\n $this->tokensInput = max(1, (int) (strlen($this->request) \/ 4));\n }\n if ($this->response !== null) {\n $this->tokensOutput = max(1, (int) (strlen($this->response) \/ 4));\n }\n $this->calculateTotalTokens();\n }",
"newString": " \/\/ Factory Methods\n public static function builder(int $taskId, string $executor, AssigneeType $executorType): TaskResultBuilder\n {\n return new TaskResultBuilder($taskId, $executor, $executorType);\n }\n\n \/\/ Getters - Only for necessary access\n public function id(): ?int\n {\n return $this->id;\n }\n\n public function taskId(): int\n {\n return $this->taskId;\n }\n\n public function assignmentId(): ?int\n {\n return $this->assignmentId;\n }\n\n public function executor(): string\n {\n return $this->executor;\n }\n\n public function executorType(): AssigneeType\n {\n return $this->executorType;\n }\n\n public function modelName(): ?string\n {\n return $this->modelName;\n }\n\n public function request(): ?string\n {\n return $this->request;\n }\n\n public function response(): ?string\n {\n return $this->response;\n }\n\n public function duration(): ExecutionDuration\n {\n return $this->duration;\n }\n\n public function metrics(): ExecutionMetrics\n {\n return $this->metrics;\n }\n\n public function status(): ResultStatus\n {\n return $this->status;\n }\n\n public function errorMessage(): ?string\n {\n return $this->errorMessage;\n }\n\n public function createdAt(): \\DateTimeImmutable\n {\n return $this->createdAt;\n }\n\n \/\/ Setter only for infrastructure (persistence)\n public function setId(int $id): void\n {\n $this->id = $id;\n }\n\n \/\/ Domain Logic\n public function isSuccess(): bool\n {\n return $this->status === ResultStatus::SUCCESS;\n }\n\n public function hasError(): bool\n {\n return $this->status === ResultStatus::ERROR;\n }\n\n public function hasModel(): bool\n {\n return $this->modelName !== null;\n }\n\n public function summary(): string\n {\n $parts = [\n $this->executor,\n $this->status->label(),\n ];\n\n if ($this->modelName !== null) {\n $parts[] = \"({$this->modelName})\";\n }\n\n return implode(' - ', $parts);\n }\n\n \/\/ Legacy getters for backward compatibility (deprecated)\n public function getId(): ?int\n {\n return $this->id;\n }\n\n public function getTaskId(): int\n {\n return $this->taskId;\n }\n\n public function getAssignmentId(): ?int\n {\n return $this->assignmentId;\n }\n\n public function getExecutor(): string\n {\n return $this->executor;\n }\n\n public function getExecutorType(): AssigneeType\n {\n return $this->executorType;\n }\n\n public function getModelName(): ?string\n {\n return $this->modelName;\n }\n\n public function getRequest(): ?string\n {\n return $this->request;\n }\n\n public function getResponse(): ?string\n {\n return $this->response;\n }\n\n public function getRequestTimestamp(): \\DateTimeImmutable\n {\n return $this->duration->requestedAt();\n }\n\n public function getResponseTimestamp(): ?\\DateTimeImmutable\n {\n return $this->duration->respondedAt();\n }\n\n public function getDurationMs(): ?int\n {\n return $this->duration->durationMs();\n }\n\n public function getTokensInput(): ?int\n {\n return $this->metrics->tokens()->input();\n }\n\n public function getTokensOutput(): ?int\n {\n return $this->metrics->tokens()->output();\n }\n\n public function getTokensTotal(): ?int\n {\n return $this->metrics->tokens()->total();\n }\n\n public function getCostUsd(): ?float\n {\n return $this->metrics->costUsd();\n }\n\n public function getStatus(): string\n {\n return $this->status->value;\n }\n\n public function getErrorMessage(): ?string\n {\n return $this->errorMessage;\n }\n\n public function getCreatedAt(): \\DateTimeImmutable\n {\n return $this->createdAt;\n }",
"originalFile": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Domain\\Entity;\n\n\/\/ @responsibility: Task-Ergebnis-Entität mit Rich Domain Logic\n\nuse Domain\\ValueObject\\AssigneeType;\nuse Domain\\ValueObject\\ExecutionDuration;\nuse Domain\\ValueObject\\ExecutionMetrics;\nuse Domain\\ValueObject\\ResultStatus;\n\nclass TaskResult\n{\n private ?int $id = null;\n private \\DateTimeImmutable $createdAt;\n\n public function __construct(\n private int $taskId,\n private ?int $assignmentId,\n private string $executor,\n private AssigneeType $executorType,\n private ?string $modelName,\n private ?string $request,\n private ?string $response,\n private ExecutionDuration $duration,\n private ExecutionMetrics $metrics,\n private ResultStatus $status,\n private ?string $errorMessage\n ) {\n $this->createdAt = new \\DateTimeImmutable();\n }\n\n \/\/ Getters\n public function getId(): ?int\n {\n return $this->id;\n }\n\n public function getTaskId(): int\n {\n return $this->taskId;\n }\n\n public function getAssignmentId(): ?int\n {\n return $this->assignmentId;\n }\n\n public function getExecutor(): string\n {\n return $this->executor;\n }\n\n public function getExecutorType(): AssigneeType\n {\n return $this->executorType;\n }\n\n public function getModelName(): ?string\n {\n return $this->modelName;\n }\n\n public function getRequest(): ?string\n {\n return $this->request;\n }\n\n public function getResponse(): ?string\n {\n return $this->response;\n }\n\n public function getRequestTimestamp(): \\DateTimeImmutable\n {\n return $this->requestTimestamp;\n }\n\n public function getResponseTimestamp(): ?\\DateTimeImmutable\n {\n return $this->responseTimestamp;\n }\n\n public function getDurationMs(): ?int\n {\n return $this->durationMs;\n }\n\n public function getTokensInput(): ?int\n {\n return $this->tokensInput;\n }\n\n public function getTokensOutput(): ?int\n {\n return $this->tokensOutput;\n }\n\n public function getTokensTotal(): ?int\n {\n return $this->tokensTotal;\n }\n\n public function getCostUsd(): ?float\n {\n return $this->costUsd;\n }\n\n public function getStatus(): string\n {\n return $this->status;\n }\n\n public function getErrorMessage(): ?string\n {\n return $this->errorMessage;\n }\n\n public function getCreatedAt(): \\DateTimeImmutable\n {\n return $this->createdAt;\n }\n\n \/\/ Setters\n public function setId(int $id): self\n {\n $this->id = $id;\n\n return $this;\n }\n\n public function setTaskId(int $taskId): self\n {\n $this->taskId = $taskId;\n\n return $this;\n }\n\n public function setAssignmentId(?int $assignmentId): self\n {\n $this->assignmentId = $assignmentId;\n\n return $this;\n }\n\n public function setExecutor(string $executor): self\n {\n $this->executor = $executor;\n\n return $this;\n }\n\n public function setExecutorType(AssigneeType $executorType): self\n {\n $this->executorType = $executorType;\n\n return $this;\n }\n\n public function setModelName(?string $modelName): self\n {\n $this->modelName = $modelName;\n\n return $this;\n }\n\n public function setRequest(?string $request): self\n {\n $this->request = $request;\n\n return $this;\n }\n\n public function setResponse(?string $response): self\n {\n $this->response = $response;\n $this->responseTimestamp = new \\DateTimeImmutable();\n $this->calculateDuration();\n\n return $this;\n }\n\n public function setRequestTimestamp(\\DateTimeImmutable $requestTimestamp): self\n {\n $this->requestTimestamp = $requestTimestamp;\n\n return $this;\n }\n\n public function setResponseTimestamp(?\\DateTimeImmutable $responseTimestamp): self\n {\n $this->responseTimestamp = $responseTimestamp;\n $this->calculateDuration();\n\n return $this;\n }\n\n public function setDurationMs(?int $durationMs): self\n {\n $this->durationMs = $durationMs;\n\n return $this;\n }\n\n public function setTokensInput(?int $tokensInput): self\n {\n $this->tokensInput = $tokensInput;\n $this->calculateTotalTokens();\n\n return $this;\n }\n\n public function setTokensOutput(?int $tokensOutput): self\n {\n $this->tokensOutput = $tokensOutput;\n $this->calculateTotalTokens();\n\n return $this;\n }\n\n public function setTokensTotal(?int $tokensTotal): self\n {\n $this->tokensTotal = $tokensTotal;\n\n return $this;\n }\n\n public function setCostUsd(?float $costUsd): self\n {\n $this->costUsd = $costUsd;\n\n return $this;\n }\n\n public function setStatus(string $status): self\n {\n $this->status = $status;\n\n return $this;\n }\n\n public function setErrorMessage(?string $errorMessage): self\n {\n $this->errorMessage = $errorMessage;\n if ($errorMessage !== null) {\n $this->status = 'error';\n }\n\n return $this;\n }\n\n public function setCreatedAt(\\DateTimeImmutable $createdAt): self\n {\n $this->createdAt = $createdAt;\n\n return $this;\n }\n\n private function calculateDuration(): void\n {\n if ($this->responseTimestamp !== null) {\n $diff = $this->responseTimestamp->getTimestamp() - $this->requestTimestamp->getTimestamp();\n $this->durationMs = $diff * 1000;\n }\n }\n\n private function calculateTotalTokens(): void\n {\n if ($this->tokensInput !== null && $this->tokensOutput !== null) {\n $this->tokensTotal = $this->tokensInput + $this->tokensOutput;\n }\n }\n\n public function estimateTokens(): void\n {\n if ($this->request !== null) {\n $this->tokensInput = max(1, (int) (strlen($this->request) \/ 4));\n }\n if ($this->response !== null) {\n $this->tokensOutput = max(1, (int) (strlen($this->response) \/ 4));\n }\n $this->calculateTotalTokens();\n }\n\n public function toArray(): array\n {\n return [\n 'id' => $this->id,\n 'task_id' => $this->taskId,\n 'assignment_id' => $this->assignmentId,\n 'executor' => $this->executor,\n 'executor_type' => $this->executorType->value,\n 'model_name' => $this->modelName,\n 'request' => $this->request,\n 'response' => $this->response,\n 'request_timestamp' => $this->requestTimestamp->format('Y-m-d H:i:s.u'),\n 'response_timestamp' => $this->responseTimestamp?->format('Y-m-d H:i:s.u'),\n 'duration_ms' => $this->durationMs,\n 'tokens_input' => $this->tokensInput,\n 'tokens_output' => $this->tokensOutput,\n 'tokens_total' => $this->tokensTotal,\n 'cost_usd' => $this->costUsd,\n 'status' => $this->status,\n 'error_message' => $this->errorMessage,\n 'created_at' => $this->createdAt->format('Y-m-d H:i:s.u'),\n ];\n }\n\n public static function fromArray(array $data): self\n {\n $result = new self();\n\n if (isset($data['id'])) {\n $result->setId((int) $data['id']);\n }\n if (isset($data['task_id'])) {\n $result->setTaskId((int) $data['task_id']);\n }\n if (isset($data['assignment_id'])) {\n $result->setAssignmentId((int) $data['assignment_id']);\n }\n if (isset($data['executor'])) {\n $result->setExecutor($data['executor']);\n }\n if (isset($data['executor_type'])) {\n $result->executorType = AssigneeType::from($data['executor_type']);\n }\n if (isset($data['model_name'])) {\n $result->setModelName($data['model_name']);\n }\n if (isset($data['request'])) {\n $result->request = $data['request'];\n }\n if (isset($data['response'])) {\n $result->response = $data['response'];\n }\n if (isset($data['request_timestamp'])) {\n $result->setRequestTimestamp(new \\DateTimeImmutable($data['request_timestamp']));\n }\n if (isset($data['response_timestamp'])) {\n $result->setResponseTimestamp(new \\DateTimeImmutable($data['response_timestamp']));\n }\n if (isset($data['duration_ms'])) {\n $result->setDurationMs((int) $data['duration_ms']);\n }\n if (isset($data['tokens_input'])) {\n $result->tokensInput = (int) $data['tokens_input'];\n }\n if (isset($data['tokens_output'])) {\n $result->tokensOutput = (int) $data['tokens_output'];\n }\n if (isset($data['tokens_total'])) {\n $result->tokensTotal = (int) $data['tokens_total'];\n }\n if (isset($data['cost_usd'])) {\n $result->setCostUsd((float) $data['cost_usd']);\n }\n if (isset($data['status'])) {\n $result->status = $data['status'];\n }\n if (isset($data['error_message'])) {\n $result->errorMessage = $data['error_message'];\n }\n if (isset($data['created_at'])) {\n $result->setCreatedAt(new \\DateTimeImmutable($data['created_at']));\n }\n\n return $result;\n }\n}\n",
"structuredPatch": [
{
"oldStart": 32,
"oldLines": 258,
"newStart": 32,
"newLines": 205,
"lines": [
" $this->createdAt = new \\DateTimeImmutable();",
" }",
" ",
"- \/\/ Getters",
"- public function getId(): ?int",
"+ \/\/ Factory Methods",
"+ public static function builder(int $taskId, string $executor, AssigneeType $executorType): TaskResultBuilder",
" {",
"+ return new TaskResultBuilder($taskId, $executor, $executorType);",
"+ }",
"+",
"+ \/\/ Getters - Only for necessary access",
"+ public function id(): ?int",
"+ {",
" return $this->id;",
" }",
" ",
"- public function getTaskId(): int",
"+ public function taskId(): int",
" {",
" return $this->taskId;",
" }",
" ",
"- public function getAssignmentId(): ?int",
"+ public function assignmentId(): ?int",
" {",
" return $this->assignmentId;",
" }",
" ",
"- public function getExecutor(): string",
"+ public function executor(): string",
" {",
" return $this->executor;",
" }",
" ",
"- public function getExecutorType(): AssigneeType",
"+ public function executorType(): AssigneeType",
" {",
" return $this->executorType;",
" }",
" ",
"- public function getModelName(): ?string",
"+ public function modelName(): ?string",
" {",
" return $this->modelName;",
" }",
" ",
"- public function getRequest(): ?string",
"+ public function request(): ?string",
" {",
" return $this->request;",
" }",
" ",
"- public function getResponse(): ?string",
"+ public function response(): ?string",
" {",
" return $this->response;",
" }",
" ",
"- public function getRequestTimestamp(): \\DateTimeImmutable",
"+ public function duration(): ExecutionDuration",
" {",
"- return $this->requestTimestamp;",
"+ return $this->duration;",
" }",
" ",
"- public function getResponseTimestamp(): ?\\DateTimeImmutable",
"+ public function metrics(): ExecutionMetrics",
" {",
"- return $this->responseTimestamp;",
"+ return $this->metrics;",
" }",
" ",
"- public function getDurationMs(): ?int",
"+ public function status(): ResultStatus",
" {",
"- return $this->durationMs;",
"+ return $this->status;",
" }",
" ",
"- public function getTokensInput(): ?int",
"+ public function errorMessage(): ?string",
" {",
"- return $this->tokensInput;",
"+ return $this->errorMessage;",
" }",
" ",
"- public function getTokensOutput(): ?int",
"+ public function createdAt(): \\DateTimeImmutable",
" {",
"- return $this->tokensOutput;",
"+ return $this->createdAt;",
" }",
" ",
"- public function getTokensTotal(): ?int",
"+ \/\/ Setter only for infrastructure (persistence)",
"+ public function setId(int $id): void",
" {",
"- return $this->tokensTotal;",
"+ $this->id = $id;",
" }",
" ",
"- public function getCostUsd(): ?float",
"+ \/\/ Domain Logic",
"+ public function isSuccess(): bool",
" {",
"- return $this->costUsd;",
"+ return $this->status === ResultStatus::SUCCESS;",
" }",
" ",
"- public function getStatus(): string",
"+ public function hasError(): bool",
" {",
"- return $this->status;",
"+ return $this->status === ResultStatus::ERROR;",
" }",
" ",
"- public function getErrorMessage(): ?string",
"+ public function hasModel(): bool",
" {",
"- return $this->errorMessage;",
"+ return $this->modelName !== null;",
" }",
" ",
"- public function getCreatedAt(): \\DateTimeImmutable",
"+ public function summary(): string",
" {",
"- return $this->createdAt;",
"- }",
"+ $parts = [",
"+ $this->executor,",
"+ $this->status->label(),",
"+ ];",
" ",
"- \/\/ Setters",
"- public function setId(int $id): self",
"- {",
"- $this->id = $id;",
"+ if ($this->modelName !== null) {",
"+ $parts[] = \"({$this->modelName})\";",
"+ }",
" ",
"- return $this;",
"+ return implode(' - ', $parts);",
" }",
" ",
"- public function setTaskId(int $taskId): self",
"+ \/\/ Legacy getters for backward compatibility (deprecated)",
"+ public function getId(): ?int",
" {",
"- $this->taskId = $taskId;",
"-",
"- return $this;",
"+ return $this->id;",
" }",
" ",
"- public function setAssignmentId(?int $assignmentId): self",
"+ public function getTaskId(): int",
" {",
"- $this->assignmentId = $assignmentId;",
"-",
"- return $this;",
"+ return $this->taskId;",
" }",
" ",
"- public function setExecutor(string $executor): self",
"+ public function getAssignmentId(): ?int",
" {",
"- $this->executor = $executor;",
"-",
"- return $this;",
"+ return $this->assignmentId;",
" }",
" ",
"- public function setExecutorType(AssigneeType $executorType): self",
"+ public function getExecutor(): string",
" {",
"- $this->executorType = $executorType;",
"-",
"- return $this;",
"+ return $this->executor;",
" }",
" ",
"- public function setModelName(?string $modelName): self",
"+ public function getExecutorType(): AssigneeType",
" {",
"- $this->modelName = $modelName;",
"-",
"- return $this;",
"+ return $this->executorType;",
" }",
" ",
"- public function setRequest(?string $request): self",
"+ public function getModelName(): ?string",
" {",
"- $this->request = $request;",
"-",
"- return $this;",
"+ return $this->modelName;",
" }",
" ",
"- public function setResponse(?string $response): self",
"+ public function getRequest(): ?string",
" {",
"- $this->response = $response;",
"- $this->responseTimestamp = new \\DateTimeImmutable();",
"- $this->calculateDuration();",
"-",
"- return $this;",
"+ return $this->request;",
" }",
" ",
"- public function setRequestTimestamp(\\DateTimeImmutable $requestTimestamp): self",
"+ public function getResponse(): ?string",
" {",
"- $this->requestTimestamp = $requestTimestamp;",
"-",
"- return $this;",
"+ return $this->response;",
" }",
" ",
"- public function setResponseTimestamp(?\\DateTimeImmutable $responseTimestamp): self",
"+ public function getRequestTimestamp(): \\DateTimeImmutable",
" {",
"- $this->responseTimestamp = $responseTimestamp;",
"- $this->calculateDuration();",
"-",
"- return $this;",
"+ return $this->duration->requestedAt();",
" }",
" ",
"- public function setDurationMs(?int $durationMs): self",
"+ public function getResponseTimestamp(): ?\\DateTimeImmutable",
" {",
"- $this->durationMs = $durationMs;",
"-",
"- return $this;",
"+ return $this->duration->respondedAt();",
" }",
" ",
"- public function setTokensInput(?int $tokensInput): self",
"+ public function getDurationMs(): ?int",
" {",
"- $this->tokensInput = $tokensInput;",
"- $this->calculateTotalTokens();",
"-",
"- return $this;",
"+ return $this->duration->durationMs();",
" }",
" ",
"- public function setTokensOutput(?int $tokensOutput): self",
"+ public function getTokensInput(): ?int",
" {",
"- $this->tokensOutput = $tokensOutput;",
"- $this->calculateTotalTokens();",
"-",
"- return $this;",
"+ return $this->metrics->tokens()->input();",
" }",
" ",
"- public function setTokensTotal(?int $tokensTotal): self",
"+ public function getTokensOutput(): ?int",
" {",
"- $this->tokensTotal = $tokensTotal;",
"-",
"- return $this;",
"+ return $this->metrics->tokens()->output();",
" }",
" ",
"- public function setCostUsd(?float $costUsd): self",
"+ public function getTokensTotal(): ?int",
" {",
"- $this->costUsd = $costUsd;",
"-",
"- return $this;",
"+ return $this->metrics->tokens()->total();",
" }",
" ",
"- public function setStatus(string $status): self",
"+ public function getCostUsd(): ?float",
" {",
"- $this->status = $status;",
"-",
"- return $this;",
"+ return $this->metrics->costUsd();",
" }",
" ",
"- public function setErrorMessage(?string $errorMessage): self",
"+ public function getStatus(): string",
" {",
"- $this->errorMessage = $errorMessage;",
"- if ($errorMessage !== null) {",
"- $this->status = 'error';",
"- }",
"-",
"- return $this;",
"+ return $this->status->value;",
" }",
" ",
"- public function setCreatedAt(\\DateTimeImmutable $createdAt): self",
"+ public function getErrorMessage(): ?string",
" {",
"- $this->createdAt = $createdAt;",
"-",
"- return $this;",
"+ return $this->errorMessage;",
" }",
" ",
"- private function calculateDuration(): void",
"+ public function getCreatedAt(): \\DateTimeImmutable",
" {",
"- if ($this->responseTimestamp !== null) {",
"- $diff = $this->responseTimestamp->getTimestamp() - $this->requestTimestamp->getTimestamp();",
"- $this->durationMs = $diff * 1000;",
"- }",
"+ return $this->createdAt;",
" }",
" ",
"- private function calculateTotalTokens(): void",
"- {",
"- if ($this->tokensInput !== null && $this->tokensOutput !== null) {",
"- $this->tokensTotal = $this->tokensInput + $this->tokensOutput;",
"- }",
"- }",
"-",
"- public function estimateTokens(): void",
"- {",
"- if ($this->request !== null) {",
"- $this->tokensInput = max(1, (int) (strlen($this->request) \/ 4));",
"- }",
"- if ($this->response !== null) {",
"- $this->tokensOutput = max(1, (int) (strlen($this->response) \/ 4));",
"- }",
"- $this->calculateTotalTokens();",
"- }",
"-",
" public function toArray(): array",
" {",
" return ["
]
}
],
"userModified": false,
"replaceAll": false
}
}