@thehammer/template-verification 0.2.7 → 0.2.9
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/dist/components/AuditCallCard.vue.d.ts +1 -1
- package/dist/components/CitationPage.vue.d.ts +2 -2
- package/dist/components/TvDisclosure.vue.d.ts +61 -0
- package/dist/components/VerificationModal.vue.d.ts +14 -2
- package/dist/constants.d.ts +1 -1
- package/dist/context.d.ts +9 -13
- package/dist/index.d.ts +9 -7
- package/dist/lib/dataPointDetail.d.ts +41 -0
- package/dist/style.css +1 -1
- package/dist/template-verification.js +894 -984
- package/dist/types.d.ts +21 -2
- package/package.json +3 -2
- package/dist/components/ComparisonPage.vue.d.ts +0 -2
- package/dist/lib/audit.d.ts +0 -32
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ref as
|
|
2
|
-
import { DanxChip as
|
|
3
|
-
const
|
|
1
|
+
import { ref as O, watch as ae, defineComponent as J, computed as g, openBlock as l, createElementBlock as c, normalizeClass as A, createElementVNode as i, toDisplayString as v, createCommentVNode as h, createBlock as V, unref as f, withCtx as S, createTextVNode as N, createVNode as I, Fragment as B, renderList as H, renderSlot as xe, onBeforeUnmount as Ge, withKeys as Qe, withModifiers as ye, withDirectives as We, isRef as Xe, vModelCheckbox as Ze } from "vue";
|
|
2
|
+
import { DanxChip as M, CodeViewer as qe, DanxFile as et, DanxButton as re, DanxDialog as Oe, DanxFileViewer as tt, DanxAlert as ge, DanxTooltip as be, useToast as Le, DanxProgressBar as Ae, DanxTabs as at, DanxSkeleton as ve, DanxInput as lt, DanxIcon as nt, gearIcon as st, DanxBadge as it, DanxToastContainer as ot } from "@thehammer/danx-ui";
|
|
3
|
+
const ee = "tv-chrome", ze = "template-verification:enabled";
|
|
4
4
|
let fe = null;
|
|
5
|
-
function
|
|
5
|
+
function rt(e) {
|
|
6
6
|
var t;
|
|
7
7
|
try {
|
|
8
8
|
return ((t = globalThis.localStorage) == null ? void 0 : t.getItem(e)) ?? null;
|
|
@@ -10,59 +10,52 @@ function ut(e) {
|
|
|
10
10
|
return null;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
function
|
|
14
|
-
var
|
|
13
|
+
function ut(e, t) {
|
|
14
|
+
var a;
|
|
15
15
|
try {
|
|
16
|
-
(
|
|
16
|
+
(a = globalThis.localStorage) == null || a.setItem(e, t);
|
|
17
17
|
} catch {
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
function
|
|
21
|
-
const t =
|
|
20
|
+
function dt(e) {
|
|
21
|
+
const t = rt(ze);
|
|
22
22
|
return t === null ? e : t === "true";
|
|
23
23
|
}
|
|
24
|
-
function
|
|
25
|
-
const t =
|
|
24
|
+
function Pe(e) {
|
|
25
|
+
const t = O(dt((e == null ? void 0 : e.defaultEnabled) ?? !1));
|
|
26
26
|
return ae(
|
|
27
27
|
t,
|
|
28
|
-
(
|
|
28
|
+
(a) => ut(ze, a ? "true" : "false")
|
|
29
29
|
), {
|
|
30
30
|
enabled: t,
|
|
31
31
|
data: (e == null ? void 0 : e.data) ?? {},
|
|
32
32
|
saveOverride: e == null ? void 0 : e.saveOverride,
|
|
33
33
|
workflowInputId: e == null ? void 0 : e.workflowInputId,
|
|
34
|
-
|
|
35
|
-
loading: (e == null ? void 0 : e.loading) ?? !1
|
|
36
|
-
comparisonOpen: z(!1)
|
|
34
|
+
detailUrl: e == null ? void 0 : e.detailUrl,
|
|
35
|
+
loading: (e == null ? void 0 : e.loading) ?? !1
|
|
37
36
|
};
|
|
38
37
|
}
|
|
39
|
-
function
|
|
40
|
-
return fe || (fe =
|
|
38
|
+
function ct() {
|
|
39
|
+
return fe || (fe = Pe()), fe;
|
|
41
40
|
}
|
|
42
|
-
function
|
|
43
|
-
fe =
|
|
41
|
+
function pl(e) {
|
|
42
|
+
fe = Pe(e);
|
|
44
43
|
}
|
|
45
|
-
function
|
|
46
|
-
const e =
|
|
44
|
+
function we() {
|
|
45
|
+
const e = ct();
|
|
47
46
|
return {
|
|
48
47
|
enabled: e.enabled,
|
|
49
48
|
data: e.data,
|
|
50
49
|
saveOverride: e.saveOverride,
|
|
51
50
|
workflowInputId: e.workflowInputId,
|
|
52
|
-
|
|
53
|
-
loading: e.loading
|
|
54
|
-
openComparison: () => {
|
|
55
|
-
e.comparisonOpen.value = !0;
|
|
56
|
-
}
|
|
51
|
+
detailUrl: e.detailUrl,
|
|
52
|
+
loading: e.loading
|
|
57
53
|
};
|
|
58
54
|
}
|
|
59
|
-
function
|
|
60
|
-
return Me().comparisonOpen;
|
|
61
|
-
}
|
|
62
|
-
function we(e) {
|
|
55
|
+
function _e(e) {
|
|
63
56
|
return typeof e != "number" || Number.isNaN(e) ? "unverifiable" : e <= 2 ? "low" : e === 3 ? "medium" : "high";
|
|
64
57
|
}
|
|
65
|
-
const
|
|
58
|
+
const vt = {
|
|
66
59
|
high: "bg-green-50 text-green-700 ring-1 ring-inset ring-green-600/20",
|
|
67
60
|
medium: "bg-yellow-50 text-yellow-700 ring-1 ring-inset ring-yellow-600/20",
|
|
68
61
|
low: "bg-red-50 text-red-700 ring-1 ring-inset ring-red-600/20",
|
|
@@ -70,115 +63,115 @@ const ft = {
|
|
|
70
63
|
// Same red family as 'low' (color-family-per-status is load-bearing, see docblock
|
|
71
64
|
// above) but a visibly darker/more saturated shade so the two stay distinguishable.
|
|
72
65
|
failed: "bg-red-100 text-red-800 ring-1 ring-inset ring-red-700/30"
|
|
73
|
-
},
|
|
66
|
+
}, K = {
|
|
74
67
|
high: "High",
|
|
75
68
|
medium: "Medium",
|
|
76
69
|
low: "Low",
|
|
77
70
|
unverifiable: "Unverifiable",
|
|
78
71
|
failed: "Failed"
|
|
79
|
-
},
|
|
80
|
-
function
|
|
81
|
-
return e ? e.resolved && e.resolved.source && e.resolved.source !== "none" ? e.resolved :
|
|
72
|
+
}, je = ["override", "extracted", "claim"];
|
|
73
|
+
function Re(e) {
|
|
74
|
+
return e ? e.resolved && e.resolved.source && e.resolved.source !== "none" ? e.resolved : ft(e.candidates) : { value: null, source: "none" };
|
|
82
75
|
}
|
|
83
|
-
function
|
|
76
|
+
function ft(e) {
|
|
84
77
|
if (e)
|
|
85
|
-
for (const t of
|
|
86
|
-
const
|
|
87
|
-
if (
|
|
88
|
-
return { value:
|
|
78
|
+
for (const t of je) {
|
|
79
|
+
const a = e[t];
|
|
80
|
+
if (a != null)
|
|
81
|
+
return { value: a.value, source: t };
|
|
89
82
|
}
|
|
90
83
|
return { value: null, source: "none" };
|
|
91
84
|
}
|
|
92
|
-
function
|
|
93
|
-
var
|
|
94
|
-
const t = (
|
|
85
|
+
function ml(e) {
|
|
86
|
+
var b, y;
|
|
87
|
+
const t = (y = (b = e == null ? void 0 : e.candidates) == null ? void 0 : b.extracted) == null ? void 0 : y.reasoning;
|
|
95
88
|
if (t == null) return null;
|
|
96
|
-
const
|
|
97
|
-
return
|
|
89
|
+
const a = String(t).trim();
|
|
90
|
+
return a === "" ? null : a;
|
|
98
91
|
}
|
|
99
|
-
function
|
|
100
|
-
return e ? typeof e.discrepancy == "boolean" ? e.discrepancy :
|
|
92
|
+
function gt(e) {
|
|
93
|
+
return e ? typeof e.discrepancy == "boolean" ? e.discrepancy : pt(e.candidates) : !1;
|
|
101
94
|
}
|
|
102
|
-
function
|
|
95
|
+
function pt(e) {
|
|
103
96
|
if (!e) return !1;
|
|
104
|
-
const t =
|
|
97
|
+
const t = je.map((a) => e[a]).filter((a) => a != null).map((a) => mt(a.value));
|
|
105
98
|
return t.length < 2 ? !1 : new Set(t).size > 1;
|
|
106
99
|
}
|
|
107
|
-
function
|
|
100
|
+
function mt(e) {
|
|
108
101
|
return JSON.stringify(e ?? null);
|
|
109
102
|
}
|
|
110
103
|
const xt = /* @__PURE__ */ new Set(["name", "type"]);
|
|
111
|
-
function
|
|
112
|
-
const
|
|
113
|
-
return
|
|
104
|
+
function Ue(e, t = "") {
|
|
105
|
+
const a = [];
|
|
106
|
+
return he(e, t, a), a;
|
|
114
107
|
}
|
|
115
|
-
function
|
|
108
|
+
function he(e, t, a) {
|
|
116
109
|
if (Array.isArray(e)) {
|
|
117
|
-
e.forEach((
|
|
110
|
+
e.forEach((s, r) => he(s, `${t}[${r}]`, a));
|
|
118
111
|
return;
|
|
119
112
|
}
|
|
120
|
-
if (!
|
|
121
|
-
const
|
|
122
|
-
for (const [
|
|
123
|
-
if (
|
|
124
|
-
const
|
|
125
|
-
if (Array.isArray(
|
|
126
|
-
|
|
113
|
+
if (!Ie(e)) return;
|
|
114
|
+
const y = e.__meta ?? {};
|
|
115
|
+
for (const [s, r] of Object.entries(e)) {
|
|
116
|
+
if (s === "__meta") continue;
|
|
117
|
+
const n = t ? `${t}.${s}` : s;
|
|
118
|
+
if (Array.isArray(r) || Ie(r)) {
|
|
119
|
+
he(r, n, a);
|
|
127
120
|
continue;
|
|
128
121
|
}
|
|
129
|
-
const
|
|
130
|
-
!
|
|
131
|
-
path:
|
|
132
|
-
label:
|
|
133
|
-
meta:
|
|
134
|
-
value:
|
|
135
|
-
unanchored: !
|
|
122
|
+
const C = y[s];
|
|
123
|
+
!C && xt.has(s) || a.push({
|
|
124
|
+
path: n,
|
|
125
|
+
label: s,
|
|
126
|
+
meta: C ?? null,
|
|
127
|
+
value: r,
|
|
128
|
+
unanchored: !C
|
|
136
129
|
});
|
|
137
130
|
}
|
|
138
131
|
}
|
|
139
|
-
function
|
|
132
|
+
function Ie(e) {
|
|
140
133
|
return typeof e == "object" && e !== null && !Array.isArray(e);
|
|
141
134
|
}
|
|
142
|
-
function
|
|
143
|
-
var
|
|
135
|
+
function Be(e) {
|
|
136
|
+
var a;
|
|
144
137
|
if (e.candidates.override) return !1;
|
|
145
|
-
const t = (
|
|
138
|
+
const t = (a = e.candidates.extracted) == null ? void 0 : a.confidence;
|
|
146
139
|
return e.discrepancy || t == null || t <= 2;
|
|
147
140
|
}
|
|
148
141
|
function yt(e) {
|
|
149
|
-
const t =
|
|
150
|
-
(
|
|
151
|
-
),
|
|
152
|
-
let
|
|
153
|
-
for (const
|
|
154
|
-
if (
|
|
155
|
-
|
|
142
|
+
const t = Ue(e).filter(
|
|
143
|
+
(s) => s.meta !== null
|
|
144
|
+
), a = t.length;
|
|
145
|
+
let b = 0, y = 0;
|
|
146
|
+
for (const s of t) {
|
|
147
|
+
if (s.meta.candidates.override) {
|
|
148
|
+
b++;
|
|
156
149
|
continue;
|
|
157
150
|
}
|
|
158
|
-
|
|
151
|
+
Be(s.meta) && y++;
|
|
159
152
|
}
|
|
160
153
|
return {
|
|
161
|
-
total:
|
|
162
|
-
verified:
|
|
163
|
-
needsReview:
|
|
164
|
-
percent:
|
|
154
|
+
total: a,
|
|
155
|
+
verified: b,
|
|
156
|
+
needsReview: y,
|
|
157
|
+
percent: a === 0 ? 100 : Math.round(b / a * 100)
|
|
165
158
|
};
|
|
166
159
|
}
|
|
167
|
-
function ht(e, t,
|
|
168
|
-
var
|
|
169
|
-
const
|
|
170
|
-
if (!e.saveOverride || !
|
|
171
|
-
const
|
|
172
|
-
return async (
|
|
173
|
-
const
|
|
160
|
+
function ht(e, t, a) {
|
|
161
|
+
var s;
|
|
162
|
+
const b = (s = t.value) == null ? void 0 : s.anchor;
|
|
163
|
+
if (!e.saveOverride || !b) return null;
|
|
164
|
+
const y = e.saveOverride;
|
|
165
|
+
return async (r, n) => {
|
|
166
|
+
const C = await y({
|
|
174
167
|
workflow_input_id: e.workflowInputId,
|
|
175
|
-
object_ids:
|
|
176
|
-
field:
|
|
177
|
-
field_path:
|
|
178
|
-
value:
|
|
179
|
-
source_choice:
|
|
168
|
+
object_ids: b.object_ids,
|
|
169
|
+
field: b.field,
|
|
170
|
+
field_path: b.field_path,
|
|
171
|
+
value: r,
|
|
172
|
+
source_choice: n
|
|
180
173
|
});
|
|
181
|
-
return
|
|
174
|
+
return a(C), C;
|
|
182
175
|
};
|
|
183
176
|
}
|
|
184
177
|
const bt = ["data-status", "title"], wt = {
|
|
@@ -187,7 +180,7 @@ const bt = ["data-status", "title"], wt = {
|
|
|
187
180
|
}, _t = {
|
|
188
181
|
key: 0,
|
|
189
182
|
class: "tv-confidence-label"
|
|
190
|
-
},
|
|
183
|
+
}, kt = /* @__PURE__ */ J({
|
|
191
184
|
__name: "ConfidenceIcon",
|
|
192
185
|
props: {
|
|
193
186
|
confidence: {},
|
|
@@ -195,9 +188,9 @@ const bt = ["data-status", "title"], wt = {
|
|
|
195
188
|
showLabel: { type: Boolean }
|
|
196
189
|
},
|
|
197
190
|
setup(e) {
|
|
198
|
-
const t = e,
|
|
199
|
-
() => t.status ??
|
|
200
|
-
),
|
|
191
|
+
const t = e, a = g(
|
|
192
|
+
() => t.status ?? _e(t.confidence)
|
|
193
|
+
), b = {
|
|
201
194
|
high: "✔",
|
|
202
195
|
// check
|
|
203
196
|
medium: "⚠",
|
|
@@ -207,29 +200,34 @@ const bt = ["data-status", "title"], wt = {
|
|
|
207
200
|
unverifiable: "?",
|
|
208
201
|
failed: "⊗"
|
|
209
202
|
// circled x — distinct from low's plain x
|
|
210
|
-
},
|
|
211
|
-
return (
|
|
212
|
-
class:
|
|
213
|
-
"data-status":
|
|
214
|
-
title:
|
|
203
|
+
}, y = g(() => b[a.value]), s = g(() => vt[a.value]), r = g(() => K[a.value]);
|
|
204
|
+
return (n, C) => (l(), c("span", {
|
|
205
|
+
class: A(["tv-confidence-icon inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] font-semibold leading-none", s.value]),
|
|
206
|
+
"data-status": a.value,
|
|
207
|
+
title: r.value
|
|
215
208
|
}, [
|
|
216
|
-
|
|
217
|
-
e.showLabel ? (
|
|
209
|
+
i("span", wt, v(y.value), 1),
|
|
210
|
+
e.showLabel ? (l(), c("span", _t, v(r.value), 1)) : h("", !0)
|
|
218
211
|
], 10, bt));
|
|
219
212
|
}
|
|
220
213
|
});
|
|
221
|
-
async function
|
|
222
|
-
|
|
223
|
-
|
|
214
|
+
async function $t(e, t) {
|
|
215
|
+
var n;
|
|
216
|
+
const a = t.object_ids.at(-1), b = new URLSearchParams({
|
|
217
|
+
object_id: String(a),
|
|
224
218
|
field: t.field
|
|
225
|
-
}),
|
|
226
|
-
if (!
|
|
219
|
+
}), y = e.includes("?") ? "&" : "?", s = await fetch(`${e}${y}${b}`);
|
|
220
|
+
if (!s.ok)
|
|
227
221
|
throw new Error(
|
|
228
|
-
`data-point-
|
|
222
|
+
`data-point-detail ${s.status}: ${await s.text()}`
|
|
229
223
|
);
|
|
230
|
-
|
|
224
|
+
const r = await s.json();
|
|
225
|
+
return {
|
|
226
|
+
extracted: r.extracted ?? null,
|
|
227
|
+
audit: ((n = r.audit) == null ? void 0 : n.data) ?? []
|
|
228
|
+
};
|
|
231
229
|
}
|
|
232
|
-
const
|
|
230
|
+
const Ct = "api_log", St = "user", Vt = "failed_file", Nt = {
|
|
233
231
|
pages: [],
|
|
234
232
|
documents: [],
|
|
235
233
|
apiLogIds: [],
|
|
@@ -238,21 +236,21 @@ const $t = "api_log", Ct = "user", St = "failed_file", Vt = {
|
|
|
238
236
|
quoteCount: 0,
|
|
239
237
|
isEmpty: !0
|
|
240
238
|
};
|
|
241
|
-
function
|
|
242
|
-
var
|
|
243
|
-
if (!e || e.length === 0) return { ...
|
|
244
|
-
const t = /* @__PURE__ */ new Map(),
|
|
245
|
-
for (const
|
|
246
|
-
if (
|
|
247
|
-
|
|
239
|
+
function me(e) {
|
|
240
|
+
var r;
|
|
241
|
+
if (!e || e.length === 0) return { ...Nt };
|
|
242
|
+
const t = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), b = [], y = [];
|
|
243
|
+
for (const n of e) {
|
|
244
|
+
if (n.source_type === Vt) {
|
|
245
|
+
y.push(n);
|
|
248
246
|
continue;
|
|
249
247
|
}
|
|
250
|
-
if (
|
|
251
|
-
const
|
|
252
|
-
let
|
|
253
|
-
|
|
254
|
-
key:
|
|
255
|
-
pageNumber:
|
|
248
|
+
if (n.api_log_id !== void 0 && n.api_log_id !== null && (b.includes(n.api_log_id) || b.push(n.api_log_id)), n.source_type === Ct || n.source_type === St || !qt(n)) continue;
|
|
249
|
+
const C = It(n);
|
|
250
|
+
let u = t.get(C);
|
|
251
|
+
u || (u = {
|
|
252
|
+
key: C,
|
|
253
|
+
pageNumber: ue(n),
|
|
256
254
|
label: "",
|
|
257
255
|
documentName: null,
|
|
258
256
|
file: null,
|
|
@@ -261,58 +259,58 @@ function oe(e) {
|
|
|
261
259
|
quotes: [],
|
|
262
260
|
explanations: [],
|
|
263
261
|
sourceIds: []
|
|
264
|
-
}, t.set(
|
|
265
|
-
for (const
|
|
266
|
-
const
|
|
267
|
-
|
|
262
|
+
}, t.set(C, u)), !u.file && n.file && (u.file = Dt(n)), u.url || (u.url = ((r = n.file) == null ? void 0 : r.url) ?? n.file_url ?? null), !u.document && n.original_file && (u.document = n.original_file), u.pageNumber === null && (u.pageNumber = ue(n)), n.id !== void 0 && n.id !== null && u.sourceIds.push(n.id);
|
|
263
|
+
for (const _ of n.texts ?? []) {
|
|
264
|
+
const m = String(_).trim();
|
|
265
|
+
m && !u.quotes.includes(m) && u.quotes.push(m);
|
|
268
266
|
}
|
|
269
|
-
if (
|
|
270
|
-
const
|
|
271
|
-
|
|
267
|
+
if (n.explanation) {
|
|
268
|
+
const _ = String(n.explanation).trim();
|
|
269
|
+
_ && !u.explanations.includes(_) && u.explanations.push(_);
|
|
272
270
|
}
|
|
273
|
-
|
|
271
|
+
u.documentName || (u.documentName = Et(n)), n.original_file && a.set(String(n.original_file.id), n.original_file);
|
|
274
272
|
}
|
|
275
|
-
const
|
|
276
|
-
for (const
|
|
277
|
-
return
|
|
278
|
-
pages:
|
|
279
|
-
documents: [...
|
|
280
|
-
apiLogIds:
|
|
281
|
-
unresolved:
|
|
282
|
-
pageCount:
|
|
283
|
-
quoteCount:
|
|
284
|
-
isEmpty:
|
|
273
|
+
const s = [...t.values()];
|
|
274
|
+
for (const n of s) n.label = Tt(n);
|
|
275
|
+
return s.sort(Ot), {
|
|
276
|
+
pages: s,
|
|
277
|
+
documents: [...a.values()],
|
|
278
|
+
apiLogIds: b,
|
|
279
|
+
unresolved: y,
|
|
280
|
+
pageCount: s.length,
|
|
281
|
+
quoteCount: s.reduce((n, C) => n + C.quotes.length, 0),
|
|
282
|
+
isEmpty: s.length === 0 && y.length === 0
|
|
285
283
|
};
|
|
286
284
|
}
|
|
287
|
-
function
|
|
285
|
+
function qt(e) {
|
|
288
286
|
var t;
|
|
289
|
-
return !!(e.file || e.file_url || e.file_name || e.file_id !== void 0 || e.stored_file_id !== void 0 ||
|
|
287
|
+
return !!(e.file || e.file_url || e.file_name || e.file_id !== void 0 || e.stored_file_id !== void 0 || ue(e) !== null || (((t = e.texts) == null ? void 0 : t.length) ?? 0) > 0);
|
|
290
288
|
}
|
|
291
|
-
function
|
|
292
|
-
var
|
|
293
|
-
const t = ((
|
|
294
|
-
return t != null ?
|
|
289
|
+
function It(e) {
|
|
290
|
+
var b;
|
|
291
|
+
const t = ((b = e.file) == null ? void 0 : b.id) ?? e.stored_file_id ?? e.file_id ?? e.file_name, a = ue(e);
|
|
292
|
+
return t != null ? a === null ? String(t) : `${t}#${a}` : a !== null ? `page-${a}` : `source-${e.id ?? "unknown"}`;
|
|
295
293
|
}
|
|
296
|
-
function
|
|
294
|
+
function ue(e) {
|
|
297
295
|
const t = e.page ?? e.page_number;
|
|
298
296
|
return t == null ? null : Number(t);
|
|
299
297
|
}
|
|
300
|
-
function
|
|
298
|
+
function Et(e) {
|
|
301
299
|
var t;
|
|
302
300
|
return ((t = e.original_file) == null ? void 0 : t.name) ?? e.file_name ?? null;
|
|
303
301
|
}
|
|
304
|
-
function
|
|
305
|
-
const t = e.file,
|
|
306
|
-
return
|
|
302
|
+
function Dt(e) {
|
|
303
|
+
const t = e.file, a = ue(e);
|
|
304
|
+
return a === null || t.page_number != null ? t : { ...t, page_number: a };
|
|
307
305
|
}
|
|
308
|
-
function
|
|
306
|
+
function Tt(e) {
|
|
309
307
|
var t;
|
|
310
308
|
return e.pageNumber !== null ? `Page ${e.pageNumber}` : (t = e.file) != null && t.name ? e.file.name : e.documentName ? e.documentName : "Cited source";
|
|
311
309
|
}
|
|
312
|
-
function
|
|
310
|
+
function Ot(e, t) {
|
|
313
311
|
return e.pageNumber === null && t.pageNumber === null ? 0 : e.pageNumber === null ? 1 : t.pageNumber === null ? -1 : e.pageNumber - t.pageNumber;
|
|
314
312
|
}
|
|
315
|
-
function
|
|
313
|
+
function Me(e) {
|
|
316
314
|
if (e.isEmpty) return "No citations recorded";
|
|
317
315
|
const t = [
|
|
318
316
|
`${e.pageCount} ${e.pageCount === 1 ? "page" : "pages"}`
|
|
@@ -327,100 +325,100 @@ function Ee(e) {
|
|
|
327
325
|
"*"
|
|
328
326
|
);
|
|
329
327
|
}
|
|
330
|
-
const
|
|
328
|
+
const Lt = { class: "tv-audit-call rounded-lg border border-gray-200 shadow-sm" }, At = { class: "tv-audit-call-header flex flex-wrap items-center gap-2 border-b border-gray-100 bg-gray-50 px-3 py-2" }, zt = {
|
|
331
329
|
key: 3,
|
|
332
330
|
class: "font-mono text-[11px] text-gray-400"
|
|
333
331
|
}, Pt = {
|
|
334
332
|
key: 4,
|
|
335
333
|
class: "text-[11px] font-medium text-gray-500"
|
|
336
|
-
},
|
|
334
|
+
}, jt = {
|
|
337
335
|
key: 5,
|
|
338
336
|
class: "text-[11px] text-gray-400"
|
|
339
|
-
}, Rt = { class: "tv-audit-call-body flex flex-col gap-2 p-3" }, Ut = /* @__PURE__ */
|
|
337
|
+
}, Rt = { class: "tv-audit-call-body flex flex-col gap-2 p-3" }, Ut = /* @__PURE__ */ J({
|
|
340
338
|
__name: "AuditCallCard",
|
|
341
339
|
props: {
|
|
342
340
|
call: {}
|
|
343
341
|
},
|
|
344
342
|
setup(e) {
|
|
345
|
-
const t = e,
|
|
346
|
-
const
|
|
347
|
-
return
|
|
348
|
-
}),
|
|
349
|
-
const
|
|
350
|
-
return
|
|
351
|
-
}),
|
|
343
|
+
const t = e, a = g(() => {
|
|
344
|
+
const n = t.call.status_code;
|
|
345
|
+
return n == null ? "muted" : n >= 200 && n < 300 ? "success" : n >= 400 ? "danger" : "warning";
|
|
346
|
+
}), b = g(() => {
|
|
347
|
+
const n = t.call.run_time_ms;
|
|
348
|
+
return n == null ? null : n >= 1e3 ? `${(n / 1e3).toFixed(1)}s` : `${n}ms`;
|
|
349
|
+
}), y = g(() => {
|
|
352
350
|
if (!t.call.started_at) return null;
|
|
353
|
-
const
|
|
354
|
-
return Number.isNaN(
|
|
355
|
-
}),
|
|
351
|
+
const n = new Date(t.call.started_at);
|
|
352
|
+
return Number.isNaN(n.getTime()) ? t.call.started_at : n.toLocaleString();
|
|
353
|
+
}), s = g(
|
|
356
354
|
() => JSON.stringify(t.call.request ?? null, null, 2)
|
|
357
|
-
),
|
|
355
|
+
), r = g(
|
|
358
356
|
() => JSON.stringify(t.call.response ?? null, null, 2)
|
|
359
357
|
);
|
|
360
|
-
return (
|
|
361
|
-
|
|
362
|
-
e.call.stage ? (
|
|
358
|
+
return (n, C) => (l(), c("div", Lt, [
|
|
359
|
+
i("div", At, [
|
|
360
|
+
e.call.stage ? (l(), V(f(M), {
|
|
363
361
|
key: 0,
|
|
364
362
|
variant: "muted",
|
|
365
363
|
size: "xxs",
|
|
366
364
|
class: "tv-audit-stage"
|
|
367
365
|
}, {
|
|
368
|
-
default:
|
|
369
|
-
|
|
366
|
+
default: S(() => [
|
|
367
|
+
N(v(e.call.stage), 1)
|
|
370
368
|
]),
|
|
371
369
|
_: 1
|
|
372
|
-
})) :
|
|
373
|
-
e.call.model ? (
|
|
370
|
+
})) : h("", !0),
|
|
371
|
+
e.call.model ? (l(), V(f(M), {
|
|
374
372
|
key: 1,
|
|
375
373
|
variant: "info",
|
|
376
374
|
size: "xs",
|
|
377
375
|
class: "tv-audit-model"
|
|
378
376
|
}, {
|
|
379
|
-
default:
|
|
380
|
-
|
|
377
|
+
default: S(() => [
|
|
378
|
+
N(v(e.call.model), 1)
|
|
381
379
|
]),
|
|
382
380
|
_: 1
|
|
383
|
-
})) :
|
|
384
|
-
e.call.service ? (
|
|
381
|
+
})) : h("", !0),
|
|
382
|
+
e.call.service ? (l(), V(f(M), {
|
|
385
383
|
key: 2,
|
|
386
384
|
variant: "muted",
|
|
387
385
|
size: "xxs"
|
|
388
386
|
}, {
|
|
389
|
-
default:
|
|
390
|
-
|
|
387
|
+
default: S(() => [
|
|
388
|
+
N(v(e.call.service), 1)
|
|
391
389
|
]),
|
|
392
390
|
_: 1
|
|
393
|
-
})) :
|
|
394
|
-
e.call.endpoint ? (
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
variant:
|
|
391
|
+
})) : h("", !0),
|
|
392
|
+
e.call.endpoint ? (l(), c("span", zt, v(e.call.endpoint), 1)) : h("", !0),
|
|
393
|
+
C[0] || (C[0] = i("span", { class: "flex-1" }, null, -1)),
|
|
394
|
+
I(f(M), {
|
|
395
|
+
variant: a.value,
|
|
398
396
|
size: "xxs",
|
|
399
397
|
class: "tv-audit-status"
|
|
400
398
|
}, {
|
|
401
|
-
default:
|
|
402
|
-
|
|
399
|
+
default: S(() => [
|
|
400
|
+
N(v(e.call.status_code ?? "…"), 1)
|
|
403
401
|
]),
|
|
404
402
|
_: 1
|
|
405
403
|
}, 8, ["variant"]),
|
|
406
|
-
|
|
407
|
-
|
|
404
|
+
b.value ? (l(), c("span", Pt, v(b.value), 1)) : h("", !0),
|
|
405
|
+
y.value ? (l(), c("span", jt, v(y.value), 1)) : h("", !0)
|
|
408
406
|
]),
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
"model-value":
|
|
407
|
+
i("div", Rt, [
|
|
408
|
+
i("div", null, [
|
|
409
|
+
C[1] || (C[1] = i("div", { class: "mb-1 text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, " Request ", -1)),
|
|
410
|
+
I(f(qe), {
|
|
411
|
+
"model-value": s.value,
|
|
414
412
|
format: "json",
|
|
415
413
|
collapsible: "",
|
|
416
414
|
"default-collapsed": "",
|
|
417
415
|
class: "tv-audit-request"
|
|
418
416
|
}, null, 8, ["model-value"])
|
|
419
417
|
]),
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
"model-value":
|
|
418
|
+
i("div", null, [
|
|
419
|
+
C[2] || (C[2] = i("div", { class: "mb-1 text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, " Response ", -1)),
|
|
420
|
+
I(f(qe), {
|
|
421
|
+
"model-value": r.value,
|
|
424
422
|
format: "json",
|
|
425
423
|
collapsible: "",
|
|
426
424
|
"default-collapsed": "",
|
|
@@ -430,16 +428,16 @@ const Tt = { class: "tv-audit-call rounded-lg border border-gray-200 shadow-sm"
|
|
|
430
428
|
])
|
|
431
429
|
]));
|
|
432
430
|
}
|
|
433
|
-
}),
|
|
431
|
+
}), Bt = {
|
|
434
432
|
key: 0,
|
|
435
433
|
class: "tv-citation-thumb shrink-0"
|
|
436
|
-
}, Mt = { class: "tv-citation-quotes flex min-w-0 flex-1 flex-col gap-2" },
|
|
434
|
+
}, Mt = { class: "tv-citation-quotes flex min-w-0 flex-1 flex-col gap-2" }, Ft = {
|
|
437
435
|
key: 0,
|
|
438
436
|
class: "tv-quote-list flex flex-col gap-2"
|
|
439
|
-
},
|
|
437
|
+
}, Yt = { class: "tv-quote-index mr-1 not-italic text-[10px] font-semibold text-amber-600" }, Kt = {
|
|
440
438
|
key: 1,
|
|
441
439
|
class: "tv-quote-empty rounded-md border border-dashed border-gray-200 px-3 py-2 text-xs text-gray-400"
|
|
442
|
-
},
|
|
440
|
+
}, Ht = { class: "tv-citation-actions mt-1 flex flex-wrap items-center gap-2" }, De = /* @__PURE__ */ J({
|
|
443
441
|
__name: "CitationPage",
|
|
444
442
|
props: {
|
|
445
443
|
page: {},
|
|
@@ -447,79 +445,145 @@ const Tt = { class: "tv-audit-call rounded-lg border border-gray-200 shadow-sm"
|
|
|
447
445
|
},
|
|
448
446
|
emits: ["view", "document"],
|
|
449
447
|
setup(e, { emit: t }) {
|
|
450
|
-
const
|
|
451
|
-
return (
|
|
452
|
-
class:
|
|
448
|
+
const a = t;
|
|
449
|
+
return (b, y) => (l(), c("div", {
|
|
450
|
+
class: A(["tv-citation-page flex gap-4", e.dense ? "tv-citation-page-dense" : ""])
|
|
453
451
|
}, [
|
|
454
|
-
e.page.file ? (
|
|
455
|
-
|
|
452
|
+
e.page.file ? (l(), c("div", Bt, [
|
|
453
|
+
I(f(et), {
|
|
456
454
|
file: e.page.file,
|
|
457
455
|
size: e.dense ? "md" : "lg",
|
|
458
456
|
fit: "cover",
|
|
459
457
|
downloadable: "",
|
|
460
458
|
class: "cursor-zoom-in",
|
|
461
|
-
onClick:
|
|
459
|
+
onClick: y[0] || (y[0] = (s) => a("view"))
|
|
462
460
|
}, null, 8, ["file", "size"])
|
|
463
|
-
])) :
|
|
464
|
-
|
|
465
|
-
e.page.quotes.length ? (
|
|
466
|
-
(
|
|
467
|
-
key:
|
|
461
|
+
])) : h("", !0),
|
|
462
|
+
i("div", Mt, [
|
|
463
|
+
e.page.quotes.length ? (l(), c("ol", Ft, [
|
|
464
|
+
(l(!0), c(B, null, H(e.page.quotes, (s, r) => (l(), c("li", {
|
|
465
|
+
key: r,
|
|
468
466
|
class: "tv-quote rounded-r-md border-l-[3px] border-amber-300 bg-amber-50/60 py-1.5 pl-3 pr-3 text-sm italic leading-relaxed text-gray-700"
|
|
469
467
|
}, [
|
|
470
|
-
|
|
471
|
-
|
|
468
|
+
i("span", Yt, v(r + 1), 1),
|
|
469
|
+
N("“" + v(s) + "” ", 1)
|
|
472
470
|
]))), 128))
|
|
473
|
-
])) : (
|
|
474
|
-
(
|
|
475
|
-
key: `x${
|
|
471
|
+
])) : (l(), c("p", Kt, " This page was cited without a verbatim quote — the value was read from the page as a whole. ")),
|
|
472
|
+
(l(!0), c(B, null, H(e.page.explanations, (s, r) => (l(), c("p", {
|
|
473
|
+
key: `x${r}`,
|
|
476
474
|
class: "tv-citation-explanation text-xs text-gray-500"
|
|
477
|
-
},
|
|
478
|
-
|
|
479
|
-
e.page.file ? (
|
|
475
|
+
}, v(s), 1))), 128)),
|
|
476
|
+
i("div", Ht, [
|
|
477
|
+
e.page.file ? (l(), V(f(re), {
|
|
480
478
|
key: 0,
|
|
481
479
|
size: "xs",
|
|
482
480
|
variant: "info",
|
|
483
481
|
class: "tv-view-page",
|
|
484
|
-
onClick:
|
|
482
|
+
onClick: y[1] || (y[1] = (s) => a("view"))
|
|
485
483
|
}, {
|
|
486
|
-
default:
|
|
487
|
-
|
|
484
|
+
default: S(() => [...y[3] || (y[3] = [
|
|
485
|
+
N("View page full screen", -1)
|
|
488
486
|
])]),
|
|
489
487
|
_: 1
|
|
490
|
-
})) :
|
|
491
|
-
e.page.document ? (
|
|
488
|
+
})) : h("", !0),
|
|
489
|
+
e.page.document ? (l(), V(f(re), {
|
|
492
490
|
key: 1,
|
|
493
491
|
size: "xs",
|
|
494
492
|
variant: "muted",
|
|
495
493
|
class: "tv-open-document",
|
|
496
|
-
onClick:
|
|
494
|
+
onClick: y[2] || (y[2] = (s) => a("document"))
|
|
497
495
|
}, {
|
|
498
|
-
default:
|
|
499
|
-
|
|
496
|
+
default: S(() => [
|
|
497
|
+
N("Open " + v(e.page.document.name), 1)
|
|
500
498
|
]),
|
|
501
499
|
_: 1
|
|
502
|
-
})) :
|
|
500
|
+
})) : h("", !0)
|
|
503
501
|
])
|
|
504
502
|
])
|
|
505
503
|
], 2));
|
|
506
504
|
}
|
|
507
|
-
}),
|
|
505
|
+
}), Jt = { class: "tv-disclosure divide-y divide-gray-200" }, Gt = ["id", "aria-expanded", "aria-controls", "onClick"], Qt = { class: "min-w-0 flex-1" }, Wt = ["id", "aria-labelledby"], Fe = /* @__PURE__ */ J({
|
|
506
|
+
__name: "TvDisclosure",
|
|
507
|
+
props: {
|
|
508
|
+
items: {},
|
|
509
|
+
modelValue: {},
|
|
510
|
+
idPrefix: { default: "tv-disclosure" }
|
|
511
|
+
},
|
|
512
|
+
emits: ["update:modelValue"],
|
|
513
|
+
setup(e, { emit: t }) {
|
|
514
|
+
const a = e, b = t, y = g(() => new Set(a.modelValue)), s = (u) => y.value.has(u);
|
|
515
|
+
function r(u) {
|
|
516
|
+
const _ = new Set(y.value);
|
|
517
|
+
_.has(u) ? _.delete(u) : _.add(u), b("update:modelValue", [..._]);
|
|
518
|
+
}
|
|
519
|
+
const n = (u) => `${a.idPrefix}-h-${u}`, C = (u) => `${a.idPrefix}-p-${u}`;
|
|
520
|
+
return (u, _) => (l(), c("div", Jt, [
|
|
521
|
+
(l(!0), c(B, null, H(e.items, (m) => (l(), c("div", {
|
|
522
|
+
key: m.value,
|
|
523
|
+
class: A(["tv-disclosure__item", s(m.value) ? "is-open" : ""])
|
|
524
|
+
}, [
|
|
525
|
+
i("button", {
|
|
526
|
+
id: n(m.value),
|
|
527
|
+
type: "button",
|
|
528
|
+
class: "tv-disclosure__header flex w-full items-center gap-3 px-3 py-2.5 text-left transition-colors hover:bg-gray-50",
|
|
529
|
+
"aria-expanded": s(m.value),
|
|
530
|
+
"aria-controls": C(m.value),
|
|
531
|
+
onClick: (T) => r(m.value)
|
|
532
|
+
}, [
|
|
533
|
+
i("span", Qt, [
|
|
534
|
+
xe(u.$slots, "header", {
|
|
535
|
+
item: m,
|
|
536
|
+
isOpen: s(m.value)
|
|
537
|
+
}, () => [
|
|
538
|
+
N(v(m.label), 1)
|
|
539
|
+
])
|
|
540
|
+
]),
|
|
541
|
+
(l(), c("svg", {
|
|
542
|
+
class: A(["tv-disclosure__chevron h-4 w-4 shrink-0 text-gray-400 transition-transform duration-200", s(m.value) ? "rotate-180" : ""]),
|
|
543
|
+
viewBox: "0 0 20 20",
|
|
544
|
+
fill: "none",
|
|
545
|
+
"aria-hidden": "true"
|
|
546
|
+
}, [..._[0] || (_[0] = [
|
|
547
|
+
i("path", {
|
|
548
|
+
d: "M5 7.5 10 12.5 15 7.5",
|
|
549
|
+
stroke: "currentColor",
|
|
550
|
+
"stroke-width": "1.75",
|
|
551
|
+
"stroke-linecap": "round",
|
|
552
|
+
"stroke-linejoin": "round"
|
|
553
|
+
}, null, -1)
|
|
554
|
+
])], 2))
|
|
555
|
+
], 8, Gt),
|
|
556
|
+
s(m.value) ? (l(), c("div", {
|
|
557
|
+
key: 0,
|
|
558
|
+
id: C(m.value),
|
|
559
|
+
role: "region",
|
|
560
|
+
"aria-labelledby": n(m.value),
|
|
561
|
+
class: "tv-disclosure__panel border-t border-gray-100 bg-gray-50/40 px-3 py-3"
|
|
562
|
+
}, [
|
|
563
|
+
xe(u.$slots, "panel", {
|
|
564
|
+
item: m,
|
|
565
|
+
isOpen: !0
|
|
566
|
+
})
|
|
567
|
+
], 8, Wt)) : h("", !0)
|
|
568
|
+
], 2))), 128))
|
|
569
|
+
]));
|
|
570
|
+
}
|
|
571
|
+
}), Xt = { class: "tv-citation-list flex flex-col gap-2" }, Zt = {
|
|
508
572
|
key: 0,
|
|
509
573
|
class: "tv-citation-list-controls flex justify-end"
|
|
510
|
-
},
|
|
574
|
+
}, ea = { class: "tv-citation-header flex min-w-0 flex-1 items-center gap-3 text-left" }, ta = ["src", "alt"], aa = { class: "flex min-w-0 flex-1 flex-col" }, la = { class: "flex flex-wrap items-center gap-2" }, na = { class: "tv-citation-page-label text-sm font-semibold text-gray-900" }, sa = {
|
|
511
575
|
key: 0,
|
|
512
576
|
class: "tv-citation-document-name truncate text-xs text-gray-400"
|
|
513
|
-
},
|
|
577
|
+
}, ia = {
|
|
514
578
|
key: 0,
|
|
515
579
|
class: "tv-citation-preview truncate text-xs italic text-gray-500"
|
|
516
|
-
},
|
|
580
|
+
}, oa = { class: "tv-citation-header mb-2 flex flex-wrap items-center gap-2" }, ra = { class: "tv-citation-page-label text-sm font-semibold text-gray-900" }, ua = {
|
|
517
581
|
key: 0,
|
|
518
582
|
class: "tv-citation-document-name text-xs text-gray-400"
|
|
519
|
-
},
|
|
583
|
+
}, da = { class: "tv-page-dialog flex h-full min-h-0 flex-col gap-3 lg:flex-row" }, ca = {
|
|
520
584
|
key: 0,
|
|
521
585
|
class: "tv-page-dialog-quotes max-h-40 shrink-0 overflow-y-auto rounded-lg border border-gray-200 bg-gray-50 p-3 lg:max-h-none lg:w-80"
|
|
522
|
-
},
|
|
586
|
+
}, va = { class: "mb-2 text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, fa = { class: "flex flex-col gap-1.5" }, ga = /* @__PURE__ */ J({
|
|
523
587
|
__name: "CitationPageList",
|
|
524
588
|
props: {
|
|
525
589
|
pages: {},
|
|
@@ -527,165 +591,165 @@ const Tt = { class: "tv-audit-call rounded-lg border border-gray-200 shadow-sm"
|
|
|
527
591
|
dense: { type: Boolean, default: !1 }
|
|
528
592
|
},
|
|
529
593
|
setup(e) {
|
|
530
|
-
const t = e,
|
|
531
|
-
() => t.pages.map((
|
|
532
|
-
),
|
|
594
|
+
const t = e, a = g(
|
|
595
|
+
() => t.pages.map((w) => ({ value: w.key, label: w.label }))
|
|
596
|
+
), b = O([]);
|
|
533
597
|
ae(
|
|
534
598
|
() => t.pages,
|
|
535
|
-
(
|
|
536
|
-
|
|
599
|
+
(w) => {
|
|
600
|
+
b.value = w.length ? [w[0].key] : [];
|
|
537
601
|
},
|
|
538
602
|
{ immediate: !0 }
|
|
539
603
|
);
|
|
540
|
-
const
|
|
541
|
-
() => t.pages.length > 0 &&
|
|
604
|
+
const y = g(
|
|
605
|
+
() => t.pages.length > 0 && b.value.length === t.pages.length
|
|
542
606
|
);
|
|
543
|
-
function
|
|
544
|
-
|
|
607
|
+
function s() {
|
|
608
|
+
b.value = y.value ? [] : t.pages.map((w) => w.key);
|
|
545
609
|
}
|
|
546
|
-
const
|
|
547
|
-
() => new Map(t.pages.map((
|
|
610
|
+
const r = g(
|
|
611
|
+
() => new Map(t.pages.map((w) => [w.key, w]))
|
|
548
612
|
);
|
|
549
|
-
function
|
|
550
|
-
const
|
|
551
|
-
return
|
|
613
|
+
function n(w) {
|
|
614
|
+
const D = w.quotes[0];
|
|
615
|
+
return D ? D.length > 96 ? `${D.slice(0, 96)}…` : D : "";
|
|
552
616
|
}
|
|
553
|
-
const
|
|
554
|
-
() => t.pages.map((
|
|
555
|
-
),
|
|
556
|
-
get: () =>
|
|
557
|
-
set: (
|
|
558
|
-
|
|
617
|
+
const C = g(
|
|
618
|
+
() => t.pages.map((w) => w.file).filter((w) => !!w)
|
|
619
|
+
), u = O(null), _ = O(!1), m = O(null), T = g({
|
|
620
|
+
get: () => u.value !== null,
|
|
621
|
+
set: (w) => {
|
|
622
|
+
w || (u.value = null, m.value = null, _.value = !1);
|
|
559
623
|
}
|
|
560
|
-
}),
|
|
561
|
-
() =>
|
|
562
|
-
),
|
|
563
|
-
if (
|
|
564
|
-
const
|
|
565
|
-
return
|
|
566
|
-
(
|
|
624
|
+
}), z = g(
|
|
625
|
+
() => _.value ? [] : C.value
|
|
626
|
+
), q = g(() => {
|
|
627
|
+
if (_.value) return null;
|
|
628
|
+
const w = m.value ?? u.value;
|
|
629
|
+
return w ? t.pages.find(
|
|
630
|
+
(D) => D.file && String(D.file.id) === String(w.id)
|
|
567
631
|
) ?? null : null;
|
|
568
|
-
}),
|
|
569
|
-
if (!
|
|
570
|
-
if (
|
|
571
|
-
const
|
|
572
|
-
return
|
|
632
|
+
}), F = g(() => {
|
|
633
|
+
if (!u.value) return "";
|
|
634
|
+
if (_.value) return u.value.name;
|
|
635
|
+
const w = q.value;
|
|
636
|
+
return w ? w.documentName ? `${w.label} · ${w.documentName}` : w.label : u.value.name;
|
|
573
637
|
});
|
|
574
|
-
function
|
|
575
|
-
|
|
638
|
+
function Y(w) {
|
|
639
|
+
w.file && (_.value = !1, m.value = w.file, u.value = w.file);
|
|
576
640
|
}
|
|
577
|
-
function
|
|
578
|
-
|
|
641
|
+
function U(w) {
|
|
642
|
+
w.document && (_.value = !0, m.value = null, u.value = w.document);
|
|
579
643
|
}
|
|
580
|
-
return (
|
|
581
|
-
e.collapsible && e.pages.length > 1 ? (
|
|
582
|
-
|
|
644
|
+
return (w, D) => (l(), c("div", Xt, [
|
|
645
|
+
e.collapsible && e.pages.length > 1 ? (l(), c("div", Zt, [
|
|
646
|
+
I(f(re), {
|
|
583
647
|
size: "xxs",
|
|
584
648
|
variant: "muted",
|
|
585
649
|
class: "tv-toggle-all-pages",
|
|
586
|
-
onClick:
|
|
650
|
+
onClick: s
|
|
587
651
|
}, {
|
|
588
|
-
default:
|
|
589
|
-
|
|
652
|
+
default: S(() => [
|
|
653
|
+
N(v(y.value ? "Collapse all" : "Expand all"), 1)
|
|
590
654
|
]),
|
|
591
655
|
_: 1
|
|
592
656
|
})
|
|
593
|
-
])) :
|
|
594
|
-
e.collapsible ? (
|
|
657
|
+
])) : h("", !0),
|
|
658
|
+
e.collapsible ? (l(), V(Fe, {
|
|
595
659
|
key: 1,
|
|
596
|
-
modelValue:
|
|
597
|
-
"onUpdate:modelValue":
|
|
598
|
-
items:
|
|
599
|
-
|
|
600
|
-
class: "tv-citation-accordion rounded-lg border border-gray-200"
|
|
660
|
+
modelValue: b.value,
|
|
661
|
+
"onUpdate:modelValue": D[0] || (D[0] = (k) => b.value = k),
|
|
662
|
+
items: a.value,
|
|
663
|
+
"id-prefix": "tv-citation",
|
|
664
|
+
class: "tv-citation-accordion overflow-hidden rounded-lg border border-gray-200"
|
|
601
665
|
}, {
|
|
602
|
-
header:
|
|
603
|
-
var j,
|
|
666
|
+
header: S(({ item: k, isOpen: P }) => {
|
|
667
|
+
var j, Q, W, X, p;
|
|
604
668
|
return [
|
|
605
|
-
|
|
606
|
-
(
|
|
669
|
+
i("span", ea, [
|
|
670
|
+
(Q = (j = r.value.get(k.value)) == null ? void 0 : j.file) != null && Q.url ? (l(), c("img", {
|
|
607
671
|
key: 0,
|
|
608
|
-
src:
|
|
609
|
-
alt:
|
|
672
|
+
src: r.value.get(k.value).file.url,
|
|
673
|
+
alt: r.value.get(k.value).label,
|
|
610
674
|
class: "tv-citation-header-thumb h-10 w-8 shrink-0 rounded border border-gray-200 object-cover",
|
|
611
675
|
loading: "lazy"
|
|
612
|
-
}, null, 8,
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
(
|
|
617
|
-
|
|
676
|
+
}, null, 8, ta)) : h("", !0),
|
|
677
|
+
i("span", aa, [
|
|
678
|
+
i("span", la, [
|
|
679
|
+
i("span", na, v((W = r.value.get(k.value)) == null ? void 0 : W.label), 1),
|
|
680
|
+
(X = r.value.get(k.value)) != null && X.documentName ? (l(), c("span", sa, v((p = r.value.get(k.value)) == null ? void 0 : p.documentName), 1)) : h("", !0),
|
|
681
|
+
I(f(M), {
|
|
618
682
|
variant: "warning",
|
|
619
683
|
size: "xxs",
|
|
620
684
|
class: "tv-citation-quote-count"
|
|
621
685
|
}, {
|
|
622
|
-
default:
|
|
623
|
-
var
|
|
686
|
+
default: S(() => {
|
|
687
|
+
var $, E;
|
|
624
688
|
return [
|
|
625
|
-
|
|
689
|
+
N(v(($ = r.value.get(k.value)) == null ? void 0 : $.quotes.length) + " " + v(((E = r.value.get(k.value)) == null ? void 0 : E.quotes.length) === 1 ? "quote" : "quotes"), 1)
|
|
626
690
|
];
|
|
627
691
|
}),
|
|
628
692
|
_: 2
|
|
629
693
|
}, 1024)
|
|
630
694
|
]),
|
|
631
|
-
|
|
695
|
+
!P && n(r.value.get(k.value)) ? (l(), c("span", ia, "“" + v(n(r.value.get(k.value))) + "”", 1)) : h("", !0)
|
|
632
696
|
])
|
|
633
697
|
])
|
|
634
698
|
];
|
|
635
699
|
}),
|
|
636
|
-
panel:
|
|
637
|
-
|
|
638
|
-
page:
|
|
700
|
+
panel: S(({ item: k }) => [
|
|
701
|
+
I(De, {
|
|
702
|
+
page: r.value.get(k.value),
|
|
639
703
|
dense: e.dense,
|
|
640
|
-
onView: (
|
|
641
|
-
onDocument: (
|
|
704
|
+
onView: (P) => Y(r.value.get(k.value)),
|
|
705
|
+
onDocument: (P) => U(r.value.get(k.value))
|
|
642
706
|
}, null, 8, ["page", "dense", "onView", "onDocument"])
|
|
643
707
|
]),
|
|
644
708
|
_: 1
|
|
645
|
-
}, 8, ["modelValue", "items"])) : (
|
|
646
|
-
key:
|
|
709
|
+
}, 8, ["modelValue", "items"])) : (l(!0), c(B, { key: 2 }, H(e.pages, (k) => (l(), c("div", {
|
|
710
|
+
key: k.key,
|
|
647
711
|
class: "tv-citation-flat rounded-lg border border-gray-200 p-3"
|
|
648
712
|
}, [
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
713
|
+
i("div", oa, [
|
|
714
|
+
i("span", ra, v(k.label), 1),
|
|
715
|
+
k.documentName ? (l(), c("span", ua, v(k.documentName), 1)) : h("", !0),
|
|
716
|
+
I(f(M), {
|
|
653
717
|
variant: "warning",
|
|
654
718
|
size: "xxs",
|
|
655
719
|
class: "tv-citation-quote-count"
|
|
656
720
|
}, {
|
|
657
|
-
default:
|
|
658
|
-
|
|
721
|
+
default: S(() => [
|
|
722
|
+
N(v(k.quotes.length) + " " + v(k.quotes.length === 1 ? "quote" : "quotes"), 1)
|
|
659
723
|
]),
|
|
660
724
|
_: 2
|
|
661
725
|
}, 1024)
|
|
662
726
|
]),
|
|
663
|
-
|
|
664
|
-
page:
|
|
727
|
+
I(De, {
|
|
728
|
+
page: k,
|
|
665
729
|
dense: e.dense,
|
|
666
|
-
onView: (
|
|
667
|
-
onDocument: (
|
|
730
|
+
onView: (P) => Y(k),
|
|
731
|
+
onDocument: (P) => U(k)
|
|
668
732
|
}, null, 8, ["page", "dense", "onView", "onDocument"])
|
|
669
733
|
]))), 128)),
|
|
670
|
-
|
|
734
|
+
u.value ? (l(), V(f(Oe), {
|
|
671
735
|
key: 3,
|
|
672
|
-
modelValue:
|
|
673
|
-
"onUpdate:modelValue":
|
|
674
|
-
title:
|
|
736
|
+
modelValue: T.value,
|
|
737
|
+
"onUpdate:modelValue": D[2] || (D[2] = (k) => T.value = k),
|
|
738
|
+
title: F.value,
|
|
675
739
|
width: 95,
|
|
676
740
|
height: 95,
|
|
677
741
|
"close-x": "",
|
|
678
|
-
class:
|
|
742
|
+
class: A(f(ee))
|
|
679
743
|
}, {
|
|
680
|
-
default:
|
|
681
|
-
var
|
|
744
|
+
default: S(() => {
|
|
745
|
+
var k;
|
|
682
746
|
return [
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
file:
|
|
686
|
-
"file-in-preview":
|
|
687
|
-
"onUpdate:fileInPreview":
|
|
688
|
-
"related-files":
|
|
747
|
+
i("div", da, [
|
|
748
|
+
I(f(tt), {
|
|
749
|
+
file: u.value,
|
|
750
|
+
"file-in-preview": m.value,
|
|
751
|
+
"onUpdate:fileInPreview": D[1] || (D[1] = (P) => m.value = P),
|
|
752
|
+
"related-files": z.value,
|
|
689
753
|
"layout-toggles": ["sidebar", "continuous"],
|
|
690
754
|
downloadable: "",
|
|
691
755
|
zoomable: "",
|
|
@@ -693,32 +757,32 @@ const Tt = { class: "tv-audit-call rounded-lg border border-gray-200 shadow-sm"
|
|
|
693
757
|
"storage-key": "tv-page-viewer",
|
|
694
758
|
class: "tv-page-viewer min-h-[22rem] min-w-0 flex-1"
|
|
695
759
|
}, null, 8, ["file", "file-in-preview", "related-files"]),
|
|
696
|
-
(
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
(
|
|
700
|
-
key:
|
|
760
|
+
(k = q.value) != null && k.quotes.length ? (l(), c("aside", ca, [
|
|
761
|
+
i("div", va, " Quoted from " + v(q.value.label), 1),
|
|
762
|
+
i("ol", fa, [
|
|
763
|
+
(l(!0), c(B, null, H(q.value.quotes, (P, j) => (l(), c("li", {
|
|
764
|
+
key: j,
|
|
701
765
|
class: "tv-quote rounded-r-md border-l-[3px] border-amber-300 bg-amber-50/70 py-1.5 pl-3 pr-2 text-sm italic leading-relaxed text-gray-700"
|
|
702
|
-
}, " “" +
|
|
766
|
+
}, " “" + v(P) + "” ", 1))), 128))
|
|
703
767
|
])
|
|
704
|
-
])) :
|
|
768
|
+
])) : h("", !0)
|
|
705
769
|
])
|
|
706
770
|
];
|
|
707
771
|
}),
|
|
708
772
|
_: 1
|
|
709
|
-
}, 8, ["modelValue", "title", "class"])) :
|
|
773
|
+
}, 8, ["modelValue", "title", "class"])) : h("", !0)
|
|
710
774
|
]));
|
|
711
775
|
}
|
|
712
|
-
}),
|
|
776
|
+
}), pa = { class: "tv-evidence flex flex-col gap-4" }, ma = {
|
|
713
777
|
key: 1,
|
|
714
778
|
class: "tv-reasoning-card rounded-lg border border-gray-200 bg-white p-3"
|
|
715
|
-
},
|
|
779
|
+
}, xa = { class: "mb-1 flex flex-wrap items-center justify-between gap-2" }, ya = { class: "tv-reasoning text-sm leading-relaxed text-gray-700" }, ha = { class: "tv-cited-sources flex min-w-0 flex-col gap-2" }, ba = { class: "flex flex-wrap items-baseline justify-between gap-2" }, wa = { class: "tv-citation-summary text-xs text-gray-500" }, _a = {
|
|
716
780
|
key: 1,
|
|
717
781
|
class: "tv-no-source rounded-lg border border-dashed border-gray-200 p-6 text-center text-sm text-gray-400"
|
|
718
|
-
},
|
|
782
|
+
}, ka = {
|
|
719
783
|
key: 2,
|
|
720
784
|
class: "tv-llm-provenance text-xs text-gray-400"
|
|
721
|
-
},
|
|
785
|
+
}, $a = { class: "tv-llm-call-ids font-medium text-gray-500" }, Te = /* @__PURE__ */ J({
|
|
722
786
|
__name: "CitationEvidence",
|
|
723
787
|
props: {
|
|
724
788
|
evidence: {},
|
|
@@ -729,112 +793,107 @@ const Tt = { class: "tv-audit-call rounded-lg border border-gray-200 shadow-sm"
|
|
|
729
793
|
dense: { type: Boolean, default: !1 }
|
|
730
794
|
},
|
|
731
795
|
setup(e) {
|
|
732
|
-
return (t,
|
|
733
|
-
e.failed && e.reasoning ? (
|
|
796
|
+
return (t, a) => (l(), c("div", pa, [
|
|
797
|
+
e.failed && e.reasoning ? (l(), V(f(ge), {
|
|
734
798
|
key: 0,
|
|
735
799
|
variant: "danger",
|
|
736
800
|
class: "tv-evidence-failed"
|
|
737
801
|
}, {
|
|
738
|
-
default:
|
|
739
|
-
|
|
802
|
+
default: S(() => [
|
|
803
|
+
N(v(e.reasoning), 1)
|
|
740
804
|
]),
|
|
741
805
|
_: 1
|
|
742
|
-
})) : e.reasoning ? (
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
e.basis ? (
|
|
806
|
+
})) : e.reasoning ? (l(), c("section", ma, [
|
|
807
|
+
i("div", xa, [
|
|
808
|
+
a[0] || (a[0] = i("div", { class: "text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, " Why this value ", -1)),
|
|
809
|
+
e.basis ? (l(), V(f(be), {
|
|
746
810
|
key: 0,
|
|
747
811
|
tooltip: e.basis === "inferred" ? "The value was derived from the quotes below — computed, reformatted, or reasoned — rather than appearing as-is." : "The stored value appears word-for-word inside the quotes below, checked against the source document at store time.",
|
|
748
812
|
placement: "top"
|
|
749
813
|
}, {
|
|
750
|
-
trigger:
|
|
751
|
-
|
|
814
|
+
trigger: S(() => [
|
|
815
|
+
I(f(M), {
|
|
752
816
|
variant: e.basis === "inferred" ? "muted" : "success",
|
|
753
817
|
size: "xxs",
|
|
754
818
|
class: "tv-basis-chip"
|
|
755
819
|
}, {
|
|
756
|
-
default:
|
|
757
|
-
|
|
820
|
+
default: S(() => [
|
|
821
|
+
N(v(e.basis === "inferred" ? "inferred from quotes" : "✔ verbatim quote"), 1)
|
|
758
822
|
]),
|
|
759
823
|
_: 1
|
|
760
824
|
}, 8, ["variant"])
|
|
761
825
|
]),
|
|
762
826
|
_: 1
|
|
763
|
-
}, 8, ["tooltip"])) :
|
|
827
|
+
}, 8, ["tooltip"])) : h("", !0)
|
|
764
828
|
]),
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
class: "
|
|
770
|
-
|
|
771
|
-
])) : f("", !0),
|
|
772
|
-
o("section", fa, [
|
|
773
|
-
o("div", ga, [
|
|
774
|
-
n[1] || (n[1] = o("div", { class: "text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, " Cited sources ", -1)),
|
|
775
|
-
o("div", ma, i(r($e)(e.evidence)), 1)
|
|
829
|
+
i("p", ya, v(e.reasoning), 1)
|
|
830
|
+
])) : h("", !0),
|
|
831
|
+
i("section", ha, [
|
|
832
|
+
i("div", ba, [
|
|
833
|
+
a[1] || (a[1] = i("div", { class: "text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, " Cited sources ", -1)),
|
|
834
|
+
i("div", wa, v(f(Me)(e.evidence)), 1)
|
|
776
835
|
]),
|
|
777
|
-
e.evidence.pages.length ? (
|
|
836
|
+
e.evidence.pages.length ? (l(), V(ga, {
|
|
778
837
|
key: 0,
|
|
779
838
|
pages: e.evidence.pages,
|
|
780
839
|
collapsible: e.collapsible,
|
|
781
840
|
dense: e.dense
|
|
782
|
-
}, null, 8, ["pages", "collapsible", "dense"])) : e.evidence.unresolved.length ?
|
|
783
|
-
e.evidence.unresolved.length ? (
|
|
841
|
+
}, null, 8, ["pages", "collapsible", "dense"])) : e.evidence.unresolved.length ? h("", !0) : (l(), c("p", _a, " No source pages recorded for this data point ")),
|
|
842
|
+
e.evidence.unresolved.length ? (l(), V(f(ge), {
|
|
784
843
|
key: 2,
|
|
785
844
|
variant: "warning",
|
|
786
845
|
class: "tv-unresolved-citations"
|
|
787
846
|
}, {
|
|
788
|
-
default:
|
|
789
|
-
|
|
847
|
+
default: S(() => [
|
|
848
|
+
N(v(e.evidence.unresolved.length) + " " + v(e.evidence.unresolved.length === 1 ? "citation" : "citations") + " could not be matched to a page in the source documents. The value was kept, but this part of its provenance is unverified. ", 1)
|
|
790
849
|
]),
|
|
791
850
|
_: 1
|
|
792
|
-
})) :
|
|
851
|
+
})) : h("", !0)
|
|
793
852
|
]),
|
|
794
|
-
e.evidence.apiLogIds.length ? (
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
])) :
|
|
853
|
+
e.evidence.apiLogIds.length ? (l(), c("p", ka, [
|
|
854
|
+
N(" Produced by " + v(e.evidence.apiLogIds.length === 1 ? "LLM call" : "LLM calls") + " ", 1),
|
|
855
|
+
i("span", $a, "#" + v(e.evidence.apiLogIds.join(", #")), 1),
|
|
856
|
+
a[2] || (a[2] = N(" — open the Audit trail tab for the full request and response. ", -1))
|
|
857
|
+
])) : h("", !0)
|
|
799
858
|
]));
|
|
800
859
|
}
|
|
801
|
-
}),
|
|
860
|
+
}), Ca = { class: "tv-modal flex h-full flex-col gap-4 overflow-y-auto p-1" }, Sa = { class: "tv-modal-resolved flex flex-col gap-3 rounded-xl border border-gray-200 bg-gradient-to-br from-gray-50 to-white p-4 shadow-sm" }, Va = { class: "flex flex-wrap items-start justify-between gap-4" }, Na = { class: "min-w-0 flex-1" }, qa = { class: "tv-resolved-value mt-1 break-words font-mono text-xl font-semibold leading-snug text-gray-900" }, Ia = { class: "mt-1 text-[11px] text-gray-400" }, Ea = { class: "tv-resolved-source font-medium text-gray-500" }, Da = { class: "tv-confidence-meter w-56 shrink-0" }, Ta = { class: "mt-2" }, Oa = {
|
|
802
861
|
key: 1,
|
|
803
862
|
class: "tv-confidence-value text-sm text-gray-400"
|
|
804
|
-
},
|
|
863
|
+
}, La = {
|
|
805
864
|
key: 0,
|
|
806
865
|
class: "tv-tab-evidence flex min-h-0 flex-1 flex-col"
|
|
807
|
-
},
|
|
866
|
+
}, Aa = {
|
|
808
867
|
key: 1,
|
|
809
868
|
class: "tv-tab-candidates flex flex-col gap-3"
|
|
810
|
-
},
|
|
869
|
+
}, za = { class: "flex flex-wrap items-center justify-between gap-3" }, Pa = { class: "min-w-0 flex-1" }, ja = { class: "flex items-center gap-2" }, Ra = { class: "mt-2 break-words font-mono text-base text-gray-900" }, Ua = { class: "mt-1 text-xs text-gray-400" }, Ba = {
|
|
811
870
|
key: 0,
|
|
812
871
|
class: "tv-custom-entry flex items-center gap-2 rounded-lg border border-dashed border-gray-300 p-4"
|
|
813
|
-
},
|
|
872
|
+
}, Ma = {
|
|
814
873
|
key: 1,
|
|
815
874
|
class: "tv-read-only text-center text-xs text-gray-400"
|
|
816
|
-
},
|
|
875
|
+
}, Fa = {
|
|
817
876
|
key: 2,
|
|
818
877
|
class: "tv-tab-history flex flex-col gap-4"
|
|
819
|
-
},
|
|
878
|
+
}, Ya = { class: "tv-history-current flex flex-col gap-2 rounded-xl border border-green-200 bg-green-50/40 p-4" }, Ka = { class: "flex flex-wrap items-center justify-between gap-3" }, Ha = { class: "flex flex-wrap items-center gap-2" }, Ja = { class: "tv-history-current-value break-words font-mono text-base font-semibold text-gray-900" }, Ga = {
|
|
820
879
|
key: 0,
|
|
821
880
|
class: "tv-history-current-confidence text-xs font-medium text-gray-500"
|
|
822
|
-
},
|
|
881
|
+
}, Qa = {
|
|
823
882
|
key: 1,
|
|
824
883
|
class: "tv-history-current-confidence text-xs text-gray-400"
|
|
825
|
-
},
|
|
884
|
+
}, Wa = {
|
|
826
885
|
key: 0,
|
|
827
886
|
class: "tv-history-current-reasoning text-sm italic leading-relaxed text-gray-600"
|
|
828
|
-
},
|
|
887
|
+
}, Xa = { class: "tv-history-value min-w-0 break-words font-mono text-sm font-semibold text-gray-900" }, Za = {
|
|
829
888
|
key: 2,
|
|
830
889
|
class: "tv-history-confidence text-xs text-gray-500"
|
|
831
|
-
},
|
|
890
|
+
}, el = { class: "tv-history-provenance text-xs text-gray-400" }, tl = { class: "tv-history-timestamp ml-auto text-xs text-gray-400" }, al = {
|
|
832
891
|
key: 3,
|
|
833
892
|
class: "tv-tab-audit flex flex-col gap-3"
|
|
834
|
-
},
|
|
893
|
+
}, ll = {
|
|
835
894
|
key: 2,
|
|
836
895
|
class: "tv-audit-empty rounded-lg border border-dashed border-gray-200 p-6 text-center text-sm text-gray-400"
|
|
837
|
-
},
|
|
896
|
+
}, nl = /* @__PURE__ */ J({
|
|
838
897
|
__name: "VerificationModal",
|
|
839
898
|
props: {
|
|
840
899
|
modelValue: { type: Boolean },
|
|
@@ -844,445 +903,474 @@ const Tt = { class: "tv-audit-call rounded-lg border border-gray-200 shadow-sm"
|
|
|
844
903
|
},
|
|
845
904
|
emits: ["update:modelValue", "saved"],
|
|
846
905
|
setup(e, { emit: t }) {
|
|
847
|
-
const
|
|
848
|
-
get: () =>
|
|
849
|
-
set: (
|
|
850
|
-
}),
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
}), L = v(() => {
|
|
854
|
-
var c;
|
|
855
|
-
return ((c = k.value) == null ? void 0 : c.state) === "failed" ? "failed" : we(I.value);
|
|
856
|
-
}), C = v(() => pe(n.meta)), d = v(() => {
|
|
857
|
-
var c;
|
|
858
|
-
return oe((c = k.value) == null ? void 0 : c.sources);
|
|
859
|
-
}), m = v(
|
|
906
|
+
const a = e, b = t, y = we(), s = Le(), r = g({
|
|
907
|
+
get: () => a.modelValue,
|
|
908
|
+
set: (o) => b("update:modelValue", o)
|
|
909
|
+
}), n = g(() => Re(a.meta)), C = O(null), u = g(
|
|
910
|
+
() => C.value ?? a.meta.candidates.extracted
|
|
911
|
+
), _ = g(() => a.meta.candidates.claim), m = g(
|
|
860
912
|
() => {
|
|
861
|
-
var
|
|
862
|
-
return ((
|
|
913
|
+
var o;
|
|
914
|
+
return de.value && ((o = u.value) == null ? void 0 : o.sources) === void 0;
|
|
863
915
|
}
|
|
864
|
-
),
|
|
865
|
-
|
|
866
|
-
|
|
916
|
+
), T = g(() => a.meta.candidates.override), z = g(() => {
|
|
917
|
+
var o;
|
|
918
|
+
return ((o = u.value) == null ? void 0 : o.confidence) ?? null;
|
|
919
|
+
}), q = g(() => {
|
|
920
|
+
var o;
|
|
921
|
+
return ((o = u.value) == null ? void 0 : o.state) === "failed" ? "failed" : _e(z.value);
|
|
922
|
+
}), F = g(() => {
|
|
923
|
+
var L;
|
|
924
|
+
const o = (L = u.value) == null ? void 0 : L.reasoning;
|
|
925
|
+
if (o == null) return null;
|
|
926
|
+
const d = String(o).trim();
|
|
927
|
+
return d === "" ? null : d;
|
|
928
|
+
}), Y = g(() => {
|
|
929
|
+
var o;
|
|
930
|
+
return me((o = u.value) == null ? void 0 : o.sources);
|
|
931
|
+
}), U = g(
|
|
932
|
+
() => {
|
|
933
|
+
var o;
|
|
934
|
+
return ((o = u.value) == null ? void 0 : o.history) ?? [];
|
|
935
|
+
}
|
|
936
|
+
), w = g(
|
|
937
|
+
() => {
|
|
938
|
+
var o;
|
|
939
|
+
return ((o = u.value) == null ? void 0 : o.history_count) ?? U.value.length;
|
|
940
|
+
}
|
|
941
|
+
), D = g(() => w.value > 0), k = g(() => (a.meta.anchor.field_path || a.label || "Data point").split(".").map(
|
|
942
|
+
(d) => d.replace(/\[\d+\]/g, "").replace(/_/g, " ").replace(/^\w/, (L) => L.toUpperCase())
|
|
943
|
+
).join(" › ")), P = {
|
|
867
944
|
high: "success",
|
|
868
945
|
medium: "warning",
|
|
869
946
|
low: "danger",
|
|
870
947
|
unverifiable: "muted",
|
|
871
948
|
failed: "danger"
|
|
872
|
-
},
|
|
873
|
-
var
|
|
874
|
-
const
|
|
949
|
+
}, j = O("evidence"), Q = g(() => !!y.detailUrl), W = g(() => {
|
|
950
|
+
var d;
|
|
951
|
+
const o = [
|
|
875
952
|
{
|
|
876
953
|
value: "evidence",
|
|
877
954
|
label: "Citations",
|
|
878
|
-
count:
|
|
955
|
+
count: Y.value.pageCount
|
|
879
956
|
},
|
|
880
957
|
{
|
|
881
958
|
value: "candidates",
|
|
882
959
|
label: "Candidates",
|
|
883
|
-
count:
|
|
960
|
+
count: X.value.length
|
|
884
961
|
}
|
|
885
962
|
];
|
|
886
|
-
return
|
|
963
|
+
return D.value && o.push({
|
|
887
964
|
value: "history",
|
|
888
965
|
label: "History",
|
|
889
|
-
count:
|
|
890
|
-
}),
|
|
966
|
+
count: U.value.length
|
|
967
|
+
}), Q.value && o.push({
|
|
891
968
|
value: "audit",
|
|
892
969
|
label: "Audit trail",
|
|
893
|
-
count: ((
|
|
894
|
-
}),
|
|
970
|
+
count: ((d = Z.value) == null ? void 0 : d.length) ?? void 0
|
|
971
|
+
}), o;
|
|
895
972
|
});
|
|
896
973
|
ae(
|
|
897
|
-
|
|
898
|
-
(
|
|
974
|
+
r,
|
|
975
|
+
(o) => Ee(o),
|
|
899
976
|
{ immediate: !0 }
|
|
900
977
|
), Ge(() => Ee(!1));
|
|
901
|
-
const
|
|
902
|
-
const
|
|
903
|
-
return
|
|
978
|
+
const X = g(() => {
|
|
979
|
+
const o = [];
|
|
980
|
+
return T.value && o.push({
|
|
904
981
|
key: "override",
|
|
905
982
|
title: "Human override",
|
|
906
983
|
variant: "success",
|
|
907
|
-
value:
|
|
984
|
+
value: T.value.value,
|
|
908
985
|
detail: [
|
|
909
|
-
|
|
910
|
-
|
|
986
|
+
T.value.source_choice ? `basis: ${T.value.source_choice}` : null,
|
|
987
|
+
T.value.set_at ? new Date(T.value.set_at).toLocaleString() : null
|
|
911
988
|
].filter(Boolean).join(" · "),
|
|
912
|
-
winner:
|
|
913
|
-
}),
|
|
989
|
+
winner: n.value.source === "override"
|
|
990
|
+
}), u.value && o.push({
|
|
914
991
|
key: "extracted",
|
|
915
992
|
title: "Extracted",
|
|
916
|
-
variant:
|
|
917
|
-
value:
|
|
918
|
-
detail:
|
|
919
|
-
accept:
|
|
920
|
-
var
|
|
921
|
-
return
|
|
993
|
+
variant: P[q.value],
|
|
994
|
+
value: u.value.value,
|
|
995
|
+
detail: q.value === "failed" ? u.value.reasoning ? `${K.failed}: ${u.value.reasoning}` : K.failed : z.value != null ? `Confidence ${z.value}/5 · ${K[q.value]}` : "No confidence recorded",
|
|
996
|
+
accept: a.save ? () => {
|
|
997
|
+
var d;
|
|
998
|
+
return E(ne((d = u.value) == null ? void 0 : d.value), "extracted");
|
|
922
999
|
} : void 0,
|
|
923
|
-
winner:
|
|
924
|
-
}),
|
|
1000
|
+
winner: n.value.source === "extracted"
|
|
1001
|
+
}), _.value && o.push({
|
|
925
1002
|
key: "claim",
|
|
926
1003
|
title: "Claim",
|
|
927
1004
|
variant: "info",
|
|
928
|
-
value:
|
|
929
|
-
detail:
|
|
930
|
-
accept:
|
|
931
|
-
var
|
|
932
|
-
return
|
|
1005
|
+
value: _.value.value,
|
|
1006
|
+
detail: _.value.claim_set_label ?? "Reference output",
|
|
1007
|
+
accept: a.save ? () => {
|
|
1008
|
+
var d;
|
|
1009
|
+
return E(ne((d = _.value) == null ? void 0 : d.value), "claim");
|
|
933
1010
|
} : void 0,
|
|
934
|
-
winner:
|
|
935
|
-
}),
|
|
936
|
-
}),
|
|
937
|
-
async function
|
|
938
|
-
if (!(!
|
|
939
|
-
|
|
1011
|
+
winner: n.value.source === "claim"
|
|
1012
|
+
}), o;
|
|
1013
|
+
}), p = O(""), $ = O(!1);
|
|
1014
|
+
async function E(o, d) {
|
|
1015
|
+
if (!(!a.save || $.value)) {
|
|
1016
|
+
$.value = !0;
|
|
940
1017
|
try {
|
|
941
|
-
const
|
|
942
|
-
|
|
943
|
-
} catch (
|
|
944
|
-
console.error("template-verification: save failed",
|
|
1018
|
+
const L = await a.save(o, d);
|
|
1019
|
+
b("saved", L), s.success(`Verified — ${k.value} locked in`);
|
|
1020
|
+
} catch (L) {
|
|
1021
|
+
console.error("template-verification: save failed", L), s.danger(`Could not save ${k.value} — try again`);
|
|
945
1022
|
} finally {
|
|
946
|
-
|
|
1023
|
+
$.value = !1;
|
|
947
1024
|
}
|
|
948
1025
|
}
|
|
949
1026
|
}
|
|
950
|
-
const
|
|
951
|
-
function
|
|
952
|
-
return
|
|
1027
|
+
const le = () => E(p.value, "custom");
|
|
1028
|
+
function ne(o) {
|
|
1029
|
+
return o == null ? null : String(o);
|
|
953
1030
|
}
|
|
954
|
-
function
|
|
955
|
-
return
|
|
1031
|
+
function G(o) {
|
|
1032
|
+
return o == null ? "—" : String(o);
|
|
956
1033
|
}
|
|
957
|
-
const
|
|
958
|
-
() =>
|
|
959
|
-
value:
|
|
960
|
-
label:
|
|
1034
|
+
const te = (o, d) => String(o.id ?? `attempt-${d}`), Ye = g(
|
|
1035
|
+
() => U.value.map((o, d) => ({
|
|
1036
|
+
value: te(o, d),
|
|
1037
|
+
label: G(o.value)
|
|
961
1038
|
}))
|
|
962
|
-
),
|
|
1039
|
+
), pe = O([]);
|
|
963
1040
|
ae(
|
|
964
|
-
|
|
965
|
-
(
|
|
966
|
-
const
|
|
967
|
-
|
|
1041
|
+
U,
|
|
1042
|
+
(o) => {
|
|
1043
|
+
const d = o.findIndex((x) => x.is_chosen), L = d === -1 ? o.length - 1 : d;
|
|
1044
|
+
pe.value = L >= 0 ? [te(o[L], L)] : [];
|
|
968
1045
|
},
|
|
969
1046
|
{ immediate: !0 }
|
|
970
1047
|
);
|
|
971
|
-
const
|
|
1048
|
+
const R = g(
|
|
972
1049
|
() => new Map(
|
|
973
|
-
|
|
1050
|
+
U.value.map((o, d) => [te(o, d), o])
|
|
974
1051
|
)
|
|
975
1052
|
);
|
|
976
|
-
function Ke(
|
|
977
|
-
return
|
|
1053
|
+
function Ke(o) {
|
|
1054
|
+
return o.created_at ? new Date(o.created_at).toLocaleString() : "—";
|
|
978
1055
|
}
|
|
979
|
-
function He(
|
|
980
|
-
return
|
|
1056
|
+
function He(o) {
|
|
1057
|
+
return Me(me(o.sources));
|
|
981
1058
|
}
|
|
982
|
-
function Je(
|
|
983
|
-
return
|
|
1059
|
+
function Je(o) {
|
|
1060
|
+
return o.is_chosen ? null : o.reasoning ?? null;
|
|
984
1061
|
}
|
|
985
|
-
const
|
|
1062
|
+
const Z = O(null), de = O(!1), ce = O(null), ke = O(!1);
|
|
986
1063
|
return ae(
|
|
987
|
-
|
|
988
|
-
async (
|
|
989
|
-
if (!(
|
|
990
|
-
de.value = !0, ce.value = null;
|
|
1064
|
+
r,
|
|
1065
|
+
async (o) => {
|
|
1066
|
+
if (!(!o || ke.value || !y.detailUrl)) {
|
|
1067
|
+
ke.value = !0, de.value = !0, ce.value = null;
|
|
991
1068
|
try {
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
1069
|
+
const d = await $t(
|
|
1070
|
+
y.detailUrl,
|
|
1071
|
+
a.meta.anchor
|
|
995
1072
|
);
|
|
996
|
-
|
|
997
|
-
|
|
1073
|
+
d.extracted && (C.value = d.extracted), Z.value = d.audit;
|
|
1074
|
+
} catch (d) {
|
|
1075
|
+
ce.value = d instanceof Error ? d.message : String(d);
|
|
998
1076
|
} finally {
|
|
999
1077
|
de.value = !1;
|
|
1000
1078
|
}
|
|
1001
1079
|
}
|
|
1002
1080
|
},
|
|
1003
1081
|
{ immediate: !0 }
|
|
1004
|
-
), (
|
|
1005
|
-
modelValue:
|
|
1006
|
-
"onUpdate:modelValue":
|
|
1007
|
-
title:
|
|
1082
|
+
), (o, d) => (l(), V(f(Oe), {
|
|
1083
|
+
modelValue: r.value,
|
|
1084
|
+
"onUpdate:modelValue": d[3] || (d[3] = (L) => r.value = L),
|
|
1085
|
+
title: k.value,
|
|
1008
1086
|
width: 90,
|
|
1009
1087
|
height: 90,
|
|
1010
1088
|
"close-x": "",
|
|
1011
|
-
class:
|
|
1089
|
+
class: A(f(ee))
|
|
1012
1090
|
}, {
|
|
1013
|
-
default:
|
|
1014
|
-
var
|
|
1091
|
+
default: S(() => {
|
|
1092
|
+
var L;
|
|
1015
1093
|
return [
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1094
|
+
i("div", Ca, [
|
|
1095
|
+
i("section", Sa, [
|
|
1096
|
+
i("div", Va, [
|
|
1097
|
+
i("div", Na, [
|
|
1098
|
+
d[5] || (d[5] = i("div", { class: "text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, " Resolved value ", -1)),
|
|
1099
|
+
i("div", qa, v(G(n.value.value)), 1),
|
|
1100
|
+
i("div", Ia, [
|
|
1101
|
+
d[4] || (d[4] = N(" source of truth: ", -1)),
|
|
1102
|
+
i("span", Ea, v(n.value.source), 1)
|
|
1025
1103
|
])
|
|
1026
1104
|
]),
|
|
1027
|
-
|
|
1028
|
-
|
|
1105
|
+
i("div", Da, [
|
|
1106
|
+
I(f(be), {
|
|
1029
1107
|
tooltip: "How certain the AI was when it extracted this value — not whether the quotes in the Citations tab were checked against the source (that tab's own badge says so).",
|
|
1030
1108
|
placement: "top"
|
|
1031
1109
|
}, {
|
|
1032
|
-
trigger:
|
|
1033
|
-
|
|
1110
|
+
trigger: S(() => [...d[6] || (d[6] = [
|
|
1111
|
+
i("div", { class: "w-fit text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, " Extraction confidence ", -1)
|
|
1034
1112
|
])]),
|
|
1035
1113
|
_: 1
|
|
1036
1114
|
}),
|
|
1037
|
-
|
|
1038
|
-
|
|
1115
|
+
i("div", Ta, [
|
|
1116
|
+
z.value != null ? (l(), V(f(Ae), {
|
|
1039
1117
|
key: 0,
|
|
1040
|
-
value:
|
|
1118
|
+
value: z.value,
|
|
1041
1119
|
max: 5,
|
|
1042
1120
|
size: "md",
|
|
1043
|
-
variant:
|
|
1121
|
+
variant: P[q.value],
|
|
1044
1122
|
gradient: "",
|
|
1045
1123
|
shimmer: "",
|
|
1046
1124
|
"show-text": "",
|
|
1047
1125
|
"text-position": "beside",
|
|
1048
|
-
label: `${
|
|
1049
|
-
}, null, 8, ["value", "variant", "label"])) : (
|
|
1126
|
+
label: `${z.value}/5`
|
|
1127
|
+
}, null, 8, ["value", "variant", "label"])) : (l(), c("div", Oa, " No confidence recorded "))
|
|
1050
1128
|
]),
|
|
1051
|
-
|
|
1052
|
-
class:
|
|
1053
|
-
"text-green-600":
|
|
1054
|
-
"text-yellow-600":
|
|
1055
|
-
"text-red-600":
|
|
1056
|
-
"text-gray-400":
|
|
1057
|
-
"text-red-800":
|
|
1129
|
+
i("div", {
|
|
1130
|
+
class: A(["tv-confidence-label mt-1 text-right text-xs font-medium", {
|
|
1131
|
+
"text-green-600": q.value === "high",
|
|
1132
|
+
"text-yellow-600": q.value === "medium",
|
|
1133
|
+
"text-red-600": q.value === "low",
|
|
1134
|
+
"text-gray-400": q.value === "unverifiable",
|
|
1135
|
+
"text-red-800": q.value === "failed"
|
|
1058
1136
|
}])
|
|
1059
|
-
},
|
|
1137
|
+
}, v(f(K)[q.value]), 3)
|
|
1060
1138
|
])
|
|
1061
1139
|
]),
|
|
1062
|
-
e.meta.discrepancy ? (
|
|
1140
|
+
e.meta.discrepancy ? (l(), V(f(ge), {
|
|
1063
1141
|
key: 0,
|
|
1064
1142
|
variant: "warning",
|
|
1065
1143
|
class: "tv-discrepancy"
|
|
1066
1144
|
}, {
|
|
1067
|
-
default:
|
|
1068
|
-
|
|
1145
|
+
default: S(() => [...d[7] || (d[7] = [
|
|
1146
|
+
N(" Sources disagree on this value — review the candidates and pick a winner. ", -1)
|
|
1069
1147
|
])]),
|
|
1070
1148
|
_: 1
|
|
1071
|
-
})) :
|
|
1149
|
+
})) : h("", !0)
|
|
1072
1150
|
]),
|
|
1073
|
-
|
|
1074
|
-
modelValue:
|
|
1075
|
-
"onUpdate:modelValue":
|
|
1076
|
-
tabs:
|
|
1151
|
+
I(f(at), {
|
|
1152
|
+
modelValue: j.value,
|
|
1153
|
+
"onUpdate:modelValue": d[0] || (d[0] = (x) => j.value = x),
|
|
1154
|
+
tabs: W.value,
|
|
1077
1155
|
class: "tv-modal-tabs"
|
|
1078
1156
|
}, null, 8, ["modelValue", "tabs"]),
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1157
|
+
j.value === "evidence" ? (l(), c("section", La, [
|
|
1158
|
+
m.value ? (l(), c(B, { key: 0 }, H(2, (x) => I(f(ve), {
|
|
1159
|
+
key: x,
|
|
1160
|
+
shape: "rounded",
|
|
1161
|
+
class: "tv-evidence-skeleton h-24 w-full"
|
|
1162
|
+
})), 64)) : (l(), V(Te, {
|
|
1163
|
+
key: 1,
|
|
1164
|
+
evidence: Y.value,
|
|
1165
|
+
reasoning: F.value,
|
|
1166
|
+
basis: (L = u.value) == null ? void 0 : L.basis,
|
|
1167
|
+
failed: q.value === "failed"
|
|
1168
|
+
}, null, 8, ["evidence", "reasoning", "basis", "failed"]))
|
|
1169
|
+
])) : h("", !0),
|
|
1170
|
+
j.value === "candidates" ? (l(), c("section", Aa, [
|
|
1171
|
+
(l(!0), c(B, null, H(X.value, (x) => (l(), c("div", {
|
|
1172
|
+
key: x.key,
|
|
1173
|
+
class: A(["tv-candidate-row rounded-lg border p-4 transition-shadow", [
|
|
1174
|
+
x.winner ? "border-gray-300 bg-gray-50 shadow-sm" : "border-gray-200",
|
|
1175
|
+
e.meta.discrepancy && !x.winner ? "tv-candidate-disagrees border-amber-200" : ""
|
|
1093
1176
|
]])
|
|
1094
1177
|
}, [
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
variant:
|
|
1178
|
+
i("div", za, [
|
|
1179
|
+
i("div", Pa, [
|
|
1180
|
+
i("div", ja, [
|
|
1181
|
+
I(f(M), {
|
|
1182
|
+
variant: x.variant,
|
|
1100
1183
|
size: "xs"
|
|
1101
1184
|
}, {
|
|
1102
|
-
default:
|
|
1103
|
-
|
|
1185
|
+
default: S(() => [
|
|
1186
|
+
N(v(x.title), 1)
|
|
1104
1187
|
]),
|
|
1105
1188
|
_: 2
|
|
1106
1189
|
}, 1032, ["variant"]),
|
|
1107
|
-
|
|
1190
|
+
x.winner ? (l(), V(f(M), {
|
|
1108
1191
|
key: 0,
|
|
1109
1192
|
variant: "success",
|
|
1110
1193
|
size: "xxs",
|
|
1111
1194
|
class: "tv-winner-chip"
|
|
1112
1195
|
}, {
|
|
1113
|
-
default:
|
|
1114
|
-
|
|
1196
|
+
default: S(() => [...d[8] || (d[8] = [
|
|
1197
|
+
N("current value", -1)
|
|
1115
1198
|
])]),
|
|
1116
1199
|
_: 1
|
|
1117
|
-
})) :
|
|
1200
|
+
})) : h("", !0)
|
|
1118
1201
|
]),
|
|
1119
|
-
|
|
1120
|
-
|
|
1202
|
+
i("div", Ra, v(G(x.value)), 1),
|
|
1203
|
+
i("div", Ua, v(x.detail), 1)
|
|
1121
1204
|
]),
|
|
1122
|
-
|
|
1205
|
+
x.accept && !x.winner ? (l(), V(f(re), {
|
|
1123
1206
|
key: 0,
|
|
1124
1207
|
size: "sm",
|
|
1125
|
-
variant:
|
|
1126
|
-
loading:
|
|
1127
|
-
class:
|
|
1128
|
-
onClick:
|
|
1208
|
+
variant: x.variant,
|
|
1209
|
+
loading: $.value,
|
|
1210
|
+
class: A(`tv-accept-${x.key}`),
|
|
1211
|
+
onClick: x.accept
|
|
1129
1212
|
}, {
|
|
1130
|
-
default:
|
|
1131
|
-
|
|
1213
|
+
default: S(() => [...d[9] || (d[9] = [
|
|
1214
|
+
N("Accept this value", -1)
|
|
1132
1215
|
])]),
|
|
1133
1216
|
_: 1
|
|
1134
|
-
}, 8, ["variant", "loading", "class", "onClick"])) :
|
|
1217
|
+
}, 8, ["variant", "loading", "class", "onClick"])) : h("", !0)
|
|
1135
1218
|
])
|
|
1136
1219
|
], 2))), 128)),
|
|
1137
|
-
e.save ? (
|
|
1138
|
-
|
|
1139
|
-
modelValue:
|
|
1140
|
-
"onUpdate:modelValue":
|
|
1220
|
+
e.save ? (l(), c("div", Ba, [
|
|
1221
|
+
I(f(lt), {
|
|
1222
|
+
modelValue: p.value,
|
|
1223
|
+
"onUpdate:modelValue": d[1] || (d[1] = (x) => p.value = x),
|
|
1141
1224
|
size: "sm",
|
|
1142
1225
|
class: "tv-custom-input flex-1",
|
|
1143
1226
|
placeholder: "Type the correct value…",
|
|
1144
|
-
disabled:
|
|
1227
|
+
disabled: $.value
|
|
1145
1228
|
}, null, 8, ["modelValue", "disabled"]),
|
|
1146
|
-
|
|
1229
|
+
I(f(re), {
|
|
1147
1230
|
variant: "success",
|
|
1148
1231
|
size: "sm",
|
|
1149
1232
|
class: "tv-accept-custom",
|
|
1150
|
-
loading:
|
|
1151
|
-
disabled: !
|
|
1152
|
-
onClick:
|
|
1233
|
+
loading: $.value,
|
|
1234
|
+
disabled: !p.value,
|
|
1235
|
+
onClick: le
|
|
1153
1236
|
}, {
|
|
1154
|
-
default:
|
|
1155
|
-
|
|
1237
|
+
default: S(() => [...d[10] || (d[10] = [
|
|
1238
|
+
N("Save custom value", -1)
|
|
1156
1239
|
])]),
|
|
1157
1240
|
_: 1
|
|
1158
1241
|
}, 8, ["loading", "disabled"])
|
|
1159
|
-
])) : (
|
|
1160
|
-
])) :
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1242
|
+
])) : (l(), c("div", Ma, " Read-only render — corrections are disabled here "))
|
|
1243
|
+
])) : h("", !0),
|
|
1244
|
+
j.value === "history" ? (l(), c("section", Fa, [
|
|
1245
|
+
i("section", Ya, [
|
|
1246
|
+
i("div", Ka, [
|
|
1247
|
+
i("div", Ha, [
|
|
1248
|
+
I(f(M), {
|
|
1166
1249
|
variant: "success",
|
|
1167
1250
|
size: "xxs"
|
|
1168
1251
|
}, {
|
|
1169
|
-
default:
|
|
1170
|
-
|
|
1252
|
+
default: S(() => [...d[11] || (d[11] = [
|
|
1253
|
+
N("current value", -1)
|
|
1171
1254
|
])]),
|
|
1172
1255
|
_: 1
|
|
1173
1256
|
}),
|
|
1174
|
-
|
|
1257
|
+
i("span", Ja, v(G(n.value.value)), 1)
|
|
1175
1258
|
]),
|
|
1176
|
-
|
|
1259
|
+
z.value != null ? (l(), c("span", Ga, "Confidence " + v(z.value) + "/5 · " + v(f(K)[q.value]), 1)) : (l(), c("span", Qa, v(f(K)[q.value]), 1))
|
|
1177
1260
|
]),
|
|
1178
|
-
|
|
1261
|
+
F.value ? (l(), c("p", Wa, v(F.value), 1)) : h("", !0)
|
|
1179
1262
|
]),
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1263
|
+
d[13] || (d[13] = i("div", { class: "flex flex-wrap items-baseline justify-between gap-2" }, [
|
|
1264
|
+
i("div", { class: "text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, " Every recorded attempt "),
|
|
1265
|
+
i("div", { class: "text-xs text-gray-400" }, "oldest first")
|
|
1183
1266
|
], -1)),
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1267
|
+
m.value ? (l(), c(B, { key: 0 }, H(2, (x) => I(f(ve), {
|
|
1268
|
+
key: x,
|
|
1269
|
+
shape: "rounded",
|
|
1270
|
+
class: "tv-history-skeleton h-16 w-full"
|
|
1271
|
+
})), 64)) : (l(), V(Fe, {
|
|
1272
|
+
key: 1,
|
|
1273
|
+
modelValue: pe.value,
|
|
1274
|
+
"onUpdate:modelValue": d[2] || (d[2] = (x) => pe.value = x),
|
|
1275
|
+
items: Ye.value,
|
|
1276
|
+
"id-prefix": "tv-attempt",
|
|
1277
|
+
class: "tv-history-accordion overflow-hidden rounded-lg border border-gray-200"
|
|
1190
1278
|
}, {
|
|
1191
|
-
header:
|
|
1192
|
-
var
|
|
1279
|
+
header: S(({ item: x }) => {
|
|
1280
|
+
var se, ie, oe, $e, Ce, Se, Ve;
|
|
1193
1281
|
return [
|
|
1194
|
-
|
|
1195
|
-
class:
|
|
1282
|
+
i("span", {
|
|
1283
|
+
class: A([
|
|
1196
1284
|
"tv-history-row flex min-w-0 flex-1 flex-wrap items-center gap-2 text-left",
|
|
1197
|
-
(
|
|
1285
|
+
(se = R.value.get(x.value)) != null && se.is_chosen ? "tv-history-chosen" : ""
|
|
1198
1286
|
])
|
|
1199
1287
|
}, [
|
|
1200
|
-
(
|
|
1288
|
+
(ie = R.value.get(x.value)) != null && ie.is_chosen ? (l(), V(f(M), {
|
|
1201
1289
|
key: 0,
|
|
1202
1290
|
variant: "success",
|
|
1203
1291
|
size: "xxs",
|
|
1204
1292
|
class: "tv-history-chosen-chip"
|
|
1205
1293
|
}, {
|
|
1206
|
-
default:
|
|
1207
|
-
|
|
1294
|
+
default: S(() => [...d[12] || (d[12] = [
|
|
1295
|
+
N("chosen", -1)
|
|
1208
1296
|
])]),
|
|
1209
1297
|
_: 1
|
|
1210
|
-
})) :
|
|
1211
|
-
|
|
1212
|
-
(
|
|
1298
|
+
})) : h("", !0),
|
|
1299
|
+
i("span", Xa, v(G((oe = R.value.get(x.value)) == null ? void 0 : oe.value)), 1),
|
|
1300
|
+
($e = R.value.get(x.value)) != null && $e.state ? (l(), V(f(M), {
|
|
1213
1301
|
key: 1,
|
|
1214
|
-
variant: ((
|
|
1302
|
+
variant: ((Ce = R.value.get(x.value)) == null ? void 0 : Ce.state) === "failed" ? "danger" : "muted",
|
|
1215
1303
|
size: "xxs",
|
|
1216
1304
|
class: "tv-history-state"
|
|
1217
1305
|
}, {
|
|
1218
|
-
default:
|
|
1219
|
-
var
|
|
1306
|
+
default: S(() => {
|
|
1307
|
+
var Ne;
|
|
1220
1308
|
return [
|
|
1221
|
-
|
|
1309
|
+
N(v((Ne = R.value.get(x.value)) == null ? void 0 : Ne.state), 1)
|
|
1222
1310
|
];
|
|
1223
1311
|
}),
|
|
1224
1312
|
_: 2
|
|
1225
|
-
}, 1032, ["variant"])) :
|
|
1226
|
-
((
|
|
1227
|
-
|
|
1228
|
-
|
|
1313
|
+
}, 1032, ["variant"])) : h("", !0),
|
|
1314
|
+
((Se = R.value.get(x.value)) == null ? void 0 : Se.confidence) != null ? (l(), c("span", Za, v((Ve = R.value.get(x.value)) == null ? void 0 : Ve.confidence) + "/5", 1)) : h("", !0),
|
|
1315
|
+
i("span", el, v(He(
|
|
1316
|
+
R.value.get(x.value)
|
|
1229
1317
|
)), 1),
|
|
1230
|
-
|
|
1318
|
+
i("span", tl, v(Ke(R.value.get(x.value))), 1)
|
|
1231
1319
|
], 2)
|
|
1232
1320
|
];
|
|
1233
1321
|
}),
|
|
1234
|
-
panel:
|
|
1235
|
-
var
|
|
1322
|
+
panel: S(({ item: x }) => {
|
|
1323
|
+
var se, ie, oe;
|
|
1236
1324
|
return [
|
|
1237
|
-
|
|
1238
|
-
evidence:
|
|
1239
|
-
(
|
|
1325
|
+
I(Te, {
|
|
1326
|
+
evidence: f(me)(
|
|
1327
|
+
(se = R.value.get(x.value)) == null ? void 0 : se.sources
|
|
1240
1328
|
),
|
|
1241
|
-
reasoning: Je(
|
|
1242
|
-
basis: (
|
|
1243
|
-
failed: ((
|
|
1329
|
+
reasoning: Je(R.value.get(x.value)),
|
|
1330
|
+
basis: (ie = R.value.get(x.value)) == null ? void 0 : ie.basis,
|
|
1331
|
+
failed: ((oe = R.value.get(x.value)) == null ? void 0 : oe.state) === "failed",
|
|
1244
1332
|
collapsible: !1,
|
|
1245
1333
|
dense: ""
|
|
1246
1334
|
}, null, 8, ["evidence", "reasoning", "basis", "failed"])
|
|
1247
1335
|
];
|
|
1248
1336
|
}),
|
|
1249
1337
|
_: 1
|
|
1250
|
-
}, 8, ["modelValue", "items"])
|
|
1251
|
-
])) :
|
|
1252
|
-
|
|
1253
|
-
de.value ? (
|
|
1254
|
-
key:
|
|
1338
|
+
}, 8, ["modelValue", "items"]))
|
|
1339
|
+
])) : h("", !0),
|
|
1340
|
+
j.value === "audit" ? (l(), c("section", al, [
|
|
1341
|
+
de.value && Z.value === null ? (l(), c(B, { key: 0 }, H(2, (x) => I(f(ve), {
|
|
1342
|
+
key: x,
|
|
1255
1343
|
shape: "rounded",
|
|
1256
1344
|
class: "tv-audit-skeleton h-24 w-full"
|
|
1257
|
-
})), 64)) : ce.value ? (
|
|
1345
|
+
})), 64)) : ce.value ? (l(), V(f(ge), {
|
|
1258
1346
|
key: 1,
|
|
1259
1347
|
variant: "danger",
|
|
1260
1348
|
class: "tv-audit-error"
|
|
1261
1349
|
}, {
|
|
1262
|
-
default:
|
|
1263
|
-
|
|
1350
|
+
default: S(() => [
|
|
1351
|
+
N(" Could not load the audit trail: " + v(ce.value), 1)
|
|
1264
1352
|
]),
|
|
1265
1353
|
_: 1
|
|
1266
|
-
})) :
|
|
1267
|
-
key: String(
|
|
1268
|
-
call:
|
|
1269
|
-
}, null, 8, ["call"]))), 128)) :
|
|
1270
|
-
])) :
|
|
1354
|
+
})) : Z.value && Z.value.length === 0 ? (l(), c("div", ll, " No LLM calls recorded for this data point ")) : Z.value ? (l(!0), c(B, { key: 3 }, H(Z.value, (x) => (l(), V(Ut, {
|
|
1355
|
+
key: String(x.id),
|
|
1356
|
+
call: x
|
|
1357
|
+
}, null, 8, ["call"]))), 128)) : h("", !0)
|
|
1358
|
+
])) : h("", !0)
|
|
1271
1359
|
])
|
|
1272
1360
|
];
|
|
1273
1361
|
}),
|
|
1274
1362
|
_: 1
|
|
1275
1363
|
}, 8, ["modelValue", "title", "class"]));
|
|
1276
1364
|
}
|
|
1277
|
-
}),
|
|
1365
|
+
}), sl = ["contenteditable", "data-editable"], il = {
|
|
1278
1366
|
key: 1,
|
|
1279
1367
|
class: "tv-verified-chip inline-flex items-center gap-1 rounded-full bg-green-600 px-2 py-0.5 text-[11px] font-semibold leading-none text-white",
|
|
1280
1368
|
"data-status": "verified"
|
|
1281
|
-
},
|
|
1369
|
+
}, ol = {
|
|
1282
1370
|
key: 2,
|
|
1283
1371
|
class: "tv-discrepancy-indicator ml-0.5 text-amber-500",
|
|
1284
1372
|
"aria-label": "discrepancy"
|
|
1285
|
-
},
|
|
1373
|
+
}, xl = /* @__PURE__ */ J({
|
|
1286
1374
|
__name: "VerifiedField",
|
|
1287
1375
|
props: {
|
|
1288
1376
|
source: {},
|
|
@@ -1291,301 +1379,145 @@ const Tt = { class: "tv-audit-call rounded-lg border border-gray-200 shadow-sm"
|
|
|
1291
1379
|
format: { type: Function }
|
|
1292
1380
|
},
|
|
1293
1381
|
setup(e) {
|
|
1294
|
-
const t = e,
|
|
1295
|
-
var
|
|
1296
|
-
return
|
|
1297
|
-
}),
|
|
1382
|
+
const t = e, a = we(), b = g(() => a.enabled.value), y = g(() => a.loading), s = O(null), r = g(() => {
|
|
1383
|
+
var p;
|
|
1384
|
+
return s.value ? s.value : t.source && t.field ? ((p = t.source.__meta) == null ? void 0 : p[t.field]) ?? null : null;
|
|
1385
|
+
}), n = g(() => Re(r.value)), C = g(() => {
|
|
1298
1386
|
if (t.original !== void 0 && t.original !== null)
|
|
1299
1387
|
return t.original;
|
|
1300
|
-
if (
|
|
1301
|
-
return
|
|
1388
|
+
if (r.value && n.value.value !== null && n.value.value !== void 0)
|
|
1389
|
+
return n.value.value;
|
|
1302
1390
|
if (t.source && t.field) return t.source[t.field];
|
|
1303
|
-
}),
|
|
1304
|
-
const
|
|
1305
|
-
return
|
|
1306
|
-
}),
|
|
1307
|
-
var
|
|
1308
|
-
const
|
|
1309
|
-
return (
|
|
1310
|
-
}),
|
|
1311
|
-
var
|
|
1312
|
-
return !!((
|
|
1313
|
-
}),
|
|
1314
|
-
var
|
|
1315
|
-
const
|
|
1316
|
-
return !!(
|
|
1317
|
-
}),
|
|
1318
|
-
const
|
|
1319
|
-
return
|
|
1320
|
-
}),
|
|
1321
|
-
var
|
|
1322
|
-
const
|
|
1323
|
-
if (!
|
|
1324
|
-
if (
|
|
1325
|
-
return
|
|
1326
|
-
const
|
|
1327
|
-
|
|
1328
|
-
|
|
1391
|
+
}), u = g(() => {
|
|
1392
|
+
const p = C.value;
|
|
1393
|
+
return p == null ? "" : typeof t.format == "function" ? t.format(p) : String(p);
|
|
1394
|
+
}), _ = g(() => {
|
|
1395
|
+
var $, E;
|
|
1396
|
+
const p = (E = ($ = r.value) == null ? void 0 : $.candidates) == null ? void 0 : E.extracted;
|
|
1397
|
+
return (p == null ? void 0 : p.state) === "failed" ? "failed" : _e(p == null ? void 0 : p.confidence);
|
|
1398
|
+
}), m = g(() => gt(r.value)), T = g(() => {
|
|
1399
|
+
var p, $;
|
|
1400
|
+
return !!(($ = (p = r.value) == null ? void 0 : p.candidates) != null && $.override);
|
|
1401
|
+
}), z = g(() => {
|
|
1402
|
+
var $;
|
|
1403
|
+
const p = ($ = r.value) == null ? void 0 : $.candidates;
|
|
1404
|
+
return !!(p != null && p.override || p != null && p.extracted || p != null && p.claim);
|
|
1405
|
+
}), q = g(() => b.value), F = g(() => !!r.value), Y = g(() => {
|
|
1406
|
+
const p = r.value;
|
|
1407
|
+
return q.value && !!p && Be(p);
|
|
1408
|
+
}), U = g(() => {
|
|
1409
|
+
var ne, G, te;
|
|
1410
|
+
const p = (G = (ne = r.value) == null ? void 0 : ne.candidates) == null ? void 0 : G.extracted;
|
|
1411
|
+
if (!p) return "No verification data";
|
|
1412
|
+
if (_.value === "failed")
|
|
1413
|
+
return p.reasoning ? `${K.failed}: ${p.reasoning}` : K.failed;
|
|
1414
|
+
const $ = [], E = K[_.value];
|
|
1415
|
+
$.push(
|
|
1416
|
+
p.confidence != null ? `${E} (${p.confidence}/5)` : E
|
|
1329
1417
|
);
|
|
1330
|
-
const
|
|
1331
|
-
return
|
|
1418
|
+
const le = ((te = p.sources) == null ? void 0 : te.length) ?? 0;
|
|
1419
|
+
return le > 0 && $.push(`${le} source ${le === 1 ? "page" : "pages"}`), m.value && $.push("sources disagree"), $.join(" · ");
|
|
1332
1420
|
});
|
|
1333
|
-
function
|
|
1334
|
-
var
|
|
1335
|
-
|
|
1421
|
+
function w(p) {
|
|
1422
|
+
var $;
|
|
1423
|
+
s.value = p, ($ = t.source) != null && $.__meta && t.field && (t.source.__meta[t.field] = p);
|
|
1336
1424
|
}
|
|
1337
|
-
const
|
|
1338
|
-
function
|
|
1339
|
-
|
|
1425
|
+
const D = g(() => ht(a, r, w)), k = g(() => !!D.value), P = O(!1), j = O(!1);
|
|
1426
|
+
function Q() {
|
|
1427
|
+
r.value && (P.value = !0);
|
|
1340
1428
|
}
|
|
1341
|
-
const
|
|
1342
|
-
async function X(
|
|
1343
|
-
|
|
1344
|
-
const
|
|
1345
|
-
!
|
|
1429
|
+
const W = g(() => F.value);
|
|
1430
|
+
async function X(p) {
|
|
1431
|
+
j.value = !1;
|
|
1432
|
+
const E = (p.target.textContent ?? "").trim();
|
|
1433
|
+
!D.value || E === u.value || await D.value(E, "custom");
|
|
1346
1434
|
}
|
|
1347
|
-
return (
|
|
1348
|
-
class:
|
|
1435
|
+
return (p, $) => (l(), c("span", {
|
|
1436
|
+
class: A(["tv-field inline-flex items-baseline gap-1", Y.value ? "tv-needs-review" : ""])
|
|
1349
1437
|
}, [
|
|
1350
|
-
|
|
1438
|
+
y.value ? (l(), V(f(ve), {
|
|
1351
1439
|
key: 0,
|
|
1352
1440
|
shape: "rounded",
|
|
1353
1441
|
class: "tv-field-skeleton inline-block h-[1em] w-16 align-middle"
|
|
1354
|
-
})) : (
|
|
1355
|
-
|
|
1356
|
-
class:
|
|
1442
|
+
})) : (l(), c(B, { key: 1 }, [
|
|
1443
|
+
i("span", {
|
|
1444
|
+
class: A([
|
|
1357
1445
|
"tv-field-value",
|
|
1358
|
-
|
|
1446
|
+
q.value && !z.value ? "tv-field-unverified cursor-pointer border-b border-dotted border-gray-300" : ""
|
|
1359
1447
|
]),
|
|
1360
|
-
contenteditable:
|
|
1361
|
-
"data-editable":
|
|
1362
|
-
onFocus:
|
|
1448
|
+
contenteditable: k.value,
|
|
1449
|
+
"data-editable": k.value ? "true" : "false",
|
|
1450
|
+
onFocus: $[0] || ($[0] = (E) => j.value = !0),
|
|
1363
1451
|
onBlur: X,
|
|
1364
|
-
onKeydown:
|
|
1365
|
-
onClick:
|
|
1452
|
+
onKeydown: $[1] || ($[1] = Qe(ye((E) => E.target.blur(), ["prevent"]), ["enter"])),
|
|
1453
|
+
onClick: $[2] || ($[2] = (E) => q.value && !z.value ? Q() : void 0)
|
|
1366
1454
|
}, [
|
|
1367
|
-
|
|
1368
|
-
value:
|
|
1369
|
-
formatted:
|
|
1455
|
+
xe(p.$slots, "default", {
|
|
1456
|
+
value: C.value,
|
|
1457
|
+
formatted: u.value
|
|
1370
1458
|
}, () => [
|
|
1371
|
-
|
|
1459
|
+
N(v(u.value), 1)
|
|
1372
1460
|
])
|
|
1373
|
-
], 42,
|
|
1374
|
-
|
|
1461
|
+
], 42, sl),
|
|
1462
|
+
q.value ? (l(), V(f(be), {
|
|
1375
1463
|
key: 0,
|
|
1376
|
-
tooltip:
|
|
1464
|
+
tooltip: U.value,
|
|
1377
1465
|
placement: "top"
|
|
1378
1466
|
}, {
|
|
1379
|
-
trigger:
|
|
1380
|
-
|
|
1467
|
+
trigger: S(() => [
|
|
1468
|
+
i("button", {
|
|
1381
1469
|
type: "button",
|
|
1382
|
-
class:
|
|
1383
|
-
onClick:
|
|
1470
|
+
class: A(["tv-overlay inline-flex items-center align-middle transition-transform duration-150", [f(ee), W.value ? "cursor-pointer hover:scale-110" : "cursor-default"]]),
|
|
1471
|
+
onClick: $[3] || ($[3] = (E) => W.value ? Q() : void 0)
|
|
1384
1472
|
}, [
|
|
1385
|
-
|
|
1473
|
+
T.value ? (l(), c("span", il, "✔")) : (l(), V(kt, {
|
|
1386
1474
|
key: 0,
|
|
1387
|
-
status:
|
|
1475
|
+
status: _.value
|
|
1388
1476
|
}, null, 8, ["status"])),
|
|
1389
|
-
|
|
1477
|
+
m.value && !T.value ? (l(), c("span", ol, "⚠")) : h("", !0)
|
|
1390
1478
|
], 2)
|
|
1391
1479
|
]),
|
|
1392
1480
|
_: 1
|
|
1393
|
-
}, 8, ["tooltip"])) :
|
|
1394
|
-
|
|
1481
|
+
}, 8, ["tooltip"])) : h("", !0),
|
|
1482
|
+
r.value ? (l(), V(nl, {
|
|
1395
1483
|
key: 1,
|
|
1396
|
-
modelValue:
|
|
1397
|
-
"onUpdate:modelValue":
|
|
1398
|
-
meta:
|
|
1484
|
+
modelValue: P.value,
|
|
1485
|
+
"onUpdate:modelValue": $[4] || ($[4] = (E) => P.value = E),
|
|
1486
|
+
meta: r.value,
|
|
1399
1487
|
label: e.field,
|
|
1400
|
-
save:
|
|
1401
|
-
}, null, 8, ["modelValue", "meta", "label", "save"])) :
|
|
1488
|
+
save: D.value
|
|
1489
|
+
}, null, 8, ["modelValue", "meta", "label", "save"])) : h("", !0)
|
|
1402
1490
|
], 64))
|
|
1403
1491
|
], 2));
|
|
1404
1492
|
}
|
|
1405
|
-
}),
|
|
1406
|
-
key: 0,
|
|
1407
|
-
class: "tv-comparison-empty text-gray-400"
|
|
1408
|
-
}, ln = {
|
|
1409
|
-
key: 1,
|
|
1410
|
-
class: "tv-anchored-group flex flex-col gap-3"
|
|
1411
|
-
}, sn = { class: "flex items-center gap-2" }, on = { class: "tv-datapoint-path font-mono text-xs text-gray-500" }, rn = { class: "tv-datapoint-resolved font-medium" }, un = {
|
|
1412
|
-
key: 0,
|
|
1413
|
-
class: "tv-datapoint-discrepancy text-xs font-medium text-amber-600"
|
|
1414
|
-
}, dn = { class: "tv-datapoint-candidates ml-4 text-xs text-gray-600" }, cn = { class: "font-medium" }, vn = {
|
|
1415
|
-
key: 0,
|
|
1416
|
-
class: "tv-datapoint-reasoning ml-4 text-xs italic text-gray-500"
|
|
1417
|
-
}, fn = {
|
|
1418
|
-
key: 1,
|
|
1419
|
-
class: "tv-datapoint-sources ml-4 text-xs text-gray-500"
|
|
1420
|
-
}, gn = { class: "tv-datapoint-cited text-gray-400" }, mn = ["href"], pn = {
|
|
1421
|
-
key: 1,
|
|
1422
|
-
class: "tv-source-page-label"
|
|
1423
|
-
}, xn = {
|
|
1424
|
-
key: 2,
|
|
1425
|
-
class: "ml-1 text-gray-400"
|
|
1426
|
-
}, yn = { class: "tv-source-quotes ml-4" }, hn = {
|
|
1427
|
-
key: 2,
|
|
1428
|
-
class: "tv-datapoint-history ml-4 mt-1 text-xs text-gray-500"
|
|
1429
|
-
}, bn = {
|
|
1430
|
-
key: 0,
|
|
1431
|
-
class: "tv-history-chosen-mark"
|
|
1432
|
-
}, wn = { class: "tv-history-entry-value" }, _n = {
|
|
1433
|
-
key: 1,
|
|
1434
|
-
class: "ml-1"
|
|
1435
|
-
}, kn = {
|
|
1436
|
-
key: 2,
|
|
1437
|
-
class: "ml-1"
|
|
1438
|
-
}, $n = {
|
|
1439
|
-
key: 3,
|
|
1440
|
-
class: "ml-1"
|
|
1441
|
-
}, Cn = {
|
|
1442
|
-
key: 4,
|
|
1443
|
-
class: "ml-1 text-gray-400"
|
|
1444
|
-
}, Sn = {
|
|
1445
|
-
key: 2,
|
|
1446
|
-
class: "tv-unanchored-group flex flex-col gap-1"
|
|
1447
|
-
}, Vn = { class: "tv-datapoint-path font-mono text-xs text-gray-500" }, Nn = { class: "tv-datapoint-value" }, qn = /* @__PURE__ */ W({
|
|
1448
|
-
__name: "ComparisonPage",
|
|
1449
|
-
setup(e) {
|
|
1450
|
-
const t = me(), n = v(() => ke(t.data)), _ = v(() => n.value.filter((C) => !C.unanchored)), h = v(() => n.value.filter((C) => C.unanchored));
|
|
1451
|
-
function g(C) {
|
|
1452
|
-
const d = _e(C).value;
|
|
1453
|
-
return d == null ? "" : String(d);
|
|
1454
|
-
}
|
|
1455
|
-
function u(C) {
|
|
1456
|
-
return C == null ? "" : String(C);
|
|
1457
|
-
}
|
|
1458
|
-
function l(C) {
|
|
1459
|
-
var d, m, x;
|
|
1460
|
-
return (x = (m = (d = C.meta) == null ? void 0 : d.candidates) == null ? void 0 : m.extracted) == null ? void 0 : x.confidence;
|
|
1461
|
-
}
|
|
1462
|
-
function k(C) {
|
|
1463
|
-
var x;
|
|
1464
|
-
const d = (x = C.meta) == null ? void 0 : x.candidates;
|
|
1465
|
-
if (!d) return [];
|
|
1466
|
-
const m = [];
|
|
1467
|
-
return d.override && m.push({ source: "override", value: d.override.value }), d.extracted && m.push({ source: "extracted", value: d.extracted.value }), d.claim && m.push({ source: "claim", value: d.claim.value }), m;
|
|
1468
|
-
}
|
|
1469
|
-
function w(C) {
|
|
1470
|
-
var d, m, x;
|
|
1471
|
-
return ((x = (m = (d = C.meta) == null ? void 0 : d.candidates) == null ? void 0 : m.extracted) == null ? void 0 : x.history) ?? [];
|
|
1472
|
-
}
|
|
1473
|
-
function N(C) {
|
|
1474
|
-
return C.created_at ? new Date(C.created_at).toLocaleString() : "";
|
|
1475
|
-
}
|
|
1476
|
-
function I(C) {
|
|
1477
|
-
var d, m, x;
|
|
1478
|
-
return oe((x = (m = (d = C.meta) == null ? void 0 : d.candidates) == null ? void 0 : m.extracted) == null ? void 0 : x.sources).pages;
|
|
1479
|
-
}
|
|
1480
|
-
function L(C) {
|
|
1481
|
-
var d, m, x;
|
|
1482
|
-
return $e(oe((x = (m = (d = C.meta) == null ? void 0 : d.candidates) == null ? void 0 : m.extracted) == null ? void 0 : x.sources));
|
|
1483
|
-
}
|
|
1484
|
-
return (C, d) => (a(), s("div", an, [
|
|
1485
|
-
d[1] || (d[1] = o("h2", { class: "tv-comparison-title text-lg font-semibold" }, "Verification comparison", -1)),
|
|
1486
|
-
n.value.length === 0 ? (a(), s("p", nn, " No data points to compare. ")) : f("", !0),
|
|
1487
|
-
_.value.length ? (a(), s("section", ln, [
|
|
1488
|
-
(a(!0), s(M, null, F(_.value, (m) => (a(), s("div", {
|
|
1489
|
-
key: m.path,
|
|
1490
|
-
class: "tv-datapoint border-t border-gray-100 pt-2"
|
|
1491
|
-
}, [
|
|
1492
|
-
o("div", sn, [
|
|
1493
|
-
o("span", on, i(m.path), 1),
|
|
1494
|
-
o("span", rn, i(g(m.meta)), 1),
|
|
1495
|
-
D(ye, {
|
|
1496
|
-
confidence: l(m),
|
|
1497
|
-
"show-label": ""
|
|
1498
|
-
}, null, 8, ["confidence"]),
|
|
1499
|
-
r(Fe)(m.meta) ? (a(), s("span", un, "⚠ discrepancy")) : f("", !0)
|
|
1500
|
-
]),
|
|
1501
|
-
o("ul", dn, [
|
|
1502
|
-
(a(!0), s(M, null, F(k(m), (x) => (a(), s("li", {
|
|
1503
|
-
key: x.source,
|
|
1504
|
-
class: "tv-candidate"
|
|
1505
|
-
}, [
|
|
1506
|
-
o("span", cn, i(x.source) + ":", 1),
|
|
1507
|
-
E(" " + i(u(x.value)), 1)
|
|
1508
|
-
]))), 128))
|
|
1509
|
-
]),
|
|
1510
|
-
r(pe)(m.meta) ? (a(), s("p", vn, i(r(pe)(m.meta)), 1)) : f("", !0),
|
|
1511
|
-
I(m).length ? (a(), s("ul", fn, [
|
|
1512
|
-
o("li", gn, i(L(m)), 1),
|
|
1513
|
-
(a(!0), s(M, null, F(I(m), (x) => (a(), s("li", {
|
|
1514
|
-
key: x.key,
|
|
1515
|
-
class: "tv-source-page"
|
|
1516
|
-
}, [
|
|
1517
|
-
x.url ? (a(), s("a", {
|
|
1518
|
-
key: 0,
|
|
1519
|
-
href: x.url,
|
|
1520
|
-
class: "tv-source-link text-blue-600 underline",
|
|
1521
|
-
target: "_blank",
|
|
1522
|
-
rel: "noopener"
|
|
1523
|
-
}, i(x.label), 9, mn)) : (a(), s("span", pn, i(x.label), 1)),
|
|
1524
|
-
x.documentName ? (a(), s("span", xn, "· " + i(x.documentName), 1)) : f("", !0),
|
|
1525
|
-
o("ul", yn, [
|
|
1526
|
-
(a(!0), s(M, null, F(x.quotes, (B, b) => (a(), s("li", {
|
|
1527
|
-
key: b,
|
|
1528
|
-
class: "tv-source-quote italic"
|
|
1529
|
-
}, "“" + i(B) + "”", 1))), 128))
|
|
1530
|
-
])
|
|
1531
|
-
]))), 128))
|
|
1532
|
-
])) : f("", !0),
|
|
1533
|
-
w(m).length ? (a(), s("ul", hn, [
|
|
1534
|
-
(a(!0), s(M, null, F(w(m), (x, B) => (a(), s("li", {
|
|
1535
|
-
key: x.id ?? B,
|
|
1536
|
-
class: R(["tv-history-entry", x.is_chosen ? "tv-history-entry-chosen font-medium text-green-700" : ""])
|
|
1537
|
-
}, [
|
|
1538
|
-
x.is_chosen ? (a(), s("span", bn, "✔ chosen · ")) : f("", !0),
|
|
1539
|
-
o("span", wn, i(u(x.value)), 1),
|
|
1540
|
-
x.state ? (a(), s("span", _n, "[" + i(x.state) + "]", 1)) : f("", !0),
|
|
1541
|
-
x.confidence != null ? (a(), s("span", kn, "· " + i(x.confidence) + "/5", 1)) : f("", !0),
|
|
1542
|
-
x.page != null ? (a(), s("span", $n, "· p" + i(x.page), 1)) : f("", !0),
|
|
1543
|
-
N(x) ? (a(), s("span", Cn, "· " + i(N(x)), 1)) : f("", !0)
|
|
1544
|
-
], 2))), 128))
|
|
1545
|
-
])) : f("", !0)
|
|
1546
|
-
]))), 128))
|
|
1547
|
-
])) : f("", !0),
|
|
1548
|
-
h.value.length ? (a(), s("section", Sn, [
|
|
1549
|
-
d[0] || (d[0] = o("h3", { class: "tv-unanchored-title text-sm font-semibold text-gray-500" }, " Unanchored / not from source ", -1)),
|
|
1550
|
-
(a(!0), s(M, null, F(h.value, (m) => (a(), s("div", {
|
|
1551
|
-
key: m.path,
|
|
1552
|
-
class: "tv-unanchored-datapoint flex items-center gap-2 text-sm"
|
|
1553
|
-
}, [
|
|
1554
|
-
o("span", Vn, i(m.path), 1),
|
|
1555
|
-
o("span", Nn, i(u(m.value)), 1),
|
|
1556
|
-
D(ye, { status: "unverifiable" })
|
|
1557
|
-
]))), 128))
|
|
1558
|
-
])) : f("", !0)
|
|
1559
|
-
]));
|
|
1560
|
-
}
|
|
1561
|
-
}), Dn = { class: "tv-enable-toggle flex items-center justify-between text-sm font-medium text-gray-700" }, In = { class: "tv-progress-block" }, On = { class: "mb-1 flex items-baseline justify-between" }, En = { class: "tv-progress-count text-xs font-semibold text-gray-600" }, Tn = {
|
|
1493
|
+
}), rl = { class: "tv-enable-toggle flex items-center justify-between text-sm font-medium text-gray-700" }, ul = { class: "tv-progress-block" }, dl = { class: "mb-1 flex items-baseline justify-between" }, cl = { class: "tv-progress-count text-xs font-semibold text-gray-600" }, vl = {
|
|
1562
1494
|
key: 0,
|
|
1563
1495
|
class: "tv-attempts-recorded mt-1 text-[11px] text-gray-400"
|
|
1564
|
-
},
|
|
1496
|
+
}, yl = /* @__PURE__ */ J({
|
|
1565
1497
|
__name: "VerificationChrome",
|
|
1566
1498
|
setup(e) {
|
|
1567
|
-
const t =
|
|
1568
|
-
() =>
|
|
1569
|
-
(
|
|
1570
|
-
var
|
|
1571
|
-
return
|
|
1499
|
+
const t = we(), { enabled: a } = t, b = Le(), y = O(!1), s = g(() => yt(t.data)), r = g(
|
|
1500
|
+
() => Ue(t.data).reduce(
|
|
1501
|
+
(_, m) => {
|
|
1502
|
+
var T, z, q, F, Y, U, w;
|
|
1503
|
+
return _ + (((q = (z = (T = m.meta) == null ? void 0 : T.candidates) == null ? void 0 : z.extracted) == null ? void 0 : q.history_count) ?? ((w = (U = (Y = (F = m.meta) == null ? void 0 : F.candidates) == null ? void 0 : Y.extracted) == null ? void 0 : U.history) == null ? void 0 : w.length) ?? 0);
|
|
1572
1504
|
},
|
|
1573
1505
|
0
|
|
1574
1506
|
)
|
|
1575
|
-
),
|
|
1507
|
+
), n = O(!1);
|
|
1576
1508
|
ae(
|
|
1577
|
-
() =>
|
|
1578
|
-
(
|
|
1579
|
-
|
|
1509
|
+
() => s.value.percent,
|
|
1510
|
+
(_) => {
|
|
1511
|
+
_ === 100 && s.value.total > 0 && !n.value && (n.value = !0, b.success("All data points verified 🎯"));
|
|
1580
1512
|
}
|
|
1581
1513
|
);
|
|
1582
|
-
let
|
|
1583
|
-
function
|
|
1584
|
-
const
|
|
1585
|
-
if (!
|
|
1586
|
-
|
|
1587
|
-
const
|
|
1588
|
-
|
|
1514
|
+
let C = 0;
|
|
1515
|
+
function u() {
|
|
1516
|
+
const _ = document.querySelectorAll(".tv-needs-review");
|
|
1517
|
+
if (!_.length) return;
|
|
1518
|
+
C = C % _.length;
|
|
1519
|
+
const m = _[C];
|
|
1520
|
+
C++, m.scrollIntoView({ behavior: "smooth", block: "center" }), m.animate(
|
|
1589
1521
|
[
|
|
1590
1522
|
{ boxShadow: "0 0 0 0 rgba(245, 158, 11, 0.8)" },
|
|
1591
1523
|
{ boxShadow: "0 0 0 12px rgba(245, 158, 11, 0)" }
|
|
@@ -1593,119 +1525,97 @@ const Tt = { class: "tv-audit-call rounded-lg border border-gray-200 shadow-sm"
|
|
|
1593
1525
|
{ duration: 900, iterations: 2 }
|
|
1594
1526
|
);
|
|
1595
1527
|
}
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
}
|
|
1599
|
-
return (C, d) => (a(), s(M, null, [
|
|
1600
|
-
o("button", {
|
|
1528
|
+
return (_, m) => (l(), c(B, null, [
|
|
1529
|
+
i("button", {
|
|
1601
1530
|
type: "button",
|
|
1602
|
-
class:
|
|
1531
|
+
class: A(["tv-settings-button fixed bottom-4 right-4 z-50 flex h-11 w-11 items-center justify-center rounded-full bg-gray-900 text-white shadow-lg transition-transform hover:scale-105", f(ee)]),
|
|
1603
1532
|
title: "Verification",
|
|
1604
|
-
onClick:
|
|
1533
|
+
onClick: m[0] || (m[0] = ye((T) => y.value = !y.value, ["stop"]))
|
|
1605
1534
|
}, [
|
|
1606
|
-
|
|
1607
|
-
icon:
|
|
1535
|
+
I(f(nt), {
|
|
1536
|
+
icon: f(st),
|
|
1608
1537
|
class: "h-5 w-5"
|
|
1609
1538
|
}, null, 8, ["icon"]),
|
|
1610
|
-
|
|
1539
|
+
f(a) && s.value.needsReview > 0 ? (l(), V(f(it), {
|
|
1611
1540
|
key: 0,
|
|
1612
|
-
value:
|
|
1541
|
+
value: s.value.needsReview,
|
|
1613
1542
|
variant: "warning",
|
|
1614
1543
|
class: "tv-needs-review-badge absolute -right-1 -top-1"
|
|
1615
|
-
}, null, 8, ["value"])) :
|
|
1544
|
+
}, null, 8, ["value"])) : h("", !0)
|
|
1616
1545
|
], 2),
|
|
1617
|
-
|
|
1546
|
+
y.value ? (l(), c("div", {
|
|
1618
1547
|
key: 0,
|
|
1619
|
-
class:
|
|
1548
|
+
class: A(["tv-settings-panel fixed bottom-20 right-4 z-50 flex w-72 flex-col gap-4 rounded-xl bg-white p-4 shadow-2xl ring-1 ring-gray-200", f(ee)])
|
|
1620
1549
|
}, [
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
"onUpdate:modelValue":
|
|
1550
|
+
i("label", rl, [
|
|
1551
|
+
m[2] || (m[2] = i("span", null, "Verification overlay", -1)),
|
|
1552
|
+
We(i("input", {
|
|
1553
|
+
"onUpdate:modelValue": m[1] || (m[1] = (T) => Xe(a) ? a.value = T : null),
|
|
1625
1554
|
type: "checkbox",
|
|
1626
1555
|
class: "tv-enable-checkbox h-4 w-4 accent-gray-900"
|
|
1627
1556
|
}, null, 512), [
|
|
1628
|
-
[Ze,
|
|
1557
|
+
[Ze, f(a)]
|
|
1629
1558
|
])
|
|
1630
1559
|
]),
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1560
|
+
f(a) && s.value.total > 0 ? (l(), c(B, { key: 0 }, [
|
|
1561
|
+
i("div", ul, [
|
|
1562
|
+
i("div", dl, [
|
|
1563
|
+
m[3] || (m[3] = i("span", { class: "text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, "Review progress", -1)),
|
|
1564
|
+
i("span", cl, v(s.value.verified) + " / " + v(s.value.total), 1)
|
|
1636
1565
|
]),
|
|
1637
|
-
|
|
1638
|
-
value:
|
|
1639
|
-
max:
|
|
1566
|
+
I(f(Ae), {
|
|
1567
|
+
value: s.value.verified,
|
|
1568
|
+
max: s.value.total,
|
|
1640
1569
|
size: "md",
|
|
1641
|
-
variant:
|
|
1642
|
-
striped:
|
|
1643
|
-
"animate-stripes":
|
|
1644
|
-
glow:
|
|
1570
|
+
variant: s.value.percent === 100 ? "success" : "info",
|
|
1571
|
+
striped: s.value.percent < 100,
|
|
1572
|
+
"animate-stripes": s.value.percent < 100,
|
|
1573
|
+
glow: s.value.percent === 100,
|
|
1645
1574
|
gradient: ""
|
|
1646
1575
|
}, null, 8, ["value", "max", "variant", "striped", "animate-stripes", "glow"]),
|
|
1647
|
-
|
|
1576
|
+
r.value > 0 ? (l(), c("div", vl, v(r.value) + " extraction attempt" + v(r.value === 1 ? "" : "s") + " recorded ", 1)) : h("", !0)
|
|
1648
1577
|
]),
|
|
1649
|
-
|
|
1578
|
+
s.value.needsReview > 0 ? (l(), c("button", {
|
|
1650
1579
|
key: 0,
|
|
1651
1580
|
type: "button",
|
|
1652
|
-
class:
|
|
1653
|
-
onClick:
|
|
1581
|
+
class: A(["tv-next-flagged flex items-center justify-between rounded-lg bg-amber-50 px-3 py-2 text-left text-xs font-medium text-amber-700 ring-1 ring-inset ring-amber-600/20 transition hover:bg-amber-100", f(ee)]),
|
|
1582
|
+
onClick: ye(u, ["stop"])
|
|
1654
1583
|
}, [
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
], 2)) :
|
|
1658
|
-
], 64)) :
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
onClick: ve(L, ["stop"])
|
|
1663
|
-
}, " Open comparison page ", 2)
|
|
1664
|
-
], 2)) : f("", !0),
|
|
1665
|
-
D(r(he), {
|
|
1666
|
-
modelValue: r(h),
|
|
1667
|
-
"onUpdate:modelValue": d[2] || (d[2] = (m) => De(h) ? h.value = m : null),
|
|
1668
|
-
title: "Verification comparison",
|
|
1669
|
-
width: 80,
|
|
1670
|
-
"close-x": "",
|
|
1671
|
-
class: R(r(Q))
|
|
1672
|
-
}, {
|
|
1673
|
-
default: q(() => [
|
|
1674
|
-
D(qn)
|
|
1675
|
-
]),
|
|
1676
|
-
_: 1
|
|
1677
|
-
}, 8, ["modelValue", "class"]),
|
|
1678
|
-
D(r(rt), {
|
|
1679
|
-
class: R(r(Q))
|
|
1584
|
+
i("span", null, v(s.value.needsReview) + " need" + v(s.value.needsReview === 1 ? "s" : "") + " review", 1),
|
|
1585
|
+
m[4] || (m[4] = i("span", { "aria-hidden": "true" }, "→", -1))
|
|
1586
|
+
], 2)) : h("", !0)
|
|
1587
|
+
], 64)) : h("", !0)
|
|
1588
|
+
], 2)) : h("", !0),
|
|
1589
|
+
I(f(ot), {
|
|
1590
|
+
class: A(f(ee))
|
|
1680
1591
|
}, null, 8, ["class"])
|
|
1681
1592
|
], 64));
|
|
1682
1593
|
}
|
|
1683
1594
|
});
|
|
1684
1595
|
export {
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
$e as citationSummary,
|
|
1596
|
+
ee as CHROME_CLASS,
|
|
1597
|
+
Te as CitationEvidence,
|
|
1598
|
+
De as CitationPage,
|
|
1599
|
+
ga as CitationPageList,
|
|
1600
|
+
kt as ConfidenceIcon,
|
|
1601
|
+
ze as ENABLED_STORAGE_KEY,
|
|
1602
|
+
je as RESOLUTION_PRIORITY,
|
|
1603
|
+
vt as STATUS_COLORS,
|
|
1604
|
+
K as STATUS_LABELS,
|
|
1605
|
+
yl as VerificationChrome,
|
|
1606
|
+
nl as VerificationModal,
|
|
1607
|
+
xl as VerifiedField,
|
|
1608
|
+
_e as bucketConfidence,
|
|
1609
|
+
pt as candidatesDisagree,
|
|
1610
|
+
me as citationEvidence,
|
|
1611
|
+
Me as citationSummary,
|
|
1702
1612
|
yt as computeProgress,
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1613
|
+
$t as fetchDataPointDetail,
|
|
1614
|
+
gt as hasDiscrepancy,
|
|
1615
|
+
pl as initVerification,
|
|
1616
|
+
ml as reasoningOf,
|
|
1617
|
+
ft as resolveCandidates,
|
|
1618
|
+
Re as resolveDataPoint,
|
|
1619
|
+
we as useVerification,
|
|
1620
|
+
Ue as walkDataPoints
|
|
1711
1621
|
};
|