@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 @@
|
|
|
1
|
+
{"version":3,"file":"scenario-provenance.d.ts","sourceRoot":"","sources":["../../src/browser/scenario-provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;yFAUyF;AAEzF,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAClE,OAAO,EAAgC,KAAK,YAAY,EAAyB,MAAM,uBAAuB,CAAC;AAiC/G;;;;;;;+FAO+F;AAC/F,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,EAAE,GAAG,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,OAAO,EAAE,CAmBnH"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/** Provenance matching for `browser_save_scenario` — DEC-NEXT (Part 13 of the UAT audit). A step
|
|
2
|
+
* the session actually performed, in order, was necessarily resolvable at the moment it ran; that
|
|
3
|
+
* is stronger evidence than re-resolving the same step against a LATER static snapshot, which is
|
|
4
|
+
* exactly what fails for a UI that reveals controls progressively (the earlier steps' own targets
|
|
5
|
+
* can mutate — a "Try it out" button that renames itself to "Cancel" — or the later steps' targets
|
|
6
|
+
* can vanish again by the time save() looks, even though every one of them was just performed live,
|
|
7
|
+
* successfully, moments before). This module answers one question only: for each step in a
|
|
8
|
+
* scenario, does it match something this session's own action log says actually happened, in the
|
|
9
|
+
* same relative order? It does not decide what to do with that answer — the caller
|
|
10
|
+
* (`browser-save-scenario.ts`) still runs today's single-snapshot check for anything this says no
|
|
11
|
+
* to, which is the fallback that still catches a fabricated or hand-edited scenario. */
|
|
12
|
+
import { isCredentialRef, isSecretRef } from "../scenarios/index.js";
|
|
13
|
+
function targetsEqual(performed, declared) {
|
|
14
|
+
if (performed === null || declared === null)
|
|
15
|
+
return performed === declared;
|
|
16
|
+
return performed.role === declared.role && performed.name === declared.name && performed.selector === declared.selector;
|
|
17
|
+
}
|
|
18
|
+
/** The stored value against what was actually entered. Equal, or — when the stored value is a
|
|
19
|
+
* secret reference — deliberately unequal, because replacing the literal with `${env:VAR}` is
|
|
20
|
+
* the whole point of the reference. What provenance proves is that *this element was acted on*;
|
|
21
|
+
* for `click` and `submit` there is no text to compare at all. Narrow on purpose: a literal is
|
|
22
|
+
* still compared exactly, so a hand-constructed scenario claiming text that was never typed
|
|
23
|
+
* still falls through to the fresh-snapshot check. */
|
|
24
|
+
function textMatches(stored, performed) {
|
|
25
|
+
if (stored !== null && (isSecretRef(stored) || isCredentialRef(stored)))
|
|
26
|
+
return true;
|
|
27
|
+
return stored === performed;
|
|
28
|
+
}
|
|
29
|
+
function stepMatches(step, entry) {
|
|
30
|
+
if (step.action !== entry.action)
|
|
31
|
+
return false;
|
|
32
|
+
switch (step.action) {
|
|
33
|
+
case "navigate":
|
|
34
|
+
return step.url === entry.url;
|
|
35
|
+
case "click":
|
|
36
|
+
case "submit":
|
|
37
|
+
return targetsEqual(entry.target, step.target);
|
|
38
|
+
case "type":
|
|
39
|
+
case "fill":
|
|
40
|
+
case "select":
|
|
41
|
+
return targetsEqual(entry.target, step.target) && textMatches(step.text, entry.text);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** For each of `steps`, in order: does it match an entry in `log`, without matching an earlier
|
|
45
|
+
* step to a later log entry than a later step already claimed? A greedy in-order subsequence
|
|
46
|
+
* match — each match consumes the log up to and including itself, so a match can never come
|
|
47
|
+
* from *before* the previous step's own match, even though extra performed actions in between
|
|
48
|
+
* (an explored dead end, a step the scenario doesn't include) are skipped over freely rather
|
|
49
|
+
* than required to appear. `log` from a different or closed session, or a hand-constructed
|
|
50
|
+
* scenario naming something that was never actually performed, matches nothing here — every
|
|
51
|
+
* entry in `result` for it comes back `false`, leaving the fallback snapshot check to run. */
|
|
52
|
+
export function matchByProvenance(steps, log) {
|
|
53
|
+
const result = [];
|
|
54
|
+
let cursor = 0;
|
|
55
|
+
for (const step of steps) {
|
|
56
|
+
let foundAt = -1;
|
|
57
|
+
for (let i = cursor; i < log.length; i += 1) {
|
|
58
|
+
if (stepMatches(step, log[i])) {
|
|
59
|
+
foundAt = i;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (foundAt === -1) {
|
|
64
|
+
result.push(false);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
result.push(true);
|
|
68
|
+
cursor = foundAt + 1;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=scenario-provenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenario-provenance.js","sourceRoot":"","sources":["../../src/browser/scenario-provenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;yFAUyF;AAGzF,OAAO,EAAE,eAAe,EAAE,WAAW,EAA4C,MAAM,uBAAuB,CAAC;AAE/G,SAAS,YAAY,CAAC,SAAiC,EAAE,QAAiC;IACxF,IAAI,SAAS,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,SAAS,KAAK,QAAQ,CAAC;IAC3E,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC;AAC1H,CAAC;AAED;;;;;uDAKuD;AACvD,SAAS,WAAW,CAAC,MAAqB,EAAE,SAAwB;IAClE,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACrF,OAAO,MAAM,KAAK,SAAS,CAAC;AAC9B,CAAC;AAED,SAAS,WAAW,CAAC,IAAkB,EAAE,KAAoB;IAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC/C,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,UAAU;YACb,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC;QAChC,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED;;;;;;;+FAO+F;AAC/F,MAAM,UAAU,iBAAiB,CAAC,KAA8B,EAAE,GAA6B;IAC7F,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;gBAC/B,OAAO,GAAG,CAAC,CAAC;gBACZ,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,GAAG,OAAO,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Turning a stored target descriptor back into something clickable — DEC-383 §2/§3. Stored
|
|
2
|
+
* steps carry role+name+selector, no `ref` (scoped to the issuing snapshot); resolution is
|
|
3
|
+
* exact-or-refuse against a fresh snapshot, deliberately no fallback chain — substituting one
|
|
4
|
+
* matching field for another turns a real disagreement into a quiet one, and the scenario
|
|
5
|
+
* keeps reporting green against a changed page. Refusal messages name the exact disagreement (DEC-384). */
|
|
6
|
+
import type { TargetDescriptor } from "../scenarios/index.ts";
|
|
7
|
+
import type { PageSnapshot, SnapshotElement } from "./driver.ts";
|
|
8
|
+
export type DescriptorField = "role" | "name" | "selector";
|
|
9
|
+
/** Why a descriptor failed to resolve. `zero` — nothing matches at all. `ambiguous` —
|
|
10
|
+
* several do, picking one would report on an unchosen run. `partial` — something still
|
|
11
|
+
* matches part of it, the case `disagreed` exists for. */
|
|
12
|
+
export interface ResolutionFailure {
|
|
13
|
+
readonly kind: "zero" | "ambiguous" | "partial";
|
|
14
|
+
/** Which of role/name/selector no longer agree. Empty for `zero` and `ambiguous`, where nothing partial matched to disagree with. */
|
|
15
|
+
readonly disagreed: readonly DescriptorField[];
|
|
16
|
+
readonly message: string;
|
|
17
|
+
}
|
|
18
|
+
export type TargetResolution = {
|
|
19
|
+
readonly resolved: true;
|
|
20
|
+
readonly element: SnapshotElement;
|
|
21
|
+
} | {
|
|
22
|
+
readonly resolved: false;
|
|
23
|
+
readonly failure: ResolutionFailure;
|
|
24
|
+
};
|
|
25
|
+
/** Resolves one stored descriptor against a fresh snapshot. `where` labels what's being
|
|
26
|
+
* resolved ("step 0") and is required — a refusal not saying which step is the failure this exists to avoid. */
|
|
27
|
+
export declare function resolveTarget(where: string, target: TargetDescriptor, snapshot: PageSnapshot): TargetResolution;
|
|
28
|
+
//# sourceMappingURL=scenario-resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenario-resolve.d.ts","sourceRoot":"","sources":["../../src/browser/scenario-resolve.ts"],"names":[],"mappings":"AAAA;;;;4GAI4G;AAE5G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEjE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAE3D;;2DAE2D;AAC3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAChD,qIAAqI;IACrI,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAuBtE;iHACiH;AACjH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,GAAG,gBAAgB,CA6E/G"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/** Turning a stored target descriptor back into something clickable — DEC-383 §2/§3. Stored
|
|
2
|
+
* steps carry role+name+selector, no `ref` (scoped to the issuing snapshot); resolution is
|
|
3
|
+
* exact-or-refuse against a fresh snapshot, deliberately no fallback chain — substituting one
|
|
4
|
+
* matching field for another turns a real disagreement into a quiet one, and the scenario
|
|
5
|
+
* keeps reporting green against a changed page. Refusal messages name the exact disagreement (DEC-384). */
|
|
6
|
+
const FIELDS = ["role", "name", "selector"];
|
|
7
|
+
function describe(target) {
|
|
8
|
+
return `role "${target.role}", name "${target.name}", selector "${target.selector}"`;
|
|
9
|
+
}
|
|
10
|
+
/** What the page holds, capped — a refusal a person has to scroll is one they stop reading. */
|
|
11
|
+
function pageContents(snapshot, limit = 8) {
|
|
12
|
+
if (snapshot.elements.length === 0)
|
|
13
|
+
return "The page presents no elements at all.";
|
|
14
|
+
const shown = snapshot.elements
|
|
15
|
+
.slice(0, limit)
|
|
16
|
+
.map((e) => `role "${e.role}", name "${e.name}", selector "${e.selector}"`)
|
|
17
|
+
.join("; ");
|
|
18
|
+
const rest = snapshot.totalElements - Math.min(limit, snapshot.elements.length);
|
|
19
|
+
return `The page holds ${snapshot.totalElements} element(s): ${shown}${rest > 0 ? `; and ${rest} more` : ""}.`;
|
|
20
|
+
}
|
|
21
|
+
function disagreementsWith(target, element) {
|
|
22
|
+
return FIELDS.filter((field) => element[field] !== target[field]);
|
|
23
|
+
}
|
|
24
|
+
/** Resolves one stored descriptor against a fresh snapshot. `where` labels what's being
|
|
25
|
+
* resolved ("step 0") and is required — a refusal not saying which step is the failure this exists to avoid. */
|
|
26
|
+
export function resolveTarget(where, target, snapshot) {
|
|
27
|
+
const exact = snapshot.elements.filter((e) => e.role === target.role && e.name === target.name && e.selector === target.selector);
|
|
28
|
+
if (exact.length === 1)
|
|
29
|
+
return { resolved: true, element: exact[0] };
|
|
30
|
+
if (exact.length > 1) {
|
|
31
|
+
return {
|
|
32
|
+
resolved: false,
|
|
33
|
+
failure: {
|
|
34
|
+
kind: "ambiguous",
|
|
35
|
+
disagreed: [],
|
|
36
|
+
message: `${where}: ${exact.length} elements on ${snapshot.url} match ${describe(target)}. Resolution is ` +
|
|
37
|
+
"exactly one match or none — the first is not picked, because a replay that guessed which element " +
|
|
38
|
+
"it meant is reporting on a run nobody chose. Narrow the selector and re-save the step.",
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const bySelector = snapshot.elements.filter((e) => e.selector === target.selector);
|
|
43
|
+
const byRoleName = snapshot.elements.filter((e) => e.role === target.role && e.name === target.name);
|
|
44
|
+
if (bySelector.length === 0 && byRoleName.length === 0) {
|
|
45
|
+
return {
|
|
46
|
+
resolved: false,
|
|
47
|
+
failure: {
|
|
48
|
+
kind: "zero",
|
|
49
|
+
disagreed: [],
|
|
50
|
+
message: `${where}: nothing on ${snapshot.url} matches ${describe(target)}, and nothing matches any part of ` +
|
|
51
|
+
`it either. ${pageContents(snapshot)} Either this element was removed, or the scenario was saved ` +
|
|
52
|
+
"against a different page than the one the replay reached.",
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// The partial case — why the format stores all three fields. Both halves are reported
|
|
57
|
+
// when both matched, since two candidates exist and only a person knows which is theirs.
|
|
58
|
+
const parts = [];
|
|
59
|
+
const disagreed = new Set();
|
|
60
|
+
if (bySelector.length === 1) {
|
|
61
|
+
const found = bySelector[0];
|
|
62
|
+
for (const field of disagreementsWith(target, found))
|
|
63
|
+
disagreed.add(field);
|
|
64
|
+
const moved = disagreementsWith(target, found)
|
|
65
|
+
.map((field) => `${field} changed from "${target[field]}" to "${found[field]}"`)
|
|
66
|
+
.join(" and ");
|
|
67
|
+
parts.push(`selector "${target.selector}" still matches one element, but its ${moved}`);
|
|
68
|
+
}
|
|
69
|
+
else if (bySelector.length > 1) {
|
|
70
|
+
disagreed.add("selector");
|
|
71
|
+
parts.push(`selector "${target.selector}" now matches ${bySelector.length} elements, none of them with this role and name`);
|
|
72
|
+
}
|
|
73
|
+
if (byRoleName.length === 1) {
|
|
74
|
+
const found = byRoleName[0];
|
|
75
|
+
disagreed.add("selector");
|
|
76
|
+
parts.push(`an element with role "${target.role}" and name "${target.name}" is still on the page, but its ` +
|
|
77
|
+
`selector changed from "${target.selector}" to "${found.selector}"`);
|
|
78
|
+
}
|
|
79
|
+
else if (byRoleName.length > 1) {
|
|
80
|
+
disagreed.add("selector");
|
|
81
|
+
parts.push(`${byRoleName.length} elements still have role "${target.role}" and name "${target.name}", none of them at this selector`);
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
resolved: false,
|
|
85
|
+
failure: {
|
|
86
|
+
kind: "partial",
|
|
87
|
+
// Ordered like the descriptor, so callers compare sets, not orderings.
|
|
88
|
+
disagreed: FIELDS.filter((field) => disagreed.has(field)),
|
|
89
|
+
message: `${where}: ${describe(target)} does not match exactly one element on ${snapshot.url}, but part of it ` +
|
|
90
|
+
`still does — ${parts.join("; ")}. The step is not run: substituting the half that still matches would ` +
|
|
91
|
+
"turn a real disagreement into a quiet one, and a scenario that does that keeps reporting green " +
|
|
92
|
+
"against a page that changed underneath it. Re-save the step if the change was intended.",
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=scenario-resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenario-resolve.js","sourceRoot":"","sources":["../../src/browser/scenario-resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replays a stored scenario (§7 runner). DEC-384: failed assertion blocks; console
|
|
3
|
+
* error/failed request doesn't; no assertions is `unverified`; unresolvable step is
|
|
4
|
+
* neither pass nor fail. `registry.use()` and evidence draining run once per step only.
|
|
5
|
+
*/
|
|
6
|
+
import { type CredentialStoreLike, type Scenario, type ScenarioActionKind, type ScenarioAssertionKind, type SecretEnvironment } from "../scenarios/index.ts";
|
|
7
|
+
import type { ToolContext } from "../tools/kit.ts";
|
|
8
|
+
import type { BrowserEvidenceReport } from "./evidence.ts";
|
|
9
|
+
import { type BrowserGraphWrite } from "./graph-write.ts";
|
|
10
|
+
import type { BrowserSessionRegistry } from "./registry.ts";
|
|
11
|
+
import { type ResolutionFailure } from "./scenario-resolve.ts";
|
|
12
|
+
import { type DeadSession } from "./tool-support.ts";
|
|
13
|
+
export interface ScenarioStepResult {
|
|
14
|
+
readonly index: number;
|
|
15
|
+
readonly action: ScenarioActionKind;
|
|
16
|
+
/** `ran` — performed. `unresolved` — the descriptor did not resolve, and the replay stopped here. `skipped` — never attempted, because an earlier step stopped the replay. */
|
|
17
|
+
readonly status: "ran" | "unresolved" | "skipped";
|
|
18
|
+
readonly url: string;
|
|
19
|
+
readonly resolution: ResolutionFailure | null;
|
|
20
|
+
}
|
|
21
|
+
export interface ScenarioAssertionResult {
|
|
22
|
+
readonly index: number;
|
|
23
|
+
readonly kind: ScenarioAssertionKind;
|
|
24
|
+
readonly afterStep: number | null;
|
|
25
|
+
/** `unevaluable` = hole in the artifact (e.g. missing comparison value); `notReached`
|
|
26
|
+
* = anchored past where replay stopped. Neither is a defect claim; only
|
|
27
|
+
* `unevaluable` joins `unresolved` (notReached is already counted there). */
|
|
28
|
+
readonly status: "passed" | "failed" | "unevaluable" | "notReached";
|
|
29
|
+
readonly detail: string;
|
|
30
|
+
}
|
|
31
|
+
export interface ScenarioCounts {
|
|
32
|
+
readonly passed: number;
|
|
33
|
+
readonly failed: number;
|
|
34
|
+
readonly unresolved: number;
|
|
35
|
+
readonly unverified: number;
|
|
36
|
+
}
|
|
37
|
+
export interface ScenarioReplay {
|
|
38
|
+
readonly scenario: string;
|
|
39
|
+
readonly sessionId: string;
|
|
40
|
+
readonly outcome: "passed" | "failed" | "unresolved" | "unverified";
|
|
41
|
+
readonly counts: ScenarioCounts;
|
|
42
|
+
/** Only failed assertions. See this file's header for why `unresolved` is not folded in. */
|
|
43
|
+
readonly blockingTotal: number;
|
|
44
|
+
/** 0 clean, 1 blocking findings, 2 could-not-run — `descry check`'s exit vocabulary,
|
|
45
|
+
* computed here (not in the CLI) so the two never drift. Governs the CLI only;
|
|
46
|
+
* this reply carries it as data, not a verdict. */
|
|
47
|
+
readonly exitCode: 0 | 1 | 2;
|
|
48
|
+
readonly steps: readonly ScenarioStepResult[];
|
|
49
|
+
readonly assertions: readonly ScenarioAssertionResult[];
|
|
50
|
+
/** One summary for the whole batch, aggregated from the per-step drains. */
|
|
51
|
+
readonly evidence: BrowserEvidenceReport;
|
|
52
|
+
readonly graph: BrowserGraphWrite;
|
|
53
|
+
/** Set when the session went away mid-replay — a crash, a reap, a disconnect. Null on a replay that ran to its own end. */
|
|
54
|
+
readonly sessionEnded: DeadSession | null;
|
|
55
|
+
/** True when the caller's own signal aborted mid-replay — distinct from `outcome`
|
|
56
|
+
* because "caller cancelled" vs "a step wouldn't resolve" are different facts,
|
|
57
|
+
* and only one says anything about the application. */
|
|
58
|
+
readonly cancelled: boolean;
|
|
59
|
+
readonly notes: readonly string[];
|
|
60
|
+
}
|
|
61
|
+
/** True when replaying this scenario would change the running application. A navigate-only scenario would not. */
|
|
62
|
+
export declare function mutates(scenario: Scenario): boolean;
|
|
63
|
+
export declare function replayScenario(ctx: ToolContext, registry: BrowserSessionRegistry, sessionId: string, scenario: Scenario,
|
|
64
|
+
/** Where a `${env:VAR}` step resolves its value. Defaulted rather than required so every
|
|
65
|
+
* existing caller is unchanged, and injectable so a test never has to mutate the process. */
|
|
66
|
+
env?: SecretEnvironment,
|
|
67
|
+
/** Where a `${credential:NAME}` step resolves its value — "sign in as this profile" without the
|
|
68
|
+
* credential ever entering the committed file (lane A1, item 4). Undefined by default, same as
|
|
69
|
+
* every existing caller being unchanged: a scenario naming a credential reference with no store
|
|
70
|
+
* configured refuses by name rather than silently falling through to the environment resolver. */
|
|
71
|
+
credentialStore?: CredentialStoreLike | undefined): Promise<ScenarioReplay>;
|
|
72
|
+
//# sourceMappingURL=scenario-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenario-runner.d.ts","sourceRoot":"","sources":["../../src/browser/scenario-runner.ts"],"names":[],"mappings":"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"}
|