feat: add types package
This commit is contained in:
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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>;
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES2022",
|
||||||
|
"module": "ES2022",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"strict": true,
|
||||||
|
"noEmit": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"skipLibCheck": true
|
||||||
|
},
|
||||||
|
"include": ["src"]
|
||||||
|
}
|
||||||
Generated
+2
@@ -253,6 +253,8 @@ importers:
|
|||||||
specifier: ^5
|
specifier: ^5
|
||||||
version: 5.9.3
|
version: 5.9.3
|
||||||
|
|
||||||
|
packages/types: {}
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
'@emnapi/runtime@1.11.3':
|
'@emnapi/runtime@1.11.3':
|
||||||
|
|||||||
@@ -1,2 +1,3 @@
|
|||||||
packages:
|
packages:
|
||||||
- apps/*
|
- apps/*
|
||||||
|
- packages/*
|
||||||
|
|||||||
Reference in New Issue
Block a user