@gate-forge/pack-playwright 0.7.1 → 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/README.md +31 -0
- package/dist/constants.d.ts +13 -140
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +13 -148
- package/dist/constants.js.map +1 -1
- package/dist/cypress/plugin.d.ts +53 -0
- package/dist/cypress/plugin.d.ts.map +1 -0
- package/dist/cypress/plugin.js +369 -0
- package/dist/cypress/plugin.js.map +1 -0
- package/dist/cypress/spec-scan.d.ts +39 -0
- package/dist/cypress/spec-scan.d.ts.map +1 -0
- package/dist/cypress/spec-scan.js +301 -0
- package/dist/cypress/spec-scan.js.map +1 -0
- package/dist/diagnosis.d.ts +39 -0
- package/dist/diagnosis.d.ts.map +1 -0
- package/dist/diagnosis.js +63 -0
- package/dist/diagnosis.js.map +1 -0
- package/dist/discovery/adapter-projection.d.ts +13 -0
- package/dist/discovery/adapter-projection.d.ts.map +1 -0
- package/dist/discovery/adapter-projection.js +84 -0
- package/dist/discovery/adapter-projection.js.map +1 -0
- package/dist/discovery/config-locations.d.ts +5 -0
- package/dist/discovery/config-locations.d.ts.map +1 -0
- package/dist/discovery/config-locations.js +19 -0
- package/dist/discovery/config-locations.js.map +1 -0
- package/dist/discovery/cypress-runner-adapter.d.ts +112 -0
- package/dist/discovery/cypress-runner-adapter.d.ts.map +1 -0
- package/dist/discovery/cypress-runner-adapter.js +501 -0
- package/dist/discovery/cypress-runner-adapter.js.map +1 -0
- package/dist/discovery/discover.d.ts +53 -1
- package/dist/discovery/discover.d.ts.map +1 -1
- package/dist/discovery/discover.js +100 -3
- package/dist/discovery/discover.js.map +1 -1
- package/dist/discovery/git-ignore.d.ts +13 -0
- package/dist/discovery/git-ignore.d.ts.map +1 -0
- package/dist/discovery/git-ignore.js +62 -0
- package/dist/discovery/git-ignore.js.map +1 -0
- package/dist/discovery/index.d.ts +9 -0
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +9 -0
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/playwright-runner-adapter.d.ts +108 -0
- package/dist/discovery/playwright-runner-adapter.d.ts.map +1 -0
- package/dist/discovery/playwright-runner-adapter.js +185 -0
- package/dist/discovery/playwright-runner-adapter.js.map +1 -0
- package/dist/discovery/prepare-barrier.d.ts +522 -0
- package/dist/discovery/prepare-barrier.d.ts.map +1 -0
- package/dist/discovery/prepare-barrier.js +739 -0
- package/dist/discovery/prepare-barrier.js.map +1 -0
- package/dist/discovery/pytest-adapter.d.ts.map +1 -1
- package/dist/discovery/pytest-adapter.js +6 -2
- package/dist/discovery/pytest-adapter.js.map +1 -1
- package/dist/discovery/pytest-runner-adapter.d.ts +124 -0
- package/dist/discovery/pytest-runner-adapter.d.ts.map +1 -0
- package/dist/discovery/pytest-runner-adapter.js +454 -0
- package/dist/discovery/pytest-runner-adapter.js.map +1 -0
- package/dist/discovery/reconcile.d.ts +80 -11
- package/dist/discovery/reconcile.d.ts.map +1 -1
- package/dist/discovery/reconcile.js +395 -78
- package/dist/discovery/reconcile.js.map +1 -1
- package/dist/discovery/runner-env.d.ts +88 -2
- package/dist/discovery/runner-env.d.ts.map +1 -1
- package/dist/discovery/runner-env.js +142 -4
- package/dist/discovery/runner-env.js.map +1 -1
- package/dist/discovery/static-discovery.d.ts +38 -3
- package/dist/discovery/static-discovery.d.ts.map +1 -1
- package/dist/discovery/static-discovery.js +454 -15
- package/dist/discovery/static-discovery.js.map +1 -1
- package/dist/discovery/supervised-run.d.ts +199 -10
- package/dist/discovery/supervised-run.d.ts.map +1 -1
- package/dist/discovery/supervised-run.js +350 -39
- package/dist/discovery/supervised-run.js.map +1 -1
- package/dist/discovery/trusted-config.d.ts +180 -6
- package/dist/discovery/trusted-config.d.ts.map +1 -1
- package/dist/discovery/trusted-config.js +279 -10
- package/dist/discovery/trusted-config.js.map +1 -1
- package/dist/discovery/vitest-runner-adapter.d.ts +172 -0
- package/dist/discovery/vitest-runner-adapter.d.ts.map +1 -0
- package/dist/discovery/vitest-runner-adapter.js +607 -0
- package/dist/discovery/vitest-runner-adapter.js.map +1 -0
- package/dist/fixture/consumer-runner.d.ts +4 -0
- package/dist/fixture/consumer-runner.d.ts.map +1 -0
- package/dist/fixture/consumer-runner.js +38 -0
- package/dist/fixture/consumer-runner.js.map +1 -0
- package/dist/fixture/evidence.d.ts +27 -0
- package/dist/fixture/evidence.d.ts.map +1 -1
- package/dist/fixture/evidence.js +12 -0
- package/dist/fixture/evidence.js.map +1 -1
- package/dist/fixture/fixture.d.ts +2 -1
- package/dist/fixture/fixture.d.ts.map +1 -1
- package/dist/fixture/fixture.js +1 -17
- package/dist/fixture/fixture.js.map +1 -1
- package/dist/fixture/witness-client.d.ts +6 -174
- package/dist/fixture/witness-client.d.ts.map +1 -1
- package/dist/fixture/witness-client.js +6 -267
- package/dist/fixture/witness-client.js.map +1 -1
- package/dist/index.d.ts +9 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts +6 -12
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +6 -17
- package/dist/json.js.map +1 -1
- package/dist/reporter/project-graph-reporter.d.ts +92 -0
- package/dist/reporter/project-graph-reporter.d.ts.map +1 -0
- package/dist/reporter/project-graph-reporter.js +92 -0
- package/dist/reporter/project-graph-reporter.js.map +1 -0
- package/dist/reporter/reporter.cjs.map +1 -1
- package/dist/reporter/reporter.d.ts +93 -4
- package/dist/reporter/reporter.d.ts.map +1 -1
- package/dist/reporter/reporter.js +174 -18
- package/dist/reporter/reporter.js.map +1 -1
- package/dist/runner-claims.d.ts +13 -0
- package/dist/runner-claims.d.ts.map +1 -0
- package/dist/runner-claims.js +46 -0
- package/dist/runner-claims.js.map +1 -0
- package/dist/runner-resolution.d.ts +3 -0
- package/dist/runner-resolution.d.ts.map +1 -0
- package/dist/runner-resolution.js +14 -0
- package/dist/runner-resolution.js.map +1 -0
- package/dist/supervisor/client.d.ts +23 -1
- package/dist/supervisor/client.d.ts.map +1 -1
- package/dist/supervisor/client.js +49 -0
- package/dist/supervisor/client.js.map +1 -1
- package/dist/supervisor/drain.d.ts +65 -0
- package/dist/supervisor/drain.d.ts.map +1 -1
- package/dist/supervisor/drain.js +353 -9
- package/dist/supervisor/drain.js.map +1 -1
- package/dist/supervisor/index.d.ts +7 -3
- package/dist/supervisor/index.d.ts.map +1 -1
- package/dist/supervisor/index.js +7 -3
- package/dist/supervisor/index.js.map +1 -1
- package/dist/supervisor/spool.d.ts +65 -2
- package/dist/supervisor/spool.d.ts.map +1 -1
- package/dist/supervisor/spool.js +47 -0
- package/dist/supervisor/spool.js.map +1 -1
- package/dist/surface.d.ts +6 -207
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +6 -264
- package/dist/surface.js.map +1 -1
- package/dist/vitest/index.d.ts +23 -0
- package/dist/vitest/index.d.ts.map +1 -0
- package/dist/vitest/index.js +356 -0
- package/dist/vitest/index.js.map +1 -0
- package/dist/vitest/reporter.d.ts +83 -0
- package/dist/vitest/reporter.d.ts.map +1 -0
- package/dist/vitest/reporter.js +211 -0
- package/dist/vitest/reporter.js.map +1 -0
- package/dist/vitest/worker-slot.d.ts +36 -0
- package/dist/vitest/worker-slot.d.ts.map +1 -0
- package/dist/vitest/worker-slot.js +51 -0
- package/dist/vitest/worker-slot.js.map +1 -0
- package/dist/witness/adapter-registry.d.ts +6 -50
- package/dist/witness/adapter-registry.d.ts.map +1 -1
- package/dist/witness/adapter-registry.js +6 -257
- package/dist/witness/adapter-registry.js.map +1 -1
- package/dist/witness/behavior-request.d.ts +6 -76
- package/dist/witness/behavior-request.d.ts.map +1 -1
- package/dist/witness/behavior-request.js +6 -273
- package/dist/witness/behavior-request.js.map +1 -1
- package/dist/witness/behavior.d.ts +6 -48
- package/dist/witness/behavior.d.ts.map +1 -1
- package/dist/witness/behavior.js +6 -114
- package/dist/witness/behavior.js.map +1 -1
- package/dist/witness/bin.d.ts +6 -17
- package/dist/witness/bin.d.ts.map +1 -1
- package/dist/witness/bin.js +6 -168
- package/dist/witness/bin.js.map +1 -1
- package/dist/witness/browser.d.ts +14 -206
- package/dist/witness/browser.d.ts.map +1 -1
- package/dist/witness/browser.js +15 -654
- package/dist/witness/browser.js.map +1 -1
- package/dist/witness/classifications.d.ts +6 -38
- package/dist/witness/classifications.d.ts.map +1 -1
- package/dist/witness/classifications.js +6 -83
- package/dist/witness/classifications.js.map +1 -1
- package/dist/witness/env-attestation.d.ts +6 -94
- package/dist/witness/env-attestation.d.ts.map +1 -1
- package/dist/witness/env-attestation.js +6 -198
- package/dist/witness/env-attestation.js.map +1 -1
- package/dist/witness/fixture-provider.d.ts +6 -82
- package/dist/witness/fixture-provider.d.ts.map +1 -1
- package/dist/witness/fixture-provider.js +6 -105
- package/dist/witness/fixture-provider.js.map +1 -1
- package/dist/witness/loopback-pins.d.ts +6 -75
- package/dist/witness/loopback-pins.d.ts.map +1 -1
- package/dist/witness/loopback-pins.js +6 -240
- package/dist/witness/loopback-pins.js.map +1 -1
- package/dist/witness/server.d.ts +8 -26
- package/dist/witness/server.d.ts.map +1 -1
- package/dist/witness/server.js +24 -3761
- package/dist/witness/server.js.map +1 -1
- package/dist/witness/types.d.ts +6 -882
- package/dist/witness/types.d.ts.map +1 -1
- package/dist/witness/types.js +9 -1
- package/dist/witness/types.js.map +1 -1
- package/examples/overlay-proof.spec.js +75 -0
- package/package.json +8 -2
- package/python/__pycache__/gateforge_persistence_intents.cpython-312.pyc +0 -0
- package/python/__pycache__/gateforge_persistence_intents.cpython-314.pyc +0 -0
- package/python/gateforge_pytest_plugin.py +462 -0
|
@@ -1,271 +1,10 @@
|
|
|
1
|
-
import { readFileSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { ENV_RUN_TOKEN, ENV_STATE_DIR, ENV_WITNESS_URL, RUN_HEADER, WITNESS_URL_FILE, } from '../constants.js';
|
|
4
|
-
/** A witness call that failed (status + single-cause diagnostic). */
|
|
5
|
-
export class WitnessRequestError extends Error {
|
|
6
|
-
status;
|
|
7
|
-
detail;
|
|
8
|
-
constructor(status, message, detail = null) {
|
|
9
|
-
super(detail === null ? message : `${message}: ${detail}`);
|
|
10
|
-
this.name = 'WitnessRequestError';
|
|
11
|
-
this.status = status;
|
|
12
|
-
this.detail = detail;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
1
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* a witness without `--witness-url`).
|
|
2
|
+
* Compatibility re-export: `client` now lives in the runner-neutral
|
|
3
|
+
* `@gate-forge/witness` package (plan 2026-09-25 phase 1).
|
|
19
4
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* Throws:
|
|
24
|
-
* Error: with the exact setup step required when no witness is wired.
|
|
25
|
-
*/
|
|
26
|
-
export function resolveWitnessUrl() {
|
|
27
|
-
const fromEnv = process.env[ENV_WITNESS_URL];
|
|
28
|
-
if (fromEnv !== undefined && fromEnv !== '')
|
|
29
|
-
return fromEnv;
|
|
30
|
-
const stateDir = process.env[ENV_STATE_DIR];
|
|
31
|
-
if (stateDir !== undefined && stateDir !== '') {
|
|
32
|
-
try {
|
|
33
|
-
const record = JSON.parse(readFileSync(join(stateDir, WITNESS_URL_FILE), 'utf8'));
|
|
34
|
-
if (typeof record.url === 'string' && record.url !== '')
|
|
35
|
-
return record.url;
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
// fall through to the actionable error
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
throw new Error(`no witness service is wired: set ${ENV_WITNESS_URL} (or run under 'gateforge test-gates', ` +
|
|
42
|
-
'which exports it) so evidence primitives can submit records');
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* The fixture's witness transport.
|
|
46
|
-
*
|
|
47
|
-
* Args:
|
|
48
|
-
* url: witness base URL (default: resolved from env/state file).
|
|
49
|
-
* token: run token (default: GATEFORGE_RUN_TOKEN).
|
|
50
|
-
* timeoutMs: per-call timeout.
|
|
5
|
+
* The move is physical, not behavioural: this module forwards every
|
|
6
|
+
* export unchanged so `@gate-forge/pack-playwright`'s published import
|
|
7
|
+
* paths — which consumers pin — keep resolving to the same values.
|
|
51
8
|
*/
|
|
52
|
-
export
|
|
53
|
-
url;
|
|
54
|
-
token;
|
|
55
|
-
timeoutMs;
|
|
56
|
-
constructor(url = resolveWitnessUrl(), token = process.env[ENV_RUN_TOKEN], timeoutMs = 5000) {
|
|
57
|
-
this.url = url;
|
|
58
|
-
if (token === undefined || token === '') {
|
|
59
|
-
throw new Error(`${ENV_RUN_TOKEN} is required to talk to the witness service`);
|
|
60
|
-
}
|
|
61
|
-
this.token = token;
|
|
62
|
-
this.timeoutMs = timeoutMs;
|
|
63
|
-
}
|
|
64
|
-
/** POST /records (pin #7; Phase 1: requires the supervisor-issued session credential). */
|
|
65
|
-
async postRecords(request) {
|
|
66
|
-
const body = await this.request('/records', request);
|
|
67
|
-
return body;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* POST /sessions/resolve (Phase 1, worker side): asks for the OPEN
|
|
71
|
-
* session bound to the exact (workerIndex, testId) pair.
|
|
72
|
-
*
|
|
73
|
-
* Deliberately the ONLY session-lifecycle call on the suite-side
|
|
74
|
-
* client (enforcement-review fix 3): open and close live on the
|
|
75
|
-
* supervisor channel (`SupervisorClient`, verifier-key authenticated)
|
|
76
|
-
* and are dispatched by the trusted CLI's spool drain — the tested
|
|
77
|
-
* suite has NO reachable path to mint, seal, or re-seal a session,
|
|
78
|
-
* and with it no path to forge the execution record supervision
|
|
79
|
-
* grades. Resolve only ever answers for a session the supervisor
|
|
80
|
-
* already opened; it cannot create or extend one.
|
|
81
|
-
*
|
|
82
|
-
* Returns:
|
|
83
|
-
* SessionResolveResponse when an open session answers; null when the
|
|
84
|
-
* witness answers 404 (not yet opened, or sealed).
|
|
85
|
-
*/
|
|
86
|
-
async resolveSession(request) {
|
|
87
|
-
try {
|
|
88
|
-
return await this.request('/sessions/resolve', request);
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
if (error instanceof WitnessRequestError && error.status === 404)
|
|
92
|
-
return null;
|
|
93
|
-
throw error;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* POST /sessions/intervals/open (Phase 1): marks the start of a
|
|
98
|
-
* UI-action observation interval on the witness's monotonic clock.
|
|
99
|
-
* Proxy exchanges completing inside the interval are the session's
|
|
100
|
-
* browser evidence; everything outside (setup traffic) is never
|
|
101
|
-
* credited.
|
|
102
|
-
*/
|
|
103
|
-
async beginActionInterval(request) {
|
|
104
|
-
return this.request('/sessions/intervals/open', request);
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* POST /sessions/intervals/close (Phase 1): seals the interval. A
|
|
108
|
-
* closed interval can never be stretched later (409 on re-close).
|
|
109
|
-
*/
|
|
110
|
-
async endActionInterval(request) {
|
|
111
|
-
return this.request('/sessions/intervals/close', request);
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* POST /witness/pre-observation (audit round 4): engine-side id-set
|
|
115
|
-
* snapshot BEFORE a claimed create; pass the returned
|
|
116
|
-
* `observationId` to `verifyPersistence` so the issued record carries
|
|
117
|
-
* `before: {entityAbsent}`. Phase 1: requires the supervisor-issued
|
|
118
|
-
* session credential — the snapshot belongs to the open test session.
|
|
119
|
-
*/
|
|
120
|
-
async preObserve(request) {
|
|
121
|
-
return this.request('/witness/pre-observation', request);
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* POST /witness/http-observation (ADR 0004 D7, plan §8 / D1):
|
|
125
|
-
* consumes one witness-observed HTTP exchange matching (method, path)
|
|
126
|
-
* and issues witnessed `http.request` records for the declaring
|
|
127
|
-
* test's claimed obligations. Phase 1: the caller must hold a valid
|
|
128
|
-
* OPEN session and only an exchange observed through THAT session's
|
|
129
|
-
* proxy prefix within one of its recorded action intervals can be
|
|
130
|
-
* consumed — the claim set may be given as `claimIds`, or as the
|
|
131
|
-
* singular legacy `claimId`/`obligationId` pair (folded in by the
|
|
132
|
-
* server; a split assignment with distinct values is refused with 400).
|
|
133
|
-
*/
|
|
134
|
-
async observeHttp(request) {
|
|
135
|
-
const body = await this.request('/witness/http-observation', request);
|
|
136
|
-
const records = Array.isArray(body['records'])
|
|
137
|
-
? body['records']
|
|
138
|
-
: // Legacy single-record response shape.
|
|
139
|
-
[{ recordId: String(body['recordId'] ?? ''), obligationId: String(request.claimId ?? request.obligationId ?? '') }];
|
|
140
|
-
return {
|
|
141
|
-
recordId: String(body['recordId'] ?? records[0]?.recordId ?? ''),
|
|
142
|
-
runId: String(body['runId'] ?? ''),
|
|
143
|
-
trust: String(body['trust'] ?? ''),
|
|
144
|
-
status: typeof body['status'] === 'number' ? body['status'] : 0,
|
|
145
|
-
records,
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* POST /witness/persistence (Phase 1): runs the engine-side adapter
|
|
150
|
-
* read under the supervisor-opened session, so the persistence record
|
|
151
|
-
* binds to the same channel the UI action used.
|
|
152
|
-
*/
|
|
153
|
-
async verifyPersistence(request) {
|
|
154
|
-
return this.request('/witness/persistence', request);
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* POST /browser/surface (plan Phase 1 item 4): registers the
|
|
158
|
-
* consumer-declared surface descriptor + the app base the ENGINE must
|
|
159
|
-
* drive for this session. Validated engine-side (structure, loopback,
|
|
160
|
-
* fingerprint); selectors are locators only.
|
|
161
|
-
*/
|
|
162
|
-
async registerBrowserSurface(request) {
|
|
163
|
-
return this.request('/browser/surface', request);
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* POST /browser/action (plan Phase 1 item 4): the ENGINE performs one
|
|
167
|
-
* constrained surface operation on its own page and returns its own
|
|
168
|
-
* observation (observed entity id, entered + rendered fields, app
|
|
169
|
-
* status, pre-observation id, issued record ids). Test code supplies
|
|
170
|
-
* intent only — it never touches the engine page.
|
|
171
|
-
*/
|
|
172
|
-
async browserAction(request) {
|
|
173
|
-
return this.request('/browser/action', request);
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* POST /browser/visible (plan Phase 1 item 4): the ENGINE re-reads
|
|
177
|
-
* the rendered result for the engine-observed entity and returns the
|
|
178
|
-
* rendered fields.
|
|
179
|
-
*/
|
|
180
|
-
async browserVisible(request) {
|
|
181
|
-
return this.request('/browser/visible', request);
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* POST /behavior/execute (plan 2026-09-19 Phase 6): asks the ENGINE to
|
|
185
|
-
* execute one approved behavior case. The call carries ONLY the
|
|
186
|
-
* allowed case id plus the session credential — actor material,
|
|
187
|
-
* expectations, and subjects resolve engine-side and are never
|
|
188
|
-
* readable or overridable here.
|
|
189
|
-
*/
|
|
190
|
-
async proveCase(request) {
|
|
191
|
-
return this.request('/behavior/execute', request);
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* POST /behavior/principal (plan 2026-09-19 Phase 6): asks the ENGINE
|
|
195
|
-
* to drive the prepared execution's principal operation and seal the
|
|
196
|
-
* case record. Same credential-only boundary as `proveCase`.
|
|
197
|
-
*/
|
|
198
|
-
async drivePrincipal(request) {
|
|
199
|
-
return this.request('/behavior/principal', request);
|
|
200
|
-
}
|
|
201
|
-
/** GET /records — the issued ledger for this run. */
|
|
202
|
-
async listRecords() {
|
|
203
|
-
const controller = new AbortController();
|
|
204
|
-
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
205
|
-
let response;
|
|
206
|
-
try {
|
|
207
|
-
response = await fetch(`${this.url}/records`, {
|
|
208
|
-
method: 'GET',
|
|
209
|
-
headers: { [RUN_HEADER]: this.token, accept: 'application/json' },
|
|
210
|
-
signal: controller.signal,
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
catch (error) {
|
|
214
|
-
throw new WitnessRequestError(0, `witness call to /records failed: ${error.message}`);
|
|
215
|
-
}
|
|
216
|
-
finally {
|
|
217
|
-
clearTimeout(timer);
|
|
218
|
-
}
|
|
219
|
-
let body;
|
|
220
|
-
try {
|
|
221
|
-
body = await response.json();
|
|
222
|
-
}
|
|
223
|
-
catch {
|
|
224
|
-
body = null;
|
|
225
|
-
}
|
|
226
|
-
if (!response.ok) {
|
|
227
|
-
const record = isObject(body) ? body : {};
|
|
228
|
-
throw new WitnessRequestError(response.status, typeof record['error'] === 'string' ? record['error'] : `witness answered HTTP ${response.status}`, typeof record['detail'] === 'string' ? record['detail'] : null);
|
|
229
|
-
}
|
|
230
|
-
const records = isObject(body) && Array.isArray(body['records']) ? body['records'] : [];
|
|
231
|
-
return { records: records };
|
|
232
|
-
}
|
|
233
|
-
async request(path, payload) {
|
|
234
|
-
const controller = new AbortController();
|
|
235
|
-
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
236
|
-
let response;
|
|
237
|
-
try {
|
|
238
|
-
response = await fetch(`${this.url}${path}`, {
|
|
239
|
-
method: 'POST',
|
|
240
|
-
headers: {
|
|
241
|
-
[RUN_HEADER]: this.token,
|
|
242
|
-
'content-type': 'application/json',
|
|
243
|
-
accept: 'application/json',
|
|
244
|
-
},
|
|
245
|
-
body: JSON.stringify(payload),
|
|
246
|
-
signal: controller.signal,
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
catch (error) {
|
|
250
|
-
clearTimeout(timer);
|
|
251
|
-
throw new WitnessRequestError(0, `witness call to ${path} failed: ${error.message}`);
|
|
252
|
-
}
|
|
253
|
-
clearTimeout(timer);
|
|
254
|
-
let body;
|
|
255
|
-
try {
|
|
256
|
-
body = await response.json();
|
|
257
|
-
}
|
|
258
|
-
catch {
|
|
259
|
-
body = null;
|
|
260
|
-
}
|
|
261
|
-
if (!response.ok) {
|
|
262
|
-
const record = isObject(body) ? body : {};
|
|
263
|
-
throw new WitnessRequestError(response.status, typeof record['error'] === 'string' ? record['error'] : `witness answered HTTP ${response.status}`, typeof record['detail'] === 'string' ? record['detail'] : null);
|
|
264
|
-
}
|
|
265
|
-
return body;
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
function isObject(value) {
|
|
269
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
270
|
-
}
|
|
9
|
+
export * from '@gate-forge/witness/client';
|
|
271
10
|
//# sourceMappingURL=witness-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"witness-client.js","sourceRoot":"","sources":["../../src/fixture/witness-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"witness-client.js","sourceRoot":"","sources":["../../src/fixture/witness-client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,4BAA4B,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -50,18 +50,21 @@ export { gateforgeGlobalSetup, gateforgeGlobalTeardown, startWitnessProcess } fr
|
|
|
50
50
|
* (probeServer) runs witness-side and stamps `channel: 'server'`
|
|
51
51
|
* records for obligations registered `kind: server-e2e`.
|
|
52
52
|
*/
|
|
53
|
-
export { appendSpoolEvent, readSpoolEvents, spoolPathFor, appendPersistenceIntent, readPersistenceIntents, persistenceIntentsPathFor, startSupervisorSpoolDrain, SupervisorClient, DEFAULT_DRAIN_POLL_MS, } from './supervisor/index.js';
|
|
53
|
+
export { appendFreezeReleaseEvent, appendSpoolEvent, readSpoolEvents, spoolPathFor, appendPersistenceIntent, readPersistenceIntents, persistenceIntentsPathFor, startSupervisorSpoolDrain, SupervisorClient, DEFAULT_DRAIN_POLL_MS, } from './supervisor/index.js';
|
|
54
54
|
export type { SpoolEvent, SpoolEventKind, SpoolDrainHandle, PersistenceIntent, PersistenceIntentOperation, PersistenceIntentPhase, PersistenceIntentExpectation, } from './supervisor/index.js';
|
|
55
55
|
export { buildRunnerChildEnv, buildWitnessedPytestChildEnv, RunnerEnvError, RUNNER_SECRET_ENV, RUNNER_PARENT_SIDE_ENV, RUNNER_GATEFORGE_ALLOWLIST, RUNNER_SYSTEM_ALLOWLIST, WITNESSED_PYTEST_RUN_ENV, } from './discovery/runner-env.js';
|
|
56
|
-
export { synthesizeTrustedConfig, trustedReporterEntry, TRUSTED_CONFIG_FILE, TRUSTED_REPORTER_OPTIONS_FILE, } from './discovery/trusted-config.js';
|
|
57
|
-
export type { TrustedConfigInput, TrustedReporterOptions } from './discovery/trusted-config.js';
|
|
56
|
+
export { synthesizeTrustedConfig, trustedReporterEntry, resolveProjectStorageState, ProjectStorageStateError, TRUSTED_CONFIG_FILE, TRUSTED_REPORTER_OPTIONS_FILE, } from './discovery/trusted-config.js';
|
|
57
|
+
export type { ProjectScope, TrustedConfigInput, TrustedReporterOptions } from './discovery/trusted-config.js';
|
|
58
|
+
export { FREEZE_CONTROL_DIR, FREEZE_CONTROL_SPEC_FILE, FREEZE_CONTROLLER_PROJECT, FREEZE_REFUSAL_FILE, FREEZE_ENV_EXEMPT, FREEZE_RELEASE_FILE, FREEZE_REQUEST_FILE, armFreezeControl, canonicalFreezeJson, freezeControllerSpecSource, freezeProjectScopes, mintFreezeSigningKeyPair, projectBaselineEnv, readFreezeRequest, removeFreezeSpecDir, signFreezeRelease, writeFreezeRefusal, verifyFreezeRelease, } from './discovery/prepare-barrier.js';
|
|
59
|
+
export type { ArmedFreezeControl, BaselineEnvProjection, FreezeArmInput, FreezeControl, FreezeReleaseDocument, FreezeReleasePayload, FreezeRequest, FreezeSigningKeyPair, } from './discovery/prepare-barrier.js';
|
|
58
60
|
/**
|
|
59
61
|
* Test discovery (plan 2026-09-13 phase 2): bounded static scanning,
|
|
60
62
|
* native `--list` reconciliation, kind/category inference, the
|
|
61
63
|
* runner-adapter implementations, and the bounded pytest diagnostic
|
|
62
64
|
* adapter.
|
|
63
65
|
*/
|
|
64
|
-
export { discoverTestCatalog, inferTestKind, listNativePlaywrightTests, findPlaywrightConfig, untrustedEnv, reconciliationKey, splitPytestNodeId, fileDigest, scanTestFiles, parseJunitXml, pytestCollectArgv, pytestExecutionArgv, collectPytestSuite, executePytestSuite, executeSupervisedPlaywright, readRunnerOutcomes, playwrightVersion, PlaywrightAdapter, PytestAdapter, TestDiscoveryError, JunitParseError, AdapterCapabilityError, DEFAULT_LIST_TIMEOUT_MS, DEFAULT_RUN_TIMEOUT_MS, UNRESOLVED_TITLE_PLACEHOLDER, DEFAULT_MAX_TRAVERSED_FILES, DEFAULT_MAX_IMPORT_DEPTH, BROWSER_FIXTURE_PARAMS, API_FIXTURE_PARAMS, diagnoseMissingUiSurfaces, } from './discovery/index.js';
|
|
65
|
-
export type { StaticScanOptions, StaticScanResult, StaticTestEntry, StaticTestFacts, StaticUnresolved, StaticParseError, NativeInstance, NativeListResult, InferenceFacts, InferenceResult, JunitDocument, JunitTestCase, PytestCollectedCase, PytestCollectionResult, DiscoverOptions, DiscoverResult, AdapterOptions, DiagnosticRunResult, DiagnosticRunStatus, DiagnosticCause, RunnerOutcomesDocument, SupervisedRunOptions, MissingSurfaceTest, SurfaceDoctorReport, } from './discovery/index.js';
|
|
66
|
-
export {
|
|
66
|
+
export { discoverTestCatalog, inferTestKind, listNativePlaywrightTests, findPlaywrightConfig, findPlaywrightConfigs, PLAYWRIGHT_CONFIG_NAMES, CONFIG_SEARCH_PRUNED_DIRS, untrustedEnv, reconciliationKey, splitPytestNodeId, fileDigest, scanTestFiles, parseJunitXml, pytestCollectArgv, pytestExecutionArgv, collectPytestSuite, executePytestSuite, executeSupervisedPlaywright, defaultPlaywrightCommand, isPlaywrightRunnerInstall, nativeConfigDirOf, playwrightTestModulePath, supervisedRunnerChildEnv, readRunnerOutcomes, playwrightVersion, PlaywrightAdapter, PytestAdapter, TestDiscoveryError, JunitParseError, AdapterCapabilityError, DEFAULT_LIST_TIMEOUT_MS, DEFAULT_RUN_TIMEOUT_MS, UNRESOLVED_TITLE_PLACEHOLDER, DEFAULT_MAX_TRAVERSED_FILES, DEFAULT_MAX_IMPORT_DEPTH, BROWSER_FIXTURE_PARAMS, API_FIXTURE_PARAMS, diffNativePlaywrightTests, staticAdapterFieldsFromSource, diagnoseMissingUiSurfaces, PlaywrightRunnerAdapter, PytestRunnerAdapter, VitestRunnerAdapter, CypressRunnerAdapter, pytestPluginDir, PYTEST_PLUGIN_MODULE, } from './discovery/index.js';
|
|
67
|
+
export type { StaticScanOptions, RepoRelativeFileFilter, StaticScanResult, StaticTestEntry, StaticTestFacts, StaticUnresolved, StaticParseError, NativeInstance, NativeListResult, StaticRegistrationWarning, InferenceFacts, InferenceResult, JunitDocument, JunitTestCase, PytestCollectedCase, PytestCollectionResult, DiscoverOptions, DiscoverResult, DiscoveryTimings, AdapterOptions, DiagnosticRunResult, DiagnosticRunStatus, DiagnosticCause, RunnerOutcomesDocument, SupervisedRunOptions, MissingSurfaceTest, SurfaceDoctorReport, PlaywrightRunnerAdapterOptions, PytestRunnerAdapterOptions, VitestRunnerAdapterOptions, CypressRunnerAdapterOptions, CypressRunReport, VitestJsonReport, } from './discovery/index.js';
|
|
68
|
+
export type { RunnerAdapter, RunnerChildEnv, RunnerChildEnvContext, RunnerEnumeration, RunnerExecuteRequest, RunnerName, RunnerRawResults, RunnerSessionTag, RunnerTagChannel, RunnerTestIdentity, } from '@gate-forge/witness/adapter';
|
|
69
|
+
export { CLAIM_ANNOTATION_TYPE, RUN_HEADER, VERIFIER_HEADER, ENV_FINGERPRINT_HEADER, ATTESTATION_SCOPE_HEADER, UI_ACTION_KIND, UI_VISIBLE_RESULT_KIND, PERSISTENCE_KIND, ENV_RUN_ID, ENV_RUN_TOKEN, ENV_STATE_DIR, ENV_CHAOS_MAX_DELAY_MS, ENV_CHAOS_REORDER, ENV_CHAOS_SEED, ENV_PROXY_TARGET, ENV_TWIN_INVENTORY, ENV_TWIN_QUERY_KEYS, ENV_TWIN_SHAPES, ENV_OBLIGATIONS, ENV_WITNESS_URL, ENV_APP_BASE_URL, ENV_TARGET_BASE_URL, ENV_TARGET_FINGERPRINT, ENV_ADAPTERS_DIR, ENV_CLASSIFICATIONS, ENV_ADAPTER_BASE_URL, WITNESS_URL_FILE, ENV_REPORTER_FAIL_RUN, ENV_OUTCOMES_FILE, CLAIM_INJECTIONS_FILE, EXECUTION_RESULT_FILE, GATE_RECEIPT_FILE, DIAGNOSTICS_REPORT_FILE, SPOOL_DIR_NAME, SPOOL_EVENTS_FILE, SPOOL_INTENTS_FILE, SERVER_CHANNEL, SERVER_E2E_TEST_KIND, DEFAULT_REQUEST_TIMEOUT_MS, } from './constants.js';
|
|
67
70
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -43,15 +43,16 @@ export { gateforgeGlobalSetup, gateforgeGlobalTeardown, startWitnessProcess } fr
|
|
|
43
43
|
* (probeServer) runs witness-side and stamps `channel: 'server'`
|
|
44
44
|
* records for obligations registered `kind: server-e2e`.
|
|
45
45
|
*/
|
|
46
|
-
export { appendSpoolEvent, readSpoolEvents, spoolPathFor, appendPersistenceIntent, readPersistenceIntents, persistenceIntentsPathFor, startSupervisorSpoolDrain, SupervisorClient, DEFAULT_DRAIN_POLL_MS, } from './supervisor/index.js';
|
|
46
|
+
export { appendFreezeReleaseEvent, appendSpoolEvent, readSpoolEvents, spoolPathFor, appendPersistenceIntent, readPersistenceIntents, persistenceIntentsPathFor, startSupervisorSpoolDrain, SupervisorClient, DEFAULT_DRAIN_POLL_MS, } from './supervisor/index.js';
|
|
47
47
|
export { buildRunnerChildEnv, buildWitnessedPytestChildEnv, RunnerEnvError, RUNNER_SECRET_ENV, RUNNER_PARENT_SIDE_ENV, RUNNER_GATEFORGE_ALLOWLIST, RUNNER_SYSTEM_ALLOWLIST, WITNESSED_PYTEST_RUN_ENV, } from './discovery/runner-env.js';
|
|
48
|
-
export { synthesizeTrustedConfig, trustedReporterEntry, TRUSTED_CONFIG_FILE, TRUSTED_REPORTER_OPTIONS_FILE, } from './discovery/trusted-config.js';
|
|
48
|
+
export { synthesizeTrustedConfig, trustedReporterEntry, resolveProjectStorageState, ProjectStorageStateError, TRUSTED_CONFIG_FILE, TRUSTED_REPORTER_OPTIONS_FILE, } from './discovery/trusted-config.js';
|
|
49
|
+
export { FREEZE_CONTROL_DIR, FREEZE_CONTROL_SPEC_FILE, FREEZE_CONTROLLER_PROJECT, FREEZE_REFUSAL_FILE, FREEZE_ENV_EXEMPT, FREEZE_RELEASE_FILE, FREEZE_REQUEST_FILE, armFreezeControl, canonicalFreezeJson, freezeControllerSpecSource, freezeProjectScopes, mintFreezeSigningKeyPair, projectBaselineEnv, readFreezeRequest, removeFreezeSpecDir, signFreezeRelease, writeFreezeRefusal, verifyFreezeRelease, } from './discovery/prepare-barrier.js';
|
|
49
50
|
/**
|
|
50
51
|
* Test discovery (plan 2026-09-13 phase 2): bounded static scanning,
|
|
51
52
|
* native `--list` reconciliation, kind/category inference, the
|
|
52
53
|
* runner-adapter implementations, and the bounded pytest diagnostic
|
|
53
54
|
* adapter.
|
|
54
55
|
*/
|
|
55
|
-
export { discoverTestCatalog, inferTestKind, listNativePlaywrightTests, findPlaywrightConfig, untrustedEnv, reconciliationKey, splitPytestNodeId, fileDigest, scanTestFiles, parseJunitXml, pytestCollectArgv, pytestExecutionArgv, collectPytestSuite, executePytestSuite, executeSupervisedPlaywright, readRunnerOutcomes, playwrightVersion, PlaywrightAdapter, PytestAdapter, TestDiscoveryError, JunitParseError, AdapterCapabilityError, DEFAULT_LIST_TIMEOUT_MS, DEFAULT_RUN_TIMEOUT_MS, UNRESOLVED_TITLE_PLACEHOLDER, DEFAULT_MAX_TRAVERSED_FILES, DEFAULT_MAX_IMPORT_DEPTH, BROWSER_FIXTURE_PARAMS, API_FIXTURE_PARAMS, diagnoseMissingUiSurfaces, } from './discovery/index.js';
|
|
56
|
-
export { CLAIM_ANNOTATION_TYPE, RUN_HEADER, VERIFIER_HEADER, ENV_FINGERPRINT_HEADER, ATTESTATION_SCOPE_HEADER, UI_ACTION_KIND, UI_VISIBLE_RESULT_KIND, PERSISTENCE_KIND, ENV_RUN_ID, ENV_RUN_TOKEN, ENV_STATE_DIR, ENV_OBLIGATIONS, ENV_WITNESS_URL, ENV_APP_BASE_URL, ENV_TARGET_BASE_URL, ENV_TARGET_FINGERPRINT, ENV_ADAPTERS_DIR, ENV_CLASSIFICATIONS, ENV_ADAPTER_BASE_URL, WITNESS_URL_FILE, ENV_REPORTER_FAIL_RUN, ENV_OUTCOMES_FILE, CLAIM_INJECTIONS_FILE, EXECUTION_RESULT_FILE, GATE_RECEIPT_FILE, DIAGNOSTICS_REPORT_FILE, SPOOL_DIR_NAME, SPOOL_EVENTS_FILE, SPOOL_INTENTS_FILE, SERVER_CHANNEL, SERVER_E2E_TEST_KIND, DEFAULT_REQUEST_TIMEOUT_MS, } from './constants.js';
|
|
56
|
+
export { discoverTestCatalog, inferTestKind, listNativePlaywrightTests, findPlaywrightConfig, findPlaywrightConfigs, PLAYWRIGHT_CONFIG_NAMES, CONFIG_SEARCH_PRUNED_DIRS, untrustedEnv, reconciliationKey, splitPytestNodeId, fileDigest, scanTestFiles, parseJunitXml, pytestCollectArgv, pytestExecutionArgv, collectPytestSuite, executePytestSuite, executeSupervisedPlaywright, defaultPlaywrightCommand, isPlaywrightRunnerInstall, nativeConfigDirOf, playwrightTestModulePath, supervisedRunnerChildEnv, readRunnerOutcomes, playwrightVersion, PlaywrightAdapter, PytestAdapter, TestDiscoveryError, JunitParseError, AdapterCapabilityError, DEFAULT_LIST_TIMEOUT_MS, DEFAULT_RUN_TIMEOUT_MS, UNRESOLVED_TITLE_PLACEHOLDER, DEFAULT_MAX_TRAVERSED_FILES, DEFAULT_MAX_IMPORT_DEPTH, BROWSER_FIXTURE_PARAMS, API_FIXTURE_PARAMS, diffNativePlaywrightTests, staticAdapterFieldsFromSource, diagnoseMissingUiSurfaces, PlaywrightRunnerAdapter, PytestRunnerAdapter, VitestRunnerAdapter, CypressRunnerAdapter, pytestPluginDir, PYTEST_PLUGIN_MODULE, } from './discovery/index.js';
|
|
57
|
+
export { CLAIM_ANNOTATION_TYPE, RUN_HEADER, VERIFIER_HEADER, ENV_FINGERPRINT_HEADER, ATTESTATION_SCOPE_HEADER, UI_ACTION_KIND, UI_VISIBLE_RESULT_KIND, PERSISTENCE_KIND, ENV_RUN_ID, ENV_RUN_TOKEN, ENV_STATE_DIR, ENV_CHAOS_MAX_DELAY_MS, ENV_CHAOS_REORDER, ENV_CHAOS_SEED, ENV_PROXY_TARGET, ENV_TWIN_INVENTORY, ENV_TWIN_QUERY_KEYS, ENV_TWIN_SHAPES, ENV_OBLIGATIONS, ENV_WITNESS_URL, ENV_APP_BASE_URL, ENV_TARGET_BASE_URL, ENV_TARGET_FINGERPRINT, ENV_ADAPTERS_DIR, ENV_CLASSIFICATIONS, ENV_ADAPTER_BASE_URL, WITNESS_URL_FILE, ENV_REPORTER_FAIL_RUN, ENV_OUTCOMES_FILE, CLAIM_INJECTIONS_FILE, EXECUTION_RESULT_FILE, GATE_RECEIPT_FILE, DIAGNOSTICS_REPORT_FILE, SPOOL_DIR_NAME, SPOOL_EVENTS_FILE, SPOOL_INTENTS_FILE, SERVER_CHANNEL, SERVER_E2E_TEST_KIND, DEFAULT_REQUEST_TIMEOUT_MS, } from './constants.js';
|
|
57
58
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,iBAAiB,GAMlB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGpG,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG5E,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC5H,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AA4BzF,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAExF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEhG;;;;;;;;;;;;;GAaG;AACH,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAU/B,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/json.d.ts
CHANGED
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Compatibility re-export: `json` now lives in the runner-neutral
|
|
3
|
+
* `@gate-forge/witness` package (plan 2026-09-25 phase 1).
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* responses arrive as `unknown`, so this module re-checks with the core
|
|
8
|
-
* `isJsonValue` guard and renders the canonical form (or throws — a
|
|
9
|
-
* non-JSON payload is a contract violation, never a silent truncation).
|
|
5
|
+
* The move is physical, not behavioural: this module forwards every
|
|
6
|
+
* export unchanged so `@gate-forge/pack-playwright`'s published import
|
|
7
|
+
* paths — which consumers pin — keep resolving to the same values.
|
|
10
8
|
*/
|
|
11
|
-
|
|
12
|
-
/** Throws unless the value is JSON-representable, then canonicalizes it. */
|
|
13
|
-
export declare function canonicalOf(value: unknown): string;
|
|
14
|
-
/** JSON-representable check for wire payloads before hashing. */
|
|
15
|
-
export { isJsonValue };
|
|
9
|
+
export * from '@gate-forge/witness/json';
|
|
16
10
|
//# sourceMappingURL=json.d.ts.map
|
package/dist/json.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,0BAA0B,CAAC"}
|
package/dist/json.js
CHANGED
|
@@ -1,21 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Compatibility re-export: `json` now lives in the runner-neutral
|
|
3
|
+
* `@gate-forge/witness` package (plan 2026-09-25 phase 1).
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* responses arrive as `unknown`, so this module re-checks with the core
|
|
8
|
-
* `isJsonValue` guard and renders the canonical form (or throws — a
|
|
9
|
-
* non-JSON payload is a contract violation, never a silent truncation).
|
|
5
|
+
* The move is physical, not behavioural: this module forwards every
|
|
6
|
+
* export unchanged so `@gate-forge/pack-playwright`'s published import
|
|
7
|
+
* paths — which consumers pin — keep resolving to the same values.
|
|
10
8
|
*/
|
|
11
|
-
|
|
12
|
-
/** Throws unless the value is JSON-representable, then canonicalizes it. */
|
|
13
|
-
export function canonicalOf(value) {
|
|
14
|
-
if (!isJsonValue(value)) {
|
|
15
|
-
throw new TypeError('value is not GF-canonical-JSON-representable');
|
|
16
|
-
}
|
|
17
|
-
return canonicalJson(value);
|
|
18
|
-
}
|
|
19
|
-
/** JSON-representable check for wire payloads before hashing. */
|
|
20
|
-
export { isJsonValue };
|
|
9
|
+
export * from '@gate-forge/witness/json';
|
|
21
10
|
//# sourceMappingURL=json.js.map
|
package/dist/json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project-graph reporter: the ONLY trustworthy source of a Playwright
|
|
3
|
+
* config's per-project `dependencies`.
|
|
4
|
+
*
|
|
5
|
+
* The json reporter Gateforge enumerates with does NOT carry the edge:
|
|
6
|
+
* `config.projects[]` there is rebuilt field by field (outputDir,
|
|
7
|
+
* repeatEach, retries, metadata, id, name, testDir, testIgnore,
|
|
8
|
+
* testMatch, timeout) and `dependencies` is simply absent — verified
|
|
9
|
+
* against the pack's pinned playwright 1.58.2 and against a consumer's
|
|
10
|
+
* own 1.62.1. Reading the edge from the consumer config file instead
|
|
11
|
+
* would mean parsing arbitrary candidate code, which the trusted
|
|
12
|
+
* supervision boundary exists to avoid.
|
|
13
|
+
*
|
|
14
|
+
* So the enumeration adds this ENGINE-OWNED reporter next to the json
|
|
15
|
+
* one (`--reporter=json,<this file>`). The runner hands every reporter
|
|
16
|
+
* the resolved FullConfig in `onConfigure` — the same object the runner
|
|
17
|
+
* itself schedules from — so the graph is the runner's own truth, not
|
|
18
|
+
* the candidate's claim about it.
|
|
19
|
+
*
|
|
20
|
+
* It records the project graph and, alongside it, the RESOLVED
|
|
21
|
+
* `use.storageState` of each project — but only when that value is a
|
|
22
|
+
* plain string path. That is DATA the runner already resolved from the
|
|
23
|
+
* consumer config (a file location), not consumer code, and it is what
|
|
24
|
+
* the standard auth pattern needs: a `setup` project signs in and saves
|
|
25
|
+
* `playwright/.auth/user.json`, and the dependent project is the one
|
|
26
|
+
* that must be handed that file. Every other project option is
|
|
27
|
+
* consumer configuration a supervised run deliberately does not honor,
|
|
28
|
+
* so none of it crosses this boundary — including a `storageState`
|
|
29
|
+
* given as an inline `{cookies, origins}` document, which is a value
|
|
30
|
+
* this boundary does not carry.
|
|
31
|
+
*
|
|
32
|
+
* The output path arrives in the environment, exactly like the json
|
|
33
|
+
* reporter's own `PLAYWRIGHT_JSON_OUTPUT_FILE`: the reporter list a CLI
|
|
34
|
+
* accepts cannot carry per-reporter options, and this reporter runs in
|
|
35
|
+
* the ENUMERATION child (`--list`, no test ever executes), never in the
|
|
36
|
+
* supervised run whose run-state paths must stay out of worker hands.
|
|
37
|
+
*/
|
|
38
|
+
/** Environment variable naming the graph document to write. */
|
|
39
|
+
export declare const PROJECT_GRAPH_PATH_ENV = "PLAYWRIGHT_GATEFORGE_PROJECT_GRAPH_FILE";
|
|
40
|
+
/** Minimal shape of the runner project objects this reporter reads. */
|
|
41
|
+
interface RunnerProject {
|
|
42
|
+
name?: string;
|
|
43
|
+
dependencies?: readonly string[];
|
|
44
|
+
/** The RESOLVED per-project `use`; only its `storageState` is read. */
|
|
45
|
+
use?: {
|
|
46
|
+
storageState?: unknown;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Minimal shape of the runner's resolved full config. */
|
|
50
|
+
interface RunnerFullConfig {
|
|
51
|
+
projects?: readonly RunnerProject[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The document this reporter writes: the resolved project graph plus
|
|
55
|
+
* each project's declared storage state.
|
|
56
|
+
*
|
|
57
|
+
* `schemaVersion` is 2 since the storage-state field was added. It is a
|
|
58
|
+
* clean cutover, never a partial accept: a reader that does not
|
|
59
|
+
* understand version 2 must take the whole document as absent, because
|
|
60
|
+
* half a graph orders projects wrongly and half a state set
|
|
61
|
+
* authenticates the wrong ones.
|
|
62
|
+
*/
|
|
63
|
+
export interface ProjectGraphDocument {
|
|
64
|
+
schemaVersion: 2;
|
|
65
|
+
/** Project name to the (sorted, deduplicated) names it depends on. */
|
|
66
|
+
projectDependencies: Record<string, string[]>;
|
|
67
|
+
/**
|
|
68
|
+
* Project name to the `use.storageState` STRING the runner resolved
|
|
69
|
+
* for it. Absent when no project declares one — never an empty map
|
|
70
|
+
* that would read as "every project has an empty state".
|
|
71
|
+
*/
|
|
72
|
+
projectStorageStates?: Record<string, string>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* The Playwright reporter that records the resolved project dependency
|
|
76
|
+
* graph and the storage states its projects declare. Written for the
|
|
77
|
+
* v2 reporter protocol (`version()` returning `'v2'`), whose
|
|
78
|
+
* `onConfigure` receives the resolved full config.
|
|
79
|
+
*/
|
|
80
|
+
export declare class ProjectGraphReporter {
|
|
81
|
+
/** Opts into the v2 reporter protocol (config arrives in onConfigure). */
|
|
82
|
+
version(): string;
|
|
83
|
+
/**
|
|
84
|
+
* Records the graph, and the declared storage states, the RUNNER
|
|
85
|
+
* resolved.
|
|
86
|
+
*
|
|
87
|
+
* @param config: the resolved full config, exactly as the runner has it.
|
|
88
|
+
*/
|
|
89
|
+
onConfigure(config: RunnerFullConfig): void;
|
|
90
|
+
}
|
|
91
|
+
export default ProjectGraphReporter;
|
|
92
|
+
//# sourceMappingURL=project-graph-reporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-graph-reporter.d.ts","sourceRoot":"","sources":["../../src/reporter/project-graph-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAIH,+DAA+D;AAC/D,eAAO,MAAM,sBAAsB,4CAA4C,CAAC;AAEhF,uEAAuE;AACvE,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,uEAAuE;IACvE,GAAG,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClC;AAED,0DAA0D;AAC1D,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,CAAC,CAAC;IACjB,sEAAsE;IACtE,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC/B,0EAA0E;IACnE,OAAO,IAAI,MAAM;IAIxB;;;;;OAKG;IACI,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;CAkCnD;AAED,eAAe,oBAAoB,CAAC"}
|