- Core engine: simulator, game mechanics, triggers (138 tests) - Fog-of-war per-player state tracking - Meeting flow: interrupt, discussion, voting, consolidation - Prompt assembler with strategy injection tiers - LLM client with fallbacks for models without JSON/system support - Prompt templates: action, discussion, voting, reflection - Full integration in main.py orchestrator - Verified working with free OpenRouter models (Gemma)
481 lines
12 KiB
JSON
481 lines
12 KiB
JSON
{
|
|
"rooms": [
|
|
{
|
|
"id": "cafeteria",
|
|
"name": "Cafeteria",
|
|
"x": 0,
|
|
"y": 0,
|
|
"tasks": [
|
|
{
|
|
"id": "empty_garbage_cafe",
|
|
"name": "Empty Garbage",
|
|
"duration": 3.0
|
|
},
|
|
{
|
|
"id": "download_cafe",
|
|
"name": "Download Data",
|
|
"duration": 8.0
|
|
},
|
|
{
|
|
"id": "fix_wiring_cafe",
|
|
"name": "Fix Wiring",
|
|
"duration": 3.0
|
|
}
|
|
],
|
|
"vent": null
|
|
},
|
|
{
|
|
"id": "weapons",
|
|
"name": "Weapons",
|
|
"x": 5,
|
|
"y": -3,
|
|
"tasks": [
|
|
{
|
|
"id": "clear_asteroids",
|
|
"name": "Clear Asteroids",
|
|
"duration": 10.0
|
|
}
|
|
],
|
|
"vent": {
|
|
"id": "vent_weapons",
|
|
"connects_to": [
|
|
"vent_nav"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "navigation",
|
|
"name": "Navigation",
|
|
"x": 10,
|
|
"y": -3,
|
|
"tasks": [
|
|
{
|
|
"id": "chart_course",
|
|
"name": "Chart Course",
|
|
"duration": 3.0
|
|
},
|
|
{
|
|
"id": "stabilize_steering",
|
|
"name": "Stabilize Steering",
|
|
"duration": 5.0
|
|
}
|
|
],
|
|
"vent": {
|
|
"id": "vent_nav",
|
|
"connects_to": [
|
|
"vent_weapons",
|
|
"vent_shields"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "o2",
|
|
"name": "O2",
|
|
"x": 7,
|
|
"y": 0,
|
|
"tasks": [
|
|
{
|
|
"id": "clean_filter",
|
|
"name": "Clean O2 Filter",
|
|
"duration": 4.0
|
|
},
|
|
{
|
|
"id": "empty_garbage_o2",
|
|
"name": "Empty Garbage",
|
|
"duration": 3.0
|
|
}
|
|
],
|
|
"vent": null
|
|
},
|
|
{
|
|
"id": "admin",
|
|
"name": "Admin",
|
|
"x": 3,
|
|
"y": 3,
|
|
"tasks": [
|
|
{
|
|
"id": "swipe_card",
|
|
"name": "Swipe Card",
|
|
"duration": 5.0
|
|
},
|
|
{
|
|
"id": "upload_data",
|
|
"name": "Upload Data",
|
|
"duration": 8.0
|
|
}
|
|
],
|
|
"vent": {
|
|
"id": "vent_admin",
|
|
"connects_to": [
|
|
"vent_cafe_hall"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "storage",
|
|
"name": "Storage",
|
|
"x": 0,
|
|
"y": 6,
|
|
"tasks": [
|
|
{
|
|
"id": "fuel_engines",
|
|
"name": "Fuel Engines",
|
|
"duration": 4.0
|
|
},
|
|
{
|
|
"id": "empty_garbage_storage",
|
|
"name": "Empty Garbage",
|
|
"duration": 3.0
|
|
}
|
|
],
|
|
"vent": null
|
|
},
|
|
{
|
|
"id": "communications",
|
|
"name": "Communications",
|
|
"x": 5,
|
|
"y": 6,
|
|
"tasks": [
|
|
{
|
|
"id": "download_comms",
|
|
"name": "Download Data",
|
|
"duration": 8.0
|
|
}
|
|
],
|
|
"vent": null
|
|
},
|
|
{
|
|
"id": "shields",
|
|
"name": "Shields",
|
|
"x": 8,
|
|
"y": 5,
|
|
"tasks": [
|
|
{
|
|
"id": "prime_shields",
|
|
"name": "Prime Shields",
|
|
"duration": 5.0
|
|
}
|
|
],
|
|
"vent": {
|
|
"id": "vent_shields",
|
|
"connects_to": [
|
|
"vent_nav"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "electrical",
|
|
"name": "Electrical",
|
|
"x": -3,
|
|
"y": 6,
|
|
"tasks": [
|
|
{
|
|
"id": "calibrate_distributor",
|
|
"name": "Calibrate Distributor",
|
|
"duration": 6.0
|
|
},
|
|
{
|
|
"id": "download_elec",
|
|
"name": "Download Data",
|
|
"duration": 8.0
|
|
},
|
|
{
|
|
"id": "fix_wiring_elec",
|
|
"name": "Fix Wiring",
|
|
"duration": 3.0
|
|
}
|
|
],
|
|
"vent": {
|
|
"id": "vent_elec",
|
|
"connects_to": [
|
|
"vent_security",
|
|
"vent_medbay"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "lower_engine",
|
|
"name": "Lower Engine",
|
|
"x": -6,
|
|
"y": 4,
|
|
"tasks": [
|
|
{
|
|
"id": "align_lower",
|
|
"name": "Align Engine Output",
|
|
"duration": 4.0
|
|
},
|
|
{
|
|
"id": "fuel_lower",
|
|
"name": "Fuel Engines",
|
|
"duration": 4.0
|
|
}
|
|
],
|
|
"vent": {
|
|
"id": "vent_lower",
|
|
"connects_to": [
|
|
"vent_reactor"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "security",
|
|
"name": "Security",
|
|
"x": -5,
|
|
"y": 1,
|
|
"tasks": [],
|
|
"vent": {
|
|
"id": "vent_security",
|
|
"connects_to": [
|
|
"vent_medbay",
|
|
"vent_elec"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "reactor",
|
|
"name": "Reactor",
|
|
"x": -8,
|
|
"y": 0,
|
|
"tasks": [
|
|
{
|
|
"id": "start_reactor",
|
|
"name": "Start Reactor",
|
|
"duration": 15.0
|
|
},
|
|
{
|
|
"id": "unlock_manifolds",
|
|
"name": "Unlock Manifolds",
|
|
"duration": 5.0
|
|
}
|
|
],
|
|
"vent": {
|
|
"id": "vent_reactor",
|
|
"connects_to": [
|
|
"vent_upper",
|
|
"vent_lower"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "upper_engine",
|
|
"name": "Upper Engine",
|
|
"x": -6,
|
|
"y": -2,
|
|
"tasks": [
|
|
{
|
|
"id": "align_upper",
|
|
"name": "Align Engine Output",
|
|
"duration": 4.0
|
|
}
|
|
],
|
|
"vent": {
|
|
"id": "vent_upper",
|
|
"connects_to": [
|
|
"vent_reactor"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"id": "medbay",
|
|
"name": "MedBay",
|
|
"x": -3,
|
|
"y": -2,
|
|
"tasks": [
|
|
{
|
|
"id": "submit_scan",
|
|
"name": "Submit Scan",
|
|
"duration": 10.0
|
|
},
|
|
{
|
|
"id": "inspect_sample",
|
|
"name": "Inspect Sample",
|
|
"duration": 60.0
|
|
}
|
|
],
|
|
"vent": {
|
|
"id": "vent_medbay",
|
|
"connects_to": [
|
|
"vent_security",
|
|
"vent_elec"
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"edges": [
|
|
{
|
|
"id": "cafe_weapons",
|
|
"room_a": "cafeteria",
|
|
"room_b": "weapons",
|
|
"distance": 5.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "cafe_admin",
|
|
"room_a": "cafeteria",
|
|
"room_b": "admin",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "cafe_storage",
|
|
"room_a": "cafeteria",
|
|
"room_b": "storage",
|
|
"distance": 6.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "cafe_medbay",
|
|
"room_a": "cafeteria",
|
|
"room_b": "medbay",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "cafe_upper",
|
|
"room_a": "cafeteria",
|
|
"room_b": "upper_engine",
|
|
"distance": 6.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "weapons_o2",
|
|
"room_a": "weapons",
|
|
"room_b": "o2",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "weapons_nav",
|
|
"room_a": "weapons",
|
|
"room_b": "navigation",
|
|
"distance": 5.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "nav_o2",
|
|
"room_a": "navigation",
|
|
"room_b": "o2",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "nav_shields",
|
|
"room_a": "navigation",
|
|
"room_b": "shields",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "o2_shields",
|
|
"room_a": "o2",
|
|
"room_b": "shields",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "o2_admin",
|
|
"room_a": "o2",
|
|
"room_b": "admin",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "admin_storage",
|
|
"room_a": "admin",
|
|
"room_b": "storage",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "shields_comms",
|
|
"room_a": "shields",
|
|
"room_b": "communications",
|
|
"distance": 3.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "shields_storage",
|
|
"room_a": "shields",
|
|
"room_b": "storage",
|
|
"distance": 5.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "comms_storage",
|
|
"room_a": "communications",
|
|
"room_b": "storage",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "storage_elec",
|
|
"room_a": "storage",
|
|
"room_b": "electrical",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "storage_lower",
|
|
"room_a": "storage",
|
|
"room_b": "lower_engine",
|
|
"distance": 6.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "elec_lower",
|
|
"room_a": "electrical",
|
|
"room_b": "lower_engine",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "lower_security",
|
|
"room_a": "lower_engine",
|
|
"room_b": "security",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "lower_reactor",
|
|
"room_a": "lower_engine",
|
|
"room_b": "reactor",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "security_reactor",
|
|
"room_a": "security",
|
|
"room_b": "reactor",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "security_upper",
|
|
"room_a": "security",
|
|
"room_b": "upper_engine",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "reactor_upper",
|
|
"room_a": "reactor",
|
|
"room_b": "upper_engine",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "upper_medbay",
|
|
"room_a": "upper_engine",
|
|
"room_b": "medbay",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
},
|
|
{
|
|
"id": "medbay_security",
|
|
"room_a": "medbay",
|
|
"room_b": "security",
|
|
"distance": 4.0,
|
|
"waypoints": []
|
|
}
|
|
]
|
|
} |