@gate-forge/pack-playwright 0.1.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/LICENSE +202 -0
- package/bin/gateforge-witness.js +40 -0
- package/dist/attestation/proxy.d.ts +40 -0
- package/dist/attestation/proxy.d.ts.map +1 -0
- package/dist/attestation/proxy.js +78 -0
- package/dist/attestation/proxy.js.map +1 -0
- package/dist/constants.d.ts +130 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +138 -0
- package/dist/constants.js.map +1 -0
- package/dist/discovery/adapters.d.ts +167 -0
- package/dist/discovery/adapters.d.ts.map +1 -0
- package/dist/discovery/adapters.js +276 -0
- package/dist/discovery/adapters.js.map +1 -0
- package/dist/discovery/discover.d.ts +57 -0
- package/dist/discovery/discover.d.ts.map +1 -0
- package/dist/discovery/discover.js +544 -0
- package/dist/discovery/discover.js.map +1 -0
- package/dist/discovery/index.d.ts +15 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +15 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/inference.d.ts +63 -0
- package/dist/discovery/inference.d.ts.map +1 -0
- package/dist/discovery/inference.js +173 -0
- package/dist/discovery/inference.js.map +1 -0
- package/dist/discovery/pytest-adapter.d.ts +205 -0
- package/dist/discovery/pytest-adapter.d.ts.map +1 -0
- package/dist/discovery/pytest-adapter.js +548 -0
- package/dist/discovery/pytest-adapter.js.map +1 -0
- package/dist/discovery/reconcile.d.ts +106 -0
- package/dist/discovery/reconcile.d.ts.map +1 -0
- package/dist/discovery/reconcile.js +268 -0
- package/dist/discovery/reconcile.js.map +1 -0
- package/dist/discovery/runner-env.d.ts +80 -0
- package/dist/discovery/runner-env.d.ts.map +1 -0
- package/dist/discovery/runner-env.js +139 -0
- package/dist/discovery/runner-env.js.map +1 -0
- package/dist/discovery/static-discovery.d.ts +121 -0
- package/dist/discovery/static-discovery.d.ts.map +1 -0
- package/dist/discovery/static-discovery.js +1028 -0
- package/dist/discovery/static-discovery.js.map +1 -0
- package/dist/discovery/supervised-run.d.ts +110 -0
- package/dist/discovery/supervised-run.d.ts.map +1 -0
- package/dist/discovery/supervised-run.js +328 -0
- package/dist/discovery/supervised-run.js.map +1 -0
- package/dist/discovery/trusted-config.d.ts +103 -0
- package/dist/discovery/trusted-config.d.ts.map +1 -0
- package/dist/discovery/trusted-config.js +117 -0
- package/dist/discovery/trusted-config.js.map +1 -0
- package/dist/fixture/evidence.d.ts +191 -0
- package/dist/fixture/evidence.d.ts.map +1 -0
- package/dist/fixture/evidence.js +366 -0
- package/dist/fixture/evidence.js.map +1 -0
- package/dist/fixture/fixture.d.ts +37 -0
- package/dist/fixture/fixture.d.ts.map +1 -0
- package/dist/fixture/fixture.js +38 -0
- package/dist/fixture/fixture.js.map +1 -0
- package/dist/fixture/witness-client.d.ts +164 -0
- package/dist/fixture/witness-client.d.ts.map +1 -0
- package/dist/fixture/witness-client.js +253 -0
- package/dist/fixture/witness-client.js.map +1 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/json.d.ts +16 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +21 -0
- package/dist/json.js.map +1 -0
- package/dist/reporter/ledger.d.ts +105 -0
- package/dist/reporter/ledger.d.ts.map +1 -0
- package/dist/reporter/ledger.js +197 -0
- package/dist/reporter/ledger.js.map +1 -0
- package/dist/reporter/reporter.cjs +105 -0
- package/dist/reporter/reporter.cjs.map +1 -0
- package/dist/reporter/reporter.d.cts +35 -0
- package/dist/reporter/reporter.d.cts.map +1 -0
- package/dist/reporter/reporter.d.ts +167 -0
- package/dist/reporter/reporter.d.ts.map +1 -0
- package/dist/reporter/reporter.js +673 -0
- package/dist/reporter/reporter.js.map +1 -0
- package/dist/setup.d.ts +49 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +167 -0
- package/dist/setup.js.map +1 -0
- package/dist/supervisor/client.d.ts +73 -0
- package/dist/supervisor/client.d.ts.map +1 -0
- package/dist/supervisor/client.js +164 -0
- package/dist/supervisor/client.js.map +1 -0
- package/dist/supervisor/drain.d.ts +45 -0
- package/dist/supervisor/drain.d.ts.map +1 -0
- package/dist/supervisor/drain.js +235 -0
- package/dist/supervisor/drain.js.map +1 -0
- package/dist/supervisor/index.d.ts +16 -0
- package/dist/supervisor/index.d.ts.map +1 -0
- package/dist/supervisor/index.js +13 -0
- package/dist/supervisor/index.js.map +1 -0
- package/dist/supervisor/spool.d.ts +137 -0
- package/dist/supervisor/spool.d.ts.map +1 -0
- package/dist/supervisor/spool.js +263 -0
- package/dist/supervisor/spool.js.map +1 -0
- package/dist/surface.d.ts +134 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +139 -0
- package/dist/surface.js.map +1 -0
- package/dist/witness/adapter-registry.d.ts +38 -0
- package/dist/witness/adapter-registry.d.ts.map +1 -0
- package/dist/witness/adapter-registry.js +158 -0
- package/dist/witness/adapter-registry.js.map +1 -0
- package/dist/witness/bin.d.ts +21 -0
- package/dist/witness/bin.d.ts.map +1 -0
- package/dist/witness/bin.js +172 -0
- package/dist/witness/bin.js.map +1 -0
- package/dist/witness/browser.d.ts +173 -0
- package/dist/witness/browser.d.ts.map +1 -0
- package/dist/witness/browser.js +580 -0
- package/dist/witness/browser.js.map +1 -0
- package/dist/witness/classifications.d.ts +42 -0
- package/dist/witness/classifications.d.ts.map +1 -0
- package/dist/witness/classifications.js +87 -0
- package/dist/witness/classifications.js.map +1 -0
- package/dist/witness/env-attestation.d.ts +98 -0
- package/dist/witness/env-attestation.d.ts.map +1 -0
- package/dist/witness/env-attestation.js +202 -0
- package/dist/witness/env-attestation.js.map +1 -0
- package/dist/witness/loopback-pins.d.ts +79 -0
- package/dist/witness/loopback-pins.d.ts.map +1 -0
- package/dist/witness/loopback-pins.js +244 -0
- package/dist/witness/loopback-pins.js.map +1 -0
- package/dist/witness/server.d.ts +34 -0
- package/dist/witness/server.d.ts.map +1 -0
- package/dist/witness/server.js +2539 -0
- package/dist/witness/server.js.map +1 -0
- package/dist/witness/types.d.ts +643 -0
- package/dist/witness/types.d.ts.map +1 -0
- package/dist/witness/types.js +2 -0
- package/dist/witness/types.js.map +1 -0
- package/package.json +64 -0
- package/python/gateforge_persistence_intents.py +100 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/reporter/reporter.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Playwright global setup/teardown for gateforge runs (deterministic
|
|
3
|
+
* witness wiring, no races).
|
|
4
|
+
*
|
|
5
|
+
* `globalSetup` runs in the runner's MAIN process and COMPLETES before
|
|
6
|
+
* any worker spawns, so the spawned witness URL is known before the
|
|
7
|
+
* first test can post evidence. Two channels reach the fixtures:
|
|
8
|
+
* `GATEFORGE_WITNESS_URL` in the process env (inherited by workers) and
|
|
9
|
+
* `witness-url.json` in the run-state dir (a file fallback).
|
|
10
|
+
*
|
|
11
|
+
* When `GATEFORGE_WITNESS_URL` is already set (`gateforge test-gates
|
|
12
|
+
* --witness-url <url>`) the setup does nothing — the caller's witness
|
|
13
|
+
* is authoritative. Without a run-state dir + token (a standalone
|
|
14
|
+
* playwright run outside test-gates) the setup logs a warning and skips
|
|
15
|
+
* fail-closed wiring: evidence primitives then fail tests with an
|
|
16
|
+
* actionable error instead of silently degrading.
|
|
17
|
+
*/
|
|
18
|
+
import { type ChildProcess } from 'node:child_process';
|
|
19
|
+
/**
|
|
20
|
+
* Starts the witness service as a child process and waits for it to
|
|
21
|
+
* answer `/health`.
|
|
22
|
+
*
|
|
23
|
+
* Args:
|
|
24
|
+
* env: environment for the child (must carry GATEFORGE_RUN_ID /
|
|
25
|
+
* GATEFORGE_RUN_TOKEN; the witness derivations are documented in the
|
|
26
|
+
* pack README). GATEFORGE_PROXY_TARGET / GATEFORGE_MOUNT_PATH start
|
|
27
|
+
* the observation proxy (see the `gateforge-witness --help` surface).
|
|
28
|
+
* timeoutMs: startup timeout.
|
|
29
|
+
*
|
|
30
|
+
* Returns:
|
|
31
|
+
* {child, url, proxyUrl}: running child, its loopback URL, and the
|
|
32
|
+
* observation-proxy URL when one is active (null otherwise).
|
|
33
|
+
*
|
|
34
|
+
* Throws:
|
|
35
|
+
* Error: when the child exits early or never becomes ready.
|
|
36
|
+
*/
|
|
37
|
+
export declare function startWitnessProcess(env: NodeJS.ProcessEnv, timeoutMs?: number): Promise<{
|
|
38
|
+
child: ChildProcess;
|
|
39
|
+
url: string;
|
|
40
|
+
proxyUrl: string | null;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Playwright `globalSetup`: spawn the witness when the run has a state
|
|
44
|
+
* dir + token and no external witness URL is configured.
|
|
45
|
+
*/
|
|
46
|
+
export declare function gateforgeGlobalSetup(): Promise<void>;
|
|
47
|
+
/** Playwright `globalTeardown`: stop the spawned witness. */
|
|
48
|
+
export declare function gateforgeGlobalTeardown(): Promise<void>;
|
|
49
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAkB9D;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,SAAS,SAAQ,GAChB,OAAO,CAAC;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAkDxE;AAsBD;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiC1D;AAED,6DAA6D;AAC7D,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB7D"}
|
package/dist/setup.js
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Playwright global setup/teardown for gateforge runs (deterministic
|
|
3
|
+
* witness wiring, no races).
|
|
4
|
+
*
|
|
5
|
+
* `globalSetup` runs in the runner's MAIN process and COMPLETES before
|
|
6
|
+
* any worker spawns, so the spawned witness URL is known before the
|
|
7
|
+
* first test can post evidence. Two channels reach the fixtures:
|
|
8
|
+
* `GATEFORGE_WITNESS_URL` in the process env (inherited by workers) and
|
|
9
|
+
* `witness-url.json` in the run-state dir (a file fallback).
|
|
10
|
+
*
|
|
11
|
+
* When `GATEFORGE_WITNESS_URL` is already set (`gateforge test-gates
|
|
12
|
+
* --witness-url <url>`) the setup does nothing — the caller's witness
|
|
13
|
+
* is authoritative. Without a run-state dir + token (a standalone
|
|
14
|
+
* playwright run outside test-gates) the setup logs a warning and skips
|
|
15
|
+
* fail-closed wiring: evidence primitives then fail tests with an
|
|
16
|
+
* actionable error instead of silently degrading.
|
|
17
|
+
*/
|
|
18
|
+
import { spawn } from 'node:child_process';
|
|
19
|
+
import { mkdirSync, writeFileSync } from 'node:fs';
|
|
20
|
+
import { join } from 'node:path';
|
|
21
|
+
import { fileURLToPath } from 'node:url';
|
|
22
|
+
import { ENV_RUN_ID, ENV_RUN_TOKEN, ENV_STATE_DIR, ENV_WITNESS_URL, WITNESS_URL_FILE, } from './constants.js';
|
|
23
|
+
/** The child witness process started by globalSetup (teardown kills it). */
|
|
24
|
+
let spawned = null;
|
|
25
|
+
/** In-progress spawn (avoids double-start in watch mode). */
|
|
26
|
+
let pending = null;
|
|
27
|
+
/**
|
|
28
|
+
* Starts the witness service as a child process and waits for it to
|
|
29
|
+
* answer `/health`.
|
|
30
|
+
*
|
|
31
|
+
* Args:
|
|
32
|
+
* env: environment for the child (must carry GATEFORGE_RUN_ID /
|
|
33
|
+
* GATEFORGE_RUN_TOKEN; the witness derivations are documented in the
|
|
34
|
+
* pack README). GATEFORGE_PROXY_TARGET / GATEFORGE_MOUNT_PATH start
|
|
35
|
+
* the observation proxy (see the `gateforge-witness --help` surface).
|
|
36
|
+
* timeoutMs: startup timeout.
|
|
37
|
+
*
|
|
38
|
+
* Returns:
|
|
39
|
+
* {child, url, proxyUrl}: running child, its loopback URL, and the
|
|
40
|
+
* observation-proxy URL when one is active (null otherwise).
|
|
41
|
+
*
|
|
42
|
+
* Throws:
|
|
43
|
+
* Error: when the child exits early or never becomes ready.
|
|
44
|
+
*/
|
|
45
|
+
export async function startWitnessProcess(env, timeoutMs = 15000) {
|
|
46
|
+
// Package-root relative (works for both src/ and dist/ layouts — the
|
|
47
|
+
// bin ships beside the package, not beside the compiled module).
|
|
48
|
+
const pkgPath = fileURLToPath(new URL('../package.json', import.meta.url));
|
|
49
|
+
const bin = join(pkgPath.slice(0, -'package.json'.length), 'bin', 'gateforge-witness.js');
|
|
50
|
+
const child = spawn(process.execPath, [bin], {
|
|
51
|
+
env: { ...process.env, ...env },
|
|
52
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
53
|
+
});
|
|
54
|
+
const urlPromise = new Promise((resolveUrl, rejectUrl) => {
|
|
55
|
+
let stdout = '';
|
|
56
|
+
let stderr = '';
|
|
57
|
+
let proxyUrl = null;
|
|
58
|
+
const timer = setTimeout(() => {
|
|
59
|
+
child.kill('SIGKILL');
|
|
60
|
+
rejectUrl(new Error('witness child did not report its URL in time'));
|
|
61
|
+
}, timeoutMs);
|
|
62
|
+
child.stdout?.on('data', (chunk) => {
|
|
63
|
+
stdout += chunk.toString('utf8');
|
|
64
|
+
const proxyMatch = /^GATEFORGE_WITNESS_PROXY_URL=(.+)$/m.exec(stdout);
|
|
65
|
+
if (proxyMatch !== null)
|
|
66
|
+
proxyUrl = proxyMatch[1] ?? null;
|
|
67
|
+
const match = /^GATEFORGE_WITNESS_URL=(.+)$/m.exec(stdout);
|
|
68
|
+
if (match !== null) {
|
|
69
|
+
clearTimeout(timer);
|
|
70
|
+
resolveUrl({ url: match[1], proxyUrl });
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
child.stderr?.on('data', (chunk) => {
|
|
74
|
+
stderr += chunk.toString('utf8');
|
|
75
|
+
});
|
|
76
|
+
child.once('error', (error) => {
|
|
77
|
+
clearTimeout(timer);
|
|
78
|
+
rejectUrl(new Error(`witness child failed to start: ${error.message}`));
|
|
79
|
+
});
|
|
80
|
+
child.once('exit', (code) => {
|
|
81
|
+
clearTimeout(timer);
|
|
82
|
+
if (code !== 0) {
|
|
83
|
+
rejectUrl(new Error(`witness child exited early (code ${String(code)}): ${stdout.slice(0, 500)}` +
|
|
84
|
+
(stderr.length > 0 ? ` stderr: ${stderr.slice(0, 2000)}` : '')));
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
const { url, proxyUrl } = await urlPromise;
|
|
89
|
+
await waitForHealth(url, env[ENV_RUN_TOKEN] ?? '', timeoutMs);
|
|
90
|
+
return { child, url, proxyUrl };
|
|
91
|
+
}
|
|
92
|
+
/** Polls the witness health endpoint until ready (or timeout). */
|
|
93
|
+
async function waitForHealth(url, token, timeoutMs) {
|
|
94
|
+
const deadline = Date.now() + timeoutMs;
|
|
95
|
+
for (;;) {
|
|
96
|
+
try {
|
|
97
|
+
const response = await fetch(`${url}/health`, {
|
|
98
|
+
headers: { 'x-gateforge-run': token },
|
|
99
|
+
signal: AbortSignal.timeout(1000),
|
|
100
|
+
});
|
|
101
|
+
if (response.ok)
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// not ready yet
|
|
106
|
+
}
|
|
107
|
+
if (Date.now() > deadline) {
|
|
108
|
+
throw new Error(`witness at ${url} did not become healthy in time`);
|
|
109
|
+
}
|
|
110
|
+
await new Promise((resolveSleep) => setTimeout(resolveSleep, 100));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Playwright `globalSetup`: spawn the witness when the run has a state
|
|
115
|
+
* dir + token and no external witness URL is configured.
|
|
116
|
+
*/
|
|
117
|
+
export async function gateforgeGlobalSetup() {
|
|
118
|
+
const token = process.env[ENV_RUN_TOKEN];
|
|
119
|
+
const stateDir = process.env[ENV_STATE_DIR];
|
|
120
|
+
const runId = process.env[ENV_RUN_ID];
|
|
121
|
+
const existing = process.env[ENV_WITNESS_URL];
|
|
122
|
+
if (existing !== undefined && existing !== '') {
|
|
123
|
+
return; // caller-wired witness (--witness-url) is authoritative
|
|
124
|
+
}
|
|
125
|
+
if (token === undefined || token === '' || stateDir === undefined || stateDir === '') {
|
|
126
|
+
console.warn('[gateforge] no run state wired (GATEFORGE_STATE_DIR/GATEFORGE_RUN_TOKEN): ' +
|
|
127
|
+
'reporter will not write claims/records and evidence primitives will fail closed');
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
pending ??= startWitnessProcess({
|
|
131
|
+
GATEFORGE_RUN_ID: runId ?? '',
|
|
132
|
+
GATEFORGE_RUN_TOKEN: token,
|
|
133
|
+
GATEFORGE_STATE_DIR: stateDir,
|
|
134
|
+
}).then((handle) => {
|
|
135
|
+
spawned = handle;
|
|
136
|
+
return handle;
|
|
137
|
+
});
|
|
138
|
+
const handle = await pending;
|
|
139
|
+
process.env[ENV_WITNESS_URL] = handle.url;
|
|
140
|
+
mkdirSync(stateDir, { recursive: true });
|
|
141
|
+
writeFileSync(join(stateDir, WITNESS_URL_FILE),
|
|
142
|
+
// proxyUrl lets harnesses point the browser at the observation proxy
|
|
143
|
+
// when GATEFORGE_PROXY_TARGET was wired for this run.
|
|
144
|
+
`${JSON.stringify({ url: handle.url, proxyUrl: handle.proxyUrl })}\n`, 'utf8');
|
|
145
|
+
}
|
|
146
|
+
/** Playwright `globalTeardown`: stop the spawned witness. */
|
|
147
|
+
export async function gateforgeGlobalTeardown() {
|
|
148
|
+
const handle = spawned;
|
|
149
|
+
spawned = null;
|
|
150
|
+
pending = null;
|
|
151
|
+
if (handle !== null) {
|
|
152
|
+
handle.child.kill('SIGTERM');
|
|
153
|
+
// A short grace period lets the witness append its recordIds to the
|
|
154
|
+
// run manifest before the runner reports completion.
|
|
155
|
+
await new Promise((resolveWait) => {
|
|
156
|
+
const timer = setTimeout(() => {
|
|
157
|
+
handle.child.kill('SIGKILL');
|
|
158
|
+
resolveWait();
|
|
159
|
+
}, 2000);
|
|
160
|
+
handle.child.once('exit', () => {
|
|
161
|
+
clearTimeout(timer);
|
|
162
|
+
resolveWait();
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ExpectedSetRequest, ExpectedSetResponse, ExecutionTraceResponse, ServerE2eDeclarationsRequest, ServerE2eDeclarationsResponse, ServerPersistenceIntentRequest, ServerPersistenceResponse, ServerPreObservationResponse, SessionCloseRequest, SessionCloseResponse, SessionOpenRequest, SessionOpenResponse } from '../witness/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The supervisor-grade witness client.
|
|
4
|
+
*
|
|
5
|
+
* Args:
|
|
6
|
+
* url: witness base URL (loopback).
|
|
7
|
+
* token: the run token (outer auth gate).
|
|
8
|
+
* verifierKey: the witness verifier key (the supervisor capability;
|
|
9
|
+
* the tested suite never receives it).
|
|
10
|
+
* timeoutMs: per-call timeout.
|
|
11
|
+
*/
|
|
12
|
+
export declare class SupervisorClient {
|
|
13
|
+
readonly url: string;
|
|
14
|
+
readonly token: string;
|
|
15
|
+
readonly verifierKey: string;
|
|
16
|
+
readonly timeoutMs: number;
|
|
17
|
+
constructor(url: string, token: string, verifierKey: string, timeoutMs?: number);
|
|
18
|
+
/**
|
|
19
|
+
* POST /runs/expected-set (fix 2a): registers the expected test set
|
|
20
|
+
* BEFORE the run; idempotent for an identical set.
|
|
21
|
+
*
|
|
22
|
+
* Args:
|
|
23
|
+
* request: the expected tests (identity-shaped).
|
|
24
|
+
*
|
|
25
|
+
* Returns:
|
|
26
|
+
* Promise<ExpectedSetResponse>: bound + enumeration digest + count.
|
|
27
|
+
*
|
|
28
|
+
* Throws:
|
|
29
|
+
* WitnessRequestError: on any refusal (401/403/409/400) — the CLI
|
|
30
|
+
* turns a refusal into a fail-closed run block.
|
|
31
|
+
*/
|
|
32
|
+
registerExpectedSet(request: ExpectedSetRequest): Promise<ExpectedSetResponse>;
|
|
33
|
+
/**
|
|
34
|
+
* POST /sessions/open (fix 3): opens one test session on the
|
|
35
|
+
* supervisor's behalf (drained from the runner's lifecycle spool).
|
|
36
|
+
*/
|
|
37
|
+
openSession(request: SessionOpenRequest): Promise<SessionOpenResponse>;
|
|
38
|
+
/**
|
|
39
|
+
* POST /sessions/close (fix 3): seals the session with the observed
|
|
40
|
+
* outcome; sealing is final.
|
|
41
|
+
*/
|
|
42
|
+
closeSession(request: SessionCloseRequest): Promise<SessionCloseResponse>;
|
|
43
|
+
/**
|
|
44
|
+
* POST /runs/server-e2e-declarations: registers the obligations the
|
|
45
|
+
* trusted mapping layer declared kind `server-e2e` — the witness then
|
|
46
|
+
* (and only then) stamps `channel: 'server'` records for them.
|
|
47
|
+
*/
|
|
48
|
+
registerServerE2eDeclarations(request: ServerE2eDeclarationsRequest): Promise<ServerE2eDeclarationsResponse>;
|
|
49
|
+
/**
|
|
50
|
+
* POST /witness/server-persistence: forwards one drained persistence
|
|
51
|
+
* claim intent. The witness executes the adapter SERVER PROBE itself
|
|
52
|
+
* and either stamps a witnessed `channel: 'server'` record (post) or
|
|
53
|
+
* stores its before-state (pre) — or answers a TYPED failure (the
|
|
54
|
+
* cause code rides `WitnessRequestError.detail`), which is never
|
|
55
|
+
* satisfaction.
|
|
56
|
+
*/
|
|
57
|
+
verifyServerPersistence(request: ServerPersistenceIntentRequest): Promise<ServerPersistenceResponse | ServerPreObservationResponse>;
|
|
58
|
+
/**
|
|
59
|
+
* GET /runs/execution-trace (fix 2b): the witness-side session record
|
|
60
|
+
* — THE execution authority supervision grades completeness from.
|
|
61
|
+
*
|
|
62
|
+
* Returns:
|
|
63
|
+
* Promise<ExecutionTraceResponse | null>: the trace, or null when
|
|
64
|
+
* the witness cannot serve it (fail closed downstream — never an
|
|
65
|
+
* empty success).
|
|
66
|
+
*/
|
|
67
|
+
executionTrace(): Promise<ExecutionTraceResponse | null>;
|
|
68
|
+
/** The supervisor headers (run token + verifier key). */
|
|
69
|
+
private headers;
|
|
70
|
+
/** POST with supervisor headers; errors map to typed WitnessRequestError. */
|
|
71
|
+
private request;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/supervisor/client.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,4BAA4B,EAC5B,6BAA6B,EAC7B,8BAA8B,EAC9B,yBAAyB,EACzB,4BAA4B,EAC5B,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAG7B;;;;;;;;;GASG;AACH,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAGzB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAmC;IAQhD;;;;;;;;;;;;;OAaG;IACG,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAIpF;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI5E;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI/E;;;;OAIG;IACG,6BAA6B,CACjC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,6BAA6B,CAAC;IAIzC;;;;;;;OAOG;IACG,uBAAuB,CAC3B,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,yBAAyB,GAAG,4BAA4B,CAAC;IAOpE;;;;;;;;OAQG;IACG,cAAc,IAAI,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAuB9D,yDAAyD;IACzD,OAAO,CAAC,OAAO;IAUf,6EAA6E;YAC/D,OAAO;CAkCtB"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The SUPERVISOR's witness transport (enforcement-review fixes 2a/3):
|
|
3
|
+
* every call here requires BOTH the run token (outer gate) and the
|
|
4
|
+
* verifier key (`x-gateforge-verifier`) — the capability the tested
|
|
5
|
+
* suite never receives. This client is meant to run ONLY inside the
|
|
6
|
+
* orchestrating CLI process: it registers the expected set, opens and
|
|
7
|
+
* closes test sessions on the supervisor's behalf (draining the
|
|
8
|
+
* runner's lifecycle spool), and fetches the witness-side execution
|
|
9
|
+
* trace that supervision grades completeness from. The suite-side
|
|
10
|
+
* `WitnessClient` deliberately has none of these methods.
|
|
11
|
+
*/
|
|
12
|
+
import { VERIFIER_HEADER, RUN_HEADER, DEFAULT_REQUEST_TIMEOUT_MS } from '../constants.js';
|
|
13
|
+
import { WitnessRequestError } from '../fixture/witness-client.js';
|
|
14
|
+
/**
|
|
15
|
+
* The supervisor-grade witness client.
|
|
16
|
+
*
|
|
17
|
+
* Args:
|
|
18
|
+
* url: witness base URL (loopback).
|
|
19
|
+
* token: the run token (outer auth gate).
|
|
20
|
+
* verifierKey: the witness verifier key (the supervisor capability;
|
|
21
|
+
* the tested suite never receives it).
|
|
22
|
+
* timeoutMs: per-call timeout.
|
|
23
|
+
*/
|
|
24
|
+
export class SupervisorClient {
|
|
25
|
+
url;
|
|
26
|
+
token;
|
|
27
|
+
verifierKey;
|
|
28
|
+
timeoutMs;
|
|
29
|
+
constructor(url, token, verifierKey, timeoutMs = DEFAULT_REQUEST_TIMEOUT_MS) {
|
|
30
|
+
this.url = url;
|
|
31
|
+
this.token = token;
|
|
32
|
+
this.verifierKey = verifierKey;
|
|
33
|
+
this.timeoutMs = timeoutMs;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* POST /runs/expected-set (fix 2a): registers the expected test set
|
|
37
|
+
* BEFORE the run; idempotent for an identical set.
|
|
38
|
+
*
|
|
39
|
+
* Args:
|
|
40
|
+
* request: the expected tests (identity-shaped).
|
|
41
|
+
*
|
|
42
|
+
* Returns:
|
|
43
|
+
* Promise<ExpectedSetResponse>: bound + enumeration digest + count.
|
|
44
|
+
*
|
|
45
|
+
* Throws:
|
|
46
|
+
* WitnessRequestError: on any refusal (401/403/409/400) — the CLI
|
|
47
|
+
* turns a refusal into a fail-closed run block.
|
|
48
|
+
*/
|
|
49
|
+
async registerExpectedSet(request) {
|
|
50
|
+
return this.request('/runs/expected-set', request);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* POST /sessions/open (fix 3): opens one test session on the
|
|
54
|
+
* supervisor's behalf (drained from the runner's lifecycle spool).
|
|
55
|
+
*/
|
|
56
|
+
async openSession(request) {
|
|
57
|
+
return this.request('/sessions/open', request);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* POST /sessions/close (fix 3): seals the session with the observed
|
|
61
|
+
* outcome; sealing is final.
|
|
62
|
+
*/
|
|
63
|
+
async closeSession(request) {
|
|
64
|
+
return this.request('/sessions/close', request);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* POST /runs/server-e2e-declarations: registers the obligations the
|
|
68
|
+
* trusted mapping layer declared kind `server-e2e` — the witness then
|
|
69
|
+
* (and only then) stamps `channel: 'server'` records for them.
|
|
70
|
+
*/
|
|
71
|
+
async registerServerE2eDeclarations(request) {
|
|
72
|
+
return this.request('/runs/server-e2e-declarations', request);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* POST /witness/server-persistence: forwards one drained persistence
|
|
76
|
+
* claim intent. The witness executes the adapter SERVER PROBE itself
|
|
77
|
+
* and either stamps a witnessed `channel: 'server'` record (post) or
|
|
78
|
+
* stores its before-state (pre) — or answers a TYPED failure (the
|
|
79
|
+
* cause code rides `WitnessRequestError.detail`), which is never
|
|
80
|
+
* satisfaction.
|
|
81
|
+
*/
|
|
82
|
+
async verifyServerPersistence(request) {
|
|
83
|
+
return this.request('/witness/server-persistence', request);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* GET /runs/execution-trace (fix 2b): the witness-side session record
|
|
87
|
+
* — THE execution authority supervision grades completeness from.
|
|
88
|
+
*
|
|
89
|
+
* Returns:
|
|
90
|
+
* Promise<ExecutionTraceResponse | null>: the trace, or null when
|
|
91
|
+
* the witness cannot serve it (fail closed downstream — never an
|
|
92
|
+
* empty success).
|
|
93
|
+
*/
|
|
94
|
+
async executionTrace() {
|
|
95
|
+
const controller = new AbortController();
|
|
96
|
+
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
97
|
+
let response;
|
|
98
|
+
try {
|
|
99
|
+
response = await fetch(`${this.url}/runs/execution-trace`, {
|
|
100
|
+
method: 'GET',
|
|
101
|
+
headers: this.headers(),
|
|
102
|
+
signal: controller.signal,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return null; // transport failure: the caller fails closed
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
clearTimeout(timer);
|
|
110
|
+
}
|
|
111
|
+
if (!response.ok)
|
|
112
|
+
return null;
|
|
113
|
+
try {
|
|
114
|
+
return (await response.json());
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/** The supervisor headers (run token + verifier key). */
|
|
121
|
+
headers() {
|
|
122
|
+
return {
|
|
123
|
+
[RUN_HEADER]: this.token,
|
|
124
|
+
[VERIFIER_HEADER]: this.verifierKey,
|
|
125
|
+
'content-type': 'application/json',
|
|
126
|
+
accept: 'application/json',
|
|
127
|
+
connection: 'close',
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/** POST with supervisor headers; errors map to typed WitnessRequestError. */
|
|
131
|
+
async request(path, payload) {
|
|
132
|
+
const controller = new AbortController();
|
|
133
|
+
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
134
|
+
let response;
|
|
135
|
+
try {
|
|
136
|
+
response = await fetch(`${this.url}${path}`, {
|
|
137
|
+
method: 'POST',
|
|
138
|
+
headers: this.headers(),
|
|
139
|
+
body: JSON.stringify(payload),
|
|
140
|
+
signal: controller.signal,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
clearTimeout(timer);
|
|
145
|
+
throw new WitnessRequestError(0, `supervisor call to ${path} failed: ${error.message}`);
|
|
146
|
+
}
|
|
147
|
+
clearTimeout(timer);
|
|
148
|
+
let body;
|
|
149
|
+
try {
|
|
150
|
+
body = await response.json();
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
body = null;
|
|
154
|
+
}
|
|
155
|
+
if (!response.ok) {
|
|
156
|
+
const record = typeof body === 'object' && body !== null ? body : {};
|
|
157
|
+
throw new WitnessRequestError(response.status, typeof record['error'] === 'string'
|
|
158
|
+
? record['error']
|
|
159
|
+
: `witness answered HTTP ${String(response.status)} for ${path}`, typeof record['detail'] === 'string' ? record['detail'] : null);
|
|
160
|
+
}
|
|
161
|
+
return body;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/supervisor/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** Default cadence between spool polls (the fixture's resolve waits 5s). */
|
|
2
|
+
export declare const DEFAULT_DRAIN_POLL_MS = 50;
|
|
3
|
+
/** Handle for a running drain (see {@link startSupervisorSpoolDrain}). */
|
|
4
|
+
export interface SpoolDrainHandle {
|
|
5
|
+
/**
|
|
6
|
+
* Stops the drain: performs one final sweep of both spools (lifecycle
|
|
7
|
+
* events AND persistence intents), then force-closes every session the
|
|
8
|
+
* runner left open (outcome unknown — the supervisor did not observe a
|
|
9
|
+
* completed test). Resolves with the lifecycle CONFLICTS observed
|
|
10
|
+
* (empty in a genuine run): a re-begin over an open worker slot, an
|
|
11
|
+
* end without a matching begin, or a second end for the same test —
|
|
12
|
+
* plus the TYPED server-persistence intent failures (each names the
|
|
13
|
+
* intent, the witness cause, and the next action). Genuine serial
|
|
14
|
+
* reporter events never conflict — any conflict is worker-side forgery
|
|
15
|
+
* or runner confusion and must fail the run closed downstream.
|
|
16
|
+
*/
|
|
17
|
+
stop: () => Promise<{
|
|
18
|
+
conflicts: string[];
|
|
19
|
+
intentFailures: string[];
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Starts the spool drain loop for one supervised run.
|
|
24
|
+
*
|
|
25
|
+
* Args:
|
|
26
|
+
* options: stateDir + runId locate the spools; witnessUrl/runToken/
|
|
27
|
+
* verifierKey authenticate the supervisor channel; pollMs tunes the
|
|
28
|
+
* poll cadence (tests only); serverE2eObligations, when provided,
|
|
29
|
+
* are registered BEFORE any intent forwarding (the trusted mapping
|
|
30
|
+
* layer's `kind: server-e2e` declarations — the witness stamps
|
|
31
|
+
* server-channel records for these obligations only).
|
|
32
|
+
*
|
|
33
|
+
* Returns:
|
|
34
|
+
* SpoolDrainHandle: awaitable stop (final drain + force-close).
|
|
35
|
+
*/
|
|
36
|
+
export declare function startSupervisorSpoolDrain(options: {
|
|
37
|
+
stateDir: string;
|
|
38
|
+
runId: string;
|
|
39
|
+
witnessUrl: string;
|
|
40
|
+
runToken: string;
|
|
41
|
+
verifierKey: string;
|
|
42
|
+
pollMs?: number;
|
|
43
|
+
serverE2eObligations?: readonly string[];
|
|
44
|
+
}): SpoolDrainHandle;
|
|
45
|
+
//# sourceMappingURL=drain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drain.d.ts","sourceRoot":"","sources":["../../src/supervisor/drain.ts"],"names":[],"mappings":"AAoCA,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAQxC,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;OAWG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C,GAAG,gBAAgB,CA8MnB"}
|