Justxd22 commited on
Commit
de9ce00
·
1 Parent(s): a19fed3

Update scenarios and improve DNA evidence

Browse files
TODO.md CHANGED
@@ -3,15 +3,16 @@
3
  - make the rounds/points improve
4
  - remove scroll bars
5
  - players can't know there's more suspects down the list as we removed the scroll bar, can you scroll a bit down by default to show there's more cards down
 
6
 
7
 
8
- - pre-generate suspects cartoony potraits
9
- - find the texture missing
10
- - sound/music
11
- - eleven labs tts/voice
12
  - typing effect
13
  - mode selection
14
  - numbered steps to launch game
 
 
 
 
15
  - video embeded
16
  - divider
17
  - mcp showcase with title "try tools without playing"
 
3
  - make the rounds/points improve
4
  - remove scroll bars
5
  - players can't know there's more suspects down the list as we removed the scroll bar, can you scroll a bit down by default to show there's more cards down
6
+ - find the texture missing
7
 
8
 
 
 
 
 
9
  - typing effect
10
  - mode selection
11
  - numbered steps to launch game
12
+
13
+ - pre-generate suspects cartoony potraits
14
+ - sound/music
15
+ - eleven labs tts/voice
16
  - video embeded
17
  - divider
18
  - mcp showcase with title "try tools without playing"
app.py CHANGED
@@ -263,7 +263,9 @@ def format_tool_response(tool_name, arg, result, scenario):
263
  html += f"<div style='font-size:0.8em; color:#555'>Confidence: {result.get('confidence')}</div>"
264
 
265
  elif tool_name == "get_dna_test":
266
- title = "🧬 DNA Result"
 
 
267
 
268
  if "matches" in result:
269
  # Multiple matches
 
263
  html += f"<div style='font-size:0.8em; color:#555'>Confidence: {result.get('confidence')}</div>"
264
 
265
  elif tool_name == "get_dna_test":
266
+ # Get the label for the evidence item
267
+ evidence_label = scenario["evidence"]["dna_evidence"].get(arg, {}).get("label", arg)
268
+ title = f"🧬 DNA Result for {evidence_label}"
269
 
270
  if "matches" in result:
271
  # Multiple matches
scenarios/art_gallery.json CHANGED
@@ -1,7 +1,7 @@
1
  {
2
  "case_id": "C99",
3
  "title": "The Gallery Heist Gone Wrong",
4
- "difficulty": "Hard",
5
  "victim": {
6
  "name": "Vincent Shaw",
7
  "age": 55,
@@ -70,22 +70,45 @@
70
  "footage_data": {
71
  "office_cam": {
72
  "9:50-10:10 PM": {
73
- "visible_people": ["Vincent drinking wine", "Julian pouring more wine"],
74
  "quality": "High",
75
- "key_frame": "9:55 PM - Julian adds powder to glass"
76
- }
 
 
 
 
 
 
 
 
 
77
  }
78
  },
79
  "dna_evidence": {
80
  "wine_glass": {
81
- "primary_match": "suspect_1",
82
- "confidence": "80%",
83
- "notes": "Fingerprints of Julian on the stem"
 
84
  },
85
  "poison_vial": {
 
86
  "primary_match": "suspect_1",
87
  "confidence": "99%",
88
  "notes": "Found in Julian's pocket"
 
 
 
 
 
 
 
 
 
 
 
 
89
  }
90
  },
91
  "alibis": {
@@ -93,12 +116,31 @@
93
  "contact": "+1-555-2200",
94
  "contact_name": "Maria (Caterer)",
95
  "verifiable": true,
96
- "truth": "Lying - Maria didn't see him"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  }
98
  }
99
  },
100
  "timeline": {
101
  "9:55 PM": "Julian poisons wine",
 
102
  "10:00 PM": "Vincent collapses",
103
  "10:05 PM": "Julian calls 911 feigning panic"
104
  }
 
1
  {
2
  "case_id": "C99",
3
  "title": "The Gallery Heist Gone Wrong",
4
+ "difficulty": "Expert",
5
  "victim": {
6
  "name": "Vincent Shaw",
7
  "age": 55,
 
70
  "footage_data": {
71
  "office_cam": {
72
  "9:50-10:10 PM": {
73
+ "visible_people": ["Vincent drinking wine", "Julian pouring more wine", "Shadowy figure (Arthur?) outside window"],
74
  "quality": "High",
75
+ "key_frame": "9:55 PM - Julian adds powder to glass. BUT 9:58 PM - Elena enters and argues."
76
+ },
77
+ "unlocks": ["wine_glass", "poison_vial", "sculpture", "dropped_scarf"]
78
+ },
79
+ "main_hall_cam": {
80
+ "9:50-10:10 PM": {
81
+ "visible_people": ["Crowd of guests", "Maria serving drinks"],
82
+ "quality": "Medium",
83
+ "notes": "Too many people to track individually"
84
+ },
85
+ "unlocks": []
86
  }
87
  },
88
  "dna_evidence": {
89
  "wine_glass": {
90
+ "label": "Wine Glass (Office)",
91
+ "matches": ["suspect_1", "victim", "suspect_2"],
92
+ "confidence": "Mixed",
93
+ "notes": "Julian poured it, Vincent drank it, Elena touched it during argument."
94
  },
95
  "poison_vial": {
96
+ "label": "Vial (Julian's Pocket)",
97
  "primary_match": "suspect_1",
98
  "confidence": "99%",
99
  "notes": "Found in Julian's pocket"
100
+ },
101
+ "sculpture": {
102
+ "label": "Bronze Sculpture",
103
+ "primary_match": "suspect_3",
104
+ "confidence": "90%",
105
+ "notes": "Arthur was admiring it earlier."
106
+ },
107
+ "dropped_scarf": {
108
+ "label": "Silk Scarf",
109
+ "primary_match": "suspect_2",
110
+ "confidence": "99%",
111
+ "notes": "Elena's scarf found under the desk."
112
  }
113
  },
114
  "alibis": {
 
116
  "contact": "+1-555-2200",
117
  "contact_name": "Maria (Caterer)",
118
  "verifiable": true,
119
+ "truth": "Lying - Maria didn't see him in basement"
120
+ },
121
+ "suspect_2_alibi": {
122
+ "contact": "None",
123
+ "contact_name": "Gallery Guests",
124
+ "verifiable": true,
125
+ "truth": "Conflicting - some saw her, some say she disappeared for 10 mins"
126
+ },
127
+ "suspect_3_alibi": {
128
+ "contact": "+1-555-2203",
129
+ "contact_name": "Valet",
130
+ "verifiable": true,
131
+ "truth": "Telling truth - was arguing about car parking outside"
132
+ },
133
+ "suspect_4_alibi": {
134
+ "contact": "None",
135
+ "contact_name": "Head Chef",
136
+ "verifiable": true,
137
+ "truth": "Telling truth - never left kitchen"
138
  }
139
  }
140
  },
141
  "timeline": {
142
  "9:55 PM": "Julian poisons wine",
143
+ "9:58 PM": "Elena argues with Vincent",
144
  "10:00 PM": "Vincent collapses",
145
  "10:05 PM": "Julian calls 911 feigning panic"
146
  }
scenarios/coffee_shop.json CHANGED
@@ -1,7 +1,7 @@
1
  {
2
  "case_id": "B12",
3
  "title": "The Coffee Shop Murder",
4
- "difficulty": "Easy",
5
  "victim": {
6
  "name": "Emma Rodriguez",
7
  "age": 24,
@@ -76,36 +76,65 @@
76
  "footage_data": {
77
  "kitchen_cam": {
78
  "11:10-11:20 PM": {
79
- "visible_people": ["Emma arguing with man in blue cap"],
80
  "quality": "Good",
81
  "key_frame": "11:15 PM - Man stabs Emma"
82
- }
 
83
  },
84
  "alley_cam": {
85
  "11:00-11:30 PM": {
86
- "visible_people": ["Liam entering 11:05", "Liam running out 11:16"],
87
- "notes": "Wearing blue cap"
88
- }
 
 
89
  }
90
  },
91
  "dna_evidence": {
92
  "knife_handle": {
93
- "primary_match": "suspect_1",
 
 
 
 
 
 
 
94
  "confidence": "99%",
95
- "notes": "Sweat and skin cells found"
 
 
 
 
 
 
96
  }
97
  },
98
  "alibis": {
99
  "suspect_1_alibi": {
100
  "contact": "None",
 
101
  "verifiable": false,
102
- "truth": "Lying - claims gaming alone"
103
  },
104
  "suspect_2_alibi": {
105
  "contact": "+1-555-1200",
106
  "contact_name": "Bank CCTV",
107
  "verifiable": true,
108
- "truth": "Telling truth - footage confirms"
 
 
 
 
 
 
 
 
 
 
 
 
109
  }
110
  }
111
  },
 
1
  {
2
  "case_id": "B12",
3
  "title": "The Coffee Shop Murder",
4
+ "difficulty": "Medium",
5
  "victim": {
6
  "name": "Emma Rodriguez",
7
  "age": 24,
 
76
  "footage_data": {
77
  "kitchen_cam": {
78
  "11:10-11:20 PM": {
79
+ "visible_people": ["Emma arguing with man in blue cap", "Second figure in shadows"],
80
  "quality": "Good",
81
  "key_frame": "11:15 PM - Man stabs Emma"
82
+ },
83
+ "unlocks": ["knife_handle", "tip_jar", "napkin"]
84
  },
85
  "alley_cam": {
86
  "11:00-11:30 PM": {
87
+ "visible_people": ["Liam entering 11:05", "Mark leaving 11:00", "Joe lurking near dumpster"],
88
+ "quality": "Grainy (Night Mode)",
89
+ "notes": "Two people wearing blue caps seen (Liam and Joe)."
90
+ },
91
+ "unlocks": []
92
  }
93
  },
94
  "dna_evidence": {
95
  "knife_handle": {
96
+ "label": "Bloody Knife (Kitchen)",
97
+ "matches": ["suspect_1", "suspect_2"],
98
+ "confidence": "Inconclusive",
99
+ "notes": "Smudged prints. Could be Liam or Mark (who owns the knife)."
100
+ },
101
+ "tip_jar": {
102
+ "label": "Tip Jar (Counter)",
103
+ "primary_match": "suspect_2",
104
  "confidence": "99%",
105
+ "notes": "Mark cleared the tips earlier."
106
+ },
107
+ "napkin": {
108
+ "label": "Crumpled Napkin",
109
+ "primary_match": "suspect_4",
110
+ "confidence": "95%",
111
+ "notes": "Joe's DNA. He was here earlier."
112
  }
113
  },
114
  "alibis": {
115
  "suspect_1_alibi": {
116
  "contact": "None",
117
+ "contact_name": "Mom",
118
  "verifiable": false,
119
+ "truth": "Lying - claims she heard him gaming, but door was closed"
120
  },
121
  "suspect_2_alibi": {
122
  "contact": "+1-555-1200",
123
  "contact_name": "Bank CCTV",
124
  "verifiable": true,
125
+ "truth": "Telling truth - footage confirms he was at bank at 11:15"
126
+ },
127
+ "suspect_3_alibi": {
128
+ "contact": "+1-555-1203",
129
+ "contact_name": "Gym Front Desk",
130
+ "verifiable": true,
131
+ "truth": "Telling truth - scanned badge at 11:00 PM"
132
+ },
133
+ "suspect_4_alibi": {
134
+ "contact": "None",
135
+ "contact_name": "Bus Driver",
136
+ "verifiable": false,
137
+ "truth": "Uncertain - bus was late, nobody remembers seeing him"
138
  }
139
  }
140
  },
scenarios/silicon_valley.json CHANGED
@@ -77,19 +77,19 @@
77
  "footage_data": {
78
  "10th_floor_camera": {
79
  "8:45-8:50 PM": {
80
- "visible_people": ["Person in black hoodie entering"],
81
  "quality": "Grainy",
82
  "key_frame": "8:47 PM - figure strikes victim with trophy"
83
  },
84
- "unlocks": ["trophy_weapon", "door_handle"]
85
  },
86
  "lobby_camera": {
87
  "8:40-8:55 PM": {
88
- "visible_people": ["Suspect 1 entering at 8:43", "Suspect 1 leaving at 8:52"],
89
- "quality": "Grainy",
90
- "notes": "Suspect changed clothes, looks flustered"
91
  },
92
- "unlocks": []
93
  },
94
  "kitchen_camera": {
95
  "8:40-8:55 PM": {
@@ -103,19 +103,37 @@
103
  "dna_evidence": {
104
  "trophy_weapon": {
105
  "label": "Trophy (Found in Office)",
106
- "primary_match": "suspect_1",
107
- "confidence": "95%",
108
- "notes": "Clear fingerprints found on the base"
109
  },
110
  "door_handle": {
111
  "label": "Door Handle (10th Floor)",
112
  "matches": ["suspect_1", "suspect_2", "victim"],
113
  "notes": "Multiple people touched door recently"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  }
115
  },
116
  "alibis": {
117
  "suspect_1_alibi": {
118
  "contact": "Nobody (claims was alone)",
 
119
  "verifiable": false,
120
  "truth": "Lying - was at crime scene"
121
  },
@@ -123,19 +141,19 @@
123
  "contact": "+1-555-0199",
124
  "contact_name": "Security Guard Tom",
125
  "verifiable": true,
126
- "truth": "Telling truth - saw him on 5th floor"
127
  },
128
  "suspect_3_alibi": {
129
  "contact": "+1-555-0200",
130
  "contact_name": "Waiter at La Casa",
131
  "verifiable": true,
132
- "truth": "Telling truth - bill was paid at 9:00 PM"
133
  },
134
  "suspect_4_alibi": {
135
  "contact": "+1-555-0201",
136
  "contact_name": "Airline Desk",
137
  "verifiable": true,
138
- "truth": "Telling truth - checked in at 8:30 PM"
139
  }
140
  }
141
  },
 
77
  "footage_data": {
78
  "10th_floor_camera": {
79
  "8:45-8:50 PM": {
80
+ "visible_people": ["Person in black hoodie entering", "Janitor cart visible in corner"],
81
  "quality": "Grainy",
82
  "key_frame": "8:47 PM - figure strikes victim with trophy"
83
  },
84
+ "unlocks": ["door_handle", "coffee_mug", "laptop", "trophy_weapon"]
85
  },
86
  "lobby_camera": {
87
  "8:40-8:55 PM": {
88
+ "visible_people": ["Suspect 1 entering at 8:43", "Suspect 1 leaving at 8:52", "Suspect 3 arguing with guard earlier"],
89
+ "quality": "High",
90
+ "notes": "Suspect 1 changed clothes, looks flustered. Suspect 3 seen leaving at 8:30."
91
  },
92
+ "unlocks": ["discarded_ticket"]
93
  },
94
  "kitchen_camera": {
95
  "8:40-8:55 PM": {
 
103
  "dna_evidence": {
104
  "trophy_weapon": {
105
  "label": "Trophy (Found in Office)",
106
+ "matches": ["suspect_1", "suspect_3", "victim"],
107
+ "confidence": "65%",
108
+ "notes": "Partial print on base. Smudged."
109
  },
110
  "door_handle": {
111
  "label": "Door Handle (10th Floor)",
112
  "matches": ["suspect_1", "suspect_2", "victim"],
113
  "notes": "Multiple people touched door recently"
114
+ },
115
+ "coffee_mug": {
116
+ "label": "Coffee Mug (Desk)",
117
+ "primary_match": "victim",
118
+ "confidence": "99%",
119
+ "notes": "Victim's saliva."
120
+ },
121
+ "laptop": {
122
+ "label": "Laptop (Desk)",
123
+ "matches": ["victim", "suspect_2"],
124
+ "notes": "Dusty fingerprints from cleaning."
125
+ },
126
+ "discarded_ticket": {
127
+ "label": "Parking Ticket (Lobby)",
128
+ "primary_match": "suspect_3",
129
+ "confidence": "99%",
130
+ "notes": "Dropped near exit."
131
  }
132
  },
133
  "alibis": {
134
  "suspect_1_alibi": {
135
  "contact": "Nobody (claims was alone)",
136
+ "contact_name": "None",
137
  "verifiable": false,
138
  "truth": "Lying - was at crime scene"
139
  },
 
141
  "contact": "+1-555-0199",
142
  "contact_name": "Security Guard Tom",
143
  "verifiable": true,
144
+ "truth": "Telling truth - saw him on 5th floor around 8:45"
145
  },
146
  "suspect_3_alibi": {
147
  "contact": "+1-555-0200",
148
  "contact_name": "Waiter at La Casa",
149
  "verifiable": true,
150
+ "truth": "Telling truth - bill was paid at 9:00 PM, but she arrived late (8:55)"
151
  },
152
  "suspect_4_alibi": {
153
  "contact": "+1-555-0201",
154
  "contact_name": "Airline Desk",
155
  "verifiable": true,
156
+ "truth": "Telling truth - checked in at 8:30 PM, seen at gate"
157
  }
158
  }
159
  },