@fusengine/browser-mcp 0.1.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/LICENSE +21 -0
- package/README.md +175 -0
- package/dist/actions/act-by-ref.d.ts +13 -0
- package/dist/actions/act-by-ref.d.ts.map +1 -0
- package/dist/actions/act-by-ref.js +25 -0
- package/dist/actions/act-by-ref.js.map +1 -0
- package/dist/actions/human.d.ts +8 -0
- package/dist/actions/human.d.ts.map +1 -0
- package/dist/actions/human.js +6 -0
- package/dist/actions/human.js.map +1 -0
- package/dist/actions/login.d.ts +17 -0
- package/dist/actions/login.d.ts.map +1 -0
- package/dist/actions/login.js +11 -0
- package/dist/actions/login.js.map +1 -0
- package/dist/actions/navigation.d.ts +15 -0
- package/dist/actions/navigation.d.ts.map +1 -0
- package/dist/actions/navigation.js +33 -0
- package/dist/actions/navigation.js.map +1 -0
- package/dist/actions/perform.d.ts +15 -0
- package/dist/actions/perform.d.ts.map +1 -0
- package/dist/actions/perform.js +41 -0
- package/dist/actions/perform.js.map +1 -0
- package/dist/actions/smart-click.d.ts +9 -0
- package/dist/actions/smart-click.d.ts.map +1 -0
- package/dist/actions/smart-click.js +55 -0
- package/dist/actions/smart-click.js.map +1 -0
- package/dist/actions/smart-fill.d.ts +9 -0
- package/dist/actions/smart-fill.d.ts.map +1 -0
- package/dist/actions/smart-fill.js +46 -0
- package/dist/actions/smart-fill.js.map +1 -0
- package/dist/actions/wait-for.d.ts +21 -0
- package/dist/actions/wait-for.d.ts.map +1 -0
- package/dist/actions/wait-for.js +28 -0
- package/dist/actions/wait-for.js.map +1 -0
- package/dist/agent/actions-loop.d.ts +18 -0
- package/dist/agent/actions-loop.d.ts.map +1 -0
- package/dist/agent/actions-loop.js +44 -0
- package/dist/agent/actions-loop.js.map +1 -0
- package/dist/agent/browser-agent.d.ts +24 -0
- package/dist/agent/browser-agent.d.ts.map +1 -0
- package/dist/agent/browser-agent.js +36 -0
- package/dist/agent/browser-agent.js.map +1 -0
- package/dist/agent/compact.d.ts +8 -0
- package/dist/agent/compact.d.ts.map +1 -0
- package/dist/agent/compact.js +24 -0
- package/dist/agent/compact.js.map +1 -0
- package/dist/agent/config.d.ts +30 -0
- package/dist/agent/config.d.ts.map +1 -0
- package/dist/agent/config.js +49 -0
- package/dist/agent/config.js.map +1 -0
- package/dist/agent/detect.d.ts +17 -0
- package/dist/agent/detect.d.ts.map +1 -0
- package/dist/agent/detect.js +9 -0
- package/dist/agent/detect.js.map +1 -0
- package/dist/agent/network.d.ts +16 -0
- package/dist/agent/network.d.ts.map +1 -0
- package/dist/agent/network.js +16 -0
- package/dist/agent/network.js.map +1 -0
- package/dist/agent/probe-run.d.ts +6 -0
- package/dist/agent/probe-run.d.ts.map +1 -0
- package/dist/agent/probe-run.js +90 -0
- package/dist/agent/probe-run.js.map +1 -0
- package/dist/agent/report.d.ts +29 -0
- package/dist/agent/report.d.ts.map +1 -0
- package/dist/agent/report.js +53 -0
- package/dist/agent/report.js.map +1 -0
- package/dist/agent/run-steps.d.ts +22 -0
- package/dist/agent/run-steps.d.ts.map +1 -0
- package/dist/agent/run-steps.js +59 -0
- package/dist/agent/run-steps.js.map +1 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +84 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/bin/mcp.d.ts +3 -0
- package/dist/bin/mcp.d.ts.map +1 -0
- package/dist/bin/mcp.js +28 -0
- package/dist/bin/mcp.js.map +1 -0
- package/dist/captcha/solve.d.ts +17 -0
- package/dist/captcha/solve.d.ts.map +1 -0
- package/dist/captcha/solve.js +42 -0
- package/dist/captcha/solve.js.map +1 -0
- package/dist/consent/booking-currency.d.ts +14 -0
- package/dist/consent/booking-currency.d.ts.map +1 -0
- package/dist/consent/booking-currency.js +82 -0
- package/dist/consent/booking-currency.js.map +1 -0
- package/dist/consent/consent.d.ts +11 -0
- package/dist/consent/consent.d.ts.map +1 -0
- package/dist/consent/consent.js +27 -0
- package/dist/consent/consent.js.map +1 -0
- package/dist/consent/currency-url.d.ts +10 -0
- package/dist/consent/currency-url.d.ts.map +1 -0
- package/dist/consent/currency-url.js +18 -0
- package/dist/consent/currency-url.js.map +1 -0
- package/dist/consent/currency.d.ts +14 -0
- package/dist/consent/currency.d.ts.map +1 -0
- package/dist/consent/currency.js +48 -0
- package/dist/consent/currency.js.map +1 -0
- package/dist/engine/cdp-engine.d.ts +21 -0
- package/dist/engine/cdp-engine.d.ts.map +1 -0
- package/dist/engine/cdp-engine.js +36 -0
- package/dist/engine/cdp-engine.js.map +1 -0
- package/dist/engine/cdp-launch.d.ts +11 -0
- package/dist/engine/cdp-launch.d.ts.map +1 -0
- package/dist/engine/cdp-launch.js +54 -0
- package/dist/engine/cdp-launch.js.map +1 -0
- package/dist/engine/context.d.ts +14 -0
- package/dist/engine/context.d.ts.map +1 -0
- package/dist/engine/context.js +22 -0
- package/dist/engine/context.js.map +1 -0
- package/dist/engine/launch.d.ts +6 -0
- package/dist/engine/launch.d.ts.map +1 -0
- package/dist/engine/launch.js +53 -0
- package/dist/engine/launch.js.map +1 -0
- package/dist/engine/loader.d.ts +13 -0
- package/dist/engine/loader.d.ts.map +1 -0
- package/dist/engine/loader.js +24 -0
- package/dist/engine/loader.js.map +1 -0
- package/dist/engine/patchright-engine.d.ts +4 -0
- package/dist/engine/patchright-engine.d.ts.map +1 -0
- package/dist/engine/patchright-engine.js +10 -0
- package/dist/engine/patchright-engine.js.map +1 -0
- package/dist/engine/playwright-engine.d.ts +8 -0
- package/dist/engine/playwright-engine.d.ts.map +1 -0
- package/dist/engine/playwright-engine.js +24 -0
- package/dist/engine/playwright-engine.js.map +1 -0
- package/dist/engine/registry.d.ts +13 -0
- package/dist/engine/registry.d.ts.map +1 -0
- package/dist/engine/registry.js +18 -0
- package/dist/engine/registry.js.map +1 -0
- package/dist/extraction/challenges.d.ts +9 -0
- package/dist/extraction/challenges.d.ts.map +1 -0
- package/dist/extraction/challenges.js +24 -0
- package/dist/extraction/challenges.js.map +1 -0
- package/dist/extraction/hotel-offers.d.ts +11 -0
- package/dist/extraction/hotel-offers.d.ts.map +1 -0
- package/dist/extraction/hotel-offers.js +63 -0
- package/dist/extraction/hotel-offers.js.map +1 -0
- package/dist/extraction/main-text.d.ts +13 -0
- package/dist/extraction/main-text.d.ts.map +1 -0
- package/dist/extraction/main-text.js +20 -0
- package/dist/extraction/main-text.js.map +1 -0
- package/dist/extraction/prices.d.ts +18 -0
- package/dist/extraction/prices.d.ts.map +1 -0
- package/dist/extraction/prices.js +74 -0
- package/dist/extraction/prices.js.map +1 -0
- package/dist/extraction/snapshot-diff.d.ts +28 -0
- package/dist/extraction/snapshot-diff.d.ts.map +1 -0
- package/dist/extraction/snapshot-diff.js +30 -0
- package/dist/extraction/snapshot-diff.js.map +1 -0
- package/dist/extraction/snapshot.d.ts +14 -0
- package/dist/extraction/snapshot.d.ts.map +1 -0
- package/dist/extraction/snapshot.js +26 -0
- package/dist/extraction/snapshot.js.map +1 -0
- package/dist/extraction/structured.d.ts +26 -0
- package/dist/extraction/structured.d.ts.map +1 -0
- package/dist/extraction/structured.js +28 -0
- package/dist/extraction/structured.js.map +1 -0
- package/dist/extraction/visual.d.ts +9 -0
- package/dist/extraction/visual.d.ts.map +1 -0
- package/dist/extraction/visual.js +29 -0
- package/dist/extraction/visual.js.map +1 -0
- package/dist/guardrails/preflight.d.ts +25 -0
- package/dist/guardrails/preflight.d.ts.map +1 -0
- package/dist/guardrails/preflight.js +27 -0
- package/dist/guardrails/preflight.js.map +1 -0
- package/dist/identity/country-profiles.d.ts +12 -0
- package/dist/identity/country-profiles.d.ts.map +1 -0
- package/dist/identity/country-profiles.js +58 -0
- package/dist/identity/country-profiles.js.map +1 -0
- package/dist/identity/identity.d.ts +19 -0
- package/dist/identity/identity.d.ts.map +1 -0
- package/dist/identity/identity.js +31 -0
- package/dist/identity/identity.js.map +1 -0
- package/dist/identity/resolve.d.ts +25 -0
- package/dist/identity/resolve.d.ts.map +1 -0
- package/dist/identity/resolve.js +21 -0
- package/dist/identity/resolve.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/engine-types.d.ts +15 -0
- package/dist/interfaces/engine-types.d.ts.map +1 -0
- package/dist/interfaces/engine-types.js +6 -0
- package/dist/interfaces/engine-types.js.map +1 -0
- package/dist/interfaces/engine.d.ts +30 -0
- package/dist/interfaces/engine.d.ts.map +1 -0
- package/dist/interfaces/engine.js +2 -0
- package/dist/interfaces/engine.js.map +1 -0
- package/dist/interfaces/extraction.d.ts +63 -0
- package/dist/interfaces/extraction.d.ts.map +1 -0
- package/dist/interfaces/extraction.js +6 -0
- package/dist/interfaces/extraction.js.map +1 -0
- package/dist/interfaces/net.d.ts +48 -0
- package/dist/interfaces/net.d.ts.map +1 -0
- package/dist/interfaces/net.js +6 -0
- package/dist/interfaces/net.js.map +1 -0
- package/dist/interfaces/report.d.ts +87 -0
- package/dist/interfaces/report.d.ts.map +1 -0
- package/dist/interfaces/report.js +2 -0
- package/dist/interfaces/report.js.map +1 -0
- package/dist/interfaces/types.d.ts +90 -0
- package/dist/interfaces/types.d.ts.map +1 -0
- package/dist/interfaces/types.js +6 -0
- package/dist/interfaces/types.js.map +1 -0
- package/dist/lib/errors.d.ts +19 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +30 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/evaluate.d.ts +17 -0
- package/dist/lib/evaluate.d.ts.map +1 -0
- package/dist/lib/evaluate.js +10 -0
- package/dist/lib/evaluate.js.map +1 -0
- package/dist/lib/fs.d.ts +11 -0
- package/dist/lib/fs.d.ts.map +1 -0
- package/dist/lib/fs.js +34 -0
- package/dist/lib/fs.js.map +1 -0
- package/dist/lib/logger.d.ts +14 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +22 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/output-dir.d.ts +12 -0
- package/dist/lib/output-dir.d.ts.map +1 -0
- package/dist/lib/output-dir.js +37 -0
- package/dist/lib/output-dir.js.map +1 -0
- package/dist/lib/retry.d.ts +28 -0
- package/dist/lib/retry.d.ts.map +1 -0
- package/dist/lib/retry.js +41 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/text.d.ts +9 -0
- package/dist/lib/text.d.ts.map +1 -0
- package/dist/lib/text.js +13 -0
- package/dist/lib/text.js.map +1 -0
- package/dist/net/captcha-client.d.ts +10 -0
- package/dist/net/captcha-client.d.ts.map +1 -0
- package/dist/net/captcha-client.js +48 -0
- package/dist/net/captcha-client.js.map +1 -0
- package/dist/net/captcha-inject.d.ts +10 -0
- package/dist/net/captcha-inject.d.ts.map +1 -0
- package/dist/net/captcha-inject.js +24 -0
- package/dist/net/captcha-inject.js.map +1 -0
- package/dist/net/navigate.d.ts +19 -0
- package/dist/net/navigate.d.ts.map +1 -0
- package/dist/net/navigate.js +32 -0
- package/dist/net/navigate.js.map +1 -0
- package/dist/net/throttle.d.ts +3 -0
- package/dist/net/throttle.d.ts.map +1 -0
- package/dist/net/throttle.js +23 -0
- package/dist/net/throttle.js.map +1 -0
- package/dist/proxy/country-map.d.ts +13 -0
- package/dist/proxy/country-map.d.ts.map +1 -0
- package/dist/proxy/country-map.js +38 -0
- package/dist/proxy/country-map.js.map +1 -0
- package/dist/server/env-defaults.d.ts +11 -0
- package/dist/server/env-defaults.d.ts.map +1 -0
- package/dist/server/env-defaults.js +20 -0
- package/dist/server/env-defaults.js.map +1 -0
- package/dist/server/map-options.d.ts +6 -0
- package/dist/server/map-options.d.ts.map +1 -0
- package/dist/server/map-options.js +43 -0
- package/dist/server/map-options.js.map +1 -0
- package/dist/server/resources.d.ts +4 -0
- package/dist/server/resources.d.ts.map +1 -0
- package/dist/server/resources.js +28 -0
- package/dist/server/resources.js.map +1 -0
- package/dist/server/result.d.ts +12 -0
- package/dist/server/result.d.ts.map +1 -0
- package/dist/server/result.js +18 -0
- package/dist/server/result.js.map +1 -0
- package/dist/server/schemas.d.ts +191 -0
- package/dist/server/schemas.d.ts.map +1 -0
- package/dist/server/schemas.js +72 -0
- package/dist/server/schemas.js.map +1 -0
- package/dist/server/server.d.ts +14 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +37 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/tools/act.d.ts +10 -0
- package/dist/server/tools/act.d.ts.map +1 -0
- package/dist/server/tools/act.js +62 -0
- package/dist/server/tools/act.js.map +1 -0
- package/dist/server/tools/connect.d.ts +10 -0
- package/dist/server/tools/connect.d.ts.map +1 -0
- package/dist/server/tools/connect.js +37 -0
- package/dist/server/tools/connect.js.map +1 -0
- package/dist/server/tools/extract-schema.d.ts +9 -0
- package/dist/server/tools/extract-schema.d.ts.map +1 -0
- package/dist/server/tools/extract-schema.js +29 -0
- package/dist/server/tools/extract-schema.js.map +1 -0
- package/dist/server/tools/extract.d.ts +9 -0
- package/dist/server/tools/extract.d.ts.map +1 -0
- package/dist/server/tools/extract.js +35 -0
- package/dist/server/tools/extract.js.map +1 -0
- package/dist/server/tools/navigate.d.ts +9 -0
- package/dist/server/tools/navigate.d.ts.map +1 -0
- package/dist/server/tools/navigate.js +27 -0
- package/dist/server/tools/navigate.js.map +1 -0
- package/dist/server/tools/probe.d.ts +8 -0
- package/dist/server/tools/probe.d.ts.map +1 -0
- package/dist/server/tools/probe.js +44 -0
- package/dist/server/tools/probe.js.map +1 -0
- package/dist/server/tools/run.d.ts +10 -0
- package/dist/server/tools/run.d.ts.map +1 -0
- package/dist/server/tools/run.js +30 -0
- package/dist/server/tools/run.js.map +1 -0
- package/dist/server/tools/screenshot.d.ts +10 -0
- package/dist/server/tools/screenshot.d.ts.map +1 -0
- package/dist/server/tools/screenshot.js +26 -0
- package/dist/server/tools/screenshot.js.map +1 -0
- package/dist/server/tools/session.d.ts +9 -0
- package/dist/server/tools/session.d.ts.map +1 -0
- package/dist/server/tools/session.js +33 -0
- package/dist/server/tools/session.js.map +1 -0
- package/dist/server/tools/snapshot.d.ts +12 -0
- package/dist/server/tools/snapshot.d.ts.map +1 -0
- package/dist/server/tools/snapshot.js +59 -0
- package/dist/server/tools/snapshot.js.map +1 -0
- package/dist/server/tools/wait.d.ts +9 -0
- package/dist/server/tools/wait.d.ts.map +1 -0
- package/dist/server/tools/wait.js +32 -0
- package/dist/server/tools/wait.js.map +1 -0
- package/dist/server/tools/with-session.d.ts +10 -0
- package/dist/server/tools/with-session.d.ts.map +1 -0
- package/dist/server/tools/with-session.js +16 -0
- package/dist/server/tools/with-session.js.map +1 -0
- package/dist/session/manager.d.ts +39 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +76 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/session.d.ts +28 -0
- package/dist/session/session.d.ts.map +1 -0
- package/dist/session/session.js +51 -0
- package/dist/session/session.js.map +1 -0
- package/dist/state/dom-signature.d.ts +8 -0
- package/dist/state/dom-signature.d.ts.map +1 -0
- package/dist/state/dom-signature.js +13 -0
- package/dist/state/dom-signature.js.map +1 -0
- package/dist/state/realtime.d.ts +11 -0
- package/dist/state/realtime.d.ts.map +1 -0
- package/dist/state/realtime.js +34 -0
- package/dist/state/realtime.js.map +1 -0
- package/dist/state/replay.d.ts +4 -0
- package/dist/state/replay.d.ts.map +1 -0
- package/dist/state/replay.js +21 -0
- package/dist/state/replay.js.map +1 -0
- package/dist/state/site-memory.d.ts +35 -0
- package/dist/state/site-memory.d.ts.map +1 -0
- package/dist/state/site-memory.js +56 -0
- package/dist/state/site-memory.js.map +1 -0
- package/package.json +70 -0
- package/proxies.example.json +9 -0
- package/scripts/postinstall.mjs +24 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser engine identifiers and channels.
|
|
3
|
+
* @module interfaces/engine-types
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Underlying browser engine.
|
|
7
|
+
* - `patchright` / `playwright`: Chromium (stealth / reference).
|
|
8
|
+
* - `firefox` / `webkit`: other engines via Playwright (no stealth, no CDP/channel).
|
|
9
|
+
*/
|
|
10
|
+
export type EngineName = "playwright" | "patchright" | "firefox" | "webkit";
|
|
11
|
+
/** Stable engine label: {@link EngineName} plus `cdp` (attach engine, not launchable). */
|
|
12
|
+
export type EngineId = EngineName | "cdp";
|
|
13
|
+
/** Installed-browser channel to drive the user's real Chrome/Edge (Chromium-only). */
|
|
14
|
+
export type BrowserChannel = "chrome" | "chrome-beta" | "chrome-dev" | "chrome-canary" | "msedge" | "msedge-beta" | "msedge-dev" | "msedge-canary";
|
|
15
|
+
//# sourceMappingURL=engine-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-types.d.ts","sourceRoot":"","sources":["../../src/interfaces/engine-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE5E,0FAA0F;AAC1F,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,KAAK,CAAC;AAE1C,sFAAsF;AACtF,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,aAAa,GACb,YAAY,GACZ,eAAe,GACf,QAAQ,GACR,aAAa,GACb,YAAY,GACZ,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-types.js","sourceRoot":"","sources":["../../src/interfaces/engine-types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser engine contract: abstracts the low-level driver (Playwright,
|
|
3
|
+
* Patchright, or a CDP attachment) from the intelligence layer
|
|
4
|
+
* (actions, extraction, agent, server).
|
|
5
|
+
* @module interfaces/engine
|
|
6
|
+
*/
|
|
7
|
+
import type { Browser, BrowserContext, Page } from "playwright";
|
|
8
|
+
import type { ResolvedConfig } from "../agent/config.js";
|
|
9
|
+
import type { EngineId } from "./engine-types.js";
|
|
10
|
+
/**
|
|
11
|
+
* An opened context plus its owning browser.
|
|
12
|
+
* `browser` is null for persistent contexts. When `connected` is true the
|
|
13
|
+
* context belongs to a user's already-running browser (CDP attach): it must
|
|
14
|
+
* NOT be closed on teardown — only the CDP link is dropped.
|
|
15
|
+
*/
|
|
16
|
+
export interface OpenedContext {
|
|
17
|
+
context: BrowserContext;
|
|
18
|
+
browser: Browser | null;
|
|
19
|
+
connected?: boolean;
|
|
20
|
+
/** Pre-existing page to reuse (CDP attach), if any. */
|
|
21
|
+
page?: Page;
|
|
22
|
+
}
|
|
23
|
+
/** A swappable browser engine that knows how to open a ready context. */
|
|
24
|
+
export interface BrowserEngine {
|
|
25
|
+
/** Stable engine identifier. */
|
|
26
|
+
readonly name: EngineId;
|
|
27
|
+
/** Launch or attach the engine and open a context configured from `config`. */
|
|
28
|
+
open(config: ResolvedConfig): Promise<OpenedContext>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/interfaces/engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uDAAuD;IACvD,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,+EAA+E;IAC/E,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/interfaces/engine.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for data extracted from a page (prices, offers, challenges, visual).
|
|
3
|
+
* @module interfaces/extraction
|
|
4
|
+
*/
|
|
5
|
+
/** A price detected in the page text. */
|
|
6
|
+
export interface Price {
|
|
7
|
+
currency: string;
|
|
8
|
+
amount: number;
|
|
9
|
+
line: string;
|
|
10
|
+
lineNo: number;
|
|
11
|
+
}
|
|
12
|
+
/** An aggregated hotel offer (provider + price). */
|
|
13
|
+
export interface HotelOffer {
|
|
14
|
+
provider: string;
|
|
15
|
+
currency: string;
|
|
16
|
+
amount: number;
|
|
17
|
+
}
|
|
18
|
+
/** Hotel offers summary (Google Hotels style). */
|
|
19
|
+
export interface HotelOffers {
|
|
20
|
+
headline: {
|
|
21
|
+
currency: string;
|
|
22
|
+
amount: number;
|
|
23
|
+
} | null;
|
|
24
|
+
options: HotelOffer[];
|
|
25
|
+
bestTotal: HotelOffer | null;
|
|
26
|
+
}
|
|
27
|
+
/** Anti-bot / auth challenge detection. */
|
|
28
|
+
export interface Challenges {
|
|
29
|
+
captcha: boolean;
|
|
30
|
+
turnstile: boolean;
|
|
31
|
+
hcaptcha: boolean;
|
|
32
|
+
cloudflare: boolean;
|
|
33
|
+
login: boolean;
|
|
34
|
+
otp: boolean;
|
|
35
|
+
}
|
|
36
|
+
/** An interactive element observed visually. */
|
|
37
|
+
export interface InteractiveElement {
|
|
38
|
+
index: number;
|
|
39
|
+
tag: string;
|
|
40
|
+
text: string;
|
|
41
|
+
role: string | null;
|
|
42
|
+
id: string | null;
|
|
43
|
+
name: string | null;
|
|
44
|
+
type: string | null;
|
|
45
|
+
href: string | null;
|
|
46
|
+
visible: boolean;
|
|
47
|
+
box: {
|
|
48
|
+
x: number;
|
|
49
|
+
y: number;
|
|
50
|
+
width: number;
|
|
51
|
+
height: number;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/** Visual observation (screenshot + interactive elements). */
|
|
55
|
+
export interface Visual {
|
|
56
|
+
screenshotPath?: string;
|
|
57
|
+
viewport?: {
|
|
58
|
+
width: number;
|
|
59
|
+
height: number;
|
|
60
|
+
};
|
|
61
|
+
interactiveElements?: InteractiveElement[];
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=extraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/interfaces/extraction.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yCAAyC;AACzC,MAAM,WAAW,KAAK;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,oDAAoD;AACpD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtD,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC;CAC9B;AAED,2CAA2C;AAC3C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;CACd;AAED,gDAAgD;AAChD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;AAED,8DAA8D;AAC9D,MAAM,WAAW,MAAM;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/interfaces/extraction.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Network resilience and captcha-solving types.
|
|
3
|
+
* @module interfaces/net
|
|
4
|
+
*/
|
|
5
|
+
/** Retry/backoff and per-host throttle settings for navigations. */
|
|
6
|
+
export interface RetryConfig {
|
|
7
|
+
/** Maximum navigation attempts (1 disables retry). */
|
|
8
|
+
maxAttempts: number;
|
|
9
|
+
/** Base backoff in ms (full-jitter exponential). */
|
|
10
|
+
baseMs: number;
|
|
11
|
+
/** Backoff ceiling in ms. */
|
|
12
|
+
capMs: number;
|
|
13
|
+
/** Minimum gap between hits on the same host in ms (0 disables). */
|
|
14
|
+
throttleMs: number;
|
|
15
|
+
}
|
|
16
|
+
/** Supported captcha-solving providers (shared createTask/getTaskResult API). */
|
|
17
|
+
export type CaptchaProvider = "2captcha" | "anticaptcha" | "capmonster";
|
|
18
|
+
/** Captcha kind the solver can handle. */
|
|
19
|
+
export type CaptchaKind = "recaptcha" | "turnstile";
|
|
20
|
+
/**
|
|
21
|
+
* Captcha solver configuration. Opt-in: intended for authorized testing on
|
|
22
|
+
* sites you own or are permitted to test. Disabled unless explicitly provided.
|
|
23
|
+
*/
|
|
24
|
+
export interface CaptchaConfig {
|
|
25
|
+
provider: CaptchaProvider;
|
|
26
|
+
apiKey: string;
|
|
27
|
+
/** Override the provider base URL (e.g. a 2captcha-compatible aggregator). */
|
|
28
|
+
baseUrl?: string;
|
|
29
|
+
/** Total solve budget in ms (default 180000). */
|
|
30
|
+
timeoutMs?: number;
|
|
31
|
+
/** Poll interval in ms while the task is processing (default 5000). */
|
|
32
|
+
pollMs?: number;
|
|
33
|
+
}
|
|
34
|
+
/** A captcha-solving task derived from the page. */
|
|
35
|
+
export interface CaptchaTask {
|
|
36
|
+
kind: CaptchaKind;
|
|
37
|
+
websiteURL: string;
|
|
38
|
+
websiteKey: string;
|
|
39
|
+
}
|
|
40
|
+
/** Result of a captcha-solving attempt (failures are reported, not thrown). */
|
|
41
|
+
export interface CaptchaOutcome {
|
|
42
|
+
attempted: boolean;
|
|
43
|
+
solved: boolean;
|
|
44
|
+
kind?: CaptchaKind;
|
|
45
|
+
provider?: CaptchaProvider;
|
|
46
|
+
reason?: string;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=net.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"net.d.ts","sourceRoot":"","sources":["../../src/interfaces/net.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oEAAoE;AACpE,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,iFAAiF;AACjF,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,CAAC;AAExE,0CAA0C;AAC1C,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../src/interfaces/net.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types des rapports produits par l'agent.
|
|
3
|
+
* @module interfaces/report
|
|
4
|
+
*/
|
|
5
|
+
import type { Challenges, HotelOffers, Price, Visual } from "./extraction.js";
|
|
6
|
+
import type { CaptchaOutcome } from "./net.js";
|
|
7
|
+
import type { ActionResult, Geolocation } from "./types.js";
|
|
8
|
+
/** Rapport d'identité du navigateur (pays, proxy masqué...). */
|
|
9
|
+
export interface Identity {
|
|
10
|
+
countryCode: string;
|
|
11
|
+
locale: string;
|
|
12
|
+
timezoneId: string;
|
|
13
|
+
currency: string;
|
|
14
|
+
geolocation: Geolocation;
|
|
15
|
+
acceptLanguage: string;
|
|
16
|
+
realisticProfile: boolean;
|
|
17
|
+
persistentProfile: boolean;
|
|
18
|
+
userDataDir: string | null;
|
|
19
|
+
proxyEnabled: boolean;
|
|
20
|
+
proxyUrl: string | null;
|
|
21
|
+
proxySource: string | null;
|
|
22
|
+
proxyCountryCode: string | null;
|
|
23
|
+
proxyRequiredForIpAlignment: boolean;
|
|
24
|
+
}
|
|
25
|
+
/** Une étape de replay (avant/après action). */
|
|
26
|
+
export interface ReplayStep {
|
|
27
|
+
index: number;
|
|
28
|
+
action: Record<string, unknown>;
|
|
29
|
+
result: ActionResult;
|
|
30
|
+
beforeDomSignature: string;
|
|
31
|
+
afterDomSignature: string;
|
|
32
|
+
domChanged: boolean;
|
|
33
|
+
beforeScreenshotPath: string | null;
|
|
34
|
+
afterScreenshotPath: string | null;
|
|
35
|
+
}
|
|
36
|
+
/** Résultat de gestion de consentement. */
|
|
37
|
+
export interface ConsentResult {
|
|
38
|
+
handled: boolean;
|
|
39
|
+
target?: string;
|
|
40
|
+
strategy?: string;
|
|
41
|
+
}
|
|
42
|
+
/** Résultat d'alignement de devise. */
|
|
43
|
+
export interface CurrencyResult {
|
|
44
|
+
countryCode: string;
|
|
45
|
+
preferred: string;
|
|
46
|
+
detected: string | null;
|
|
47
|
+
handled: boolean;
|
|
48
|
+
mismatch?: boolean;
|
|
49
|
+
detectedAfter?: string | null;
|
|
50
|
+
reason?: string;
|
|
51
|
+
}
|
|
52
|
+
/** Rapport complet d'un probe. */
|
|
53
|
+
export interface ProbeReport {
|
|
54
|
+
url: string;
|
|
55
|
+
title: string;
|
|
56
|
+
realtime: boolean;
|
|
57
|
+
domChanged: boolean;
|
|
58
|
+
text: string;
|
|
59
|
+
prices: Price[];
|
|
60
|
+
hotelOffers: HotelOffers | Record<string, never>;
|
|
61
|
+
challenges: Challenges | Record<string, never>;
|
|
62
|
+
captcha?: CaptchaOutcome;
|
|
63
|
+
visual: Visual | Record<string, never>;
|
|
64
|
+
consent: ConsentResult;
|
|
65
|
+
currency: CurrencyResult;
|
|
66
|
+
identity: Identity;
|
|
67
|
+
actions: ActionResult[];
|
|
68
|
+
replay: {
|
|
69
|
+
enabled: boolean;
|
|
70
|
+
steps: ReplayStep[];
|
|
71
|
+
dir: string | null;
|
|
72
|
+
};
|
|
73
|
+
siteMemory: {
|
|
74
|
+
enabled: boolean;
|
|
75
|
+
updated: boolean;
|
|
76
|
+
filePath: string;
|
|
77
|
+
};
|
|
78
|
+
network: Array<Record<string, unknown>>;
|
|
79
|
+
console: Array<{
|
|
80
|
+
type: string;
|
|
81
|
+
text: string;
|
|
82
|
+
}>;
|
|
83
|
+
screenshotPath: string;
|
|
84
|
+
reportPath: string;
|
|
85
|
+
storageStatePath: string | null;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/interfaces/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/interfaces/report.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core domain types for the agentic browser.
|
|
3
|
+
* @module interfaces/types
|
|
4
|
+
*/
|
|
5
|
+
import type { BrowserChannel, EngineName } from "./engine-types.js";
|
|
6
|
+
import type { CaptchaConfig, RetryConfig } from "./net.js";
|
|
7
|
+
/** Geographic coordinates for location emulation. */
|
|
8
|
+
export interface Geolocation {
|
|
9
|
+
latitude: number;
|
|
10
|
+
longitude: number;
|
|
11
|
+
}
|
|
12
|
+
/** Per-country identity profile (locale, currency, timezone, geo, language). */
|
|
13
|
+
export interface CountryProfile {
|
|
14
|
+
locale: string;
|
|
15
|
+
currency: string;
|
|
16
|
+
timezoneId: string;
|
|
17
|
+
geolocation: Geolocation;
|
|
18
|
+
acceptLanguage: string;
|
|
19
|
+
}
|
|
20
|
+
/** Action that can be executed on the page. Discriminated union on `type`. */
|
|
21
|
+
export type BrowserAction = {
|
|
22
|
+
type: "click";
|
|
23
|
+
target: string;
|
|
24
|
+
preferredStrategy?: string;
|
|
25
|
+
} | {
|
|
26
|
+
type: "fill";
|
|
27
|
+
target: string;
|
|
28
|
+
value: string;
|
|
29
|
+
preferredStrategy?: string;
|
|
30
|
+
} | {
|
|
31
|
+
type: "login";
|
|
32
|
+
usernameTarget?: string;
|
|
33
|
+
passwordTarget?: string;
|
|
34
|
+
submitTarget?: string;
|
|
35
|
+
username?: string;
|
|
36
|
+
password?: string;
|
|
37
|
+
} | {
|
|
38
|
+
type: "wait";
|
|
39
|
+
ms?: number;
|
|
40
|
+
};
|
|
41
|
+
/** Normalized result of an action. */
|
|
42
|
+
export interface ActionResult {
|
|
43
|
+
type: string;
|
|
44
|
+
ok: boolean;
|
|
45
|
+
target?: string;
|
|
46
|
+
strategy?: string;
|
|
47
|
+
error?: string;
|
|
48
|
+
ms?: number;
|
|
49
|
+
[extra: string]: unknown;
|
|
50
|
+
}
|
|
51
|
+
/** Agent construction options. */
|
|
52
|
+
export interface AgentOptions {
|
|
53
|
+
outputDir?: string;
|
|
54
|
+
engine?: EngineName;
|
|
55
|
+
channel?: BrowserChannel;
|
|
56
|
+
executablePath?: string;
|
|
57
|
+
cdpEndpoint?: string;
|
|
58
|
+
storageStatePath?: string;
|
|
59
|
+
humanMode?: boolean;
|
|
60
|
+
headless?: boolean;
|
|
61
|
+
locale?: string;
|
|
62
|
+
timezoneId?: string;
|
|
63
|
+
countryCode?: string;
|
|
64
|
+
currency?: string;
|
|
65
|
+
userDataDir?: string;
|
|
66
|
+
proxyUrl?: string;
|
|
67
|
+
proxyCountryMap?: Record<string, string>;
|
|
68
|
+
proxyMapPath?: string;
|
|
69
|
+
realisticProfile?: boolean;
|
|
70
|
+
replayEnabled?: boolean;
|
|
71
|
+
replayDir?: string;
|
|
72
|
+
siteMemoryDir?: string;
|
|
73
|
+
/** Navigation retry/backoff overrides. */
|
|
74
|
+
retry?: Partial<RetryConfig>;
|
|
75
|
+
/** Captcha solver config (opt-in; authorized testing only). */
|
|
76
|
+
captcha?: CaptchaConfig;
|
|
77
|
+
}
|
|
78
|
+
/** Per-probe options. */
|
|
79
|
+
export interface ProbeOptions {
|
|
80
|
+
actions?: BrowserAction[];
|
|
81
|
+
humanApproved?: boolean;
|
|
82
|
+
autoConsent?: boolean;
|
|
83
|
+
extractPrices?: boolean;
|
|
84
|
+
waitMs?: number;
|
|
85
|
+
detectChallenges?: boolean;
|
|
86
|
+
observeVisual?: boolean;
|
|
87
|
+
/** Attempt to solve a detected captcha (requires `captcha` config). */
|
|
88
|
+
solveCaptcha?: boolean;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/interfaces/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/interfaces/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed domain errors.
|
|
3
|
+
* @module lib/errors
|
|
4
|
+
*/
|
|
5
|
+
/** Thrown when an irreversible action is attempted without human approval. */
|
|
6
|
+
export declare class GuardrailViolation extends Error {
|
|
7
|
+
readonly reason: string;
|
|
8
|
+
readonly blockedActions: string[];
|
|
9
|
+
constructor(reason: string, blockedActions: string[]);
|
|
10
|
+
}
|
|
11
|
+
/** Thrown when a referenced browser session no longer exists. */
|
|
12
|
+
export declare class SessionNotFoundError extends Error {
|
|
13
|
+
constructor(sessionId: string);
|
|
14
|
+
}
|
|
15
|
+
/** Thrown when the concurrent-session cap is reached (prevents OOM). */
|
|
16
|
+
export declare class SessionLimitError extends Error {
|
|
17
|
+
constructor(limit: number);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8EAA8E;AAC9E,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;gBAEtB,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE;CAMrD;AAED,iEAAiE;AACjE,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,SAAS,EAAE,MAAM;CAI9B;AAED,wEAAwE;AACxE,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,KAAK,EAAE,MAAM;CAI1B"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed domain errors.
|
|
3
|
+
* @module lib/errors
|
|
4
|
+
*/
|
|
5
|
+
/** Thrown when an irreversible action is attempted without human approval. */
|
|
6
|
+
export class GuardrailViolation extends Error {
|
|
7
|
+
reason;
|
|
8
|
+
blockedActions;
|
|
9
|
+
constructor(reason, blockedActions) {
|
|
10
|
+
super(`Action blocked: ${reason}: ${blockedActions.join(", ")}`);
|
|
11
|
+
this.name = "GuardrailViolation";
|
|
12
|
+
this.reason = reason;
|
|
13
|
+
this.blockedActions = blockedActions;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Thrown when a referenced browser session no longer exists. */
|
|
17
|
+
export class SessionNotFoundError extends Error {
|
|
18
|
+
constructor(sessionId) {
|
|
19
|
+
super(`Session not found: ${sessionId}`);
|
|
20
|
+
this.name = "SessionNotFoundError";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** Thrown when the concurrent-session cap is reached (prevents OOM). */
|
|
24
|
+
export class SessionLimitError extends Error {
|
|
25
|
+
constructor(limit) {
|
|
26
|
+
super(`Concurrent session limit reached: ${limit}`);
|
|
27
|
+
this.name = "SessionLimitError";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8EAA8E;AAC9E,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,MAAM,CAAS;IACf,cAAc,CAAW;IAElC,YAAY,MAAc,EAAE,cAAwB;QAClD,KAAK,CAAC,mBAAmB,MAAM,KAAK,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;CACF;AAED,iEAAiE;AACjE,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,SAAiB;QAC3B,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,wEAAwE;AACxE,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,KAAa;QACvB,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-script evaluation helpers.
|
|
3
|
+
*
|
|
4
|
+
* Playwright (Node) treats a string passed to `page.evaluate` as a JavaScript
|
|
5
|
+
* *expression*, not an auto-invoked function: `"() => 42"` returns the function
|
|
6
|
+
* (serialized to undefined), not `42`, and a second `arg` is ignored for strings.
|
|
7
|
+
* These wrappers therefore wrap the arrow-function source in an IIFE and inline
|
|
8
|
+
* the argument via `JSON.stringify`, so callers keep authoring plain
|
|
9
|
+
* `(arg) => {...}` scripts while staying isolated from Node DOM typing.
|
|
10
|
+
* @module lib/evaluate
|
|
11
|
+
*/
|
|
12
|
+
import type { Page } from "playwright";
|
|
13
|
+
/** Evaluate an arrow-function browser script with no argument; returns `R`. */
|
|
14
|
+
export declare function evalScript<R>(page: Page, script: string): Promise<R>;
|
|
15
|
+
/** Evaluate an arrow-function browser script with one serializable argument. */
|
|
16
|
+
export declare function evalScriptArg<R, A>(page: Page, script: string, arg: A): Promise<R>;
|
|
17
|
+
//# sourceMappingURL=evaluate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/lib/evaluate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAEpE;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAGlF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Evaluate an arrow-function browser script with no argument; returns `R`. */
|
|
2
|
+
export function evalScript(page, script) {
|
|
3
|
+
return page.evaluate(`(${script})()`);
|
|
4
|
+
}
|
|
5
|
+
/** Evaluate an arrow-function browser script with one serializable argument. */
|
|
6
|
+
export function evalScriptArg(page, script, arg) {
|
|
7
|
+
const expression = `(${script})(${JSON.stringify(arg)})`;
|
|
8
|
+
return page.evaluate(expression);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=evaluate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/lib/evaluate.ts"],"names":[],"mappings":"AAaA,+EAA+E;AAC/E,MAAM,UAAU,UAAU,CAAI,IAAU,EAAE,MAAc;IACtD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,KAA2B,CAAC,CAAC;AAC9D,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,aAAa,CAAO,IAAU,EAAE,MAAc,EAAE,GAAM;IACpE,MAAM,UAAU,GAAG,IAAI,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;IACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAgC,CAAC,CAAC;AACzD,CAAC"}
|
package/dist/lib/fs.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Crée un dossier (récursif, idempotent). */
|
|
2
|
+
export declare function ensureDir(dir: string): void;
|
|
3
|
+
/** Écrit un fichier en garantissant l'existence du dossier parent. */
|
|
4
|
+
export declare function writeFileEnsured(filePath: string, content: string): void;
|
|
5
|
+
/** Sérialise en JSON indenté et écrit le fichier. */
|
|
6
|
+
export declare function writeJson(filePath: string, value: unknown): void;
|
|
7
|
+
/** Lit et parse un JSON ; renvoie `fallback` en cas d'erreur/absence. */
|
|
8
|
+
export declare function readJsonSafe<T>(filePath: string, fallback: T): T;
|
|
9
|
+
/** SHA-1 hexadécimal d'une chaîne (signatures DOM, run ids — usage non cryptographique). */
|
|
10
|
+
export declare function sha1(input: string): string;
|
|
11
|
+
//# sourceMappingURL=fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/lib/fs.ts"],"names":[],"mappings":"AAQA,8CAA8C;AAC9C,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGxE;AAED,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAEhE;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAMhE;AAED,4FAA4F;AAC5F,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1C"}
|
package/dist/lib/fs.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers système de fichiers et hash.
|
|
3
|
+
* @module lib/fs
|
|
4
|
+
*/
|
|
5
|
+
import { createHash } from "node:crypto";
|
|
6
|
+
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
7
|
+
import { dirname } from "node:path";
|
|
8
|
+
/** Crée un dossier (récursif, idempotent). */
|
|
9
|
+
export function ensureDir(dir) {
|
|
10
|
+
mkdirSync(dir, { recursive: true });
|
|
11
|
+
}
|
|
12
|
+
/** Écrit un fichier en garantissant l'existence du dossier parent. */
|
|
13
|
+
export function writeFileEnsured(filePath, content) {
|
|
14
|
+
ensureDir(dirname(filePath));
|
|
15
|
+
writeFileSync(filePath, content, "utf-8");
|
|
16
|
+
}
|
|
17
|
+
/** Sérialise en JSON indenté et écrit le fichier. */
|
|
18
|
+
export function writeJson(filePath, value) {
|
|
19
|
+
writeFileEnsured(filePath, JSON.stringify(value, null, 2));
|
|
20
|
+
}
|
|
21
|
+
/** Lit et parse un JSON ; renvoie `fallback` en cas d'erreur/absence. */
|
|
22
|
+
export function readJsonSafe(filePath, fallback) {
|
|
23
|
+
try {
|
|
24
|
+
return JSON.parse(readFileSync(filePath, "utf-8"));
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return fallback;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** SHA-1 hexadécimal d'une chaîne (signatures DOM, run ids — usage non cryptographique). */
|
|
31
|
+
export function sha1(input) {
|
|
32
|
+
return createHash("sha1").update(input).digest("hex");
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=fs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/lib/fs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,8CAA8C;AAC9C,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,OAAe;IAChE,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7B,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,KAAc;IACxD,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAI,QAAgB,EAAE,QAAW;IAC3D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAM,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,IAAI,CAAC,KAAa;IAChC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger structuré sur stderr.
|
|
3
|
+
* stdout est réservé au framing JSON-RPC du transport MCP stdio :
|
|
4
|
+
* tout log applicatif doit donc passer par stderr.
|
|
5
|
+
* @module lib/logger
|
|
6
|
+
*/
|
|
7
|
+
/** Logger minimal écrivant du JSON ligne par ligne sur stderr. */
|
|
8
|
+
export declare const logger: {
|
|
9
|
+
debug: (msg: string, meta?: Record<string, unknown>) => void;
|
|
10
|
+
info: (msg: string, meta?: Record<string, unknown>) => void;
|
|
11
|
+
warn: (msg: string, meta?: Record<string, unknown>) => void;
|
|
12
|
+
error: (msg: string, meta?: Record<string, unknown>) => void;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,kEAAkE;AAClE,eAAO,MAAM,MAAM;iBACJ,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBACvC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBACtC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;iBACrC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CACpD,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger structuré sur stderr.
|
|
3
|
+
* stdout est réservé au framing JSON-RPC du transport MCP stdio :
|
|
4
|
+
* tout log applicatif doit donc passer par stderr.
|
|
5
|
+
* @module lib/logger
|
|
6
|
+
*/
|
|
7
|
+
const LEVELS = { debug: 10, info: 20, warn: 30, error: 40 };
|
|
8
|
+
const threshold = LEVELS[process.env.FUSE_LOG_LEVEL ?? "info"] ?? LEVELS.info;
|
|
9
|
+
function emit(level, message, meta) {
|
|
10
|
+
if (LEVELS[level] < threshold)
|
|
11
|
+
return;
|
|
12
|
+
const entry = { level, message, ...(meta ? { meta } : {}) };
|
|
13
|
+
process.stderr.write(`${JSON.stringify(entry)}\n`);
|
|
14
|
+
}
|
|
15
|
+
/** Logger minimal écrivant du JSON ligne par ligne sur stderr. */
|
|
16
|
+
export const logger = {
|
|
17
|
+
debug: (msg, meta) => emit("debug", msg, meta),
|
|
18
|
+
info: (msg, meta) => emit("info", msg, meta),
|
|
19
|
+
warn: (msg, meta) => emit("warn", msg, meta),
|
|
20
|
+
error: (msg, meta) => emit("error", msg, meta),
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,MAAM,GAA0B,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAEnF,MAAM,SAAS,GAAG,MAAM,CAAE,OAAO,CAAC,GAAG,CAAC,cAAwB,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;AAEzF,SAAS,IAAI,CAAC,KAAY,EAAE,OAAe,EAAE,IAA8B;IACzE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS;QAAE,OAAO;IACtC,MAAM,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,CAAC,GAAW,EAAE,IAA8B,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC;IAChF,IAAI,EAAE,CAAC,GAAW,EAAE,IAA8B,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAC9E,IAAI,EAAE,CAAC,GAAW,EAAE,IAA8B,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAC9E,KAAK,EAAE,CAAC,GAAW,EAAE,IAA8B,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC;CACjF,CAAC"}
|