agent-web-interface 4.1.0 → 4.2.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/dist/src/browser/session-manager.d.ts +28 -1
- package/dist/src/browser/session-manager.d.ts.map +1 -1
- package/dist/src/browser/session-manager.js +73 -0
- package/dist/src/browser/session-manager.js.map +1 -1
- package/dist/src/index.d.ts +10 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +47 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/server/mcp-server.d.ts +14 -1
- package/dist/src/server/mcp-server.d.ts.map +1 -1
- package/dist/src/server/mcp-server.js +21 -6
- package/dist/src/server/mcp-server.js.map +1 -1
- package/dist/src/server/session-store.d.ts +18 -3
- package/dist/src/server/session-store.d.ts.map +1 -1
- package/dist/src/server/session-store.js +27 -3
- package/dist/src/server/session-store.js.map +1 -1
- package/dist/src/session/session-worker-binding.d.ts +57 -0
- package/dist/src/session/session-worker-binding.d.ts.map +1 -0
- package/dist/src/session/session-worker-binding.js +109 -0
- package/dist/src/session/session-worker-binding.js.map +1 -0
- package/dist/src/shared/services/logging.service.d.ts +8 -0
- package/dist/src/shared/services/logging.service.d.ts.map +1 -1
- package/dist/src/shared/services/logging.service.js +10 -0
- package/dist/src/shared/services/logging.service.js.map +1 -1
- package/dist/src/snapshot/snapshot-compiler.d.ts +14 -0
- package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -1
- package/dist/src/snapshot/snapshot-compiler.js +119 -3
- package/dist/src/snapshot/snapshot-compiler.js.map +1 -1
- package/dist/src/state/actionables-filter.d.ts.map +1 -1
- package/dist/src/state/actionables-filter.js +8 -30
- package/dist/src/state/actionables-filter.js.map +1 -1
- package/dist/src/state/locator-generator.d.ts.map +1 -1
- package/dist/src/state/locator-generator.js +1 -10
- package/dist/src/state/locator-generator.js.map +1 -1
- package/dist/src/state/node-layer.d.ts +22 -0
- package/dist/src/state/node-layer.d.ts.map +1 -0
- package/dist/src/state/node-layer.js +42 -0
- package/dist/src/state/node-layer.js.map +1 -0
- package/dist/src/state/state-manager.d.ts.map +1 -1
- package/dist/src/state/state-manager.js +9 -8
- package/dist/src/state/state-manager.js.map +1 -1
- package/dist/src/tools/tool-schemas.d.ts +22 -22
- package/dist/src/tools/tool-schemas.d.ts.map +1 -1
- package/dist/src/tools/tool-schemas.js.map +1 -1
- package/dist/src/worker/chrome-worker-process.d.ts +123 -0
- package/dist/src/worker/chrome-worker-process.d.ts.map +1 -0
- package/dist/src/worker/chrome-worker-process.js +294 -0
- package/dist/src/worker/chrome-worker-process.js.map +1 -0
- package/dist/src/worker/errors/index.d.ts +5 -0
- package/dist/src/worker/errors/index.d.ts.map +1 -0
- package/dist/src/worker/errors/index.js +5 -0
- package/dist/src/worker/errors/index.js.map +1 -0
- package/dist/src/worker/errors/worker.error.d.ts +122 -0
- package/dist/src/worker/errors/worker.error.d.ts.map +1 -0
- package/dist/src/worker/errors/worker.error.js +199 -0
- package/dist/src/worker/errors/worker.error.js.map +1 -0
- package/dist/src/worker/health-monitor.d.ts +141 -0
- package/dist/src/worker/health-monitor.d.ts.map +1 -0
- package/dist/src/worker/health-monitor.js +260 -0
- package/dist/src/worker/health-monitor.js.map +1 -0
- package/dist/src/worker/index.d.ts +16 -0
- package/dist/src/worker/index.d.ts.map +1 -0
- package/dist/src/worker/index.js +19 -0
- package/dist/src/worker/index.js.map +1 -0
- package/dist/src/worker/lease-manager.d.ts +137 -0
- package/dist/src/worker/lease-manager.d.ts.map +1 -0
- package/dist/src/worker/lease-manager.js +334 -0
- package/dist/src/worker/lease-manager.js.map +1 -0
- package/dist/src/worker/multi-tenant-config.d.ts +46 -0
- package/dist/src/worker/multi-tenant-config.d.ts.map +1 -0
- package/dist/src/worker/multi-tenant-config.js +94 -0
- package/dist/src/worker/multi-tenant-config.js.map +1 -0
- package/dist/src/worker/port-allocator.d.ts +96 -0
- package/dist/src/worker/port-allocator.d.ts.map +1 -0
- package/dist/src/worker/port-allocator.js +153 -0
- package/dist/src/worker/port-allocator.js.map +1 -0
- package/dist/src/worker/types.d.ts +218 -0
- package/dist/src/worker/types.d.ts.map +1 -0
- package/dist/src/worker/types.js +38 -0
- package/dist/src/worker/types.js.map +1 -0
- package/dist/src/worker/worker-manager.d.ts +157 -0
- package/dist/src/worker/worker-manager.d.ts.map +1 -0
- package/dist/src/worker/worker-manager.js +500 -0
- package/dist/src/worker/worker-manager.js.map +1 -0
- package/package.json +1 -1
|
@@ -31,7 +31,7 @@ export class SessionStore {
|
|
|
31
31
|
* @returns The new session_id
|
|
32
32
|
* @throws Error if max sessions limit reached
|
|
33
33
|
*/
|
|
34
|
-
createSession(tenant_id) {
|
|
34
|
+
createSession(tenant_id, clientInfo) {
|
|
35
35
|
// Check max sessions limit
|
|
36
36
|
if (this.sessions.size >= this.maxSessions) {
|
|
37
37
|
throw new Error(`Maximum sessions limit reached: ${this.maxSessions}`);
|
|
@@ -45,6 +45,7 @@ export class SessionStore {
|
|
|
45
45
|
created_at: now,
|
|
46
46
|
last_accessed_at: now,
|
|
47
47
|
expires_at: this.ttlMs > 0 ? new Date(now.getTime() + this.ttlMs) : null,
|
|
48
|
+
client_info: clientInfo,
|
|
48
49
|
};
|
|
49
50
|
this.sessions.set(session_id, session);
|
|
50
51
|
return session_id;
|
|
@@ -69,6 +70,19 @@ export class SessionStore {
|
|
|
69
70
|
this.touchSession(session);
|
|
70
71
|
return session;
|
|
71
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Get the default session when only one exists.
|
|
75
|
+
* Returns undefined when no sessions exist.
|
|
76
|
+
* Throws when multiple sessions exist (caller must provide explicit session_id).
|
|
77
|
+
*/
|
|
78
|
+
getDefaultSession() {
|
|
79
|
+
if (this.sessions.size === 0)
|
|
80
|
+
return undefined;
|
|
81
|
+
if (this.sessions.size > 1) {
|
|
82
|
+
throw new Error(`Multiple sessions active (${this.sessions.size}). Provide an explicit session_id.`);
|
|
83
|
+
}
|
|
84
|
+
return this.sessions.values().next().value;
|
|
85
|
+
}
|
|
72
86
|
/**
|
|
73
87
|
* Add a page to a session
|
|
74
88
|
*
|
|
@@ -107,11 +121,21 @@ export class SessionStore {
|
|
|
107
121
|
return Array.from(session.page_ids);
|
|
108
122
|
}
|
|
109
123
|
/**
|
|
110
|
-
* Destroy a session completely
|
|
124
|
+
* Destroy a session completely.
|
|
125
|
+
* If the session has an isolated browser context, it will be closed (best-effort).
|
|
111
126
|
*
|
|
112
127
|
* @param session_id - The session identifier
|
|
113
128
|
*/
|
|
114
|
-
destroySession(session_id) {
|
|
129
|
+
async destroySession(session_id) {
|
|
130
|
+
const session = this.sessions.get(session_id);
|
|
131
|
+
if (session?.browser_context) {
|
|
132
|
+
try {
|
|
133
|
+
await session.browser_context.close();
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
/* best effort */
|
|
137
|
+
}
|
|
138
|
+
}
|
|
115
139
|
this.sessions.delete(session_id);
|
|
116
140
|
}
|
|
117
141
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/server/session-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,+CAA+C;AAC/C,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtC,mDAAmD;AACnD,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/server/session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Worker Binding
|
|
3
|
+
*
|
|
4
|
+
* Thin adapter that routes session lifecycle to either WorkerManager (process isolation)
|
|
5
|
+
* or BrowserContext (context isolation) based on the configured ISOLATION_MODE.
|
|
6
|
+
*/
|
|
7
|
+
import type { SessionManager } from '../browser/session-manager.js';
|
|
8
|
+
import type { WorkerManager } from '../worker/worker-manager.js';
|
|
9
|
+
/** Isolation mode determines how sessions get browser access */
|
|
10
|
+
export type IsolationMode = 'process' | 'context';
|
|
11
|
+
/**
|
|
12
|
+
* Tracks worker assignments for process-mode sessions.
|
|
13
|
+
* Maps sessionId to the workerId that was acquired.
|
|
14
|
+
*/
|
|
15
|
+
interface WorkerAssignment {
|
|
16
|
+
workerId: string;
|
|
17
|
+
cdpEndpoint: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Routes session lifecycle events to the appropriate isolation backend.
|
|
21
|
+
*
|
|
22
|
+
* - **process** mode: Each session gets a dedicated Chrome worker process via WorkerManager.
|
|
23
|
+
* - **context** mode: Each session gets an isolated BrowserContext within the shared browser.
|
|
24
|
+
*/
|
|
25
|
+
export declare class SessionWorkerBinding {
|
|
26
|
+
readonly isolationMode: IsolationMode;
|
|
27
|
+
private readonly workerAssignments;
|
|
28
|
+
constructor(isolationMode?: IsolationMode);
|
|
29
|
+
/**
|
|
30
|
+
* Handle session start: acquire isolation resources.
|
|
31
|
+
*
|
|
32
|
+
* @param sessionId - The session identifier (used as tenantId for worker leases)
|
|
33
|
+
* @param sessionManager - The SessionManager for browser access
|
|
34
|
+
* @param workerManager - Required in process mode; ignored in context mode
|
|
35
|
+
* @returns The CDP endpoint (process mode) or the BrowserContext (context mode)
|
|
36
|
+
*/
|
|
37
|
+
onSessionStart(sessionId: string, sessionManager: SessionManager, workerManager?: WorkerManager): Promise<{
|
|
38
|
+
cdpEndpoint?: string;
|
|
39
|
+
browserContext?: import('puppeteer-core').BrowserContext;
|
|
40
|
+
}>;
|
|
41
|
+
/**
|
|
42
|
+
* Handle session end: release isolation resources.
|
|
43
|
+
*
|
|
44
|
+
* @param sessionId - The session identifier
|
|
45
|
+
* @param workerManager - Required in process mode; ignored in context mode
|
|
46
|
+
*/
|
|
47
|
+
onSessionEnd(sessionId: string, workerManager?: WorkerManager): void;
|
|
48
|
+
/**
|
|
49
|
+
* Get the worker assignment for a session (process mode only).
|
|
50
|
+
*/
|
|
51
|
+
getWorkerAssignment(sessionId: string): WorkerAssignment | undefined;
|
|
52
|
+
private startProcessIsolation;
|
|
53
|
+
private startContextIsolation;
|
|
54
|
+
private endProcessIsolation;
|
|
55
|
+
}
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=session-worker-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-worker-binding.d.ts","sourceRoot":"","sources":["../../../src/session/session-worker-binding.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAKjE,gEAAgE;AAChE,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;AAElD;;;GAGG;AACH,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuC;gBAE7D,aAAa,GAAE,aAAyB;IAKpD;;;;;;;OAOG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,cAAc,EAC9B,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,gBAAgB,EAAE,cAAc,CAAA;KAAE,CAAC;IAO9F;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI;IASpE;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;YAQtD,qBAAqB;YA0CrB,qBAAqB;IASnC,OAAO,CAAC,mBAAmB;CAgB5B"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Worker Binding
|
|
3
|
+
*
|
|
4
|
+
* Thin adapter that routes session lifecycle to either WorkerManager (process isolation)
|
|
5
|
+
* or BrowserContext (context isolation) based on the configured ISOLATION_MODE.
|
|
6
|
+
*/
|
|
7
|
+
import { createLogger } from '../shared/services/logging.service.js';
|
|
8
|
+
const logger = createLogger('SessionWorkerBinding');
|
|
9
|
+
/**
|
|
10
|
+
* Routes session lifecycle events to the appropriate isolation backend.
|
|
11
|
+
*
|
|
12
|
+
* - **process** mode: Each session gets a dedicated Chrome worker process via WorkerManager.
|
|
13
|
+
* - **context** mode: Each session gets an isolated BrowserContext within the shared browser.
|
|
14
|
+
*/
|
|
15
|
+
export class SessionWorkerBinding {
|
|
16
|
+
isolationMode;
|
|
17
|
+
workerAssignments = new Map();
|
|
18
|
+
constructor(isolationMode = 'context') {
|
|
19
|
+
this.isolationMode = isolationMode;
|
|
20
|
+
logger.info(`SessionWorkerBinding created`, { isolationMode });
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Handle session start: acquire isolation resources.
|
|
24
|
+
*
|
|
25
|
+
* @param sessionId - The session identifier (used as tenantId for worker leases)
|
|
26
|
+
* @param sessionManager - The SessionManager for browser access
|
|
27
|
+
* @param workerManager - Required in process mode; ignored in context mode
|
|
28
|
+
* @returns The CDP endpoint (process mode) or the BrowserContext (context mode)
|
|
29
|
+
*/
|
|
30
|
+
async onSessionStart(sessionId, sessionManager, workerManager) {
|
|
31
|
+
if (this.isolationMode === 'process') {
|
|
32
|
+
return this.startProcessIsolation(sessionId, sessionManager, workerManager);
|
|
33
|
+
}
|
|
34
|
+
return this.startContextIsolation(sessionId, sessionManager);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Handle session end: release isolation resources.
|
|
38
|
+
*
|
|
39
|
+
* @param sessionId - The session identifier
|
|
40
|
+
* @param workerManager - Required in process mode; ignored in context mode
|
|
41
|
+
*/
|
|
42
|
+
onSessionEnd(sessionId, workerManager) {
|
|
43
|
+
if (this.isolationMode === 'process') {
|
|
44
|
+
this.endProcessIsolation(sessionId, workerManager);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Context mode: BrowserContext cleanup is handled by SessionStore.destroySession()
|
|
48
|
+
logger.debug(`Context-mode session ended; cleanup delegated to SessionStore`, { sessionId });
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get the worker assignment for a session (process mode only).
|
|
52
|
+
*/
|
|
53
|
+
getWorkerAssignment(sessionId) {
|
|
54
|
+
return this.workerAssignments.get(sessionId);
|
|
55
|
+
}
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
// Private helpers
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
async startProcessIsolation(sessionId, sessionManager, workerManager) {
|
|
60
|
+
if (!workerManager) {
|
|
61
|
+
throw new Error('WorkerManager is required for process isolation mode');
|
|
62
|
+
}
|
|
63
|
+
logger.info(`Acquiring worker for session`, { sessionId });
|
|
64
|
+
const result = await workerManager.acquireForTenant(sessionId, sessionId);
|
|
65
|
+
if (!result.success || !result.cdpEndpoint || !result.workerId) {
|
|
66
|
+
throw new Error(`Failed to acquire worker for session ${sessionId}: ${result.error ?? 'unknown error'}`);
|
|
67
|
+
}
|
|
68
|
+
const assignment = {
|
|
69
|
+
workerId: result.workerId,
|
|
70
|
+
cdpEndpoint: result.cdpEndpoint,
|
|
71
|
+
};
|
|
72
|
+
this.workerAssignments.set(sessionId, assignment);
|
|
73
|
+
// Connect SessionManager to the worker's CDP endpoint
|
|
74
|
+
try {
|
|
75
|
+
await sessionManager.connect({ browserWSEndpoint: result.cdpEndpoint });
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
// Rollback: release assignment so we don't leak a dangling entry
|
|
79
|
+
this.workerAssignments.delete(sessionId);
|
|
80
|
+
throw err;
|
|
81
|
+
}
|
|
82
|
+
logger.info(`Session connected to worker`, {
|
|
83
|
+
sessionId,
|
|
84
|
+
workerId: result.workerId,
|
|
85
|
+
cdpEndpoint: result.cdpEndpoint,
|
|
86
|
+
});
|
|
87
|
+
return { cdpEndpoint: result.cdpEndpoint };
|
|
88
|
+
}
|
|
89
|
+
async startContextIsolation(_sessionId, sessionManager) {
|
|
90
|
+
const browserContext = await sessionManager.createIsolatedContext();
|
|
91
|
+
logger.info(`Created isolated BrowserContext for session`, { sessionId: _sessionId });
|
|
92
|
+
return { browserContext };
|
|
93
|
+
}
|
|
94
|
+
endProcessIsolation(sessionId, workerManager) {
|
|
95
|
+
if (!workerManager) {
|
|
96
|
+
logger.warning(`No WorkerManager provided for process-mode session end`, { sessionId });
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const assignment = this.workerAssignments.get(sessionId);
|
|
100
|
+
if (!assignment) {
|
|
101
|
+
logger.warning(`No worker assignment found for session`, { sessionId });
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
workerManager.releaseLease(sessionId);
|
|
105
|
+
this.workerAssignments.delete(sessionId);
|
|
106
|
+
logger.info(`Released worker lease for session`, { sessionId, workerId: assignment.workerId });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=session-worker-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-worker-binding.js","sourceRoot":"","sources":["../../../src/session/session-worker-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -151,4 +151,12 @@ export declare function getLogger(): LoggingService;
|
|
|
151
151
|
* Set global logger instance
|
|
152
152
|
*/
|
|
153
153
|
export declare function setLogger(logger: LoggingService): void;
|
|
154
|
+
/**
|
|
155
|
+
* Create a named logger instance.
|
|
156
|
+
*
|
|
157
|
+
* Returns a Logger backed by the global LoggingService singleton,
|
|
158
|
+
* suitable for use in modules that need a scoped logger name.
|
|
159
|
+
* The loggerName parameter is reserved for future per-module filtering.
|
|
160
|
+
*/
|
|
161
|
+
export declare function createLogger(_loggerName: string): Logger;
|
|
154
162
|
//# sourceMappingURL=logging.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.service.d.ts","sourceRoot":"","sources":["../../../../src/shared/services/logging.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logging.service.d.ts","sourceRoot":"","sources":["../../../../src/shared/services/logging.service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,oBAAY,aAAa;IACvB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AAED;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB,OAAO,GACP,MAAM,GACN,QAAQ,GACR,SAAS,GACT,OAAO,GACP,UAAU,GACV,OAAO,GACP,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACjE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAClE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAClF,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/E,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACpF;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,CAAC,MAAM,EAAE;QACzB,KAAK,EAAE,QAAQ,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB;AAED;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,MAAM;IAC3C,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAShC;gBAEU,QAAQ,GAAE,QAAiB,EAAE,UAAU,SAAO,EAAE,UAAU,SAAuB;IAM7F;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI;IAIjD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAIlC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIhE;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9E;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIjF;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9E;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIlF;;OAEG;IACH,OAAO,CAAC,GAAG;IAoCX;;OAEG;YACW,mBAAmB;IAsCjC;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;OAEG;IACH,aAAa,CAAC,KAAK,SAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE;IAa3D;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,QAAQ;IAiB5D;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,WAAW,IAAI,QAAQ;CAGxB;AAOD;;GAEG;AACH,wBAAgB,SAAS,IAAI,cAAc,CAG1C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD"}
|
|
@@ -264,4 +264,14 @@ export function getLogger() {
|
|
|
264
264
|
export function setLogger(logger) {
|
|
265
265
|
globalLogger = logger;
|
|
266
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* Create a named logger instance.
|
|
269
|
+
*
|
|
270
|
+
* Returns a Logger backed by the global LoggingService singleton,
|
|
271
|
+
* suitable for use in modules that need a scoped logger name.
|
|
272
|
+
* The loggerName parameter is reserved for future per-module filtering.
|
|
273
|
+
*/
|
|
274
|
+
export function createLogger(_loggerName) {
|
|
275
|
+
return getLogger();
|
|
276
|
+
}
|
|
267
277
|
//# sourceMappingURL=logging.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.service.js","sourceRoot":"","sources":["../../../../src/shared/services/logging.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logging.service.js","sourceRoot":"","sources":["../../../../src/shared/services/logging.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
import type { Page } from 'puppeteer-core';
|
|
14
14
|
import type { CdpClient } from '../cdp/cdp-client.interface.js';
|
|
15
15
|
import type { BaseSnapshot, SnapshotOptions } from './snapshot.types.js';
|
|
16
|
+
import { type RawNodeData } from './extractors/index.js';
|
|
16
17
|
/**
|
|
17
18
|
* Snapshot compiler options
|
|
18
19
|
*/
|
|
@@ -66,6 +67,19 @@ export declare class SnapshotCompiler {
|
|
|
66
67
|
*/
|
|
67
68
|
private filterNoiseNodes;
|
|
68
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Slice nodes to max_nodes budget while preserving high z-index overlay content.
|
|
72
|
+
*
|
|
73
|
+
* Portal-rendered content (dropdowns, popovers, modals) appears at the end of
|
|
74
|
+
* DOM order. On heavy pages, a naive slice truncates it.
|
|
75
|
+
*
|
|
76
|
+
* Strategy:
|
|
77
|
+
* 1. Partition nodes into overlay (z-index > threshold) and main
|
|
78
|
+
* 2. Take all overlay nodes (up to 30% of budget)
|
|
79
|
+
* 3. Fill remaining budget with main nodes (DOM order)
|
|
80
|
+
* 4. Re-sort by original DOM order
|
|
81
|
+
*/
|
|
82
|
+
export declare function sliceWithOverlayPriority(nodes: RawNodeData[], maxNodes: number): RawNodeData[];
|
|
69
83
|
/**
|
|
70
84
|
* Export a compile function for simpler usage.
|
|
71
85
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-compiler.d.ts","sourceRoot":"","sources":["../../../src/snapshot/snapshot-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EACV,YAAY,EAGZ,eAAe,EAMhB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"snapshot-compiler.d.ts","sourceRoot":"","sources":["../../../src/snapshot/snapshot-compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,EACV,YAAY,EAGZ,eAAe,EAMhB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAYL,KAAK,WAAW,EAOjB,MAAM,uBAAuB,CAAC;AAkS/B;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,OAAO,CAAC,eAAe,CAAC;IAC9D,2EAA2E;IAC3E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,4DAA4D;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAuED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD,iDAAiD;IACjD,OAAO,CAAC,eAAe,CAAK;gBAEhB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAI7C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;;;;;;OAOG;IACG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAgajF;;OAEG;YACW,iBAAiB;IAe/B;;OAEG;IACH,OAAO,CAAC,aAAa;IAsHrB;;OAEG;IACH,OAAO,CAAC,cAAc;IA4BtB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;CAqGzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CA2C9F;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAChC,OAAO,CAAC,YAAY,CAAC,CAGvB"}
|
|
@@ -448,6 +448,66 @@ export class SnapshotCompiler {
|
|
|
448
448
|
}
|
|
449
449
|
}
|
|
450
450
|
}
|
|
451
|
+
// Phase 2.1: Synthesize option nodes from <select> children.
|
|
452
|
+
// Chrome's AX tree often marks <option> nodes as ignored when the select
|
|
453
|
+
// is collapsed, and their bounding boxes are zero (OS-rendered).
|
|
454
|
+
// We inject them from the DOM so AI agents can discover available options.
|
|
455
|
+
if (domResult) {
|
|
456
|
+
const alreadyInSet = new Set(nodesToProcess.map((n) => n.backendNodeId));
|
|
457
|
+
for (const nodeData of [...nodesToProcess]) {
|
|
458
|
+
const domNode = nodeData.domNode;
|
|
459
|
+
if (domNode?.nodeName.toUpperCase() !== 'SELECT')
|
|
460
|
+
continue;
|
|
461
|
+
const collectOptions = (parentId) => {
|
|
462
|
+
const parent = domResult.nodes.get(parentId);
|
|
463
|
+
if (!parent?.childNodeIds)
|
|
464
|
+
return;
|
|
465
|
+
for (const childId of parent.childNodeIds) {
|
|
466
|
+
const child = domResult.nodes.get(childId);
|
|
467
|
+
if (!child)
|
|
468
|
+
continue;
|
|
469
|
+
const childTag = child.nodeName.toUpperCase();
|
|
470
|
+
if (childTag === 'OPTGROUP') {
|
|
471
|
+
// Recurse into optgroup to find nested options
|
|
472
|
+
collectOptions(childId);
|
|
473
|
+
}
|
|
474
|
+
else if (childTag === 'OPTION' && !alreadyInSet.has(childId)) {
|
|
475
|
+
// Extract text content from option's child text nodes
|
|
476
|
+
const optionText = getTextContent(childId, domResult.nodes);
|
|
477
|
+
// Build synthetic AX node so label resolution and state extraction work
|
|
478
|
+
const syntheticAx = {
|
|
479
|
+
nodeId: `synthetic-opt-${childId}`,
|
|
480
|
+
backendDOMNodeId: childId,
|
|
481
|
+
role: 'option',
|
|
482
|
+
name: optionText ?? '',
|
|
483
|
+
properties: [],
|
|
484
|
+
};
|
|
485
|
+
// Transfer selected attribute to AX property
|
|
486
|
+
if (child.attributes?.selected !== undefined) {
|
|
487
|
+
syntheticAx.properties.push({
|
|
488
|
+
name: 'selected',
|
|
489
|
+
value: { type: 'boolean', value: true },
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
// Transfer disabled attribute to AX property
|
|
493
|
+
if (child.attributes?.disabled !== undefined) {
|
|
494
|
+
syntheticAx.properties.push({
|
|
495
|
+
name: 'disabled',
|
|
496
|
+
value: { type: 'boolean', value: true },
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
nodesToProcess.push({
|
|
500
|
+
backendNodeId: childId,
|
|
501
|
+
domNode: child,
|
|
502
|
+
axNode: syntheticAx,
|
|
503
|
+
});
|
|
504
|
+
alreadyInSet.add(childId);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
};
|
|
508
|
+
collectOptions(domNode.backendNodeId);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
451
511
|
// Sort by DOM order if available (before max_nodes slicing)
|
|
452
512
|
if (domOrderAvailable && domOrderIndex) {
|
|
453
513
|
const orderMap = domOrderIndex; // Capture for closure to avoid reassignment issues
|
|
@@ -557,8 +617,8 @@ export class SnapshotCompiler {
|
|
|
557
617
|
});
|
|
558
618
|
}
|
|
559
619
|
}
|
|
560
|
-
// Limit nodes (now respects DOM order)
|
|
561
|
-
const limitedNodes = nodesToProcess
|
|
620
|
+
// Limit nodes (now respects DOM order and preserves overlay content)
|
|
621
|
+
const limitedNodes = sliceWithOverlayPriority(nodesToProcess, this.options.max_nodes);
|
|
562
622
|
// Phase 3: Layout extraction (batched)
|
|
563
623
|
let layoutResult;
|
|
564
624
|
if (this.options.includeLayout && limitedNodes.length > 0) {
|
|
@@ -580,7 +640,13 @@ export class SnapshotCompiler {
|
|
|
580
640
|
hasUnknownFrames = true;
|
|
581
641
|
}
|
|
582
642
|
// Filter by visibility (unless include_hidden)
|
|
583
|
-
|
|
643
|
+
// Option nodes bypass the visibility filter because their bounding boxes
|
|
644
|
+
// are always zero (OS-rendered dropdown content, not CSS-rendered).
|
|
645
|
+
const isOptionNode = nodeData.domNode?.nodeName?.toUpperCase() === 'OPTION';
|
|
646
|
+
if (isOptionNode && node.state?.visible === false) {
|
|
647
|
+
node.state.visible = true;
|
|
648
|
+
}
|
|
649
|
+
if (this.options.include_hidden || node.state?.visible !== false || isOptionNode) {
|
|
584
650
|
transformedNodes.push(node);
|
|
585
651
|
}
|
|
586
652
|
}
|
|
@@ -757,6 +823,7 @@ export class SnapshotCompiler {
|
|
|
757
823
|
FORM: 'form',
|
|
758
824
|
DIALOG: 'dialog',
|
|
759
825
|
NAV: 'navigation',
|
|
826
|
+
OPTION: 'menuitem',
|
|
760
827
|
};
|
|
761
828
|
return tagMap[tag];
|
|
762
829
|
}
|
|
@@ -854,6 +921,55 @@ export class SnapshotCompiler {
|
|
|
854
921
|
});
|
|
855
922
|
}
|
|
856
923
|
}
|
|
924
|
+
/**
|
|
925
|
+
* Slice nodes to max_nodes budget while preserving high z-index overlay content.
|
|
926
|
+
*
|
|
927
|
+
* Portal-rendered content (dropdowns, popovers, modals) appears at the end of
|
|
928
|
+
* DOM order. On heavy pages, a naive slice truncates it.
|
|
929
|
+
*
|
|
930
|
+
* Strategy:
|
|
931
|
+
* 1. Partition nodes into overlay (z-index > threshold) and main
|
|
932
|
+
* 2. Take all overlay nodes (up to 30% of budget)
|
|
933
|
+
* 3. Fill remaining budget with main nodes (DOM order)
|
|
934
|
+
* 4. Re-sort by original DOM order
|
|
935
|
+
*/
|
|
936
|
+
export function sliceWithOverlayPriority(nodes, maxNodes) {
|
|
937
|
+
if (nodes.length <= maxNodes) {
|
|
938
|
+
return nodes;
|
|
939
|
+
}
|
|
940
|
+
const OVERLAY_Z_THRESHOLD = 100;
|
|
941
|
+
const MAX_OVERLAY_RATIO = 0.3;
|
|
942
|
+
const overlayNodes = [];
|
|
943
|
+
const mainNodes = [];
|
|
944
|
+
for (const node of nodes) {
|
|
945
|
+
const zIndex = node.layout?.zIndex;
|
|
946
|
+
if (zIndex !== undefined && zIndex > OVERLAY_Z_THRESHOLD) {
|
|
947
|
+
overlayNodes.push(node);
|
|
948
|
+
}
|
|
949
|
+
else {
|
|
950
|
+
mainNodes.push(node);
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
// No overlay content → simple slice
|
|
954
|
+
if (overlayNodes.length === 0) {
|
|
955
|
+
return nodes.slice(0, maxNodes);
|
|
956
|
+
}
|
|
957
|
+
// Reserve budget for overlay (capped at 30% of total)
|
|
958
|
+
const maxOverlay = Math.min(overlayNodes.length, Math.floor(maxNodes * MAX_OVERLAY_RATIO));
|
|
959
|
+
const overlaySlice = overlayNodes.slice(0, maxOverlay);
|
|
960
|
+
// Fill remaining budget with main content
|
|
961
|
+
const mainBudget = maxNodes - overlaySlice.length;
|
|
962
|
+
const mainSlice = mainNodes.slice(0, mainBudget);
|
|
963
|
+
// Merge and re-sort by original DOM order
|
|
964
|
+
const merged = [...mainSlice, ...overlaySlice];
|
|
965
|
+
const indexMap = new Map(nodes.map((n, i) => [n.backendNodeId, i]));
|
|
966
|
+
merged.sort((a, b) => {
|
|
967
|
+
const ia = indexMap.get(a.backendNodeId) ?? Infinity;
|
|
968
|
+
const ib = indexMap.get(b.backendNodeId) ?? Infinity;
|
|
969
|
+
return ia - ib;
|
|
970
|
+
});
|
|
971
|
+
return merged;
|
|
972
|
+
}
|
|
857
973
|
/**
|
|
858
974
|
* Export a compile function for simpler usage.
|
|
859
975
|
*/
|