@jevitate/cli 0.21.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +326 -29
- package/dist/build-info.generated.js +3 -3
- package/dist/check-api.js +35 -0
- package/dist/check-api.js.map +1 -1
- package/dist/check-types.d.ts +3 -0
- package/dist/check-types.js.map +1 -1
- package/dist/outcome-targets.d.ts +27 -0
- package/dist/outcome-targets.js +41 -0
- package/dist/outcome-targets.js.map +1 -0
- package/package.json +9 -9
package/dist/bin.js
CHANGED
|
@@ -37855,6 +37855,7 @@ var MESSAGE_FIELD = /\b(reply|message|ask|chat|inquiry|prompt|say|talk|conversat
|
|
|
37855
37855
|
var MESSAGE_INPUT_TYPES = /* @__PURE__ */ new Set(["", "text", "search"]);
|
|
37856
37856
|
var SUBMIT_NAME = /\b(send|submit|reply|ask|post)\b|[→➤➔↑]|^\s*(go|ok)\s*$/i;
|
|
37857
37857
|
var PAIRED_SUBMIT_DISTANCE = 6;
|
|
37858
|
+
var RECIPIENT_NAME = /^\s*(to|cc|bcc)\b|\b(recipients?|contacts?|addressee|send to)\b/i;
|
|
37858
37859
|
function composerEvidence(node2, args) {
|
|
37859
37860
|
const el = node2;
|
|
37860
37861
|
const norm6 = (s3) => s3 === null ? "" : s3.replace(/\s+/g, " ").trim();
|
|
@@ -37886,6 +37887,29 @@ function composerEvidence(node2, args) {
|
|
|
37886
37887
|
parents.set(item.parentElement, n3);
|
|
37887
37888
|
}
|
|
37888
37889
|
const submit2 = new RegExp(args.submit, "i");
|
|
37890
|
+
const recipient = new RegExp(args.recipient, "i");
|
|
37891
|
+
const labelOf2 = (a) => {
|
|
37892
|
+
const aria = norm6(a.getAttribute("aria-label"));
|
|
37893
|
+
if (aria !== "")
|
|
37894
|
+
return aria;
|
|
37895
|
+
const by = norm6(a.getAttribute("aria-labelledby"));
|
|
37896
|
+
if (by !== "") {
|
|
37897
|
+
const text2 = by.split(" ").map((id2) => norm6(document.getElementById(id2)?.textContent ?? null)).join(" ").trim();
|
|
37898
|
+
if (text2 !== "")
|
|
37899
|
+
return text2;
|
|
37900
|
+
}
|
|
37901
|
+
const id = a.getAttribute("id");
|
|
37902
|
+
if (id !== null && id !== "") {
|
|
37903
|
+
const forLabel = Array.from(document.querySelectorAll("label")).find((l2) => l2.htmlFor === id);
|
|
37904
|
+
if (forLabel !== void 0)
|
|
37905
|
+
return norm6(forLabel.textContent);
|
|
37906
|
+
}
|
|
37907
|
+
const wrap = a.closest("label");
|
|
37908
|
+
if (wrap !== null)
|
|
37909
|
+
return norm6(wrap.textContent);
|
|
37910
|
+
return norm6(a.getAttribute("placeholder")) || norm6(a.getAttribute("name"));
|
|
37911
|
+
};
|
|
37912
|
+
const addressed = (container) => Array.from(container.querySelectorAll('select, input:not([type="hidden"]):not([type="submit"]):not([type="button"]), [role="combobox"], [role="listbox"]')).some((f2) => f2 !== el && !f2.contains(el) && rendered(f2) && recipient.test(labelOf2(f2)));
|
|
37889
37913
|
const up4 = (a) => {
|
|
37890
37914
|
const out = [];
|
|
37891
37915
|
for (let cur = a; cur !== null; cur = parentOf(cur))
|
|
@@ -37903,7 +37927,7 @@ function composerEvidence(node2, args) {
|
|
|
37903
37927
|
for (let i = 0; i < fieldPath.length && i <= args.distance; i++) {
|
|
37904
37928
|
const j = bp.indexOf(fieldPath[i]);
|
|
37905
37929
|
if (j >= 0) {
|
|
37906
|
-
if (i + j <= args.distance)
|
|
37930
|
+
if (i + j <= args.distance && !addressed(fieldPath[i]))
|
|
37907
37931
|
return true;
|
|
37908
37932
|
break;
|
|
37909
37933
|
}
|
|
@@ -38535,7 +38559,7 @@ async function readSnapshot(page, opts) {
|
|
|
38535
38559
|
const value = raw.valueBearing && !isSecretField(raw.inputType, raw.autocomplete, [raw.name]) ? await handle.evaluate(readControlValue) : null;
|
|
38536
38560
|
const facts = { ...raw, value };
|
|
38537
38561
|
const textEntry = raw.tag === "textarea" || raw.tag === "input" && MESSAGE_INPUT_TYPES.has(raw.inputType ?? "") || raw.role === "textbox";
|
|
38538
|
-
const conversational = textEntry && MESSAGE_FIELD.test(raw.name) ? await handle.evaluate(composerEvidence, { submit: SUBMIT_NAME.source, distance: PAIRED_SUBMIT_DISTANCE }).catch(() => false) : null;
|
|
38562
|
+
const conversational = textEntry && MESSAGE_FIELD.test(raw.name) ? await handle.evaluate(composerEvidence, { submit: SUBMIT_NAME.source, distance: PAIRED_SUBMIT_DISTANCE, recipient: RECIPIENT_NAME.source }).catch(() => false) : null;
|
|
38539
38563
|
const computed = await computeDescriptor(page, handle, { primaryOnly: true });
|
|
38540
38564
|
const control = {
|
|
38541
38565
|
index: controls.length,
|
|
@@ -45461,6 +45485,19 @@ function pageStatusOf(ctx) {
|
|
|
45461
45485
|
const parts2 = [...isEmptyStatus(ctx.status) ? [] : [describeStatus(ctx.status)], ...[formMessageStatus(ctx)].filter((x) => x !== null)];
|
|
45462
45486
|
return parts2.length === 0 ? {} : { pageStatus: parts2.join("; ") };
|
|
45463
45487
|
}
|
|
45488
|
+
var DOCUMENT_LOADS = /* @__PURE__ */ new WeakMap();
|
|
45489
|
+
async function documentOf(page) {
|
|
45490
|
+
let loads = DOCUMENT_LOADS.get(page);
|
|
45491
|
+
if (loads === void 0) {
|
|
45492
|
+
const counter = { count: 0 };
|
|
45493
|
+
page.on("domcontentloaded", () => {
|
|
45494
|
+
counter.count += 1;
|
|
45495
|
+
});
|
|
45496
|
+
DOCUMENT_LOADS.set(page, counter);
|
|
45497
|
+
loads = counter;
|
|
45498
|
+
}
|
|
45499
|
+
return loads.count;
|
|
45500
|
+
}
|
|
45464
45501
|
|
|
45465
45502
|
// ../explore/dist/goal-loop/context/conversation.js
|
|
45466
45503
|
function initConversation(ctx, cfg) {
|
|
@@ -45485,6 +45522,7 @@ function initConversation(ctx, cfg) {
|
|
|
45485
45522
|
}
|
|
45486
45523
|
|
|
45487
45524
|
// ../explore/dist/answer.js
|
|
45525
|
+
var UNCONFIRMED_WRITE = "the quote shows what the run itself sent";
|
|
45488
45526
|
var ANSWER_PAGES_CHARS = 8e3;
|
|
45489
45527
|
var MAX_OBSERVED_PAGES = 30;
|
|
45490
45528
|
var OBSERVED_PAGE_CHARS = 2e4;
|
|
@@ -45526,9 +45564,46 @@ var ObservedPages = class {
|
|
|
45526
45564
|
if (v !== "")
|
|
45527
45565
|
this.#ownInputs.add(v);
|
|
45528
45566
|
}
|
|
45529
|
-
/**
|
|
45530
|
-
|
|
45567
|
+
/**
|
|
45568
|
+
* #647: values a 2xx write sent that no page loaded from the server has shown since. A 2xx says the
|
|
45569
|
+
* request was accepted, not that the app kept it: until a later document shows the value, a page
|
|
45570
|
+
* showing it may only be the client's own rendering of what the run sent.
|
|
45571
|
+
*/
|
|
45572
|
+
#unread = /* @__PURE__ */ new Set();
|
|
45573
|
+
/** #647: the document the last such write was sent from. */
|
|
45574
|
+
#writeDocument = null;
|
|
45575
|
+
/**
|
|
45576
|
+
* #239: a submit the run clicked fired writes that all succeeded (2xx): what it typed was sent. #647:
|
|
45577
|
+
* it is read back only when a page from a later document load (`document`) shows it.
|
|
45578
|
+
*/
|
|
45579
|
+
confirmOwnInputs(document2) {
|
|
45580
|
+
for (const v of this.#ownInputs)
|
|
45581
|
+
this.#unread.add(v);
|
|
45531
45582
|
this.#ownInputs.clear();
|
|
45583
|
+
if (document2 !== void 0)
|
|
45584
|
+
this.#writeDocument = document2;
|
|
45585
|
+
}
|
|
45586
|
+
/** #647: the run's sent values (folded) that no page loaded from the server since has shown. */
|
|
45587
|
+
unreadWrites() {
|
|
45588
|
+
return this.#unread;
|
|
45589
|
+
}
|
|
45590
|
+
/** #647: the unread sent values (folded) that `shown` (a page's text, or field values) displays. */
|
|
45591
|
+
unreadShownIn(shown2) {
|
|
45592
|
+
const text2 = fold(shown2);
|
|
45593
|
+
return [...this.#unread].filter((v) => text2.includes(v));
|
|
45594
|
+
}
|
|
45595
|
+
/**
|
|
45596
|
+
* #647: a page from a later document load than the write shows `shown` (its visible text, or field
|
|
45597
|
+
* values): the sent values it contains are read back from the app. Returns those values.
|
|
45598
|
+
*/
|
|
45599
|
+
readBack(document2, shown2) {
|
|
45600
|
+
if (this.#unread.size === 0 || document2 === void 0 || document2 === this.#writeDocument)
|
|
45601
|
+
return [];
|
|
45602
|
+
const text2 = fold(shown2);
|
|
45603
|
+
const back = [...this.#unread].filter((v) => text2.includes(v));
|
|
45604
|
+
for (const v of back)
|
|
45605
|
+
this.#unread.delete(v);
|
|
45606
|
+
return back;
|
|
45532
45607
|
}
|
|
45533
45608
|
/** #239: the run's own typed, not-yet-saved values (folded). */
|
|
45534
45609
|
ownInputs() {
|
|
@@ -45564,6 +45639,7 @@ var ObservedPages = class {
|
|
|
45564
45639
|
if (nav.length > 0)
|
|
45565
45640
|
this.#topNav = nav;
|
|
45566
45641
|
}
|
|
45642
|
+
this.readBack(headings2.document, [page.text, ...kept.map((f2) => f2.value)].join("\n"));
|
|
45567
45643
|
if (page.text.trim() === "" && kept.length === 0)
|
|
45568
45644
|
return;
|
|
45569
45645
|
const same = (p) => JSON.stringify(p.fields ?? []) === JSON.stringify(page.fields ?? []) && p.heading === page.heading && p.title === page.title && p.status === page.status && JSON.stringify(p.controls ?? []) === JSON.stringify(page.controls ?? []) && JSON.stringify(p.contentLinks ?? []) === JSON.stringify(page.contentLinks ?? []) && p.inventoryIncomplete === page.inventoryIncomplete;
|
|
@@ -45918,14 +45994,14 @@ function errorPageReason(page) {
|
|
|
45918
45994
|
return `the page it is on is an error page (title "${page.title}")`;
|
|
45919
45995
|
return null;
|
|
45920
45996
|
}
|
|
45921
|
-
function groundClaim(claim2, quote6, pages, given, goal, answer, own2, absent) {
|
|
45997
|
+
function groundClaim(claim2, quote6, pages, given, goal, answer, own2, unread, absent) {
|
|
45922
45998
|
const name = (absent ?? "").replace(/\s+/g, " ").trim();
|
|
45923
45999
|
if (name !== "")
|
|
45924
46000
|
return { evidence: groundAbsence(claim2, name, pages, goal), notAnswer: false };
|
|
45925
|
-
const r = groundClaimOn(claim2, quote6, pages, given, goal, answer, own2);
|
|
46001
|
+
const r = groundClaimOn(claim2, quote6, pages, given, goal, answer, own2, unread);
|
|
45926
46002
|
return "evidence" in r ? r : { evidence: r, notAnswer: false };
|
|
45927
46003
|
}
|
|
45928
|
-
function groundClaimOn(claim2, quote6, pages, given, goal, answer, own2) {
|
|
46004
|
+
function groundClaimOn(claim2, quote6, pages, given, goal, answer, own2, unread) {
|
|
45929
46005
|
const q = bareQuote(quote6);
|
|
45930
46006
|
const base = { claim: claim2, quote: quote6 };
|
|
45931
46007
|
if (q.replace(/\s/g, "").length < MIN_QUOTE_CHARS)
|
|
@@ -45943,6 +46019,11 @@ function groundClaimOn(claim2, quote6, pages, given, goal, answer, own2) {
|
|
|
45943
46019
|
const why = `the quote is the run's own typed input in "${found.control ?? "a form field"}", never saved \u2014 it shows what the run entered, not what the app recorded (submit it, then report what the app shows)`;
|
|
45944
46020
|
return { ...base, url: page.url, grounded: false, ...where, why };
|
|
45945
46021
|
}
|
|
46022
|
+
const sent = [...unread].find((v) => v.length >= MIN_QUOTE_CHARS && q.includes(v));
|
|
46023
|
+
if (sent !== void 0) {
|
|
46024
|
+
const why = `${UNCONFIRMED_WRITE} ("${sent}"), and no page loaded since the write has shown it \u2014 the app may not have kept it (reload, or open the page where the app lists it, and report what that shows)`;
|
|
46025
|
+
return { ...base, url: page.url, grounded: false, ...where, why };
|
|
46026
|
+
}
|
|
45946
46027
|
if (found.source === "page-text" && !CONTROL_GOAL.test(goal) && quoteIsOnlyControlNames(quote6, found.page)) {
|
|
45947
46028
|
const why = "the quote is only a control's label (a button, a field label or a navigation link), not page content that answers the question";
|
|
45948
46029
|
return { evidence: { ...base, url: page.url, grounded: false, ...where, why }, notAnswer: true };
|
|
@@ -45970,7 +46051,8 @@ function groundAnswer(proposed, pages, opts = {}) {
|
|
|
45970
46051
|
return { accept: false, reason: NO_ANSWER_REASON, answer: null };
|
|
45971
46052
|
const given = new Set(numbersIn(opts.goal ?? ""));
|
|
45972
46053
|
const own2 = opts.ownInputs ?? /* @__PURE__ */ new Set();
|
|
45973
|
-
const
|
|
46054
|
+
const unread = opts.unreadWrites ?? /* @__PURE__ */ new Set();
|
|
46055
|
+
const grounded_ = proposed.claims.map((c) => groundClaim(c.claim, c.quote, pages, given, opts.goal ?? "", text2, own2, unread, c.absent));
|
|
45974
46056
|
const evidence = grounded_.map((g) => g.evidence);
|
|
45975
46057
|
const answer = { text: text2, evidence };
|
|
45976
46058
|
if (evidence.length === 0)
|
|
@@ -45979,6 +46061,8 @@ function groundAnswer(proposed, pages, opts = {}) {
|
|
|
45979
46061
|
if (badAt >= 0) {
|
|
45980
46062
|
const bad = evidence[badAt];
|
|
45981
46063
|
const reason = `the answer is not grounded: "${bad.claim}" \u2014 ${bad.why ?? "ungrounded"}`;
|
|
46064
|
+
if (bad.why?.startsWith(UNCONFIRMED_WRITE) === true)
|
|
46065
|
+
return { accept: false, reason, answer, unconfirmedWrite: true };
|
|
45982
46066
|
return grounded_[badAt].notAnswer ? { accept: false, reason, answer, notAnswer: true } : { accept: false, reason, answer };
|
|
45983
46067
|
}
|
|
45984
46068
|
const grounded = new Set(evidence.flatMap((e) => numbersIn(e.quote)));
|
|
@@ -46157,7 +46241,11 @@ async function reportAnswer(gen, input2) {
|
|
|
46157
46241
|
answer: out.answer === null ? null : r(out.answer),
|
|
46158
46242
|
claims: out.claims.map((c) => ({ claim: r(c.claim), quote: r(c.quote), ...c.absent == null ? {} : { absent: r(c.absent) } }))
|
|
46159
46243
|
});
|
|
46160
|
-
const grounding = {
|
|
46244
|
+
const grounding = {
|
|
46245
|
+
goal: input2.goal,
|
|
46246
|
+
...input2.ownInputs === void 0 ? {} : { ownInputs: input2.ownInputs },
|
|
46247
|
+
...input2.unreadWrites === void 0 ? {} : { unreadWrites: input2.unreadWrites }
|
|
46248
|
+
};
|
|
46161
46249
|
const res = await gen.generate("goal.answer", ask);
|
|
46162
46250
|
const verdict = await vetoed(groundAnswer(scrub3(res.output), input2.pages, grounding), input2.judge, vet, vetoes);
|
|
46163
46251
|
if (verdict.accept)
|
|
@@ -46267,6 +46355,7 @@ function initAnswers(ctx, cfg) {
|
|
|
46267
46355
|
ctx.settledClick = null;
|
|
46268
46356
|
ctx.clickedRegion = null;
|
|
46269
46357
|
ctx.wroteOk = false;
|
|
46358
|
+
ctx.readBackAsked = false;
|
|
46270
46359
|
ctx.writeGoal = goalAsksToWrite(cfg.goal);
|
|
46271
46360
|
ctx.vetoes = new VetoedAnswers();
|
|
46272
46361
|
ctx.replies = new ObservedPages(ctx.secrets);
|
|
@@ -48116,6 +48205,29 @@ function deferEnding(ctx, step, ending) {
|
|
|
48116
48205
|
return note;
|
|
48117
48206
|
}
|
|
48118
48207
|
|
|
48208
|
+
// ../explore/dist/goal-loop/read-back.js
|
|
48209
|
+
function shownOn(step) {
|
|
48210
|
+
return [step.visibleText, ...step.snap.controls.map((c) => c.value ?? "")].join("\n");
|
|
48211
|
+
}
|
|
48212
|
+
async function readBackProbe(ctx, step) {
|
|
48213
|
+
const unread = ctx.observed.unreadShownIn(shownOn(step));
|
|
48214
|
+
if (unread.length === 0 || ctx.sideEffects.inflight().length > 0)
|
|
48215
|
+
return [];
|
|
48216
|
+
const r = await act(ctx.cfg.actor, { op: "reload", control: null });
|
|
48217
|
+
if (!r.ok)
|
|
48218
|
+
return [];
|
|
48219
|
+
const text2 = await readPageText(ctx.page, ctx.secrets).catch(() => "");
|
|
48220
|
+
const values2 = await ctx.page.evaluate(() => Array.from(document.querySelectorAll("input, textarea, select")).filter((e) => e.type !== "password").map((e) => e.value ?? "")).catch(() => []);
|
|
48221
|
+
const back = ctx.observed.readBack(await documentOf(ctx.page), redactPageText([text2, ...values2].join("\n"), ctx.secrets));
|
|
48222
|
+
const listed2 = (vs) => vs.map((v) => `"${v}"`).join(", ");
|
|
48223
|
+
const missing = unread.filter((v) => !back.includes(v));
|
|
48224
|
+
ctx.history.push(missing.length === 0 ? `read back after a reload: the page loaded from the server shows what the run sent (${listed2(back)})` : `after a reload, the page loaded from the server no longer shows what the run sent (${listed2(missing)})`);
|
|
48225
|
+
return back;
|
|
48226
|
+
}
|
|
48227
|
+
function unreadShown(ctx, step) {
|
|
48228
|
+
return ctx.observed.unreadShownIn(shownOn(step));
|
|
48229
|
+
}
|
|
48230
|
+
|
|
48119
48231
|
// ../explore/dist/goal-loop/handle-report.js
|
|
48120
48232
|
async function handleReport(ctx, step) {
|
|
48121
48233
|
const { cfg } = ctx;
|
|
@@ -48137,6 +48249,8 @@ async function handleReport(ctx, step) {
|
|
|
48137
48249
|
ctx.noteReplyText(snap.url, await readPageText(ctx.page, ctx.secrets));
|
|
48138
48250
|
}
|
|
48139
48251
|
const replyPages = ctx.replyGoal ? ctx.replies.pages() : null;
|
|
48252
|
+
if (replyPages === null)
|
|
48253
|
+
await readBackProbe(ctx, step);
|
|
48140
48254
|
const verdict = replyPages !== null && replyPages.length === 0 ? {
|
|
48141
48255
|
accept: false,
|
|
48142
48256
|
reason: ctx.preSend === null ? "no reply observed: no message was sent yet \u2014 text on the page before the conversation is not a reply" : `no reply observed: no new message appeared after the send within the reply wait (${Math.round(ctx.replyWaitMs / 1e3)}s)`,
|
|
@@ -48150,7 +48264,7 @@ async function handleReport(ctx, step) {
|
|
|
48150
48264
|
judge: cfg.judge,
|
|
48151
48265
|
vetoes: ctx.vetoes,
|
|
48152
48266
|
// #238: "none exists" is an answer only on observed pages that cover the app enough.
|
|
48153
|
-
...replyPages === null ? { topNav: ctx.observed.topNavigation(), ownInputs: ctx.observed.ownInputs() } : {}
|
|
48267
|
+
...replyPages === null ? { topNav: ctx.observed.topNavigation(), ownInputs: ctx.observed.ownInputs(), unreadWrites: ctx.observed.unreadWrites() } : {}
|
|
48154
48268
|
}).then((v) => v.accept && ctx.writeGoal && !ctx.wroteOk && v.answer.absent !== true ? { accept: false, reason: UNSAVED_WRITE_REASON, answer: v.answer } : v).catch((e) => ({ accept: false, reason: `no answer could be generated: ${firstLine(e)}`, answer: null }));
|
|
48155
48269
|
if (verdict.accept) {
|
|
48156
48270
|
const deferred = deferEnding(ctx, step, "report");
|
|
@@ -48170,6 +48284,12 @@ async function handleReport(ctx, step) {
|
|
|
48170
48284
|
ctx.stop = "done";
|
|
48171
48285
|
return "stop";
|
|
48172
48286
|
}
|
|
48287
|
+
if (verdict.unconfirmedWrite === true && !ctx.readBackAsked) {
|
|
48288
|
+
ctx.readBackAsked = true;
|
|
48289
|
+
ctx.history.push(`report deferred: ${verdict.reason}`);
|
|
48290
|
+
record2(false, `report deferred: ${verdict.reason}`, { answer: verdict.answer, origin: "engine" });
|
|
48291
|
+
return "continue";
|
|
48292
|
+
}
|
|
48173
48293
|
ctx.reportRejections += 1;
|
|
48174
48294
|
for (const e of verdict.answer?.evidence ?? [])
|
|
48175
48295
|
if (e.grounded)
|
|
@@ -48189,6 +48309,15 @@ async function handleReport(ctx, step) {
|
|
|
48189
48309
|
}
|
|
48190
48310
|
|
|
48191
48311
|
// ../explore/dist/goal-loop/handle-done.js
|
|
48312
|
+
async function unreadWriteHold(ctx, step, outcome) {
|
|
48313
|
+
if (outcome.status === "completed" && outcome.verifiedBy === "success-condition")
|
|
48314
|
+
return null;
|
|
48315
|
+
await readBackProbe(ctx, step);
|
|
48316
|
+
const unread = unreadShown(ctx, step);
|
|
48317
|
+
if (unread.length === 0)
|
|
48318
|
+
return null;
|
|
48319
|
+
return `what the run sent (${unread.map((v) => `"${v}"`).join(", ")}) has not shown on a page loaded since the write \u2014 the app may not have kept it (open the page where the app lists it)`;
|
|
48320
|
+
}
|
|
48192
48321
|
async function handleDone(ctx, step) {
|
|
48193
48322
|
const { cfg } = ctx;
|
|
48194
48323
|
const { snap, decision, record: record2, signIn, pendingNote, acceptedBy, groundGoal } = step;
|
|
@@ -48200,7 +48329,7 @@ async function handleDone(ctx, step) {
|
|
|
48200
48329
|
!(cfg.successCheck === void 0 && ctx.minEffort !== null && ctx.depth.report(ctx.tracker.actions, ctx.tracker.decisions, ctx.minEffort).minimum?.met === false)) {
|
|
48201
48330
|
ctx.goalChecked.add(snap.signature);
|
|
48202
48331
|
const { verdict, judgments } = await groundGoal();
|
|
48203
|
-
if (verdict.accept) {
|
|
48332
|
+
if (verdict.accept && await unreadWriteHold(ctx, step, verdict.outcome) === null) {
|
|
48204
48333
|
record2(true, `goal already met \u2014 stopped instead of "${decision.op}": ${acceptedBy(verdict.outcome)}`, {
|
|
48205
48334
|
op: "done",
|
|
48206
48335
|
control: null,
|
|
@@ -48236,7 +48365,19 @@ async function handleDone(ctx, step) {
|
|
|
48236
48365
|
}
|
|
48237
48366
|
}
|
|
48238
48367
|
if (decision.op === "done") {
|
|
48239
|
-
const
|
|
48368
|
+
const grounded = await groundGoal(false, true);
|
|
48369
|
+
const { judgments } = grounded;
|
|
48370
|
+
let verdict = grounded.verdict;
|
|
48371
|
+
const hold = verdict.accept ? await unreadWriteHold(ctx, step, verdict.outcome) : null;
|
|
48372
|
+
if (hold !== null) {
|
|
48373
|
+
if (!ctx.readBackAsked) {
|
|
48374
|
+
ctx.readBackAsked = true;
|
|
48375
|
+
ctx.history.push(`done deferred: ${hold}`);
|
|
48376
|
+
record2(false, `done deferred: ${hold}`, { origin: "engine" });
|
|
48377
|
+
return "continue";
|
|
48378
|
+
}
|
|
48379
|
+
verdict = { accept: false, reason: hold };
|
|
48380
|
+
}
|
|
48240
48381
|
if (verdict.accept) {
|
|
48241
48382
|
record2(true, `done accepted${pendingNote(verdict.outcome) === null ? "" : " provisionally"}: ${acceptedBy(verdict.outcome)}`, {
|
|
48242
48383
|
...judgments === void 0 ? {} : { judgments }
|
|
@@ -48943,10 +49084,20 @@ async function handleSelectOption(ctx, step, op) {
|
|
|
48943
49084
|
return "continue";
|
|
48944
49085
|
}
|
|
48945
49086
|
const named = text2 === null ? null : matchOption(text2, options);
|
|
49087
|
+
const field3 = control.name || control.summary;
|
|
49088
|
+
const noop2 = `${quote(named ?? "", 60)} is already selected in ${field3} \u2014 nothing to change`;
|
|
49089
|
+
const setByRun = () => ctx.transcript.entries().some((e) => e.op === "select" && e.actOk && e.value === named && (e.target ?? "").includes(`"${control.name}"`));
|
|
49090
|
+
if (named !== null && named === current2 && !isPlaceholderOption(named) && !ctx.history.includes(noop2) && !setByRun()) {
|
|
49091
|
+
ctx.fillHelper.commit();
|
|
49092
|
+
ctx.history.push(noop2);
|
|
49093
|
+
record2(true, noop2, { value: named });
|
|
49094
|
+
ctx.lastActedOp = op;
|
|
49095
|
+
return "continue";
|
|
49096
|
+
}
|
|
48946
49097
|
if (named !== null && !choices.includes(named)) {
|
|
48947
49098
|
ctx.fillHelper.commit();
|
|
48948
49099
|
const why = named === current2 ? `${quote(named, 60)} is already selected` : `${quote(named, 60)} is a placeholder, not a choice`;
|
|
48949
|
-
const reason = `select refused: ${why} in ${
|
|
49100
|
+
const reason = `select refused: ${why} in ${field3} \u2014 options not tried: ${untried()}`;
|
|
48950
49101
|
ctx.history.push(reason);
|
|
48951
49102
|
record2(false, reason, { origin: "engine", value: named });
|
|
48952
49103
|
ctx.lastActedOp = op;
|
|
@@ -49245,7 +49396,7 @@ async function perceiveStep(ctx) {
|
|
|
49245
49396
|
if (lc !== null && lc !== ctx.settledClick) {
|
|
49246
49397
|
ctx.settledClick = lc;
|
|
49247
49398
|
if (lc.writes.length > 0 && lc.writes.every((w) => w.status !== null && w.status >= 200 && w.status < 300)) {
|
|
49248
|
-
ctx.observed.confirmOwnInputs();
|
|
49399
|
+
ctx.observed.confirmOwnInputs(await documentOf(ctx.page));
|
|
49249
49400
|
ctx.wroteOk = true;
|
|
49250
49401
|
}
|
|
49251
49402
|
}
|
|
@@ -49696,6 +49847,7 @@ var APPEARED_CHARS = 400;
|
|
|
49696
49847
|
function clipLine(s3) {
|
|
49697
49848
|
return s3.length <= APPEARED_CHARS ? s3 : `${s3.slice(0, APPEARED_CHARS - 1)}\u2026`;
|
|
49698
49849
|
}
|
|
49850
|
+
var PROGRESS_LINE = /\b\d+\s*(?:of|\/)\s*\d+\b|\b(?:step|question|page|part|stage|section|confirmation)\s+\d+\b/i;
|
|
49699
49851
|
function appearedLines(before, after) {
|
|
49700
49852
|
const lines = (t) => t.split("\n").map((l2) => l2.replace(/\s+/g, " ").trim()).filter((l2) => l2 !== "");
|
|
49701
49853
|
const shape3 = (l2) => l2.replace(/\d+/g, "#");
|
|
@@ -49710,7 +49862,10 @@ function appearedLines(before, after) {
|
|
|
49710
49862
|
else
|
|
49711
49863
|
out.push(l2);
|
|
49712
49864
|
}
|
|
49713
|
-
|
|
49865
|
+
if (out.length > 0)
|
|
49866
|
+
return out;
|
|
49867
|
+
const was = new Set(lines(before));
|
|
49868
|
+
return lines(after).filter((l2) => PROGRESS_LINE.test(l2) && !was.has(l2));
|
|
49714
49869
|
}
|
|
49715
49870
|
|
|
49716
49871
|
// ../explore/dist/goal-loop/page-view.js
|
|
@@ -49791,8 +49946,11 @@ async function viewPage(ctx, step) {
|
|
|
49791
49946
|
ctx.chrome.observe(new URL(snap.url).pathname, snap.controls);
|
|
49792
49947
|
} catch {
|
|
49793
49948
|
}
|
|
49949
|
+
const document2 = await documentOf(ctx.page);
|
|
49794
49950
|
ctx.observed.add(snap.url, visibleText, [...controlFields(snap.controls), ...richFields], {
|
|
49795
49951
|
...await readPageHeadings(ctx.page, ctx.secrets),
|
|
49952
|
+
// #647: which document load this is — a later one that shows a sent value reads it back.
|
|
49953
|
+
...document2 === void 0 ? {} : { document: document2 },
|
|
49796
49954
|
// #223: the action / label names (a quote made only of them is a label, not an answer) and
|
|
49797
49955
|
// the document's status (an answer on a 404 page is no answer). A link that is page content
|
|
49798
49956
|
// (in the main content, a list, a table, a card) is NOT one: its text may be the answer.
|
|
@@ -62744,9 +62902,9 @@ function hostStarvedFailure(failure3, health) {
|
|
|
62744
62902
|
}
|
|
62745
62903
|
|
|
62746
62904
|
// src/build-info.generated.ts
|
|
62747
|
-
var GENERATED_COMMIT = "
|
|
62748
|
-
var GENERATED_TREE = "
|
|
62749
|
-
var GENERATED_BUILT_AT = "2026-10-
|
|
62905
|
+
var GENERATED_COMMIT = "58694b9";
|
|
62906
|
+
var GENERATED_TREE = "3e51f17";
|
|
62907
|
+
var GENERATED_BUILT_AT = "2026-10-23T15:47:25.272Z";
|
|
62750
62908
|
|
|
62751
62909
|
// src/version.ts
|
|
62752
62910
|
import { readFileSync as readFileSync5 } from "node:fs";
|
|
@@ -62768,13 +62926,13 @@ function readCliVersion() {
|
|
|
62768
62926
|
|
|
62769
62927
|
// src/engine.ts
|
|
62770
62928
|
function bundledCommit() {
|
|
62771
|
-
return true ? "
|
|
62929
|
+
return true ? "58694b9" : void 0;
|
|
62772
62930
|
}
|
|
62773
62931
|
function bundledBuiltAt() {
|
|
62774
|
-
return true ? "2026-10-
|
|
62932
|
+
return true ? "2026-10-23T15:47:25.272Z" : void 0;
|
|
62775
62933
|
}
|
|
62776
62934
|
function bundledTree() {
|
|
62777
|
-
return true ? "
|
|
62935
|
+
return true ? "3e51f17" : void 0;
|
|
62778
62936
|
}
|
|
62779
62937
|
function currentBuildTree() {
|
|
62780
62938
|
return bundledTree() ?? GENERATED_TREE;
|
|
@@ -96830,6 +96988,43 @@ function reportSlowness(replays) {
|
|
|
96830
96988
|
import { mkdir as mkdir22, writeFile as writeFile25 } from "node:fs/promises";
|
|
96831
96989
|
import { join as join52, resolve as resolve16 } from "node:path";
|
|
96832
96990
|
|
|
96991
|
+
// src/outcome-targets.ts
|
|
96992
|
+
function evaluateOutcomeTargets(outcomes, baseline) {
|
|
96993
|
+
return outcomes.map((o) => evaluateOne(o, baseline));
|
|
96994
|
+
}
|
|
96995
|
+
function evaluateOne(o, baseline) {
|
|
96996
|
+
const metric = o.metric;
|
|
96997
|
+
const target = o.target;
|
|
96998
|
+
if (metric === void 0 || target === void 0) {
|
|
96999
|
+
return { outcomeId: o.id, status: "not-decidable-by-replay", reason: "no metric or no target" };
|
|
97000
|
+
}
|
|
97001
|
+
const written2 = `${target.op} ${target.value} ${target.unit}`;
|
|
97002
|
+
if (metric.kind !== "duration") {
|
|
97003
|
+
return { outcomeId: o.id, status: "not-decidable-by-replay", target: written2, reason: `a ${metric.kind} metric needs real users, not a replay` };
|
|
97004
|
+
}
|
|
97005
|
+
const at3 = (name) => baseline.anchors.find((a) => a.name === name)?.atMs;
|
|
97006
|
+
const from = at3(metric.from);
|
|
97007
|
+
const to = at3(metric.to);
|
|
97008
|
+
const missing = from === void 0 ? metric.from : to === void 0 ? metric.to : null;
|
|
97009
|
+
if (missing !== null || from === void 0 || to === void 0) {
|
|
97010
|
+
return { outcomeId: o.id, status: "unmeasured", target: written2, reason: `anchor '${missing}' is not in the replay's baseline` };
|
|
97011
|
+
}
|
|
97012
|
+
const floorSeconds = Math.max(0, to - from) / 1e3;
|
|
97013
|
+
const floor = `the replay took ${floorSeconds}s from '${metric.from}' to '${metric.to}'`;
|
|
97014
|
+
if (metric.stat === "share_under") {
|
|
97015
|
+
const wantsShare = (target.op === ">" || target.op === ">=") && target.unit === "percent" && target.value > 0;
|
|
97016
|
+
if (!wantsShare || metric.threshold === void 0) {
|
|
97017
|
+
return { outcomeId: o.id, status: "not-decidable-by-replay", floorSeconds, target: written2, reason: "only a lower bound on the share under a threshold is decidable" };
|
|
97018
|
+
}
|
|
97019
|
+
return metric.threshold < floorSeconds ? { outcomeId: o.id, status: "miss", floorSeconds, target: written2, reason: `${floor}, over the ${metric.threshold}s threshold: no one finishes under it` } : { outcomeId: o.id, status: "not-decidable", floorSeconds, target: written2, reason: `${floor}, within the ${metric.threshold}s threshold` };
|
|
97020
|
+
}
|
|
97021
|
+
if (target.unit !== "s" || target.op !== "<" && target.op !== "<=") {
|
|
97022
|
+
return { outcomeId: o.id, status: "not-decidable-by-replay", floorSeconds, target: written2, reason: "only an upper bound in seconds is decidable" };
|
|
97023
|
+
}
|
|
97024
|
+
const breaks = target.op === "<" ? floorSeconds >= target.value : floorSeconds > target.value;
|
|
97025
|
+
return breaks ? { outcomeId: o.id, status: "miss", floorSeconds, target: written2, reason: `${floor}: the fastest path already breaks ${written2}` } : { outcomeId: o.id, status: "not-decidable", floorSeconds, target: written2, reason: `${floor}, within ${written2}` };
|
|
97026
|
+
}
|
|
97027
|
+
|
|
96833
97028
|
// src/ux-usability/setup.ts
|
|
96834
97029
|
import { join as join46, resolve as resolvePath11 } from "node:path";
|
|
96835
97030
|
|
|
@@ -97709,6 +97904,7 @@ var SIGNAL_RULES = {
|
|
|
97709
97904
|
"duplicate-create": { id: "signal-duplicate-create", principle: "Error prevention", citation: NNG, severity: "major" },
|
|
97710
97905
|
"failed-submit": { id: "signal-failed-submit", principle: "Help users recognize, diagnose, and recover from errors", citation: NNG, severity: "major" },
|
|
97711
97906
|
"url-mismatch": { id: "signal-url-mismatch", principle: "Consistency and standards", citation: NNG, severity: "minor" },
|
|
97907
|
+
"repeated-advance": { id: "signal-repeated-advance", principle: "Flexibility and efficiency of use", citation: NNG, severity: "minor" },
|
|
97712
97908
|
"horizontal-overflow": { id: "signal-horizontal-overflow", principle: "Flexibility and efficiency of use", citation: NNG, severity: "major" },
|
|
97713
97909
|
"vertical-clipping": { id: "signal-vertical-clipping", principle: "Visibility of system status", citation: NNG, severity: "major" }
|
|
97714
97910
|
};
|
|
@@ -97791,6 +97987,14 @@ function quoteLine(text2, needle) {
|
|
|
97791
97987
|
const t = line2.replace(/\s+/g, " ").trim();
|
|
97792
97988
|
return t.length <= 160 ? t : `${t.slice(0, 157)}...`;
|
|
97793
97989
|
}
|
|
97990
|
+
function labelOf(s3) {
|
|
97991
|
+
const quoted = /"([^"]{2,160})"/.exec(s3.target ?? "")?.[1];
|
|
97992
|
+
const raw = quoted ?? s3.descriptor?.name ?? s3.descriptor?.text ?? null;
|
|
97993
|
+
if (raw === null || raw === void 0)
|
|
97994
|
+
return null;
|
|
97995
|
+
const t = raw.replace(/[→←↗›»…]+/g, " ").replace(/\s+/g, " ").trim();
|
|
97996
|
+
return t.length >= 2 ? t : null;
|
|
97997
|
+
}
|
|
97794
97998
|
|
|
97795
97999
|
// ../ux/dist/signals/basic.js
|
|
97796
98000
|
function detectHungRequests(capture2, opts = {}) {
|
|
@@ -98080,6 +98284,71 @@ function detectInertControls(capture2) {
|
|
|
98080
98284
|
return out;
|
|
98081
98285
|
}
|
|
98082
98286
|
|
|
98287
|
+
// ../ux/dist/signals/effort.js
|
|
98288
|
+
var REPEATED_ADVANCE_MIN = 3;
|
|
98289
|
+
var ADVANCE_NAME = /^(continue|next|next step|confirm|ok|okay|proceed|yes|go on)$/i;
|
|
98290
|
+
var INPUT_OPS = /* @__PURE__ */ new Set(["type", "select", "send", "upload", "fill", "edit_text", "check", "uncheck"]);
|
|
98291
|
+
var PASSIVE_OPS = /* @__PURE__ */ new Set(["wait", "scroll_down", "scroll_up"]);
|
|
98292
|
+
function advanced(capture2, s3) {
|
|
98293
|
+
const before = capture2.screens.filter((x) => x.step === s3.step).pop();
|
|
98294
|
+
const after = capture2.screens.find((x) => x.step > s3.step);
|
|
98295
|
+
if (before === void 0 || after === void 0 || routeOf5(after.url) !== routeOf5(before.url))
|
|
98296
|
+
return void 0;
|
|
98297
|
+
return after.visibleText !== before.visibleText ? after : void 0;
|
|
98298
|
+
}
|
|
98299
|
+
function detectRepeatedAdvances(capture2) {
|
|
98300
|
+
const streaks = [];
|
|
98301
|
+
let current2 = [];
|
|
98302
|
+
let key2 = null;
|
|
98303
|
+
const close = () => {
|
|
98304
|
+
if (current2.length >= REPEATED_ADVANCE_MIN)
|
|
98305
|
+
streaks.push(current2);
|
|
98306
|
+
current2 = [];
|
|
98307
|
+
key2 = null;
|
|
98308
|
+
};
|
|
98309
|
+
for (const s3 of capture2.steps) {
|
|
98310
|
+
if (s3.op !== null && PASSIVE_OPS.has(s3.op))
|
|
98311
|
+
continue;
|
|
98312
|
+
const label2 = s3.op === "click" && s3.actOk ? labelOf(s3) : null;
|
|
98313
|
+
const after = label2 !== null && ADVANCE_NAME.test(label2) ? advanced(capture2, s3) : void 0;
|
|
98314
|
+
if (label2 === null || after === void 0 || s3.op !== null && INPUT_OPS.has(s3.op)) {
|
|
98315
|
+
close();
|
|
98316
|
+
continue;
|
|
98317
|
+
}
|
|
98318
|
+
const k = `${routeOf5(s3.url)}|${label2.toLowerCase()}`;
|
|
98319
|
+
if (key2 !== null && k !== key2)
|
|
98320
|
+
close();
|
|
98321
|
+
key2 = k;
|
|
98322
|
+
current2.push({ step: s3, after });
|
|
98323
|
+
}
|
|
98324
|
+
close();
|
|
98325
|
+
return streaks.map((hits) => {
|
|
98326
|
+
const label2 = labelOf(hits[0].step) ?? "the advance control";
|
|
98327
|
+
const n3 = hits.length;
|
|
98328
|
+
const steps = hits.map((h) => h.step.step);
|
|
98329
|
+
const last = hits[n3 - 1];
|
|
98330
|
+
return makeSignalFinding({
|
|
98331
|
+
kind: "repeated-advance",
|
|
98332
|
+
confidence: n3 >= 5 ? 0.8 : n3 === 4 ? 0.7 : 0.6,
|
|
98333
|
+
url: last.after.url,
|
|
98334
|
+
screenId: last.after.signature,
|
|
98335
|
+
observation: `The flow needed "${label2}" ${n3} times in a row (steps ${steps.join(", ")}) with nothing entered between them, each only moving to the next screen.`,
|
|
98336
|
+
userImpact: "Every extra confirmation costs the user time and attention without adding a decision; repeated identical steps also read as the page not responding.",
|
|
98337
|
+
recommendation: `Fold the repeated "${label2}" screens into one step, or let the user confirm once.`,
|
|
98338
|
+
controls: [label2],
|
|
98339
|
+
occurrences: n3,
|
|
98340
|
+
screenIds: [...new Set(hits.map((h) => h.after.signature))],
|
|
98341
|
+
evidence: {
|
|
98342
|
+
kind: "repeated-advance",
|
|
98343
|
+
steps,
|
|
98344
|
+
requests: [],
|
|
98345
|
+
...last.after.screenshot === void 0 ? {} : { screenshot: last.after.screenshot },
|
|
98346
|
+
detail: `${n3} consecutive successful "${label2}" clicks on ${routeOf5(last.after.url)} with no input between them, each changing the page text`
|
|
98347
|
+
}
|
|
98348
|
+
});
|
|
98349
|
+
});
|
|
98350
|
+
}
|
|
98351
|
+
|
|
98083
98352
|
// ../ux/dist/signals/journey.js
|
|
98084
98353
|
var ERROR_TEXT = /\b(error|errors|failed|failure|went wrong|unavailable|couldn['’]?t|could not|can['’]?t|cannot|unable|try again|invalid|problem|denied|forbidden|expired|not (?:be )?(?:saved|sent|found|recorded))\b/i;
|
|
98085
98354
|
var GENERIC_ERROR = /\b(something went wrong|an? (?:unexpected |unknown )?error (?:has )?occurred|unexpected error|oops|try again later)\b/i;
|
|
@@ -98088,14 +98357,6 @@ var FIELD_OPS = /* @__PURE__ */ new Set(["type", "select"]);
|
|
|
98088
98357
|
function normLine(s3) {
|
|
98089
98358
|
return s3.replace(/\s+/g, " ").trim().toLowerCase();
|
|
98090
98359
|
}
|
|
98091
|
-
function labelOf(s3) {
|
|
98092
|
-
const quoted = /"([^"]{2,160})"/.exec(s3.target ?? "")?.[1];
|
|
98093
|
-
const raw = quoted ?? s3.descriptor?.name ?? s3.descriptor?.text ?? null;
|
|
98094
|
-
if (raw === null || raw === void 0)
|
|
98095
|
-
return null;
|
|
98096
|
-
const t = raw.replace(/[→←↗›»…]+/g, " ").replace(/\s+/g, " ").trim();
|
|
98097
|
-
return t.length >= 2 ? t : null;
|
|
98098
|
-
}
|
|
98099
98360
|
function screenBefore(capture2, step) {
|
|
98100
98361
|
return capture2.screens.filter((s3) => s3.step <= step).pop();
|
|
98101
98362
|
}
|
|
@@ -98163,7 +98424,17 @@ function detectStuckJobs(capture2, opts = {}) {
|
|
|
98163
98424
|
}
|
|
98164
98425
|
const polls = [...polled.values()].sort((a, b2) => b2.length - a.length)[0] ?? [];
|
|
98165
98426
|
const inProgress = reclicks.length > 0 || waits.length > 0 || busy.length > 0 || polls.length >= 3;
|
|
98427
|
+
const before = screenBefore(capture2, start.step);
|
|
98428
|
+
const was = new Set(before === void 0 ? [] : linesOf(before.visibleText).map(normLine));
|
|
98429
|
+
const labelLine = normLine(label2);
|
|
98430
|
+
const own2 = new Set([start.value, start.message, ...capture2.typedValues ?? []].filter((v) => v !== void 0 && v.trim().length > 0).map(normLine));
|
|
98166
98431
|
const last = screens[screens.length - 1];
|
|
98432
|
+
const completed = before !== void 0 && !last.busy && !BUSY_TEXT2.test(last.visibleText) && screens.some((s3) => linesOf(s3.visibleText).some((line2) => {
|
|
98433
|
+
const n3 = normLine(line2);
|
|
98434
|
+
return n3.length >= 2 && n3 !== labelLine && !was.has(n3) && !own2.has(n3) && !BUSY_TEXT2.test(line2);
|
|
98435
|
+
}));
|
|
98436
|
+
if (completed)
|
|
98437
|
+
continue;
|
|
98167
98438
|
const offered = reclicks.length > 0 || normLine(last.visibleText).includes(normLine(label2));
|
|
98168
98439
|
const endedHere = !capture2.screens.some((s3) => s3.step > last.step);
|
|
98169
98440
|
const startedAt = Math.min(...writes.map((w) => w.startedAt));
|
|
@@ -98475,6 +98746,7 @@ function detectSignals(capture2, opts = {}) {
|
|
|
98475
98746
|
...withoutSubsumedDuplicateWrites(detectDuplicateWrites(capture2, opts), journey),
|
|
98476
98747
|
...detectInternalIds(capture2),
|
|
98477
98748
|
...detectInertControls(capture2),
|
|
98749
|
+
...detectRepeatedAdvances(capture2),
|
|
98478
98750
|
...journey
|
|
98479
98751
|
];
|
|
98480
98752
|
}
|
|
@@ -98506,6 +98778,7 @@ var SIGNAL_IMPACT = {
|
|
|
98506
98778
|
"internal-id": "confused",
|
|
98507
98779
|
"inert-control": "confused",
|
|
98508
98780
|
"url-mismatch": "confused",
|
|
98781
|
+
"repeated-advance": "slowed",
|
|
98509
98782
|
"horizontal-overflow": "confused",
|
|
98510
98783
|
"vertical-clipping": "confused"
|
|
98511
98784
|
};
|
|
@@ -103328,6 +103601,29 @@ var REAL_RUNNERS = {
|
|
|
103328
103601
|
usability: runUsabilityMission,
|
|
103329
103602
|
verifyFix: runVerifyFix
|
|
103330
103603
|
};
|
|
103604
|
+
async function addOutcomeTargets(items, executed, opts) {
|
|
103605
|
+
const catalogDir = opts.projectDir === void 0 ? findProjectDir() : opts.projectDir;
|
|
103606
|
+
if (catalogDir === null) return;
|
|
103607
|
+
const catalogs = /* @__PURE__ */ new Map();
|
|
103608
|
+
const catalogFor = (journeysDir) => {
|
|
103609
|
+
const dir = resolve16(journeysDir);
|
|
103610
|
+
let c = catalogs.get(dir);
|
|
103611
|
+
if (c === void 0) {
|
|
103612
|
+
c = loadCatalog(catalogDir, dir).catch(() => null);
|
|
103613
|
+
catalogs.set(dir, c);
|
|
103614
|
+
}
|
|
103615
|
+
return c;
|
|
103616
|
+
};
|
|
103617
|
+
for (const [idx, { item }] of executed.entries()) {
|
|
103618
|
+
const report2 = items[idx];
|
|
103619
|
+
if (report2 === void 0 || item.kind !== "journey" || report2.baseline === void 0) continue;
|
|
103620
|
+
const catalog = await catalogFor(item.t.target.journeysDir ?? opts.journeysDir);
|
|
103621
|
+
const jobId = catalog?.journeys.find((j) => j.id === item.name)?.job;
|
|
103622
|
+
const outcomes = catalog === null || jobId === void 0 ? void 0 : findJob(catalog, jobId)?.job.desiredOutcomes;
|
|
103623
|
+
if (outcomes === void 0 || outcomes.length === 0) continue;
|
|
103624
|
+
items[idx] = { ...report2, outcomeTargets: evaluateOutcomeTargets(outcomes, report2.baseline) };
|
|
103625
|
+
}
|
|
103626
|
+
}
|
|
103331
103627
|
async function approvalDefects(opts, req) {
|
|
103332
103628
|
const dirs = [...new Set([opts.journeysDir, ...opts.suite.targets.flatMap((t) => t.journeysDir === void 0 ? [] : [t.journeysDir])].map((d) => resolve16(d)))];
|
|
103333
103629
|
const catalogs = [];
|
|
@@ -103553,6 +103849,7 @@ async function runCheck(opts) {
|
|
|
103553
103849
|
...ex.locatorHealth === void 0 ? {} : { locatorHealth: ex.locatorHealth }
|
|
103554
103850
|
};
|
|
103555
103851
|
});
|
|
103852
|
+
await addOutcomeTargets(itemReports, executed, opts);
|
|
103556
103853
|
const details = executed.flatMap(
|
|
103557
103854
|
({ item, ex }) => item.kind === "journey" && ex?.locatorDetail !== void 0 ? [{ name: item.name, detail: ex.locatorDetail }] : []
|
|
103558
103855
|
);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// this plain `tsc --build` dist (no bundler substitution), so it needs real committed values
|
|
6
6
|
// here instead. See ./engine.ts, which prefers the esbuild-injected value when present and
|
|
7
7
|
// falls back to these.
|
|
8
|
-
export const GENERATED_COMMIT = "
|
|
9
|
-
export const GENERATED_TREE = "
|
|
10
|
-
export const GENERATED_BUILT_AT = "2026-10-
|
|
8
|
+
export const GENERATED_COMMIT = "58694b9";
|
|
9
|
+
export const GENERATED_TREE = "3e51f17";
|
|
10
|
+
export const GENERATED_BUILT_AT = "2026-10-23T15:47:14.035Z";
|
|
11
11
|
//# sourceMappingURL=build-info.generated.js.map
|
package/dist/check-api.js
CHANGED
|
@@ -6,6 +6,8 @@ import { aggregateOf, formatUsageLine } from "@jevitate/ai-core";
|
|
|
6
6
|
import { consolidate, diffRuns, findingKey, renderJUnit, renderReportMarkdown, renderSarif } from "@jevitate/findings";
|
|
7
7
|
import { approvalsReportVerified } from "./approval-provenance.js";
|
|
8
8
|
import { loadCatalog } from "./catalog-api.js";
|
|
9
|
+
import { findJob } from "./catalog.js";
|
|
10
|
+
import { evaluateOutcomeTargets } from "./outcome-targets.js";
|
|
9
11
|
import { runAdversarialCliMission, runCoverageMission, runExploration, runFeatureCliMission } from "./explore-api.js";
|
|
10
12
|
import { runJourneyProgrammatically } from "./journey-api.js";
|
|
11
13
|
import { runUsabilityMission } from "./ux-api.js";
|
|
@@ -33,6 +35,37 @@ const REAL_RUNNERS = {
|
|
|
33
35
|
usability: runUsabilityMission,
|
|
34
36
|
verifyFix: runVerifyFix,
|
|
35
37
|
};
|
|
38
|
+
/**
|
|
39
|
+
* #643: for each Journey item with a baseline (a clean replay) whose catalog job declares desired
|
|
40
|
+
* outcomes, the outcome-target results (`evaluateOutcomeTargets`). Catalogs are read once per
|
|
41
|
+
* Journeys dir; a catalog that cannot be read adds nothing (the targets are advisory).
|
|
42
|
+
*/
|
|
43
|
+
async function addOutcomeTargets(items, executed, opts) {
|
|
44
|
+
const catalogDir = opts.projectDir === undefined ? findProjectDir() : opts.projectDir;
|
|
45
|
+
if (catalogDir === null)
|
|
46
|
+
return;
|
|
47
|
+
const catalogs = new Map();
|
|
48
|
+
const catalogFor = (journeysDir) => {
|
|
49
|
+
const dir = resolve(journeysDir);
|
|
50
|
+
let c = catalogs.get(dir);
|
|
51
|
+
if (c === undefined) {
|
|
52
|
+
c = loadCatalog(catalogDir, dir).catch(() => null);
|
|
53
|
+
catalogs.set(dir, c);
|
|
54
|
+
}
|
|
55
|
+
return c;
|
|
56
|
+
};
|
|
57
|
+
for (const [idx, { item }] of executed.entries()) {
|
|
58
|
+
const report = items[idx];
|
|
59
|
+
if (report === undefined || item.kind !== "journey" || report.baseline === undefined)
|
|
60
|
+
continue;
|
|
61
|
+
const catalog = await catalogFor(item.t.target.journeysDir ?? opts.journeysDir);
|
|
62
|
+
const jobId = catalog?.journeys.find((j) => j.id === item.name)?.job;
|
|
63
|
+
const outcomes = catalog === null || jobId === undefined ? undefined : findJob(catalog, jobId)?.job.desiredOutcomes;
|
|
64
|
+
if (outcomes === undefined || outcomes.length === 0)
|
|
65
|
+
continue;
|
|
66
|
+
items[idx] = { ...report, outcomeTargets: evaluateOutcomeTargets(outcomes, report.baseline) };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
36
69
|
/** #437: the `--require-approvals` violations as hard `approval` defects (one per item and problem). */
|
|
37
70
|
async function approvalDefects(opts, req) {
|
|
38
71
|
const dirs = [...new Set([opts.journeysDir, ...opts.suite.targets.flatMap((t) => (t.journeysDir === undefined ? [] : [t.journeysDir]))].map((d) => resolve(d)))];
|
|
@@ -309,6 +342,8 @@ export async function runCheck(opts) {
|
|
|
309
342
|
...(ex.locatorHealth === undefined ? {} : { locatorHealth: ex.locatorHealth }),
|
|
310
343
|
};
|
|
311
344
|
});
|
|
345
|
+
// #643: each passed Journey item's job outcome targets against its machine baseline (advisory, never gating).
|
|
346
|
+
await addOutcomeTargets(itemReports, executed, opts);
|
|
312
347
|
// #470: locator health over the Journey items (advisory unless the gate is set), and its trend against --baseline.
|
|
313
348
|
const details = executed.flatMap(({ item, ex }) => item.kind === "journey" && ex?.locatorDetail !== undefined ? [{ name: item.name, detail: ex.locatorDetail }] : []);
|
|
314
349
|
const combined = combineHealth(details.map((d) => d.detail));
|
package/dist/check-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-api.js","sourceRoot":"","sources":["../src/check-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"check-api.js","sourceRoot":"","sources":["../src/check-api.ts"],"names":[],"mappings":"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"}
|
package/dist/check-types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ApprovalChannel } from "@jevitate/journey";
|
|
2
2
|
import type { SlownessReport } from "./cold-start-report.js";
|
|
3
|
+
import type { OutcomeTargetResult } from "./outcome-targets.js";
|
|
3
4
|
import { type GenerationPort, type JudgmentPort, type UsageAggregate, type UsageTracker } from "@jevitate/ai-core";
|
|
4
5
|
import type { BrowserPort } from "@jevitate/playwright";
|
|
5
6
|
import type { BrowserRunOptions } from "./browser-run-options.js";
|
|
@@ -177,6 +178,8 @@ export interface CheckItemReport {
|
|
|
177
178
|
readonly journeyHash?: string;
|
|
178
179
|
/** #469: the machine baseline of a Journey item — present only when its run was clean. */
|
|
179
180
|
readonly baseline?: CheckBaseline;
|
|
181
|
+
/** #643: the item's job outcome targets against `baseline` (advisory; present when the job declares desired outcomes). */
|
|
182
|
+
readonly outcomeTargets?: readonly OutcomeTargetResult[];
|
|
180
183
|
/** #470: how stable a Journey item's locators are (advisory; gates only past `maxBrittleSteps`). */
|
|
181
184
|
readonly locatorHealth?: LocatorHealth;
|
|
182
185
|
}
|
package/dist/check-types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-types.js","sourceRoot":"","sources":["../src/check-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check-types.js","sourceRoot":"","sources":["../src/check-types.ts"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,IAAI,GAAG,eAAwB,CAAC;IACzC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,uIAAuI;AACvI,MAAM,OAAO,cAAe,SAAQ,KAAK;IAC9B,IAAI,GAAG,cAAuB,CAAC;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,iGAAiG;AACjG,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,GAAG,qBAA8B,CAAC;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { DesiredOutcome } from "@jevitate/journey";
|
|
2
|
+
import type { CheckBaseline } from "./check-types.js";
|
|
3
|
+
/**
|
|
4
|
+
* #643 (owner decision, jtbd-data-model §8.2: "Jevitate reports target misses by default"): a job's
|
|
5
|
+
* desired-outcome targets against ONE clean replay's machine baseline (#469). Pure — no I/O, no clock.
|
|
6
|
+
*
|
|
7
|
+
* A clean replay is the fastest path the app allows, so its time between a duration metric's anchors
|
|
8
|
+
* is a floor no person goes below. The test is one-sided:
|
|
9
|
+
* - `miss`: the floor already breaks the target — no user can meet it (a p50/p75 upper bound in
|
|
10
|
+
* seconds the floor exceeds, or a `share_under` threshold the floor exceeds while the target wants
|
|
11
|
+
* some share under it);
|
|
12
|
+
* - `not-decidable`: the floor meets the target — whether people do is Journeeze's to measure;
|
|
13
|
+
* - `unmeasured`: an anchor the metric names is not in the baseline;
|
|
14
|
+
* - `not-decidable-by-replay`: no duration metric, no target, or a lower-bound target.
|
|
15
|
+
* Advisory: it never gates a run.
|
|
16
|
+
*/
|
|
17
|
+
export type OutcomeTargetStatus = "miss" | "not-decidable" | "unmeasured" | "not-decidable-by-replay";
|
|
18
|
+
export interface OutcomeTargetResult {
|
|
19
|
+
readonly outcomeId: string;
|
|
20
|
+
readonly status: OutcomeTargetStatus;
|
|
21
|
+
/** Seconds between the metric's anchors on the replay, when both resolved. */
|
|
22
|
+
readonly floorSeconds?: number;
|
|
23
|
+
/** The target as written: `op value unit`. */
|
|
24
|
+
readonly target?: string;
|
|
25
|
+
readonly reason: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function evaluateOutcomeTargets(outcomes: readonly DesiredOutcome[], baseline: CheckBaseline): OutcomeTargetResult[];
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export function evaluateOutcomeTargets(outcomes, baseline) {
|
|
2
|
+
return outcomes.map((o) => evaluateOne(o, baseline));
|
|
3
|
+
}
|
|
4
|
+
function evaluateOne(o, baseline) {
|
|
5
|
+
const metric = o.metric;
|
|
6
|
+
const target = o.target;
|
|
7
|
+
if (metric === undefined || target === undefined) {
|
|
8
|
+
return { outcomeId: o.id, status: "not-decidable-by-replay", reason: "no metric or no target" };
|
|
9
|
+
}
|
|
10
|
+
const written = `${target.op} ${target.value} ${target.unit}`;
|
|
11
|
+
if (metric.kind !== "duration") {
|
|
12
|
+
return { outcomeId: o.id, status: "not-decidable-by-replay", target: written, reason: `a ${metric.kind} metric needs real users, not a replay` };
|
|
13
|
+
}
|
|
14
|
+
const at = (name) => baseline.anchors.find((a) => a.name === name)?.atMs;
|
|
15
|
+
const from = at(metric.from);
|
|
16
|
+
const to = at(metric.to);
|
|
17
|
+
const missing = from === undefined ? metric.from : to === undefined ? metric.to : null;
|
|
18
|
+
if (missing !== null || from === undefined || to === undefined) {
|
|
19
|
+
return { outcomeId: o.id, status: "unmeasured", target: written, reason: `anchor '${missing}' is not in the replay's baseline` };
|
|
20
|
+
}
|
|
21
|
+
const floorSeconds = Math.max(0, to - from) / 1000;
|
|
22
|
+
const floor = `the replay took ${floorSeconds}s from '${metric.from}' to '${metric.to}'`;
|
|
23
|
+
if (metric.stat === "share_under") {
|
|
24
|
+
// A share of people finishing under `threshold` seconds: none can when the floor is over it.
|
|
25
|
+
const wantsShare = (target.op === ">" || target.op === ">=") && target.unit === "percent" && target.value > 0;
|
|
26
|
+
if (!wantsShare || metric.threshold === undefined) {
|
|
27
|
+
return { outcomeId: o.id, status: "not-decidable-by-replay", floorSeconds, target: written, reason: "only a lower bound on the share under a threshold is decidable" };
|
|
28
|
+
}
|
|
29
|
+
return metric.threshold < floorSeconds
|
|
30
|
+
? { outcomeId: o.id, status: "miss", floorSeconds, target: written, reason: `${floor}, over the ${metric.threshold}s threshold: no one finishes under it` }
|
|
31
|
+
: { outcomeId: o.id, status: "not-decidable", floorSeconds, target: written, reason: `${floor}, within the ${metric.threshold}s threshold` };
|
|
32
|
+
}
|
|
33
|
+
if (target.unit !== "s" || (target.op !== "<" && target.op !== "<=")) {
|
|
34
|
+
return { outcomeId: o.id, status: "not-decidable-by-replay", floorSeconds, target: written, reason: "only an upper bound in seconds is decidable" };
|
|
35
|
+
}
|
|
36
|
+
const breaks = target.op === "<" ? floorSeconds >= target.value : floorSeconds > target.value;
|
|
37
|
+
return breaks
|
|
38
|
+
? { outcomeId: o.id, status: "miss", floorSeconds, target: written, reason: `${floor}: the fastest path already breaks ${written}` }
|
|
39
|
+
: { outcomeId: o.id, status: "not-decidable", floorSeconds, target: written, reason: `${floor}, within ${written}` };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=outcome-targets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outcome-targets.js","sourceRoot":"","sources":["../src/outcome-targets.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jevitate/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Autonomous browser testing that turns discovered bugs into deterministic regression tests: explore a web app in a real browser, confirm findings with evidence, and replay them as regressions in CI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -62,26 +62,26 @@
|
|
|
62
62
|
"ajv": "^8.20.0",
|
|
63
63
|
"esbuild": "^0.28.2",
|
|
64
64
|
"@jevitate/ai-core": "0.1.0",
|
|
65
|
-
"@jevitate/domain": "0.1.0",
|
|
66
65
|
"@jevitate/daemon": "0.1.0",
|
|
66
|
+
"@jevitate/domain": "0.1.0",
|
|
67
67
|
"@jevitate/example-site": "0.1.0",
|
|
68
|
-
"@jevitate/findings": "0.1.0",
|
|
69
68
|
"@jevitate/explore": "0.1.0",
|
|
69
|
+
"@jevitate/findings": "0.1.0",
|
|
70
70
|
"@jevitate/inbox": "0.1.0",
|
|
71
71
|
"@jevitate/interpreter": "0.1.0",
|
|
72
|
-
"@jevitate/load": "0.1.0",
|
|
73
72
|
"@jevitate/journey": "0.1.0",
|
|
73
|
+
"@jevitate/load": "0.1.0",
|
|
74
74
|
"@jevitate/mcp-facade": "0.1.0",
|
|
75
|
-
"@jevitate/playwright": "0.1.0",
|
|
76
75
|
"@jevitate/missions": "0.1.0",
|
|
77
|
-
"@jevitate/
|
|
78
|
-
"@jevitate/regression": "0.1.0",
|
|
76
|
+
"@jevitate/playwright": "0.1.0",
|
|
79
77
|
"@jevitate/recording": "0.1.0",
|
|
80
|
-
"@jevitate/
|
|
78
|
+
"@jevitate/recorder": "0.1.0",
|
|
81
79
|
"@jevitate/runtime": "0.1.0",
|
|
82
80
|
"@jevitate/skills": "0.1.0",
|
|
83
|
-
"@jevitate/
|
|
81
|
+
"@jevitate/regression": "0.1.0",
|
|
82
|
+
"@jevitate/screenplay": "0.1.0",
|
|
84
83
|
"@jevitate/storage-sqlite": "0.1.0",
|
|
84
|
+
"@jevitate/sources": "0.1.0",
|
|
85
85
|
"@jevitate/ux": "0.1.0"
|
|
86
86
|
},
|
|
87
87
|
"scripts": {
|