daftari 1.15.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/README.md +8 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/eval/generate.d.ts +12 -0
- package/dist/eval/generate.d.ts.map +1 -0
- package/dist/eval/generate.js +221 -0
- package/dist/eval/generate.js.map +1 -0
- package/dist/eval/index.d.ts +2 -0
- package/dist/eval/index.d.ts.map +1 -0
- package/dist/eval/index.js +311 -0
- package/dist/eval/index.js.map +1 -0
- package/dist/eval/llm.d.ts +47 -0
- package/dist/eval/llm.d.ts.map +1 -0
- package/dist/eval/llm.js +165 -0
- package/dist/eval/llm.js.map +1 -0
- package/dist/eval/prompts.d.ts +5 -0
- package/dist/eval/prompts.d.ts.map +1 -0
- package/dist/eval/prompts.js +44 -0
- package/dist/eval/prompts.js.map +1 -0
- package/dist/eval/run.d.ts +13 -0
- package/dist/eval/run.d.ts.map +1 -0
- package/dist/eval/run.js +78 -0
- package/dist/eval/run.js.map +1 -0
- package/dist/eval/score.d.ts +12 -0
- package/dist/eval/score.d.ts.map +1 -0
- package/dist/eval/score.js +154 -0
- package/dist/eval/score.js.map +1 -0
- package/dist/eval/storage.d.ts +10 -0
- package/dist/eval/storage.d.ts.map +1 -0
- package/dist/eval/storage.js +69 -0
- package/dist/eval/storage.js.map +1 -0
- package/dist/eval/subgraph.d.ts +17 -0
- package/dist/eval/subgraph.d.ts.map +1 -0
- package/dist/eval/subgraph.js +214 -0
- package/dist/eval/subgraph.js.map +1 -0
- package/dist/eval/tool-surface.d.ts +7 -0
- package/dist/eval/tool-surface.d.ts.map +1 -0
- package/dist/eval/tool-surface.js +160 -0
- package/dist/eval/tool-surface.js.map +1 -0
- package/dist/eval/types.d.ts +173 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +44 -0
- package/dist/eval/types.js.map +1 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.16.0] - 2026-06-02
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`daftari eval` cortex quality metric** (Sleep Component B). New CLI
|
|
15
|
+
subcommand that scores how well an LLM can use the Daftari MCP curation
|
|
16
|
+
surface to answer multi-hop questions about the vault. Three tiers
|
|
17
|
+
(retrieval, cross-reference, contradiction) with a tier-weighted aggregate
|
|
18
|
+
(1×/2×/3×) plus per-tier variance and trace-efficiency. The pipeline is
|
|
19
|
+
seeded subgraph sampling → LLM question generation (with tier-mix top-up
|
|
20
|
+
and tension-graph augmentation) → in-process answerer over the existing
|
|
21
|
+
read-only tool surface → LLM grading. Runs persist incrementally, so a
|
|
22
|
+
failed run is resumable with `--resume`. Generator/answerer/grader are all
|
|
23
|
+
LLM-mediated via `@anthropic-ai/sdk` (new dependency, isolated to
|
|
24
|
+
`src/eval/llm.ts`); the rest of the codebase stays LLM-free. Output
|
|
25
|
+
artifacts live under `.daftari/eval/` (gitignored). Components A (multi-pass
|
|
26
|
+
curation) and C (dependency-triggered re-curation) are deferred to
|
|
27
|
+
follow-on specs. See
|
|
28
|
+
[docs/superpowers/specs/2026-05-31-cortex-quality-metric-design.md](docs/superpowers/specs/2026-05-31-cortex-quality-metric-design.md).
|
|
29
|
+
|
|
10
30
|
## [1.15.0] - 2026-05-31
|
|
11
31
|
|
|
12
32
|
### Added
|
package/README.md
CHANGED
|
@@ -23,8 +23,9 @@ session ends.
|
|
|
23
23
|
|
|
24
24
|
Daftari takes the other path: **compilation over retrieval.** The agent
|
|
25
25
|
synthesizes an answer once, writes it back as a durable document, and every
|
|
26
|
-
later read starts from that compiled result. The
|
|
27
|
-
is
|
|
26
|
+
later read starts from that compiled result. The compiler is the agent;
|
|
27
|
+
Daftari is the substrate that catches and persists what the agent
|
|
28
|
+
consolidates. The vault gets better the more it is used.
|
|
28
29
|
|
|
29
30
|
A human cortex doesn’t re-derive everything from sensory input each time it
|
|
30
31
|
thinks. It consolidates: experiences become memories, memories become
|
|
@@ -72,6 +73,11 @@ The curation engine is advisory: `vault_lint` reports problems and
|
|
|
72
73
|
`vault_tension_log` records contradictions. Neither auto-fixes anything. Every
|
|
73
74
|
change is a deliberate, attributable act.
|
|
74
75
|
|
|
76
|
+
**Evaluate (opt-in, requires an Anthropic API key):** `daftari eval` — scores how
|
|
77
|
+
well an LLM can use the curation surface to answer multi-hop questions about the
|
|
78
|
+
vault. See the [design spec](docs/superpowers/specs/2026-05-31-cortex-quality-metric-design.md)
|
|
79
|
+
for the rationale and the cortex framing.
|
|
80
|
+
|
|
75
81
|
## Two kinds of knowledge
|
|
76
82
|
|
|
77
83
|
Every document declares a `domain`. The distinction drives how the curation
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA8KA,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8DnE;AAED,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCvD"}
|
package/dist/cli.js
CHANGED
|
@@ -21,6 +21,7 @@ Usage:
|
|
|
21
21
|
daftari --init [path] Scaffold a new vault (default: ./daftari-vault)
|
|
22
22
|
daftari --vault <path> [options] Start the MCP server (stdio) against a vault
|
|
23
23
|
daftari audit [options] Run a cross-repo coherence audit (see: daftari audit --help)
|
|
24
|
+
daftari eval [options] Cortex quality metric (see: daftari eval --help)
|
|
24
25
|
|
|
25
26
|
Server options:
|
|
26
27
|
--user <username> Identity the server runs as (default: guest)
|
|
@@ -206,6 +207,11 @@ export async function run(argv) {
|
|
|
206
207
|
process.exitCode = await runAudit(argv.slice(1));
|
|
207
208
|
return;
|
|
208
209
|
}
|
|
210
|
+
if (argv[0] === "eval") {
|
|
211
|
+
const { runEval } = await import("./eval/index.js");
|
|
212
|
+
process.exitCode = await runEval(argv.slice(1));
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
209
215
|
if (argv.includes("--help") || argv.includes("-h")) {
|
|
210
216
|
process.stdout.write(USAGE);
|
|
211
217
|
return;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,eAAe;AACf,EAAE;AACF,0DAA0D;AAC1D,0EAA0E;AAC1E,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,+BAA+B;AAE/B,OAAO,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAErD,MAAM,KAAK,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Result } from "../frontmatter/types.js";
|
|
2
|
+
import type { LlmClient } from "./llm.js";
|
|
3
|
+
import type { Subgraph } from "./subgraph.js";
|
|
4
|
+
import { type CortexEvalError, type QuestionSet } from "./types.js";
|
|
5
|
+
export interface GenerateOptions {
|
|
6
|
+
n: number;
|
|
7
|
+
model: string;
|
|
8
|
+
vaultHash?: string;
|
|
9
|
+
seed?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function generateQuestions(subgraph: Subgraph, llm: LlmClient, opts: GenerateOptions): Promise<Result<QuestionSet, CortexEvalError>>;
|
|
12
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/eval/generate.ts"],"names":[],"mappings":"AAUA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,WAAW,EAIjB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CA0E/C"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
// Question-set generation for the cortex quality metric.
|
|
2
|
+
//
|
|
3
|
+
// Given a sampled subgraph, ask the generator LLM for multi-hop questions
|
|
4
|
+
// across three tiers, then validate/filter the output: drop questions whose
|
|
5
|
+
// expected_sources escape the subgraph, and drop trivial yes/no answers. If the
|
|
6
|
+
// generator under-produces any tier, make ONE focused top-up call (spec §5.3) —
|
|
7
|
+
// remaining imbalance is accepted and recorded, not treated as an error.
|
|
8
|
+
// Finally, augment the contradiction tier from logged tension edges.
|
|
9
|
+
import { createHash } from "node:crypto";
|
|
10
|
+
import { err, ok } from "../frontmatter/types.js";
|
|
11
|
+
import { GENERATOR_PROMPT, PROMPT_VERSION } from "./prompts.js";
|
|
12
|
+
import { QuestionSetSchema, TIERS, } from "./types.js";
|
|
13
|
+
export async function generateQuestions(subgraph, llm, opts) {
|
|
14
|
+
const perTier = Math.floor(opts.n / TIERS.length);
|
|
15
|
+
const tierCountsRequested = {
|
|
16
|
+
retrieval: perTier,
|
|
17
|
+
cross_reference: perTier,
|
|
18
|
+
contradiction: perTier,
|
|
19
|
+
};
|
|
20
|
+
const validNodes = new Set(subgraph.nodes.map((n) => n.path));
|
|
21
|
+
// [FIRST GENERATION] full per-tier counts. A failure here is fatal.
|
|
22
|
+
const firstRes = await llm.completeJson({
|
|
23
|
+
model: opts.model,
|
|
24
|
+
system: GENERATOR_PROMPT,
|
|
25
|
+
user: renderUserPrompt(subgraph, tierCountsRequested),
|
|
26
|
+
schema: QuestionSetSchema,
|
|
27
|
+
});
|
|
28
|
+
if (!firstRes.ok)
|
|
29
|
+
return firstRes;
|
|
30
|
+
const firstRaw = extractQuestions(firstRes.value.parsed);
|
|
31
|
+
if (firstRaw === null) {
|
|
32
|
+
return err({
|
|
33
|
+
kind: "llm",
|
|
34
|
+
message: "generator returned non-conforming JSON",
|
|
35
|
+
retryable: false,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
const generated = validateAndMap(firstRaw, validNodes);
|
|
39
|
+
// [TOP-UP] Shortfall is measured on GENERATOR output only (pre-augmentation).
|
|
40
|
+
const shortfall = computeShortfall(tierCountsRequested, generated);
|
|
41
|
+
let merged = generated;
|
|
42
|
+
if (hasShortfall(shortfall)) {
|
|
43
|
+
// Exactly ONE top-up call. A failure or non-conforming output is non-fatal:
|
|
44
|
+
// we swallow it (zero additional questions) and accept the imbalance.
|
|
45
|
+
const topUpRes = await llm.completeJson({
|
|
46
|
+
model: opts.model,
|
|
47
|
+
system: GENERATOR_PROMPT,
|
|
48
|
+
user: renderTopUpPrompt(subgraph, shortfall),
|
|
49
|
+
schema: QuestionSetSchema,
|
|
50
|
+
});
|
|
51
|
+
if (topUpRes.ok) {
|
|
52
|
+
const topUpRaw = extractQuestions(topUpRes.value.parsed);
|
|
53
|
+
if (topUpRaw !== null) {
|
|
54
|
+
const topUp = validateAndMap(topUpRaw, validNodes);
|
|
55
|
+
merged = dedupeById(generated, topUp);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// [AUGMENT] Additive contradiction questions from tension edges, deduped by id.
|
|
60
|
+
const augmented = augmentFromTensions(subgraph, tierCountsRequested.contradiction);
|
|
61
|
+
const all = dedupeById(merged, augmented);
|
|
62
|
+
const tierCountsProduced = countByTier(all);
|
|
63
|
+
const ts = "2026-01-01T00:00:00Z"; // placeholder; the caller overwrites this.
|
|
64
|
+
const vaultHash = opts.vaultHash ?? "";
|
|
65
|
+
const seed = opts.seed ?? "";
|
|
66
|
+
return ok({
|
|
67
|
+
id: `${vaultHash}-${seed}-${ts}`,
|
|
68
|
+
vault_hash: vaultHash,
|
|
69
|
+
seed,
|
|
70
|
+
timestamp: ts,
|
|
71
|
+
subgraph: {
|
|
72
|
+
seed_doc: subgraph.seed_doc,
|
|
73
|
+
nodes: subgraph.nodes.map((n) => n.path),
|
|
74
|
+
edges: subgraph.edges,
|
|
75
|
+
},
|
|
76
|
+
questions: all,
|
|
77
|
+
generator_model: opts.model,
|
|
78
|
+
prompt_version: PROMPT_VERSION,
|
|
79
|
+
tier_counts_requested: tierCountsRequested,
|
|
80
|
+
tier_counts_produced: tierCountsProduced,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
// Pulls the `questions` array out of parsed generator JSON, or null if the
|
|
84
|
+
// shape is non-conforming (missing/!array). The element shapes are validated
|
|
85
|
+
// later by validateAndMap.
|
|
86
|
+
function extractQuestions(parsed) {
|
|
87
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
88
|
+
return null;
|
|
89
|
+
// biome-ignore lint/suspicious/noExplicitAny: structural access to parsed JSON
|
|
90
|
+
const questions = parsed.questions;
|
|
91
|
+
if (!Array.isArray(questions))
|
|
92
|
+
return null;
|
|
93
|
+
return questions;
|
|
94
|
+
}
|
|
95
|
+
// Validates each raw question and maps survivors to `Question` records with a
|
|
96
|
+
// stable id and origin "generated". Reused for both the first call and the
|
|
97
|
+
// top-up call. Rejects: bad tier, empty question/answer, empty or
|
|
98
|
+
// out-of-subgraph expected_sources, and trivial yes/no answers.
|
|
99
|
+
function validateAndMap(rawQuestions, validNodes) {
|
|
100
|
+
const out = [];
|
|
101
|
+
for (const raw of rawQuestions) {
|
|
102
|
+
if (typeof raw !== "object" || raw === null)
|
|
103
|
+
continue;
|
|
104
|
+
// biome-ignore lint/suspicious/noExplicitAny: structural access to parsed JSON
|
|
105
|
+
const q = raw;
|
|
106
|
+
const tier = q.tier;
|
|
107
|
+
if (!isTier(tier))
|
|
108
|
+
continue;
|
|
109
|
+
const question = q.question;
|
|
110
|
+
const answer = q.expected_answer;
|
|
111
|
+
if (typeof question !== "string" || question.trim().length === 0)
|
|
112
|
+
continue;
|
|
113
|
+
if (typeof answer !== "string" || answer.trim().length === 0)
|
|
114
|
+
continue;
|
|
115
|
+
const sources = q.expected_sources;
|
|
116
|
+
if (!Array.isArray(sources) || sources.length === 0)
|
|
117
|
+
continue;
|
|
118
|
+
if (!sources.every((s) => typeof s === "string" && validNodes.has(s)))
|
|
119
|
+
continue;
|
|
120
|
+
if (isTrivial(question, answer))
|
|
121
|
+
continue;
|
|
122
|
+
const expectedSources = sources;
|
|
123
|
+
out.push({
|
|
124
|
+
id: questionId(tier, question, expectedSources),
|
|
125
|
+
tier,
|
|
126
|
+
question,
|
|
127
|
+
expected_answer: answer,
|
|
128
|
+
expected_sources: expectedSources,
|
|
129
|
+
origin: "generated",
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
return out;
|
|
133
|
+
}
|
|
134
|
+
function isTier(value) {
|
|
135
|
+
return typeof value === "string" && TIERS.includes(value);
|
|
136
|
+
}
|
|
137
|
+
// Per-tier shortfall against the requested counts, measured on the supplied
|
|
138
|
+
// (generator-only) question set. Never negative.
|
|
139
|
+
function computeShortfall(requested, produced) {
|
|
140
|
+
const counts = countByTier(produced);
|
|
141
|
+
const shortfall = {
|
|
142
|
+
retrieval: 0,
|
|
143
|
+
cross_reference: 0,
|
|
144
|
+
contradiction: 0,
|
|
145
|
+
};
|
|
146
|
+
for (const tier of TIERS) {
|
|
147
|
+
shortfall[tier] = Math.max(0, requested[tier] - counts[tier]);
|
|
148
|
+
}
|
|
149
|
+
return shortfall;
|
|
150
|
+
}
|
|
151
|
+
function hasShortfall(shortfall) {
|
|
152
|
+
return TIERS.some((tier) => shortfall[tier] > 0);
|
|
153
|
+
}
|
|
154
|
+
function countByTier(questions) {
|
|
155
|
+
const counts = {
|
|
156
|
+
retrieval: 0,
|
|
157
|
+
cross_reference: 0,
|
|
158
|
+
contradiction: 0,
|
|
159
|
+
};
|
|
160
|
+
for (const q of questions)
|
|
161
|
+
counts[q.tier] += 1;
|
|
162
|
+
return counts;
|
|
163
|
+
}
|
|
164
|
+
// Merges `base` with `extra`, dropping any `extra` whose id already appears in
|
|
165
|
+
// `base` (or earlier in `extra`). Identical-text/source questions within a tier
|
|
166
|
+
// hash to the same id and collapse to one.
|
|
167
|
+
function dedupeById(base, extra) {
|
|
168
|
+
const seen = new Set(base.map((q) => q.id));
|
|
169
|
+
const out = [...base];
|
|
170
|
+
for (const q of extra) {
|
|
171
|
+
if (seen.has(q.id))
|
|
172
|
+
continue;
|
|
173
|
+
seen.add(q.id);
|
|
174
|
+
out.push(q);
|
|
175
|
+
}
|
|
176
|
+
return out;
|
|
177
|
+
}
|
|
178
|
+
function renderUserPrompt(sg, counts) {
|
|
179
|
+
const docs = sg.nodes.map((n) => `## ${n.path}\n\n${n.body}\n`).join("\n");
|
|
180
|
+
return `Subgraph docs:\n\n${docs}\n\nProduce exactly ${counts.retrieval} retrieval, ${counts.cross_reference} cross_reference, and ${counts.contradiction} contradiction questions.`;
|
|
181
|
+
}
|
|
182
|
+
// Top-up prompt: lists ONLY the under-produced tiers and their shortfall counts.
|
|
183
|
+
// Tiers with shortfall 0 are omitted entirely.
|
|
184
|
+
function renderTopUpPrompt(sg, shortfall) {
|
|
185
|
+
const docs = sg.nodes.map((n) => `## ${n.path}\n\n${n.body}\n`).join("\n");
|
|
186
|
+
const wanted = TIERS.filter((tier) => shortfall[tier] > 0)
|
|
187
|
+
.map((tier) => `${shortfall[tier]} more ${tier}`)
|
|
188
|
+
.join(" and ");
|
|
189
|
+
return `Subgraph docs:\n\n${docs}\n\nYou previously produced too few of some tiers. Produce exactly ${wanted} questions, same rules. Do not produce any other tiers.`;
|
|
190
|
+
}
|
|
191
|
+
function isTrivial(_question, answer) {
|
|
192
|
+
const a = answer.trim().toLowerCase();
|
|
193
|
+
return a === "yes" || a === "no" || a.length < 3;
|
|
194
|
+
}
|
|
195
|
+
function questionId(tier, question, sources) {
|
|
196
|
+
const h = createHash("sha256");
|
|
197
|
+
h.update(`${tier}\x00${question}\x00${[...sources].sort().join("\x00")}`);
|
|
198
|
+
return h.digest("hex").slice(0, 16);
|
|
199
|
+
}
|
|
200
|
+
// Additive contradiction questions seeded from logged tension edges in the
|
|
201
|
+
// subgraph: max(1, floor(0.2 × contradictionBudget)) of them, capped by how many
|
|
202
|
+
// tension edges exist. Origin "augmented" (no generator LLM involved).
|
|
203
|
+
function augmentFromTensions(sg, contradictionBudget) {
|
|
204
|
+
const tensionEdges = sg.edges.filter((e) => e.kind === "tension");
|
|
205
|
+
if (tensionEdges.length === 0)
|
|
206
|
+
return [];
|
|
207
|
+
const count = Math.max(1, Math.floor(0.2 * contradictionBudget));
|
|
208
|
+
return tensionEdges.slice(0, count).map((e) => {
|
|
209
|
+
const q = `${e.from} and ${e.to} appear to disagree on a specific point. Read both docs, identify the disagreement, and cite the position each takes. Cite both docs in your answer.`;
|
|
210
|
+
const sources = [e.from, e.to];
|
|
211
|
+
return {
|
|
212
|
+
id: questionId("contradiction", q, sources),
|
|
213
|
+
tier: "contradiction",
|
|
214
|
+
question: q,
|
|
215
|
+
expected_answer: `A correct answer identifies the substantive contradiction between ${e.from} and ${e.to} and cites both source paths.`,
|
|
216
|
+
expected_sources: sources,
|
|
217
|
+
origin: "augmented",
|
|
218
|
+
};
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/eval/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eval/index.ts"],"names":[],"mappings":"AA6DA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB7D"}
|