@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journey-verify.js","sourceRoot":"","sources":["../src/journey-verify.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"journey-verify.js","sourceRoot":"","sources":["../src/journey-verify.ts"],"names":[],"mappings":"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"}
|
package/dist/key-report.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CredentialKey, type CredentialStore, type Feature, type KeyVerdict, type VerifyFetch } from "@jevitate/ai-core";
|
|
1
|
+
import { type CredentialKey, type CredentialStore, type Feature, type JevProvider, type KeyVerdict, type VerifyFetch } from "@jevitate/ai-core";
|
|
2
2
|
/**
|
|
3
3
|
* Key provenance + live verification for `init`, `ai status` and `ai setup` (#268, #291). Names,
|
|
4
4
|
* providers, sources and verdicts only — no function here returns, prints or logs a key value.
|
|
@@ -27,19 +27,34 @@ export interface KeyVerificationReport {
|
|
|
27
27
|
}
|
|
28
28
|
/** `~/.jevitate/credentials.json` — the file path with the home directory abbreviated. */
|
|
29
29
|
export declare function displayCredentialsPath(): string;
|
|
30
|
-
|
|
30
|
+
/**
|
|
31
|
+
* #429: which Jev route judgment will use (`--json`: `judgment.route`, additive) — the provider,
|
|
32
|
+
* the key it authenticates with, the model it asks for, and why (`override` = `--jev-provider` /
|
|
33
|
+
* `JEVITATE_JEV_PROVIDER`; `precedence` = the TypeSafe key wins when both are set).
|
|
34
|
+
*/
|
|
35
|
+
export interface JevRouteReport {
|
|
36
|
+
readonly provider: JevProvider;
|
|
37
|
+
readonly key: CredentialKey;
|
|
38
|
+
readonly model: string;
|
|
39
|
+
readonly reason: "override" | "precedence";
|
|
40
|
+
}
|
|
41
|
+
/** The judgment route, or null when no key resolves one (names only — never a value). */
|
|
42
|
+
export declare function jevRouteReport(store: CredentialStore, env: Record<string, string | undefined>, jevProvider?: JevProvider): JevRouteReport | null;
|
|
43
|
+
/** `via OpenRouter (model ~typesafe/jev-latest; no TypeSafe key set)` — the route and why (names only). */
|
|
44
|
+
export declare function describeJevRoute(route: JevRouteReport): string;
|
|
45
|
+
export declare function keySources(feature: Feature, env: Record<string, string | undefined>, localConfig: Partial<Record<CredentialKey, string>>, jevProvider?: JevProvider): KeySourceReport[];
|
|
31
46
|
/** The default verifier: one HTTPS GET with the key in the Authorization header. */
|
|
32
47
|
export declare const realVerifyFetch: VerifyFetch;
|
|
33
48
|
/** Verifies every required key of `feature` (the effective value: env wins). `known` skips a re-check. */
|
|
34
|
-
export declare function verifyFeatureKeys(feature: Feature, store: CredentialStore, fetchFn: VerifyFetch, known?: ReadonlyMap<CredentialKey, KeyVerdict
|
|
49
|
+
export declare function verifyFeatureKeys(feature: Feature, store: CredentialStore, fetchFn: VerifyFetch, known?: ReadonlyMap<CredentialKey, KeyVerdict>, jevProvider?: JevProvider): Promise<KeyVerificationReport[]>;
|
|
35
50
|
/** `OPENROUTER_API_KEY (OpenRouter), from env OPENROUTER_API_KEY` / `…, from ~/.jevitate/credentials.json`. */
|
|
36
51
|
export declare function describeSource(s: KeySourceReport): string;
|
|
37
52
|
/** One verification as a human phrase (never a value). */
|
|
38
53
|
export declare function describeVerification(v: KeyVerificationReport): string;
|
|
39
54
|
/** A feature's key state without its name: `ready — <sources>: <verdicts>` or `missing <names> — …`. */
|
|
40
|
-
export declare function featureKeysBody(feature: Feature, sources: readonly KeySourceReport[], verification: readonly KeyVerificationReport[] | undefined): string;
|
|
55
|
+
export declare function featureKeysBody(feature: Feature, sources: readonly KeySourceReport[], verification: readonly KeyVerificationReport[] | undefined, route?: JevRouteReport | null): string;
|
|
41
56
|
/** A feature's whole key line (`ai status`): `generation: ready — OPENROUTER_API_KEY (OpenRouter), from env …: valid`. */
|
|
42
|
-
export declare function describeFeatureKeys(feature: Feature, sources: readonly KeySourceReport[], verification: readonly KeyVerificationReport[] | undefined): string;
|
|
57
|
+
export declare function describeFeatureKeys(feature: Feature, sources: readonly KeySourceReport[], verification: readonly KeyVerificationReport[] | undefined, route?: JevRouteReport | null): string;
|
|
43
58
|
/** Any verification that is not a pass (invalid or unreachable). */
|
|
44
59
|
export declare function verificationProblems(verification: readonly KeyVerificationReport[]): {
|
|
45
60
|
invalid: KeyVerificationReport[];
|
package/dist/key-report.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { homedir } from "node:os";
|
|
2
|
-
import {
|
|
2
|
+
import { KEY_PROVIDERS, MissingCredentialError, credentialProvenance, describeVerdict, envCredentialStore, featureKeys, jevRouteModel, looksLikeOtherKey, resolveJevRoute, verifyKey, } from "@jevitate/ai-core";
|
|
3
3
|
import { credentialsFilePath } from "./credentials-file.js";
|
|
4
4
|
/** `~/.jevitate/credentials.json` — the file path with the home directory abbreviated. */
|
|
5
5
|
export function displayCredentialsPath() {
|
|
@@ -7,8 +7,25 @@ export function displayCredentialsPath() {
|
|
|
7
7
|
const home = homedir();
|
|
8
8
|
return home !== "" && p.startsWith(home) ? `~${p.slice(home.length)}` : p;
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
/** The judgment route, or null when no key resolves one (names only — never a value). */
|
|
11
|
+
export function jevRouteReport(store, env, jevProvider) {
|
|
12
|
+
try {
|
|
13
|
+
const r = resolveJevRoute(store, jevProvider);
|
|
14
|
+
return { provider: r.provider, key: r.key, model: jevRouteModel(r.provider, env), reason: r.reason };
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
if (e instanceof MissingCredentialError)
|
|
18
|
+
return null;
|
|
19
|
+
throw e;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/** `via OpenRouter (model ~typesafe/jev-latest; no TypeSafe key set)` — the route and why (names only). */
|
|
23
|
+
export function describeJevRoute(route) {
|
|
24
|
+
const why = route.reason === "override" ? "chosen by --jev-provider / JEVITATE_JEV_PROVIDER" : route.provider === "typesafe" ? "the TypeSafe key is preferred" : "no TypeSafe key set";
|
|
25
|
+
return `via ${route.provider === "openrouter" ? "OpenRouter" : "TypeSafe"} (model ${route.model}; ${why})`;
|
|
26
|
+
}
|
|
27
|
+
export function keySources(feature, env, localConfig, jevProvider) {
|
|
28
|
+
return featureKeys(feature, envCredentialStore(env, localConfig), jevProvider).map((key) => {
|
|
12
29
|
const p = credentialProvenance(key, env, localConfig);
|
|
13
30
|
const base = { key, provider: p.provider };
|
|
14
31
|
if (p.source.kind === "env")
|
|
@@ -26,9 +43,9 @@ export const realVerifyFetch = async (url, init) => {
|
|
|
26
43
|
return { status: res.status };
|
|
27
44
|
};
|
|
28
45
|
/** Verifies every required key of `feature` (the effective value: env wins). `known` skips a re-check. */
|
|
29
|
-
export async function verifyFeatureKeys(feature, store, fetchFn, known = new Map()) {
|
|
46
|
+
export async function verifyFeatureKeys(feature, store, fetchFn, known = new Map(), jevProvider) {
|
|
30
47
|
const out = [];
|
|
31
|
-
for (const key of
|
|
48
|
+
for (const key of featureKeys(feature, store, jevProvider)) {
|
|
32
49
|
const value = store.read(key);
|
|
33
50
|
const verdict = value === undefined ? { status: "missing" } : (known.get(key) ?? (await verifyKey(key, value, fetchFn)));
|
|
34
51
|
const other = value === undefined || verdict.status === "valid" ? null : looksLikeOtherKey(key, value);
|
|
@@ -67,8 +84,13 @@ export function describeVerification(v) {
|
|
|
67
84
|
return `${describeVerdict(verdictOf(v))}${misplaced}`;
|
|
68
85
|
}
|
|
69
86
|
/** A feature's key state without its name: `ready — <sources>: <verdicts>` or `missing <names> — …`. */
|
|
70
|
-
export function featureKeysBody(feature, sources, verification) {
|
|
87
|
+
export function featureKeysBody(feature, sources, verification, route) {
|
|
71
88
|
const missing = sources.filter((s) => s.source === "missing");
|
|
89
|
+
if (feature === "judgment" && missing.length > 1) {
|
|
90
|
+
// #429: judgment is satisfied by EITHER key.
|
|
91
|
+
return (`missing ${missing.map((s) => `${s.key} (${s.provider})`).join(" or ")} — set either in the environment, or run ` +
|
|
92
|
+
`\`jevitate ai setup judgment\` (TypeSafe key) / \`jevitate ai setup judgment --jev-provider openrouter\` (OpenRouter key)`);
|
|
93
|
+
}
|
|
72
94
|
if (missing.length > 0) {
|
|
73
95
|
return `missing ${missing.map((s) => `${s.key} (${s.provider})`).join(", ")} — set it in the environment or run \`jevitate ai setup ${feature}\``;
|
|
74
96
|
}
|
|
@@ -79,11 +101,12 @@ export function featureKeysBody(feature, sources, verification) {
|
|
|
79
101
|
const bad = verification?.filter((v) => v.status === "invalid") ?? [];
|
|
80
102
|
const hint = bad.length > 0 ? ` — replace it: \`jevitate ai setup ${feature} --replace\`` : "";
|
|
81
103
|
const state = bad.length > 0 ? "NOT ready" : verification?.some((v) => v.status === "unreachable") ? "configured (unverified)" : "ready";
|
|
82
|
-
|
|
104
|
+
const via = route === undefined || route === null ? "" : ` ${describeJevRoute(route)}`;
|
|
105
|
+
return `${state}${via} — ${parts.join("; ")}${hint}`;
|
|
83
106
|
}
|
|
84
107
|
/** A feature's whole key line (`ai status`): `generation: ready — OPENROUTER_API_KEY (OpenRouter), from env …: valid`. */
|
|
85
|
-
export function describeFeatureKeys(feature, sources, verification) {
|
|
86
|
-
return `${feature}: ${featureKeysBody(feature, sources, verification)}`;
|
|
108
|
+
export function describeFeatureKeys(feature, sources, verification, route) {
|
|
109
|
+
return `${feature}: ${featureKeysBody(feature, sources, verification, route)}`;
|
|
87
110
|
}
|
|
88
111
|
/** Any verification that is not a pass (invalid or unreachable). */
|
|
89
112
|
export function verificationProblems(verification) {
|
package/dist/key-report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-report.js","sourceRoot":"","sources":["../src/key-report.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"key-report.js","sourceRoot":"","sources":["../src/key-report.ts"],"names":[],"mappings":"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"}
|
package/dist/kill-signal.js
CHANGED
|
@@ -9,6 +9,7 @@ import { resultPathFor, writeMissionResult } from "./mission-journal.js";
|
|
|
9
9
|
import { transcriptPathFor } from "./transcript-file.js";
|
|
10
10
|
import { writeKillSnapshot } from "./storage-state-snapshot.js";
|
|
11
11
|
import { listVideos } from "./browser-run-options.js";
|
|
12
|
+
import { currentRunMetadata, stampRunMetadata } from "./run-metadata.js";
|
|
12
13
|
/** 128 + the signal number, the shell convention. SIGHUP (#326) also stands for "the parent died". */
|
|
13
14
|
const SIGNAL_EXIT_CODE = { SIGHUP: 129, SIGINT: 130, SIGTERM: 143 };
|
|
14
15
|
/** Reads whatever the journal has already flushed; a run killed before its first step is 0 steps. */
|
|
@@ -71,6 +72,8 @@ const realDeps = {
|
|
|
71
72
|
let installed = false;
|
|
72
73
|
/** Every armed mission, in arming order, with the kill listener scoped to the context that ran it. */
|
|
73
74
|
const armed = new Map();
|
|
75
|
+
/** #426: each armed mission's run metadata (tags, persona), captured at arm time — a signal handler runs outside its scope. */
|
|
76
|
+
const armedMeta = new Map();
|
|
74
77
|
let terminating = false;
|
|
75
78
|
let output = "none";
|
|
76
79
|
let summary;
|
|
@@ -111,13 +114,14 @@ function partialResult(mission, signal, code, deps) {
|
|
|
111
114
|
outcome: "inconclusive",
|
|
112
115
|
missionOutcome: "inconclusive",
|
|
113
116
|
// #217: a goal run's own ending travels as `goalOutcome` (a kill is the shared `inconclusive`).
|
|
114
|
-
...(mission.strategy === "goal" ? { goalOutcome: "inconclusive" } : {}),
|
|
117
|
+
...(mission.strategy === "goal" ? { goalOutcome: "inconclusive", goalReason: "broken-run" } : {}),
|
|
115
118
|
reason: `interrupted by ${signal} after ${steps} step${steps === 1 ? "" : "s"}`,
|
|
116
119
|
stop: "terminated",
|
|
117
120
|
signal,
|
|
118
121
|
steps,
|
|
119
122
|
exitCode: code,
|
|
120
123
|
defects: [],
|
|
124
|
+
defectOutcome: { status: "none", byKind: {} },
|
|
121
125
|
hangs: [],
|
|
122
126
|
recordingPaths: [mission.recordingPath],
|
|
123
127
|
...(videoPaths === undefined ? {} : { videoPaths }),
|
|
@@ -157,7 +161,7 @@ function onKillSignal(signal, deps) {
|
|
|
157
161
|
let partial;
|
|
158
162
|
let resultPath;
|
|
159
163
|
try {
|
|
160
|
-
partial = partialResult(mission, signal, code, deps);
|
|
164
|
+
partial = stampRunMetadata(partialResult(mission, signal, code, deps), armedMeta.get(mission));
|
|
161
165
|
// #163: a killed run's per-call usage sidecar too (the calls it made before the signal).
|
|
162
166
|
const u = mission.usage;
|
|
163
167
|
const ledger = u?.calls === undefined ? undefined : { snapshot: () => u.snapshot(), calls: () => u.calls?.() ?? [] };
|
|
@@ -206,6 +210,7 @@ function onKillSignal(signal, deps) {
|
|
|
206
210
|
}
|
|
207
211
|
}
|
|
208
212
|
armed.clear();
|
|
213
|
+
armedMeta.clear();
|
|
209
214
|
// #220: the orchestrator's own partial aggregate — even when no mission was armed (killed between
|
|
210
215
|
// two runs of a multi-run) — written and printed synchronously, like everything above.
|
|
211
216
|
if (summary !== undefined) {
|
|
@@ -270,8 +275,10 @@ export function installMissionKillSwitch(deps = realDeps) {
|
|
|
270
275
|
export function armMissionKillSwitch(mission, deps = realDeps) {
|
|
271
276
|
install(deps);
|
|
272
277
|
armed.set(mission, scopedListener.getStore());
|
|
278
|
+
armedMeta.set(mission, currentRunMetadata());
|
|
273
279
|
return () => {
|
|
274
280
|
armed.delete(mission);
|
|
281
|
+
armedMeta.delete(mission);
|
|
275
282
|
};
|
|
276
283
|
}
|
|
277
284
|
/**
|
|
@@ -320,6 +327,7 @@ export function onMissionKilled(listener) {
|
|
|
320
327
|
export function __resetKillSwitchForTests() {
|
|
321
328
|
installed = false;
|
|
322
329
|
armed.clear();
|
|
330
|
+
armedMeta.clear();
|
|
323
331
|
terminating = false;
|
|
324
332
|
output = "none";
|
|
325
333
|
summary = undefined;
|
package/dist/kill-signal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kill-signal.js","sourceRoot":"","sources":["../src/kill-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGlD,OAAO,EAAE,KAAK,EAAE,6BAA6B,EAA+C,MAAM,kBAAkB,CAAC;AACrH,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAmB,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"kill-signal.js","sourceRoot":"","sources":["../src/kill-signal.ts"],"names":[],"mappings":"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"}
|
package/dist/load-cli.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TAG_FLAG, TAG_HELP, collectTag, taggedAction } from "./run-tags-cli.js";
|
|
1
2
|
import { existsSync } from "node:fs";
|
|
2
3
|
import { ok, fail } from "./envelope.js";
|
|
3
4
|
import { JourneyRequiresAuthError } from "./journey-api.js";
|
|
@@ -23,7 +24,8 @@ export function registerLoadCommands(program, deps) {
|
|
|
23
24
|
.option("--seed <n>", "master RNG seed", finiteNumberArg, 1)
|
|
24
25
|
.option("--storage-state <file>", "Playwright storageState JSON to start every actor's session authenticated (#118: required when the journey declares metadata.requiresAuth); must exist")
|
|
25
26
|
.option("--json", "emit a JSON envelope")
|
|
26
|
-
.
|
|
27
|
+
.option(TAG_FLAG, TAG_HELP, collectTag, [])
|
|
28
|
+
.action(taggedAction(program, "load run", async function (journeyId) {
|
|
27
29
|
const { dir, param, authorizedOrigin, concurrency, iterations, seed, storageState: storageStateFlag, json, env: envName, baseUrl, ...emulationFlags } = this.opts();
|
|
28
30
|
if (authorizedOrigin.length === 0) {
|
|
29
31
|
emitJson(program, fail("E_LOAD_RUN", "at least one --authorized-origin is required (refusing to load-test with an empty allowlist)"));
|
|
@@ -92,6 +94,6 @@ export function registerLoadCommands(program, deps) {
|
|
|
92
94
|
emitJson(program, fail("E_LOAD_RUN", String(err instanceof Error ? err.message : err)));
|
|
93
95
|
}
|
|
94
96
|
}
|
|
95
|
-
});
|
|
97
|
+
}));
|
|
96
98
|
}
|
|
97
99
|
//# sourceMappingURL=load-cli.js.map
|
package/dist/load-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-cli.js","sourceRoot":"","sources":["../src/load-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,oBAAoB,EAA0D,MAAM,mBAAmB,CAAC;AAC3J,OAAO,EAEL,aAAa,EACb,kBAAkB,EAElB,sBAAsB,EACtB,aAAa,EAEb,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,QAAQ,EACR,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,qCAAqC;AACrC,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,IAAa;IAClE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC;IAE1F,oBAAoB,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;SAC9F,MAAM,CAAC,cAAc,EAAE,kGAAkG,CAAC;SAC1H,MAAM,CAAC,cAAc,EAAE,iCAAiC,EAAE,YAAY,EAAE,EAA4B,CAAC;QACtG,yEAAyE;QACzE,0EAA0E;QAC1E,yEAAyE;QACzE,2EAA2E;SAC1E,MAAM,CACL,8BAA8B,EAC9B,kFAAkF,EAClF,CAAC,CAAC,EAAE,IAAc,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EACnC,EAAc,CACf;SACA,MAAM,CAAC,mBAAmB,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC;SAC3D,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,cAAc,EAAE,CAAC,CAAC;SACrE,MAAM,CAAC,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC,CAAC;SAC3D,MAAM,CACL,wBAAwB,EACxB,wJAAwJ,CACzJ;SACA,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC;SACxC,MAAM,CAAC,KAAK,WAA0B,SAAiB;
|
|
1
|
+
{"version":3,"file":"load-cli.js","sourceRoot":"","sources":["../src/load-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { LogLevel, LogLine } from "./log-lines.js";
|
|
2
|
+
import { type LayoutDeps } from "./project-dir.js";
|
|
3
|
+
/**
|
|
4
|
+
* #422 — what a backend log line that matched `--log-defect` MEANS for this project: a product
|
|
5
|
+
* `defect`, an `environment` fault (a placeholder API key, an unconfigured provider, a degraded
|
|
6
|
+
* health check — fix it in setup, not in the product), or an `expected-validation` fault (a 4xx
|
|
7
|
+
* validation error the mission's own input caused). Only `defect` lines become `server-log` defects
|
|
8
|
+
* and gate the run; `environment` ones go to the result's `environmentFaults`, `expected-validation`
|
|
9
|
+
* ones to `expectedValidation` — recorded, never failing the run.
|
|
10
|
+
*
|
|
11
|
+
* Rules come from the project's committed `.jevitate/log-classes.json` FIRST, then the built-in
|
|
12
|
+
* defaults below (a project rule with a default's `id` replaces it). The first rule that matches a
|
|
13
|
+
* line wins; a line no rule matches stays a defect (the `--log-defect` oracle's own verdict). The
|
|
14
|
+
* file is validated strictly — an unknown key, class or level, a bad regex, a duplicate id or a rule
|
|
15
|
+
* that matches nothing in particular is refused (fail closed) before any browser opens.
|
|
16
|
+
*
|
|
17
|
+
* { "version": 1, "rules": [
|
|
18
|
+
* { "id": "stripe-test-mode", "class": "environment", "message": "/No such customer.*test mode/i" },
|
|
19
|
+
* { "id": "signup-422", "class": "expected-validation", "source": "docker:api", "level": "warn",
|
|
20
|
+
* "message": "validation failed" } ] }
|
|
21
|
+
*
|
|
22
|
+
* `message` is matched against the line's parsed message, `source` against its `--log-source` spec;
|
|
23
|
+
* each is a `/pattern/flags` regex or a bare pattern (compiled as-is, case-sensitive). `level` is
|
|
24
|
+
* one level name (`error`, `warn`, `info`, `debug`, `unknown`), matched exactly.
|
|
25
|
+
*/
|
|
26
|
+
export declare const LOG_CLASSES_FILE = "log-classes.json";
|
|
27
|
+
export declare const LOG_CLASSES: readonly ["environment", "expected-validation", "defect"];
|
|
28
|
+
export type LogClass = (typeof LOG_CLASSES)[number];
|
|
29
|
+
export interface LogClassRule {
|
|
30
|
+
readonly id: string;
|
|
31
|
+
readonly class: LogClass;
|
|
32
|
+
readonly message?: RegExp;
|
|
33
|
+
readonly source?: RegExp;
|
|
34
|
+
readonly level?: LogLevel;
|
|
35
|
+
}
|
|
36
|
+
/** One classified cause on a result (`environmentFaults.causes[]`, `expectedValidation[]`). */
|
|
37
|
+
export interface LogClassCause {
|
|
38
|
+
readonly ruleId: string;
|
|
39
|
+
/** The `--log-source` spec the first matching line came from. */
|
|
40
|
+
readonly source: string;
|
|
41
|
+
/** The first matching line's message, redacted with the run's secrets. */
|
|
42
|
+
readonly message: string;
|
|
43
|
+
readonly count: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The built-in rules (#422): a missing or invalid credential and a degraded health check are the
|
|
47
|
+
* environment's fault unless the project's file says otherwise (same `id` replaces one; a project
|
|
48
|
+
* rule matching the same line first wins anyway).
|
|
49
|
+
*/
|
|
50
|
+
export declare const DEFAULT_LOG_CLASS_RULES: readonly LogClassRule[];
|
|
51
|
+
/** `.jevitate/log-classes.json` is not what it must be — refused before any browser opens. */
|
|
52
|
+
export declare class LogClassesError extends Error {
|
|
53
|
+
readonly code: "E_LOG_CLASSES";
|
|
54
|
+
constructor(message: string);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Validates a parsed `log-classes.json` (strict: fail closed on anything unexpected) and returns
|
|
58
|
+
* its rules, in file order. `file` names the file in every error.
|
|
59
|
+
*/
|
|
60
|
+
export declare function parseLogClasses(raw: unknown, file: string): LogClassRule[];
|
|
61
|
+
/** Project rules first, then every default the project did not replace by `id`. */
|
|
62
|
+
export declare function withDefaultRules(project: readonly LogClassRule[]): LogClassRule[];
|
|
63
|
+
/** Reads and validates one classes file. A missing file is "no project rules". */
|
|
64
|
+
export declare function readLogClassesFile(path: string): LogClassRule[];
|
|
65
|
+
/** The project's `.jevitate/log-classes.json` (found as `.jevitate/` is), or `null` outside a project. */
|
|
66
|
+
export declare function logClassesFilePath(deps?: LayoutDeps): string | null;
|
|
67
|
+
/**
|
|
68
|
+
* The rules a run classifies its `--log-defect` lines with: the project's file (when there is one,
|
|
69
|
+
* validated — throws `LogClassesError`) ahead of the built-in defaults.
|
|
70
|
+
*/
|
|
71
|
+
export declare function loadLogClassRules(deps?: LayoutDeps): LogClassRule[];
|
|
72
|
+
/** The first rule matching a line, or `undefined` (the line keeps the oracle's own verdict: a defect). */
|
|
73
|
+
export declare function classifyLogLine(rules: readonly LogClassRule[], line: Pick<LogLine, "message" | "source" | "level">): LogClassRule | undefined;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { findProjectDir } from "./project-dir.js";
|
|
4
|
+
/**
|
|
5
|
+
* #422 — what a backend log line that matched `--log-defect` MEANS for this project: a product
|
|
6
|
+
* `defect`, an `environment` fault (a placeholder API key, an unconfigured provider, a degraded
|
|
7
|
+
* health check — fix it in setup, not in the product), or an `expected-validation` fault (a 4xx
|
|
8
|
+
* validation error the mission's own input caused). Only `defect` lines become `server-log` defects
|
|
9
|
+
* and gate the run; `environment` ones go to the result's `environmentFaults`, `expected-validation`
|
|
10
|
+
* ones to `expectedValidation` — recorded, never failing the run.
|
|
11
|
+
*
|
|
12
|
+
* Rules come from the project's committed `.jevitate/log-classes.json` FIRST, then the built-in
|
|
13
|
+
* defaults below (a project rule with a default's `id` replaces it). The first rule that matches a
|
|
14
|
+
* line wins; a line no rule matches stays a defect (the `--log-defect` oracle's own verdict). The
|
|
15
|
+
* file is validated strictly — an unknown key, class or level, a bad regex, a duplicate id or a rule
|
|
16
|
+
* that matches nothing in particular is refused (fail closed) before any browser opens.
|
|
17
|
+
*
|
|
18
|
+
* { "version": 1, "rules": [
|
|
19
|
+
* { "id": "stripe-test-mode", "class": "environment", "message": "/No such customer.*test mode/i" },
|
|
20
|
+
* { "id": "signup-422", "class": "expected-validation", "source": "docker:api", "level": "warn",
|
|
21
|
+
* "message": "validation failed" } ] }
|
|
22
|
+
*
|
|
23
|
+
* `message` is matched against the line's parsed message, `source` against its `--log-source` spec;
|
|
24
|
+
* each is a `/pattern/flags` regex or a bare pattern (compiled as-is, case-sensitive). `level` is
|
|
25
|
+
* one level name (`error`, `warn`, `info`, `debug`, `unknown`), matched exactly.
|
|
26
|
+
*/
|
|
27
|
+
export const LOG_CLASSES_FILE = "log-classes.json";
|
|
28
|
+
export const LOG_CLASSES = ["environment", "expected-validation", "defect"];
|
|
29
|
+
const LEVELS = ["error", "warn", "info", "debug", "unknown"];
|
|
30
|
+
const RULE_KEYS = new Set(["id", "class", "message", "source", "level"]);
|
|
31
|
+
const MAX_PATTERN_LENGTH = 500;
|
|
32
|
+
const REGEX_SPEC = /^\/(.*)\/([a-z]*)$/s;
|
|
33
|
+
/**
|
|
34
|
+
* The built-in rules (#422): a missing or invalid credential and a degraded health check are the
|
|
35
|
+
* environment's fault unless the project's file says otherwise (same `id` replaces one; a project
|
|
36
|
+
* rule matching the same line first wins anyway).
|
|
37
|
+
*/
|
|
38
|
+
export const DEFAULT_LOG_CLASS_RULES = [
|
|
39
|
+
{
|
|
40
|
+
id: "default:credential",
|
|
41
|
+
class: "environment",
|
|
42
|
+
message: /incorrect api key|invalid api key|unauthorized.*(api|key)|missing (api )?key|not configured/i,
|
|
43
|
+
},
|
|
44
|
+
{ id: "default:health-check-degraded", class: "environment", message: /health.?check.*(degraded|unhealthy)/i },
|
|
45
|
+
];
|
|
46
|
+
/** `.jevitate/log-classes.json` is not what it must be — refused before any browser opens. */
|
|
47
|
+
export class LogClassesError extends Error {
|
|
48
|
+
code = "E_LOG_CLASSES";
|
|
49
|
+
constructor(message) {
|
|
50
|
+
super(message);
|
|
51
|
+
this.name = "LogClassesError";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function isRecord(v) {
|
|
55
|
+
return v !== null && typeof v === "object" && !Array.isArray(v);
|
|
56
|
+
}
|
|
57
|
+
function compile(value, where) {
|
|
58
|
+
if (typeof value !== "string" || value === "")
|
|
59
|
+
throw new LogClassesError(`${where} must be a non-empty regex string`);
|
|
60
|
+
const m = REGEX_SPEC.exec(value);
|
|
61
|
+
const pattern = m === null ? value : (m[1] ?? "");
|
|
62
|
+
const flags = m === null ? "" : (m[2] ?? "");
|
|
63
|
+
if (/[gy]/.test(flags))
|
|
64
|
+
throw new LogClassesError(`${where}: the g and y flags are not allowed (a rule is tested line by line)`);
|
|
65
|
+
if (pattern.length > MAX_PATTERN_LENGTH)
|
|
66
|
+
throw new LogClassesError(`${where} is too long (max ${MAX_PATTERN_LENGTH} chars)`);
|
|
67
|
+
try {
|
|
68
|
+
return new RegExp(pattern, flags);
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
throw new LogClassesError(`${where} is not a valid regex ${JSON.stringify(value)}: ${e instanceof Error ? e.message : String(e)}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Validates a parsed `log-classes.json` (strict: fail closed on anything unexpected) and returns
|
|
76
|
+
* its rules, in file order. `file` names the file in every error.
|
|
77
|
+
*/
|
|
78
|
+
export function parseLogClasses(raw, file) {
|
|
79
|
+
if (!isRecord(raw))
|
|
80
|
+
throw new LogClassesError(`${file}: must be a JSON object { "version": 1, "rules": [...] }`);
|
|
81
|
+
for (const k of Object.keys(raw)) {
|
|
82
|
+
if (k !== "version" && k !== "rules")
|
|
83
|
+
throw new LogClassesError(`${file}: unknown key "${k}" (allowed: version, rules)`);
|
|
84
|
+
}
|
|
85
|
+
if (raw.version !== 1)
|
|
86
|
+
throw new LogClassesError(`${file}: "version" must be 1`);
|
|
87
|
+
if (!Array.isArray(raw.rules))
|
|
88
|
+
throw new LogClassesError(`${file}: "rules" must be an array`);
|
|
89
|
+
const seen = new Set();
|
|
90
|
+
return raw.rules.map((r, i) => {
|
|
91
|
+
const at = `${file}: rules[${i}]`;
|
|
92
|
+
if (!isRecord(r))
|
|
93
|
+
throw new LogClassesError(`${at} must be an object`);
|
|
94
|
+
const id = r.id;
|
|
95
|
+
if (typeof id !== "string" || id.trim() === "")
|
|
96
|
+
throw new LogClassesError(`${at}: "id" must be a non-empty string`);
|
|
97
|
+
const where = `${file}: rule "${id}"`;
|
|
98
|
+
if (seen.has(id))
|
|
99
|
+
throw new LogClassesError(`${where}: duplicate id`);
|
|
100
|
+
seen.add(id);
|
|
101
|
+
for (const k of Object.keys(r)) {
|
|
102
|
+
if (!RULE_KEYS.has(k))
|
|
103
|
+
throw new LogClassesError(`${where}: unknown key "${k}" (allowed: ${[...RULE_KEYS].join(", ")})`);
|
|
104
|
+
}
|
|
105
|
+
if (typeof r.class !== "string" || !LOG_CLASSES.includes(r.class)) {
|
|
106
|
+
throw new LogClassesError(`${where}: unknown class ${JSON.stringify(r.class)} (allowed: ${LOG_CLASSES.join(", ")})`);
|
|
107
|
+
}
|
|
108
|
+
if (r.message === undefined && r.source === undefined && r.level === undefined) {
|
|
109
|
+
throw new LogClassesError(`${where}: needs at least one of "message", "source", "level" — a rule without one would classify every line`);
|
|
110
|
+
}
|
|
111
|
+
if (r.level !== undefined && (typeof r.level !== "string" || !LEVELS.includes(r.level))) {
|
|
112
|
+
throw new LogClassesError(`${where}: unknown level ${JSON.stringify(r.level)} (allowed: ${LEVELS.join(", ")})`);
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
id,
|
|
116
|
+
class: r.class,
|
|
117
|
+
...(r.message === undefined ? {} : { message: compile(r.message, `${where}: "message"`) }),
|
|
118
|
+
...(r.source === undefined ? {} : { source: compile(r.source, `${where}: "source"`) }),
|
|
119
|
+
...(r.level === undefined ? {} : { level: r.level }),
|
|
120
|
+
};
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/** Project rules first, then every default the project did not replace by `id`. */
|
|
124
|
+
export function withDefaultRules(project) {
|
|
125
|
+
const ids = new Set(project.map((r) => r.id));
|
|
126
|
+
return [...project, ...DEFAULT_LOG_CLASS_RULES.filter((d) => !ids.has(d.id))];
|
|
127
|
+
}
|
|
128
|
+
/** Reads and validates one classes file. A missing file is "no project rules". */
|
|
129
|
+
export function readLogClassesFile(path) {
|
|
130
|
+
let text;
|
|
131
|
+
try {
|
|
132
|
+
text = readFileSync(path, "utf8");
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
if (isRecord(e) && e.code === "ENOENT")
|
|
136
|
+
return [];
|
|
137
|
+
throw new LogClassesError(`cannot read ${path}: ${e instanceof Error ? e.message : String(e)}`);
|
|
138
|
+
}
|
|
139
|
+
let parsed;
|
|
140
|
+
try {
|
|
141
|
+
parsed = JSON.parse(text);
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
throw new LogClassesError(`${path} is not valid JSON: ${e instanceof Error ? e.message : String(e)}`);
|
|
145
|
+
}
|
|
146
|
+
return parseLogClasses(parsed, path);
|
|
147
|
+
}
|
|
148
|
+
/** The project's `.jevitate/log-classes.json` (found as `.jevitate/` is), or `null` outside a project. */
|
|
149
|
+
export function logClassesFilePath(deps = {}) {
|
|
150
|
+
const dir = findProjectDir(deps);
|
|
151
|
+
return dir === null ? null : join(dir, LOG_CLASSES_FILE);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* The rules a run classifies its `--log-defect` lines with: the project's file (when there is one,
|
|
155
|
+
* validated — throws `LogClassesError`) ahead of the built-in defaults.
|
|
156
|
+
*/
|
|
157
|
+
export function loadLogClassRules(deps = {}) {
|
|
158
|
+
const path = logClassesFilePath(deps);
|
|
159
|
+
return withDefaultRules(path === null ? [] : readLogClassesFile(path));
|
|
160
|
+
}
|
|
161
|
+
/** The first rule matching a line, or `undefined` (the line keeps the oracle's own verdict: a defect). */
|
|
162
|
+
export function classifyLogLine(rules, line) {
|
|
163
|
+
return rules.find((r) => (r.level === undefined || r.level === line.level) &&
|
|
164
|
+
(r.source === undefined || r.source.test(line.source)) &&
|
|
165
|
+
(r.message === undefined || r.message.test(line.message)));
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=log-classes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-classes.js","sourceRoot":"","sources":["../src/log-classes.ts"],"names":[],"mappings":"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"}
|