feat(city): add airports, ATC agent, luminous signs, and AI model fallback chain
- Add two airports (north/south) with full geometry: runways, taxiways,
aprons, terminals, hangars, stands, and helipads; walkable airport
grounds extend beyond city bounds.
- Introduce ATC AI agent ("Torre de Controle City10") using AI_ATC_MODEL
to generate takeoff clearances; includes dispatch endpoint with
30-second cooldown and deterministic fallback on failure.
- Implement AI model fallback chain: preferred model → AI_FALLBACK_MODEL
before failing, applied in ChatController and PersonTalkController.
- Add luminous sign labels (letreiros) for plazas, beach, food, hospital,
school, city hall, and airports with day/night glow.
- Fix city presence cache: compute is_me per viewer instead of baking
into shared per-second cache to prevent cross-user flag leakage.
- Add tests: AirportTest, CityPresenceTest, SignLabelsTest, and
PersonTalkTest fallback model retry scenario.
This commit is contained in:
@@ -84,6 +84,9 @@ return [
|
||||
'nvidia/nemotron-3.5-lightning:free',
|
||||
'liquid/lfm-2.5-2.6b:free',
|
||||
'openrouter/free',
|
||||
// Owner-approved exception: paid but near-zero cost
|
||||
// (1.4e-7/1k tokens), verified live on 2026-11-01.
|
||||
'xiaomi/mimo-v2.6-flash',
|
||||
],
|
||||
|
||||
/*
|
||||
@@ -115,6 +118,31 @@ return [
|
||||
|
||||
'character_models' => $parseCharacterModels((string) env('AI_CHARACTER_MODELS', '')),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Air Traffic Control Model (AI_ATC_MODEL)
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Default model used by the airport control tower agent for movement
|
||||
| clearances (takeoff authorizations). Must stay inside allowed_models.
|
||||
|
|
||||
*/
|
||||
|
||||
'atc_model' => env('AI_ATC_MODEL', 'poolside/laguna-xs-2.1:free'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Fallback Model (AI_FALLBACK_MODEL)
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Tried whenever the preferred model of a call fails (chain fallback).
|
||||
| Owner-approved paid model with near-zero cost; must stay inside
|
||||
| allowed_models.
|
||||
|
|
||||
*/
|
||||
|
||||
'fallback_model' => env('AI_FALLBACK_MODEL', 'xiaomi/mimo-v2.6-flash'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Default Model
|
||||
|
||||
Reference in New Issue
Block a user