@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.
Files changed (41) hide show
  1. package/dist/client/witness-client.d.ts +10 -1
  2. package/dist/client/witness-client.d.ts.map +1 -1
  3. package/dist/client/witness-client.js +11 -3
  4. package/dist/client/witness-client.js.map +1 -1
  5. package/dist/constants.d.ts +15 -0
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +21 -0
  8. package/dist/constants.js.map +1 -1
  9. package/dist/witness/api-settlement.d.ts +88 -0
  10. package/dist/witness/api-settlement.d.ts.map +1 -0
  11. package/dist/witness/api-settlement.js +160 -0
  12. package/dist/witness/api-settlement.js.map +1 -0
  13. package/dist/witness/browser.d.ts +14 -3
  14. package/dist/witness/browser.d.ts.map +1 -1
  15. package/dist/witness/browser.js +208 -2
  16. package/dist/witness/browser.js.map +1 -1
  17. package/dist/witness/classifications.d.ts +4 -6
  18. package/dist/witness/classifications.d.ts.map +1 -1
  19. package/dist/witness/classifications.js.map +1 -1
  20. package/dist/witness/page-live-channels.d.ts +46 -0
  21. package/dist/witness/page-live-channels.d.ts.map +1 -0
  22. package/dist/witness/page-live-channels.js +68 -0
  23. package/dist/witness/page-live-channels.js.map +1 -0
  24. package/dist/witness/page-observation.d.ts +108 -0
  25. package/dist/witness/page-observation.d.ts.map +1 -0
  26. package/dist/witness/page-observation.js +134 -0
  27. package/dist/witness/page-observation.js.map +1 -0
  28. package/dist/witness/page-observer-registration.d.ts +86 -0
  29. package/dist/witness/page-observer-registration.d.ts.map +1 -0
  30. package/dist/witness/page-observer-registration.js +258 -0
  31. package/dist/witness/page-observer-registration.js.map +1 -0
  32. package/dist/witness/page-observer.d.ts +20 -0
  33. package/dist/witness/page-observer.d.ts.map +1 -0
  34. package/dist/witness/page-observer.js +520 -0
  35. package/dist/witness/page-observer.js.map +1 -0
  36. package/dist/witness/server.d.ts.map +1 -1
  37. package/dist/witness/server.js +201 -1
  38. package/dist/witness/server.js.map +1 -1
  39. package/dist/witness/types.d.ts +82 -0
  40. package/dist/witness/types.d.ts.map +1 -1
  41. package/package.json +2 -2
@@ -1,4 +1,208 @@
1
+ import { apiRequestsSettled, gradePageVisit, } from './page-observation.js';
2
+ import { trackPageApiSettlement } from './api-settlement.js';
3
+ import { LiveChannelTracker, appHostsOfOrigins } from './page-live-channels.js';
4
+ import { ENGINE_PAGE_VISIT_STEP_TIMEOUT_MS, ENGINE_PAGE_VISIT_SETTLE_MS, ENGINE_PAGE_VISIT_API_SETTLE_TIMEOUT_MS, } from '../constants.js';
1
5
  import { declaredSurfaceFields, renderSurfaceTemplate, } from '../surface.js';
6
+ /** The request resource types that carry application data exchanges. */
7
+ const API_RESOURCE_TYPES = { fetch: true, xhr: true };
8
+ /** Opens one trusted app route and grades it with the page-observation grader. */
9
+ export async function driveEngineVisit(page, appBase, route, pages, options = {}) {
10
+ const appOrigin = new URL(appBase).origin;
11
+ const live = new LiveChannelTracker(options.liveChannels ?? [], appHostsOfOrigins([appBase]));
12
+ const tryParseUrl = (raw) => {
13
+ try {
14
+ return new URL(raw);
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ };
20
+ const isLiveExchangeUrl = (raw) => {
21
+ const parsed = tryParseUrl(raw);
22
+ return parsed !== null && live.isLiveByUrl(parsed);
23
+ };
24
+ const destination = new URL(route.path, appBase);
25
+ if (destination.origin !== appOrigin)
26
+ throw new EngineBrowserError('browser.visit refuses a page route outside the trusted app origin');
27
+ const navigations = [];
28
+ const exceptions = [];
29
+ const apiResponses = [];
30
+ /** App data requests (fetch/XHR or /api/) started but not yet settled. */
31
+ const outstandingRequests = new Set();
32
+ /** Tracked app data requests that failed, with the browser failure text. */
33
+ const failedApiRequests = [];
34
+ /** Tracked app data requests the browser's network events completed. */
35
+ const completedApiRequests = [];
36
+ /** Bumped on every tracked event; wakes the drain/quiet wait. */
37
+ let activityVersion = 0;
38
+ let activityNotify;
39
+ const noteActivity = () => {
40
+ activityVersion += 1;
41
+ activityNotify?.();
42
+ };
43
+ const foreignNavigations = [];
44
+ /** The app data exchange check for a network event URL. */
45
+ const isAppDataExchange = (url, resourceType) => (url.origin === appOrigin &&
46
+ (url.pathname.startsWith('/api/') || API_RESOURCE_TYPES[resourceType] === true)) ||
47
+ live.isLiveByUrl(url);
48
+ const onNavigation = (frame) => {
49
+ if (frame !== page.mainFrame())
50
+ return;
51
+ navigations.push(frame.url());
52
+ noteActivity();
53
+ try {
54
+ if (new URL(frame.url()).origin !== appOrigin)
55
+ foreignNavigations.push(frame.url());
56
+ }
57
+ catch { }
58
+ };
59
+ const onError = (error) => {
60
+ exceptions.push(error.message);
61
+ noteActivity();
62
+ };
63
+ page.on('framenavigated', onNavigation);
64
+ page.on('pageerror', onError);
65
+ let tracker;
66
+ try {
67
+ // Settlement completion comes from the browser's own network events (one
68
+ // CDP session per visited page): loadingFinished, or every declared
69
+ // Content-Length byte received — even when the page never reads the body.
70
+ tracker = await trackPageApiSettlement(page, {
71
+ isAppDataExchange,
72
+ onExchangeOpen: (exchange) => {
73
+ // A live channel never holds the settle wait; it is listed at
74
+ // open (a never-answered long poll has no headers to list at).
75
+ if (isLiveExchangeUrl(exchange.url)) {
76
+ const openUrl = tryParseUrl(exchange.url);
77
+ if (openUrl !== null)
78
+ live.note(openUrl);
79
+ }
80
+ else {
81
+ outstandingRequests.add(exchange);
82
+ }
83
+ noteActivity();
84
+ },
85
+ onExchangeHeaders: (exchange, headers) => {
86
+ const headerUrl = tryParseUrl(headers.url);
87
+ if (headerUrl !== null && live.isLiveByUrl(headerUrl)) {
88
+ live.note(headerUrl);
89
+ noteActivity();
90
+ return;
91
+ }
92
+ if (LiveChannelTracker.isEventStream(headers.contentType)) {
93
+ // An endless stream is never a finished app data request:
94
+ // unblock the settle wait and list it instead.
95
+ outstandingRequests.delete(exchange);
96
+ if (headerUrl !== null)
97
+ live.note(headerUrl);
98
+ noteActivity();
99
+ return;
100
+ }
101
+ apiResponses.push({
102
+ url: headers.url,
103
+ status: headers.status,
104
+ remoteAddress: headers.remoteAddress,
105
+ proxied: headers.remoteAddress !== null,
106
+ });
107
+ noteActivity();
108
+ },
109
+ onExchangeSettled: (exchange, settlement) => {
110
+ if (!outstandingRequests.delete(exchange))
111
+ return;
112
+ if (settlement.kind === 'completed') {
113
+ completedApiRequests.push({ method: exchange.method, url: exchange.url });
114
+ }
115
+ else {
116
+ // A failed app data request can never produce a verifiable
117
+ // response; whether it leaves the visit unsettled is decided at
118
+ // grading time (a client-side cancel superseded by a completed
119
+ // same-URL request may still count as settled).
120
+ failedApiRequests.push({ method: exchange.method, url: exchange.url, errorText: settlement.errorText });
121
+ }
122
+ noteActivity();
123
+ },
124
+ onActivity: noteActivity,
125
+ });
126
+ await page.goto(destination.href, { waitUntil: 'domcontentloaded', timeout: ENGINE_PAGE_VISIT_STEP_TIMEOUT_MS });
127
+ if (foreignNavigations.length > 0) {
128
+ throw new EngineBrowserError(`browser.visit observed a navigation outside the trusted app origin: ${foreignNavigations[0]}`);
129
+ }
130
+ // Wait for complete exchanges AND a quiet window after the last activity
131
+ // (request start/bytes/completion/failure, response headers, page error,
132
+ // navigation) within the SAME fixed API settle budget: the existing
133
+ // SETTLE window is spent AFTER completion, so body-driven JS/DOM and
134
+ // errors scheduled by completed responses land before grading. Fetches
135
+ // starting during the quiet window are drained again under the same
136
+ // deadline. Event-driven wakeups only — no retries, no busy polling.
137
+ // Worst case per route: STEP + API_SETTLE + STEP <= the shared sweep
138
+ // budget.
139
+ const apiDeadline = Date.now() + ENGINE_PAGE_VISIT_API_SETTLE_TIMEOUT_MS;
140
+ for (;;) {
141
+ while (outstandingRequests.size > 0) {
142
+ const remaining = apiDeadline - Date.now();
143
+ if (remaining <= 0)
144
+ break;
145
+ const woken = new Promise((resolve) => { activityNotify = resolve; });
146
+ if (outstandingRequests.size === 0)
147
+ break;
148
+ let waitTimeout;
149
+ try {
150
+ await Promise.race([
151
+ woken,
152
+ new Promise((resolve) => { waitTimeout = setTimeout(() => resolve(null), remaining); }),
153
+ ]);
154
+ }
155
+ finally {
156
+ clearTimeout(waitTimeout);
157
+ }
158
+ }
159
+ const remaining = apiDeadline - Date.now();
160
+ if (remaining <= 0)
161
+ break;
162
+ const versionAtQuietStart = activityVersion;
163
+ let quietTimeout;
164
+ try {
165
+ await Promise.race([
166
+ new Promise((resolve) => {
167
+ quietTimeout = setTimeout(() => resolve(), Math.min(ENGINE_PAGE_VISIT_SETTLE_MS, remaining));
168
+ }),
169
+ new Promise((resolve) => { activityNotify = resolve; }),
170
+ ]);
171
+ }
172
+ finally {
173
+ clearTimeout(quietTimeout);
174
+ }
175
+ if (activityVersion !== versionAtQuietStart || outstandingRequests.size > 0)
176
+ continue;
177
+ break;
178
+ }
179
+ const body = await page.locator('body').innerText({ timeout: ENGINE_PAGE_VISIT_STEP_TIMEOUT_MS });
180
+ const visit = {
181
+ url: page.url(),
182
+ navigations,
183
+ exceptions,
184
+ domMarkerHit: (options.errorMarkers ?? []).some((marker) => body.includes(marker)),
185
+ apiResponses,
186
+ apiRequestsSettled: apiRequestsSettled({
187
+ outstandingCount: outstandingRequests.size,
188
+ failures: failedApiRequests,
189
+ completions: completedApiRequests,
190
+ }),
191
+ liveChannels: live.snapshot(),
192
+ };
193
+ return { visit, verdict: gradePageVisit({ pages, expectedPage: route, loginRoutes: options.loginRoutes, visit }) };
194
+ }
195
+ catch (error) {
196
+ if (error instanceof EngineBrowserError)
197
+ throw error;
198
+ throw new EngineBrowserError(`browser.visit failed: ${error.message}`);
199
+ }
200
+ finally {
201
+ page.off('framenavigated', onNavigation);
202
+ page.off('pageerror', onError);
203
+ await tracker?.detach();
204
+ }
205
+ }
2
206
  /** Fail-closed engine browser error (surfaced as 409/503 downstream). */
3
207
  export class EngineBrowserError extends Error {
4
208
  constructor(message) {
@@ -116,12 +320,12 @@ export class EngineBrowserManager {
116
320
  * EngineBrowserError: when Chromium cannot launch (fail closed —
117
321
  * the capability is honestly unavailable at runtime).
118
322
  */
119
- async pageFor(sessionId) {
323
+ async pageFor(sessionId, storageState) {
120
324
  const existing = this.sessions.get(sessionId);
121
325
  if (existing !== undefined)
122
326
  return existing.page;
123
327
  const browser = await this.ensureBrowser();
124
- const context = await browser.newContext();
328
+ const context = await browser.newContext(storageState === undefined ? {} : { storageState });
125
329
  const page = await context.newPage();
126
330
  this.sessions.set(sessionId, { context, page });
127
331
  return page;
@@ -574,6 +778,8 @@ async function driveEngineActionInner(page, appBase, appOrigin, surface, operati
574
778
  requireAppRequest(exchanges, 'delete');
575
779
  return { entityId, enteredFields: deleteFields, renderedFields: rendered, exchanges };
576
780
  }
781
+ case 'visit':
782
+ throw new EngineBrowserError('browser.visit requires an explicit page route and uses driveEngineVisit');
577
783
  }
578
784
  }
579
785
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/witness/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/witness/browser.ts"],"names":[],"mappings":"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"}
@@ -6,13 +6,11 @@ export interface ClassificationView {
6
6
  plane: string;
7
7
  evidenceAdapter?: string;
8
8
  /**
9
- * Which evidence lane proves user-facing reachability (`'claims'` =
10
- * the http.endpoint lane; adapter-free). MUST ride along: without it a
11
- * claims-lane entry (user-facing, no adapter) re-validates downstream
12
- * as "user-facing resources require an 'evidenceAdapter'" and the
13
- * reporter grades the claim unclassified.
9
+ * Which evidence lane proves user-facing reachability. HTTP endpoints
10
+ * use `'claims'`; observed UI pages use `'page-observation'`. Both are
11
+ * adapter-free lanes that must survive into the engine's classification.
14
12
  */
15
- evidenceLane?: 'adapter' | 'claims';
13
+ evidenceLane?: 'adapter' | 'claims' | 'page-observation';
16
14
  lifecycle: {
17
15
  create: boolean;
18
16
  read: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"classifications.d.ts","sourceRoot":"","sources":["../../src/witness/classifications.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAG1B,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACpC,SAAS,EAAE;QACT,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACrC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;QAC1D,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;CACH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAkCnG;AAED,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,kBAAkB,CAuB9E"}
1
+ {"version":3,"file":"classifications.d.ts","sourceRoot":"","sources":["../../src/witness/classifications.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAG1B,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,kBAAkB,CAAC;IACzD,SAAS,EAAE;QACT,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACrC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;QAC1D,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;CACH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAkCnG;AAED,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,kBAAkB,CAuB9E"}
@@ -1 +1 @@
1
- {"version":3,"file":"classifications.js","sourceRoot":"","sources":["../../src/witness/classifications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"classifications.js","sourceRoot":"","sources":["../../src/witness/classifications.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Declared live channels for page visits (0.13.x): exchanges a page
3
+ * keeps open ON PURPOSE — a controller-declared same-origin path prefix,
4
+ * a WebSocket upgrade on the app host, or a `text/event-stream` response
5
+ * — are never finished app data requests. They must not hold a visit's
6
+ * settle wait and must never grade as app data evidence; each channel
7
+ * lists what it saw so the visit payload stays visible. Declared
8
+ * prefixes are controller-held configuration (`pages.liveChannels`),
9
+ * never names guessed from traffic: an undeclared long poll stays an
10
+ * app data request and still refuses a page as unsettled (fail closed).
11
+ */
12
+ /** The live channels one visit observed (listed in the record payload). */
13
+ export interface LiveChannelSnapshot {
14
+ /** Distinct live-channel request paths seen. */
15
+ count: number;
16
+ /** Sorted distinct paths (pathname only, no query). */
17
+ paths: string[];
18
+ }
19
+ /** Hosts (host[:port]) of the controller-declared trusted app origins. */
20
+ export declare function appHostsOfOrigins(origins: readonly string[]): ReadonlySet<string>;
21
+ /**
22
+ * The live-channel rules for one page (or one observation window).
23
+ * Create one per visit/window; note every live exchange and snapshot at
24
+ * grading time.
25
+ */
26
+ export declare class LiveChannelTracker {
27
+ private readonly prefixes;
28
+ private readonly appHosts;
29
+ private readonly paths;
30
+ constructor(prefixes: readonly string[], appHosts: ReadonlySet<string>);
31
+ /** A controller-declared prefix match on an app host (same-origin). */
32
+ declaredPrefix(url: URL): boolean;
33
+ /** A WebSocket upgrade on an app host (protocol fact, host-scoped). */
34
+ appWebSocket(url: URL): boolean;
35
+ /** URL-only liveness: decidable when the request opens. */
36
+ isLiveByUrl(url: URL): boolean;
37
+ /** Header-time liveness: a server-sent-events response (protocol fact). */
38
+ static isEventStream(contentType: string | null): boolean;
39
+ /** Records one live exchange (deduplicated by pathname). */
40
+ note(url: URL): void;
41
+ /** The listed channels of this visit so far. */
42
+ snapshot(): LiveChannelSnapshot;
43
+ }
44
+ /** Snapshot helper for channels that track noted paths directly. */
45
+ export declare function liveChannelSnapshot(paths: ReadonlySet<string>): LiveChannelSnapshot;
46
+ //# sourceMappingURL=page-live-channels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-live-channels.d.ts","sourceRoot":"","sources":["../../src/witness/page-live-channels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,2EAA2E;AAC3E,MAAM,WAAW,mBAAmB;IAClC,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAWjF;AAED;;;;GAIG;AACH,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAGxB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;IAGhD,uEAAuE;IACvE,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAIjC,uEAAuE;IACvE,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAI/B,2DAA2D;IAC3D,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAI9B,2EAA2E;IAC3E,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAIzD,4DAA4D;IAC5D,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAIpB,gDAAgD;IAChD,QAAQ,IAAI,mBAAmB;CAGhC;AAED,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAEnF"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Declared live channels for page visits (0.13.x): exchanges a page
3
+ * keeps open ON PURPOSE — a controller-declared same-origin path prefix,
4
+ * a WebSocket upgrade on the app host, or a `text/event-stream` response
5
+ * — are never finished app data requests. They must not hold a visit's
6
+ * settle wait and must never grade as app data evidence; each channel
7
+ * lists what it saw so the visit payload stays visible. Declared
8
+ * prefixes are controller-held configuration (`pages.liveChannels`),
9
+ * never names guessed from traffic: an undeclared long poll stays an
10
+ * app data request and still refuses a page as unsettled (fail closed).
11
+ */
12
+ /** Hosts (host[:port]) of the controller-declared trusted app origins. */
13
+ export function appHostsOfOrigins(origins) {
14
+ const hosts = new Set();
15
+ for (const origin of origins) {
16
+ try {
17
+ hosts.add(new URL(origin).host);
18
+ }
19
+ catch {
20
+ // An invalid origin contributes no host (the channels validate
21
+ // origins before this point; stay silent and safe here).
22
+ }
23
+ }
24
+ return hosts;
25
+ }
26
+ /**
27
+ * The live-channel rules for one page (or one observation window).
28
+ * Create one per visit/window; note every live exchange and snapshot at
29
+ * grading time.
30
+ */
31
+ export class LiveChannelTracker {
32
+ prefixes;
33
+ appHosts;
34
+ paths = new Set();
35
+ constructor(prefixes, appHosts) {
36
+ this.prefixes = prefixes;
37
+ this.appHosts = appHosts;
38
+ }
39
+ /** A controller-declared prefix match on an app host (same-origin). */
40
+ declaredPrefix(url) {
41
+ return this.appHosts.has(url.host) && this.prefixes.some((prefix) => url.pathname.startsWith(prefix));
42
+ }
43
+ /** A WebSocket upgrade on an app host (protocol fact, host-scoped). */
44
+ appWebSocket(url) {
45
+ return (url.protocol === 'ws:' || url.protocol === 'wss:') && this.appHosts.has(url.host);
46
+ }
47
+ /** URL-only liveness: decidable when the request opens. */
48
+ isLiveByUrl(url) {
49
+ return this.declaredPrefix(url) || this.appWebSocket(url);
50
+ }
51
+ /** Header-time liveness: a server-sent-events response (protocol fact). */
52
+ static isEventStream(contentType) {
53
+ return contentType !== null && contentType.trim().toLowerCase().startsWith('text/event-stream');
54
+ }
55
+ /** Records one live exchange (deduplicated by pathname). */
56
+ note(url) {
57
+ this.paths.add(url.pathname);
58
+ }
59
+ /** The listed channels of this visit so far. */
60
+ snapshot() {
61
+ return { count: this.paths.size, paths: [...this.paths].sort() };
62
+ }
63
+ }
64
+ /** Snapshot helper for channels that track noted paths directly. */
65
+ export function liveChannelSnapshot(paths) {
66
+ return { count: paths.size, paths: [...paths].sort() };
67
+ }
68
+ //# sourceMappingURL=page-live-channels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-live-channels.js","sourceRoot":"","sources":["../../src/witness/page-live-channels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAUH,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,OAA0B;IAC1D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;YAC/D,yDAAyD;QAC3D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAIV;IACA;IAJF,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAE3C,YACmB,QAA2B,EAC3B,QAA6B;QAD7B,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,aAAQ,GAAR,QAAQ,CAAqB;IAC7C,CAAC;IAEJ,uEAAuE;IACvE,cAAc,CAAC,GAAQ;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACxG,CAAC;IAED,uEAAuE;IACvE,YAAY,CAAC,GAAQ;QACnB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC;IAED,2DAA2D;IAC3D,WAAW,CAAC,GAAQ;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,2EAA2E;IAC3E,MAAM,CAAC,aAAa,CAAC,WAA0B;QAC7C,OAAO,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAClG,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,GAAQ;QACX,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,gDAAgD;IAChD,QAAQ;QACN,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACnE,CAAC;CACF;AAED,oEAAoE;AACpE,MAAM,UAAU,mBAAmB,CAAC,KAA0B;IAC5D,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACzD,CAAC"}
@@ -0,0 +1,108 @@
1
+ /** Pure route matching and grading for browser-observed page visits. */
2
+ import type { LiveChannelSnapshot } from './page-live-channels.js';
3
+ export interface PageRoute {
4
+ id: string;
5
+ path: string;
6
+ /**
7
+ * True only when the page's audience declares NO login (no `session` in
8
+ * the `.gateforge.yml` `pages.audiences` entry): on such a page an app
9
+ * data answer of exactly 401 IS the expected not-logged-in answer and
10
+ * does not refuse `dataOk`. Controller-held — derived from the config
11
+ * audience table, never supplied by the suite.
12
+ */
13
+ anonymous?: boolean;
14
+ }
15
+ export interface ObservedPageVisit {
16
+ url: string;
17
+ navigations: string[];
18
+ exceptions: string[];
19
+ domMarkerHit: boolean;
20
+ apiResponses: Array<{
21
+ url: string;
22
+ status: number;
23
+ remoteAddress: string | null;
24
+ proxied: boolean;
25
+ }>;
26
+ /**
27
+ * True only when every tracked app data request of the visit settled
28
+ * (response collected or request failed without ambiguity), where a
29
+ * failure counts as settled only when it was a client-side cancel
30
+ * superseded by a completed same-method/full-URL request (see
31
+ * {@link apiRequestsSettled}). A visit graded while requests were in
32
+ * flight must never read as settled.
33
+ */
34
+ apiRequestsSettled: boolean;
35
+ /**
36
+ * The declared/protocol live channels the visit kept open (a
37
+ * controller-declared path prefix, an app-host WebSocket upgrade, a
38
+ * `text/event-stream` response). They never count as app data
39
+ * evidence and never hold the settle wait; they are listed instead.
40
+ */
41
+ liveChannels: LiveChannelSnapshot;
42
+ }
43
+ /** One tracked app data request that failed without completing. */
44
+ export interface ObservedApiRequestFailure {
45
+ method: string;
46
+ url: string;
47
+ errorText: string;
48
+ }
49
+ /** One tracked app data request that reached requestfinished. */
50
+ export interface ObservedApiRequestCompletion {
51
+ method: string;
52
+ url: string;
53
+ }
54
+ /**
55
+ * Grades a visit's tracked app data request set as settled: no request is
56
+ * still outstanding, and every failure is a client-side cancel
57
+ * (`net::ERR_ABORTED`) that a completed request with the same method and
58
+ * the same full URL (origin+path+query) superseded within the same visit.
59
+ * Evaluated at grading time, so the superseding request may start before
60
+ * or after the abort. Any other failure text (connection refused, empty
61
+ * response, dead body, ...), or an unretried cancel, stays unsettled.
62
+ */
63
+ export declare function apiRequestsSettled(input: {
64
+ outstandingCount: number;
65
+ failures: readonly ObservedApiRequestFailure[];
66
+ completions: readonly ObservedApiRequestCompletion[];
67
+ }): boolean;
68
+ export type PageRefusalReason = 'PAGE_ROUTE_UNMATCHED' | 'PAGE_BOUNCED_TO_LOGIN' | 'PAGE_UNCAUGHT_EXCEPTION' | 'PAGE_ERROR_MARKER' | 'PAGE_API_ERROR' | 'PAGE_LOCALLY_FULFILLED' | 'PAGE_API_UNSETTLED' | 'PAGE_APP_ORIGIN_MISMATCH' | 'PAGE_AUDIENCE_SESSION_INVALID';
69
+ export interface PageVisitVerdict {
70
+ pageId: string | null;
71
+ finalUrl: string;
72
+ loads: {
73
+ satisfied: boolean;
74
+ refusalReasons: PageRefusalReason[];
75
+ };
76
+ dataOk: {
77
+ satisfied: boolean;
78
+ refusalReasons: PageRefusalReason[];
79
+ };
80
+ }
81
+ /** Match an absolute route template, where each `:name` consumes one segment. */
82
+ export declare function matchPageRoute(routePath: string, rawUrl: string): boolean;
83
+ /**
84
+ * The declared login route a visit landed on, or null. A visit whose
85
+ * REQUESTED route is itself a declared login page never counts: a
86
+ * directly opened declared login page is a legitimate public page, only
87
+ * a bounced protected navigation is a rejected session.
88
+ */
89
+ export declare function landedLoginRoute(finalUrl: string, requestedPath: string, loginRoutes: readonly string[]): string | null;
90
+ /**
91
+ * Grade one settled visit using only witness-collected browser observations.
92
+ *
93
+ * `expectedPage` grades the visit against the one configured page the driver
94
+ * deliberately requested: the settled URL must be that page, so a redirect to
95
+ * a login route or to any other page refuses the expected page under its own
96
+ * id instead of matching an incidental route. Without it the visit is
97
+ * attributed to the last opened declared page, where a directly opened
98
+ * declared login page counts as a legitimate public page while a bounced
99
+ * protected navigation never does.
100
+ */
101
+ export declare function gradePageVisit(input: {
102
+ pages: readonly PageRoute[];
103
+ expectedPage?: PageRoute;
104
+ loginRoutes?: readonly string[];
105
+ visit: ObservedPageVisit;
106
+ }): PageVisitVerdict;
107
+ /** Browser-backed observer attached to an existing Chromium debugging port. */
108
+ //# sourceMappingURL=page-observation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-observation.d.ts","sourceRoot":"","sources":["../../src/witness/page-observation.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,KAAK,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;IACH;;;;;;;OAOG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,YAAY,EAAE,mBAAmB,CAAC;CACnC;AAED,mEAAmE;AACnE,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,iEAAiE;AACjE,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC/C,WAAW,EAAE,SAAS,4BAA4B,EAAE,CAAC;CACtD,GAAG,OAAO,CAMV;AAED,MAAM,MAAM,iBAAiB,GACzB,sBAAsB,GACtB,uBAAuB,GACvB,yBAAyB,GACzB,mBAAmB,GACnB,gBAAgB,GAChB,wBAAwB,GACxB,oBAAoB,GACpB,0BAA0B,GAC1B,+BAA+B,CAAC;AAEpC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC;IACnE,MAAM,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC;CACrE;AAUD,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CASzE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,MAAM,GAAG,IAAI,CAQf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,KAAK,EAAE,iBAAiB,CAAC;CAC1B,GAAG,gBAAgB,CA8DnB;AAED,+EAA+E"}