@gate-forge/witness 0.12.0 → 0.13.1
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/client/witness-client.d.ts +10 -1
- package/dist/client/witness-client.d.ts.map +1 -1
- package/dist/client/witness-client.js +11 -3
- package/dist/client/witness-client.js.map +1 -1
- package/dist/constants.d.ts +15 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +21 -0
- package/dist/constants.js.map +1 -1
- package/dist/witness/api-settlement.d.ts +88 -0
- package/dist/witness/api-settlement.d.ts.map +1 -0
- package/dist/witness/api-settlement.js +160 -0
- package/dist/witness/api-settlement.js.map +1 -0
- package/dist/witness/browser.d.ts +14 -3
- package/dist/witness/browser.d.ts.map +1 -1
- package/dist/witness/browser.js +208 -2
- package/dist/witness/browser.js.map +1 -1
- package/dist/witness/classifications.d.ts +4 -6
- package/dist/witness/classifications.d.ts.map +1 -1
- package/dist/witness/classifications.js.map +1 -1
- package/dist/witness/page-live-channels.d.ts +46 -0
- package/dist/witness/page-live-channels.d.ts.map +1 -0
- package/dist/witness/page-live-channels.js +68 -0
- package/dist/witness/page-live-channels.js.map +1 -0
- package/dist/witness/page-observation.d.ts +108 -0
- package/dist/witness/page-observation.d.ts.map +1 -0
- package/dist/witness/page-observation.js +134 -0
- package/dist/witness/page-observation.js.map +1 -0
- package/dist/witness/page-observer-registration.d.ts +86 -0
- package/dist/witness/page-observer-registration.d.ts.map +1 -0
- package/dist/witness/page-observer-registration.js +258 -0
- package/dist/witness/page-observer-registration.js.map +1 -0
- package/dist/witness/page-observer.d.ts +20 -0
- package/dist/witness/page-observer.d.ts.map +1 -0
- package/dist/witness/page-observer.js +520 -0
- package/dist/witness/page-observer.js.map +1 -0
- package/dist/witness/server.d.ts.map +1 -1
- package/dist/witness/server.js +201 -1
- package/dist/witness/server.js.map +1 -1
- package/dist/witness/types.d.ts +82 -0
- package/dist/witness/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { BehaviorExecuteRequest, BehaviorExecuteResponse, BehaviorPrincipalRequest, BehaviorPrincipalResponse, BrowserActionRequest, BrowserActionResponse, BrowserSurfaceRequest, BrowserVisibleRequest, BrowserVisibleResponse, IntervalCloseResponse, IntervalOpenResponse, PersistenceRequest, PersistenceResponse, PreObservationRequest, PreObservationResponse, RecordsRequest, RecordsResponse, SessionIdentityRequest, SessionIdentityResponse, SessionPageOriginRequest, SessionPageOriginResponse, SessionResolveRequest, SessionResolveResponse } from '../witness/types.js';
|
|
1
|
+
import type { BehaviorExecuteRequest, BehaviorExecuteResponse, BehaviorPrincipalRequest, BehaviorPrincipalResponse, BrowserActionRequest, BrowserActionResponse, BrowserSurfaceRequest, BrowserVisibleRequest, BrowserVisibleResponse, IntervalCloseResponse, IntervalOpenResponse, PersistenceRequest, PersistenceResponse, PreObservationRequest, PreObservationResponse, RecordsRequest, RecordsResponse, SessionIdentityRequest, SessionIdentityResponse, SessionPageOriginRequest, SessionPageOriginResponse, SessionPageObserverRequest, SessionPageObserverFlushRequest, SessionResolveRequest, SessionResolveResponse } from '../witness/types.js';
|
|
2
|
+
export type { SessionPageObserverFlushRequest };
|
|
2
3
|
/** A witness call that failed (status + single-cause diagnostic). */
|
|
3
4
|
export declare class WitnessRequestError extends Error {
|
|
4
5
|
readonly status: number;
|
|
@@ -74,6 +75,14 @@ export declare class WitnessClient {
|
|
|
74
75
|
* is running under.
|
|
75
76
|
*/
|
|
76
77
|
reportSessionPageOrigins(request: SessionPageOriginRequest): Promise<SessionPageOriginResponse>;
|
|
78
|
+
/** POST /sessions/page-observer registers the fixture-launched browser with the witness. */
|
|
79
|
+
registerPageObserver(request: SessionPageObserverRequest): Promise<{
|
|
80
|
+
registered: true;
|
|
81
|
+
}>;
|
|
82
|
+
/** POST /sessions/page-observer/flush persists every quiet visit before the runner closes Chromium. */
|
|
83
|
+
flushPageObserver(request: SessionPageObserverFlushRequest, timeoutMs?: number): Promise<{
|
|
84
|
+
flushed: true;
|
|
85
|
+
}>;
|
|
77
86
|
/**
|
|
78
87
|
* POST /sessions/intervals/open (Phase 1): marks the start of a
|
|
79
88
|
* UI-action observation interval on the witness's monotonic clock.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"witness-client.d.ts","sourceRoot":"","sources":["../../src/client/witness-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"witness-client.d.ts","sourceRoot":"","sources":["../../src/client/witness-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { appendFileSync, mkdirSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import { ENV_RUN_ID, ENV_RUN_TOKEN, ENV_STATE_DIR, ENV_WITNESS_URL, RUN_HEADER, WITNESS_URL_FILE, } from '../constants.js';
|
|
3
|
+
import { ENV_RUN_ID, ENV_RUN_TOKEN, ENV_STATE_DIR, ENV_WITNESS_URL, PAGE_OBSERVER_FLUSH_TIMEOUT_MS, RUN_HEADER, WITNESS_URL_FILE, } from '../constants.js';
|
|
4
4
|
/** A witness call that failed (status + single-cause diagnostic). */
|
|
5
5
|
export class WitnessRequestError extends Error {
|
|
6
6
|
status;
|
|
@@ -148,6 +148,14 @@ export class WitnessClient {
|
|
|
148
148
|
async reportSessionPageOrigins(request) {
|
|
149
149
|
return this.request('/sessions/page-origins', request);
|
|
150
150
|
}
|
|
151
|
+
/** POST /sessions/page-observer registers the fixture-launched browser with the witness. */
|
|
152
|
+
async registerPageObserver(request) {
|
|
153
|
+
return this.request('/sessions/page-observer', request);
|
|
154
|
+
}
|
|
155
|
+
/** POST /sessions/page-observer/flush persists every quiet visit before the runner closes Chromium. */
|
|
156
|
+
async flushPageObserver(request, timeoutMs = PAGE_OBSERVER_FLUSH_TIMEOUT_MS) {
|
|
157
|
+
return this.request('/sessions/page-observer/flush', request, timeoutMs);
|
|
158
|
+
}
|
|
151
159
|
/**
|
|
152
160
|
* POST /sessions/intervals/open (Phase 1): marks the start of a
|
|
153
161
|
* UI-action observation interval on the witness's monotonic clock.
|
|
@@ -295,9 +303,9 @@ export class WitnessClient {
|
|
|
295
303
|
const records = isObject(body) && Array.isArray(body['records']) ? body['records'] : [];
|
|
296
304
|
return { records: records };
|
|
297
305
|
}
|
|
298
|
-
async request(path, payload) {
|
|
306
|
+
async request(path, payload, timeoutMs = this.timeoutMs) {
|
|
299
307
|
const controller = new AbortController();
|
|
300
|
-
const timer = setTimeout(() => controller.abort(),
|
|
308
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
301
309
|
let response;
|
|
302
310
|
try {
|
|
303
311
|
response = await fetch(`${this.url}${path}`, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"witness-client.js","sourceRoot":"","sources":["../../src/client/witness-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,UAAU,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,EACV,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"witness-client.js","sourceRoot":"","sources":["../../src/client/witness-client.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -199,6 +199,21 @@ export declare const DIAGNOSTICS_REPORT_FILE = "diagnostics.json";
|
|
|
199
199
|
export declare const WITNESS_URL_FILE = "witness-url.json";
|
|
200
200
|
/** Default per-witness-call timeout (pin #7: 5s). */
|
|
201
201
|
export declare const DEFAULT_REQUEST_TIMEOUT_MS = 5000;
|
|
202
|
+
/** Bounded phases of one engine page visit; sweep RPCs budget each visited route. */
|
|
203
|
+
export declare const ENGINE_PAGE_VISIT_STEP_TIMEOUT_MS = 15000;
|
|
204
|
+
export declare const ENGINE_PAGE_VISIT_ADDRESS_TIMEOUT_MS = 1000;
|
|
205
|
+
export declare const ENGINE_PAGE_VISIT_SETTLE_MS = 300;
|
|
206
|
+
/** Bounded wait for in-flight app data requests before a visit is graded. */
|
|
207
|
+
export declare const ENGINE_PAGE_VISIT_API_SETTLE_TIMEOUT_MS = 15000;
|
|
208
|
+
export declare const ENGINE_PAGE_VISIT_BUDGET_MS: number;
|
|
209
|
+
/**
|
|
210
|
+
* Bounded server-side page-observer flush: one quiet window, the app-data
|
|
211
|
+
* settle budget, the peer-address lookup, and the settled DOM read — the
|
|
212
|
+
* longest wait the observer's flush RPC can legitimately spend.
|
|
213
|
+
*/
|
|
214
|
+
export declare const PAGE_OBSERVER_FLUSH_BUDGET_MS: number;
|
|
215
|
+
/** Client per-call timeout for the flush RPC: the bounded flush plus a stated 2 s margin. */
|
|
216
|
+
export declare const PAGE_OBSERVER_FLUSH_TIMEOUT_MS: number;
|
|
202
217
|
/** The loopback hostname the witness, proxy, and fixture servers bind. */
|
|
203
218
|
export declare const LOOPBACK_HOSTNAME = "127.0.0.1";
|
|
204
219
|
/** Loopback-equivalent hostnames the witness accepts as attestation subjects. */
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -202,6 +202,27 @@ export const DIAGNOSTICS_REPORT_FILE = 'diagnostics.json';
|
|
|
202
202
|
export const WITNESS_URL_FILE = 'witness-url.json';
|
|
203
203
|
/** Default per-witness-call timeout (pin #7: 5s). */
|
|
204
204
|
export const DEFAULT_REQUEST_TIMEOUT_MS = 5000;
|
|
205
|
+
/** Bounded phases of one engine page visit; sweep RPCs budget each visited route. */
|
|
206
|
+
export const ENGINE_PAGE_VISIT_STEP_TIMEOUT_MS = 15_000;
|
|
207
|
+
export const ENGINE_PAGE_VISIT_ADDRESS_TIMEOUT_MS = 1_000;
|
|
208
|
+
export const ENGINE_PAGE_VISIT_SETTLE_MS = 300;
|
|
209
|
+
/** Bounded wait for in-flight app data requests before a visit is graded. */
|
|
210
|
+
export const ENGINE_PAGE_VISIT_API_SETTLE_TIMEOUT_MS = ENGINE_PAGE_VISIT_STEP_TIMEOUT_MS;
|
|
211
|
+
export const ENGINE_PAGE_VISIT_BUDGET_MS = 2 * ENGINE_PAGE_VISIT_STEP_TIMEOUT_MS +
|
|
212
|
+
ENGINE_PAGE_VISIT_ADDRESS_TIMEOUT_MS +
|
|
213
|
+
ENGINE_PAGE_VISIT_SETTLE_MS +
|
|
214
|
+
ENGINE_PAGE_VISIT_API_SETTLE_TIMEOUT_MS;
|
|
215
|
+
/**
|
|
216
|
+
* Bounded server-side page-observer flush: one quiet window, the app-data
|
|
217
|
+
* settle budget, the peer-address lookup, and the settled DOM read — the
|
|
218
|
+
* longest wait the observer's flush RPC can legitimately spend.
|
|
219
|
+
*/
|
|
220
|
+
export const PAGE_OBSERVER_FLUSH_BUDGET_MS = ENGINE_PAGE_VISIT_SETTLE_MS +
|
|
221
|
+
ENGINE_PAGE_VISIT_ADDRESS_TIMEOUT_MS +
|
|
222
|
+
1_000 +
|
|
223
|
+
ENGINE_PAGE_VISIT_API_SETTLE_TIMEOUT_MS;
|
|
224
|
+
/** Client per-call timeout for the flush RPC: the bounded flush plus a stated 2 s margin. */
|
|
225
|
+
export const PAGE_OBSERVER_FLUSH_TIMEOUT_MS = PAGE_OBSERVER_FLUSH_BUDGET_MS + 2_000;
|
|
205
226
|
/** The loopback hostname the witness, proxy, and fixture servers bind. */
|
|
206
227
|
export const LOOPBACK_HOSTNAME = '127.0.0.1';
|
|
207
228
|
/** Loopback-equivalent hostnames the witness accepts as attestation subjects. */
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDP app-data settlement tracker for the page-proof channels (currently
|
|
3
|
+
* wired into the engine's swept visits; built to be shared verbatim with
|
|
4
|
+
* the browser tests' observed channel).
|
|
5
|
+
*
|
|
6
|
+
* Chromium finishes a fetch's network load (CDP `Network.loadingFinished`)
|
|
7
|
+
* only once the browser considers the exchange done, which on real apps can
|
|
8
|
+
* lag behind "headers + every byte arrived" while the page never touches the
|
|
9
|
+
* body (`if (!res.ok) return null`). This tracker replaces the Playwright
|
|
10
|
+
* request/response/requestfinished/requestfailed tracking with the browser's
|
|
11
|
+
* own network events, keyed by CDP requestId, and settles one tracked
|
|
12
|
+
* exchange when EITHER:
|
|
13
|
+
*
|
|
14
|
+
* (a) `Network.loadingFinished` arrives, OR
|
|
15
|
+
* (b) response headers declared a `Content-Length` N and the bytes
|
|
16
|
+
* received for the exchange reach N — `dataReceived.encodedDataLength`
|
|
17
|
+
* when the response carries a non-identity `content-encoding` (the
|
|
18
|
+
* declared length is the wire size), else `dataReceived.dataLength`
|
|
19
|
+
* (decoded == wire for identity).
|
|
20
|
+
*
|
|
21
|
+
* A declared length of 0 settles at the headers. An unread body without a
|
|
22
|
+
* declared length (chunked or connection-delimited) that the browser never
|
|
23
|
+
* finishes stays outstanding — conservative: unverifiable data never proves
|
|
24
|
+
* a page. Bytes short of the declared length at grading time leave the
|
|
25
|
+
* exchange outstanding; a dead body (`Network.loadingFailed`, e.g.
|
|
26
|
+
* `net::ERR_CONTENT_LENGTH_MISMATCH`) is a failure exactly as before.
|
|
27
|
+
* Redirect hops never complete by bytes: a mid-chain hop's full body says
|
|
28
|
+
* nothing about the chain's final response, so a redirected exchange
|
|
29
|
+
* settles only via (a) or failure. `net::ERR_ABORTED` cancels keep their
|
|
30
|
+
* superseded-retry excuse in the shared grader (unchanged).
|
|
31
|
+
*
|
|
32
|
+
* TYPE-ONLY: no Playwright import at runtime — the CDP session is opened
|
|
33
|
+
* structurally on the page the channel already holds.
|
|
34
|
+
*/
|
|
35
|
+
import type { Page } from 'playwright';
|
|
36
|
+
/** One CDP-tracked app data exchange on one page. */
|
|
37
|
+
export interface TrackedApiExchange {
|
|
38
|
+
/** CDP network request id (stable across the exchange's redirect hops). */
|
|
39
|
+
readonly requestId: string;
|
|
40
|
+
/** Uppercase method of the exchange's current hop. */
|
|
41
|
+
method: string;
|
|
42
|
+
/** Full URL of the exchange's current hop. */
|
|
43
|
+
url: string;
|
|
44
|
+
}
|
|
45
|
+
/** Response headers of one tracked exchange hop, collected at arrival. */
|
|
46
|
+
export interface TrackedApiResponseHeaders {
|
|
47
|
+
/** Full response URL (the hop's URL). */
|
|
48
|
+
url: string;
|
|
49
|
+
/** Response status the app answered. */
|
|
50
|
+
status: number;
|
|
51
|
+
/** Remote peer address; null when none was reported (e.g. local fulfill). */
|
|
52
|
+
remoteAddress: string | null;
|
|
53
|
+
/** Response content type; null when the hop declared none. */
|
|
54
|
+
contentType: string | null;
|
|
55
|
+
}
|
|
56
|
+
/** How one tracked exchange left the browser's network stack. */
|
|
57
|
+
export type TrackedApiSettlement = {
|
|
58
|
+
kind: 'completed';
|
|
59
|
+
} | {
|
|
60
|
+
kind: 'failed';
|
|
61
|
+
errorText: string;
|
|
62
|
+
canceled: boolean;
|
|
63
|
+
};
|
|
64
|
+
/** Channel hooks the tracker calls on the browser's network events. */
|
|
65
|
+
export interface ApiSettlementHost {
|
|
66
|
+
/** The app-origin/resource-type filter (the channels' existing rule). */
|
|
67
|
+
isAppDataExchange(url: URL, resourceType: string): boolean;
|
|
68
|
+
/** A tracked exchange hop started (the channel attributes it to its window). */
|
|
69
|
+
onExchangeOpen(exchange: TrackedApiExchange): void;
|
|
70
|
+
/** Response headers arrived; every redirect hop is reported separately. */
|
|
71
|
+
onExchangeHeaders(exchange: TrackedApiExchange, headers: TrackedApiResponseHeaders): void;
|
|
72
|
+
/** The exchange completed or failed; never called twice for one exchange. */
|
|
73
|
+
onExchangeSettled(exchange: TrackedApiExchange, settlement: TrackedApiSettlement): void;
|
|
74
|
+
/** Raw network activity; wakes the channels' bounded drain waits. */
|
|
75
|
+
onActivity(): void;
|
|
76
|
+
}
|
|
77
|
+
/** One live CDP network session tracking one page; detach when done. */
|
|
78
|
+
export interface ApiSettlementTracker {
|
|
79
|
+
detach(): Promise<void>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Tracks the app data exchanges of one page over its own CDP network
|
|
83
|
+
* session (`page.context().newCDPSession(page)` + `Network.enable`).
|
|
84
|
+
* Opening the session fails loud: a channel that cannot observe the
|
|
85
|
+
* browser's network events must never grade pages as settled.
|
|
86
|
+
*/
|
|
87
|
+
export declare function trackPageApiSettlement(page: Page, host: ApiSettlementHost): Promise<ApiSettlementTracker>;
|
|
88
|
+
//# sourceMappingURL=api-settlement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-settlement.d.ts","sourceRoot":"","sources":["../../src/witness/api-settlement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,KAAK,EAAc,IAAI,EAAE,MAAM,YAAY,CAAC;AAEnD,qDAAqD;AACrD,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,0EAA0E;AAC1E,MAAM,WAAW,yBAAyB;IACxC,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,8DAA8D;IAC9D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,iEAAiE;AACjE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7D,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3D,gFAAgF;IAChF,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnD,2EAA2E;IAC3E,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC1F,6EAA6E;IAC7E,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACxF,qEAAqE;IACrE,UAAU,IAAI,IAAI,CAAC;CACpB;AAED,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAiBD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAwG/G"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/** CDP resource types that carry application data exchanges (mapped). */
|
|
2
|
+
const CDP_API_RESOURCE_TYPES = { Fetch: 'fetch', XHR: 'xhr' };
|
|
3
|
+
/**
|
|
4
|
+
* Tracks the app data exchanges of one page over its own CDP network
|
|
5
|
+
* session (`page.context().newCDPSession(page)` + `Network.enable`).
|
|
6
|
+
* Opening the session fails loud: a channel that cannot observe the
|
|
7
|
+
* browser's network events must never grade pages as settled.
|
|
8
|
+
*/
|
|
9
|
+
export async function trackPageApiSettlement(page, host) {
|
|
10
|
+
const session = await page.context().newCDPSession(page);
|
|
11
|
+
const exchanges = new Map();
|
|
12
|
+
const settle = (record, settlement) => {
|
|
13
|
+
if (record.settled)
|
|
14
|
+
return;
|
|
15
|
+
record.settled = true;
|
|
16
|
+
exchanges.delete(record.requestId);
|
|
17
|
+
host.onExchangeSettled(record, settlement);
|
|
18
|
+
};
|
|
19
|
+
const complete = (record) => settle(record, { kind: 'completed' });
|
|
20
|
+
const fail = (record, errorText, canceled) => settle(record, { kind: 'failed', errorText, canceled });
|
|
21
|
+
session.on('Network.requestWillBeSent', (params) => {
|
|
22
|
+
if (params.redirectResponse !== undefined) {
|
|
23
|
+
const record = exchanges.get(params.requestId);
|
|
24
|
+
if (record !== undefined) {
|
|
25
|
+
// The completed hop: report its headers, then keep the exchange
|
|
26
|
+
// outstanding for the next hop (bytes may no longer complete it).
|
|
27
|
+
record.redirected = true;
|
|
28
|
+
record.declaredLength = null;
|
|
29
|
+
record.receivedBytes = 0;
|
|
30
|
+
host.onActivity();
|
|
31
|
+
host.onExchangeHeaders(record, {
|
|
32
|
+
url: params.redirectResponse.url,
|
|
33
|
+
status: params.redirectResponse.status,
|
|
34
|
+
remoteAddress: params.redirectResponse.remoteIPAddress ?? null,
|
|
35
|
+
contentType: headerOf(params.redirectResponse.headers, 'content-type'),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
let url;
|
|
40
|
+
try {
|
|
41
|
+
url = new URL(params.request.url);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const resourceType = CDP_API_RESOURCE_TYPES[params.type ?? ''] ?? params.type ?? '';
|
|
47
|
+
if (!host.isAppDataExchange(url, resourceType))
|
|
48
|
+
return;
|
|
49
|
+
const existing = exchanges.get(params.requestId);
|
|
50
|
+
if (existing !== undefined) {
|
|
51
|
+
// Redirect hop of an already-tracked exchange: attribution (and the
|
|
52
|
+
// record identity) stay with the exchange; only the current hop's
|
|
53
|
+
// method/URL move forward. Every hop counts as an open so channel
|
|
54
|
+
// correlation per method+URL sees exactly one open per hop.
|
|
55
|
+
existing.method = params.request.method;
|
|
56
|
+
existing.url = params.request.url;
|
|
57
|
+
host.onExchangeOpen(existing);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const record = {
|
|
61
|
+
requestId: params.requestId,
|
|
62
|
+
method: params.request.method,
|
|
63
|
+
url: params.request.url,
|
|
64
|
+
declaredLength: null,
|
|
65
|
+
compressed: false,
|
|
66
|
+
receivedBytes: 0,
|
|
67
|
+
redirected: false,
|
|
68
|
+
settled: false,
|
|
69
|
+
};
|
|
70
|
+
exchanges.set(params.requestId, record);
|
|
71
|
+
host.onExchangeOpen(record);
|
|
72
|
+
host.onActivity();
|
|
73
|
+
});
|
|
74
|
+
session.on('Network.responseReceived', (params) => {
|
|
75
|
+
const record = exchanges.get(params.requestId);
|
|
76
|
+
if (record === undefined)
|
|
77
|
+
return;
|
|
78
|
+
host.onActivity();
|
|
79
|
+
record.declaredLength = declaredContentLength(params.response.headers);
|
|
80
|
+
record.compressed = hasNonIdentityEncoding(params.response.headers);
|
|
81
|
+
record.receivedBytes = 0;
|
|
82
|
+
host.onExchangeHeaders(record, {
|
|
83
|
+
url: params.response.url,
|
|
84
|
+
status: params.response.status,
|
|
85
|
+
remoteAddress: params.response.remoteIPAddress ?? null,
|
|
86
|
+
contentType: headerOf(params.response.headers, 'content-type'),
|
|
87
|
+
});
|
|
88
|
+
if (!record.redirected && record.declaredLength === 0)
|
|
89
|
+
complete(record);
|
|
90
|
+
});
|
|
91
|
+
session.on('Network.dataReceived', (params) => {
|
|
92
|
+
const record = exchanges.get(params.requestId);
|
|
93
|
+
if (record === undefined)
|
|
94
|
+
return;
|
|
95
|
+
host.onActivity();
|
|
96
|
+
if (record.settled || record.redirected || record.declaredLength === null)
|
|
97
|
+
return;
|
|
98
|
+
record.receivedBytes += record.compressed ? params.encodedDataLength : params.dataLength;
|
|
99
|
+
if (record.receivedBytes >= record.declaredLength)
|
|
100
|
+
complete(record);
|
|
101
|
+
});
|
|
102
|
+
session.on('Network.loadingFinished', (params) => {
|
|
103
|
+
const record = exchanges.get(params.requestId);
|
|
104
|
+
if (record === undefined)
|
|
105
|
+
return;
|
|
106
|
+
host.onActivity();
|
|
107
|
+
complete(record);
|
|
108
|
+
});
|
|
109
|
+
session.on('Network.loadingFailed', (params) => {
|
|
110
|
+
const record = exchanges.get(params.requestId);
|
|
111
|
+
if (record === undefined)
|
|
112
|
+
return;
|
|
113
|
+
host.onActivity();
|
|
114
|
+
fail(record, params.errorText, params.canceled === true);
|
|
115
|
+
});
|
|
116
|
+
await session.send('Network.enable', {});
|
|
117
|
+
return {
|
|
118
|
+
async detach() {
|
|
119
|
+
// Teardown must never mask the channel's own error (a page or browser
|
|
120
|
+
// that died first has no session left to detach).
|
|
121
|
+
try {
|
|
122
|
+
await session.detach();
|
|
123
|
+
}
|
|
124
|
+
catch { }
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/** Case-insensitive Content-Length of a CDP header bag; null when absent. */
|
|
129
|
+
function declaredContentLength(headers) {
|
|
130
|
+
for (const [name, value] of Object.entries(headers)) {
|
|
131
|
+
if (name.toLowerCase() !== 'content-length')
|
|
132
|
+
continue;
|
|
133
|
+
const length = Number(value);
|
|
134
|
+
return Number.isFinite(length) && length >= 0 ? length : null;
|
|
135
|
+
}
|
|
136
|
+
return null;
|
|
137
|
+
}
|
|
138
|
+
/** Case-insensitive single header of a CDP header bag; null when absent. */
|
|
139
|
+
function headerOf(headers, wanted) {
|
|
140
|
+
for (const [name, value] of Object.entries(headers)) {
|
|
141
|
+
if (name.toLowerCase() === wanted)
|
|
142
|
+
return value;
|
|
143
|
+
}
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
/** True when the response body travels with a non-identity content coding. */
|
|
147
|
+
function hasNonIdentityEncoding(headers) {
|
|
148
|
+
for (const [name, value] of Object.entries(headers)) {
|
|
149
|
+
if (name.toLowerCase() !== 'content-encoding')
|
|
150
|
+
continue;
|
|
151
|
+
return value
|
|
152
|
+
.split(',')
|
|
153
|
+
.some((coding) => {
|
|
154
|
+
const normalized = coding.trim().toLowerCase();
|
|
155
|
+
return normalized !== '' && normalized !== 'identity';
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=api-settlement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-settlement.js","sourceRoot":"","sources":["../../src/witness/api-settlement.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,10 +27,21 @@
|
|
|
27
27
|
* Surface selectors are LOCATORS, never proof: a lying descriptor only
|
|
28
28
|
* makes the engine fail to find elements (fail closed).
|
|
29
29
|
*/
|
|
30
|
-
import type { Browser, Page } from 'playwright';
|
|
30
|
+
import type { Browser, BrowserContextOptions, Page } from 'playwright';
|
|
31
|
+
import { type ObservedPageVisit, type PageRoute, type PageVisitVerdict } from './page-observation.js';
|
|
31
32
|
import { type SurfaceDescriptor, type SurfaceStep } from '../surface.js';
|
|
32
33
|
/** The UI operations the engine can perform (constrained subset). */
|
|
33
|
-
export type EngineOperation = 'create' | 'read' | 'update' | 'delete';
|
|
34
|
+
export type EngineOperation = 'create' | 'read' | 'update' | 'delete' | 'visit';
|
|
35
|
+
export interface EnginePageVisitObservation {
|
|
36
|
+
visit: ObservedPageVisit;
|
|
37
|
+
verdict: PageVisitVerdict;
|
|
38
|
+
}
|
|
39
|
+
/** Opens one trusted app route and grades it with the page-observation grader. */
|
|
40
|
+
export declare function driveEngineVisit(page: Page, appBase: string, route: PageRoute, pages: readonly PageRoute[], options?: {
|
|
41
|
+
loginRoutes?: readonly string[];
|
|
42
|
+
errorMarkers?: readonly string[];
|
|
43
|
+
liveChannels?: readonly string[];
|
|
44
|
+
}): Promise<EnginePageVisitObservation>;
|
|
34
45
|
/** One app-origin exchange the engine captured during an action. */
|
|
35
46
|
export interface EngineCapturedExchange {
|
|
36
47
|
/** Uppercase method (GET, POST, ...). */
|
|
@@ -159,7 +170,7 @@ export declare class EngineBrowserManager {
|
|
|
159
170
|
* EngineBrowserError: when Chromium cannot launch (fail closed —
|
|
160
171
|
* the capability is honestly unavailable at runtime).
|
|
161
172
|
*/
|
|
162
|
-
pageFor(sessionId: string): Promise<Page>;
|
|
173
|
+
pageFor(sessionId: string, storageState?: BrowserContextOptions['storageState']): Promise<Page>;
|
|
163
174
|
/**
|
|
164
175
|
* Closes and forgets one session's engine context (session seal).
|
|
165
176
|
* Late engine calls for the session then recreate nothing — callers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/witness/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAMH,OAAO,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/witness/browser.ts"],"names":[],"mappings":"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"}
|