Spaces:
Running
Running
File size: 2,456 Bytes
414dc55 80cd1f2 414dc55 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | // TS mirror of the server's PUBLIC wire contract (src/case_zero/api/public_view.py).
export interface Victim {
name: string
role: string
age: number
sprite: string
bio: string
}
export interface SuggestedQuestion {
id: string
q: string
}
export interface Suspect {
id: string
name: string
role: string
age: number
sprite: string
gender: string
tag: string
baselineSuspicion: number
motive: string
alibi: string
quote: string
greet: string
suggestedQuestions: SuggestedQuestion[]
}
export interface ThreadMessage {
from: 'me' | 'them'
who: string
t: string
m: string
}
export interface Evidence {
id: string
name: string
type: string
icon: string
time: string
found: string
summary: string
thread?: ThreadMessage[]
detail?: string
transcript?: string
dur?: string
rows?: string[][]
}
export interface TimelineBeat {
time: string
label: string
locked: boolean
ev?: string | null
conflict: boolean
}
export interface FlashbackAccount {
who: string
scene: string
lines: string[]
flags: number[]
}
export interface Flashback {
title: string
a: FlashbackAccount
b: FlashbackAccount
}
export interface Motive {
id: string
text: string
}
export interface StoryBeat {
scene: string
kicker: string
title: string
text: string
}
export interface PublicCase {
id: string
city: string
district: string
title: string
tagline: string
weather: string
victim: Victim
scene: string
tod: string
found: string
cause: string
// Case-kind display labels (optional on old stored cases; default to homicide wording).
kind?: string
kindLabel?: string
division?: string
victimStatus?: string
todLabel?: string
verdict?: string
facts: [string, string][]
bootLines: string[]
storyBeats: StoryBeat[]
suspects: Suspect[]
evidence: Evidence[]
timeline: TimelineBeat[]
flashback: Flashback
motives: Motive[]
}
// --- interrogation / verdict wire shapes ---
export interface InterrogateResult {
reply: string
suspicionDelta: number
suspicion: number
flags: { rattled?: boolean; contradictionExposed?: boolean; cornered?: boolean }
}
export interface VerdictResult {
correct: boolean
verdict: { stamp: string; killerId: string; killerName: string; truth: string }
score: { points: number; max: number; killerCorrect: boolean; motiveCorrect: boolean; evidenceHits: number }
stats: [string, string][]
}
|