src / types.ts
export interface Settings {
blockThreshold: number;
reviewThreshold: number;
severityBlock: number;
defaultTimeoutSec: number;
maxTimeoutSec: number;
maxOutputChars: number;
}
export const HAZARDS = [
"destroys_data",
"touches_system",
"network_exfil",
"privilege_or_persistence",
"obfuscated",
] as const;
export type Hazard = (typeof HAZARDS)[number];
/** Jev's judgment of one command: hazard probabilities (0-1) and expected severity (0-3). */
export interface Assessment {
hazards: Record<Hazard, number>;
severity: number;
}
export type Verdict =
| { kind: "pass" }
| { kind: "block" | "uncertain"; hazard: Hazard; probability: number; severity: number };
export type Assessor = (
input: { command: string; cwd: string },
signal?: AbortSignal,
) => Promise<Assessment>;
src / types.ts
export interface Settings {
blockThreshold: number;
reviewThreshold: number;
severityBlock: number;
defaultTimeoutSec: number;
maxTimeoutSec: number;
maxOutputChars: number;
}
export const HAZARDS = [
"destroys_data",
"touches_system",
"network_exfil",
"privilege_or_persistence",
"obfuscated",
] as const;
export type Hazard = (typeof HAZARDS)[number];
/** Jev's judgment of one command: hazard probabilities (0-1) and expected severity (0-3). */
export interface Assessment {
hazards: Record<Hazard, number>;
severity: number;
}
export type Verdict =
| { kind: "pass" }
| { kind: "block" | "uncertain"; hazard: Hazard; probability: number; severity: number };
export type Assessor = (
input: { command: string; cwd: string },
signal?: AbortSignal,
) => Promise<Assessment>;