@jevitate/cli 0.7.0 → 0.8.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/ai-cli.d.ts +3 -1
- package/dist/ai-cli.js +60 -16
- package/dist/ai-cli.js.map +1 -1
- package/dist/approval-provenance.d.ts +120 -0
- package/dist/approval-provenance.js +300 -0
- package/dist/approval-provenance.js.map +1 -0
- package/dist/author-journey-cli.js +4 -2
- package/dist/author-journey-cli.js.map +1 -1
- package/dist/bin.js +29019 -22450
- package/dist/build-info.generated.js +2 -2
- package/dist/builtin-analyzers.d.ts +7 -0
- package/dist/builtin-analyzers.js +19 -0
- package/dist/builtin-analyzers.js.map +1 -0
- package/dist/campaign-cli.d.ts +6 -0
- package/dist/campaign-cli.js +9 -4
- package/dist/campaign-cli.js.map +1 -1
- package/dist/catalog-analysis.d.ts +70 -0
- package/dist/catalog-analysis.js +507 -0
- package/dist/catalog-analysis.js.map +1 -0
- package/dist/catalog-api.d.ts +73 -0
- package/dist/catalog-api.js +97 -0
- package/dist/catalog-api.js.map +1 -0
- package/dist/catalog-cli.d.ts +12 -0
- package/dist/catalog-cli.js +224 -0
- package/dist/catalog-cli.js.map +1 -0
- package/dist/catalog-review.d.ts +29 -0
- package/dist/catalog-review.js +290 -0
- package/dist/catalog-review.js.map +1 -0
- package/dist/catalog.d.ts +133 -0
- package/dist/catalog.js +352 -0
- package/dist/catalog.js.map +1 -0
- package/dist/check-api.js +24 -2
- package/dist/check-api.js.map +1 -1
- package/dist/check-cli.d.ts +3 -0
- package/dist/check-cli.js +18 -4
- package/dist/check-cli.js.map +1 -1
- package/dist/check-execute.js +25 -9
- package/dist/check-execute.js.map +1 -1
- package/dist/check-plan.js +4 -1
- package/dist/check-plan.js.map +1 -1
- package/dist/check-suite.js +6 -3
- package/dist/check-suite.js.map +1 -1
- package/dist/check-types.d.ts +12 -1
- package/dist/check-types.js.map +1 -1
- package/dist/cli-output.js +82 -4
- package/dist/cli-output.js.map +1 -1
- package/dist/cli-shared.d.ts +22 -2
- package/dist/cli-shared.js +34 -5
- package/dist/cli-shared.js.map +1 -1
- package/dist/demo-aspect-api.d.ts +15 -0
- package/dist/demo-aspect-api.js +26 -1
- package/dist/demo-aspect-api.js.map +1 -1
- package/dist/demo-aspect-cli.js +64 -5
- package/dist/demo-aspect-cli.js.map +1 -1
- package/dist/exit-codes.js +4 -0
- package/dist/exit-codes.js.map +1 -1
- package/dist/explore-adversarial.d.ts +3 -1
- package/dist/explore-adversarial.js +2 -2
- package/dist/explore-adversarial.js.map +1 -1
- package/dist/explore-author.js +5 -2
- package/dist/explore-author.js.map +1 -1
- package/dist/explore-cli.js +144 -9
- package/dist/explore-cli.js.map +1 -1
- package/dist/explore-coverage.d.ts +6 -2
- package/dist/explore-coverage.js +4 -3
- package/dist/explore-coverage.js.map +1 -1
- package/dist/explore-feature.d.ts +3 -1
- package/dist/explore-feature.js +2 -2
- package/dist/explore-feature.js.map +1 -1
- package/dist/explore-goal.d.ts +37 -6
- package/dist/explore-goal.js +61 -48
- package/dist/explore-goal.js.map +1 -1
- package/dist/explore-shared.d.ts +12 -7
- package/dist/explore-shared.js +9 -1
- package/dist/explore-shared.js.map +1 -1
- package/dist/goal-run-flags.d.ts +2 -0
- package/dist/goal-run-flags.js +8 -1
- package/dist/goal-run-flags.js.map +1 -1
- package/dist/http-5xx-outcome.d.ts +8 -3
- package/dist/http-5xx-outcome.js +5 -15
- package/dist/http-5xx-outcome.js.map +1 -1
- package/dist/init-cli.d.ts +7 -0
- package/dist/init-cli.js +79 -9
- package/dist/init-cli.js.map +1 -1
- package/dist/init-codeowners.d.ts +39 -0
- package/dist/init-codeowners.js +91 -0
- package/dist/init-codeowners.js.map +1 -0
- package/dist/init-keys.d.ts +3 -1
- package/dist/init-keys.js +20 -8
- package/dist/init-keys.js.map +1 -1
- package/dist/init-skills.d.ts +85 -7
- package/dist/init-skills.js +303 -36
- package/dist/init-skills.js.map +1 -1
- package/dist/jev-advisor.d.ts +72 -0
- package/dist/jev-advisor.js +172 -0
- package/dist/jev-advisor.js.map +1 -0
- package/dist/journey-api.d.ts +34 -2
- package/dist/journey-api.js +51 -20
- package/dist/journey-api.js.map +1 -1
- package/dist/journey-cli.js +156 -12
- package/dist/journey-cli.js.map +1 -1
- package/dist/journey-review-api.d.ts +19 -0
- package/dist/journey-review-api.js +46 -0
- package/dist/journey-review-api.js.map +1 -0
- package/dist/journey-review-store.d.ts +16 -0
- package/dist/journey-review-store.js +95 -0
- package/dist/journey-review-store.js.map +1 -0
- package/dist/journey-review.d.ts +47 -0
- package/dist/journey-review.js +499 -0
- package/dist/journey-review.js.map +1 -0
- package/dist/journey-verify.js +14 -1
- package/dist/journey-verify.js.map +1 -1
- package/dist/key-report.d.ts +20 -5
- package/dist/key-report.js +32 -9
- package/dist/key-report.js.map +1 -1
- package/dist/kill-signal.js +10 -2
- package/dist/kill-signal.js.map +1 -1
- package/dist/load-cli.js +4 -2
- package/dist/load-cli.js.map +1 -1
- package/dist/log-classes.d.ts +73 -0
- package/dist/log-classes.js +167 -0
- package/dist/log-classes.js.map +1 -0
- package/dist/log-correlation.d.ts +29 -10
- package/dist/log-correlation.js +44 -21
- package/dist/log-correlation.js.map +1 -1
- package/dist/login-cli.d.ts +15 -0
- package/dist/login-cli.js +116 -0
- package/dist/login-cli.js.map +1 -0
- package/dist/logs-cli.js +3 -1
- package/dist/logs-cli.js.map +1 -1
- package/dist/mcp-api.d.ts +1 -0
- package/dist/mcp-api.js +61 -12
- package/dist/mcp-api.js.map +1 -1
- package/dist/mcp-cli-runner.d.ts +2 -0
- package/dist/mcp-cli-runner.js +3 -1
- package/dist/mcp-cli-runner.js.map +1 -1
- package/dist/mcp-cli-tools.d.ts +5 -0
- package/dist/mcp-cli-tools.js +158 -23
- package/dist/mcp-cli-tools.js.map +1 -1
- package/dist/mission-cli.js +8 -4
- package/dist/mission-cli.js.map +1 -1
- package/dist/mission-journal.d.ts +4 -1
- package/dist/mission-journal.js +9 -3
- package/dist/mission-journal.js.map +1 -1
- package/dist/mission-queue-cli.js +21 -2
- package/dist/mission-queue-cli.js.map +1 -1
- package/dist/mission-queue-runner.d.ts +6 -0
- package/dist/mission-queue-runner.js +33 -3
- package/dist/mission-queue-runner.js.map +1 -1
- package/dist/multi-run-cli.d.ts +7 -1
- package/dist/multi-run-cli.js +10 -3
- package/dist/multi-run-cli.js.map +1 -1
- package/dist/multi-run.d.ts +38 -3
- package/dist/multi-run.js +115 -23
- package/dist/multi-run.js.map +1 -1
- package/dist/persona-login.d.ts +199 -0
- package/dist/persona-login.js +574 -0
- package/dist/persona-login.js.map +1 -0
- package/dist/pre-approval.d.ts +98 -0
- package/dist/pre-approval.js +175 -0
- package/dist/pre-approval.js.map +1 -0
- package/dist/program.js +10 -0
- package/dist/program.js.map +1 -1
- package/dist/project-dir.d.ts +2 -1
- package/dist/project-dir.js +3 -1
- package/dist/project-dir.js.map +1 -1
- package/dist/readiness.d.ts +29 -0
- package/dist/readiness.js +291 -0
- package/dist/readiness.js.map +1 -0
- package/dist/regression-cli.js +4 -2
- package/dist/regression-cli.js.map +1 -1
- package/dist/report-api.d.ts +24 -2
- package/dist/report-api.js +33 -5
- package/dist/report-api.js.map +1 -1
- package/dist/report-cli.js +8 -1
- package/dist/report-cli.js.map +1 -1
- package/dist/result-schema.d.ts +12 -0
- package/dist/result-schema.js +8 -0
- package/dist/result-schema.js.map +1 -1
- package/dist/run-index.d.ts +4 -2
- package/dist/run-index.js +3 -1
- package/dist/run-index.js.map +1 -1
- package/dist/run-key-preflight.d.ts +2 -1
- package/dist/run-key-preflight.js +3 -2
- package/dist/run-key-preflight.js.map +1 -1
- package/dist/run-metadata.d.ts +26 -0
- package/dist/run-metadata.js +41 -0
- package/dist/run-metadata.js.map +1 -0
- package/dist/run-tags-cli.d.ts +12 -0
- package/dist/run-tags-cli.js +35 -0
- package/dist/run-tags-cli.js.map +1 -0
- package/dist/site-cli.d.ts +1 -1
- package/dist/site-cli.js +24 -1
- package/dist/site-cli.js.map +1 -1
- package/dist/source-cli.js +4 -2
- package/dist/source-cli.js.map +1 -1
- package/dist/suite-explore-options.d.ts +14 -0
- package/dist/suite-explore-options.js +7 -0
- package/dist/suite-explore-options.js.map +1 -1
- package/dist/sweep-api.d.ts +266 -0
- package/dist/sweep-api.js +828 -0
- package/dist/sweep-api.js.map +1 -0
- package/dist/sweep-cli.d.ts +9 -0
- package/dist/sweep-cli.js +115 -0
- package/dist/sweep-cli.js.map +1 -0
- package/dist/target-config.d.ts +5 -2
- package/dist/target-config.js +15 -0
- package/dist/target-config.js.map +1 -1
- package/dist/ux-cli.js +3 -1
- package/dist/ux-cli.js.map +1 -1
- package/dist/ux-usability.d.ts +9 -3
- package/dist/ux-usability.js +5 -3
- package/dist/ux-usability.js.map +1 -1
- package/dist/verify-fix-cli.js +4 -2
- package/dist/verify-fix-cli.js.map +1 -1
- package/package.json +12 -12
- package/skills/jevitate-demo/SKILL.md +5 -2
- package/skills/jevitate-getting-started/SKILL.md +12 -0
- package/skills/jevitate-run-journey/SKILL.md +17 -4
- package/skills/jevitate-test-campaign/SKILL.md +26 -5
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import { GTWR_RULES, checkJobStory, checkPersona } from "@jevitate/journey";
|
|
2
|
+
import { catalogJourney, findJob, findPersona, journeyLinks } from "./catalog.js";
|
|
3
|
+
import { buildJourneyReview } from "./journey-review.js";
|
|
4
|
+
import { readVerifyRecord } from "./journey-review-store.js";
|
|
5
|
+
import { JEV_SKIPPED_PASS_REAL } from "./jev-advisor.js";
|
|
6
|
+
/**
|
|
7
|
+
* #434 — the Readiness section of every review sheet (`journey|job|persona review --readiness`, and
|
|
8
|
+
* every approval: `persona approve`, `job approve`, `journey promote`, `demo approve`), as two
|
|
9
|
+
* pre-approval analyzers kept visibly apart:
|
|
10
|
+
*
|
|
11
|
+
* 1. `readiness` — deterministic checks, each pass / warn / fail with a fix-it line: the links
|
|
12
|
+
* exist and are approved, the intent is complete, the lint passes, the mutation proof is known
|
|
13
|
+
* and current; a job's story parts; and the INCOSE GtWR writing rules (gtwr-rules.ts) on job
|
|
14
|
+
* stories and personas, each citing its rule id and characteristic. Blocking stays with the
|
|
15
|
+
* gates that already exist (lint errors → `--accept-weak`, unapproved links →
|
|
16
|
+
* `--accept-unvetted`, broken links → the catalog-links acknowledgment), so readiness never
|
|
17
|
+
* double-gates: none of its findings requires an acknowledgment.
|
|
18
|
+
* 2. `readiness-jev` — advisory Jev questions (typed Noul answers, each with its probability)
|
|
19
|
+
* through the judgment gateway. A low probability becomes "not ready because … (GtWR:
|
|
20
|
+
* <characteristic>)". Jev never decides: none of these findings requires an acknowledgment, and
|
|
21
|
+
* none changes an exit code. Without an advisor (no `--real`, no key) it reports why it skipped.
|
|
22
|
+
*/
|
|
23
|
+
export const READINESS = "readiness";
|
|
24
|
+
export const READINESS_JEV = "readiness-jev";
|
|
25
|
+
/** A Jev probability below this is "not ready because …". */
|
|
26
|
+
export const READINESS_LOW_PROBABILITY = 0.5;
|
|
27
|
+
function finding(analyzer, code, severity, message, extra = {}) {
|
|
28
|
+
return {
|
|
29
|
+
analyzer,
|
|
30
|
+
code,
|
|
31
|
+
severity,
|
|
32
|
+
message,
|
|
33
|
+
...(extra.fix === undefined ? {} : { fix: extra.fix }),
|
|
34
|
+
requiresAcknowledgment: false,
|
|
35
|
+
...(extra.items === undefined || extra.items.length === 0 ? {} : { items: extra.items }),
|
|
36
|
+
...(extra.characteristic === undefined ? {} : { characteristic: extra.characteristic }),
|
|
37
|
+
...(extra.probability === undefined ? {} : { probability: extra.probability }),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const check = (code, severity, message, extra = {}) => finding(READINESS, code, severity, severity === "info" ? `pass — ${message}` : message, extra);
|
|
41
|
+
// ── Deterministic: GtWR writing rules ────────────────────────────────────────────────────────
|
|
42
|
+
const RULE_TEXT = new Map(GTWR_RULES.map((r) => [r.id, r.description]));
|
|
43
|
+
/** #434: one GtWR rule finding as a readiness finding (`gtwr:<rule>@<field>`), citing the rule and characteristic. */
|
|
44
|
+
export function gtwrFinding(q) {
|
|
45
|
+
return finding(READINESS, `${q.ruleId}@${q.field}`, q.severity, `${q.field}: ${q.message} (rule ${q.ruleId}, GtWR: ${q.characteristic})`, {
|
|
46
|
+
fix: `reword the ${q.field} — ${RULE_TEXT.get(q.ruleId) ?? q.ruleId}`,
|
|
47
|
+
characteristic: q.characteristic,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
// ── Deterministic: per subject ───────────────────────────────────────────────────────────────
|
|
51
|
+
function jobChecks(job, catalog) {
|
|
52
|
+
const out = [];
|
|
53
|
+
const missing = ["trigger", "motivation", "outcome"].filter((p) => job.job[p].trim() === "");
|
|
54
|
+
out.push(missing.length === 0
|
|
55
|
+
? check("readiness.story", "info", "the job story has its trigger, motivation and outcome")
|
|
56
|
+
: check("readiness.story", "fail", `the job story is missing its ${missing.join(", ")}`, { fix: `write it as "When [trigger], I want to [motivation], so I can [outcome]."`, characteristic: "conforming" }));
|
|
57
|
+
if (job.personas.length === 0) {
|
|
58
|
+
out.push(check("readiness.personas", "warn", "it serves no persona", { fix: `add the persona ids it serves to its "personas"` }));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const unknown = job.personas.filter((id) => findPersona(catalog, id) === undefined);
|
|
62
|
+
const unvetted = job.personas.filter((id) => {
|
|
63
|
+
const p = findPersona(catalog, id);
|
|
64
|
+
return p !== undefined && p.status !== "approved";
|
|
65
|
+
});
|
|
66
|
+
if (unknown.length > 0)
|
|
67
|
+
out.push(check("readiness.personas", "fail", `it serves persona(s) the catalog does not declare: ${unknown.join(", ")}`, { fix: "declare them in .jevitate/personas.json", items: unknown.map((id) => `persona:${id}`) }));
|
|
68
|
+
else if (unvetted.length > 0)
|
|
69
|
+
out.push(check("readiness.personas", "warn", `its persona(s) are not approved: ${unvetted.join(", ")}`, { fix: unvetted.map((id) => `jevitate persona approve ${id}`).join("; "), items: unvetted.map((id) => `persona:${id}`) }));
|
|
70
|
+
else
|
|
71
|
+
out.push(check("readiness.personas", "info", `every persona it serves is approved (${job.personas.join(", ")})`));
|
|
72
|
+
}
|
|
73
|
+
out.push(...checkJobStory(job.job).map(gtwrFinding));
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
function personaChecks(p, catalog) {
|
|
77
|
+
const out = [];
|
|
78
|
+
out.push((p.description ?? "").trim() === ""
|
|
79
|
+
? check("readiness.description", "fail", "it has no description of who this user is", { fix: `add a "description" to the persona in .jevitate/personas.json`, characteristic: "conforming" })
|
|
80
|
+
: check("readiness.description", "info", "it describes who this user is"));
|
|
81
|
+
const jobs = catalog.jobs.filter((j) => j.personas.includes(p.id));
|
|
82
|
+
out.push(jobs.length === 0
|
|
83
|
+
? check("readiness.jobs", "warn", "no job in the catalog serves it", { fix: `list it in a job's "personas" (.jevitate/jobs.json)` })
|
|
84
|
+
: check("readiness.jobs", "info", `${jobs.length} job(s) serve it (${jobs.map((j) => j.id).join(", ")})`));
|
|
85
|
+
out.push(...checkPersona({ ...(p.description === undefined ? {} : { description: p.description }), ...(p.role === undefined ? {} : { role: p.role }) }).map(gtwrFinding));
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
async function journeyChecks(j, catalog) {
|
|
89
|
+
const out = [];
|
|
90
|
+
const links = journeyLinks(catalog, j);
|
|
91
|
+
const id = j.id;
|
|
92
|
+
// 1. it links an existing job and persona
|
|
93
|
+
if (links.job === undefined || links.persona === undefined) {
|
|
94
|
+
out.push(check("readiness.links", "warn", `it links ${links.job === undefined && links.persona === undefined ? "no job and no persona" : links.job === undefined ? "no job" : "no persona"}`, {
|
|
95
|
+
fix: "set metadata.job and metadata.persona to catalog ids (.jevitate/jobs.json, .jevitate/personas.json)",
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
else if (links.job.status === "unknown" || links.persona.status === "unknown") {
|
|
99
|
+
const dangling = [...(links.job.status === "unknown" ? [`job:${links.job.id}`] : []), ...(links.persona.status === "unknown" ? [`persona:${links.persona.id}`] : [])];
|
|
100
|
+
out.push(check("readiness.links", "fail", `it links item(s) the catalog does not declare: ${dangling.join(", ")}`, { fix: "fix metadata.job / metadata.persona, or declare them", items: dangling }));
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
out.push(check("readiness.links", "info", `it links job '${links.job.id}' and persona '${links.persona.id}'`));
|
|
104
|
+
// 2. both are approved
|
|
105
|
+
out.push(links.unvetted.length === 0
|
|
106
|
+
? check("readiness.links-approved", "info", "its job and persona are approved")
|
|
107
|
+
: check("readiness.links-approved", "warn", `not approved: ${links.unvetted.join(", ")}`, {
|
|
108
|
+
fix: "jevitate job|persona review/approve <id> (promote otherwise needs --accept-unvetted)",
|
|
109
|
+
items: links.unvetted.map((u) => u.replace(/ \(.*\)$/, "")),
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
const lastVerify = catalog.journeysDir === undefined ? null : await readVerifyRecord(catalog.journeysDir, id);
|
|
113
|
+
const review = buildJourneyReview(j.journey, { lastVerify });
|
|
114
|
+
// 3. the intent is complete: goal, success criteria, each step's objective and expected result
|
|
115
|
+
const noExpected = review.steps.filter((s) => s.expectedResult === undefined).map((s) => s.number);
|
|
116
|
+
const gaps = [...review.summary.missingIntent, ...(noExpected.length === 0 ? [] : [`${noExpected.length} of ${review.steps.length} step(s) have no expected result (step ${noExpected.join(", ")})`])];
|
|
117
|
+
out.push(gaps.length === 0
|
|
118
|
+
? check("readiness.intent", "info", "its goal, success criteria and every step's objective and expected result are written")
|
|
119
|
+
: check("readiness.intent", "warn", `the intent is incomplete: ${gaps.map((g) => g.replace(/ — draft it with .*$/, "")).join("; ")}`, { fix: `draft it with \`jevitate journey annotate ${id}\``, characteristic: "complete" }));
|
|
120
|
+
// 4a. the lint passes
|
|
121
|
+
out.push(review.proof.lint.errors === 0
|
|
122
|
+
? check("readiness.lint", "info", `\`journey lint\` passes${review.proof.lint.warnings === 0 ? "" : ` (${review.proof.lint.warnings} warning(s))`}`)
|
|
123
|
+
: check("readiness.lint", "fail", `\`journey lint\` has ${review.proof.lint.errors} error(s): its assertions cannot prove its outcome`, {
|
|
124
|
+
fix: `strengthen it (jevitate journey lint ${id}); promote refuses without --accept-weak`,
|
|
125
|
+
characteristic: "verifiable",
|
|
126
|
+
}));
|
|
127
|
+
// 4b. the mutation proof is known and current
|
|
128
|
+
out.push(verifyCheck(review, id));
|
|
129
|
+
return out;
|
|
130
|
+
}
|
|
131
|
+
function verifyCheck(review, id) {
|
|
132
|
+
const v = review.proof.verify;
|
|
133
|
+
const fix = `jevitate journey verify ${id} --mutate`;
|
|
134
|
+
if (v.status === "not-verified")
|
|
135
|
+
return check("readiness.verify", "warn", "its mutation proof is unknown: `journey verify --mutate` never ran", { fix, characteristic: "verifiable" });
|
|
136
|
+
if (v.stale)
|
|
137
|
+
return check("readiness.verify", "warn", `its mutation proof (${v.verdict}, ${v.at}) is for an older version: the Journey changed since`, { fix, characteristic: "verifiable" });
|
|
138
|
+
if (v.verdict !== "proven")
|
|
139
|
+
return check("readiness.verify", "warn", `its mutation proof is ${v.verdict} (${v.at})${v.reason === undefined ? "" : `: ${v.reason}`}`, { fix, characteristic: "verifiable" });
|
|
140
|
+
return check("readiness.verify", "info", `its mutation proof is current and proven (${v.at})`);
|
|
141
|
+
}
|
|
142
|
+
function subjectJourney(subject, catalog, ctx) {
|
|
143
|
+
return ctx.journey === undefined ? catalog.journeys.find((x) => x.id === subject.id) : catalogJourney(ctx.journey);
|
|
144
|
+
}
|
|
145
|
+
/** #434: the deterministic readiness checks and GtWR rule findings. */
|
|
146
|
+
export const readinessAnalyzer = {
|
|
147
|
+
id: READINESS,
|
|
148
|
+
appliesTo: ["persona", "job", "journey"],
|
|
149
|
+
async analyze(subject, catalog, ctx) {
|
|
150
|
+
if (ctx.readiness !== true)
|
|
151
|
+
return [];
|
|
152
|
+
if (subject.kind === "job") {
|
|
153
|
+
const job = findJob(catalog, subject.id);
|
|
154
|
+
return job === undefined ? [] : jobChecks(job, catalog);
|
|
155
|
+
}
|
|
156
|
+
if (subject.kind === "persona") {
|
|
157
|
+
const p = findPersona(catalog, subject.id);
|
|
158
|
+
return p === undefined ? [] : personaChecks(p, catalog);
|
|
159
|
+
}
|
|
160
|
+
const j = subjectJourney(subject, catalog, ctx);
|
|
161
|
+
return j === undefined ? [] : journeyChecks(j, catalog);
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
const JOB_QUESTIONS = [
|
|
165
|
+
{ name: "outcome_oriented", instructions: "Is this job story about the outcome the user wants, rather than a description of a product feature?", characteristic: "necessary", notReady: "the story reads as a feature description, not an outcome", ready: "the story is outcome-oriented" },
|
|
166
|
+
{ name: "trigger_is_situation", instructions: "Is the trigger (the 'When …' part) a situation the user is in, rather than a description of who the user is?", characteristic: "conforming", notReady: "the trigger describes a persona, not a situation", ready: "the trigger is a situation" },
|
|
167
|
+
{ name: "unambiguous", instructions: "Would two careful readers agree on exactly what this job means?", characteristic: "unambiguous", notReady: "two readers could disagree on what this job means", ready: "it reads unambiguously" },
|
|
168
|
+
{ name: "verifiable", instructions: "Could an automated success check prove that the outcome ('so I can …') was reached?", characteristic: "verifiable", notReady: "no success check could prove this outcome", ready: "a success check could prove the outcome" },
|
|
169
|
+
{ name: "singular", instructions: "Is this one job, rather than several jobs combined?", characteristic: "singular", notReady: "it combines several jobs", ready: "it is one job" },
|
|
170
|
+
{ name: "necessary", instructions: "Is this a real user need, rather than an implementation detail?", characteristic: "necessary", notReady: "it reads as an implementation detail, not a user need", ready: "it is a real user need" },
|
|
171
|
+
];
|
|
172
|
+
const PERSONA_QUESTIONS = [
|
|
173
|
+
{ name: "unambiguous", instructions: "Would two careful readers picture the same kind of user from this persona description?", characteristic: "unambiguous", notReady: "two readers could picture different users", ready: "it describes one recognisable kind of user" },
|
|
174
|
+
{ name: "singular", instructions: "Does this describe one kind of user, rather than several different kinds of user combined?", characteristic: "singular", notReady: "it combines several kinds of user", ready: "it is one kind of user" },
|
|
175
|
+
{ name: "necessary", instructions: "Does this persona describe a real kind of user of the product, rather than a system, a feature or a test account?", characteristic: "necessary", notReady: "it reads as a system, a feature or a test account, not a user", ready: "it is a real kind of user" },
|
|
176
|
+
];
|
|
177
|
+
const JOURNEY_OUTCOME = { name: "accomplishes_outcome", instructions: "Do these steps accomplish the job's outcome (the 'so I can …') for this persona?", characteristic: "correct", notReady: "its steps may not accomplish the job's outcome for this persona", ready: "its steps accomplish the job's outcome" };
|
|
178
|
+
const JOURNEY_END_STATE = { name: "end_state_proves_outcome", instructions: "Do the end-state checks prove that the outcome was reached, rather than only that a page loaded?", characteristic: "verifiable", notReady: "its end-state checks may only prove that a page loaded, not the outcome", ready: "its end-state checks prove the outcome" };
|
|
179
|
+
const JOURNEY_RELATED = { name: "steps_related", instructions: "Is every step needed for the job (no step unrelated to it)?", characteristic: "necessary", notReady: "some steps look unrelated to the job", ready: "every step serves the job" };
|
|
180
|
+
const JOURNEY_PLAUSIBLE = { name: "plausible_for_persona", instructions: "Are these actions plausible for this persona's role (for example, not a buyer doing an administrator's action)?", characteristic: "appropriate", notReady: "its actions look implausible for this persona's role", ready: "its actions fit the persona's role" };
|
|
181
|
+
const JOURNEY_DELTAS = { name: "expected_matches_deltas", instructions: "Does each step's written expected result match what the step was recorded doing (its requests and checks)?", characteristic: "correct", notReady: "some steps' written expected results do not match what they were recorded doing", ready: "the written expected results match the recorded steps" };
|
|
182
|
+
function journeyQuestions(hasJob, hasPersona) {
|
|
183
|
+
return [...(hasJob ? [JOURNEY_OUTCOME] : []), JOURNEY_END_STATE, JOURNEY_RELATED, ...(hasPersona ? [JOURNEY_PLAUSIBLE] : []), JOURNEY_DELTAS];
|
|
184
|
+
}
|
|
185
|
+
function stateOf(goal, url, lines, history = []) {
|
|
186
|
+
return { goal, url, controls: [], history: [...history], visibleText: lines.join("\n") };
|
|
187
|
+
}
|
|
188
|
+
function personaText(p, id) {
|
|
189
|
+
if (p === undefined)
|
|
190
|
+
return `Persona '${id}'`;
|
|
191
|
+
return `Persona '${p.id}'${p.role === undefined ? "" : ` (account role: ${p.role})`}: ${p.description ?? "(no description)"}`;
|
|
192
|
+
}
|
|
193
|
+
function journeyState(j, catalog) {
|
|
194
|
+
const links = journeyLinks(catalog, j);
|
|
195
|
+
const job = links.job === undefined ? undefined : findJob(catalog, links.job.id);
|
|
196
|
+
const persona = links.persona === undefined ? undefined : findPersona(catalog, links.persona.id);
|
|
197
|
+
const review = buildJourneyReview(j.journey);
|
|
198
|
+
const recorded = (n) => review.sideEffects.writeRequests.filter((w) => w.step === n).map((w) => `${w.method} ${w.endpoint}`);
|
|
199
|
+
const steps = review.steps.map((s) => [
|
|
200
|
+
`${s.number}. ${s.action}`,
|
|
201
|
+
...(s.objective === undefined ? [] : [`objective: ${s.objective}`]),
|
|
202
|
+
...(s.expectedResult === undefined ? [] : [`expected: ${s.expectedResult}`]),
|
|
203
|
+
...(s.assertion === undefined ? [] : [`checked: ${s.assertion}`]),
|
|
204
|
+
...(recorded(s.number).length === 0 ? [] : [`recorded requests: ${recorded(s.number).join(", ")}`]),
|
|
205
|
+
].join(" — "));
|
|
206
|
+
const lines = [
|
|
207
|
+
`Journey '${j.id}': ${j.name}`,
|
|
208
|
+
...(job === undefined ? [] : [`Job: ${job.story}`]),
|
|
209
|
+
...(links.persona === undefined ? [] : [personaText(persona, links.persona.id)]),
|
|
210
|
+
...(review.summary.goal === undefined ? [] : [`Goal: ${review.summary.goal}`]),
|
|
211
|
+
...review.summary.successCriteria.map((c) => `Success criterion: ${c.description}`),
|
|
212
|
+
`End-state checks: ${review.proof.endState.length === 0 ? "none" : review.proof.endState.join("; ")}`,
|
|
213
|
+
];
|
|
214
|
+
return { state: stateOf(job?.story ?? review.summary.goal ?? j.name, j.journey.recording.site, lines, steps), hasJob: job !== undefined, hasPersona: links.persona !== undefined };
|
|
215
|
+
}
|
|
216
|
+
function questionsOf(qs) {
|
|
217
|
+
return Object.fromEntries(qs.map((q) => [q.name, { kind: "noul", instructions: q.instructions }]));
|
|
218
|
+
}
|
|
219
|
+
function probabilityOf(a) {
|
|
220
|
+
if (a === undefined)
|
|
221
|
+
return undefined;
|
|
222
|
+
if (a.kind === "noul")
|
|
223
|
+
return a.probability;
|
|
224
|
+
if (a.kind === "score")
|
|
225
|
+
return a.value;
|
|
226
|
+
return a.confidence;
|
|
227
|
+
}
|
|
228
|
+
/** #434: one Jev answer as an advisory finding — never requiring an acknowledgment. */
|
|
229
|
+
function jevFinding(q, a, cached) {
|
|
230
|
+
const p = probabilityOf(a);
|
|
231
|
+
const prob = p === undefined ? undefined : Math.min(1, Math.max(0, p));
|
|
232
|
+
const asked = `asked: "${q.instructions}"${cached ? " (cached answer)" : ""}`;
|
|
233
|
+
if (prob === undefined)
|
|
234
|
+
return finding(READINESS_JEV, `jev.${q.name}`, "warn", `no answer to "${q.instructions}"`, { characteristic: q.characteristic });
|
|
235
|
+
return prob < READINESS_LOW_PROBABILITY
|
|
236
|
+
? finding(READINESS_JEV, `jev.${q.name}`, "warn", `not ready because ${q.notReady} (GtWR: ${q.characteristic}) — ${asked}`, { characteristic: q.characteristic, probability: prob })
|
|
237
|
+
: finding(READINESS_JEV, `jev.${q.name}`, "info", `${q.ready} — ${asked}`, { characteristic: q.characteristic, probability: prob });
|
|
238
|
+
}
|
|
239
|
+
/** #434: the advisory Jev readiness questions (Noul, with probabilities). */
|
|
240
|
+
export const jevReadinessAnalyzer = {
|
|
241
|
+
id: READINESS_JEV,
|
|
242
|
+
appliesTo: ["persona", "job", "journey"],
|
|
243
|
+
async analyze(subject, catalog, ctx) {
|
|
244
|
+
if (ctx.readiness !== true)
|
|
245
|
+
return [];
|
|
246
|
+
let qs;
|
|
247
|
+
let state;
|
|
248
|
+
if (subject.kind === "job") {
|
|
249
|
+
const job = findJob(catalog, subject.id);
|
|
250
|
+
if (job === undefined)
|
|
251
|
+
return [];
|
|
252
|
+
qs = JOB_QUESTIONS;
|
|
253
|
+
state = stateOf("Review this job story", "about:catalog", [
|
|
254
|
+
`Job story: ${job.story}`,
|
|
255
|
+
`Trigger (When …): ${job.job.trigger}`,
|
|
256
|
+
`Motivation (I want to …): ${job.job.motivation}`,
|
|
257
|
+
`Outcome (so I can …): ${job.job.outcome}`,
|
|
258
|
+
...job.personas.map((id) => personaText(findPersona(catalog, id), id)),
|
|
259
|
+
]);
|
|
260
|
+
}
|
|
261
|
+
else if (subject.kind === "persona") {
|
|
262
|
+
const p = findPersona(catalog, subject.id);
|
|
263
|
+
if (p === undefined)
|
|
264
|
+
return [];
|
|
265
|
+
qs = PERSONA_QUESTIONS;
|
|
266
|
+
state = stateOf("Review this persona", "about:catalog", [personaText(p, p.id)]);
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
const j = subjectJourney(subject, catalog, ctx);
|
|
270
|
+
if (j === undefined)
|
|
271
|
+
return [];
|
|
272
|
+
const built = journeyState(j, catalog);
|
|
273
|
+
qs = journeyQuestions(built.hasJob, built.hasPersona);
|
|
274
|
+
state = built.state;
|
|
275
|
+
}
|
|
276
|
+
const setup = ctx.jev;
|
|
277
|
+
if (setup === undefined || !("advisor" in setup)) {
|
|
278
|
+
return [finding(READINESS_JEV, "jev.skipped", "info", `Jev review skipped: ${setup === undefined ? JEV_SKIPPED_PASS_REAL : setup.skipped}`)];
|
|
279
|
+
}
|
|
280
|
+
let result;
|
|
281
|
+
try {
|
|
282
|
+
result = await setup.advisor.ask(state, questionsOf(qs));
|
|
283
|
+
}
|
|
284
|
+
catch (err) {
|
|
285
|
+
// Advisory: a failed model call never gates an approval — the deterministic layer stands.
|
|
286
|
+
return [finding(READINESS_JEV, "jev.failed", "warn", `Jev review could not run: ${err instanceof Error ? err.message : String(err)} — the deterministic checks above still apply`)];
|
|
287
|
+
}
|
|
288
|
+
return qs.map((q) => jevFinding(q, result.answers[q.name], result.cached));
|
|
289
|
+
},
|
|
290
|
+
};
|
|
291
|
+
//# sourceMappingURL=readiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.js","sourceRoot":"","sources":["../src/readiness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAyD,MAAM,mBAAmB,CAAC;AAEnI,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAA2E,MAAM,cAAc,CAAC;AAC3J,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGzD;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC;AACrC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,6DAA6D;AAC7D,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAI7C,SAAS,OAAO,CAAC,QAAgB,EAAE,IAAY,EAAE,QAAkB,EAAE,OAAe,EAAE,QAA2F,EAAE;IACjL,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,QAAQ;QACR,OAAO;QACP,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QACtD,sBAAsB,EAAE,KAAK;QAC7B,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QACxF,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;QACvF,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,QAAkB,EAAE,OAAe,EAAE,QAAqE,EAAE,EAAW,EAAE,CACpJ,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAEjG,gGAAgG;AAEhG,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAExE,sHAAsH;AACtH,MAAM,UAAU,WAAW,CAAC,CAAiB;IAC3C,OAAO,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,cAAc,GAAG,EAAE;QACxI,GAAG,EAAE,cAAc,CAAC,CAAC,KAAK,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;QACrE,cAAc,EAAE,CAAC,CAAC,cAAc;KACjC,CAAC,CAAC;AACL,CAAC;AAED,gGAAgG;AAEhG,SAAS,SAAS,CAAC,GAAe,EAAE,OAAgB;IAClD,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAI,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxG,GAAG,CAAC,IAAI,CACN,OAAO,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,CAAC,KAAK,CAAC,iBAAiB,EAAE,MAAM,EAAE,uDAAuD,CAAC;QAC3F,CAAC,CAAC,KAAK,CAAC,iBAAiB,EAAE,MAAM,EAAE,gCAAgC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,2EAA2E,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAC/M,CAAC;IACF,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,EAAE,sBAAsB,EAAE,EAAE,GAAG,EAAE,iDAAiD,EAAE,CAAC,CAAC,CAAC;IACpI,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YAC1C,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,EAAE,sDAAsD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,yCAAyC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;aAC9O,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,EAAE,oCAAoC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;YAC5P,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,EAAE,wCAAwC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACzH,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,CAAiB,EAAE,OAAgB;IACxD,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,GAAG,CAAC,IAAI,CACN,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QACjC,CAAC,CAAC,KAAK,CAAC,uBAAuB,EAAE,MAAM,EAAE,2CAA2C,EAAE,EAAE,GAAG,EAAE,+DAA+D,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;QAC7L,CAAC,CAAC,KAAK,CAAC,uBAAuB,EAAE,MAAM,EAAE,+BAA+B,CAAC,CAC5E,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,MAAM,KAAK,CAAC;QACf,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,iCAAiC,EAAE,EAAE,GAAG,EAAE,qDAAqD,EAAE,CAAC;QACpI,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,qBAAqB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAC5G,CAAC;IACF,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1K,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,CAAiB,EAAE,OAAgB;IAC9D,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IAChB,0CAA0C;IAC1C,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3D,GAAG,CAAC,IAAI,CACN,KAAK,CAAC,iBAAiB,EAAE,MAAM,EAAE,YAAY,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE;YACnL,GAAG,EAAE,qGAAqG;SAC3G,CAAC,CACH,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChF,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,MAAM,EAAE,kDAAkD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,sDAAsD,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACxM,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,KAAK,CAAC,GAAG,CAAC,EAAE,kBAAkB,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/G,uBAAuB;QACvB,GAAG,CAAC,IAAI,CACN,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YACzB,CAAC,CAAC,KAAK,CAAC,0BAA0B,EAAE,MAAM,EAAE,kCAAkC,CAAC;YAC/E,CAAC,CAAC,KAAK,CAAC,0BAA0B,EAAE,MAAM,EAAE,iBAAiB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;gBACtF,GAAG,EAAE,sFAAsF;gBAC3F,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;aAC5D,CAAC,CACP,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC9G,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC7D,+FAA+F;IAC/F,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACnG,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,0CAA0C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvM,GAAG,CAAC,IAAI,CACN,IAAI,CAAC,MAAM,KAAK,CAAC;QACf,CAAC,CAAC,KAAK,CAAC,kBAAkB,EAAE,MAAM,EAAE,uFAAuF,CAAC;QAC5H,CAAC,CAAC,KAAK,CAAC,kBAAkB,EAAE,MAAM,EAAE,6BAA6B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,6CAA6C,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,CAClO,CAAC;IACF,sBAAsB;IACtB,GAAG,CAAC,IAAI,CACN,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAC5B,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,0BAA0B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,cAAc,EAAE,CAAC;QACpJ,CAAC,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,EAAE,wBAAwB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,oDAAoD,EAAE;YACpI,GAAG,EAAE,wCAAwC,EAAE,0CAA0C;YACzF,cAAc,EAAE,YAAY;SAC7B,CAAC,CACP,CAAC;IACF,8CAA8C;IAC9C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,MAAqB,EAAE,EAAU;IACpD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IAC9B,MAAM,GAAG,GAAG,2BAA2B,EAAE,WAAW,CAAC;IACrD,IAAI,CAAC,CAAC,MAAM,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC,kBAAkB,EAAE,MAAM,EAAE,oEAAoE,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;IACvL,IAAI,CAAC,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC,kBAAkB,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,sDAAsD,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;IAC9L,IAAI,CAAC,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,kBAAkB,EAAE,MAAM,EAAE,yBAAyB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;IAC5M,OAAO,KAAK,CAAC,kBAAkB,EAAE,MAAM,EAAE,6CAA6C,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,cAAc,CAAC,OAAwB,EAAE,OAAgB,EAAE,GAAuB;IACzF,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrH,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAAwB;IACpD,EAAE,EAAE,SAAS;IACb,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG;QACjC,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACzC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAChD,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;CACF,CAAC;AAeF,MAAM,aAAa,GAAiC;IAClD,EAAE,IAAI,EAAE,kBAAkB,EAAE,YAAY,EAAE,qGAAqG,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,0DAA0D,EAAE,KAAK,EAAE,+BAA+B,EAAE;IAC5R,EAAE,IAAI,EAAE,sBAAsB,EAAE,YAAY,EAAE,8GAA8G,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,kDAAkD,EAAE,KAAK,EAAE,4BAA4B,EAAE;IAC/R,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,iEAAiE,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,mDAAmD,EAAE,KAAK,EAAE,wBAAwB,EAAE;IACvO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,qFAAqF,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,2CAA2C,EAAE,KAAK,EAAE,yCAAyC,EAAE;IAClQ,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,qDAAqD,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,0BAA0B,EAAE,KAAK,EAAE,eAAe,EAAE;IACnL,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,iEAAiE,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,uDAAuD,EAAE,KAAK,EAAE,wBAAwB,EAAE;CACxO,CAAC;AAEF,MAAM,iBAAiB,GAAiC;IACtD,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,wFAAwF,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,2CAA2C,EAAE,KAAK,EAAE,4CAA4C,EAAE;IAC1Q,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,4FAA4F,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,mCAAmC,EAAE,KAAK,EAAE,wBAAwB,EAAE;IAC5O,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,mHAAmH,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,+DAA+D,EAAE,KAAK,EAAE,2BAA2B,EAAE;CACrS,CAAC;AAEF,MAAM,eAAe,GAAsB,EAAE,IAAI,EAAE,sBAAsB,EAAE,YAAY,EAAE,kFAAkF,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,iEAAiE,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC;AACvU,MAAM,iBAAiB,GAAsB,EAAE,IAAI,EAAE,0BAA0B,EAAE,YAAY,EAAE,kGAAkG,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,yEAAyE,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC;AACxW,MAAM,eAAe,GAAsB,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,6DAA6D,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,sCAAsC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;AACrQ,MAAM,iBAAiB,GAAsB,EAAE,IAAI,EAAE,uBAAuB,EAAE,YAAY,EAAE,iHAAiH,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,sDAAsD,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;AAC9V,MAAM,cAAc,GAAsB,EAAE,IAAI,EAAE,yBAAyB,EAAE,YAAY,EAAE,4GAA4G,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,iFAAiF,EAAE,KAAK,EAAE,uDAAuD,EAAE,CAAC;AAElY,SAAS,gBAAgB,CAAC,MAAe,EAAE,UAAmB;IAC5D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;AAChJ,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,GAAW,EAAE,KAAwB,EAAE,UAA6B,EAAE;IACnG,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED,SAAS,WAAW,CAAC,CAA6B,EAAE,EAAU;IAC5D,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,YAAY,EAAE,GAAG,CAAC;IAC9C,OAAO,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,WAAW,IAAI,kBAAkB,EAAE,CAAC;AAChI,CAAC;AAED,SAAS,YAAY,CAAC,CAAiB,EAAE,OAAgB;IACvD,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjG,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAY,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/I,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACnC;QACE,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE;QAC1B,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACnE,GAAG,CAAC,CAAC,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;QAC5E,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACjE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACpG,CAAC,IAAI,CAAC,KAAK,CAAC,CACd,CAAC;IACF,MAAM,KAAK,GAAG;QACZ,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE;QAC9B,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACnD,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,CAAC,WAAW,EAAE,CAAC;QACnF,qBAAqB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACtG,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;AACrL,CAAC;AAED,SAAS,WAAW,CAAC,EAAgC;IACnD,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAqB,CAAC,CAAC,CAAC,CAAC;AACxH,CAAC;AAED,SAAS,aAAa,CAAC,CAAqB;IAC1C,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACtC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC,WAAW,CAAC;IAC5C,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC;IACvC,OAAO,CAAC,CAAC,UAAU,CAAC;AACtB,CAAC;AAED,uFAAuF;AACvF,SAAS,UAAU,CAAC,CAAoB,EAAE,CAAqB,EAAE,MAAe;IAC9E,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9E,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,YAAY,GAAG,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IACzJ,OAAO,IAAI,GAAG,yBAAyB;QACrC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC,QAAQ,WAAW,CAAC,CAAC,cAAc,OAAO,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACpL,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACxI,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAwB;IACvD,EAAE,EAAE,aAAa;IACjB,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC;IACxC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG;QACjC,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QACtC,IAAI,EAAgC,CAAC;QACrC,IAAI,KAAoB,CAAC;QACzB,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAC;YACjC,EAAE,GAAG,aAAa,CAAC;YACnB,KAAK,GAAG,OAAO,CAAC,uBAAuB,EAAE,eAAe,EAAE;gBACxD,cAAc,GAAG,CAAC,KAAK,EAAE;gBACzB,qBAAqB,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE;gBACtC,6BAA6B,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;gBACjD,yBAAyB,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE;gBAC1C,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;aACvE,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAC;YAC/B,EAAE,GAAG,iBAAiB,CAAC;YACvB,KAAK,GAAG,OAAO,CAAC,qBAAqB,EAAE,eAAe,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,SAAS;gBAAE,OAAO,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACvC,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACtD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACtB,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;QACtB,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,uBAAuB,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/I,CAAC;QACD,IAAI,MAA4D,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,0FAA0F;YAC1F,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC,CAAC;QACtL,CAAC;QACD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,CAAC;CACF,CAAC"}
|
package/dist/regression-cli.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TAG_FLAG, TAG_HELP, collectTag, taggedAction } from "./run-tags-cli.js";
|
|
1
2
|
import { BranchReplayInputError, JourneyPrefixStaleError, prefixFromBranch, recordedBranchOf } from "./journey-prefix.js";
|
|
2
3
|
import { existsSync } from "node:fs";
|
|
3
4
|
import { readFile, writeFile } from "node:fs/promises";
|
|
@@ -174,7 +175,8 @@ export function registerRegressionCommands(program, deps) {
|
|
|
174
175
|
.option("--storage-state <file>", "Playwright storageState JSON to open the replay session authenticated (#129); must exist")
|
|
175
176
|
.option("--param <kv>", "#293: a Journey param as key=value (repeatable) for a failure found from a Journey branch point — every replay goes through the same prefix; a secret param (never persisted) must be given again", collectParam, {})
|
|
176
177
|
.option("--json", "emit a JSON envelope")
|
|
177
|
-
.
|
|
178
|
+
.option(TAG_FLAG, TAG_HELP, collectTag, [])
|
|
179
|
+
.action(taggedAction(program, "regression run", async function (id) {
|
|
178
180
|
// #245: demo mode (--headed/--slow-mo), resolved before any browser opens.
|
|
179
181
|
let browser;
|
|
180
182
|
try {
|
|
@@ -279,6 +281,6 @@ export function registerRegressionCommands(program, deps) {
|
|
|
279
281
|
for (const close of opened)
|
|
280
282
|
await close();
|
|
281
283
|
}
|
|
282
|
-
});
|
|
284
|
+
}));
|
|
283
285
|
}
|
|
284
286
|
//# sourceMappingURL=regression-cli.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"regression-cli.js","sourceRoot":"","sources":["../src/regression-cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"regression-cli.js","sourceRoot":"","sources":["../src/regression-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/report-api.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type RunIndexDeps } from "./run-index.js";
|
|
2
|
-
import { type ConsolidatedDefect, type FindingsDiff, type RunRecord } from "@jevitate/findings";
|
|
2
|
+
import { type ConsolidatedDefect, type EnvironmentCauseSummary, type FindingsDiff, type RunRecord } from "@jevitate/findings";
|
|
3
3
|
import { type UsageAggregate } from "@jevitate/ai-core";
|
|
4
4
|
/**
|
|
5
5
|
* The programmatic surface behind `jevitate report` (#139), `jevitate diff` / `--baseline` (#138)
|
|
@@ -90,6 +90,8 @@ export declare function resolveSince(since: string, ctx: RunRefContext): string;
|
|
|
90
90
|
export interface BuildReportOptions {
|
|
91
91
|
readonly target?: string;
|
|
92
92
|
readonly since?: string;
|
|
93
|
+
/** #426: `--tag key=value` filters — only runs carrying EVERY one (AND). */
|
|
94
|
+
readonly tags?: Readonly<Record<string, string>>;
|
|
93
95
|
readonly dirs?: readonly string[];
|
|
94
96
|
readonly baseline?: string;
|
|
95
97
|
readonly baselinesDir?: string;
|
|
@@ -108,19 +110,33 @@ export interface RunSummary {
|
|
|
108
110
|
readonly missionOutcome?: string;
|
|
109
111
|
/** #217: a goal run's own ending, beside the canonical `missionOutcome`. */
|
|
110
112
|
readonly goalOutcome?: string;
|
|
113
|
+
/** #423: why the goal was not achieved. */
|
|
114
|
+
readonly goalReason?: string;
|
|
115
|
+
/** #423: the run's defect verdict, by kind — orthogonal to `goalOutcome`. */
|
|
116
|
+
readonly defectOutcome?: {
|
|
117
|
+
readonly status: string;
|
|
118
|
+
readonly byKind: Readonly<Record<string, number>>;
|
|
119
|
+
};
|
|
111
120
|
readonly targetBuild?: string;
|
|
112
121
|
readonly engineCommit?: string;
|
|
113
122
|
readonly findings: number;
|
|
123
|
+
/** #426: the run's tags. */
|
|
124
|
+
readonly tags?: Readonly<Record<string, string>>;
|
|
114
125
|
}
|
|
115
126
|
export interface ReportResult {
|
|
116
127
|
readonly target?: string;
|
|
117
128
|
readonly since?: string;
|
|
129
|
+
/** #426: the tag filter the report was narrowed to. */
|
|
130
|
+
readonly tags?: Readonly<Record<string, string>>;
|
|
118
131
|
readonly runs: readonly RunSummary[];
|
|
119
132
|
readonly defects: readonly ConsolidatedDefect[];
|
|
133
|
+
/** #422: the batch's environment/config faults, once each (summed over the runs) — never defects. */
|
|
134
|
+
readonly environmentFaults: readonly EnvironmentCauseSummary[];
|
|
120
135
|
readonly summary: {
|
|
121
136
|
readonly defects: number;
|
|
122
137
|
readonly advisory: number;
|
|
123
138
|
readonly runs: number;
|
|
139
|
+
readonly environmentFaults: number;
|
|
124
140
|
};
|
|
125
141
|
/**
|
|
126
142
|
* Model usage summed over the reported runs (#163). Runs whose result carries no `usage` (they made
|
|
@@ -132,13 +148,19 @@ export interface ReportResult {
|
|
|
132
148
|
readonly markdown: string;
|
|
133
149
|
}
|
|
134
150
|
export declare function summarizeRun(r: RunRecord): RunSummary;
|
|
151
|
+
/** #426: the runs carrying every filter tag (AND); no filter keeps them all. */
|
|
152
|
+
export declare function filterRunsByTags<R extends {
|
|
153
|
+
readonly tags?: Readonly<Record<string, string>>;
|
|
154
|
+
}>(runs: readonly R[], tags: Readonly<Record<string, string>> | undefined): R[];
|
|
135
155
|
export declare function buildReport(opts: BuildReportOptions): Promise<ReportResult>;
|
|
136
156
|
/** Sums the runs' persisted usage (#163). */
|
|
137
157
|
export declare function usageOfRuns(runs: readonly RunRecord[]): UsageAggregate;
|
|
138
158
|
/** The report's cost section: the full total, flagged when partial. */
|
|
139
159
|
export declare function usageMarkdown(u: UsageAggregate): string;
|
|
140
160
|
/** `jevitate diff <runA> <runB>`: A is the baseline side, B the current side. */
|
|
141
|
-
export declare function diffRunRefs(a: string, b: string, ctx: RunRefContext
|
|
161
|
+
export declare function diffRunRefs(a: string, b: string, ctx: RunRefContext & {
|
|
162
|
+
readonly tags?: Readonly<Record<string, string>>;
|
|
163
|
+
}): {
|
|
142
164
|
diff: FindingsDiff;
|
|
143
165
|
markdown: string;
|
|
144
166
|
baseline: RunSummary[];
|
package/dist/report-api.js
CHANGED
|
@@ -3,9 +3,9 @@ import { allResultDirs, projectDataDir } from "./project-dir.js";
|
|
|
3
3
|
import { indexedRunsFor, projectLogDirs } from "./run-index.js";
|
|
4
4
|
import { mkdir, readFile, readdir, writeFile } from "node:fs/promises";
|
|
5
5
|
import { basename, dirname, join, resolve } from "node:path";
|
|
6
|
-
import { consolidate, diffRuns, renderReportMarkdown, runFromMissionResult, runFromUxReport, runIdOf, } from "@jevitate/findings";
|
|
6
|
+
import { consolidate, diffRuns, environmentCausesOf, renderReportMarkdown, runFromMissionResult, runFromUxReport, runIdOf, } from "@jevitate/findings";
|
|
7
7
|
import { formatUsageLine, sumUsage, usageCountsFrom } from "@jevitate/ai-core";
|
|
8
|
-
import { clock } from "@jevitate/domain";
|
|
8
|
+
import { clock, matchesRunTags } from "@jevitate/domain";
|
|
9
9
|
/**
|
|
10
10
|
* The programmatic surface behind `jevitate report` (#139), `jevitate diff` / `--baseline` (#138)
|
|
11
11
|
* and `jevitate baseline tag`. It only READS what the runners already persisted — every result was
|
|
@@ -352,10 +352,24 @@ export function summarizeRun(r) {
|
|
|
352
352
|
...(r.startedAt === undefined ? {} : { startedAt: r.startedAt }),
|
|
353
353
|
...(r.missionOutcome === undefined ? {} : { missionOutcome: r.missionOutcome }),
|
|
354
354
|
...(r.goalOutcome === undefined ? {} : { goalOutcome: r.goalOutcome }),
|
|
355
|
+
...(r.goalReason === undefined ? {} : { goalReason: r.goalReason }),
|
|
356
|
+
...(r.defectOutcome === undefined ? {} : { defectOutcome: r.defectOutcome }),
|
|
355
357
|
...(r.targetBuild === undefined ? {} : { targetBuild: r.targetBuild }),
|
|
356
358
|
...(r.engine?.commit === undefined ? {} : { engineCommit: r.engine.commit }),
|
|
359
|
+
...(r.tags === undefined ? {} : { tags: r.tags }),
|
|
357
360
|
};
|
|
358
361
|
}
|
|
362
|
+
/** #426: the runs carrying every filter tag (AND); no filter keeps them all. */
|
|
363
|
+
export function filterRunsByTags(runs, tags) {
|
|
364
|
+
if (tags === undefined || Object.keys(tags).length === 0)
|
|
365
|
+
return [...runs];
|
|
366
|
+
return runs.filter((r) => matchesRunTags(r.tags ?? {}, tags));
|
|
367
|
+
}
|
|
368
|
+
function tagsLabel(tags) {
|
|
369
|
+
return Object.entries(tags)
|
|
370
|
+
.map(([k, v]) => `${k}=${v}`)
|
|
371
|
+
.join(", ");
|
|
372
|
+
}
|
|
359
373
|
export async function buildReport(opts) {
|
|
360
374
|
const explicitDirs = opts.dirs !== undefined && opts.dirs.length > 0;
|
|
361
375
|
const sources = explicitDirs ? { dirs: [...opts.dirs], files: [] } : defaultReportSources(opts.target !== undefined, opts.index);
|
|
@@ -379,6 +393,12 @@ export async function buildReport(opts) {
|
|
|
379
393
|
const since = opts.since === undefined ? undefined : resolveSince(opts.since, ctx);
|
|
380
394
|
if (since !== undefined)
|
|
381
395
|
runs = runs.filter((r) => r.startedAt !== undefined && r.startedAt >= since);
|
|
396
|
+
const tagFilter = opts.tags !== undefined && Object.keys(opts.tags).length > 0 ? opts.tags : undefined;
|
|
397
|
+
runs = filterRunsByTags(runs, tagFilter);
|
|
398
|
+
// #426: like --target, a tag no run carries is refused (exit 64) — never an empty "nothing wrong" report.
|
|
399
|
+
if (tagFilter !== undefined && runs.length === 0 && opts.runs === undefined) {
|
|
400
|
+
throw new ReportInputError(`--tag ${tagsLabel(tagFilter)} matches no recorded run`);
|
|
401
|
+
}
|
|
382
402
|
const defects = consolidate(runs);
|
|
383
403
|
let diff;
|
|
384
404
|
let baselineRuns;
|
|
@@ -387,8 +407,9 @@ export async function buildReport(opts) {
|
|
|
387
407
|
diff = diffRuns(baselineRuns, runs);
|
|
388
408
|
}
|
|
389
409
|
const usage = usageOfRuns(runs);
|
|
410
|
+
const environmentFaults = environmentCausesOf(runs);
|
|
390
411
|
const markdown = renderReportMarkdown({
|
|
391
|
-
title: `Defect report${targetLabel === undefined ? "" : ` — ${targetLabel}`}${since === undefined ? "" : ` since ${since}`}`,
|
|
412
|
+
title: `Defect report${targetLabel === undefined ? "" : ` — ${targetLabel}`}${since === undefined ? "" : ` since ${since}`}${tagFilter === undefined ? "" : ` tagged ${tagsLabel(tagFilter)}`}`,
|
|
392
413
|
runs,
|
|
393
414
|
defects,
|
|
394
415
|
...(diff === undefined ? {} : { diff }),
|
|
@@ -396,12 +417,15 @@ export async function buildReport(opts) {
|
|
|
396
417
|
return {
|
|
397
418
|
...(targetLabel === undefined ? {} : { target: targetLabel }),
|
|
398
419
|
...(since === undefined ? {} : { since }),
|
|
420
|
+
...(tagFilter === undefined ? {} : { tags: tagFilter }),
|
|
399
421
|
runs: runs.map(summarizeRun),
|
|
400
422
|
defects,
|
|
423
|
+
environmentFaults,
|
|
401
424
|
summary: {
|
|
402
425
|
defects: defects.filter((d) => d.severity === "hard").length,
|
|
403
426
|
advisory: defects.filter((d) => d.severity === "advisory").length,
|
|
404
427
|
runs: runs.length,
|
|
428
|
+
environmentFaults: environmentFaults.length,
|
|
405
429
|
},
|
|
406
430
|
usage,
|
|
407
431
|
...(diff === undefined ? {} : { diff }),
|
|
@@ -422,8 +446,12 @@ export function usageMarkdown(u) {
|
|
|
422
446
|
}
|
|
423
447
|
/** `jevitate diff <runA> <runB>`: A is the baseline side, B the current side. */
|
|
424
448
|
export function diffRunRefs(a, b, ctx) {
|
|
425
|
-
|
|
426
|
-
const
|
|
449
|
+
// #426: `--tag` narrows BOTH sides (a baseline tag or a dir holds runs of many features).
|
|
450
|
+
const base = filterRunsByTags(resolveRunRef(a, ctx), ctx.tags);
|
|
451
|
+
const cur = filterRunsByTags(resolveRunRef(b, ctx), ctx.tags);
|
|
452
|
+
if (ctx.tags !== undefined && Object.keys(ctx.tags).length > 0 && (base.length === 0 || cur.length === 0)) {
|
|
453
|
+
throw new ReportInputError(`--tag ${tagsLabel(ctx.tags)} matches no run of ${base.length === 0 ? a : b}`);
|
|
454
|
+
}
|
|
427
455
|
const diff = diffRuns(base, cur);
|
|
428
456
|
const markdown = renderReportMarkdown({ title: `Diff ${a} → ${b}`, runs: cur, defects: consolidate(cur), diff });
|
|
429
457
|
return { diff, markdown, baseline: base.map(summarizeRun), current: cur.map(summarizeRun) };
|