@jevitate/cli 0.8.0 → 0.10.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/anchor-baselines.d.ts +26 -0
- package/dist/anchor-baselines.js +25 -0
- package/dist/anchor-baselines.js.map +1 -0
- package/dist/approval-provenance.d.ts +48 -2
- package/dist/approval-provenance.js +110 -6
- package/dist/approval-provenance.js.map +1 -1
- package/dist/bin.js +25111 -17835
- package/dist/browser-cli.d.ts +10 -0
- package/dist/browser-cli.js +50 -0
- package/dist/browser-cli.js.map +1 -0
- package/dist/build-info.generated.js +2 -2
- package/dist/catalog-analysis.js +14 -0
- package/dist/catalog-analysis.js.map +1 -1
- package/dist/catalog-api.js +12 -4
- package/dist/catalog-api.js.map +1 -1
- package/dist/catalog-bundle-api.d.ts +73 -0
- package/dist/catalog-bundle-api.js +206 -0
- package/dist/catalog-bundle-api.js.map +1 -0
- package/dist/catalog-bundle-findings.d.ts +54 -0
- package/dist/catalog-bundle-findings.js +252 -0
- package/dist/catalog-bundle-findings.js.map +1 -0
- package/dist/catalog-bundle.d.ts +192 -0
- package/dist/catalog-bundle.js +578 -0
- package/dist/catalog-bundle.js.map +1 -0
- package/dist/catalog-cli.d.ts +6 -0
- package/dist/catalog-cli.js +180 -5
- package/dist/catalog-cli.js.map +1 -1
- package/dist/catalog-refs.d.ts +42 -0
- package/dist/catalog-refs.js +188 -0
- package/dist/catalog-refs.js.map +1 -0
- package/dist/catalog-review.d.ts +3 -1
- package/dist/catalog-review.js +61 -0
- package/dist/catalog-review.js.map +1 -1
- package/dist/catalog.d.ts +27 -3
- package/dist/catalog.js +46 -2
- package/dist/catalog.js.map +1 -1
- package/dist/change-context.d.ts +44 -0
- package/dist/change-context.js +203 -0
- package/dist/change-context.js.map +1 -0
- package/dist/check-api.d.ts +1 -1
- package/dist/check-api.js +206 -16
- package/dist/check-api.js.map +1 -1
- package/dist/check-cli.d.ts +2 -1
- package/dist/check-cli.js +117 -8
- package/dist/check-cli.js.map +1 -1
- package/dist/check-execute.d.ts +28 -1
- package/dist/check-execute.js +110 -27
- package/dist/check-execute.js.map +1 -1
- package/dist/check-plan.d.ts +14 -0
- package/dist/check-plan.js +24 -1
- package/dist/check-plan.js.map +1 -1
- package/dist/check-types.d.ts +137 -5
- package/dist/check-types.js +8 -0
- package/dist/check-types.js.map +1 -1
- package/dist/cli-output.d.ts +6 -0
- package/dist/cli-output.js +26 -1
- package/dist/cli-output.js.map +1 -1
- package/dist/cli-shared.d.ts +10 -0
- package/dist/cli-shared.js +0 -4
- package/dist/cli-shared.js.map +1 -1
- package/dist/exit-codes.d.ts +6 -3
- package/dist/exit-codes.js +24 -3
- package/dist/exit-codes.js.map +1 -1
- package/dist/explore-adversarial.js +2 -2
- package/dist/explore-adversarial.js.map +1 -1
- package/dist/explore-cli.js +3 -2
- package/dist/explore-cli.js.map +1 -1
- package/dist/explore-coverage.js +3 -3
- package/dist/explore-coverage.js.map +1 -1
- package/dist/explore-feature.js +3 -3
- package/dist/explore-feature.js.map +1 -1
- package/dist/explore-goal.js +11 -5
- package/dist/explore-goal.js.map +1 -1
- package/dist/findings-filing.d.ts +6 -0
- package/dist/findings-filing.js +15 -1
- package/dist/findings-filing.js.map +1 -1
- package/dist/forge-verify.d.ts +224 -0
- package/dist/forge-verify.js +649 -0
- package/dist/forge-verify.js.map +1 -0
- package/dist/heal-probe-guard.d.ts +9 -0
- package/dist/heal-probe-guard.js +113 -0
- package/dist/heal-probe-guard.js.map +1 -0
- package/dist/host-health-run.d.ts +32 -1
- package/dist/host-health-run.js +38 -1
- package/dist/host-health-run.js.map +1 -1
- package/dist/init-codeowners.d.ts +19 -0
- package/dist/init-codeowners.js +66 -0
- package/dist/init-codeowners.js.map +1 -1
- package/dist/job-draft-api.d.ts +52 -0
- package/dist/job-draft-api.js +110 -0
- package/dist/job-draft-api.js.map +1 -0
- package/dist/journeeze-api.d.ts +71 -0
- package/dist/journeeze-api.js +285 -0
- package/dist/journeeze-api.js.map +1 -0
- package/dist/journeeze-connect.d.ts +156 -0
- package/dist/journeeze-connect.js +357 -0
- package/dist/journeeze-connect.js.map +1 -0
- package/dist/journey-anchor-gate.d.ts +52 -0
- package/dist/journey-anchor-gate.js +101 -0
- package/dist/journey-anchor-gate.js.map +1 -0
- package/dist/journey-api.d.ts +43 -3
- package/dist/journey-api.js +226 -21
- package/dist/journey-api.js.map +1 -1
- package/dist/journey-cli.js +162 -20
- package/dist/journey-cli.js.map +1 -1
- package/dist/journey-heal.d.ts +74 -0
- package/dist/journey-heal.js +180 -0
- package/dist/journey-heal.js.map +1 -0
- package/dist/journey-lint-sarif.d.ts +3 -2
- package/dist/journey-lint-sarif.js +9 -2
- package/dist/journey-lint-sarif.js.map +1 -1
- package/dist/journey-migrate-api.d.ts +54 -0
- package/dist/journey-migrate-api.js +64 -0
- package/dist/journey-migrate-api.js.map +1 -0
- package/dist/journey-network-checks.d.ts +5 -1
- package/dist/journey-network-checks.js +15 -4
- package/dist/journey-network-checks.js.map +1 -1
- package/dist/journey-prefix.js +2 -2
- package/dist/journey-prefix.js.map +1 -1
- package/dist/journey-proposal-store.d.ts +109 -0
- package/dist/journey-proposal-store.js +365 -0
- package/dist/journey-proposal-store.js.map +1 -0
- package/dist/journey-result-record.d.ts +42 -0
- package/dist/journey-result-record.js +33 -0
- package/dist/journey-result-record.js.map +1 -0
- package/dist/journey-review-api.js +16 -1
- package/dist/journey-review-api.js.map +1 -1
- package/dist/journey-review.d.ts +18 -1
- package/dist/journey-review.js +116 -5
- package/dist/journey-review.js.map +1 -1
- package/dist/journey-stale-api.d.ts +40 -0
- package/dist/journey-stale-api.js +57 -0
- package/dist/journey-stale-api.js.map +1 -0
- package/dist/launch-armed.js +5 -1
- package/dist/launch-armed.js.map +1 -1
- package/dist/locator-health-api.d.ts +101 -0
- package/dist/locator-health-api.js +203 -0
- package/dist/locator-health-api.js.map +1 -0
- package/dist/locator-health.d.ts +195 -0
- package/dist/locator-health.js +419 -0
- package/dist/locator-health.js.map +1 -0
- package/dist/login-cli.d.ts +2 -0
- package/dist/login-cli.js +56 -11
- package/dist/login-cli.js.map +1 -1
- package/dist/mcp-api.d.ts +5 -1
- package/dist/mcp-api.js +53 -8
- package/dist/mcp-api.js.map +1 -1
- package/dist/mcp-cli-tools.d.ts +3 -1
- package/dist/mcp-cli-tools.js +80 -10
- package/dist/mcp-cli-tools.js.map +1 -1
- package/dist/multi-run.d.ts +7 -6
- package/dist/multi-run.js +5 -4
- package/dist/multi-run.js.map +1 -1
- package/dist/persona-login.d.ts +60 -3
- package/dist/persona-login.js +341 -31
- package/dist/persona-login.js.map +1 -1
- package/dist/program.js +2 -0
- package/dist/program.js.map +1 -1
- package/dist/project-config.d.ts +29 -0
- package/dist/project-config.js +76 -0
- package/dist/project-config.js.map +1 -0
- package/dist/report-api.d.ts +1 -0
- package/dist/report-api.js +1 -0
- package/dist/report-api.js.map +1 -1
- package/dist/resource-preflight.js +5 -3
- package/dist/resource-preflight.js.map +1 -1
- package/dist/run-metadata.d.ts +5 -2
- package/dist/run-metadata.js +10 -3
- package/dist/run-metadata.js.map +1 -1
- package/dist/run-tags-cli.d.ts +2 -0
- package/dist/run-tags-cli.js +8 -2
- package/dist/run-tags-cli.js.map +1 -1
- package/dist/self-heal-adapter.d.ts +43 -27
- package/dist/self-heal-adapter.js +196 -62
- package/dist/self-heal-adapter.js.map +1 -1
- package/dist/source-cli.js +5 -3
- package/dist/source-cli.js.map +1 -1
- package/dist/suite-explore-options.js +1 -0
- package/dist/suite-explore-options.js.map +1 -1
- package/dist/sweep-api.d.ts +23 -0
- package/dist/sweep-api.js +39 -8
- package/dist/sweep-api.js.map +1 -1
- package/dist/sweep-cli.js +3 -1
- package/dist/sweep-cli.js.map +1 -1
- package/dist/ux-usability.js +3 -2
- package/dist/ux-usability.js.map +1 -1
- package/package.json +17 -15
- package/skills/jevitate-ci-check/SKILL.md +25 -1
- package/skills/jevitate-getting-started/SKILL.md +9 -3
- package/skills/jevitate-mission-scope/SKILL.md +2 -2
- package/skills/jevitate-run-journey/SKILL.md +36 -5
- package/skills/jevitate-test-campaign/SKILL.md +13 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forge-verify.js","sourceRoot":"","sources":["../src/forge-verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Page } from "playwright";
|
|
2
|
+
import type { HealWriteGuard } from "@jevitate/runtime";
|
|
3
|
+
export interface HealProbeGuard {
|
|
4
|
+
readonly guard: HealWriteGuard;
|
|
5
|
+
/** Unroutes the HTTP handler (the WebSocket proxy stays transparent until the context closes). */
|
|
6
|
+
dispose(): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
/** Installs the guard on the page's BrowserContext (HTTP routes + WebSocket proxy), unarmed. */
|
|
9
|
+
export declare function installHealProbeGuard(page: Page): Promise<HealProbeGuard>;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { monitorFor } from "@jevitate/explore";
|
|
2
|
+
/**
|
|
3
|
+
* #453 (Q2, review): the write guard a guarded click/fill heal probe runs under. Stricter than the
|
|
4
|
+
* find-out `ReadOnlyGuard` on purpose — a probe clicks a control the model or the change evidence
|
|
5
|
+
* PROPOSED, so nothing it sends may reach a server:
|
|
6
|
+
* - NO exemptions: every request whose method is not GET/HEAD/OPTIONS is aborted while a probe is
|
|
7
|
+
* armed — whatever its origin (third-party, credential-free included) and whatever its path
|
|
8
|
+
* (`/token`, `/oauth/…`, `/refresh` included). A navigation with a body is such a request.
|
|
9
|
+
* - BrowserContext level: `context.route` sees every page of the context, so a popup or new tab the
|
|
10
|
+
* click opens is guarded too.
|
|
11
|
+
* - WebSockets: every socket of the context is proxied (`context.routeWebSocket`, installed before
|
|
12
|
+
* the run so sockets opened earlier are covered); a frame the page sends while a probe is armed is
|
|
13
|
+
* dropped and counted as a blocked write.
|
|
14
|
+
* - Service workers: a request a service worker answers or sends itself may never reach
|
|
15
|
+
* `context.route`. The simplest fail-closed rule: a probe is never run while a service worker is
|
|
16
|
+
* registered for the page (`unguardable`), and one registered DURING the probe rejects it.
|
|
17
|
+
* Any blocked request rejects the candidate `write-attempted` (the runner adjudicates). Outside an
|
|
18
|
+
* armed probe every request and frame passes through untouched.
|
|
19
|
+
*/
|
|
20
|
+
const READ_METHODS = new Set(["GET", "HEAD", "OPTIONS"]);
|
|
21
|
+
/** How long an armed probe's window stays open for the writes its action triggers (network settle). */
|
|
22
|
+
const SETTLE_MS = 5_000;
|
|
23
|
+
/** Origin + path of a URL (never its query — it can carry a token). */
|
|
24
|
+
function endpoint(url) {
|
|
25
|
+
try {
|
|
26
|
+
const u = new URL(url);
|
|
27
|
+
return u.origin === "null" ? u.protocol : `${u.origin}${u.pathname}`;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return url.split(/[?#]/)[0] ?? url;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** Service workers registered for the page (their scopes), read in the page. */
|
|
34
|
+
async function registeredServiceWorkers(page, context) {
|
|
35
|
+
const scopes = new Set(context.serviceWorkers().map((w) => endpoint(w.url())));
|
|
36
|
+
if (!page.isClosed()) {
|
|
37
|
+
// BROWSER CODE
|
|
38
|
+
const inPage = await page.evaluate(async () => {
|
|
39
|
+
const sw = navigator.serviceWorker;
|
|
40
|
+
if (sw === undefined)
|
|
41
|
+
return [];
|
|
42
|
+
const regs = await sw.getRegistrations();
|
|
43
|
+
return regs.map((r) => r.scope);
|
|
44
|
+
});
|
|
45
|
+
for (const s of inPage)
|
|
46
|
+
scopes.add(endpoint(s));
|
|
47
|
+
}
|
|
48
|
+
return [...scopes];
|
|
49
|
+
}
|
|
50
|
+
/** Installs the guard on the page's BrowserContext (HTTP routes + WebSocket proxy), unarmed. */
|
|
51
|
+
export async function installHealProbeGuard(page) {
|
|
52
|
+
const context = page.context();
|
|
53
|
+
const monitor = monitorFor(page);
|
|
54
|
+
let armed = false;
|
|
55
|
+
let blocked = [];
|
|
56
|
+
const onRequest = async (route, request) => {
|
|
57
|
+
const method = request.method().toUpperCase();
|
|
58
|
+
if (!armed || READ_METHODS.has(method)) {
|
|
59
|
+
await route.fallback().catch(() => undefined);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
blocked.push({ method, url: endpoint(request.url()) });
|
|
63
|
+
await route.abort("blockedbyclient").catch(() => undefined);
|
|
64
|
+
};
|
|
65
|
+
const onSocket = (ws) => {
|
|
66
|
+
const server = ws.connectToServer();
|
|
67
|
+
ws.onMessage((message) => {
|
|
68
|
+
if (armed) {
|
|
69
|
+
blocked.push({ method: "WEBSOCKET", url: endpoint(ws.url()) });
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
server.send(message);
|
|
73
|
+
});
|
|
74
|
+
server.onMessage((message) => ws.send(message));
|
|
75
|
+
};
|
|
76
|
+
await context.route("**/*", onRequest);
|
|
77
|
+
await context.routeWebSocket(/.*/, onSocket);
|
|
78
|
+
const guard = {
|
|
79
|
+
unguardable: async () => {
|
|
80
|
+
const workers = await registeredServiceWorkers(page, context);
|
|
81
|
+
return workers.length === 0 ? null : `a service worker is registered for this page (${workers.join(", ")}) — requests it handles may bypass the write guard`;
|
|
82
|
+
},
|
|
83
|
+
armAt: async () => {
|
|
84
|
+
blocked = [];
|
|
85
|
+
await monitor.instrument().catch(() => undefined);
|
|
86
|
+
armed = true;
|
|
87
|
+
},
|
|
88
|
+
disarm: async () => {
|
|
89
|
+
if (!armed)
|
|
90
|
+
return [];
|
|
91
|
+
try {
|
|
92
|
+
await monitor.waitSettled({ ceilingMs: SETTLE_MS }).catch(() => undefined);
|
|
93
|
+
const workers = await registeredServiceWorkers(page, context).catch(() => ["(unknown)"]);
|
|
94
|
+
for (const w of workers)
|
|
95
|
+
blocked.push({ method: "SERVICE-WORKER", url: w });
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
armed = false;
|
|
99
|
+
}
|
|
100
|
+
const out = blocked;
|
|
101
|
+
blocked = [];
|
|
102
|
+
return out;
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
return {
|
|
106
|
+
guard,
|
|
107
|
+
dispose: async () => {
|
|
108
|
+
armed = false;
|
|
109
|
+
await context.unroute("**/*", onRequest).catch(() => undefined);
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=heal-probe-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heal-probe-guard.js","sourceRoot":"","sources":["../src/heal-probe-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,30 @@ import { type ResourceGovernor } from "@jevitate/playwright";
|
|
|
8
8
|
* result's `hostHealth`. `injected` is the test seam (a deterministic fake host).
|
|
9
9
|
*/
|
|
10
10
|
export declare function startHostHealth(injected?: HostHealthSampler): Promise<HostHealthSampler>;
|
|
11
|
+
/** The browser handle a run's CDP probe needs (structurally a Playwright `Page`). */
|
|
12
|
+
interface CdpPage {
|
|
13
|
+
context(): {
|
|
14
|
+
browser(): {
|
|
15
|
+
newBrowserCDPSession(): Promise<{
|
|
16
|
+
send(method: string): Promise<unknown>;
|
|
17
|
+
}>;
|
|
18
|
+
} | null;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* #452: gives the run's sampler its CDP probe — the round-trip of a cheap browser-level command
|
|
23
|
+
* (`Browser.getVersion`, answered by the browser process itself, so it measures the browser being
|
|
24
|
+
* scheduled, not the page's JS). Measured in REAL time (`process.hrtime`): it is a latency of the real
|
|
25
|
+
* pipe, so a skipped test clock must not inflate it. A browser that cannot give a CDP session simply
|
|
26
|
+
* contributes no reading.
|
|
27
|
+
*/
|
|
28
|
+
export declare function attachCdpProbe(health: HostHealthSampler, page: CdpPage): void;
|
|
29
|
+
/** The failure to report: a `host-starved` verdict (#452) explains the stall before the engine's own failure does. */
|
|
30
|
+
export declare function failureWithHostStarved<F extends {
|
|
31
|
+
kind: string;
|
|
32
|
+
}>(host: {
|
|
33
|
+
readonly failure?: F | undefined;
|
|
34
|
+
}, own: F | undefined): F | undefined;
|
|
11
35
|
/** What every result carries from the sampler, and the degraded-environment verdict rule applied. */
|
|
12
36
|
export interface HostHealthVerdict<O extends string> {
|
|
13
37
|
readonly outcome: O | "inconclusive";
|
|
@@ -22,4 +46,11 @@ export interface HostHealthVerdict<O extends string> {
|
|
|
22
46
|
* Takes the closing sample and applies the run-level rule: most steps starved → `inconclusive`
|
|
23
47
|
* (`degraded-environment`), never `clean` (see `degradedEnvironmentOutcome`).
|
|
24
48
|
*/
|
|
25
|
-
export declare function finishHostHealth<O extends string>(health: HostHealthSampler, outcome: O, opts?: Parameters<typeof degradedEnvironmentOutcome>[2]
|
|
49
|
+
export declare function finishHostHealth<O extends string>(health: HostHealthSampler, outcome: O, opts?: Parameters<typeof degradedEnvironmentOutcome>[2] & {
|
|
50
|
+
/** #452: the run's own engine failure, so a stall on a starved host is classified `host-starved`. */
|
|
51
|
+
readonly failure?: {
|
|
52
|
+
readonly kind: string;
|
|
53
|
+
readonly message: string;
|
|
54
|
+
};
|
|
55
|
+
}, governor?: ResourceGovernor): Promise<HostHealthVerdict<O>>;
|
|
56
|
+
export {};
|
package/dist/host-health-run.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HostHealthSampler, degradedEnvironmentOutcome } from "@jevitate/explore";
|
|
1
|
+
import { HostHealthSampler, degradedEnvironmentOutcome, hostStarvedFailure } from "@jevitate/explore";
|
|
2
2
|
import { sharedResourceGovernor } from "@jevitate/playwright";
|
|
3
3
|
import { clock } from "@jevitate/domain";
|
|
4
4
|
/** When each run's sampler started (#205: the window the governor's summary covers). */
|
|
@@ -15,6 +15,32 @@ export async function startHostHealth(injected) {
|
|
|
15
15
|
await health.sample();
|
|
16
16
|
return health;
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* #452: gives the run's sampler its CDP probe — the round-trip of a cheap browser-level command
|
|
20
|
+
* (`Browser.getVersion`, answered by the browser process itself, so it measures the browser being
|
|
21
|
+
* scheduled, not the page's JS). Measured in REAL time (`process.hrtime`): it is a latency of the real
|
|
22
|
+
* pipe, so a skipped test clock must not inflate it. A browser that cannot give a CDP session simply
|
|
23
|
+
* contributes no reading.
|
|
24
|
+
*/
|
|
25
|
+
export function attachCdpProbe(health, page) {
|
|
26
|
+
let session;
|
|
27
|
+
health.attachCdpProbe(async () => {
|
|
28
|
+
const browser = page.context().browser();
|
|
29
|
+
if (browser == null)
|
|
30
|
+
return undefined;
|
|
31
|
+
session ??= browser.newBrowserCDPSession().catch(() => undefined);
|
|
32
|
+
const s = await session;
|
|
33
|
+
if (s === undefined)
|
|
34
|
+
return undefined;
|
|
35
|
+
const t0 = process.hrtime.bigint();
|
|
36
|
+
await s.send("Browser.getVersion");
|
|
37
|
+
return Number(process.hrtime.bigint() - t0) / 1e6;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/** The failure to report: a `host-starved` verdict (#452) explains the stall before the engine's own failure does. */
|
|
41
|
+
export function failureWithHostStarved(host, own) {
|
|
42
|
+
return host.failure !== undefined && host.failure.kind === "host-starved" ? host.failure : own;
|
|
43
|
+
}
|
|
18
44
|
/**
|
|
19
45
|
* Takes the closing sample and applies the run-level rule: most steps starved → `inconclusive`
|
|
20
46
|
* (`degraded-environment`), never `clean` (see `degradedEnvironmentOutcome`).
|
|
@@ -23,6 +49,17 @@ export async function finishHostHealth(health, outcome, opts = {}, governor = sh
|
|
|
23
49
|
await health.sample();
|
|
24
50
|
// #205: what resource governance did during this run (cap, slot, throttling, memory) rides along.
|
|
25
51
|
const hostHealth = { ...health.summary(), resources: governor.snapshot(runStarts.get(health) ?? 0) };
|
|
52
|
+
// #452: a run that STALLED while the host showed starvation is `inconclusive` / `host-starved`, with the
|
|
53
|
+
// measurements; a confirmed finding (defects-found, a hang) keeps its outcome.
|
|
54
|
+
const starved = hostStarvedFailure(opts.failure, hostHealth);
|
|
55
|
+
if (starved !== undefined) {
|
|
56
|
+
const keeps = outcome === "defects-found" || outcome === "hang" || outcome === "intermittent";
|
|
57
|
+
return {
|
|
58
|
+
outcome: keeps ? outcome : "inconclusive",
|
|
59
|
+
failure: starved,
|
|
60
|
+
fields: { hostHealth, environmentDegraded: health.findings() },
|
|
61
|
+
};
|
|
62
|
+
}
|
|
26
63
|
const verdict = degradedEnvironmentOutcome(outcome, hostHealth, opts);
|
|
27
64
|
return {
|
|
28
65
|
outcome: verdict.outcome,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-health-run.js","sourceRoot":"","sources":["../src/host-health-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"host-health-run.js","sourceRoot":"","sources":["../src/host-health-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,3 +37,22 @@ export declare const BRANCH_PROTECTION_NOTE = "CODEOWNERS enforces nothing alone
|
|
|
37
37
|
export declare function installCodeowners(cwd: string, ownersValue: string, opts?: {
|
|
38
38
|
readonly dryRun?: boolean;
|
|
39
39
|
}): Promise<CodeownersReport>;
|
|
40
|
+
/** Where GitHub looks for CODEOWNERS, in its order (the first file found is the one it uses). */
|
|
41
|
+
export declare const GITHUB_CODEOWNERS_LOCATIONS: readonly string[];
|
|
42
|
+
/** One CODEOWNERS rule: the pattern as written, its matcher, and its owners (`@user`, `@org/team`, emails). */
|
|
43
|
+
export interface CodeownersRule {
|
|
44
|
+
readonly pattern: string;
|
|
45
|
+
readonly matches: (path: string) => boolean;
|
|
46
|
+
readonly owners: readonly string[];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* A gitignore-style CODEOWNERS pattern as GitHub reads it: a leading `/` or a `/` inside anchors it
|
|
50
|
+
* to the repository root (else it matches at any depth); a trailing `/` matches a directory's
|
|
51
|
+
* contents; a pattern naming a directory also matches everything under it; `*` stays within one
|
|
52
|
+
* path segment, `**` crosses them.
|
|
53
|
+
*/
|
|
54
|
+
export declare function codeownersMatcher(pattern: string): (path: string) => boolean;
|
|
55
|
+
/** The rules of a CODEOWNERS file, in file order. Comments, blank lines and section headers are skipped. */
|
|
56
|
+
export declare function parseCodeownersFile(text: string): CodeownersRule[];
|
|
57
|
+
/** The owners of a repository-relative path: the LAST matching rule wins (none: no owners). */
|
|
58
|
+
export declare function codeownersOf(rules: readonly CodeownersRule[], path: string): readonly string[];
|
package/dist/init-codeowners.js
CHANGED
|
@@ -88,4 +88,70 @@ export async function installCodeowners(cwd, ownersValue, opts = {}) {
|
|
|
88
88
|
}
|
|
89
89
|
return { path, action, owners, note: BRANCH_PROTECTION_NOTE };
|
|
90
90
|
}
|
|
91
|
+
// ── Reading CODEOWNERS (#469: is a pull-request reviewer a code owner of a path?) ──────────────
|
|
92
|
+
/** Where GitHub looks for CODEOWNERS, in its order (the first file found is the one it uses). */
|
|
93
|
+
export const GITHUB_CODEOWNERS_LOCATIONS = [".github/CODEOWNERS", "CODEOWNERS", "docs/CODEOWNERS"];
|
|
94
|
+
function globToRegexBody(glob) {
|
|
95
|
+
let out = "";
|
|
96
|
+
for (let i = 0; i < glob.length; i++) {
|
|
97
|
+
const ch = glob[i];
|
|
98
|
+
if (ch === "*") {
|
|
99
|
+
if (glob[i + 1] === "*") {
|
|
100
|
+
// `**/` matches zero or more directories; a bare `**` anything.
|
|
101
|
+
if (glob[i + 2] === "/") {
|
|
102
|
+
out += "(?:.*/)?";
|
|
103
|
+
i += 2;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
out += ".*";
|
|
107
|
+
i += 1;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else
|
|
111
|
+
out += "[^/]*";
|
|
112
|
+
}
|
|
113
|
+
else if (ch === "?")
|
|
114
|
+
out += "[^/]";
|
|
115
|
+
else
|
|
116
|
+
out += ch.replace(/[.+^${}()|[\]\\]/g, "\\$&");
|
|
117
|
+
}
|
|
118
|
+
return out;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* A gitignore-style CODEOWNERS pattern as GitHub reads it: a leading `/` or a `/` inside anchors it
|
|
122
|
+
* to the repository root (else it matches at any depth); a trailing `/` matches a directory's
|
|
123
|
+
* contents; a pattern naming a directory also matches everything under it; `*` stays within one
|
|
124
|
+
* path segment, `**` crosses them.
|
|
125
|
+
*/
|
|
126
|
+
export function codeownersMatcher(pattern) {
|
|
127
|
+
const dirOnly = pattern.endsWith("/");
|
|
128
|
+
const trimmed = pattern.replace(/^\/+/, "").replace(/\/+$/, "");
|
|
129
|
+
const anchored = pattern.startsWith("/") || trimmed.includes("/");
|
|
130
|
+
const body = globToRegexBody(trimmed);
|
|
131
|
+
const re = new RegExp(`^${anchored ? "" : "(?:.*/)?"}${body}${dirOnly ? "/.*" : "(?:/.*)?"}$`);
|
|
132
|
+
return (path) => re.test(path.replace(/^\/+/, ""));
|
|
133
|
+
}
|
|
134
|
+
/** The rules of a CODEOWNERS file, in file order. Comments, blank lines and section headers are skipped. */
|
|
135
|
+
export function parseCodeownersFile(text) {
|
|
136
|
+
const rules = [];
|
|
137
|
+
for (const raw of text.split(/\r?\n/)) {
|
|
138
|
+
const line = raw.replace(/(^|\s)#.*$/, "").trim();
|
|
139
|
+
if (line === "" || line.startsWith("[") || line.startsWith("^["))
|
|
140
|
+
continue;
|
|
141
|
+
const [pattern, ...owners] = line.split(/\s+/);
|
|
142
|
+
if (pattern === undefined)
|
|
143
|
+
continue;
|
|
144
|
+
rules.push({ pattern, matches: codeownersMatcher(pattern), owners });
|
|
145
|
+
}
|
|
146
|
+
return rules;
|
|
147
|
+
}
|
|
148
|
+
/** The owners of a repository-relative path: the LAST matching rule wins (none: no owners). */
|
|
149
|
+
export function codeownersOf(rules, path) {
|
|
150
|
+
for (let i = rules.length - 1; i >= 0; i--) {
|
|
151
|
+
const r = rules[i];
|
|
152
|
+
if (r.matches(path))
|
|
153
|
+
return r.owners;
|
|
154
|
+
}
|
|
155
|
+
return [];
|
|
156
|
+
}
|
|
91
157
|
//# sourceMappingURL=init-codeowners.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-codeowners.js","sourceRoot":"","sources":["../src/init-codeowners.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init-codeowners.js","sourceRoot":"","sources":["../src/init-codeowners.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type DesiredOutcome } from "@jevitate/journey";
|
|
2
|
+
import { type CliDeps } from "./cli-shared.js";
|
|
3
|
+
/**
|
|
4
|
+
* #465b — `jevitate job draft-outcomes <jobId>` / MCP `draft_job_outcomes`: draft 1–3 desired
|
|
5
|
+
* outcomes for one catalog job with the generation model and write them into its jobs file marked
|
|
6
|
+
* `provenance: "ai_draft"` for the team to review. It NEVER approves anything: the job's approval is
|
|
7
|
+
* left as it was (editing the job makes an existing approval stale, as any edit does), and approving
|
|
8
|
+
* stays a person's act (`jevitate job approve`, CLI only).
|
|
9
|
+
*
|
|
10
|
+
* Provenance: the catalog schema carries `provenance` on the JOB only (a desired outcome is a strict
|
|
11
|
+
* object with no provenance field), so the draft is marked two ways: the job's `provenance` becomes
|
|
12
|
+
* `ai_draft` when it had none (a stronger one — team_hypothesis, customer_evidenced — is never
|
|
13
|
+
* downgraded), and `extensions["jevitate-draft"].outcomes` lists the ids of the drafted, not yet
|
|
14
|
+
* team-reviewed outcomes (a per-outcome trail the team deletes as it reviews).
|
|
15
|
+
*/
|
|
16
|
+
export declare const DRAFT_EXTENSION = "jevitate-draft";
|
|
17
|
+
/** The fewest / most outcomes one call drafts (`--count`, default 3). */
|
|
18
|
+
export declare const DRAFT_OUTCOMES_MIN = 1;
|
|
19
|
+
export declare const DRAFT_OUTCOMES_MAX = 3;
|
|
20
|
+
export declare const DRAFT_OUTCOMES_DEFAULT = 3;
|
|
21
|
+
export interface DraftJobOutcomesRequest {
|
|
22
|
+
/** The project data dir holding jobs.json (`--dir`, else the repo's `.jevitate/`); null outside a project. */
|
|
23
|
+
readonly catalogDir: string | null;
|
|
24
|
+
/** The journeys dir the catalog's Journeys load from (anchor names a drafted metric may reference). */
|
|
25
|
+
readonly journeysDir: string;
|
|
26
|
+
/** The catalog job id (CATALOG_ID_RE; validated by the command). */
|
|
27
|
+
readonly jobId: string;
|
|
28
|
+
/** How many outcomes to draft: DRAFT_OUTCOMES_MIN..DRAFT_OUTCOMES_MAX. */
|
|
29
|
+
readonly count: number;
|
|
30
|
+
/** The generation gateway selection (`--real` live, `--fake-ai` deterministic); exactly one is true. */
|
|
31
|
+
readonly ai: {
|
|
32
|
+
readonly real: boolean;
|
|
33
|
+
readonly fakeAi: boolean;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export interface DraftJobOutcomesResult {
|
|
37
|
+
readonly jobId: string;
|
|
38
|
+
/** The drafted outcomes, as written to the jobs file (schema-checked `DesiredOutcome`s). */
|
|
39
|
+
readonly outcomes: readonly DesiredOutcome[];
|
|
40
|
+
/** Always `ai_draft`: drafted content is the weakest provenance until the team reviews it. */
|
|
41
|
+
readonly provenance: "ai_draft";
|
|
42
|
+
/** The jobs file that was written. */
|
|
43
|
+
readonly jobsFile: string;
|
|
44
|
+
/** Always false: drafting never approves. */
|
|
45
|
+
readonly approved: false;
|
|
46
|
+
/** The job's approval state after the write (an approved job becomes `stale` = needs re-review). */
|
|
47
|
+
readonly approvalStatus: "draft" | "approved" | "stale";
|
|
48
|
+
}
|
|
49
|
+
/** Drafts and writes the outcomes. `deps` gives the CLI's generation gateway builder. */
|
|
50
|
+
export declare function draftJobOutcomes(req: DraftJobOutcomesRequest, deps: CliDeps): Promise<DraftJobOutcomesResult>;
|
|
51
|
+
/** The human rendering (no `--json`). */
|
|
52
|
+
export declare function renderDraftJobOutcomes(r: DraftJobOutcomesResult): string;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { CATALOG_ID_RE, DesiredOutcomeSchema, JobSchema } from "@jevitate/journey";
|
|
3
|
+
import { buildGenerationGateway } from "./cli-shared.js";
|
|
4
|
+
import { CatalogInputError, UnknownCatalogItemError, catalogJobOf, requireJob } from "./catalog.js";
|
|
5
|
+
import { loadCatalog } from "./catalog-api.js";
|
|
6
|
+
import { assertJobRefs } from "./catalog-refs.js";
|
|
7
|
+
/**
|
|
8
|
+
* #465b — `jevitate job draft-outcomes <jobId>` / MCP `draft_job_outcomes`: draft 1–3 desired
|
|
9
|
+
* outcomes for one catalog job with the generation model and write them into its jobs file marked
|
|
10
|
+
* `provenance: "ai_draft"` for the team to review. It NEVER approves anything: the job's approval is
|
|
11
|
+
* left as it was (editing the job makes an existing approval stale, as any edit does), and approving
|
|
12
|
+
* stays a person's act (`jevitate job approve`, CLI only).
|
|
13
|
+
*
|
|
14
|
+
* Provenance: the catalog schema carries `provenance` on the JOB only (a desired outcome is a strict
|
|
15
|
+
* object with no provenance field), so the draft is marked two ways: the job's `provenance` becomes
|
|
16
|
+
* `ai_draft` when it had none (a stronger one — team_hypothesis, customer_evidenced — is never
|
|
17
|
+
* downgraded), and `extensions["jevitate-draft"].outcomes` lists the ids of the drafted, not yet
|
|
18
|
+
* team-reviewed outcomes (a per-outcome trail the team deletes as it reviews).
|
|
19
|
+
*/
|
|
20
|
+
export const DRAFT_EXTENSION = "jevitate-draft";
|
|
21
|
+
/** The fewest / most outcomes one call drafts (`--count`, default 3). */
|
|
22
|
+
export const DRAFT_OUTCOMES_MIN = 1;
|
|
23
|
+
export const DRAFT_OUTCOMES_MAX = 3;
|
|
24
|
+
export const DRAFT_OUTCOMES_DEFAULT = 3;
|
|
25
|
+
const outcomeText = (o) => `${o.direction} the ${o.measure} ${o.object}`.toLowerCase().replace(/\s+/g, " ").trim();
|
|
26
|
+
function slug(o) {
|
|
27
|
+
const base = `${o.direction}-${o.measure}-${o.object}`.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 48).replace(/-+$/, "");
|
|
28
|
+
return base === "" ? "outcome" : base;
|
|
29
|
+
}
|
|
30
|
+
/** Drafts and writes the outcomes. `deps` gives the CLI's generation gateway builder. */
|
|
31
|
+
export async function draftJobOutcomes(req, deps) {
|
|
32
|
+
if (!Number.isInteger(req.count) || req.count < DRAFT_OUTCOMES_MIN || req.count > DRAFT_OUTCOMES_MAX) {
|
|
33
|
+
throw new CatalogInputError(`count must be a whole number from ${DRAFT_OUTCOMES_MIN} to ${DRAFT_OUTCOMES_MAX}, got ${req.count}`);
|
|
34
|
+
}
|
|
35
|
+
const catalog = await loadCatalog(req.catalogDir, req.journeysDir);
|
|
36
|
+
const entry = requireJob(catalog, req.jobId);
|
|
37
|
+
const file = catalog.jobsFile;
|
|
38
|
+
if (file === null)
|
|
39
|
+
throw new UnknownCatalogItemError("job", `no jobs file for job '${req.jobId}'`);
|
|
40
|
+
const job = entry.job;
|
|
41
|
+
const existing = job.desiredOutcomes ?? [];
|
|
42
|
+
const { gen } = await buildGenerationGateway(deps, req.ai);
|
|
43
|
+
const generated = await gen.generate("catalog.outcomes", {
|
|
44
|
+
jobId: job.id,
|
|
45
|
+
story: entry.story,
|
|
46
|
+
personas: [...entry.personas],
|
|
47
|
+
steps: (job.steps ?? []).map((s) => ({ id: s.id, name: s.name })),
|
|
48
|
+
existingOutcomes: existing.map(outcomeText),
|
|
49
|
+
count: req.count,
|
|
50
|
+
});
|
|
51
|
+
const stepIds = new Set((job.steps ?? []).map((s) => s.id));
|
|
52
|
+
const seenText = new Set(existing.map(outcomeText));
|
|
53
|
+
const usedIds = new Set(existing.map((o) => o.id));
|
|
54
|
+
const drafted = [];
|
|
55
|
+
for (const o of generated.output.outcomes) {
|
|
56
|
+
if (drafted.length >= req.count)
|
|
57
|
+
break;
|
|
58
|
+
const text = outcomeText(o);
|
|
59
|
+
if (seenText.has(text))
|
|
60
|
+
continue; // never a duplicate of an existing (or already drafted) outcome
|
|
61
|
+
let id = slug(o);
|
|
62
|
+
for (let n = 2; usedIds.has(id); n++)
|
|
63
|
+
id = `${slug(o).slice(0, 56)}-${n}`;
|
|
64
|
+
const candidate = DesiredOutcomeSchema.parse({
|
|
65
|
+
id,
|
|
66
|
+
...(o.step !== null && stepIds.has(o.step) ? { step: o.step } : {}),
|
|
67
|
+
direction: o.direction,
|
|
68
|
+
measure: o.measure,
|
|
69
|
+
object: o.object.trim(),
|
|
70
|
+
...(o.clarifier === null ? {} : { clarifier: o.clarifier.trim() }),
|
|
71
|
+
...(o.gulf === null ? {} : { gulf: o.gulf }),
|
|
72
|
+
});
|
|
73
|
+
if (!CATALOG_ID_RE.test(candidate.id))
|
|
74
|
+
continue;
|
|
75
|
+
seenText.add(text);
|
|
76
|
+
usedIds.add(candidate.id);
|
|
77
|
+
drafted.push(candidate);
|
|
78
|
+
}
|
|
79
|
+
if (drafted.length === 0)
|
|
80
|
+
throw new CatalogInputError(`the model drafted no new outcome for job '${req.jobId}' (every suggestion repeated an existing one)`);
|
|
81
|
+
const priorMarked = job.extensions?.[DRAFT_EXTENSION]?.outcomes;
|
|
82
|
+
const marked = [...(Array.isArray(priorMarked) ? priorMarked : []), ...drafted.map((o) => o.id)];
|
|
83
|
+
const next = JobSchema.parse({
|
|
84
|
+
...job,
|
|
85
|
+
desiredOutcomes: [...existing, ...drafted],
|
|
86
|
+
provenance: job.provenance ?? "ai_draft",
|
|
87
|
+
extensions: { ...(job.extensions ?? {}), [DRAFT_EXTENSION]: { outcomes: marked } },
|
|
88
|
+
});
|
|
89
|
+
assertJobRefs({ ...catalog, jobs: catalog.jobs.map((j) => (j.id === job.id ? catalogJobOf(next) : j)) }, job.id);
|
|
90
|
+
// Write the job back in place; its approval is left untouched, so an approved job turns stale.
|
|
91
|
+
const raw = JSON.parse(await readFile(file, "utf8"));
|
|
92
|
+
const list = (Array.isArray(raw) ? [...raw] : [...(raw.jobs)]);
|
|
93
|
+
const index = list.findIndex((e) => e.id === job.id);
|
|
94
|
+
list[index] = next;
|
|
95
|
+
await writeFile(file, `${JSON.stringify(Array.isArray(raw) ? list : { ...raw, jobs: list }, null, 2)}\n`);
|
|
96
|
+
return {
|
|
97
|
+
jobId: job.id,
|
|
98
|
+
outcomes: drafted,
|
|
99
|
+
provenance: "ai_draft",
|
|
100
|
+
jobsFile: file,
|
|
101
|
+
approved: false,
|
|
102
|
+
approvalStatus: catalogJobOf(next).status,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/** The human rendering (no `--json`). */
|
|
106
|
+
export function renderDraftJobOutcomes(r) {
|
|
107
|
+
const lines = r.outcomes.map((o) => ` - ${o.id}: ${o.direction} the ${o.measure} ${o.object}`);
|
|
108
|
+
return `drafted ${r.outcomes.length} outcome(s) for job '${r.jobId}' (provenance ai_draft) in ${r.jobsFile}\n${lines.join("\n")}\nnext: review them, then a person approves: jevitate job review ${r.jobId} · jevitate job approve ${r.jobId}\n`;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=job-draft-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job-draft-api.js","sourceRoot":"","sources":["../src/job-draft-api.ts"],"names":[],"mappings":"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"}
|