@descryy/mcp 0.5.0 → 0.7.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/action-handshake.d.ts +8 -75
- package/dist/action-handshake.d.ts.map +1 -1
- package/dist/action-handshake.js +9 -79
- package/dist/action-handshake.js.map +1 -1
- package/dist/bin/descry-mcp.d.ts +4 -15
- package/dist/bin/descry-mcp.d.ts.map +1 -1
- package/dist/bin/descry-mcp.js +12 -42
- package/dist/bin/descry-mcp.js.map +1 -1
- package/dist/browser/driver.d.ts +62 -178
- package/dist/browser/driver.d.ts.map +1 -1
- package/dist/browser/driver.js +14 -46
- package/dist/browser/driver.js.map +1 -1
- package/dist/browser/evidence.d.ts +11 -35
- package/dist/browser/evidence.d.ts.map +1 -1
- package/dist/browser/evidence.js +25 -51
- package/dist/browser/evidence.js.map +1 -1
- package/dist/browser/fake-driver.d.ts +12 -16
- package/dist/browser/fake-driver.d.ts.map +1 -1
- package/dist/browser/fake-driver.js +24 -17
- package/dist/browser/fake-driver.js.map +1 -1
- package/dist/browser/graph-write.d.ts +4 -45
- package/dist/browser/graph-write.d.ts.map +1 -1
- package/dist/browser/graph-write.js +8 -53
- package/dist/browser/graph-write.js.map +1 -1
- package/dist/browser/playwright-driver.d.ts +17 -67
- package/dist/browser/playwright-driver.d.ts.map +1 -1
- package/dist/browser/playwright-driver.js +169 -166
- package/dist/browser/playwright-driver.js.map +1 -1
- package/dist/browser/provider.d.ts +5 -34
- package/dist/browser/provider.d.ts.map +1 -1
- package/dist/browser/provider.js +4 -24
- package/dist/browser/provider.js.map +1 -1
- package/dist/browser/registry.d.ts +26 -106
- package/dist/browser/registry.d.ts.map +1 -1
- package/dist/browser/registry.js +20 -77
- package/dist/browser/registry.js.map +1 -1
- package/dist/browser/scenario-resolve.d.ts +10 -44
- package/dist/browser/scenario-resolve.d.ts.map +1 -1
- package/dist/browser/scenario-resolve.js +10 -41
- package/dist/browser/scenario-resolve.js.map +1 -1
- package/dist/browser/scenario-runner.d.ts +12 -70
- package/dist/browser/scenario-runner.d.ts.map +1 -1
- package/dist/browser/scenario-runner.js +33 -91
- package/dist/browser/scenario-runner.js.map +1 -1
- package/dist/browser/stack-parser.d.ts +4 -28
- package/dist/browser/stack-parser.d.ts.map +1 -1
- package/dist/browser/stack-parser.js +12 -39
- package/dist/browser/stack-parser.js.map +1 -1
- package/dist/browser/tool-support.d.ts +20 -67
- package/dist/browser/tool-support.d.ts.map +1 -1
- package/dist/browser/tool-support.js +22 -66
- package/dist/browser/tool-support.js.map +1 -1
- package/dist/browser/url-scheme.d.ts +14 -0
- package/dist/browser/url-scheme.d.ts.map +1 -0
- package/dist/browser/url-scheme.js +38 -0
- package/dist/browser/url-scheme.js.map +1 -0
- package/dist/cancellation.d.ts +11 -46
- package/dist/cancellation.d.ts.map +1 -1
- package/dist/cancellation.js +11 -46
- package/dist/cancellation.js.map +1 -1
- package/dist/capped.d.ts +17 -0
- package/dist/capped.d.ts.map +1 -0
- package/dist/capped.js +15 -0
- package/dist/capped.js.map +1 -0
- package/dist/disclosure-ledger.d.ts +6 -30
- package/dist/disclosure-ledger.d.ts.map +1 -1
- package/dist/disclosure-ledger.js +4 -26
- package/dist/disclosure-ledger.js.map +1 -1
- package/dist/index.d.ts +10 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -17
- package/dist/index.js.map +1 -1
- package/dist/module-trust.d.ts +24 -0
- package/dist/module-trust.d.ts.map +1 -0
- package/dist/module-trust.js +60 -0
- package/dist/module-trust.js.map +1 -0
- package/dist/path-confinement.d.ts +31 -0
- package/dist/path-confinement.d.ts.map +1 -0
- package/dist/path-confinement.js +44 -0
- package/dist/path-confinement.js.map +1 -0
- package/dist/protocol.d.ts +10 -53
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +14 -60
- package/dist/protocol.js.map +1 -1
- package/dist/registry.d.ts +10 -58
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +38 -90
- package/dist/registry.js.map +1 -1
- package/dist/render.d.ts +79 -11
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +126 -14
- package/dist/render.js.map +1 -1
- package/dist/runtime-registry.d.ts +8 -49
- package/dist/runtime-registry.d.ts.map +1 -1
- package/dist/runtime-registry.js +72 -63
- package/dist/runtime-registry.js.map +1 -1
- package/dist/scenarios/index.d.ts +1 -1
- package/dist/scenarios/index.d.ts.map +1 -1
- package/dist/scenarios/index.js +1 -1
- package/dist/scenarios/index.js.map +1 -1
- package/dist/scenarios/parse.d.ts +4 -18
- package/dist/scenarios/parse.d.ts.map +1 -1
- package/dist/scenarios/parse.js +14 -34
- package/dist/scenarios/parse.js.map +1 -1
- package/dist/scenarios/scenario.d.ts +18 -74
- package/dist/scenarios/scenario.d.ts.map +1 -1
- package/dist/scenarios/scenario.js +7 -34
- package/dist/scenarios/scenario.js.map +1 -1
- package/dist/scenarios/storage.d.ts +11 -41
- package/dist/scenarios/storage.d.ts.map +1 -1
- package/dist/scenarios/storage.js +57 -47
- package/dist/scenarios/storage.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +55 -13
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +69 -239
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +76 -231
- package/dist/session.js.map +1 -1
- package/dist/tools/analyze.d.ts +27 -101
- package/dist/tools/analyze.d.ts.map +1 -1
- package/dist/tools/analyze.js +58 -148
- package/dist/tools/analyze.js.map +1 -1
- package/dist/tools/browser-click.d.ts +3 -21
- package/dist/tools/browser-click.d.ts.map +1 -1
- package/dist/tools/browser-click.js +10 -31
- package/dist/tools/browser-click.js.map +1 -1
- package/dist/tools/browser-close-session.d.ts +4 -13
- package/dist/tools/browser-close-session.d.ts.map +1 -1
- package/dist/tools/browser-close-session.js +4 -13
- package/dist/tools/browser-close-session.js.map +1 -1
- package/dist/tools/browser-fill.d.ts +5 -36
- package/dist/tools/browser-fill.d.ts.map +1 -1
- package/dist/tools/browser-fill.js +9 -44
- package/dist/tools/browser-fill.js.map +1 -1
- package/dist/tools/browser-navigate.d.ts +6 -27
- package/dist/tools/browser-navigate.d.ts.map +1 -1
- package/dist/tools/browser-navigate.js +6 -23
- package/dist/tools/browser-navigate.js.map +1 -1
- package/dist/tools/browser-run-scenario.d.ts +5 -31
- package/dist/tools/browser-run-scenario.d.ts.map +1 -1
- package/dist/tools/browser-run-scenario.js +10 -46
- package/dist/tools/browser-run-scenario.js.map +1 -1
- package/dist/tools/browser-save-scenario.d.ts +3 -28
- package/dist/tools/browser-save-scenario.d.ts.map +1 -1
- package/dist/tools/browser-save-scenario.js +102 -55
- package/dist/tools/browser-save-scenario.js.map +1 -1
- package/dist/tools/browser-snapshot.d.ts +6 -39
- package/dist/tools/browser-snapshot.d.ts.map +1 -1
- package/dist/tools/browser-snapshot.js +4 -31
- package/dist/tools/browser-snapshot.js.map +1 -1
- package/dist/tools/browser-start-session.d.ts +4 -23
- package/dist/tools/browser-start-session.d.ts.map +1 -1
- package/dist/tools/browser-start-session.js +38 -51
- package/dist/tools/browser-start-session.js.map +1 -1
- package/dist/tools/browser-type.d.ts +5 -35
- package/dist/tools/browser-type.d.ts.map +1 -1
- package/dist/tools/browser-type.js +10 -45
- package/dist/tools/browser-type.js.map +1 -1
- package/dist/tools/contracts.d.ts +17 -63
- package/dist/tools/contracts.d.ts.map +1 -1
- package/dist/tools/contracts.js +91 -47
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/cross-pr.d.ts +56 -15
- package/dist/tools/cross-pr.d.ts.map +1 -1
- package/dist/tools/cross-pr.js +141 -38
- package/dist/tools/cross-pr.js.map +1 -1
- package/dist/tools/git-diff.d.ts +18 -2
- package/dist/tools/git-diff.d.ts.map +1 -1
- package/dist/tools/git-diff.js +143 -23
- package/dist/tools/git-diff.js.map +1 -1
- package/dist/tools/git-history.d.ts +5 -16
- package/dist/tools/git-history.d.ts.map +1 -1
- package/dist/tools/git-history.js +3 -10
- package/dist/tools/git-history.js.map +1 -1
- package/dist/tools/history.d.ts +4 -33
- package/dist/tools/history.d.ts.map +1 -1
- package/dist/tools/history.js +6 -31
- package/dist/tools/history.js.map +1 -1
- package/dist/tools/impact.d.ts +7 -51
- package/dist/tools/impact.d.ts.map +1 -1
- package/dist/tools/impact.js +15 -67
- package/dist/tools/impact.js.map +1 -1
- package/dist/tools/index.d.ts +3 -8
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/kit.d.ts +66 -113
- package/dist/tools/kit.d.ts.map +1 -1
- package/dist/tools/kit.js +60 -28
- package/dist/tools/kit.js.map +1 -1
- package/dist/tools/link-workspace.d.ts +7 -45
- package/dist/tools/link-workspace.d.ts.map +1 -1
- package/dist/tools/link-workspace.js +10 -48
- package/dist/tools/link-workspace.js.map +1 -1
- package/dist/tools/lookup.d.ts +4 -14
- package/dist/tools/lookup.d.ts.map +1 -1
- package/dist/tools/lookup.js +4 -14
- package/dist/tools/lookup.js.map +1 -1
- package/dist/tools/mark-incident.d.ts +7 -54
- package/dist/tools/mark-incident.d.ts.map +1 -1
- package/dist/tools/mark-incident.js +15 -68
- package/dist/tools/mark-incident.js.map +1 -1
- package/dist/tools/observe-runtime.d.ts +27 -210
- package/dist/tools/observe-runtime.d.ts.map +1 -1
- package/dist/tools/observe-runtime.js +258 -436
- package/dist/tools/observe-runtime.js.map +1 -1
- package/dist/tools/observe-tests.d.ts +9 -88
- package/dist/tools/observe-tests.d.ts.map +1 -1
- package/dist/tools/observe-tests.js +34 -108
- package/dist/tools/observe-tests.js.map +1 -1
- package/dist/tools/pr-analysis.d.ts +18 -2
- package/dist/tools/pr-analysis.d.ts.map +1 -1
- package/dist/tools/pr-analysis.js +73 -23
- package/dist/tools/pr-analysis.js.map +1 -1
- package/dist/tools/pre-push.d.ts +94 -9
- package/dist/tools/pre-push.d.ts.map +1 -1
- package/dist/tools/pre-push.js +139 -34
- package/dist/tools/pre-push.js.map +1 -1
- package/dist/tools/propagation.d.ts +11 -53
- package/dist/tools/propagation.d.ts.map +1 -1
- package/dist/tools/propagation.js +14 -57
- package/dist/tools/propagation.js.map +1 -1
- package/dist/tools/questions.d.ts +13 -63
- package/dist/tools/questions.d.ts.map +1 -1
- package/dist/tools/questions.js +33 -105
- package/dist/tools/questions.js.map +1 -1
- package/dist/tools/refusal-fetch.d.ts +4 -40
- package/dist/tools/refusal-fetch.d.ts.map +1 -1
- package/dist/tools/refusal-fetch.js +4 -40
- package/dist/tools/refusal-fetch.js.map +1 -1
- package/dist/tools/runtime-incident.d.ts +4 -63
- package/dist/tools/runtime-incident.d.ts.map +1 -1
- package/dist/tools/runtime-incident.js +10 -87
- package/dist/tools/runtime-incident.js.map +1 -1
- package/dist/tools/scope.d.ts +7 -25
- package/dist/tools/scope.d.ts.map +1 -1
- package/dist/tools/scope.js +17 -20
- package/dist/tools/scope.js.map +1 -1
- package/dist/tools/similar-incidents.d.ts +11 -86
- package/dist/tools/similar-incidents.d.ts.map +1 -1
- package/dist/tools/similar-incidents.js +7 -71
- package/dist/tools/similar-incidents.js.map +1 -1
- package/dist/tools/validate.d.ts +31 -47
- package/dist/tools/validate.d.ts.map +1 -1
- package/dist/tools/validate.js +133 -61
- package/dist/tools/validate.js.map +1 -1
- package/dist/tools/verification-status.d.ts +9 -64
- package/dist/tools/verification-status.d.ts.map +1 -1
- package/dist/tools/verification-status.js +9 -62
- package/dist/tools/verification-status.js.map +1 -1
- package/dist/tools/verify-claim.d.ts +5 -52
- package/dist/tools/verify-claim.d.ts.map +1 -1
- package/dist/tools/verify-claim.js +6 -56
- package/dist/tools/verify-claim.js.map +1 -1
- package/dist/transport.d.ts +15 -52
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +16 -60
- package/dist/transport.js.map +1 -1
- package/package.json +33 -16
|
@@ -1,45 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The real `BrowserDriver`, over `@descryy/runtime-browser`.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* `@descryy/runtime-browser` is now a declared dependency of `@descryy/mcp`
|
|
7
|
-
* (`mcp-browser-tools.md` §3.1's publish landed) — so the reason this module
|
|
8
|
-
* used to give for a call-time specifier import, "not on the registry yet,"
|
|
9
|
-
* no longer holds. It stays dynamic anyway, for a reason that outgrew that
|
|
10
|
-
* one: `loadRuntimeModule` (`PlaywrightDriverOptions`, below) is a real
|
|
11
|
-
* injection seam that `browser-action-settle.test.ts` uses today to drive
|
|
12
|
-
* this file's settle logic against a fake module shaped like this one,
|
|
13
|
-
* deterministically, with no real browser involved. A static
|
|
14
|
-
* `import … from "@descryy/runtime-browser"` at the top of this file would
|
|
15
|
-
* remove that seam along with the indirection, and nothing here needs
|
|
16
|
-
* removing it — the package being on the registry made the *dependency*
|
|
17
|
-
* declarable, not the import path mandatory. Absence (package missing,
|
|
18
|
-
* import throws, or Chromium missing) is still a **named refusal with a
|
|
19
|
-
* remedy**, exactly as before — see `provider.ts`.
|
|
20
|
-
*
|
|
21
|
-
* ## What this adds over the runtime package, and what it deliberately does not
|
|
22
|
-
*
|
|
23
|
-
* It adds exactly one thing the runtime has no API for: **element refs.** The
|
|
24
|
-
* port's contract is that an action names an element the agent has seen, and
|
|
25
|
-
* `BrowserActionCollector` acts on raw selectors. So this module enumerates
|
|
26
|
-
* the page's interactive elements, holds a Playwright `ElementHandle` per ref,
|
|
27
|
-
* and drops the whole map on navigation. Handles rather than injected `data-`
|
|
28
|
-
* attributes on purpose: stamping the DOM would make the act of observing
|
|
29
|
-
* change the page being observed, and a detached element then fails naturally
|
|
30
|
-
* instead of resolving to whatever took its place.
|
|
31
|
-
*
|
|
32
|
-
* Everything else is composition. Launch, click, type, fill, console capture,
|
|
33
|
-
* network capture, the `fetch()` initiator stack and its source-map rewrite
|
|
34
|
-
* are all the runtime package's, called rather than reimplemented.
|
|
35
|
-
*
|
|
36
|
-
* ## Rule 1
|
|
37
|
-
*
|
|
38
|
-
* No language is named here. The stack-trace parser that turns a raw browser
|
|
39
|
-
* stack into resolved frames is handed in by the caller as a module specifier
|
|
40
|
-
* — the same mechanism `runtime-registry.ts` uses for runtime adapters, for
|
|
41
|
-
* the same reason. Without one, requests are still observed and no caller
|
|
42
|
-
* edge is written; the reply says so.
|
|
2
|
+
* The real `BrowserDriver`, over `@descryy/runtime-browser`. Import stays
|
|
3
|
+
* dynamic — `loadRuntimeModule` is a test injection seam (fake module, no
|
|
4
|
+
* browser needed). Adds only element refs over the runtime; stack-trace parsing is caller-supplied (rule 1: no language named here).
|
|
43
5
|
*/
|
|
44
6
|
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
45
7
|
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
@@ -53,40 +15,15 @@ import { BrowserSessionCrashedError, UnknownElementRefError } from "./driver.js"
|
|
|
53
15
|
/** The module the driver composes. Named once, imported at call time. */
|
|
54
16
|
const RUNTIME_BROWSER_MODULE = "@descryy/runtime-browser";
|
|
55
17
|
const defaultRuntimeModuleLoader = () => import(__rewriteRelativeImportExtension(RUNTIME_BROWSER_MODULE));
|
|
56
|
-
/**
|
|
57
|
-
* How long an action waits for the page to *start* doing something.
|
|
58
|
-
*
|
|
59
|
-
* This is the one half of the wait that cannot be made conditional: there is
|
|
60
|
-
* no signal for "this click will never issue a request", and proving that
|
|
61
|
-
* negative is proving a negative. It is the old fixed 300ms, kept at its old
|
|
62
|
-
* value so an action that causes nothing observes exactly what it observed
|
|
63
|
-
* before — and it is now a *ceiling* rather than a duration, since any
|
|
64
|
-
* request that starts inside it moves the wait onto the settle condition
|
|
65
|
-
* below.
|
|
66
|
-
*/
|
|
18
|
+
/** Ceiling on waiting for network activity to *start* — no signal proves "never will". Kept at the old fixed 300ms so a no-op action observes the same as before. */
|
|
67
19
|
const ACTIVITY_GRACE_MS = 300;
|
|
68
|
-
/**
|
|
69
|
-
* After the last request lifecycle event, how long of nothing counts as
|
|
70
|
-
* settled. Short on purpose: this fires only once activity has been seen, so
|
|
71
|
-
* it measures a gap between requests, not a guess about whether any will come.
|
|
72
|
-
*/
|
|
20
|
+
/** How long after the last request event counts as settled; fires only once activity is seen, so it measures a gap, not a guess about more coming. */
|
|
73
21
|
const NETWORK_QUIET_MS = 120;
|
|
74
|
-
/**
|
|
75
|
-
* The ceiling on the whole wait. A page that never stops requesting must not
|
|
76
|
-
* hold a tool call open forever; reaching this is recorded on the observation
|
|
77
|
-
* and disclosed, never swallowed.
|
|
78
|
-
*/
|
|
22
|
+
/** Ceiling on the whole wait; reaching it is recorded on the observation and disclosed, never swallowed. */
|
|
79
23
|
const SETTLE_TIMEOUT_MS = 5_000;
|
|
80
24
|
/** How often the settle loop re-checks. Small enough not to add latency of its own. */
|
|
81
25
|
const POLL_INTERVAL_MS = 10;
|
|
82
|
-
/**
|
|
83
|
-
* Elements an agent can act on.
|
|
84
|
-
*
|
|
85
|
-
* Deliberately narrow. A snapshot of every node on the page would be
|
|
86
|
-
* enormous, mostly unactionable, and would push the reply budget into
|
|
87
|
-
* dropping the elements that matter. `[role]` is included so an application
|
|
88
|
-
* that builds its own controls is not invisible.
|
|
89
|
-
*/
|
|
26
|
+
/** Elements an agent can act on — deliberately narrow; a full-page snapshot would blow the reply budget. `[role]` included for custom controls. */
|
|
90
27
|
const INTERACTIVE = "a, button, input, select, textarea, [role], [onclick], summary";
|
|
91
28
|
export class BrowserBackendMissingError extends Error {
|
|
92
29
|
constructor(cause) {
|
|
@@ -119,9 +56,7 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
119
56
|
const emitted = [];
|
|
120
57
|
const actions = [];
|
|
121
58
|
const unsettled = [];
|
|
122
|
-
//
|
|
123
|
-
// what "the page is still doing something" means, and `lastEventAt` is what
|
|
124
|
-
// separates a gap between two requests from the end of them.
|
|
59
|
+
// inFlight/lastEventAt track request activity: counted, not slept through.
|
|
125
60
|
let inFlight = 0;
|
|
126
61
|
let lastEventAt = 0;
|
|
127
62
|
session.page.on("request", () => {
|
|
@@ -160,12 +95,9 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
160
95
|
...(options.service === undefined ? {} : { service: options.service }),
|
|
161
96
|
...(options.stackParser === undefined ? {} : { stackTraceParser: options.stackParser }),
|
|
162
97
|
});
|
|
163
|
-
// Started before
|
|
164
|
-
//
|
|
165
|
-
//
|
|
166
|
-
// started after navigating would observe a page it could never have
|
|
167
|
-
// instrumented, and would report an honest-looking empty stack for every
|
|
168
|
-
// request.
|
|
98
|
+
// Started before first navigation: Playwright's init-script contract means
|
|
99
|
+
// a collector started later misses instrumentation, reporting an
|
|
100
|
+
// honest-looking but empty stack.
|
|
169
101
|
await actionCollector.start(context);
|
|
170
102
|
await consoleCollector.start(context);
|
|
171
103
|
await networkCollector.start(context);
|
|
@@ -183,26 +115,7 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
183
115
|
function recordAction(action, ref, mode) {
|
|
184
116
|
actions.push({ action, ref, mode, url: session.page.url(), at: new Date().toISOString() });
|
|
185
117
|
}
|
|
186
|
-
/**
|
|
187
|
-
* Waits for the network activity this action caused, and records it when it
|
|
188
|
-
* does not arrive.
|
|
189
|
-
*
|
|
190
|
-
* Two conditions, because there are two different questions:
|
|
191
|
-
*
|
|
192
|
-
* - **Did anything start?** There is no signal for "nothing will", so this
|
|
193
|
-
* half is a bounded wait — `ACTIVITY_GRACE_MS`, the old fixed sleep's own
|
|
194
|
-
* value, so an action that causes nothing observes exactly what it did
|
|
195
|
-
* before. It is a ceiling now rather than a duration: the moment a
|
|
196
|
-
* request starts, the wait moves onto the second condition.
|
|
197
|
-
* - **Has it finished?** Nothing in flight, and nothing new for
|
|
198
|
-
* `NETWORK_QUIET_MS`. This is the half the fixed sleep got wrong: a
|
|
199
|
-
* request that took longer than 300ms was not waited for and its
|
|
200
|
-
* evidence was silently absent from the reply.
|
|
201
|
-
*
|
|
202
|
-
* Whichever condition is running, the whole wait is capped at
|
|
203
|
-
* `SETTLE_TIMEOUT_MS` — and reaching that cap is recorded on the
|
|
204
|
-
* observation, never swallowed.
|
|
205
|
-
*/
|
|
118
|
+
/** Waits for the action's network effect (started within `ACTIVITY_GRACE_MS`, then quiet for `NETWORK_QUIET_MS`), capped at `SETTLE_TIMEOUT_MS` — reaching the cap is recorded, never swallowed. */
|
|
206
119
|
async function settleAfterAction(action, ref) {
|
|
207
120
|
const startedAt = Date.now();
|
|
208
121
|
lastEventAt = startedAt;
|
|
@@ -266,17 +179,113 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
266
179
|
: tag === "input" && type === "checkbox"
|
|
267
180
|
? "checkbox"
|
|
268
181
|
: tag);
|
|
269
|
-
// A pragmatic accessible
|
|
270
|
-
// the label a person would read, in the order a person would find
|
|
271
|
-
// it. Named as an approximation rather than presented as the
|
|
272
|
-
// accessibility tree's own answer.
|
|
182
|
+
// A pragmatic accessible-name approximation, not a full AccName implementation.
|
|
273
183
|
const name = el.getAttribute("aria-label") ??
|
|
274
184
|
el.innerText?.trim() ??
|
|
275
185
|
el.textContent?.trim() ??
|
|
276
186
|
el.getAttribute("placeholder") ??
|
|
277
187
|
el.getAttribute("name") ??
|
|
278
188
|
"";
|
|
279
|
-
|
|
189
|
+
// Computed in this same round trip so role/name/selector read off
|
|
190
|
+
// one live DOM state; runs inside the page (serialized by
|
|
191
|
+
// Playwright), so it must not close over the outer module.
|
|
192
|
+
// Rejects ids that look generated (hex run, React's `:r0:` useId
|
|
193
|
+
// style, or blank) — "stable across reload" is what a generated id lacks.
|
|
194
|
+
const GENERATED_ID = /[0-9a-f]{8}|:r[0-9a-z]+:|^\s*$/i;
|
|
195
|
+
const FORM_CONTROLS = ["input", "select", "textarea", "button"];
|
|
196
|
+
function escapeAttrValue(value) {
|
|
197
|
+
return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
198
|
+
}
|
|
199
|
+
function isUnique(candidate) {
|
|
200
|
+
try {
|
|
201
|
+
return el.ownerDocument.querySelectorAll(candidate).length === 1;
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
// Invalid selector (rare) is treated as "no candidate", not thrown.
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/** The element's own stable-hook selector, or null. Used both on the target itself and while climbing for a structural path's anchor. */
|
|
209
|
+
function stableHookSelector(node) {
|
|
210
|
+
const testId = node.getAttribute("data-testid");
|
|
211
|
+
if (testId !== null && testId.trim() !== "")
|
|
212
|
+
return `[data-testid="${escapeAttrValue(testId)}"]`;
|
|
213
|
+
const testAttr = node.getAttribute("data-test");
|
|
214
|
+
if (testAttr !== null && testAttr.trim() !== "")
|
|
215
|
+
return `[data-test="${escapeAttrValue(testAttr)}"]`;
|
|
216
|
+
const id = node.getAttribute("id");
|
|
217
|
+
if (id !== null && !GENERATED_ID.test(id))
|
|
218
|
+
return `[id="${escapeAttrValue(id)}"]`;
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
function nthOfTypeSegment(node, parent) {
|
|
222
|
+
const tag = node.tagName.toLowerCase();
|
|
223
|
+
const siblings = parent.querySelectorAll(`:scope > ${tag}`);
|
|
224
|
+
if (siblings.length <= 1)
|
|
225
|
+
return tag;
|
|
226
|
+
for (let i = 0; i < siblings.length; i += 1) {
|
|
227
|
+
if (siblings.item(i) === node)
|
|
228
|
+
return `${tag}:nth-of-type(${i + 1})`;
|
|
229
|
+
}
|
|
230
|
+
return tag;
|
|
231
|
+
}
|
|
232
|
+
/** A bounded path from the nearest ancestor carrying a stable hook, capped at 6 segments. Null when none is found in range. */
|
|
233
|
+
function structuralPath(target) {
|
|
234
|
+
const segments = [];
|
|
235
|
+
let node = target;
|
|
236
|
+
for (let depth = 0; depth < 6; depth += 1) {
|
|
237
|
+
const parent = node.parentElement;
|
|
238
|
+
if (parent === null)
|
|
239
|
+
return null;
|
|
240
|
+
segments.unshift(nthOfTypeSegment(node, parent));
|
|
241
|
+
const hook = stableHookSelector(parent);
|
|
242
|
+
if (hook !== null) {
|
|
243
|
+
const candidate = `${hook} > ${segments.join(" > ")}`;
|
|
244
|
+
return isUnique(candidate) ? candidate : null;
|
|
245
|
+
}
|
|
246
|
+
node = parent;
|
|
247
|
+
}
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
function computeSelector(target) {
|
|
251
|
+
// Priority order: first unique candidate wins. Each tier is checked
|
|
252
|
+
// independently — a shared data-testid isn't addressable either,
|
|
253
|
+
// so the next tier gets a turn instead of stopping there.
|
|
254
|
+
const testId = target.getAttribute("data-testid");
|
|
255
|
+
if (testId !== null && testId.trim() !== "") {
|
|
256
|
+
const candidate = `[data-testid="${escapeAttrValue(testId)}"]`;
|
|
257
|
+
if (isUnique(candidate))
|
|
258
|
+
return candidate;
|
|
259
|
+
}
|
|
260
|
+
const testAttr = target.getAttribute("data-test");
|
|
261
|
+
if (testAttr !== null && testAttr.trim() !== "") {
|
|
262
|
+
const candidate = `[data-test="${escapeAttrValue(testAttr)}"]`;
|
|
263
|
+
if (isUnique(candidate))
|
|
264
|
+
return candidate;
|
|
265
|
+
}
|
|
266
|
+
const id = target.getAttribute("id");
|
|
267
|
+
if (id !== null && !GENERATED_ID.test(id)) {
|
|
268
|
+
const candidate = `[id="${escapeAttrValue(id)}"]`;
|
|
269
|
+
if (isUnique(candidate))
|
|
270
|
+
return candidate;
|
|
271
|
+
}
|
|
272
|
+
const controlTag = target.tagName.toLowerCase();
|
|
273
|
+
const name = target.getAttribute("name");
|
|
274
|
+
if (name !== null && name.trim() !== "" && FORM_CONTROLS.includes(controlTag)) {
|
|
275
|
+
const candidate = `${controlTag}[name="${escapeAttrValue(name)}"]`;
|
|
276
|
+
if (isUnique(candidate))
|
|
277
|
+
return candidate;
|
|
278
|
+
}
|
|
279
|
+
const explicitRole = target.getAttribute("role");
|
|
280
|
+
const ariaLabel = target.getAttribute("aria-label");
|
|
281
|
+
if (explicitRole !== null && ariaLabel !== null && ariaLabel.trim() !== "") {
|
|
282
|
+
const candidate = `[role="${escapeAttrValue(explicitRole)}"][aria-label="${escapeAttrValue(ariaLabel)}"]`;
|
|
283
|
+
if (isUnique(candidate))
|
|
284
|
+
return candidate;
|
|
285
|
+
}
|
|
286
|
+
return structuralPath(target);
|
|
287
|
+
}
|
|
288
|
+
return { role, name: name.slice(0, 200), selector: computeSelector(el) };
|
|
280
289
|
})
|
|
281
290
|
.catch(() => null);
|
|
282
291
|
if (described === null) {
|
|
@@ -288,10 +297,7 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
288
297
|
ref,
|
|
289
298
|
role: described.role,
|
|
290
299
|
name: described.name,
|
|
291
|
-
|
|
292
|
-
// selector string. Reporting a fabricated CSS path here would be a
|
|
293
|
-
// selector nothing ever uses and that might not even match.
|
|
294
|
-
selector: `(held handle ${ref})`,
|
|
300
|
+
selector: described.selector,
|
|
295
301
|
};
|
|
296
302
|
refs.set(ref, { element, handle });
|
|
297
303
|
elements.push(element);
|
|
@@ -302,9 +308,7 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
302
308
|
assertUsable();
|
|
303
309
|
await resolve(ref).handle.click();
|
|
304
310
|
recordAction("click", ref, null);
|
|
305
|
-
//
|
|
306
|
-
// drain immediately after a click would miss the request the click
|
|
307
|
-
// caused — which is the request this whole feature exists to witness.
|
|
311
|
+
// requestfinished fires after the page's handler resolves; draining immediately would miss the very request being watched for.
|
|
308
312
|
await settleAfterAction("click", ref);
|
|
309
313
|
},
|
|
310
314
|
async type(ref, text) {
|
|
@@ -336,9 +340,8 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
336
340
|
if (finalObservation !== null)
|
|
337
341
|
return finalObservation;
|
|
338
342
|
closed = true;
|
|
339
|
-
//
|
|
340
|
-
//
|
|
341
|
-
// observation first would drop exactly that.
|
|
343
|
+
// Stopped before observing: a stop flushes what each collector was
|
|
344
|
+
// still holding, which observing first would drop.
|
|
342
345
|
await actionCollector.stop().catch(() => { });
|
|
343
346
|
await consoleCollector.stop().catch(() => { });
|
|
344
347
|
await networkCollector.stop().catch(() => { });
|
|
@@ -353,37 +356,45 @@ async function openSession(runtime, session, launchOptions, options) {
|
|
|
353
356
|
},
|
|
354
357
|
};
|
|
355
358
|
}
|
|
356
|
-
/**
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
* `NETWORK_RESPONSE` knows the status. A request with no response is kept with
|
|
362
|
-
* `status: null` — "never answered" is a different fact from a 500, and the
|
|
363
|
-
* port says so.
|
|
364
|
-
*/
|
|
365
|
-
function collect(emitted, actions, unsettled) {
|
|
366
|
-
// Two joins, in priority order, because `requestId` is a *correlation
|
|
367
|
-
// header* and not a transport id: it exists only when the application
|
|
368
|
-
// itself propagates one. The fixture's own delete sets `x-request-id`, so
|
|
369
|
-
// an id-only join looked correct while silently reporting `status: null`
|
|
370
|
-
// for every request the page issued without one — which is most of them.
|
|
359
|
+
/** Turns collector evidence into the port's vocabulary. Joins request/response on `requestId`, keeping `status: null` (not guessed) when unanswered. Exported for `browser-request-outcome-mapping.test.ts`. */
|
|
360
|
+
export function collect(emitted, actions, unsettled) {
|
|
361
|
+
// Two joins, by priority: `requestId` is a correlation header the app must
|
|
362
|
+
// itself propagate, not a transport id — an id-only join silently reported
|
|
363
|
+
// `status: null` for every request without one, i.e. most of them.
|
|
371
364
|
const statusByRequestId = new Map();
|
|
372
365
|
const statusByUrl = new Map();
|
|
366
|
+
// B3: same two joins, for `outcome`. `descry-runtime` stamps "answered" or
|
|
367
|
+
// "unanswered", never "pending" itself — a still-open request at drain time
|
|
368
|
+
// has no terminal event, which pairedRequestIds/pairedUrls track separately.
|
|
369
|
+
const outcomeByRequestId = new Map();
|
|
370
|
+
const outcomeByUrl = new Map();
|
|
371
|
+
const pairedRequestIds = new Set();
|
|
372
|
+
const pairedUrls = new Set();
|
|
373
373
|
for (const evidence of emitted) {
|
|
374
|
-
if (evidence.eventType !== "NETWORK_RESPONSE")
|
|
375
|
-
continue;
|
|
376
|
-
const status = evidence.payload["status"];
|
|
377
|
-
if (typeof status !== "number")
|
|
374
|
+
if (evidence.eventType !== "NETWORK_RESPONSE" && evidence.eventType !== "HTTP_ERROR")
|
|
378
375
|
continue;
|
|
379
|
-
if (evidence.requestId !== null)
|
|
380
|
-
statusByRequestId.set(evidence.requestId, status);
|
|
381
376
|
const url = evidence.payload["url"];
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
// asking about.
|
|
377
|
+
if (evidence.requestId !== null)
|
|
378
|
+
pairedRequestIds.add(evidence.requestId);
|
|
385
379
|
if (typeof url === "string")
|
|
386
|
-
|
|
380
|
+
pairedUrls.add(url);
|
|
381
|
+
if (evidence.eventType === "NETWORK_RESPONSE") {
|
|
382
|
+
const status = evidence.payload["status"];
|
|
383
|
+
if (typeof status === "number") {
|
|
384
|
+
if (evidence.requestId !== null)
|
|
385
|
+
statusByRequestId.set(evidence.requestId, status);
|
|
386
|
+
// Last response wins: repeat requests report the most recent outcome.
|
|
387
|
+
if (typeof url === "string")
|
|
388
|
+
statusByUrl.set(url, status);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
const outcome = requestOutcomeOf(evidence.payload);
|
|
392
|
+
if (outcome !== undefined) {
|
|
393
|
+
if (evidence.requestId !== null)
|
|
394
|
+
outcomeByRequestId.set(evidence.requestId, outcome);
|
|
395
|
+
if (typeof url === "string")
|
|
396
|
+
outcomeByUrl.set(url, outcome);
|
|
397
|
+
}
|
|
387
398
|
}
|
|
388
399
|
const requests = [];
|
|
389
400
|
const consoleErrors = [];
|
|
@@ -393,12 +404,18 @@ function collect(emitted, actions, unsettled) {
|
|
|
393
404
|
const url = evidence.payload["url"];
|
|
394
405
|
if (typeof method !== "string" || typeof url !== "string")
|
|
395
406
|
continue;
|
|
407
|
+
const requestId = evidence.requestId;
|
|
408
|
+
const pairedOutcome = (requestId === null ? undefined : outcomeByRequestId.get(requestId)) ?? outcomeByUrl.get(url);
|
|
409
|
+
const wasPaired = (requestId !== null && pairedRequestIds.has(requestId)) || pairedUrls.has(url);
|
|
410
|
+
// Paired outcome wins; no terminal event means still in-flight
|
|
411
|
+
// ("pending"); an unrecognised outcome (older runtime build) leaves the
|
|
412
|
+
// field undefined — `isFailedRequest`'s fallback handles that, not this.
|
|
413
|
+
const outcome = pairedOutcome ?? (wasPaired ? undefined : "pending");
|
|
396
414
|
requests.push({
|
|
397
415
|
method,
|
|
398
416
|
url,
|
|
399
|
-
status: (
|
|
400
|
-
|
|
401
|
-
null,
|
|
417
|
+
status: (requestId === null ? undefined : statusByRequestId.get(requestId)) ?? statusByUrl.get(url) ?? null,
|
|
418
|
+
...(outcome === undefined ? {} : { outcome }),
|
|
402
419
|
stackText: renderStack(evidence.stackTrace),
|
|
403
420
|
stackTrace: evidence.stackTrace,
|
|
404
421
|
scriptUrlMapping: scriptUrlOutcomesOf(evidence.payload),
|
|
@@ -406,9 +423,7 @@ function collect(emitted, actions, unsettled) {
|
|
|
406
423
|
});
|
|
407
424
|
continue;
|
|
408
425
|
}
|
|
409
|
-
//
|
|
410
|
-
// something went wrong"; a caller triaging them does not need to know
|
|
411
|
-
// which listener fired.
|
|
426
|
+
// Uncaught page error and console error both mean "something went wrong"; callers don't need to know which listener fired.
|
|
412
427
|
if (evidence.eventType === "EXCEPTION" || evidence.eventType === "CONSOLE_MESSAGE") {
|
|
413
428
|
const level = evidence.payload["level"] ?? evidence.payload["type"];
|
|
414
429
|
if (evidence.eventType === "CONSOLE_MESSAGE" && level !== "error")
|
|
@@ -424,14 +439,14 @@ function collect(emitted, actions, unsettled) {
|
|
|
424
439
|
}
|
|
425
440
|
return { actions: [...actions], consoleErrors, requests, unsettled: [...unsettled] };
|
|
426
441
|
}
|
|
427
|
-
/**
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
*/
|
|
442
|
+
/** Reads `outcome` off an untyped cross-package payload; validated not cast, since this build doesn't depend on `@descryy/runtime-browser`'s types — unrecognised values degrade to undefined, never a guessed literal. */
|
|
443
|
+
function requestOutcomeOf(payload) {
|
|
444
|
+
const raw = payload["outcome"];
|
|
445
|
+
if (raw === "answered" || raw === "unanswered" || raw === "pending")
|
|
446
|
+
return raw;
|
|
447
|
+
return undefined;
|
|
448
|
+
}
|
|
449
|
+
/** Reads `scriptUrlMapping` off an untyped cross-package payload; validated not cast, so a malformed/absent field degrades to "no mapping reported" rather than a half-populated result. */
|
|
435
450
|
function scriptUrlOutcomesOf(payload) {
|
|
436
451
|
const raw = payload["scriptUrlMapping"];
|
|
437
452
|
if (!Array.isArray(raw))
|
|
@@ -454,19 +469,7 @@ function scriptUrlOutcomesOf(payload) {
|
|
|
454
469
|
}
|
|
455
470
|
return outcomes;
|
|
456
471
|
}
|
|
457
|
-
/**
|
|
458
|
-
* A short, readable rendering of a parsed stack.
|
|
459
|
-
*
|
|
460
|
-
* `StackTrace` carries frames, not the original text — the raw string is
|
|
461
|
-
* consumed by the parser and deliberately not kept, since a parsed frame with
|
|
462
|
-
* a resolved on-disk path is strictly more useful than the `http://` line it
|
|
463
|
-
* came from. So the port's `stackText` is rendered from the frames rather
|
|
464
|
-
* than passed through, and it is for a human reading the reply: the R4 write
|
|
465
|
-
* uses `stackTrace`, never this.
|
|
466
|
-
*
|
|
467
|
-
* The primary frame is marked, because it is the one a developer should be
|
|
468
|
-
* sent to and it is not always the innermost.
|
|
469
|
-
*/
|
|
472
|
+
/** Human-readable rendering of parsed stack frames, for the reply; the R4 write uses `stackTrace` itself, never this. Primary frame marked since it isn't always the innermost. */
|
|
470
473
|
function renderStack(stack) {
|
|
471
474
|
if (stack === null || stack.frames.length === 0)
|
|
472
475
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-driver.js","sourceRoot":"","sources":["../../src/browser/playwright-driver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"playwright-driver.js","sourceRoot":"","sources":["../../src/browser/playwright-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Where a tool gets a browser.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* package, so a complete install has a real driver in it. It is still imported by
|
|
6
|
-
* specifier at call time rather than statically — that indirection is the
|
|
7
|
-
* injection seam the tests drive the settle logic through, against a fake module
|
|
8
|
-
* with no real browser involved (see `playwright-driver.ts`) — and an import can
|
|
9
|
-
* still fail for reasons an install does not rule out: a pruned dependency tree,
|
|
10
|
-
* or a Chromium binary that was never downloaded. That absence is handled the way
|
|
11
|
-
* this codebase handles every expected inability: as a **named refusal with a
|
|
12
|
-
* remedy**, returned rather than thrown, and never as a tool that quietly does
|
|
13
|
-
* nothing.
|
|
14
|
-
*
|
|
15
|
-
* Rule 7 is the whole point of this file. A browser tool in a build with no
|
|
16
|
-
* browser backend must say *"this build cannot do that, and here is why"* —
|
|
17
|
-
* not fail obscurely inside a missing import, and certainly not return an
|
|
18
|
-
* empty snapshot that reads like a page with no elements on it.
|
|
2
|
+
* Where a tool gets a browser. Imported by specifier at call time (test
|
|
3
|
+
* injection seam, see `playwright-driver.ts`) even though the package is a
|
|
4
|
+
* declared dependency. Rule 7: absence is a named refusal with a remedy, never a silent no-op or an empty snapshot pretending to be a real page.
|
|
19
5
|
*/
|
|
20
6
|
import type { StackTraceParser } from "@descryy/runtime-backend-observation";
|
|
21
7
|
import type { ServiceRootLookup } from "@descryy/runtime-contracts";
|
|
22
8
|
import type { BrowserDriver } from "./driver.ts";
|
|
23
|
-
/**
|
|
24
|
-
* Builds the driver one session will use.
|
|
25
|
-
*
|
|
26
|
-
* Takes the per-session facts a driver cannot know for itself: which parser
|
|
27
|
-
* can read this application's stack traces, and which on-disk root serves the
|
|
28
|
-
* origin being driven. Both are the caller's to state — see
|
|
29
|
-
* `stack-parser.ts` for why the parser cannot be chosen here, and
|
|
30
|
-
* `browser_start_session`'s `documentRoot` for why the root cannot be
|
|
31
|
-
* guessed.
|
|
32
|
-
*/
|
|
9
|
+
/** Builds the driver for one session: the per-session facts a driver can't know itself — which parser reads this app's stack traces, which on-disk root serves the origin. Caller-supplied; see `stack-parser.ts` and `documentRoot`. */
|
|
33
10
|
export type BrowserDriverFactory = (options: {
|
|
34
11
|
readonly stackParser?: StackTraceParser;
|
|
35
12
|
readonly resolveSourceRoot?: (origin: string) => ServiceRootLookup;
|
|
@@ -44,12 +21,6 @@ export type BrowserBackend = {
|
|
|
44
21
|
readonly available: true;
|
|
45
22
|
readonly createDriver: BrowserDriverFactory;
|
|
46
23
|
} | BrowserBackendUnavailable;
|
|
47
|
-
/**
|
|
48
|
-
* The stand-in used until the real driver is wired at the final swap.
|
|
49
|
-
*
|
|
50
|
-
* Deliberately not a driver that launches nothing successfully — that would
|
|
51
|
-
* make every browser tool return a plausible, empty, wrong answer. It is an
|
|
52
|
-
* explicit unavailability instead.
|
|
53
|
-
*/
|
|
24
|
+
/** Stand-in until the real driver is wired at the final swap — deliberately not a driver that launches nothing successfully (would look like an empty, wrong answer); an explicit unavailability instead. */
|
|
54
25
|
export declare const BROWSER_BACKEND_NOT_INSTALLED: BrowserBackendUnavailable;
|
|
55
26
|
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/browser/provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/browser/provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,yOAAyO;AACzO,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,iBAAiB,CAAC;IACnE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAE7B,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAA;CAAE,GAAG,yBAAyB,CAAC;AAEnI,6MAA6M;AAC7M,eAAO,MAAM,6BAA6B,EAAE,yBAO3C,CAAC"}
|
package/dist/browser/provider.js
CHANGED
|
@@ -1,29 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Where a tool gets a browser.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* package, so a complete install has a real driver in it. It is still imported by
|
|
6
|
-
* specifier at call time rather than statically — that indirection is the
|
|
7
|
-
* injection seam the tests drive the settle logic through, against a fake module
|
|
8
|
-
* with no real browser involved (see `playwright-driver.ts`) — and an import can
|
|
9
|
-
* still fail for reasons an install does not rule out: a pruned dependency tree,
|
|
10
|
-
* or a Chromium binary that was never downloaded. That absence is handled the way
|
|
11
|
-
* this codebase handles every expected inability: as a **named refusal with a
|
|
12
|
-
* remedy**, returned rather than thrown, and never as a tool that quietly does
|
|
13
|
-
* nothing.
|
|
14
|
-
*
|
|
15
|
-
* Rule 7 is the whole point of this file. A browser tool in a build with no
|
|
16
|
-
* browser backend must say *"this build cannot do that, and here is why"* —
|
|
17
|
-
* not fail obscurely inside a missing import, and certainly not return an
|
|
18
|
-
* empty snapshot that reads like a page with no elements on it.
|
|
19
|
-
*/
|
|
20
|
-
/**
|
|
21
|
-
* The stand-in used until the real driver is wired at the final swap.
|
|
22
|
-
*
|
|
23
|
-
* Deliberately not a driver that launches nothing successfully — that would
|
|
24
|
-
* make every browser tool return a plausible, empty, wrong answer. It is an
|
|
25
|
-
* explicit unavailability instead.
|
|
2
|
+
* Where a tool gets a browser. Imported by specifier at call time (test
|
|
3
|
+
* injection seam, see `playwright-driver.ts`) even though the package is a
|
|
4
|
+
* declared dependency. Rule 7: absence is a named refusal with a remedy, never a silent no-op or an empty snapshot pretending to be a real page.
|
|
26
5
|
*/
|
|
6
|
+
/** Stand-in until the real driver is wired at the final swap — deliberately not a driver that launches nothing successfully (would look like an empty, wrong answer); an explicit unavailability instead. */
|
|
27
7
|
export const BROWSER_BACKEND_NOT_INSTALLED = {
|
|
28
8
|
available: false,
|
|
29
9
|
reason: "This build of @descryy/mcp has no browser backend. The browser tools are declared so a caller can see " +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/browser/provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/browser/provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAsBH,6MAA6M;AAC7M,MAAM,CAAC,MAAM,6BAA6B,GAA8B;IACtE,SAAS,EAAE,KAAK;IAChB,MAAM,EACJ,wGAAwG;QACxG,6GAA6G;QAC7G,2CAA2C;IAC7C,MAAM,EAAE,2EAA2E;CACpF,CAAC"}
|