{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/dev.campus.systemische-tools.de\/src\/Domain\/Entity\/ChatSession.php",
"content": "<?php\n\ndeclare(strict_types=1);\n\nnamespace Domain\\Entity;\n\n\/\/ @responsibility: Repräsentiert eine Chat-Session mit ihren Metadaten\n\nuse Domain\\ValueObject\\SessionMetadata;\nuse Domain\\ValueObject\\SessionUuid;\n\nclass ChatSession\n{\n public function __construct(\n private SessionUuid $uuid,\n private SessionMetadata $metadata,\n private ?int $id = null,\n private ?string $sessionToken = null,\n private ?int $userId = null,\n private ?int $personaId = null,\n private ?string $title = null,\n private ?int $authorProfileId = null,\n private ?int $systemPromptId = null,\n private ?\\DateTimeImmutable $createdAt = null,\n private ?\\DateTimeImmutable $updatedAt = null,\n private ?\\DateTimeImmutable $lastActivity = null\n ) {\n $this->createdAt ??= new \\DateTimeImmutable();\n $this->updatedAt ??= new \\DateTimeImmutable();\n $this->lastActivity ??= new \\DateTimeImmutable();\n }\n\n public function getId(): ?int\n {\n return $this->id;\n }\n\n public function getUuid(): string\n {\n return $this->uuid->value();\n }\n\n public function getUuidObject(): SessionUuid\n {\n return $this->uuid;\n }\n\n public function getSessionToken(): ?string\n {\n return $this->sessionToken;\n }\n\n public function getUserId(): ?int\n {\n return $this->userId;\n }\n\n public function getPersonaId(): ?int\n {\n return $this->personaId;\n }\n\n public function getTitle(): ?string\n {\n return $this->title;\n }\n\n public function getModel(): string\n {\n return $this->metadata->getModel();\n }\n\n \/**\n * @return array<string>\n *\/\n public function getCollections(): array\n {\n return $this->metadata->getCollections();\n }\n\n public function getContextLimit(): int\n {\n return $this->metadata->getContextLimit();\n }\n\n public function getTemperature(): float\n {\n return $this->metadata->getTemperature();\n }\n\n public function getMaxTokens(): int\n {\n return $this->metadata->getMaxTokens();\n }\n\n public function getAuthorProfileId(): ?int\n {\n return $this->authorProfileId;\n }\n\n public function getSystemPromptId(): ?int\n {\n return $this->systemPromptId;\n }\n\n public function getCreatedAt(): \\DateTimeImmutable\n {\n return $this->createdAt;\n }\n\n public function getUpdatedAt(): \\DateTimeImmutable\n {\n return $this->updatedAt;\n }\n\n public function getLastActivity(): \\DateTimeImmutable\n {\n return $this->lastActivity;\n }\n\n public function withId(int $id): self\n {\n return new self(\n uuid: $this->uuid,\n metadata: $this->metadata,\n id: $id,\n sessionToken: $this->sessionToken,\n userId: $this->userId,\n personaId: $this->personaId,\n title: $this->title,\n authorProfileId: $this->authorProfileId,\n systemPromptId: $this->systemPromptId,\n createdAt: $this->createdAt,\n updatedAt: $this->updatedAt,\n lastActivity: $this->lastActivity\n );\n }\n\n public function withTitle(string $title): self\n {\n return new self(\n uuid: $this->uuid,\n metadata: $this->metadata,\n id: $this->id,\n sessionToken: $this->sessionToken,\n userId: $this->userId,\n personaId: $this->personaId,\n title: $title,\n authorProfileId: $this->authorProfileId,\n systemPromptId: $this->systemPromptId,\n createdAt: $this->createdAt,\n updatedAt: new \\DateTimeImmutable(),\n lastActivity: new \\DateTimeImmutable()\n );\n }\n\n public function updateSettings(\n string $model,\n array $collections,\n int $contextLimit,\n ?int $authorProfileId,\n float $temperature,\n int $maxTokens\n ): self {\n $newMetadata = SessionMetadata::create(\n model: $model,\n collections: $collections,\n contextLimit: $contextLimit,\n temperature: $temperature,\n maxTokens: $maxTokens\n );\n\n return new self(\n uuid: $this->uuid,\n metadata: $newMetadata,\n id: $this->id,\n sessionToken: $this->sessionToken,\n userId: $this->userId,\n personaId: $this->personaId,\n title: $this->title,\n authorProfileId: $authorProfileId,\n systemPromptId: $this->systemPromptId,\n createdAt: $this->createdAt,\n updatedAt: new \\DateTimeImmutable(),\n lastActivity: new \\DateTimeImmutable()\n );\n }\n\n \/**\n * @return array<string, mixed>\n *\/\n public function toArray(): array\n {\n return [\n 'id' => $this->id,\n 'uuid' => $this->uuid->value(),\n 'session_token' => $this->sessionToken,\n 'user_id' => $this->userId,\n 'persona_id' => $this->personaId,\n 'title' => $this->title,\n 'model' => $this->metadata->getModel(),\n 'collections' => json_encode($this->metadata->getCollections()),\n 'context_limit' => $this->metadata->getContextLimit(),\n 'temperature' => $this->metadata->getTemperature(),\n 'max_tokens' => $this->metadata->getMaxTokens(),\n 'author_profile_id' => $this->authorProfileId,\n 'system_prompt_id' => $this->systemPromptId,\n 'created_at' => $this->createdAt->format('Y-m-d H:i:s'),\n 'updated_at' => $this->updatedAt->format('Y-m-d H:i:s'),\n 'last_activity' => $this->lastActivity->format('Y-m-d H:i:s'),\n ];\n }\n}\n",
"numLines": 214,
"startLine": 1,
"totalLines": 214
}
}
}