logs) { return null; } return collect(json_decode($this->logs))->where('name', $name)->first()?->output ?? null; } public function addLogEntry(string $message, string $type = 'stdout', bool $hidden = false) { if ($type === 'error') { $type = 'stderr'; } $message = str($message)->trim(); if ($message->startsWith('╔')) { $message = "\n" . $message; } $newLogEntry = [ 'command' => null, 'output' => remove_iip($message), 'type' => $type, 'timestamp' => Carbon::now('UTC'), 'hidden' => $hidden, 'batch' => 1, ]; if ($this->logs) { $previousLogs = json_decode($this->logs, associative: true, flags: JSON_THROW_ON_ERROR); $newLogEntry['order'] = count($previousLogs) + 1; $previousLogs[] = $newLogEntry; $this->update([ 'logs' => json_encode($previousLogs, flags: JSON_THROW_ON_ERROR), ]); } else { $this->update([ 'logs' => json_encode([$newLogEntry], flags: JSON_THROW_ON_ERROR), ]); } } }