feat: add types package

This commit is contained in:
2026-09-04 16:09:46 +05:00
parent 111b718526
commit d63cb77887
5 changed files with 150 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
{
"name": "@duck/types",
"version": "0.1.0",
"private": true,
"type": "module",
"exports": {
".": {
"types": "./src/index.ts",
"default": "./src/index.ts"
}
},
"devDependencies": {
"typescript": "^5.9.3"
},
"scripts": {
"typecheck": "tsc --noEmit"
}
}
+117
View File
@@ -0,0 +1,117 @@
// ── Tasks ───────────────────────────────────────────────
export interface Task {
id: string;
question: string;
answer: string;
}
// ── Scenarios ───────────────────────────────────────────
export type ScenarioName = "control" | "thinking" | "blind" | "mentor";
export const SCENARIO_NAMES: readonly ScenarioName[] = [
"control",
"thinking",
"blind",
"mentor",
];
// ── Per-task evaluation row ─────────────────────────────
export interface PerTaskRow {
id: string;
scenario: ScenarioName;
correct: boolean | null;
duckUsed: boolean;
toolCalls: number;
promptTokens: number;
genTokens: number;
duckTokens: number;
response: string;
expected: string;
question: string;
}
// ── Per-scenario summary (inside a model report) ────────
export interface ScenarioSummary {
tasks: number;
reviewed: number;
correct: number;
accuracy: number;
pending: number;
duckUsed: number;
toolCalls: number;
avgCalls: number;
avgPromptTokens: number;
avgGenTokens: number;
avgDuckTokens: number;
}
// ── Per-model report ────────────────────────────────────
export interface ModelReport {
generatedAt: string;
model: string;
mcpUrl: string;
scenarios: Record<ScenarioName, ScenarioSummary>;
prompts: Record<ScenarioName, string>;
perTask: PerTaskRow[];
meta: Record<string, unknown>;
}
// ── Aggregate ───────────────────────────────────────────
export interface AggregateByModel {
tasks: number;
reviewed: number;
correct: number;
accuracy: number;
duckUsed: number;
}
export interface AggregateScenario {
tasks: number;
reviewed: number;
correct: number;
accuracy: number;
pending: number;
duckUsed: number;
toolCalls: number;
avgCalls: number;
byModel: Record<string, AggregateByModel>;
}
export interface AggregateModel {
tasks: number;
totalRows: number;
reviewed: number;
correct: number;
accuracy: number;
duckUsed: number;
toolCalls: number;
avgGenTokens: number;
}
export interface Aggregate {
perScenario: Record<ScenarioName, AggregateScenario>;
perModel: Record<string, AggregateModel>;
}
// ── Root report (report.json) ───────────────────────────
export interface ReportRoot {
generatedAt: string;
mcpUrl: string;
prompts: Record<ScenarioName, string>;
models: Record<string, ModelReport>;
aggregate: Aggregate;
reviewedAt?: string;
}
// ── Reviews (review.json) ───────────────────────────────
// Keys: "${model}|${taskId}|${scenario}"
export type ReviewKey = `${string}|${string}|${string}`;
export type Reviews = Record<ReviewKey, boolean>;
+12
View File
@@ -0,0 +1,12 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "ES2022",
"moduleResolution": "bundler",
"strict": true,
"noEmit": true,
"isolatedModules": true,
"skipLibCheck": true
},
"include": ["src"]
}
+2
View File
@@ -253,6 +253,8 @@ importers:
specifier: ^5
version: 5.9.3
packages/types: {}
packages:
'@emnapi/runtime@1.11.3':
+1
View File
@@ -1,2 +1,3 @@
packages:
- apps/*
- packages/*