diff --git a/config/game.llm.local.json b/config/game.llm.local.json index baadef506f863a7af1163c391a0c06a4c75f04f3..6a2fbe81446d8a682f057529e25f10f9fc5207a2 100644 --- a/config/game.llm.local.json +++ b/config/game.llm.local.json @@ -7,7 +7,7 @@ "survival": true }, "npcs": { - "count": 0 + "count": 6 }, "simulation": { "tick_ms": 500 diff --git a/config/game.local.json b/config/game.local.json index 833ba2a3ebcfa20998ba44e45267b98a63c457f4..22d556ffd1e8181fbdee685fb55a45fd00482289 100644 --- a/config/game.local.json +++ b/config/game.local.json @@ -7,7 +7,7 @@ "survival": true }, "npcs": { - "count": 0 + "count": 6 }, "simulation": { "tick_ms": 500 diff --git a/config/game.modal.a10.local.json b/config/game.modal.a10.local.json index 33653fb60f4777deacf5556c11e22f43b34d4175..5bd69941b8a6d5ba7a508c4534423b88e82139b3 100644 --- a/config/game.modal.a10.local.json +++ b/config/game.modal.a10.local.json @@ -7,7 +7,7 @@ "survival": true }, "npcs": { - "count": 0 + "count": 6 }, "simulation": { "tick_ms": 500 diff --git a/config/game.modal.b200.local.json b/config/game.modal.b200.local.json index b6f20df46dba2f0549e6fecef68f83003c99fdca..c39044ca91b565e8fc153150028a51f9c0fdd642 100644 --- a/config/game.modal.b200.local.json +++ b/config/game.modal.b200.local.json @@ -7,7 +7,7 @@ "survival": true }, "npcs": { - "count": 0 + "count": 6 }, "simulation": { "tick_ms": 500 diff --git a/config/game.modal.local.json b/config/game.modal.local.json index 47d1fdedde969f9301478b6eb37174c72d7d8295..312639e6c8b9cb99ebf5ac75fee85369c6c80315 100644 --- a/config/game.modal.local.json +++ b/config/game.modal.local.json @@ -7,7 +7,7 @@ "survival": true }, "npcs": { - "count": 0 + "count": 6 }, "simulation": { "tick_ms": 500 diff --git a/config/game.modal.t4.local.json b/config/game.modal.t4.local.json index 43b5f7cb9a423299470795eec40bb97255dc62f5..d5284aed8a67385a45afaf50eb1d56749622744f 100644 --- a/config/game.modal.t4.local.json +++ b/config/game.modal.t4.local.json @@ -7,7 +7,7 @@ "survival": true }, "npcs": { - "count": 0 + "count": 6 }, "simulation": { "tick_ms": 500 diff --git a/config/model_profiles.json b/config/model_profiles.json new file mode 100644 index 0000000000000000000000000000000000000000..cecf5aaf3d76c892f99dae54ab2641071a48f09a --- /dev/null +++ b/config/model_profiles.json @@ -0,0 +1,14 @@ +{ + "profiles": [ + { + "id": "default", + "label": "Default NPC model", + "connector_id": null + }, + { + "id": "qwen", + "label": "Qwen country connector", + "connector_id": "qwen" + } + ] +} diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index a3351004bb3f1fd29e95760d7c2f54f8da1b458e..ac5a67f36bf0e0c9cc140717a64375022a155f6f 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,8 +1,6 @@ import { AgentPanel } from "./components/AgentPanel"; -import { ChaosDock } from "./components/ChaosDock"; import { EventFeedPanel } from "./components/EventFeedPanel"; import { GameOverOverlay } from "./components/GameOverOverlay"; -import { OverseerPanel } from "./components/OverseerPanel"; import { ScoreboardHeader } from "./components/ScoreboardHeader"; import { SimulationControls } from "./components/SimulationControls"; import { StatusToasts } from "./components/StatusToasts"; @@ -23,18 +21,14 @@ export function App() { - - { @@ -45,23 +39,6 @@ export function App() { }} /> - { - void simulation.runChaosAction(action); - }} - onCommandChange={simulation.setGodCommand} - onSubmitCommand={(event) => { - void simulation.runGodCommand(event); - }} - /> - { throw new ApiResponseError(`World tick failed: ${response.status}`, response.status); } } - -export type GodCommandResult = { - source?: string; - queued?: boolean; - applies_on_tick?: number; - summary: string; - applied: string[]; - snapshot?: WorldSnapshot; -}; - -export async function sendGodCommand(command: string): Promise { - const response = await fetch(`${API_BASE}/god-command`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ command }), - }); - if (!response.ok) { - throw new ApiResponseError(`God command failed: ${response.status}`, response.status); - } - return (await response.json()) as GodCommandResult; -} - -export type ChaosActionResult = { - action: string; - queued?: boolean; - applies_on_tick?: number; - applied: string[]; - summary: string; - snapshot?: WorldSnapshot; -}; - -export async function sendChaosAction(action: string): Promise { - const response = await fetch(`${API_BASE}/chaos`, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ action }), - }); - if (!response.ok) { - let message = `Chaos action failed: ${response.status}`; - try { - const body = (await response.json()) as { message?: string }; - if (body.message) { - message = body.message; - } - } catch { - // keep the generic message - } - throw new ApiResponseError(message, response.status); - } - return (await response.json()) as ChaosActionResult; -} diff --git a/frontend/src/components/AgentPanel.tsx b/frontend/src/components/AgentPanel.tsx index 0cf27afd4aebaad2f2cc87240bceef6df2759680..1f19597fa4dbe14e89dfa811debc9dc1a545a21b 100644 --- a/frontend/src/components/AgentPanel.tsx +++ b/frontend/src/components/AgentPanel.tsx @@ -34,7 +34,9 @@ export function AgentPanel({ } const selectedName = entity?.label ?? "No NPC"; - const selectedRole = entity?.role ?? "world"; + const selectedRole = entity + ? [entity.country_id, entity.special_status ?? entity.role].filter(Boolean).join(" / ") + : "world"; return (