@descryy/mcp 0.11.5 → 0.11.6
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 +38 -0
- package/dist/action-handshake.d.ts.map +1 -0
- package/dist/action-handshake.js +127 -0
- package/dist/action-handshake.js.map +1 -0
- package/dist/bin/descry-mcp.d.ts +7 -0
- package/dist/bin/descry-mcp.d.ts.map +1 -0
- package/dist/bin/descry-mcp.js +73 -0
- package/dist/bin/descry-mcp.js.map +1 -0
- package/dist/browser/auth.d.ts +84 -0
- package/dist/browser/auth.d.ts.map +1 -0
- package/dist/browser/auth.js +233 -0
- package/dist/browser/auth.js.map +1 -0
- package/dist/browser/capability-probe.d.ts +109 -0
- package/dist/browser/capability-probe.d.ts.map +1 -0
- package/dist/browser/capability-probe.js +201 -0
- package/dist/browser/capability-probe.js.map +1 -0
- package/dist/browser/driver.d.ts +591 -0
- package/dist/browser/driver.d.ts.map +1 -0
- package/dist/browser/driver.js +116 -0
- package/dist/browser/driver.js.map +1 -0
- package/dist/browser/evidence.d.ts +28 -0
- package/dist/browser/evidence.d.ts.map +1 -0
- package/dist/browser/evidence.js +82 -0
- package/dist/browser/evidence.js.map +1 -0
- package/dist/browser/fake-driver.d.ts +116 -0
- package/dist/browser/fake-driver.d.ts.map +1 -0
- package/dist/browser/fake-driver.js +416 -0
- package/dist/browser/fake-driver.js.map +1 -0
- package/dist/browser/fault-attribution.d.ts +178 -0
- package/dist/browser/fault-attribution.d.ts.map +1 -0
- package/dist/browser/fault-attribution.js +266 -0
- package/dist/browser/fault-attribution.js.map +1 -0
- package/dist/browser/graph-write.d.ts +45 -0
- package/dist/browser/graph-write.d.ts.map +1 -0
- package/dist/browser/graph-write.js +103 -0
- package/dist/browser/graph-write.js.map +1 -0
- package/dist/browser/identity-graph-write.d.ts +55 -0
- package/dist/browser/identity-graph-write.d.ts.map +1 -0
- package/dist/browser/identity-graph-write.js +45 -0
- package/dist/browser/identity-graph-write.js.map +1 -0
- package/dist/browser/page-probe.d.ts +81 -0
- package/dist/browser/page-probe.d.ts.map +1 -0
- package/dist/browser/page-probe.js +202 -0
- package/dist/browser/page-probe.js.map +1 -0
- package/dist/browser/playwright-driver.d.ts +115 -0
- package/dist/browser/playwright-driver.d.ts.map +1 -0
- package/dist/browser/playwright-driver.js +1545 -0
- package/dist/browser/playwright-driver.js.map +1 -0
- package/dist/browser/provider.d.ts +26 -0
- package/dist/browser/provider.d.ts.map +1 -0
- package/dist/browser/provider.js +14 -0
- package/dist/browser/provider.js.map +1 -0
- package/dist/browser/reach-recording-session.d.ts +44 -0
- package/dist/browser/reach-recording-session.d.ts.map +1 -0
- package/dist/browser/reach-recording-session.js +151 -0
- package/dist/browser/reach-recording-session.js.map +1 -0
- package/dist/browser/reachability.d.ts +168 -0
- package/dist/browser/reachability.d.ts.map +1 -0
- package/dist/browser/reachability.js +294 -0
- package/dist/browser/reachability.js.map +1 -0
- package/dist/browser/registry.d.ts +126 -0
- package/dist/browser/registry.d.ts.map +1 -0
- package/dist/browser/registry.js +177 -0
- package/dist/browser/registry.js.map +1 -0
- package/dist/browser/scenario-provenance.d.ts +23 -0
- package/dist/browser/scenario-provenance.d.ts.map +1 -0
- package/dist/browser/scenario-provenance.js +73 -0
- package/dist/browser/scenario-provenance.js.map +1 -0
- package/dist/browser/scenario-resolve.d.ts +28 -0
- package/dist/browser/scenario-resolve.d.ts.map +1 -0
- package/dist/browser/scenario-resolve.js +96 -0
- package/dist/browser/scenario-resolve.js.map +1 -0
- package/dist/browser/scenario-runner.d.ts +72 -0
- package/dist/browser/scenario-runner.d.ts.map +1 -0
- package/dist/browser/scenario-runner.js +353 -0
- package/dist/browser/scenario-runner.js.map +1 -0
- package/dist/browser/stack-parser.d.ts +19 -0
- package/dist/browser/stack-parser.d.ts.map +1 -0
- package/dist/browser/stack-parser.js +85 -0
- package/dist/browser/stack-parser.js.map +1 -0
- package/dist/browser/tool-support.d.ts +71 -0
- package/dist/browser/tool-support.d.ts.map +1 -0
- package/dist/browser/tool-support.js +216 -0
- package/dist/browser/tool-support.js.map +1 -0
- 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/browser/wait-target.d.ts +37 -0
- package/dist/browser/wait-target.d.ts.map +1 -0
- package/dist/browser/wait-target.js +54 -0
- package/dist/browser/wait-target.js.map +1 -0
- package/dist/cancellation.d.ts +20 -0
- package/dist/cancellation.d.ts.map +1 -0
- package/dist/cancellation.js +41 -0
- package/dist/cancellation.js.map +1 -0
- package/dist/capped.d.ts +39 -0
- package/dist/capped.d.ts.map +1 -0
- package/dist/capped.js +43 -0
- package/dist/capped.js.map +1 -0
- package/dist/credential-store.d.ts +22 -0
- package/dist/credential-store.d.ts.map +1 -0
- package/dist/credential-store.js +33 -0
- package/dist/credential-store.js.map +1 -0
- package/dist/disclosure-ledger.d.ts +14 -0
- package/dist/disclosure-ledger.d.ts.map +1 -0
- package/dist/disclosure-ledger.js +18 -0
- package/dist/disclosure-ledger.js.map +1 -0
- package/dist/evidence/observed-route-evidence.d.ts +25 -0
- package/dist/evidence/observed-route-evidence.d.ts.map +1 -0
- package/dist/evidence/observed-route-evidence.js +76 -0
- package/dist/evidence/observed-route-evidence.js.map +1 -0
- package/dist/heap.d.ts +61 -0
- package/dist/heap.d.ts.map +1 -0
- package/dist/heap.js +82 -0
- package/dist/heap.js.map +1 -0
- package/dist/heartbeat.d.ts +46 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +66 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/module-trust.d.ts +37 -0
- package/dist/module-trust.d.ts.map +1 -0
- package/dist/module-trust.js +77 -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/planner/predict-then-propose.d.ts +134 -0
- package/dist/planner/predict-then-propose.d.ts.map +1 -0
- package/dist/planner/predict-then-propose.js +138 -0
- package/dist/planner/predict-then-propose.js.map +1 -0
- package/dist/planner/propose-journey.d.ts +75 -0
- package/dist/planner/propose-journey.d.ts.map +1 -0
- package/dist/planner/propose-journey.js +96 -0
- package/dist/planner/propose-journey.js.map +1 -0
- package/dist/protocol.d.ts +57 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +90 -0
- package/dist/protocol.js.map +1 -0
- package/dist/ready-checks.d.ts +12 -0
- package/dist/ready-checks.d.ts.map +1 -0
- package/dist/ready-checks.js +43 -0
- package/dist/ready-checks.js.map +1 -0
- package/dist/registry.d.ts +103 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +327 -0
- package/dist/registry.js.map +1 -0
- package/dist/render.d.ts +623 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +968 -0
- package/dist/render.js.map +1 -0
- package/dist/runtime-registry.d.ts +22 -0
- package/dist/runtime-registry.d.ts.map +1 -0
- package/dist/runtime-registry.js +142 -0
- package/dist/runtime-registry.js.map +1 -0
- package/dist/sandbox-defaults.d.ts +41 -0
- package/dist/sandbox-defaults.d.ts.map +1 -0
- package/dist/sandbox-defaults.js +14 -0
- package/dist/sandbox-defaults.js.map +1 -0
- package/dist/scenarios/browser-run-plan-projection.d.ts +161 -0
- package/dist/scenarios/browser-run-plan-projection.d.ts.map +1 -0
- package/dist/scenarios/browser-run-plan-projection.js +264 -0
- package/dist/scenarios/browser-run-plan-projection.js.map +1 -0
- package/dist/scenarios/credential-ref.d.ts +102 -0
- package/dist/scenarios/credential-ref.d.ts.map +1 -0
- package/dist/scenarios/credential-ref.js +148 -0
- package/dist/scenarios/credential-ref.js.map +1 -0
- package/dist/scenarios/index.d.ts +7 -0
- package/dist/scenarios/index.d.ts.map +1 -0
- package/dist/scenarios/index.js +7 -0
- package/dist/scenarios/index.js.map +1 -0
- package/dist/scenarios/parse.d.ts +18 -0
- package/dist/scenarios/parse.d.ts.map +1 -0
- package/dist/scenarios/parse.js +212 -0
- package/dist/scenarios/parse.js.map +1 -0
- package/dist/scenarios/scenario.d.ts +93 -0
- package/dist/scenarios/scenario.d.ts.map +1 -0
- package/dist/scenarios/scenario.js +27 -0
- package/dist/scenarios/scenario.js.map +1 -0
- package/dist/scenarios/secret-ref.d.ts +86 -0
- package/dist/scenarios/secret-ref.d.ts.map +1 -0
- package/dist/scenarios/secret-ref.js +125 -0
- package/dist/scenarios/secret-ref.js.map +1 -0
- package/dist/scenarios/storage.d.ts +21 -0
- package/dist/scenarios/storage.d.ts.map +1 -0
- package/dist/scenarios/storage.js +103 -0
- package/dist/scenarios/storage.js.map +1 -0
- package/dist/server.d.ts +61 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +642 -0
- package/dist/server.js.map +1 -0
- package/dist/session.d.ts +356 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +779 -0
- package/dist/session.js.map +1 -0
- package/dist/tools/alias-kit.d.ts +29 -0
- package/dist/tools/alias-kit.d.ts.map +1 -0
- package/dist/tools/alias-kit.js +21 -0
- package/dist/tools/alias-kit.js.map +1 -0
- package/dist/tools/aliases.d.ts +42 -0
- package/dist/tools/aliases.d.ts.map +1 -0
- package/dist/tools/aliases.js +52 -0
- package/dist/tools/aliases.js.map +1 -0
- package/dist/tools/analyze-workspace.d.ts +52 -0
- package/dist/tools/analyze-workspace.d.ts.map +1 -0
- package/dist/tools/analyze-workspace.js +207 -0
- package/dist/tools/analyze-workspace.js.map +1 -0
- package/dist/tools/analyze.d.ts +163 -0
- package/dist/tools/analyze.d.ts.map +1 -0
- package/dist/tools/analyze.js +724 -0
- package/dist/tools/analyze.js.map +1 -0
- package/dist/tools/browser-click.d.ts +18 -0
- package/dist/tools/browser-click.d.ts.map +1 -0
- package/dist/tools/browser-click.js +110 -0
- package/dist/tools/browser-click.js.map +1 -0
- package/dist/tools/browser-close-session.d.ts +39 -0
- package/dist/tools/browser-close-session.d.ts.map +1 -0
- package/dist/tools/browser-close-session.js +120 -0
- package/dist/tools/browser-close-session.js.map +1 -0
- package/dist/tools/browser-fill.d.ts +18 -0
- package/dist/tools/browser-fill.d.ts.map +1 -0
- package/dist/tools/browser-fill.js +117 -0
- package/dist/tools/browser-fill.js.map +1 -0
- package/dist/tools/browser-navigate.d.ts +15 -0
- package/dist/tools/browser-navigate.d.ts.map +1 -0
- package/dist/tools/browser-navigate.js +106 -0
- package/dist/tools/browser-navigate.js.map +1 -0
- package/dist/tools/browser-read.d.ts +33 -0
- package/dist/tools/browser-read.d.ts.map +1 -0
- package/dist/tools/browser-read.js +105 -0
- package/dist/tools/browser-read.js.map +1 -0
- package/dist/tools/browser-run-scenario.d.ts +28 -0
- package/dist/tools/browser-run-scenario.d.ts.map +1 -0
- package/dist/tools/browser-run-scenario.js +238 -0
- package/dist/tools/browser-run-scenario.js.map +1 -0
- package/dist/tools/browser-save-scenario.d.ts +19 -0
- package/dist/tools/browser-save-scenario.d.ts.map +1 -0
- package/dist/tools/browser-save-scenario.js +447 -0
- package/dist/tools/browser-save-scenario.js.map +1 -0
- package/dist/tools/browser-select.d.ts +20 -0
- package/dist/tools/browser-select.d.ts.map +1 -0
- package/dist/tools/browser-select.js +120 -0
- package/dist/tools/browser-select.js.map +1 -0
- package/dist/tools/browser-snapshot.d.ts +46 -0
- package/dist/tools/browser-snapshot.d.ts.map +1 -0
- package/dist/tools/browser-snapshot.js +127 -0
- package/dist/tools/browser-snapshot.js.map +1 -0
- package/dist/tools/browser-start-session.d.ts +24 -0
- package/dist/tools/browser-start-session.d.ts.map +1 -0
- package/dist/tools/browser-start-session.js +653 -0
- package/dist/tools/browser-start-session.js.map +1 -0
- package/dist/tools/browser-submit.d.ts +18 -0
- package/dist/tools/browser-submit.d.ts.map +1 -0
- package/dist/tools/browser-submit.js +106 -0
- package/dist/tools/browser-submit.js.map +1 -0
- package/dist/tools/browser-type.d.ts +18 -0
- package/dist/tools/browser-type.d.ts.map +1 -0
- package/dist/tools/browser-type.js +115 -0
- package/dist/tools/browser-type.js.map +1 -0
- package/dist/tools/browser-wait-for.d.ts +45 -0
- package/dist/tools/browser-wait-for.d.ts.map +1 -0
- package/dist/tools/browser-wait-for.js +164 -0
- package/dist/tools/browser-wait-for.js.map +1 -0
- package/dist/tools/browser.d.ts +69 -0
- package/dist/tools/browser.d.ts.map +1 -0
- package/dist/tools/browser.js +326 -0
- package/dist/tools/browser.js.map +1 -0
- package/dist/tools/chain.d.ts +41 -0
- package/dist/tools/chain.d.ts.map +1 -0
- package/dist/tools/chain.js +101 -0
- package/dist/tools/chain.js.map +1 -0
- package/dist/tools/change-scope.d.ts +25 -0
- package/dist/tools/change-scope.d.ts.map +1 -0
- package/dist/tools/change-scope.js +103 -0
- package/dist/tools/change-scope.js.map +1 -0
- package/dist/tools/code-context.d.ts +83 -0
- package/dist/tools/code-context.d.ts.map +1 -0
- package/dist/tools/code-context.js +432 -0
- package/dist/tools/code-context.js.map +1 -0
- package/dist/tools/contracts.d.ts +74 -0
- package/dist/tools/contracts.d.ts.map +1 -0
- package/dist/tools/contracts.js +214 -0
- package/dist/tools/contracts.js.map +1 -0
- package/dist/tools/cross-pr.d.ts +178 -0
- package/dist/tools/cross-pr.d.ts.map +1 -0
- package/dist/tools/cross-pr.js +362 -0
- package/dist/tools/cross-pr.js.map +1 -0
- package/dist/tools/disclosure.d.ts +75 -0
- package/dist/tools/disclosure.d.ts.map +1 -0
- package/dist/tools/disclosure.js +325 -0
- package/dist/tools/disclosure.js.map +1 -0
- package/dist/tools/draw-conclusion.d.ts +55 -0
- package/dist/tools/draw-conclusion.d.ts.map +1 -0
- package/dist/tools/draw-conclusion.js +243 -0
- package/dist/tools/draw-conclusion.js.map +1 -0
- package/dist/tools/git-context.d.ts +39 -0
- package/dist/tools/git-context.d.ts.map +1 -0
- package/dist/tools/git-context.js +374 -0
- package/dist/tools/git-context.js.map +1 -0
- package/dist/tools/git-diff.d.ts +45 -0
- package/dist/tools/git-diff.d.ts.map +1 -0
- package/dist/tools/git-diff.js +338 -0
- package/dist/tools/git-diff.js.map +1 -0
- package/dist/tools/git-history.d.ts +16 -0
- package/dist/tools/git-history.d.ts.map +1 -0
- package/dist/tools/git-history.js +106 -0
- package/dist/tools/git-history.js.map +1 -0
- package/dist/tools/history.d.ts +34 -0
- package/dist/tools/history.d.ts.map +1 -0
- package/dist/tools/history.js +121 -0
- package/dist/tools/history.js.map +1 -0
- package/dist/tools/impact.d.ts +46 -0
- package/dist/tools/impact.d.ts.map +1 -0
- package/dist/tools/impact.js +225 -0
- package/dist/tools/impact.js.map +1 -0
- package/dist/tools/index.d.ts +59 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +70 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/kit.d.ts +165 -0
- package/dist/tools/kit.d.ts.map +1 -0
- package/dist/tools/kit.js +153 -0
- package/dist/tools/kit.js.map +1 -0
- package/dist/tools/link-workspace.d.ts +24 -0
- package/dist/tools/link-workspace.d.ts.map +1 -0
- package/dist/tools/link-workspace.js +131 -0
- package/dist/tools/link-workspace.js.map +1 -0
- package/dist/tools/lookup.d.ts +19 -0
- package/dist/tools/lookup.d.ts.map +1 -0
- package/dist/tools/lookup.js +63 -0
- package/dist/tools/lookup.js.map +1 -0
- package/dist/tools/mark-incident.d.ts +28 -0
- package/dist/tools/mark-incident.d.ts.map +1 -0
- package/dist/tools/mark-incident.js +171 -0
- package/dist/tools/mark-incident.js.map +1 -0
- package/dist/tools/merged-browser.d.ts +11 -0
- package/dist/tools/merged-browser.d.ts.map +1 -0
- package/dist/tools/merged-browser.js +20 -0
- package/dist/tools/merged-browser.js.map +1 -0
- package/dist/tools/merged-context.d.ts +11 -0
- package/dist/tools/merged-context.d.ts.map +1 -0
- package/dist/tools/merged-context.js +21 -0
- package/dist/tools/merged-context.js.map +1 -0
- package/dist/tools/merged-observe.d.ts +13 -0
- package/dist/tools/merged-observe.d.ts.map +1 -0
- package/dist/tools/merged-observe.js +21 -0
- package/dist/tools/merged-observe.js.map +1 -0
- package/dist/tools/merged-workspace.d.ts +14 -0
- package/dist/tools/merged-workspace.d.ts.map +1 -0
- package/dist/tools/merged-workspace.js +21 -0
- package/dist/tools/merged-workspace.js.map +1 -0
- package/dist/tools/observe-runtime.d.ts +262 -0
- package/dist/tools/observe-runtime.d.ts.map +1 -0
- package/dist/tools/observe-runtime.js +1966 -0
- package/dist/tools/observe-runtime.js.map +1 -0
- package/dist/tools/observe-tests.d.ts +57 -0
- package/dist/tools/observe-tests.d.ts.map +1 -0
- package/dist/tools/observe-tests.js +391 -0
- package/dist/tools/observe-tests.js.map +1 -0
- package/dist/tools/observe.d.ts +28 -0
- package/dist/tools/observe.d.ts.map +1 -0
- package/dist/tools/observe.js +291 -0
- package/dist/tools/observe.js.map +1 -0
- package/dist/tools/pr-analysis.d.ts +189 -0
- package/dist/tools/pr-analysis.d.ts.map +1 -0
- package/dist/tools/pr-analysis.js +365 -0
- package/dist/tools/pr-analysis.js.map +1 -0
- package/dist/tools/pre-push.d.ts +168 -0
- package/dist/tools/pre-push.d.ts.map +1 -0
- package/dist/tools/pre-push.js +416 -0
- package/dist/tools/pre-push.js.map +1 -0
- package/dist/tools/predict-reach.d.ts +57 -0
- package/dist/tools/predict-reach.d.ts.map +1 -0
- package/dist/tools/predict-reach.js +183 -0
- package/dist/tools/predict-reach.js.map +1 -0
- package/dist/tools/propagation.d.ts +37 -0
- package/dist/tools/propagation.d.ts.map +1 -0
- package/dist/tools/propagation.js +162 -0
- package/dist/tools/propagation.js.map +1 -0
- package/dist/tools/propose-journey.d.ts +16 -0
- package/dist/tools/propose-journey.d.ts.map +1 -0
- package/dist/tools/propose-journey.js +132 -0
- package/dist/tools/propose-journey.js.map +1 -0
- package/dist/tools/prove-reach.d.ts +74 -0
- package/dist/tools/prove-reach.d.ts.map +1 -0
- package/dist/tools/prove-reach.js +274 -0
- package/dist/tools/prove-reach.js.map +1 -0
- package/dist/tools/questions.d.ts +30 -0
- package/dist/tools/questions.d.ts.map +1 -0
- package/dist/tools/questions.js +230 -0
- package/dist/tools/questions.js.map +1 -0
- package/dist/tools/refusal-fetch.d.ts +35 -0
- package/dist/tools/refusal-fetch.d.ts.map +1 -0
- package/dist/tools/refusal-fetch.js +123 -0
- package/dist/tools/refusal-fetch.js.map +1 -0
- package/dist/tools/runtime-incident.d.ts +33 -0
- package/dist/tools/runtime-incident.d.ts.map +1 -0
- package/dist/tools/runtime-incident.js +67 -0
- package/dist/tools/runtime-incident.js.map +1 -0
- package/dist/tools/runtime-journey-drive.d.ts +102 -0
- package/dist/tools/runtime-journey-drive.d.ts.map +1 -0
- package/dist/tools/runtime-journey-drive.js +247 -0
- package/dist/tools/runtime-journey-drive.js.map +1 -0
- package/dist/tools/scope.d.ts +45 -0
- package/dist/tools/scope.d.ts.map +1 -0
- package/dist/tools/scope.js +217 -0
- package/dist/tools/scope.js.map +1 -0
- package/dist/tools/similar-incidents.d.ts +43 -0
- package/dist/tools/similar-incidents.d.ts.map +1 -0
- package/dist/tools/similar-incidents.js +190 -0
- package/dist/tools/similar-incidents.js.map +1 -0
- package/dist/tools/validate.d.ts +133 -0
- package/dist/tools/validate.d.ts.map +1 -0
- package/dist/tools/validate.js +488 -0
- package/dist/tools/validate.js.map +1 -0
- package/dist/tools/verb.d.ts +46 -0
- package/dist/tools/verb.d.ts.map +1 -0
- package/dist/tools/verb.js +78 -0
- package/dist/tools/verb.js.map +1 -0
- package/dist/tools/verification-status.d.ts +38 -0
- package/dist/tools/verification-status.d.ts.map +1 -0
- package/dist/tools/verification-status.js +203 -0
- package/dist/tools/verification-status.js.map +1 -0
- package/dist/tools/verify-claim.d.ts +29 -0
- package/dist/tools/verify-claim.d.ts.map +1 -0
- package/dist/tools/verify-claim.js +218 -0
- package/dist/tools/verify-claim.js.map +1 -0
- package/dist/tools/workspace.d.ts +28 -0
- package/dist/tools/workspace.d.ts.map +1 -0
- package/dist/tools/workspace.js +94 -0
- package/dist/tools/workspace.js.map +1 -0
- package/dist/transport.d.ts +32 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +85 -0
- package/dist/transport.js.map +1 -0
- package/dist/workspace-index.d.ts +164 -0
- package/dist/workspace-index.d.ts.map +1 -0
- package/dist/workspace-index.js +381 -0
- package/dist/workspace-index.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The in-page half of the capability probe: one function, serialized into the
|
|
3
|
+
* page, that counts the shapes `capability-probe.ts` turns into a reach
|
|
4
|
+
* estimate.
|
|
5
|
+
*
|
|
6
|
+
* ## Why it lives here and not in the driver
|
|
7
|
+
*
|
|
8
|
+
* `playwright-driver.ts` is one lane's file and this is another's. Keeping the
|
|
9
|
+
* probe body here means the driver gains a six-line delegating method rather
|
|
10
|
+
* than two hundred lines of DOM walking, which is the difference between a
|
|
11
|
+
* mergeable change and a rewritten file.
|
|
12
|
+
*
|
|
13
|
+
* ## Structural DOM types, again, and why
|
|
14
|
+
*
|
|
15
|
+
* `tsc` omits the DOM lib on purpose repo-wide — pulling it in would put
|
|
16
|
+
* `document` and `window` in scope in every engine file. The driver already
|
|
17
|
+
* declares the minimum it needs for `computeSelector`; this declares the
|
|
18
|
+
* minimum the probe needs. Both are structural, both are checked by the
|
|
19
|
+
* compiler, and neither leaks browser globals into modules that have no
|
|
20
|
+
* business with them.
|
|
21
|
+
*
|
|
22
|
+
* ## Every count is defensive, and an uncountable thing is null, never zero
|
|
23
|
+
*
|
|
24
|
+
* A probe that throws takes the session's opening disclosure with it, and a
|
|
25
|
+
* probe that reports `0` for something it could not look at teaches a false
|
|
26
|
+
* fact — which is the failure the five result states exist to prevent, applied
|
|
27
|
+
* one level down. So each group is wrapped, and `clientSideRouting` is
|
|
28
|
+
* `boolean | null` because a static probe genuinely cannot see it.
|
|
29
|
+
*/
|
|
30
|
+
/** Same list the snapshot enumerates. Duplicated deliberately rather than
|
|
31
|
+
* imported: the driver's constant is that lane's to change, and a probe that
|
|
32
|
+
* silently followed it would report a different page than the one that moved. */
|
|
33
|
+
const INTERACTIVE = "a, button, input, select, textarea, [role], [onclick], summary";
|
|
34
|
+
/**
|
|
35
|
+
* Selectors a human-verification challenge leaves behind. Detection only —
|
|
36
|
+
* §4's "out of scope, deliberately": these are things to disclose, never to
|
|
37
|
+
* defeat. Matching is on markup a widget publishes about itself, so a false
|
|
38
|
+
* positive costs one over-cautious disclosure and never a bypass attempt.
|
|
39
|
+
*/
|
|
40
|
+
const CHALLENGE_MARKERS = [
|
|
41
|
+
['[data-sitekey]', "a challenge widget declaring a site key"],
|
|
42
|
+
['iframe[title*="captcha" i]', "a challenge frame"],
|
|
43
|
+
['iframe[src*="captcha" i]', "a challenge frame"],
|
|
44
|
+
['iframe[title*="challenge" i]', "a challenge frame"],
|
|
45
|
+
['[class*="captcha" i]', "an element marked as a challenge"],
|
|
46
|
+
['[id*="captcha" i]', "an element marked as a challenge"],
|
|
47
|
+
['form[action*="challenge" i]', "a challenge form"],
|
|
48
|
+
];
|
|
49
|
+
/** Below this, a scrollable box is a scrollbar artefact rather than a windowed list. */
|
|
50
|
+
const SCROLL_OVERFLOW_RATIO = 1.5;
|
|
51
|
+
/** Share of the viewport a fixed element must cover to be an overlay rather than a header. */
|
|
52
|
+
const OVERLAY_COVERS = 0.4;
|
|
53
|
+
/**
|
|
54
|
+
* Runs inside the page. Must not close over anything in this module — it is
|
|
55
|
+
* serialized, so every constant it uses is passed in.
|
|
56
|
+
*/
|
|
57
|
+
export function probeInPage(root, constants) {
|
|
58
|
+
const doc = root.ownerDocument;
|
|
59
|
+
const count = (selector, scope) => {
|
|
60
|
+
try {
|
|
61
|
+
return scope.querySelectorAll(selector).length;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
let openShadowRoots = 0;
|
|
68
|
+
let shadowInteractive = 0;
|
|
69
|
+
try {
|
|
70
|
+
const all = doc.querySelectorAll("*");
|
|
71
|
+
for (let i = 0; i < all.length; i += 1) {
|
|
72
|
+
const shadow = all[i]?.shadowRoot ?? null;
|
|
73
|
+
if (shadow === null)
|
|
74
|
+
continue;
|
|
75
|
+
openShadowRoots += 1;
|
|
76
|
+
shadowInteractive += count(constants.interactive, shadow);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// A page that refuses a full-document walk keeps its other counts.
|
|
81
|
+
}
|
|
82
|
+
let childFrames = 0;
|
|
83
|
+
let crossOriginChildFrames = 0;
|
|
84
|
+
try {
|
|
85
|
+
const frames = doc.querySelectorAll("iframe, frame");
|
|
86
|
+
childFrames = frames.length;
|
|
87
|
+
for (let i = 0; i < frames.length; i += 1) {
|
|
88
|
+
const src = frames[i]?.getAttribute("src") ?? "";
|
|
89
|
+
if (src === "" || src.startsWith("about:"))
|
|
90
|
+
continue;
|
|
91
|
+
try {
|
|
92
|
+
if (new URL(src, doc.location.href).origin !== doc.location.origin)
|
|
93
|
+
crossOriginChildFrames += 1;
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// An unparseable src is not evidence of another origin; leave it uncounted.
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Leave both at 0 rather than guessing one from the other.
|
|
102
|
+
}
|
|
103
|
+
let scrollableRegions = 0;
|
|
104
|
+
try {
|
|
105
|
+
const all = doc.querySelectorAll("div, ul, ol, section, main, table, tbody");
|
|
106
|
+
for (let i = 0; i < all.length; i += 1) {
|
|
107
|
+
const el = all[i];
|
|
108
|
+
if (el === undefined)
|
|
109
|
+
continue;
|
|
110
|
+
if (el.clientHeight > 0 && el.scrollHeight > el.clientHeight * constants.scrollOverflowRatio)
|
|
111
|
+
scrollableRegions += 1;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// ditto
|
|
116
|
+
}
|
|
117
|
+
const view = doc.defaultView;
|
|
118
|
+
const viewport = view === null ? 0 : view.innerWidth * view.innerHeight;
|
|
119
|
+
let canvasViewportShare = 0;
|
|
120
|
+
let largestCanvasArea = 0;
|
|
121
|
+
try {
|
|
122
|
+
const canvases = doc.querySelectorAll("canvas");
|
|
123
|
+
for (let i = 0; i < canvases.length; i += 1) {
|
|
124
|
+
const box = canvases[i]?.getBoundingClientRect();
|
|
125
|
+
if (box === undefined)
|
|
126
|
+
continue;
|
|
127
|
+
const area = box.width * box.height;
|
|
128
|
+
largestCanvasArea = Math.max(largestCanvasArea, area);
|
|
129
|
+
if (viewport > 0)
|
|
130
|
+
canvasViewportShare = Math.max(canvasViewportShare, area / viewport);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// ditto
|
|
135
|
+
}
|
|
136
|
+
// An overlay is the state this probe is most dangerous in when it misses it:
|
|
137
|
+
// the app beneath a consent banner is fully enumerable and entirely
|
|
138
|
+
// unclickable, so a `full` estimate there is the most misleading answer
|
|
139
|
+
// available. Measured on the corpus, the share rule alone missed both.
|
|
140
|
+
let fixedOverlays = 0;
|
|
141
|
+
try {
|
|
142
|
+
if (view !== null && viewport > 0) {
|
|
143
|
+
const candidates = doc.querySelectorAll("div, section, aside, dialog, header, footer, nav");
|
|
144
|
+
for (let i = 0; i < candidates.length; i += 1) {
|
|
145
|
+
const el = candidates[i];
|
|
146
|
+
if (el === undefined)
|
|
147
|
+
continue;
|
|
148
|
+
const position = view.getComputedStyle(el).position;
|
|
149
|
+
if (position !== "fixed" && position !== "sticky")
|
|
150
|
+
continue;
|
|
151
|
+
const box = el.getBoundingClientRect();
|
|
152
|
+
if ((box.width * box.height) / viewport >= constants.overlayCovers)
|
|
153
|
+
fixedOverlays += 1;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// ditto
|
|
159
|
+
}
|
|
160
|
+
const markers = [];
|
|
161
|
+
for (const [selector, description] of constants.challengeMarkers) {
|
|
162
|
+
if (count(selector, doc) > 0 && !markers.includes(description))
|
|
163
|
+
markers.push(description);
|
|
164
|
+
}
|
|
165
|
+
const scrollHeight = doc.documentElement?.scrollHeight ?? 0;
|
|
166
|
+
const innerHeight = view?.innerHeight ?? 0;
|
|
167
|
+
return {
|
|
168
|
+
url: doc.location.href,
|
|
169
|
+
interactiveElements: count(constants.interactive, doc) + shadowInteractive,
|
|
170
|
+
openShadowRoots,
|
|
171
|
+
shadowInteractiveElements: shadowInteractive,
|
|
172
|
+
childFrames,
|
|
173
|
+
crossOriginChildFrames,
|
|
174
|
+
scrollableRegions,
|
|
175
|
+
canvasViewportShare,
|
|
176
|
+
largestCanvasArea,
|
|
177
|
+
fixedOverlays,
|
|
178
|
+
// `inert` is a reflected boolean attribute, so a subtree marked from script
|
|
179
|
+
// is visible here — which is why this is an attribute query and not a
|
|
180
|
+
// property walk.
|
|
181
|
+
inertSubtrees: count("[inert]", doc),
|
|
182
|
+
openModalDialogs: count("dialog[open]", doc),
|
|
183
|
+
passwordFields: count('input[type="password"]', doc),
|
|
184
|
+
// The standard attribute and nothing else. A name- or placeholder-based
|
|
185
|
+
// guess would put a wall in front of every page with a field called "code",
|
|
186
|
+
// and a wall is now a session-level claim rather than a hint.
|
|
187
|
+
oneTimeCodeFields: count('input[autocomplete="one-time-code"]', doc),
|
|
188
|
+
challengeMarkers: markers,
|
|
189
|
+
// A single static look cannot tell a routed application from a server-rendered
|
|
190
|
+
// one. Null is that fact; `false` would be a claim nothing supports.
|
|
191
|
+
clientSideRouting: null,
|
|
192
|
+
documentHeightRatio: innerHeight > 0 ? scrollHeight / innerHeight : 1,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/** The constants `probeInPage` must be handed, since it cannot close over them. */
|
|
196
|
+
export const PROBE_CONSTANTS = {
|
|
197
|
+
interactive: INTERACTIVE,
|
|
198
|
+
challengeMarkers: CHALLENGE_MARKERS,
|
|
199
|
+
scrollOverflowRatio: SCROLL_OVERFLOW_RATIO,
|
|
200
|
+
overlayCovers: OVERLAY_COVERS,
|
|
201
|
+
};
|
|
202
|
+
//# sourceMappingURL=page-probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-probe.js","sourceRoot":"","sources":["../../src/browser/page-probe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
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).
|
|
5
|
+
*/
|
|
6
|
+
import type { StackTrace, ServiceRootLookup } from "@descryy/runtime-contracts";
|
|
7
|
+
import type { StackTraceParser } from "@descryy/runtime-backend-observation";
|
|
8
|
+
/** DOM surface used by the in-page callback; `tsc` omits the DOM lib on purpose (would put `document`/`window` in scope repo-wide). `PageQueryable` is the shared shape `computeSelector` needs to verify a candidate is unique. */
|
|
9
|
+
interface PageQueryable {
|
|
10
|
+
querySelectorAll(selector: string): {
|
|
11
|
+
readonly length: number;
|
|
12
|
+
item(index: number): PageElement | null;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
interface PageElement extends PageQueryable {
|
|
16
|
+
readonly tagName: string;
|
|
17
|
+
readonly innerText?: string;
|
|
18
|
+
readonly textContent: string | null;
|
|
19
|
+
getAttribute(name: string): string | null;
|
|
20
|
+
readonly parentElement: PageElement | null;
|
|
21
|
+
readonly ownerDocument: PageQueryable;
|
|
22
|
+
/** The `Document` for a light-DOM element, the `ShadowRoot` for one inside an open shadow
|
|
23
|
+
* root — the only in-page way to tell the two apart, and the right scope for a uniqueness
|
|
24
|
+
* check (`ownerDocument` is the *document* even for a shadow child, where it matches nothing). */
|
|
25
|
+
getRootNode?(): PageRoot;
|
|
26
|
+
/** Present only on an open shadow host. Null for a closed root **and** for no root at all —
|
|
27
|
+
* the ambiguity that makes a closed root undetectable rather than merely unread. */
|
|
28
|
+
readonly shadowRoot?: PageQueryable | null;
|
|
29
|
+
readonly childElementCount?: number;
|
|
30
|
+
/** Present on a chooser, absent everywhere else — which is exactly the test `select` needs. */
|
|
31
|
+
readonly options?: ArrayLike<{
|
|
32
|
+
readonly value: string;
|
|
33
|
+
readonly label: string;
|
|
34
|
+
readonly text: string;
|
|
35
|
+
}>;
|
|
36
|
+
/** The owning form, for `submit`. Null when the element is in none, a real and common shape. */
|
|
37
|
+
closest?(selector: string): PageFormElement | null;
|
|
38
|
+
readonly disabled?: boolean;
|
|
39
|
+
/** The browser's own answer to "are you rendering this". It is **not** a viewport test: an
|
|
40
|
+
* element below the fold answers true, which is what the reveal pass depends on. Optional
|
|
41
|
+
* because an older backend may not have it; `renderedState` falls back rather than guessing.
|
|
42
|
+
* An option the browser does not know is ignored, so this degrades to the display-only
|
|
43
|
+
* answer instead of throwing — less filtering, never more. */
|
|
44
|
+
checkVisibility?(options?: {
|
|
45
|
+
visibilityProperty?: boolean;
|
|
46
|
+
}): boolean;
|
|
47
|
+
/** Every box the page lays out for this element. Zero of them means it lays out none. */
|
|
48
|
+
getClientRects?(): {
|
|
49
|
+
readonly length: number;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/** A `Document` or a `ShadowRoot`. `host` is what distinguishes them: only a shadow root has one. */
|
|
53
|
+
interface PageRoot extends PageQueryable {
|
|
54
|
+
readonly host?: PageElement | null;
|
|
55
|
+
}
|
|
56
|
+
/** The form members `submit` uses. `requestSubmit` rather than `submit()`: it fires the page's
|
|
57
|
+
* own submit handler and runs the form's validation, which `submit()` skips — so a page that
|
|
58
|
+
* refuses an invalid form refuses here too, instead of being driven past its own guard. */
|
|
59
|
+
interface PageFormElement {
|
|
60
|
+
querySelector(selector: string): unknown;
|
|
61
|
+
requestSubmit(submitter?: unknown): void;
|
|
62
|
+
}
|
|
63
|
+
import type { BrowserDriver, BrowserObservation, ObservedAction, UnsettledAction } from "./driver.ts";
|
|
64
|
+
export interface PlaywrightDriverOptions {
|
|
65
|
+
/** Turns a raw stack into resolved frames; caller-supplied (rule 1: no language named here). Absent, initiator capture isn't installed and no R4 caller edge is written. */
|
|
66
|
+
readonly stackParser?: StackTraceParser;
|
|
67
|
+
/** Maps a page origin to the on-disk root that served it. Absent means script URLs stay unresolved. */
|
|
68
|
+
readonly resolveSourceRoot?: SourceRootResolver;
|
|
69
|
+
/** Which service the evidence is attributed to. */
|
|
70
|
+
readonly service?: string;
|
|
71
|
+
/** Loads the runtime browser module; overridable because the settle logic below is timing-dependent and this build has no browser backend to test it against otherwise. Keep narrow — do not export `openSession` instead. */
|
|
72
|
+
readonly loadRuntimeModule?: () => Promise<unknown>;
|
|
73
|
+
/**
|
|
74
|
+
* Ground each snapshot element's producing component, additive to role+name (B1). Off by
|
|
75
|
+
* default: it installs a page-side probe before first navigation and costs one
|
|
76
|
+
* `page.evaluate` per element with a selector, on every snapshot.
|
|
77
|
+
*/
|
|
78
|
+
readonly groundIdentity?: boolean;
|
|
79
|
+
/** Loads the identity-grounding module; overridable for the same reason `loadRuntimeModule` is. */
|
|
80
|
+
readonly loadIdentityGroundingModule?: () => Promise<unknown>;
|
|
81
|
+
}
|
|
82
|
+
type SourceRootResolver = (origin: string) => ServiceRootLookup;
|
|
83
|
+
/** What `describeElement` decides about one element. `rendered` is three-valued on purpose:
|
|
84
|
+
* `null` is "nothing here could answer", which is a different fact from "answered no" and
|
|
85
|
+
* must not be read as either (rule 7). */
|
|
86
|
+
export interface DescribedElement {
|
|
87
|
+
readonly role: string;
|
|
88
|
+
readonly name: string;
|
|
89
|
+
readonly selector: string | null;
|
|
90
|
+
readonly inShadowRoot: boolean;
|
|
91
|
+
readonly rendered: boolean | null;
|
|
92
|
+
}
|
|
93
|
+
/** What one element looks like from inside the page. Serialized and run there, so it closes over
|
|
94
|
+
* nothing in this module — every helper it needs is declared inside it.
|
|
95
|
+
*
|
|
96
|
+
* Exported for `browser-element-describe.test.ts`: role, name and renderedness are pure
|
|
97
|
+
* functions of one element, and pinning their decision table should not need a browser. */
|
|
98
|
+
export declare function describeElement(el: PageElement): DescribedElement;
|
|
99
|
+
export declare class BrowserBackendMissingError extends Error {
|
|
100
|
+
constructor(cause: unknown);
|
|
101
|
+
}
|
|
102
|
+
/** `Evidence`-shaped record (typed structurally; only 4 fields are read). Exported for `browser-request-outcome-mapping.test.ts` — regression test for B3, where `outcome` shipped never populated despite passing tests. */
|
|
103
|
+
export interface EmittedEvidence {
|
|
104
|
+
readonly eventType: string;
|
|
105
|
+
readonly payload: Record<string, unknown>;
|
|
106
|
+
readonly stackTrace: StackTrace | null;
|
|
107
|
+
readonly requestId: string | null;
|
|
108
|
+
readonly timestamp: string;
|
|
109
|
+
}
|
|
110
|
+
export declare function disposeSharedPlaywrightBrowsers(): Promise<void>;
|
|
111
|
+
export declare function createPlaywrightBrowserDriver(options?: PlaywrightDriverOptions): Promise<BrowserDriver>;
|
|
112
|
+
/** 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`. */
|
|
113
|
+
export declare function collect(emitted: readonly EmittedEvidence[], actions: readonly ObservedAction[], unsettled: readonly UnsettledAction[]): BrowserObservation;
|
|
114
|
+
export {};
|
|
115
|
+
//# sourceMappingURL=playwright-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright-driver.d.ts","sourceRoot":"","sources":["../../src/browser/playwright-driver.ts"],"names":[],"mappings":"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"}
|