@gate-forge/witness 0.13.1 → 0.13.3
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/witness/browser.d.ts.map +1 -1
- package/dist/witness/browser.js +7 -1
- package/dist/witness/browser.js.map +1 -1
- package/dist/witness/page-observation.d.ts +60 -0
- package/dist/witness/page-observation.d.ts.map +1 -1
- package/dist/witness/page-observation.js +67 -0
- package/dist/witness/page-observation.js.map +1 -1
- package/dist/witness/page-observer-registration.d.ts +22 -2
- package/dist/witness/page-observer-registration.d.ts.map +1 -1
- package/dist/witness/page-observer-registration.js +39 -5
- package/dist/witness/page-observer-registration.js.map +1 -1
- package/dist/witness/page-observer.d.ts.map +1 -1
- package/dist/witness/page-observer.js +45 -9
- package/dist/witness/page-observer.js.map +1 -1
- package/dist/witness/server.d.ts.map +1 -1
- package/dist/witness/server.js +93 -36
- package/dist/witness/server.js.map +1 -1
- package/dist/witness/types.d.ts +16 -2
- package/dist/witness/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { apiRequestsSettled, gradePageVisit, } from './page-observation.js';
|
|
1
|
+
import { apiRequestsSettled, gradePageVisit, unsettledRequestsOf, } from './page-observation.js';
|
|
2
2
|
import { trackPageApiSettlement } from './api-settlement.js';
|
|
3
3
|
import { LiveChannelTracker, appHostsOfOrigins, liveChannelSnapshot } from './page-live-channels.js';
|
|
4
4
|
import { ENGINE_PAGE_VISIT_ADDRESS_TIMEOUT_MS, ENGINE_PAGE_VISIT_API_SETTLE_TIMEOUT_MS, } from '../constants.js';
|
|
@@ -38,20 +38,45 @@ function headerValue(headers, wanted) {
|
|
|
38
38
|
* received) as Playwright requests of that key it has not finished.
|
|
39
39
|
*/
|
|
40
40
|
function cdpSettledCount(window) {
|
|
41
|
-
const
|
|
41
|
+
const unsettledKeys = unsettledKeysOfWindow(window);
|
|
42
|
+
let settled = 0;
|
|
43
|
+
for (const request of window.outstanding) {
|
|
44
|
+
if (!unsettledKeys.has(apiExchangeKey(request.method(), request.url())))
|
|
45
|
+
settled += 1;
|
|
46
|
+
}
|
|
47
|
+
return settled;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The keys whose CDP correlation has NOT proven every open request
|
|
51
|
+
* finished: the same conservative per-window, per-method+URL rule
|
|
52
|
+
* {@link cdpSettledCount} grades by, kept as the one place that rule
|
|
53
|
+
* lives (the still-open request list for the refusal diagnosis reads it
|
|
54
|
+
* too, so the diagnosis can never disagree with the settle verdict).
|
|
55
|
+
*/
|
|
56
|
+
function unsettledKeysOfWindow(window) {
|
|
57
|
+
const byKey = new Map();
|
|
42
58
|
for (const request of window.outstanding) {
|
|
43
59
|
const key = apiExchangeKey(request.method(), request.url());
|
|
44
|
-
|
|
60
|
+
byKey.set(key, (byKey.get(key) ?? 0) + 1);
|
|
45
61
|
}
|
|
46
|
-
|
|
47
|
-
for (const
|
|
48
|
-
if ((window.cdpSends.get(key) ?? 0) < (window.playwrightOpens.get(key) ?? 0))
|
|
62
|
+
const unsettled = new Set();
|
|
63
|
+
for (const key of byKey.keys()) {
|
|
64
|
+
if ((window.cdpSends.get(key) ?? 0) < (window.playwrightOpens.get(key) ?? 0)) {
|
|
65
|
+
unsettled.add(key);
|
|
49
66
|
continue;
|
|
67
|
+
}
|
|
50
68
|
const unfinished = (window.playwrightOpens.get(key) ?? 0) - (window.playwrightFinished.get(key) ?? 0);
|
|
51
|
-
if ((window.cdpCompletes.get(key) ?? 0)
|
|
52
|
-
|
|
69
|
+
if ((window.cdpCompletes.get(key) ?? 0) < unfinished)
|
|
70
|
+
unsettled.add(key);
|
|
53
71
|
}
|
|
54
|
-
return
|
|
72
|
+
return unsettled;
|
|
73
|
+
}
|
|
74
|
+
/** The still-open requests of one window (the unsettled keys' requests). */
|
|
75
|
+
function stillOpenRequests(window) {
|
|
76
|
+
const unsettledKeys = unsettledKeysOfWindow(window);
|
|
77
|
+
return [...window.outstanding]
|
|
78
|
+
.filter((request) => unsettledKeys.has(apiExchangeKey(request.method(), request.url())))
|
|
79
|
+
.map((request) => ({ method: request.method(), url: request.url() }));
|
|
55
80
|
}
|
|
56
81
|
/** Attach the witness's independent Playwright/CDP client to an existing browser. */
|
|
57
82
|
export async function observePageBrowser(options) {
|
|
@@ -181,6 +206,11 @@ export async function observePageBrowser(options) {
|
|
|
181
206
|
failures: window.failedRequests,
|
|
182
207
|
completions: window.completedRequests,
|
|
183
208
|
}),
|
|
209
|
+
unsettledRequests: unsettledRequestsOf({
|
|
210
|
+
outstanding: stillOpenRequests(window),
|
|
211
|
+
failures: window.failedRequests,
|
|
212
|
+
completions: window.completedRequests,
|
|
213
|
+
}),
|
|
184
214
|
liveChannels: liveChannelSnapshot(window.liveChannels),
|
|
185
215
|
};
|
|
186
216
|
// Evidence is NOT cleared: repeated quiet emissions of the SAME
|
|
@@ -230,6 +260,11 @@ export async function observePageBrowser(options) {
|
|
|
230
260
|
failures: window.failedRequests,
|
|
231
261
|
completions: window.completedRequests,
|
|
232
262
|
}),
|
|
263
|
+
unsettledRequests: unsettledRequestsOf({
|
|
264
|
+
outstanding: stillOpenRequests(window),
|
|
265
|
+
failures: window.failedRequests,
|
|
266
|
+
completions: window.completedRequests,
|
|
267
|
+
}),
|
|
233
268
|
liveChannels: liveChannelSnapshot(window.liveChannels),
|
|
234
269
|
};
|
|
235
270
|
const verdict = gradePageVisit({ pages: options.pages, loginRoutes: options.loginRoutes, visit });
|
|
@@ -472,6 +507,7 @@ export async function observePageBrowser(options) {
|
|
|
472
507
|
clearTimeout(timeout);
|
|
473
508
|
}
|
|
474
509
|
window.apiResponses.push({
|
|
510
|
+
method: response.request().method(),
|
|
475
511
|
url,
|
|
476
512
|
status: response.status(),
|
|
477
513
|
remoteAddress,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-observer.js","sourceRoot":"","sources":["../../src/witness/page-observer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"page-observer.js","sourceRoot":"","sources":["../../src/witness/page-observer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/witness/server.ts"],"names":[],"mappings":"AA0JA,OAAO,EAWL,UAAU,EASX,MAAM,kBAAkB,CAAC;AAsC1B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/witness/server.ts"],"names":[],"mappings":"AA0JA,OAAO,EAWL,UAAU,EASX,MAAM,kBAAkB,CAAC;AAsC1B,OAAO,KAAK,EAmDV,aAAa,EACb,cAAc,EACf,MAAM,YAAY,CAAC;AA4KpB,uDAAuD;AACvD,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAg5BD;;;;;;;;GAQG;AACH,OAAO,EAAE,UAAU,EAAE,CAAC;AA4DtB;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAqMlF;AAggKD,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/witness/server.js
CHANGED
|
@@ -496,22 +496,35 @@ function parseCollectionRows(collectionSnapshot, contentType, overBound, totalBy
|
|
|
496
496
|
}
|
|
497
497
|
return { ...declared, ids, error: null };
|
|
498
498
|
}
|
|
499
|
+
/** Bounded bind attempts for one proxy port (a later address can hit EADDRINUSE). */
|
|
500
|
+
const PROXY_BIND_ATTEMPTS = 5;
|
|
501
|
+
/** Closes every listener of one proxy (a sealed channel is gone). */
|
|
502
|
+
async function closeProxyListeners(servers) {
|
|
503
|
+
await Promise.all(servers.map((server) => new Promise((resolveClose) => {
|
|
504
|
+
server.close(() => resolveClose());
|
|
505
|
+
})));
|
|
506
|
+
}
|
|
499
507
|
/**
|
|
500
|
-
* Starts one loopback reverse
|
|
508
|
+
* Starts one loopback reverse proxy forwarding to the run's
|
|
501
509
|
* attested proxy target. `sessionId` names the session the port belongs
|
|
502
510
|
* to (null = the shared unattributed proxy): every exchange completing
|
|
503
511
|
* on this port is recorded as an engine observation stamped with that
|
|
504
512
|
* session id and the witness-monotonic completion tick.
|
|
505
513
|
*
|
|
514
|
+
* The proxy listens on EVERY loopback address the app hostname
|
|
515
|
+
* resolved to, all on ONE port: a browser tries every resolved
|
|
516
|
+
* address, but a Node-only client (Playwright's APIRequestContext)
|
|
517
|
+
* connects to the single address its resolver picks.
|
|
518
|
+
*
|
|
506
519
|
* Args:
|
|
507
520
|
* state: running witness state.
|
|
508
521
|
* sessionId: owning session id, or null for the shared proxy.
|
|
509
522
|
*
|
|
510
523
|
* Returns:
|
|
511
|
-
* Promise<
|
|
524
|
+
* Promise<ObservedProxy>: every listener plus the shared port.
|
|
512
525
|
*
|
|
513
526
|
* Throws:
|
|
514
|
-
* Error: when the
|
|
527
|
+
* Error: when the proxy fails to bind.
|
|
515
528
|
*/
|
|
516
529
|
async function startObservedProxy(state, sessionId, chaosSession) {
|
|
517
530
|
const proxyTargetUrl = new URL(state.options.proxyTarget);
|
|
@@ -554,7 +567,10 @@ async function startObservedProxy(state, sessionId, chaosSession) {
|
|
|
554
567
|
return null;
|
|
555
568
|
return collectionRoutes.get(`${method} ${path}`) ?? null;
|
|
556
569
|
};
|
|
557
|
-
|
|
570
|
+
// One request handler shared by EVERY listener of this
|
|
571
|
+
// proxy: each loopback address gets its own Server
|
|
572
|
+
// object, all serving the same exchanges.
|
|
573
|
+
const proxyHandler = (req, res) => {
|
|
558
574
|
const chunks = [];
|
|
559
575
|
req.on('data', (chunk) => chunks.push(chunk));
|
|
560
576
|
req.on('end', () => {
|
|
@@ -732,21 +748,60 @@ async function startObservedProxy(state, sessionId, chaosSession) {
|
|
|
732
748
|
forward.write(body);
|
|
733
749
|
forward.end();
|
|
734
750
|
});
|
|
735
|
-
}
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
751
|
+
};
|
|
752
|
+
// ONE port for every loopback address the app hostname
|
|
753
|
+
// resolves to: the first listener asks the OS for a free
|
|
754
|
+
// port and the rest share it. A browser tries every
|
|
755
|
+
// resolved address, but a Node-only client (Playwright's
|
|
756
|
+
// APIRequestContext) connects to the single address its
|
|
757
|
+
// resolver picks, so every loopback address must answer
|
|
758
|
+
// on the same port. A later address can collide with
|
|
759
|
+
// another process that grabbed the port in the gap: close
|
|
760
|
+
// every listener and retry on a fresh port (bounded),
|
|
761
|
+
// then fail with the bind error.
|
|
762
|
+
for (let attempt = 1; attempt <= PROXY_BIND_ATTEMPTS; attempt += 1) {
|
|
763
|
+
const servers = [];
|
|
764
|
+
let port = 0;
|
|
765
|
+
try {
|
|
766
|
+
for (const bindHost of state.proxyBindHosts) {
|
|
767
|
+
const server = createServer(proxyHandler);
|
|
768
|
+
await new Promise((resolveListen, rejectListen) => {
|
|
769
|
+
server.once('error', rejectListen);
|
|
770
|
+
server.listen(port, bindHost, () => resolveListen());
|
|
771
|
+
});
|
|
772
|
+
server.removeAllListeners('error');
|
|
773
|
+
if (port === 0) {
|
|
774
|
+
const address = server.address();
|
|
775
|
+
if (address === null || typeof address === 'string') {
|
|
776
|
+
throw new WitnessStartupError('observation proxy failed to bind an OS-assigned port');
|
|
777
|
+
}
|
|
778
|
+
port = address.port;
|
|
779
|
+
}
|
|
780
|
+
servers.push(server);
|
|
781
|
+
}
|
|
782
|
+
return { servers, port };
|
|
783
|
+
}
|
|
784
|
+
catch (error) {
|
|
785
|
+
await closeProxyListeners(servers);
|
|
786
|
+
if (attempt === PROXY_BIND_ATTEMPTS ||
|
|
787
|
+
error?.code !== 'EADDRINUSE') {
|
|
788
|
+
throw new WitnessStartupError(`observation proxy failed to bind '${state.proxyHost}': ${error instanceof Error ? error.message : String(error)}`);
|
|
789
|
+
}
|
|
790
|
+
// EADDRINUSE on a later address: another process took
|
|
791
|
+
// the port between assignment and this bind. Retry on
|
|
792
|
+
// a fresh OS-assigned port.
|
|
793
|
+
}
|
|
748
794
|
}
|
|
749
|
-
|
|
795
|
+
// Unreachable: every attempt returns or throws above.
|
|
796
|
+
throw new WitnessStartupError(`observation proxy failed to bind '${state.proxyHost}'`);
|
|
797
|
+
}
|
|
798
|
+
/**
|
|
799
|
+
* The base URL of a started observation proxy: the HOSTNAME
|
|
800
|
+
* (never an IP, so Host headers stay exactly as the suite
|
|
801
|
+
* addresses them) plus the one port every listener shares.
|
|
802
|
+
*/
|
|
803
|
+
function proxyUrlOf(state, proxy) {
|
|
804
|
+
return `http://${formatHost(state.proxyHost)}:${proxy.port}`;
|
|
750
805
|
}
|
|
751
806
|
/**
|
|
752
807
|
* Starts the DEDICATED session proxy port (plan Phase 1) and stores it
|
|
@@ -764,19 +819,17 @@ async function startSessionProxy(state, session) {
|
|
|
764
819
|
session.proxyUrl = null;
|
|
765
820
|
return;
|
|
766
821
|
}
|
|
767
|
-
const
|
|
768
|
-
session.proxyServer =
|
|
769
|
-
session.proxyUrl = proxyUrlOf(state,
|
|
822
|
+
const proxy = await startObservedProxy(state, session.sessionId, session.testId);
|
|
823
|
+
session.proxyServer = proxy;
|
|
824
|
+
session.proxyUrl = proxyUrlOf(state, proxy);
|
|
770
825
|
}
|
|
771
|
-
/** Closes one session's dedicated proxy
|
|
826
|
+
/** Closes one session's dedicated proxy listeners (sealed = channel gone). */
|
|
772
827
|
async function stopSessionProxy(session) {
|
|
773
|
-
const
|
|
828
|
+
const proxy = session.proxyServer;
|
|
774
829
|
session.proxyServer = null;
|
|
775
|
-
if (
|
|
830
|
+
if (proxy === null)
|
|
776
831
|
return;
|
|
777
|
-
await
|
|
778
|
-
server.close(() => resolveClose());
|
|
779
|
-
});
|
|
832
|
+
await closeProxyListeners(proxy.servers);
|
|
780
833
|
}
|
|
781
834
|
/** Detaches the independent browser observer when its test session ends. */
|
|
782
835
|
async function stopPageObserver(state, sessionId) {
|
|
@@ -917,19 +970,25 @@ export async function startWitness(options) {
|
|
|
917
970
|
}
|
|
918
971
|
}
|
|
919
972
|
// Keep the browser-facing logical hostname and the control host separate.
|
|
920
|
-
// Resolve the proxy bind
|
|
973
|
+
// Resolve the proxy bind addresses once, and never bind a non-loopback result.
|
|
921
974
|
const proxyHostname = options.proxyTarget ? new URL(options.proxyTarget).hostname : null;
|
|
922
975
|
const proxyHost = proxyHostname === null
|
|
923
976
|
? options.host ?? LOOPBACK_HOSTNAME
|
|
924
977
|
: proxyHostname.replace(/^\[|\]$/g, '');
|
|
925
|
-
let
|
|
978
|
+
let proxyBindHosts = proxyHostname === null ? [proxyHost] : [];
|
|
926
979
|
if (proxyHostname !== null) {
|
|
927
980
|
await assertLoopback(options.proxyTarget, 'observation proxy target');
|
|
928
|
-
|
|
929
|
-
|
|
981
|
+
// The app hostname can resolve to SEVERAL loopback addresses
|
|
982
|
+
// (`localhost` commonly answers ::1 and the IPv4 loopback): a
|
|
983
|
+
// browser tries every one, but a Node-only client connects to
|
|
984
|
+
// the single address its resolver picks. Fail closed on any
|
|
985
|
+
// non-loopback answer, and serve every loopback address.
|
|
986
|
+
const resolved = await lookup(proxyHost, { all: true });
|
|
987
|
+
const addresses = resolved.map((record) => record.address);
|
|
988
|
+
if (addresses.length === 0 || !addresses.every(isLoopbackAddress)) {
|
|
930
989
|
throw new AttestationError(`observation proxy hostname '${proxyHost}' resolved to a non-loopback bind address`);
|
|
931
990
|
}
|
|
932
|
-
|
|
991
|
+
proxyBindHosts = [...new Set(addresses)];
|
|
933
992
|
}
|
|
934
993
|
const state = {
|
|
935
994
|
options: {
|
|
@@ -945,7 +1004,7 @@ export async function startWitness(options) {
|
|
|
945
1004
|
},
|
|
946
1005
|
adapters,
|
|
947
1006
|
proxyHost,
|
|
948
|
-
|
|
1007
|
+
proxyBindHosts,
|
|
949
1008
|
classifications,
|
|
950
1009
|
ledger: new Map(),
|
|
951
1010
|
preObservations: new Map(),
|
|
@@ -5292,9 +5351,7 @@ async function stopWitness(state) {
|
|
|
5292
5351
|
if (state.proxyServer !== null) {
|
|
5293
5352
|
const proxy = state.proxyServer;
|
|
5294
5353
|
state.proxyServer = null;
|
|
5295
|
-
await
|
|
5296
|
-
proxy.close(() => resolveClose());
|
|
5297
|
-
});
|
|
5354
|
+
await closeProxyListeners(proxy.servers);
|
|
5298
5355
|
}
|
|
5299
5356
|
for (const session of state.sessions.values()) {
|
|
5300
5357
|
await stopSessionProxy(session);
|