@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
package/dist/catalog.js
ADDED
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { contentHash } from "@jevitate/domain";
|
|
5
|
+
import { CATALOG_ID_RE, CatalogApprovalSchema, FsJourneyStore, JobSchema, renderJobStory, } from "@jevitate/journey";
|
|
6
|
+
import { journeyReviewHash } from "./journey-review.js";
|
|
7
|
+
/**
|
|
8
|
+
* #433 — the catalog: personas, jobs and Journeys, with their ids, content hashes and approval
|
|
9
|
+
* state, loaded in one place (`CatalogLoader`) for every approval path, every review sheet and
|
|
10
|
+
* `catalog status` — and for the readiness (#434) and catalog-analysis (#435) analyzers.
|
|
11
|
+
*
|
|
12
|
+
* Files (in the project's `.jevitate/`):
|
|
13
|
+
* - `personas.json` — the #427 personas file, extended: an entry may carry `description`, `role`
|
|
14
|
+
* and its `approval`, beside its session settings (`storageState`, `login`). A catalog-only
|
|
15
|
+
* persona (no session yet) is allowed. The persona's id is its #427 `name` (`id` is accepted too).
|
|
16
|
+
* - `jobs.json` — job stories (`JobSchema`); `.jevitate/campaign/jobs.json` (the test-campaign
|
|
17
|
+
* skill's old place) is read when `jobs.json` does not exist.
|
|
18
|
+
*
|
|
19
|
+
* Content hashes leave the approval out, so approving does not change what was approved. A
|
|
20
|
+
* persona's hash covers what the persona IS (id, description, role, any other descriptive key),
|
|
21
|
+
* not its session settings: re-minting a session or moving a storage state is not a new persona.
|
|
22
|
+
* A missing file is an empty catalog — a project without personas/jobs works exactly as before;
|
|
23
|
+
* a file that exists but cannot be read as the catalog is refused (`CatalogInputError`), never skipped.
|
|
24
|
+
*/
|
|
25
|
+
export const PERSONAS_FILE = "personas.json";
|
|
26
|
+
export const JOBS_FILE = "jobs.json";
|
|
27
|
+
/** The test-campaign skill's jobs file before #433 — still read for compatibility. */
|
|
28
|
+
export const LEGACY_JOBS_FILE = join("campaign", "jobs.json");
|
|
29
|
+
/** A catalog file that exists but is not a valid catalog — refused (exit 64), never skipped. */
|
|
30
|
+
export class CatalogInputError extends Error {
|
|
31
|
+
code = "E_CATALOG_INPUT";
|
|
32
|
+
}
|
|
33
|
+
/** `persona|job review|approve <id>`: no such item in the catalog. */
|
|
34
|
+
export class UnknownCatalogItemError extends Error {
|
|
35
|
+
kind;
|
|
36
|
+
constructor(kind, message) {
|
|
37
|
+
super(message);
|
|
38
|
+
this.kind = kind;
|
|
39
|
+
}
|
|
40
|
+
get code() {
|
|
41
|
+
return this.kind === "persona" ? "E_UNKNOWN_PERSONA" : "E_UNKNOWN_JOB";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function statusOf(approval, hash) {
|
|
45
|
+
if (approval === undefined)
|
|
46
|
+
return "draft";
|
|
47
|
+
return approval.contentHash === hash ? "approved" : "stale";
|
|
48
|
+
}
|
|
49
|
+
function isRecord(v) {
|
|
50
|
+
return v !== null && typeof v === "object" && !Array.isArray(v);
|
|
51
|
+
}
|
|
52
|
+
async function readJsonFile(path) {
|
|
53
|
+
const raw = await readFile(path, "utf8");
|
|
54
|
+
try {
|
|
55
|
+
return JSON.parse(raw);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
throw new CatalogInputError(`${path} is not valid JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async function writeJsonFile(path, value) {
|
|
62
|
+
await writeFile(path, `${JSON.stringify(value, null, 2)}\n`);
|
|
63
|
+
}
|
|
64
|
+
// ── personas.json ─────────────────────────────────────────────────────────────────────────────
|
|
65
|
+
/** The session settings (#427): operational, not part of what a persona is (left out of its hash). */
|
|
66
|
+
const SESSION_KEYS = new Set(["storageState", "login"]);
|
|
67
|
+
function personaList(raw) {
|
|
68
|
+
if (Array.isArray(raw))
|
|
69
|
+
return raw;
|
|
70
|
+
if (isRecord(raw) && Array.isArray(raw.personas))
|
|
71
|
+
return raw.personas;
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
function rawPersonas(raw, path) {
|
|
75
|
+
const list = personaList(raw);
|
|
76
|
+
if (list !== null) {
|
|
77
|
+
return list.map((entry, index) => {
|
|
78
|
+
if (!isRecord(entry))
|
|
79
|
+
throw new CatalogInputError(`${path}: entry ${index} must be an object {"name": string, …}`);
|
|
80
|
+
const name = entry.name ?? entry.id;
|
|
81
|
+
if (typeof name !== "string")
|
|
82
|
+
throw new CatalogInputError(`${path}: entry ${index} needs a "name" (its persona id)`);
|
|
83
|
+
if (entry.name !== undefined && entry.id !== undefined && entry.name !== entry.id) {
|
|
84
|
+
throw new CatalogInputError(`${path}: entry ${index} has both "name" ${JSON.stringify(entry.name)} and "id" ${JSON.stringify(entry.id)} — one persona id`);
|
|
85
|
+
}
|
|
86
|
+
const { name: _n, id: _i, ...fields } = entry;
|
|
87
|
+
return { id: name, fields, slot: { form: "list", index } };
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
if (isRecord(raw)) {
|
|
91
|
+
return Object.entries(raw).map(([id, value]) => {
|
|
92
|
+
if (typeof value === "string")
|
|
93
|
+
return { id, fields: { storageState: value }, slot: { form: "map", key: id } };
|
|
94
|
+
if (!isRecord(value))
|
|
95
|
+
throw new CatalogInputError(`${path}: ${id} must map to a storage state path or an object`);
|
|
96
|
+
return { id, fields: { ...value }, slot: { form: "map", key: id } };
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
throw new CatalogInputError(`${path} must be an object or an array of personas`);
|
|
100
|
+
}
|
|
101
|
+
function catalogPersona(p, path) {
|
|
102
|
+
if (!CATALOG_ID_RE.test(p.id))
|
|
103
|
+
throw new CatalogInputError(`${path}: persona id ${JSON.stringify(p.id)} must be 1-64 of [A-Za-z0-9._-], starting alphanumeric`);
|
|
104
|
+
const { description, role, approval: rawApproval } = p.fields;
|
|
105
|
+
if (description !== undefined && (typeof description !== "string" || description.length > 2000)) {
|
|
106
|
+
throw new CatalogInputError(`${path}: persona ${p.id}: description must be text (at most 2000 characters)`);
|
|
107
|
+
}
|
|
108
|
+
if (role !== undefined && (typeof role !== "string" || role.length > 200))
|
|
109
|
+
throw new CatalogInputError(`${path}: persona ${p.id}: role must be text (at most 200 characters)`);
|
|
110
|
+
let approval;
|
|
111
|
+
if (rawApproval !== undefined) {
|
|
112
|
+
const parsed = CatalogApprovalSchema.safeParse(rawApproval);
|
|
113
|
+
if (!parsed.success)
|
|
114
|
+
throw new CatalogInputError(`${path}: persona ${p.id}: approval is not a valid approval record (${parsed.error.issues.map((i) => i.message).join("; ")})`);
|
|
115
|
+
approval = parsed.data;
|
|
116
|
+
}
|
|
117
|
+
const hash = personaContentHash(p.id, p.fields);
|
|
118
|
+
return {
|
|
119
|
+
id: p.id,
|
|
120
|
+
...(typeof description === "string" ? { description } : {}),
|
|
121
|
+
...(typeof role === "string" ? { role } : {}),
|
|
122
|
+
hasStorageState: typeof p.fields.storageState === "string",
|
|
123
|
+
hasLogin: p.fields.login !== undefined,
|
|
124
|
+
...(approval === undefined ? {} : { approval }),
|
|
125
|
+
contentHash: hash,
|
|
126
|
+
status: statusOf(approval, hash),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
/** #433: a persona's content hash — its id and descriptive keys, without its approval or session settings. */
|
|
130
|
+
export function personaContentHash(id, fields) {
|
|
131
|
+
const described = { id };
|
|
132
|
+
for (const [k, v] of Object.entries(fields))
|
|
133
|
+
if (k !== "approval" && !SESSION_KEYS.has(k))
|
|
134
|
+
described[k] = v;
|
|
135
|
+
return contentHash(described);
|
|
136
|
+
}
|
|
137
|
+
// ── jobs.json ─────────────────────────────────────────────────────────────────────────────────
|
|
138
|
+
function jobList(raw, path) {
|
|
139
|
+
if (Array.isArray(raw))
|
|
140
|
+
return raw;
|
|
141
|
+
if (isRecord(raw) && Array.isArray(raw.jobs))
|
|
142
|
+
return raw.jobs;
|
|
143
|
+
throw new CatalogInputError(`${path} must be an array of jobs (or {"jobs": [...]})`);
|
|
144
|
+
}
|
|
145
|
+
function catalogJob(entry, index, path) {
|
|
146
|
+
const where = isRecord(entry) && typeof entry.id === "string" ? `job ${JSON.stringify(entry.id)}` : `entry ${index}`;
|
|
147
|
+
const parsed = JobSchema.safeParse(entry);
|
|
148
|
+
if (!parsed.success) {
|
|
149
|
+
throw new CatalogInputError(`${path}: ${where}: ${parsed.error.issues.map((i) => (i.path.length === 0 ? i.message : `${i.path.join(".")}: ${i.message}`)).join("; ")}`);
|
|
150
|
+
}
|
|
151
|
+
const job = parsed.data;
|
|
152
|
+
const hash = jobContentHash(job);
|
|
153
|
+
return {
|
|
154
|
+
id: job.id,
|
|
155
|
+
job,
|
|
156
|
+
story: renderJobStory(job),
|
|
157
|
+
personas: [...new Set([...(job.personas ?? []), ...(job.persona === undefined ? [] : [job.persona])])],
|
|
158
|
+
...(job.approval === undefined ? {} : { approval: job.approval }),
|
|
159
|
+
contentHash: hash,
|
|
160
|
+
status: statusOf(job.approval, hash),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/** #433: a job's content hash — the job without its approval. */
|
|
164
|
+
export function jobContentHash(job) {
|
|
165
|
+
const { approval: _a, ...rest } = job;
|
|
166
|
+
return contentHash(rest);
|
|
167
|
+
}
|
|
168
|
+
// ── Journeys ──────────────────────────────────────────────────────────────────────────────────
|
|
169
|
+
export function catalogJourney(journey) {
|
|
170
|
+
const m = journey.metadata;
|
|
171
|
+
const hash = journeyReviewHash(journey);
|
|
172
|
+
return {
|
|
173
|
+
id: m.id,
|
|
174
|
+
name: m.name,
|
|
175
|
+
promoted: m.promoted,
|
|
176
|
+
journey,
|
|
177
|
+
...(m.job === undefined ? {} : { job: m.job }),
|
|
178
|
+
...(m.persona === undefined ? {} : { personaText: m.persona }),
|
|
179
|
+
...(m.approval === undefined ? {} : { approval: m.approval }),
|
|
180
|
+
contentHash: hash,
|
|
181
|
+
changedSinceApproval: m.promoted && m.approval !== undefined && m.approval.contentHash !== hash,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* #433: loads personas + jobs + Journeys with their ids, content hashes and approval state. Shared
|
|
186
|
+
* by every approval path (`persona|job approve`, `journey promote`, `demo approve`), the review
|
|
187
|
+
* sheets and `catalog status` — and exported for the #434 / #435 analyzers.
|
|
188
|
+
*/
|
|
189
|
+
export class CatalogLoader {
|
|
190
|
+
opts;
|
|
191
|
+
constructor(opts) {
|
|
192
|
+
this.opts = opts;
|
|
193
|
+
}
|
|
194
|
+
/** The personas file path (whether or not it exists), or null without a catalog dir. */
|
|
195
|
+
personasPath() {
|
|
196
|
+
return this.opts.catalogDir === null ? null : join(this.opts.catalogDir, PERSONAS_FILE);
|
|
197
|
+
}
|
|
198
|
+
/** The jobs file in use: `jobs.json`, else the legacy `campaign/jobs.json`; null when neither exists. */
|
|
199
|
+
jobsPath() {
|
|
200
|
+
if (this.opts.catalogDir === null)
|
|
201
|
+
return null;
|
|
202
|
+
const main = join(this.opts.catalogDir, JOBS_FILE);
|
|
203
|
+
const legacy = join(this.opts.catalogDir, LEGACY_JOBS_FILE);
|
|
204
|
+
if (existsSync(main) && existsSync(legacy)) {
|
|
205
|
+
throw new CatalogInputError(`both ${main} and ${legacy} exist — merge the jobs into ${main} and remove ${legacy} (one jobs file, so nothing diverges silently)`);
|
|
206
|
+
}
|
|
207
|
+
if (existsSync(main))
|
|
208
|
+
return main;
|
|
209
|
+
return existsSync(legacy) ? legacy : null;
|
|
210
|
+
}
|
|
211
|
+
async loadPersonas() {
|
|
212
|
+
const path = this.personasPath();
|
|
213
|
+
if (path === null || !existsSync(path))
|
|
214
|
+
return { file: null, personas: [] };
|
|
215
|
+
const personas = rawPersonas(await readJsonFile(path), path).map((p) => catalogPersona(p, path));
|
|
216
|
+
const seen = new Set();
|
|
217
|
+
for (const p of personas) {
|
|
218
|
+
if (seen.has(p.id))
|
|
219
|
+
throw new CatalogInputError(`${path}: persona ${p.id} is declared twice`);
|
|
220
|
+
seen.add(p.id);
|
|
221
|
+
}
|
|
222
|
+
return { file: path, personas };
|
|
223
|
+
}
|
|
224
|
+
async loadJobs() {
|
|
225
|
+
const path = this.jobsPath();
|
|
226
|
+
if (path === null)
|
|
227
|
+
return { file: null, jobs: [] };
|
|
228
|
+
const jobs = jobList(await readJsonFile(path), path).map((e, i) => catalogJob(e, i, path));
|
|
229
|
+
const seen = new Set();
|
|
230
|
+
for (const j of jobs) {
|
|
231
|
+
if (seen.has(j.id))
|
|
232
|
+
throw new CatalogInputError(`${path}: job ${j.id} is declared twice`);
|
|
233
|
+
seen.add(j.id);
|
|
234
|
+
}
|
|
235
|
+
return { file: path, jobs };
|
|
236
|
+
}
|
|
237
|
+
async loadJourneys() {
|
|
238
|
+
const store = new FsJourneyStore(this.opts.journeysDir);
|
|
239
|
+
const out = [];
|
|
240
|
+
for (const meta of await store.list()) {
|
|
241
|
+
const journey = await store.get(meta.id);
|
|
242
|
+
if (journey !== null)
|
|
243
|
+
out.push(catalogJourney(journey));
|
|
244
|
+
}
|
|
245
|
+
return out.sort((a, b) => a.id.localeCompare(b.id));
|
|
246
|
+
}
|
|
247
|
+
async load() {
|
|
248
|
+
const [{ file: personasFile, personas }, { file: jobsFile, jobs }, journeys] = await Promise.all([this.loadPersonas(), this.loadJobs(), this.loadJourneys()]);
|
|
249
|
+
return { dir: this.opts.catalogDir, personasFile, jobsFile, personas, jobs, journeys, journeysDir: this.opts.journeysDir };
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
export function findPersona(catalog, id) {
|
|
253
|
+
return catalog.personas.find((p) => p.id === id);
|
|
254
|
+
}
|
|
255
|
+
export function findJob(catalog, id) {
|
|
256
|
+
return catalog.jobs.find((j) => j.id === id);
|
|
257
|
+
}
|
|
258
|
+
export function requirePersona(catalog, id) {
|
|
259
|
+
const p = findPersona(catalog, id);
|
|
260
|
+
if (p !== undefined)
|
|
261
|
+
return p;
|
|
262
|
+
const where = catalog.dir === null ? "no .jevitate/ project was found (run inside a project, or pass --dir)" : `${join(catalog.dir, PERSONAS_FILE)} declares ${catalog.personas.length === 0 ? "no personas" : `${catalog.personas.map((x) => x.id).join(", ")}`}`;
|
|
263
|
+
throw new UnknownCatalogItemError("persona", `unknown persona '${id}' — ${where}`);
|
|
264
|
+
}
|
|
265
|
+
export function requireJob(catalog, id) {
|
|
266
|
+
const j = findJob(catalog, id);
|
|
267
|
+
if (j !== undefined)
|
|
268
|
+
return j;
|
|
269
|
+
const where = catalog.dir === null ? "no .jevitate/ project was found (run inside a project, or pass --dir)" : catalog.jobsFile === null ? `there is no ${join(catalog.dir, JOBS_FILE)}` : `${catalog.jobsFile} declares ${catalog.jobs.map((x) => x.id).join(", ")}`;
|
|
270
|
+
throw new UnknownCatalogItemError("job", `unknown job '${id}' — ${where}`);
|
|
271
|
+
}
|
|
272
|
+
/** The Journeys whose catalog persona link is this persona. */
|
|
273
|
+
export function journeysForPersona(catalog, personaId) {
|
|
274
|
+
return catalog.journeys.filter((j) => personaLinkId(catalog, j) === personaId);
|
|
275
|
+
}
|
|
276
|
+
export function journeysForJob(catalog, jobId) {
|
|
277
|
+
return catalog.journeys.filter((j) => j.job === jobId);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* The persona id a Journey links: `metadata.persona` when it names a catalog persona; when the
|
|
281
|
+
* Journey links a job, its persona is ALWAYS read as an id (an unknown one is a dangling link).
|
|
282
|
+
* Otherwise `metadata.persona` is free text and links nothing.
|
|
283
|
+
*/
|
|
284
|
+
export function personaLinkId(catalog, j) {
|
|
285
|
+
const text = j.personaText?.trim();
|
|
286
|
+
if (text === undefined || text === "")
|
|
287
|
+
return undefined;
|
|
288
|
+
if (findPersona(catalog, text) !== undefined)
|
|
289
|
+
return text;
|
|
290
|
+
return j.job !== undefined ? text : undefined;
|
|
291
|
+
}
|
|
292
|
+
/** #433: a Journey's links, their approval state, what is unvetted and why it needs re-review. */
|
|
293
|
+
export function journeyLinks(catalog, j) {
|
|
294
|
+
const job = j.job === undefined ? undefined : findJob(catalog, j.job);
|
|
295
|
+
const jobLink = j.job === undefined ? undefined : { id: j.job, status: (job?.status ?? "unknown"), ...(job === undefined ? {} : { story: job.story }) };
|
|
296
|
+
const personaId = personaLinkId(catalog, j);
|
|
297
|
+
const personaLink = personaId === undefined ? undefined : { id: personaId, status: (findPersona(catalog, personaId)?.status ?? "unknown") };
|
|
298
|
+
const unvetted = [
|
|
299
|
+
...(jobLink !== undefined && jobLink.status !== "approved" ? [`job:${jobLink.id} (${jobLink.status})`] : []),
|
|
300
|
+
...(personaLink !== undefined && personaLink.status !== "approved" ? [`persona:${personaLink.id} (${personaLink.status})`] : []),
|
|
301
|
+
];
|
|
302
|
+
const needsReReview = [];
|
|
303
|
+
if (j.promoted) {
|
|
304
|
+
if (j.changedSinceApproval)
|
|
305
|
+
needsReReview.push("the Journey changed since its approval");
|
|
306
|
+
if (jobLink?.status === "stale")
|
|
307
|
+
needsReReview.push(`its job '${jobLink.id}' changed since that job's approval`);
|
|
308
|
+
if (personaLink?.status === "stale")
|
|
309
|
+
needsReReview.push(`its persona '${personaLink.id}' changed since that persona's approval`);
|
|
310
|
+
}
|
|
311
|
+
return {
|
|
312
|
+
linked: jobLink !== undefined || personaLink !== undefined,
|
|
313
|
+
...(jobLink === undefined ? {} : { job: jobLink }),
|
|
314
|
+
...(personaLink === undefined ? {} : { persona: personaLink }),
|
|
315
|
+
unvetted,
|
|
316
|
+
needsReReview,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
// ── Writing an approval back ──────────────────────────────────────────────────────────────────
|
|
320
|
+
/** #433: records a persona's approval in personas.json, on the same entry (a bare path entry becomes `{storageState, approval}`). */
|
|
321
|
+
export async function writePersonaApproval(file, id, approval) {
|
|
322
|
+
const raw = await readJsonFile(file);
|
|
323
|
+
const entry = rawPersonas(raw, file).find((p) => p.id === id);
|
|
324
|
+
if (entry === undefined)
|
|
325
|
+
throw new UnknownCatalogItemError("persona", `unknown persona '${id}' in ${file}`);
|
|
326
|
+
const record = CatalogApprovalSchema.parse(approval);
|
|
327
|
+
let next;
|
|
328
|
+
if (entry.slot.form === "list") {
|
|
329
|
+
const list = [...(personaList(raw) ?? [])];
|
|
330
|
+
list[entry.slot.index] = { ...list[entry.slot.index], approval: record };
|
|
331
|
+
next = Array.isArray(raw) ? list : { ...raw, personas: list };
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
const map = raw;
|
|
335
|
+
const value = map[entry.slot.key];
|
|
336
|
+
next = { ...map, [entry.slot.key]: typeof value === "string" ? { storageState: value, approval: record } : { ...value, approval: record } };
|
|
337
|
+
}
|
|
338
|
+
await writeJsonFile(file, next);
|
|
339
|
+
}
|
|
340
|
+
/** #433: records a job's approval in its jobs file. */
|
|
341
|
+
export async function writeJobApproval(file, id, approval) {
|
|
342
|
+
const raw = await readJsonFile(file);
|
|
343
|
+
const list = [...jobList(raw, file)];
|
|
344
|
+
const index = list.findIndex((e) => isRecord(e) && e.id === id);
|
|
345
|
+
if (index === -1)
|
|
346
|
+
throw new UnknownCatalogItemError("job", `unknown job '${id}' in ${file}`);
|
|
347
|
+
list[index] = { ...list[index], approval: CatalogApprovalSchema.parse(approval) };
|
|
348
|
+
// Re-validated before writing: an approval is never written into a job the schema refuses.
|
|
349
|
+
catalogJob(list[index], index, file);
|
|
350
|
+
await writeJsonFile(file, Array.isArray(raw) ? list : { ...raw, jobs: list });
|
|
351
|
+
}
|
|
352
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/check-api.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
2
|
import { join, resolve } from "node:path";
|
|
3
3
|
import { aggregateOf, formatUsageLine } from "@jevitate/ai-core";
|
|
4
|
-
import { consolidate, diffRuns, renderJUnit, renderReportMarkdown, renderSarif } from "@jevitate/findings";
|
|
4
|
+
import { consolidate, diffRuns, findingKey, renderJUnit, renderReportMarkdown, renderSarif } from "@jevitate/findings";
|
|
5
|
+
import { approvalsReport } from "./approval-provenance.js";
|
|
6
|
+
import { loadCatalog } from "./catalog-api.js";
|
|
5
7
|
import { runAdversarialCliMission, runCoverageMission, runExploration, runFeatureCliMission } from "./explore-api.js";
|
|
6
8
|
import { runJourneyProgrammatically } from "./journey-api.js";
|
|
7
9
|
import { runUsabilityMission } from "./ux-api.js";
|
|
@@ -25,6 +27,20 @@ const REAL_RUNNERS = {
|
|
|
25
27
|
usability: runUsabilityMission,
|
|
26
28
|
verifyFix: runVerifyFix,
|
|
27
29
|
};
|
|
30
|
+
/** #437: the `--require-approvals` violations as hard `approval` defects (one per item and problem). */
|
|
31
|
+
async function approvalDefects(opts, req) {
|
|
32
|
+
const dirs = [...new Set([opts.journeysDir, ...opts.suite.targets.flatMap((t) => (t.journeysDir === undefined ? [] : [t.journeysDir]))].map((d) => resolve(d)))];
|
|
33
|
+
const catalogs = [];
|
|
34
|
+
for (const d of dirs)
|
|
35
|
+
catalogs.push(await loadCatalog(req.catalogDir, d));
|
|
36
|
+
const report = approvalsReport(catalogs, req.allowedChannels);
|
|
37
|
+
const defects = (report.requirement?.violations ?? []).map((v) => {
|
|
38
|
+
const identity = { category: "approval", signal: `approval-${v.problem}`, control: `${v.kind} ${v.id}` };
|
|
39
|
+
const key = findingKey(identity);
|
|
40
|
+
return { key, keys: [key], identity, category: "approval", severity: "hard", title: v.message, fingerprints: [], modes: [], occurrences: 1, runCount: 0, evidence: [], intermittent: false };
|
|
41
|
+
});
|
|
42
|
+
return { defects };
|
|
43
|
+
}
|
|
28
44
|
export async function runCheck(opts) {
|
|
29
45
|
const nowIso = opts.nowIso ?? (() => clock.nowIso());
|
|
30
46
|
const startedAt = nowIso();
|
|
@@ -91,7 +107,9 @@ export async function runCheck(opts) {
|
|
|
91
107
|
runs.push(run);
|
|
92
108
|
runOf.set(ex.resultPath, run);
|
|
93
109
|
}
|
|
94
|
-
|
|
110
|
+
// #437 --require-approvals: each violation is a hard `approval` finding on the `approvals` item.
|
|
111
|
+
const approvals = opts.requireApprovals === undefined ? undefined : await approvalDefects(opts, opts.requireApprovals);
|
|
112
|
+
const defects = [...consolidate(runs), ...(approvals?.defects ?? [])];
|
|
95
113
|
let diff;
|
|
96
114
|
let baselineRuns;
|
|
97
115
|
if (opts.baseline !== undefined) {
|
|
@@ -141,6 +159,10 @@ export async function runCheck(opts) {
|
|
|
141
159
|
...(ex.goalOutcome === undefined ? {} : { goalOutcome: ex.goalOutcome }),
|
|
142
160
|
};
|
|
143
161
|
});
|
|
162
|
+
if (approvals !== undefined) {
|
|
163
|
+
const own = gating.filter((d) => approvals.defects.includes(d)).map((d) => d.key);
|
|
164
|
+
itemReports.push({ target: "approvals", kind: "approvals", name: "require-approvals", status: "ran", actions: 0, durationMs: 0, verdict: own.length > 0 ? "failed" : "passed", gating: own });
|
|
165
|
+
}
|
|
144
166
|
const errors = itemReports.filter((i) => i.verdict === "error").length;
|
|
145
167
|
const exitCode = gating.length > 0 ? 1 : errors > 0 || exceeded !== undefined ? 2 : 0;
|
|
146
168
|
const junitPath = resolve(opts.junitPath ?? join(outDir, "junit.xml"));
|
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-cli.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export interface CheckCliDeps {
|
|
|
14
14
|
readonly buildGateways: (sel: {
|
|
15
15
|
real: boolean;
|
|
16
16
|
fakeAi: boolean;
|
|
17
|
+
jevProvider?: string | undefined;
|
|
17
18
|
}) => Promise<CheckGateways>;
|
|
18
19
|
readonly journeysDir: string;
|
|
19
20
|
/** The site-policy database (`jevitate site policy set`) Journey items are gated by. */
|
|
@@ -25,6 +26,8 @@ export interface CheckCliDeps {
|
|
|
25
26
|
/** Maps the command's browser launch flags to launch options (program.ts's `browserLaunchFromFlags`). */
|
|
26
27
|
readonly browserLaunch?: (flags: object) => BrowserLaunchOptions | undefined;
|
|
27
28
|
readonly baselinesDir?: string;
|
|
29
|
+
/** #437: the catalog's directory `--require-approvals` reads (default: the project's `.jevitate/`). */
|
|
30
|
+
readonly catalogDir?: string;
|
|
28
31
|
/** Test seam: replace the runners. */
|
|
29
32
|
readonly runners?: Partial<CheckRunners>;
|
|
30
33
|
}
|
package/dist/check-cli.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { JEV_PROVIDER_FLAG_HELP, jevProviderArg } from "./cli-shared.js";
|
|
2
|
+
import { TAG_FLAG, TAG_HELP, collectTag, taggedAction } from "./run-tags-cli.js";
|
|
1
3
|
import { MissingCredentialError, formatUsageLine } from "@jevitate/ai-core";
|
|
2
4
|
import { ok, fail } from "./envelope.js";
|
|
3
5
|
import { emitEnvelope } from "./cli-output.js";
|
|
@@ -5,6 +7,8 @@ import { CheckAiSetupError, CheckPreflightError, runCheck } from "./check-api.js
|
|
|
5
7
|
import { SuiteError, loadSuite } from "./check-suite.js";
|
|
6
8
|
import { ReportInputError, defaultResultDirs } from "./report-api.js";
|
|
7
9
|
import { TargetConfigError, loadTargetsFile } from "./target-config.js";
|
|
10
|
+
import { ApprovalArgsError, parseAllowedChannels } from "./approval-provenance.js";
|
|
11
|
+
import { resolveCatalogDir } from "./catalog-api.js";
|
|
8
12
|
/** #210: the envelope with --json; a refusal without it is an `error <CODE>: …` line (exit-codes.ts class). */
|
|
9
13
|
function emit(program, envelope, json, exitCode) {
|
|
10
14
|
emitEnvelope(program, envelope, { json, command: "check", ...(exitCode === undefined ? {} : { exitCode }) });
|
|
@@ -26,14 +30,22 @@ export function registerCheckCommand(program, deps, withLaunchFlags) {
|
|
|
26
30
|
.option("--json-out <path>", "JSON envelope path (default <out>/check.json)")
|
|
27
31
|
.option("--real", "use live Jev + OpenRouter gateways for goals and model-driven missions (requires keys)", false)
|
|
28
32
|
.option("--fake-ai", "use deterministic fake gateways (pipeline smoke only)", false)
|
|
33
|
+
.option("--jev-provider <provider>", JEV_PROVIDER_FLAG_HELP, jevProviderArg)
|
|
29
34
|
.option("--json", "emit the JSON envelope (default: a one-line summary per item, then the envelope path)")
|
|
30
|
-
.
|
|
35
|
+
.option(TAG_FLAG, TAG_HELP, collectTag, [])
|
|
36
|
+
.option("--require-approvals", "#437: also fail (an `approval` finding, exit 1, in JUnit + SARIF) when a promoted Journey or an approved persona/job has a missing or stale approval, or one made over a channel not allowed")
|
|
37
|
+
.option("--allow-channels <list>", "#437: with --require-approvals, the approval channels that pass (comma list of tty, non-interactive, mcp, ci; default tty)")
|
|
38
|
+
.action(taggedAction(program, "check", async function () {
|
|
31
39
|
const o = this.opts();
|
|
32
40
|
try {
|
|
41
|
+
if (o.allowChannels !== undefined && o.requireApprovals !== true)
|
|
42
|
+
throw new ApprovalArgsError("--allow-channels needs --require-approvals");
|
|
43
|
+
const allowedChannels = o.requireApprovals === true ? parseAllowedChannels(o.allowChannels) : undefined;
|
|
33
44
|
const suite = loadSuite(o.suite);
|
|
34
45
|
const real = o.real === true || (o.fakeAi !== true && suite.ai === "real");
|
|
35
46
|
const fakeAi = o.fakeAi === true || (o.real !== true && suite.ai === "fake");
|
|
36
47
|
const aiMode = real ? "real" : fakeAi ? "fake" : undefined;
|
|
48
|
+
const jevProvider = o.jevProvider;
|
|
37
49
|
const browser = deps.browserLaunch?.(this.opts());
|
|
38
50
|
const result = await runCheck({
|
|
39
51
|
suite,
|
|
@@ -51,10 +63,11 @@ export function registerCheckCommand(program, deps, withLaunchFlags) {
|
|
|
51
63
|
...(o.junit === undefined ? {} : { junitPath: o.junit }),
|
|
52
64
|
...(o.sarif === undefined ? {} : { sarifPath: o.sarif }),
|
|
53
65
|
...(o.jsonOut === undefined ? {} : { jsonPath: o.jsonOut }),
|
|
54
|
-
...(aiMode === undefined ? {} : { aiMode, gateways: () => deps.buildGateways({ real, fakeAi }) }),
|
|
66
|
+
...(aiMode === undefined ? {} : { aiMode, gateways: () => deps.buildGateways({ real, fakeAi, jevProvider }) }),
|
|
55
67
|
...(deps.browserPortFactory === undefined ? {} : { browserPortFactory: deps.browserPortFactory }),
|
|
56
68
|
...(browser === undefined ? {} : { browser }),
|
|
57
69
|
...(deps.runners === undefined ? {} : { runners: deps.runners }),
|
|
70
|
+
...(allowedChannels === undefined ? {} : { requireApprovals: { allowedChannels, catalogDir: resolveCatalogDir(deps.catalogDir) } }),
|
|
58
71
|
});
|
|
59
72
|
if (o.json)
|
|
60
73
|
emit(program, ok(result), true, result.exitCode);
|
|
@@ -94,7 +107,8 @@ export function registerCheckCommand(program, deps, withLaunchFlags) {
|
|
|
94
107
|
err instanceof CheckPreflightError ||
|
|
95
108
|
err instanceof CheckAiSetupError ||
|
|
96
109
|
err instanceof ReportInputError ||
|
|
97
|
-
err instanceof TargetConfigError
|
|
110
|
+
err instanceof TargetConfigError ||
|
|
111
|
+
err instanceof ApprovalArgsError) {
|
|
98
112
|
emit(program, fail(err.code, err.message), o.json === true);
|
|
99
113
|
}
|
|
100
114
|
else if (err instanceof MissingCredentialError || (err instanceof Error && err.name === "GatewaySelectionError")) {
|
|
@@ -104,6 +118,6 @@ export function registerCheckCommand(program, deps, withLaunchFlags) {
|
|
|
104
118
|
emit(program, fail("E_CHECK", err instanceof Error ? err.message : String(err)), o.json === true);
|
|
105
119
|
}
|
|
106
120
|
}
|
|
107
|
-
});
|
|
121
|
+
}));
|
|
108
122
|
}
|
|
109
123
|
//# sourceMappingURL=check-cli.js.map
|
package/dist/check-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-cli.js","sourceRoot":"","sources":["../src/check-cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check-cli.js","sourceRoot":"","sources":["../src/check-cli.ts"],"names":[],"mappings":"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"}
|