reset(['editingId', 'name', 'config_yaml']); $this->engine = 'llama.cpp'; $this->modal('config-form')->show(); } public function edit(int $id): void { $config = ServerConfig::where('user_id', auth()->id())->findOrFail($id); $this->editingId = $config->id; $this->name = $config->name; $this->engine = $config->engine; $this->config_yaml = $config->config_yaml; $this->modal('config-form')->show(); } public function save(): void { $validated = $this->validate([ 'name' => ['required', 'string', 'max:128', Rule::unique('server_configs', 'name')->where('user_id', auth()->id())->ignore($this->editingId)], 'engine' => ['required', 'string', 'max:64'], 'config_yaml' => ['nullable', 'string', 'max:65535'], ]); ServerConfig::updateOrCreate( ['id' => $this->editingId, 'user_id' => auth()->id()], $validated ); $this->modal('config-form')->close(); Flux::toast(variant: 'success', text: __('Inference args saved.')); // Config identity is part of the session grouping key — re-summarize // so linked runs regroup immediately. Illuminate\Support\Facades\Artisan::call('festbench:summary'); } public function delete(int $id): void { ServerConfig::where('user_id', auth()->id())->whereKey($id)->firstOrFail()->delete(); Flux::toast(variant: 'success', text: __('Inference args deleted.')); Illuminate\Support\Facades\Artisan::call('festbench:summary'); } public function with(): array { return [ 'configs' => ServerConfig::where('user_id', auth()->id())->orderBy('name')->get(), ]; } }; ?>