build: add canonical product catalog and docs drift checks

Derive package, tool-family, provider, setup-client, schema-version, and CLI facts from the runtime contract sources into a deterministic checked-in catalog.

Add non-mutating generated-file checks, exact TypeDoc regenerate-and-compare validation, caller-visible documentation fact checks, and CI enforcement through docs:check.

Cover command-router parity, source-derived catalog values, deliberate documentation drift, and stale generated artifacts while preserving runtime behavior.
This commit is contained in:
N0zoM1z0 2026-07-15 17:43:52 +08:00
parent addc208f12
commit beb9ece7d1
109 changed files with 1878 additions and 281 deletions

View File

@ -27,7 +27,7 @@
## Tool Contract Impact
<!-- If this PR adds, removes, or modifies MCP tools, list them here. -->
<!-- The current inventory is 78 tools (33 direct + 10 enhanced + 5 native + 2 artifact + 8 browser + 2 Electron + 18 session). -->
<!-- The current inventory is 78 tools (33 direct + 10 enhanced + 5 native + 2 artifact + 8 browser + 2 Electron + 18 session). Canonical facts: docs/product-catalog.json. -->
## Related Issues

View File

@ -141,4 +141,4 @@ jobs:
node-version-file: .nvmrc
cache: npm
- run: npm ci
- run: npm run docs:generate
- run: npm run docs:check

View File

@ -32,6 +32,7 @@ See [docs/architecture.mermaid](docs/architecture.mermaid) for a visual architec
- `bridge/hopper_bridge.py`: runs inside Hopper and adapts declared operations to Hopper's public Python API. Hopper's bundled MCP server is not used.
- `src/application/`: shared CLI/MCP session composition, setup and diagnostics, and enhanced workflows.
- `src/server/`: MCP request translation. `createServer.ts` assembles the MCP server, `registerOfficialTools.ts`/`registerEnhancedTools.ts` register each tool set, `toolResult.ts` maps `Result` values to MCP content.
- `docs/product-catalog.json`: generated package, tool-family, provider, setup-client, schema-version, and CLI facts. Regenerate it from source; do not edit it by hand.
- `tests/`: Vitest suite. `tests/fixtures/` holds the fake launcher and fake Hopper bridge used as production seams.
- `scripts/verify-real-hopper.mjs`: real-Hopper end-to-end verifier.
- `scripts/verify-real-browser.mjs`: real Chrome end-to-end verifier for the passive CDP provider.
@ -54,6 +55,7 @@ See [docs/architecture.mermaid](docs/architecture.mermaid) for a visual architec
- `npm run verify:browser`: build and run the real Chrome verifier against `REA_BROWSER_EXECUTABLE` or a platform-default Chrome-family executable.
- `npm run verify:package`: pack and test the CLI, setup transaction, skill, and 78-tool target-free MCP server in an isolated environment.
- `npm run docs:generate`: generate API documentation from JSDoc comments into `docs/api/` using TypeDoc.
- `npm run docs:check`: verify generated package metadata, the canonical product catalog, caller-visible documentation facts, TypeDoc output, and the error JSON schema without rewriting them.
- `npm run config:print -- /path/to/binary`: print an MCP server config with absolute paths.
- `HOPPER_TARGET_PATH=/path/to/binary npm start`: launch Hopper and run the built stdio MCP server.

View File

@ -350,13 +350,15 @@ rea inspect-web-page http://127.0.0.1:9222 TARGET_ID --approved --json
All eight browser tools expose the same Evidence v2 contracts over CLI and MCP. Inspection is passive: REA does not evaluate page JavaScript, navigate, click, close the page, or close the browser. Query values, credentials, cookies, authorization headers, storage values, and raw JSON or WebSocket values are never retained. Separately approved captures can retain bounded redacted console primitives, value-free JSON/WebSocket shapes, script sources, accessibility text, or screenshot pixels. Existing activity before attach is explicitly unavailable. See [Website observation with CDP](docs/browser-observation.md) for browser startup, schemas, limits, and the threat model.
Exact package, tool-family, provider, setup-client, public schema-version, and CLI facts are generated from source in [`docs/product-catalog.json`](docs/product-catalog.json). `npm run docs:check` verifies that this catalog, the narrative documentation, TypeDoc, and generated schemas have not drifted.
## Roadmap
REA is growing into a toolkit for understanding software across static artifacts and observed behavior. The [current status](#current-status) above is the shipped baseline; the items below are planned work.
### Now
1. **Truthful product metadata** — derive versions, tool inventories, schemas, setup clients, and capability documentation from canonical sources and fail CI on drift.
1. **Maintain truthful product metadata** — extend the shipped canonical catalog and drift checks whenever versions, tools, providers, schemas, setup clients, or CLI capabilities change.
2. **A second deep-analysis provider** — add explicit target-to-provider binding and a read-only Ghidra provider for free, open-source Linux analysis without pretending Hopper and Ghidra results are textually identical.
3. **JavaScript application reconstruction** — connect packages, ASAR entries, main/preload/renderer bundles, source maps, Electron IPC boundaries, service-worker assets, and native add-ons in one evidence-bearing application graph.

View File

@ -1 +1 @@
window.hierarchyData = "eJylmVFP7CgUx79Ln7ndFtpC5807cXdNblaj98aHzcQwHRyJHehSRjO58btvaEellrFQX6rF/s/5AYcDHH9HSkrdRot/UZ6nAGYIds88AzDBaQZgWWIMUFYmOcBlmYMUlhivQKTYfc0qzaVoo8XvyMjNT0F3LFpEZ4LWh5a350pJFYHokYtNtEghAdFe1dEiqmratqz9YyN3lIs7Zr5r44EsftC7OgL9p9Ei0u3mm7HzrW8AUfXA641ioqMvEEA5zgHKCQYoLwlARZoCVMAcoAKZR4YBKnLzwOYPJAMIJwQgDBOAMIIA4SwHCOcEIIIygEhWAERy8xsuAcIEpqsXEBlnVl//lk3DVGBPLVFQP3FhQHoaDBBJEoBIaghh3rPh3DEPV0pqWcl65nwM5BO8HQTBDogL0ez1TIJ3rY/7kjjcX+71fP+W2AOgSF2LYUkbuuY114dfgj5RXtN1zWbynLblgwddMbKkomJ1zTazkWy9DwZyYfzkOyZnz5Ot9kHI7EC9UvKJb5i6YcfUFgjh1vtg5C6Msw1tdHBmcal9ELAdst+VfG6Zuly3TD3RGUNxwoAPCMnsqFCa39NKXzZMzeFw6z0wcGLnkHMzpKJiF0KzreL6EIjh1vtgwMSB8YPveOgKGWt93CPocP8nD85bI6mP88zODxfiibWab7tZvJXqsW1oFYrxiREfoNyOiV/iUchncc22vNUqNCJcah+EohwdPeZlzLHWxz0eu5+7b7jUPgiDs0VvZObxxiH2ACBJMgK4ZjupQ4NxJPVxnmau3lesDT1rj7U+7gcnh97EjaZqXvC9K31cI7vnSynu+XY/a08Ya33cZ4Xl/h/5nQuqDpcNC/U+kvo4z+2+9/qfVG1Z6LiPpD7OB2v+iqkdb1suxTX7b89V8LI/YWAaxFw/nSA3lWzYGwDMi1cALjRT97R6Z2jeRFey5tUh/mDlJMWbqeF9jCQJAiRJkbl7mZeTI8Va/WXEox0PyI4mddP8paj4OktnxY+kKxlYKLdsbfZhoaU6XLNW7pU5GDV7T6hnSx6ftBU6kyksy2TV05Z2gr/R5mp1y9av5mdQjmz4DVxXghmcyvlmy37QvagemJrgeOhS7N1QE394DRwkmGBIVj0ZJKOd4Kxpal51aXUE6cgLbsKTpqYzBExINt6bXy9EHihDQfzh1cc/sdfcctMc70E+DOv+07uxKnY0TcMglBdDmHNzLVVSBNJ8lMWutmkeU1t0lWVeb2ZXUk1lAPoeFXdWbaoncBoMjvAMQQwgSYtydYR2lbKWNWeTSdSLtrfkmQ9MYdZd3RvO5xd4Jif0xMAhlJjSsVmB3cAV6eCm0h88bli3d3wWdzbkQBQP36bjjXxCEBhrI208bgkNtOI1xMrh7jiunITCOg04KjKzsE2K6wrNZr4HB/JdI1uumU9ysXFHwnjcMn1INf+gsCsVx/Q0fxRPWIhPtYeOo8nOq/4+OxjH44VsSRu9V9M3ShvZIY1dbROj+fLyPx9+7Vo="
window.hierarchyData = "eJylmVFP4zgQx79Lnr25JI4Tu29sxd0hrQ4Eu+LhVCE3NcUitXOOC6pWfPeTkwIOcYkdXgox/c/8PJ6M7eF3pKTUbbT4F5aoAFmOCwKynCQZyNIMYQATlCEAUY4gwAgSkEKUpSsQKXZfs0pzKdpo8TsycvNT0B2LFtGZoPWh5e25UlJFIHrkYhMt0gyDaK/qaBFVNW1b1v6xkTvKxR0z32vjgSx+0Ls6Av1Xo0Wk2803Y+dbPwCi6oHXG8VER19gAEucAFiSDECcQABxWgCIYQIgzs0HMn8ozEdp/oAJgCSFABIzQwJLAAlKACQFBHkCCcgTlJoP8xvOjamCrF5AZJxZc/1bNg1TgTO1REHzJGUOIDE0hGQgTxIE8iQ1hDDp2XDiWIcrJbWsZD1zPQbyCd4OgmQOiAvR7PVMgneth3ucQIf7y72e798S+wCkrpdhSRu65jXXh1+CPlFe03XNZvKctuWDB105sqSiYnXNNrORbL0PRu7C+Ml3TM5eJ1vtg4DsRL1S8olvmLphx9IWCOHW+2AULoyzDW10cGVxqX0QSjtlvyv53DJ1uW6ZeqIzQnHCgA8IJnZWKM3vaaUvG6bmcLj1HhgktWvIuQmpqNiF0GyruD4EYrj1PhgZcmD84Dse+oaMtT7uYelw/ycPrlsjqY9zZNeHC/HEWs233SreSvXYNrQKxfjEiA9QYefEL/Eo5LO4ZlveahWaES61D0KZj44e8yrmWOvjHo/dz903XGofhMHZojcy83jjEE8DmDPXCOCa7aQOTcaR1Md5Slyzr1gbetYea33cD04OvYkbTdW85HtXerm2Z76U4p5v97P2hLHWxz1KLff/yO9cUHW4bFio95HUy7k9917/k6otC437SOrjfPDOXzG1423Lpbhm/+25Cn7tTxiYBjHXTyfITSUb9gaQoeIVgAvN1D2t3hmaN9GVrHl1iD9YOUnxZmp4H8MoLwFGqFx1gHl5MlKs1V9GPNrxgOxokJvmL0XF11k6K34kXcvAQrlla7MPCy3V4Zq1cq/MwajZe0I9W/L4pK3QlUwhgvmqp4V2wt9oc7W6ZetX8zMoRzb8Ate1YAancr7Zsh90L6oHpiY4HroSezfUxB8eA4OUpVmZrXqycrwNnzVNzauurI4gHXXBTXjS1HSFyFKIC9f22F2IPFCGgvjDo4f/fLA/LjfN8R7kw7Duv3o3VsWOoWkYSJJ8CHNurqVKikCaj7LYNTbNY3qLrrbM683sSqqpCkDfs+LO6k31BE6DwRme4xKBDJdpV9K7R1evpOZssoh60faWPOuBacy6u3vD9fwCz+SCnggchMi0js0b2AWuKNNydGa5Yd3e8Vne2ZADUTx8ms43/AlBYK6NtPF4JDTRimOKdR32T1svobBOA46OzCxsU+I6bLPegwP5rpEt18ynuNi4I2E8Hpm+FZp/UNidimN5mh/FExbiU+OhcTTVedU3YwdxPF7IlrTRezV9o7SRHdLYNTYRzZeX/wEnN+1Q"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Failure to establish a filesystem object's canonical authorization identity.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="37619">
<section class="tsd-panel tsd-hierarchy" data-refl="38167">
<h4>Hierarchy</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><span class="tsd-signature-type">Error</span>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Typed application failure produced by controlled process capture.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="37821">
<section class="tsd-panel tsd-hierarchy" data-refl="38369">
<h4>Hierarchy (<a href="../hierarchy.html#application/ProcessCaptureError.ProcessCaptureError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Owner-only project policy persistence failure.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="39392">
<section class="tsd-panel tsd-hierarchy" data-refl="39940">
<h4>Hierarchy</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><span class="tsd-signature-type">Error</span>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Caller cancellation won before provider-neutral work completed.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3625">
<section class="tsd-panel tsd-hierarchy" data-refl="3830">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.AnalysisCancelledError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Selected provider cannot execute a declared analysis operation.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3611">
<section class="tsd-panel tsd-hierarchy" data-refl="3816">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.AnalysisCapabilityUnavailableError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Base class for expected analysis, provider, and session failures.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3551">
<section class="tsd-panel tsd-hierarchy" data-refl="3756">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.AnalysisError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><span class="tsd-signature-type">Error</span>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Caller input failed provider-neutral application parsing.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3587">
<section class="tsd-panel tsd-hierarchy" data-refl="3792">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.AnalysisInputError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Provider output failed provider-neutral application parsing.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3598">
<section class="tsd-panel tsd-hierarchy" data-refl="3803">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.AnalysisOutputError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Provider-neutral invalid analysis input or output at an application boundary.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3575">
<section class="tsd-panel tsd-hierarchy" data-refl="3780">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.AnalysisProtocolError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Provider-neutral operation exceeded its declared execution deadline.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3635">
<section class="tsd-panel tsd-hierarchy" data-refl="3840">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.AnalysisTimeoutError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Artifact inventory or extraction failed a typed safety boundary.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3684">
<section class="tsd-panel tsd-hierarchy" data-refl="3889">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.ArtifactOperationError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>A supplied target path could not be safely opened as a supported app or binary.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3854">
<section class="tsd-panel tsd-hierarchy" data-refl="4059">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.BinaryTargetError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>A bounded passive browser observation failed at its CDP boundary.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3671">
<section class="tsd-panel tsd-hierarchy" data-refl="3876">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.BrowserObservationError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Runtime configuration could not be parsed safely.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3834">
<section class="tsd-panel tsd-hierarchy" data-refl="4039">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.ConfigurationError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Evidence bundle filesystem access failed within the configured policy.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3732">
<section class="tsd-panel tsd-hierarchy" data-refl="3937">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.EvidenceFileError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Evidence identity, schema, or bundle manifests failed integrity checks.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3708">
<section class="tsd-panel tsd-hierarchy" data-refl="3913">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.EvidenceIntegrityError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>A bounded evidence ledger cannot accept more records or serialized bytes.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3720">
<section class="tsd-panel tsd-hierarchy" data-refl="3925">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.EvidenceLimitError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>The caller cancelled a Hopper operation before it completed.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3779">
<section class="tsd-panel tsd-hierarchy" data-refl="3984">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.HopperCancelledError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.HopperError.html" class="tsd-signature-type tsd-kind-class">HopperError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Base class for failures produced specifically by the Hopper provider.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3563">
<section class="tsd-panel tsd-hierarchy" data-refl="3768">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.HopperError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>The owned Hopper bridge stopped before its client was closed.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3814">
<section class="tsd-panel tsd-hierarchy" data-refl="4019">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.HopperProcessError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.HopperError.html" class="tsd-signature-type tsd-kind-class">HopperError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Hopper returned bytes or JSON that do not satisfy the NDJSON RPC contract.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3787">
<section class="tsd-panel tsd-hierarchy" data-refl="3992">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.HopperProtocolError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.HopperError.html" class="tsd-signature-type tsd-kind-class">HopperError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Hopper's JSON-RPC endpoint returned an expected remote error response.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3800">
<section class="tsd-panel tsd-hierarchy" data-refl="4005">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.HopperRemoteError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.HopperError.html" class="tsd-signature-type tsd-kind-class">HopperError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Hopper or the repository bridge could not be started.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3825">
<section class="tsd-panel tsd-hierarchy" data-refl="4030">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.HopperStartError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.HopperError.html" class="tsd-signature-type tsd-kind-class">HopperError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Hopper did not respond within the configured operation deadline.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3769">
<section class="tsd-panel tsd-hierarchy" data-refl="3974">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.HopperTimeoutError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.HopperError.html" class="tsd-signature-type tsd-kind-class">HopperError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Persistent investigation workspace access or CAS validation failed.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3745">
<section class="tsd-panel tsd-hierarchy" data-refl="3950">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.InvestigationWorkspaceError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>No app or binary session exists for an analysis request.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3846">
<section class="tsd-panel tsd-hierarchy" data-refl="4051">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.NoBinaryOpenError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Exact denied authority used by both CLI and MCP remediation.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3879">
<section class="tsd-panel tsd-hierarchy" data-refl="4084">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.PermissionRequiredError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>A provider adapter failed outside its more precise typed variants.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3657">
<section class="tsd-panel tsd-hierarchy" data-refl="3862">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.ProviderAdapterError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>No configured provider can satisfy a requested operation.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3647">
<section class="tsd-panel tsd-hierarchy" data-refl="3852">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.ProviderSelectionError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>Residual-unknown mutation failed a lifecycle, reference, or CAS invariant.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="3758">
<section class="tsd-panel tsd-hierarchy" data-refl="3963">
<h4>Hierarchy (<a href="../hierarchy.html#domain/errors.UnknownRegistryError">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a>

View File

@ -14,7 +14,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography"><p>A proposed grant exceeds the administrator-owned maximum authority.</p>
</div></section>
<section class="tsd-panel tsd-hierarchy" data-refl="8037">
<section class="tsd-panel tsd-hierarchy" data-refl="8581">
<h4>Hierarchy</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><span class="tsd-signature-type">Error</span>

View File

@ -19,7 +19,7 @@
<ul class="tsd-hierarchy">
<li><a href="../interfaces/application_AnalysisProvider.AnalysisProvider.html" class="tsd-signature-type tsd-kind-interface">AnalysisProvider</a></li></ul></section><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/hopper/HopperProvider.ts#L76">src/hopper/HopperProvider.ts:76</a></li></ul></aside>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/hopper/HopperProvider.ts#L79">src/hopper/HopperProvider.ts:79</a></li></ul></aside>
<section class="tsd-panel-group tsd-index-group">
<section class="tsd-panel tsd-index-panel">
<details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
@ -51,7 +51,7 @@
<li><span><span class="tsd-kind-parameter">logger</span>: <span class="tsd-signature-type">Logger</span></span></li></ul></div>
<h4 class="tsd-returns-title">Returns <a href="" class="tsd-signature-type tsd-kind-class">HopperProvider</a></h4><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/hopper/HopperProvider.ts#L77">src/hopper/HopperProvider.ts:77</a></li></ul></aside></div></li></ul></section></section></details>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/hopper/HopperProvider.ts#L80">src/hopper/HopperProvider.ts:80</a></li></ul></aside></div></li></ul></section></section></details>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="methods-1">Methods<a href="#methods-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary>
<section>
@ -64,7 +64,7 @@
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-keyword">readonly</span> <a href="../types/application_AnalysisProvider.CapabilityDescriptor.html" class="tsd-signature-type tsd-kind-type-alias">CapabilityDescriptor</a><span class="tsd-signature-symbol">[]</span></h4><aside class="tsd-sources">
<p>Implementation of <a href="../interfaces/application_AnalysisProvider.AnalysisProvider.html">AnalysisProvider</a>.<a href="../interfaces/application_AnalysisProvider.AnalysisProvider.html#capabilities">capabilities</a></p>
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/hopper/HopperProvider.ts#L86">src/hopper/HopperProvider.ts:86</a></li></ul></aside></div></li></ul></section>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/hopper/HopperProvider.ts#L89">src/hopper/HopperProvider.ts:89</a></li></ul></aside></div></li></ul></section>
<section class="tsd-panel tsd-member">
<h3 class="tsd-anchor-link" id="createclient"><span>create<wbr/>Client</span><a href="#createclient" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<ul class="tsd-signatures">
@ -78,7 +78,7 @@
<h4 class="tsd-returns-title">Returns <a href="../interfaces/application_AnalysisProvider.AnalysisClient.html" class="tsd-signature-type tsd-kind-interface">AnalysisClient</a></h4><aside class="tsd-sources">
<p>Implementation of <a href="../interfaces/application_AnalysisProvider.AnalysisProvider.html">AnalysisProvider</a>.<a href="../interfaces/application_AnalysisProvider.AnalysisProvider.html#createclient">createClient</a></p>
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/hopper/HopperProvider.ts#L90">src/hopper/HopperProvider.ts:90</a></li></ul></aside></div></li></ul></section>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/hopper/HopperProvider.ts#L93">src/hopper/HopperProvider.ts:93</a></li></ul></aside></div></li></ul></section>
<section class="tsd-panel tsd-member">
<h3 class="tsd-anchor-link" id="identity"><span>identity</span><a href="#identity" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3>
<ul class="tsd-signatures">
@ -88,7 +88,7 @@
<h4 class="tsd-returns-title">Returns <a href="../interfaces/application_AnalysisProvider.ProviderIdentity.html" class="tsd-signature-type tsd-kind-interface">ProviderIdentity</a></h4><aside class="tsd-sources">
<p>Implementation of <a href="../interfaces/application_AnalysisProvider.AnalysisProvider.html">AnalysisProvider</a>.<a href="../interfaces/application_AnalysisProvider.AnalysisProvider.html#identity">identity</a></p>
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/hopper/HopperProvider.ts#L82">src/hopper/HopperProvider.ts:82</a></li></ul></aside></div></li></ul></section></section></details></div>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/hopper/HopperProvider.ts#L85">src/hopper/HopperProvider.ts:85</a></li></ul></aside></div></li></ul></section></section></details></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">

File diff suppressed because one or more lines are too long

View File

@ -24,7 +24,7 @@
<li><span><span class="tsd-kind-parameter">home</span>: <span class="tsd-signature-type">string</span></span></li></ul></div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-keyword">readonly</span> <a href="../interfaces/application_SupportedClients.SetupClient.html" class="tsd-signature-type tsd-kind-interface">SetupClient</a><span class="tsd-signature-symbol">[]</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/application/SupportedClients.ts#L12">src/application/SupportedClients.ts:12</a></li></ul></aside></div></li></ul></section></div>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/application/SupportedClients.ts#L70">src/application/SupportedClients.ts:70</a></li></ul></aside></div></li></ul></section></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">

View File

@ -22,7 +22,7 @@ Analysis commands acquire and close their own sessions; bare <code>mcp</code> an
</div>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Cli</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-symbol">{}</span><span class="tsd-signature-symbol">&gt;</span></h4><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/cli.ts#L39">src/cli.ts:39</a></li></ul></aside></div></li></ul></section></div>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/cli.ts#L40">src/cli.ts:40</a></li></ul></aside></div></li></ul></section></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -10,69 +10,69 @@
<h1>rea-agents - v1.6.0</h1></div>
<h2>Hierarchy Summary</h2>
<ul class="tsd-full-hierarchy">
<li data-refl="3551" id="domain/errors.AnalysisError"><a href="classes/domain_errors.AnalysisError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisError</a>
<li data-refl="3756" id="domain/errors.AnalysisError"><a href="classes/domain_errors.AnalysisError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisError</a>
<ul>
<li data-refl="3563" id="domain/errors.HopperError"><a href="classes/domain_errors.HopperError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperError</a>
<li data-refl="3768" id="domain/errors.HopperError"><a href="classes/domain_errors.HopperError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperError</a>
<ul>
<li data-refl="3769" id="domain/errors.HopperTimeoutError"><a href="classes/domain_errors.HopperTimeoutError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperTimeoutError</a></li>
<li data-refl="3779" id="domain/errors.HopperCancelledError"><a href="classes/domain_errors.HopperCancelledError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperCancelledError</a></li>
<li data-refl="3787" id="domain/errors.HopperProtocolError"><a href="classes/domain_errors.HopperProtocolError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperProtocolError</a></li>
<li data-refl="3800" id="domain/errors.HopperRemoteError"><a href="classes/domain_errors.HopperRemoteError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperRemoteError</a></li>
<li data-refl="3814" id="domain/errors.HopperProcessError"><a href="classes/domain_errors.HopperProcessError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperProcessError</a></li>
<li data-refl="3825" id="domain/errors.HopperStartError"><a href="classes/domain_errors.HopperStartError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperStartError</a></li></ul></li>
<li data-refl="3575" id="domain/errors.AnalysisProtocolError"><a href="classes/domain_errors.AnalysisProtocolError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisProtocolError</a></li>
<li data-refl="3587" id="domain/errors.AnalysisInputError"><a href="classes/domain_errors.AnalysisInputError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisInputError</a></li>
<li data-refl="3598" id="domain/errors.AnalysisOutputError"><a href="classes/domain_errors.AnalysisOutputError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisOutputError</a></li>
<li data-refl="3611" id="domain/errors.AnalysisCapabilityUnavailableError"><a href="classes/domain_errors.AnalysisCapabilityUnavailableError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisCapabilityUnavailableError</a></li>
<li data-refl="3625" id="domain/errors.AnalysisCancelledError"><a href="classes/domain_errors.AnalysisCancelledError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisCancelledError</a></li>
<li data-refl="3635" id="domain/errors.AnalysisTimeoutError"><a href="classes/domain_errors.AnalysisTimeoutError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisTimeoutError</a></li>
<li data-refl="3647" id="domain/errors.ProviderSelectionError"><a href="classes/domain_errors.ProviderSelectionError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>ProviderSelectionError</a></li>
<li data-refl="3657" id="domain/errors.ProviderAdapterError"><a href="classes/domain_errors.ProviderAdapterError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>ProviderAdapterError</a></li>
<li data-refl="3671" id="domain/errors.BrowserObservationError"><a href="classes/domain_errors.BrowserObservationError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>BrowserObservationError</a></li>
<li data-refl="3684" id="domain/errors.ArtifactOperationError"><a href="classes/domain_errors.ArtifactOperationError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>ArtifactOperationError</a></li>
<li data-refl="3708" id="domain/errors.EvidenceIntegrityError"><a href="classes/domain_errors.EvidenceIntegrityError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>EvidenceIntegrityError</a></li>
<li data-refl="3720" id="domain/errors.EvidenceLimitError"><a href="classes/domain_errors.EvidenceLimitError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>EvidenceLimitError</a></li>
<li data-refl="3732" id="domain/errors.EvidenceFileError"><a href="classes/domain_errors.EvidenceFileError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>EvidenceFileError</a></li>
<li data-refl="3745" id="domain/errors.InvestigationWorkspaceError"><a href="classes/domain_errors.InvestigationWorkspaceError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>InvestigationWorkspaceError</a></li>
<li data-refl="3758" id="domain/errors.UnknownRegistryError"><a href="classes/domain_errors.UnknownRegistryError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>UnknownRegistryError</a></li>
<li data-refl="3834" id="domain/errors.ConfigurationError"><a href="classes/domain_errors.ConfigurationError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>ConfigurationError</a></li>
<li data-refl="3846" id="domain/errors.NoBinaryOpenError"><a href="classes/domain_errors.NoBinaryOpenError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>NoBinaryOpenError</a></li>
<li data-refl="3854" id="domain/errors.BinaryTargetError"><a href="classes/domain_errors.BinaryTargetError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>BinaryTargetError</a></li>
<li data-refl="3879" id="domain/errors.PermissionRequiredError"><a href="classes/domain_errors.PermissionRequiredError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>PermissionRequiredError</a></li>
<li data-refl="37821" id="application/ProcessCaptureError.ProcessCaptureError"><a href="classes/application_ProcessCaptureError.ProcessCaptureError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>ProcessCaptureError</a></li></ul></li></ul>
<li data-refl="3974" id="domain/errors.HopperTimeoutError"><a href="classes/domain_errors.HopperTimeoutError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperTimeoutError</a></li>
<li data-refl="3984" id="domain/errors.HopperCancelledError"><a href="classes/domain_errors.HopperCancelledError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperCancelledError</a></li>
<li data-refl="3992" id="domain/errors.HopperProtocolError"><a href="classes/domain_errors.HopperProtocolError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperProtocolError</a></li>
<li data-refl="4005" id="domain/errors.HopperRemoteError"><a href="classes/domain_errors.HopperRemoteError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperRemoteError</a></li>
<li data-refl="4019" id="domain/errors.HopperProcessError"><a href="classes/domain_errors.HopperProcessError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperProcessError</a></li>
<li data-refl="4030" id="domain/errors.HopperStartError"><a href="classes/domain_errors.HopperStartError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperStartError</a></li></ul></li>
<li data-refl="3780" id="domain/errors.AnalysisProtocolError"><a href="classes/domain_errors.AnalysisProtocolError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisProtocolError</a></li>
<li data-refl="3792" id="domain/errors.AnalysisInputError"><a href="classes/domain_errors.AnalysisInputError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisInputError</a></li>
<li data-refl="3803" id="domain/errors.AnalysisOutputError"><a href="classes/domain_errors.AnalysisOutputError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisOutputError</a></li>
<li data-refl="3816" id="domain/errors.AnalysisCapabilityUnavailableError"><a href="classes/domain_errors.AnalysisCapabilityUnavailableError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisCapabilityUnavailableError</a></li>
<li data-refl="3830" id="domain/errors.AnalysisCancelledError"><a href="classes/domain_errors.AnalysisCancelledError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisCancelledError</a></li>
<li data-refl="3840" id="domain/errors.AnalysisTimeoutError"><a href="classes/domain_errors.AnalysisTimeoutError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>AnalysisTimeoutError</a></li>
<li data-refl="3852" id="domain/errors.ProviderSelectionError"><a href="classes/domain_errors.ProviderSelectionError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>ProviderSelectionError</a></li>
<li data-refl="3862" id="domain/errors.ProviderAdapterError"><a href="classes/domain_errors.ProviderAdapterError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>ProviderAdapterError</a></li>
<li data-refl="3876" id="domain/errors.BrowserObservationError"><a href="classes/domain_errors.BrowserObservationError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>BrowserObservationError</a></li>
<li data-refl="3889" id="domain/errors.ArtifactOperationError"><a href="classes/domain_errors.ArtifactOperationError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>ArtifactOperationError</a></li>
<li data-refl="3913" id="domain/errors.EvidenceIntegrityError"><a href="classes/domain_errors.EvidenceIntegrityError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>EvidenceIntegrityError</a></li>
<li data-refl="3925" id="domain/errors.EvidenceLimitError"><a href="classes/domain_errors.EvidenceLimitError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>EvidenceLimitError</a></li>
<li data-refl="3937" id="domain/errors.EvidenceFileError"><a href="classes/domain_errors.EvidenceFileError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>EvidenceFileError</a></li>
<li data-refl="3950" id="domain/errors.InvestigationWorkspaceError"><a href="classes/domain_errors.InvestigationWorkspaceError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>InvestigationWorkspaceError</a></li>
<li data-refl="3963" id="domain/errors.UnknownRegistryError"><a href="classes/domain_errors.UnknownRegistryError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>UnknownRegistryError</a></li>
<li data-refl="4039" id="domain/errors.ConfigurationError"><a href="classes/domain_errors.ConfigurationError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>ConfigurationError</a></li>
<li data-refl="4051" id="domain/errors.NoBinaryOpenError"><a href="classes/domain_errors.NoBinaryOpenError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>NoBinaryOpenError</a></li>
<li data-refl="4059" id="domain/errors.BinaryTargetError"><a href="classes/domain_errors.BinaryTargetError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>BinaryTargetError</a></li>
<li data-refl="4084" id="domain/errors.PermissionRequiredError"><a href="classes/domain_errors.PermissionRequiredError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>PermissionRequiredError</a></li>
<li data-refl="38369" id="application/ProcessCaptureError.ProcessCaptureError"><a href="classes/application_ProcessCaptureError.ProcessCaptureError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>ProcessCaptureError</a></li></ul></li></ul>
<ul class="tsd-full-hierarchy">
<li data-refl="24321" id="application/AnalysisProvider.AnalysisOperationPort"><a href="interfaces/application_AnalysisProvider.AnalysisOperationPort.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>AnalysisOperationPort</a>
<li data-refl="24869" id="application/AnalysisProvider.AnalysisOperationPort"><a href="interfaces/application_AnalysisProvider.AnalysisOperationPort.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>AnalysisOperationPort</a>
<ul>
<li data-refl="24327" id="application/AnalysisProvider.AnalysisClient"><a href="interfaces/application_AnalysisProvider.AnalysisClient.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>AnalysisClient</a></li>
<li data-refl="28169" id="application/BinarySessionPort.BinarySessionPort"><a href="interfaces/application_BinarySessionPort.BinarySessionPort.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>BinarySessionPort</a>
<li data-refl="24875" id="application/AnalysisProvider.AnalysisClient"><a href="interfaces/application_AnalysisProvider.AnalysisClient.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>AnalysisClient</a></li>
<li data-refl="28717" id="application/BinarySessionPort.BinarySessionPort"><a href="interfaces/application_BinarySessionPort.BinarySessionPort.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>BinarySessionPort</a>
<ul>
<li data-refl="26169" id="application/BinarySession.BinarySession"><a href="classes/application_BinarySession.BinarySession.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>BinarySession</a></li></ul></li></ul></li></ul>
<li data-refl="26717" id="application/BinarySession.BinarySession"><a href="classes/application_BinarySession.BinarySession.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>BinarySession</a></li></ul></li></ul></li></ul>
<ul class="tsd-full-hierarchy">
<li data-refl="24354" id="application/AnalysisProvider.AnalysisProvider"><a href="interfaces/application_AnalysisProvider.AnalysisProvider.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>AnalysisProvider</a>
<li data-refl="24902" id="application/AnalysisProvider.AnalysisProvider"><a href="interfaces/application_AnalysisProvider.AnalysisProvider.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>AnalysisProvider</a>
<ul>
<li data-refl="33021" id="application/CompositeProvider.CompositeProvider"><a href="classes/application_CompositeProvider.CompositeProvider.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>CompositeProvider</a></li>
<li data-refl="20840" id="hopper/HopperProvider.HopperProvider"><a href="classes/hopper_HopperProvider.HopperProvider.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperProvider</a></li></ul></li></ul>
<li data-refl="33569" id="application/CompositeProvider.CompositeProvider"><a href="classes/application_CompositeProvider.CompositeProvider.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>CompositeProvider</a></li>
<li data-refl="21386" id="hopper/HopperProvider.HopperProvider"><a href="classes/hopper_HopperProvider.HopperProvider.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperProvider</a></li></ul></li></ul>
<ul class="tsd-full-hierarchy">
<li data-refl="20714" id="hopper/BridgeLauncher.BridgeLauncher"><a href="interfaces/hopper_BridgeLauncher.BridgeLauncher.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>BridgeLauncher</a>
<li data-refl="21258" id="hopper/BridgeLauncher.BridgeLauncher"><a href="interfaces/hopper_BridgeLauncher.BridgeLauncher.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>BridgeLauncher</a>
<ul>
<li data-refl="20728" id="hopper/BridgeLauncher.HopperApplicationLauncher"><a href="classes/hopper_BridgeLauncher.HopperApplicationLauncher.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperApplicationLauncher</a></li></ul></li></ul>
<li data-refl="21272" id="hopper/BridgeLauncher.HopperApplicationLauncher"><a href="classes/hopper_BridgeLauncher.HopperApplicationLauncher.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>HopperApplicationLauncher</a></li></ul></li></ul>
<ul class="tsd-full-hierarchy">
<li data-refl="29977" id="application/BrowserObservationPort.BrowserObservationPort"><a href="interfaces/application_BrowserObservationPort.BrowserObservationPort.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>BrowserObservationPort</a>
<li data-refl="30525" id="application/BrowserObservationPort.BrowserObservationPort"><a href="interfaces/application_BrowserObservationPort.BrowserObservationPort.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>BrowserObservationPort</a>
<ul>
<li data-refl="20883" id="browser/CdpBrowserProvider.CdpBrowserProvider"><a href="classes/browser_CdpBrowserProvider.CdpBrowserProvider.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>CdpBrowserProvider</a></li></ul></li></ul>
<li data-refl="21430" id="browser/CdpBrowserProvider.CdpBrowserProvider"><a href="classes/browser_CdpBrowserProvider.CdpBrowserProvider.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>CdpBrowserProvider</a></li></ul></li></ul>
<ul class="tsd-full-hierarchy">
<li data-refl="34905" id="application/ElectronObservationPort.ElectronObservationPort"><a href="interfaces/application_ElectronObservationPort.ElectronObservationPort.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>ElectronObservationPort</a>
<li data-refl="35453" id="application/ElectronObservationPort.ElectronObservationPort"><a href="interfaces/application_ElectronObservationPort.ElectronObservationPort.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>ElectronObservationPort</a>
<ul>
<li data-refl="23356" id="browser/CdpElectronProvider.CdpElectronProvider"><a href="classes/browser_CdpElectronProvider.CdpElectronProvider.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>CdpElectronProvider</a></li></ul></li></ul>
<li data-refl="23904" id="browser/CdpElectronProvider.CdpElectronProvider"><a href="classes/browser_CdpElectronProvider.CdpElectronProvider.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>CdpElectronProvider</a></li></ul></li></ul>
<ul class="tsd-full-hierarchy">
<li data-refl="7995" id="domain/permissionPolicy.PermissionScope"><a href="interfaces/domain_permissionPolicy.PermissionScope.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>PermissionScope</a>
<li data-refl="8539" id="domain/permissionPolicy.PermissionScope"><a href="interfaces/domain_permissionPolicy.PermissionScope.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>PermissionScope</a>
<ul>
<li data-refl="8003" id="domain/permissionPolicy.PermissionRequest"><a href="interfaces/domain_permissionPolicy.PermissionRequest.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>PermissionRequest</a></li>
<li data-refl="8013" id="domain/permissionPolicy.PermissionGrant"><a href="interfaces/domain_permissionPolicy.PermissionGrant.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>PermissionGrant</a></li></ul></li></ul>
<li data-refl="8547" id="domain/permissionPolicy.PermissionRequest"><a href="interfaces/domain_permissionPolicy.PermissionRequest.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>PermissionRequest</a></li>
<li data-refl="8557" id="domain/permissionPolicy.PermissionGrant"><a href="interfaces/domain_permissionPolicy.PermissionGrant.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>PermissionGrant</a></li></ul></li></ul>
<ul class="tsd-full-hierarchy">
<li data-refl="12977" id="domain/webInventory.WebInventoryResourceInput"><a href="interfaces/domain_webInventory.WebInventoryResourceInput.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>WebInventoryResourceInput</a>
<li data-refl="13521" id="domain/webInventory.WebInventoryResourceInput"><a href="interfaces/domain_webInventory.WebInventoryResourceInput.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>WebInventoryResourceInput</a>
<ul>
<li data-refl="12990" id="domain/webInventory.StableWebResource"><a href="interfaces/domain_webInventory.StableWebResource.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>StableWebResource</a></li></ul></li></ul></div>
<li data-refl="13534" id="domain/webInventory.StableWebResource"><a href="interfaces/domain_webInventory.StableWebResource.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>StableWebResource</a></li></ul></li></ul></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">

View File

@ -15,7 +15,7 @@
<div class="tsd-comment tsd-typography"><p>Provider session bound to exactly one parsed artifact.</p>
</div></section>
<div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">AnalysisClient</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-call-signature" href="#close-1">close</a><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-call-signature" href="#execute-1">execute</a><span class="tsd-signature-symbol">(</span><br/>        <span class="tsd-kind-parameter">operation</span><span class="tsd-signature-symbol">:</span> <a href="../types/application_AnalysisProvider.AnalysisOperation.html" class="tsd-signature-type tsd-kind-type-alias">AnalysisOperation</a><span class="tsd-signature-symbol">,</span><br/>        <span class="tsd-kind-parameter">parameters</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Readonly</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <a href="../types/domain_jsonValue.JsonValue.html" class="tsd-signature-type tsd-kind-type-alias">JsonValue</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>        <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?:</span> <a href="application_AnalysisProvider.ExecutionOptions.html" class="tsd-signature-type tsd-kind-interface">ExecutionOptions</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../types/domain_result.Result.html" class="tsd-signature-type tsd-kind-type-alias">Result</a><span class="tsd-signature-symbol">&lt;</span><a href="application_AnalysisProvider.AnalysisExecution.html" class="tsd-signature-type tsd-kind-interface">AnalysisExecution</a><span class="tsd-signature-symbol">,</span> <a href="../classes/domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div>
<section class="tsd-panel tsd-hierarchy" data-refl="24327">
<section class="tsd-panel tsd-hierarchy" data-refl="24875">
<h4>Hierarchy (<a href="../hierarchy.html#application/AnalysisProvider.AnalysisClient">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="application_AnalysisProvider.AnalysisOperationPort.html" class="tsd-signature-type tsd-kind-interface">AnalysisOperationPort</a>

View File

@ -15,7 +15,7 @@
<div class="tsd-comment tsd-typography"><p>Provider-neutral application capability for one analysis operation.</p>
</div></section>
<div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">AnalysisOperationPort</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-call-signature" href="#execute-1">execute</a><span class="tsd-signature-symbol">(</span><br/>        <span class="tsd-kind-parameter">operation</span><span class="tsd-signature-symbol">:</span> <a href="../types/application_AnalysisProvider.AnalysisOperation.html" class="tsd-signature-type tsd-kind-type-alias">AnalysisOperation</a><span class="tsd-signature-symbol">,</span><br/>        <span class="tsd-kind-parameter">parameters</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Readonly</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <a href="../types/domain_jsonValue.JsonValue.html" class="tsd-signature-type tsd-kind-type-alias">JsonValue</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/>        <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?:</span> <a href="application_AnalysisProvider.ExecutionOptions.html" class="tsd-signature-type tsd-kind-interface">ExecutionOptions</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../types/domain_result.Result.html" class="tsd-signature-type tsd-kind-type-alias">Result</a><span class="tsd-signature-symbol">&lt;</span><a href="application_AnalysisProvider.AnalysisExecution.html" class="tsd-signature-type tsd-kind-interface">AnalysisExecution</a><span class="tsd-signature-symbol">,</span> <a href="../classes/domain_errors.AnalysisError.html" class="tsd-signature-type tsd-kind-class">AnalysisError</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div>
<section class="tsd-panel tsd-hierarchy" data-refl="24321">
<section class="tsd-panel tsd-hierarchy" data-refl="24869">
<h4>Hierarchy (<a href="../hierarchy.html#application/AnalysisProvider.AnalysisOperationPort">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><span class="tsd-hierarchy-target">AnalysisOperationPort</span>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -15,7 +15,7 @@
<div class="tsd-comment tsd-typography"><p>Authority issued beneath the administrator ceiling.</p>
</div></section>
<div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">PermissionGrant</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#capability">capability</a><span class="tsd-signature-symbol">:</span> <a href="../types/domain_permissionPolicy.PermissionCapability.html" class="tsd-signature-type tsd-kind-type-alias">PermissionCapability</a><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#environment_names">environment_names</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#executables">executables</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#expires_at">expires_at</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#grant_id">grant_id</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#lifetime">lifetime</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">&quot;once&quot;</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;session&quot;</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;project&quot;</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">&quot;administrator&quot;</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#mount">mount</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#network">network</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">PermissionNetwork</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#operation_identity">operation_identity</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#origins">origins</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#roots">roots</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div>
<section class="tsd-panel tsd-hierarchy" data-refl="8013">
<section class="tsd-panel tsd-hierarchy" data-refl="8557">
<h4>Hierarchy (<a href="../hierarchy.html#domain/permissionPolicy.PermissionGrant">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_permissionPolicy.PermissionScope.html" class="tsd-signature-type tsd-kind-interface">PermissionScope</a>

View File

@ -15,7 +15,7 @@
<div class="tsd-comment tsd-typography"><p>A request identity associates one-shot grants with exactly one operation.</p>
</div></section>
<div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">PermissionRequest</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#capability">capability</a><span class="tsd-signature-symbol">:</span> <a href="../types/domain_permissionPolicy.PermissionCapability.html" class="tsd-signature-type tsd-kind-type-alias">PermissionCapability</a><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#environment_names">environment_names</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#executables">executables</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#mount">mount</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#network">network</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">PermissionNetwork</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#operation_identity">operation_identity</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#origins">origins</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#roots">roots</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div>
<section class="tsd-panel tsd-hierarchy" data-refl="8003">
<section class="tsd-panel tsd-hierarchy" data-refl="8547">
<h4>Hierarchy (<a href="../hierarchy.html#domain/permissionPolicy.PermissionRequest">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_permissionPolicy.PermissionScope.html" class="tsd-signature-type tsd-kind-interface">PermissionScope</a>

View File

@ -15,7 +15,7 @@
<div class="tsd-comment tsd-typography"><p>Exact normalized scope requested by one local operation.</p>
</div></section>
<div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">PermissionScope</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#capability">capability</a><span class="tsd-signature-symbol">:</span> <a href="../types/domain_permissionPolicy.PermissionCapability.html" class="tsd-signature-type tsd-kind-type-alias">PermissionCapability</a><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#environment_names">environment_names</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#executables">executables</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#mount">mount</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#network">network</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">PermissionNetwork</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#origins">origins</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#roots">roots</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">readonly</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div>
<section class="tsd-panel tsd-hierarchy" data-refl="7995">
<section class="tsd-panel tsd-hierarchy" data-refl="8539">
<h4>Hierarchy (<a href="../hierarchy.html#domain/permissionPolicy.PermissionScope">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><span class="tsd-hierarchy-target">PermissionScope</span>

View File

@ -12,7 +12,7 @@
<li><a href="" aria-current="page">StableWebResource</a></li></ul>
<h1>Interface StableWebResource</h1></div>
<div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">StableWebResource</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#content_size">content_size</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#mime_type">mime_type</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#origin">origin</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#resource_key">resource_key</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#type">type</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#url">url</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div>
<section class="tsd-panel tsd-hierarchy" data-refl="12990">
<section class="tsd-panel tsd-hierarchy" data-refl="13534">
<h4>Hierarchy (<a href="../hierarchy.html#domain/webInventory.StableWebResource">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><a href="domain_webInventory.WebInventoryResourceInput.html" class="tsd-signature-type tsd-kind-interface">WebInventoryResourceInput</a>

View File

@ -12,7 +12,7 @@
<li><a href="" aria-current="page">WebInventoryResourceInput</a></li></ul>
<h1>Interface WebInventoryResourceInput</h1></div>
<div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">WebInventoryResourceInput</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#content_size">content_size</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#mime_type">mime_type</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#origin">origin</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#type">type</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#url">url</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div>
<section class="tsd-panel tsd-hierarchy" data-refl="12977">
<section class="tsd-panel tsd-hierarchy" data-refl="13521">
<h4>Hierarchy (<a href="../hierarchy.html#domain/webInventory.WebInventoryResourceInput">View Summary</a>)</h4>
<ul class="tsd-hierarchy">
<li class="tsd-hierarchy-item"><span class="tsd-hierarchy-target">WebInventoryResourceInput</span>

View File

@ -12,6 +12,8 @@
<h1>Module application/SupportedClients</h1></div>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Interfaces"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="interfaces">Interfaces<a href="#interfaces" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="setupclient"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="../assets/icons.svg#icon-256"></use></svg><a href="../interfaces/application_SupportedClients.SetupClient.html">SetupClient</a><a href="#setupclient" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="variables">Variables<a href="#variables" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="supported_client_definitions"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/application_SupportedClients.SUPPORTED_CLIENT_DEFINITIONS.html">SUPPORTED_CLIENT_DEFINITIONS</a><a href="#supported_client_definitions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Functions"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="functions">Functions<a href="#functions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="supportedclients"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/application_SupportedClients.supportedClients.html">supportedClients</a><a href="#supportedclients" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div>
<div class="col-sidebar">
@ -30,6 +32,8 @@
<div class="tsd-accordion-details">
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Interfaces"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Interfaces</summary>
<div><a href="#setupclient"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="../assets/icons.svg#icon-256"></use></svg><span>Setup<wbr/>Client</span></a></div></details>
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Variables</summary>
<div><a href="#supported_client_definitions"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>SUPPORTED_<wbr/>CLIENT_<wbr/>DEFINITIONS</span></a></div></details>
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Functions"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Functions</summary>
<div><a href="#supportedclients"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>supported<wbr/>Clients</span></a></div></details></div></details></div>
<div class="site-menu">

View File

@ -11,7 +11,9 @@
<li><a href="" aria-current="page">browser/CdpBrowserProvider</a></li></ul>
<h1>Module browser/CdpBrowserProvider</h1></div>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Classes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="classes">Classes<a href="#classes" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="cdpbrowserprovider"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="../assets/icons.svg#icon-128"></use></svg><a href="../classes/browser_CdpBrowserProvider.CdpBrowserProvider.html">CdpBrowserProvider</a><a href="#cdpbrowserprovider" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div>
<h2 class="tsd-anchor-link" id="classes">Classes<a href="#classes" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="cdpbrowserprovider"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="../assets/icons.svg#icon-128"></use></svg><a href="../classes/browser_CdpBrowserProvider.CdpBrowserProvider.html">CdpBrowserProvider</a><a href="#cdpbrowserprovider" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="variables">Variables<a href="#variables" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="cdp_browser_provider_identity"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/browser_CdpBrowserProvider.CDP_BROWSER_PROVIDER_IDENTITY.html">CDP_BROWSER_PROVIDER_IDENTITY</a><a href="#cdp_browser_provider_identity" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">
@ -27,7 +29,9 @@
<h3>On This Page</h3></summary>
<div class="tsd-accordion-details">
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Classes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Classes</summary>
<div><a href="#cdpbrowserprovider"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="../assets/icons.svg#icon-128"></use></svg><span>Cdp<wbr/>Browser<wbr/>Provider</span></a></div></details></div></details></div>
<div><a href="#cdpbrowserprovider"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="../assets/icons.svg#icon-128"></use></svg><span>Cdp<wbr/>Browser<wbr/>Provider</span></a></div></details>
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Variables</summary>
<div><a href="#cdp_browser_provider_identity"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>CDP_<wbr/>BROWSER_<wbr/>PROVIDER_<wbr/>IDENTITY</span></a></div></details></div></details></div>
<div class="site-menu">
<nav class="tsd-navigation"><a href="../index.html">rea-agents - v1.6.0</a>
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">

View File

@ -11,7 +11,9 @@
<li><a href="" aria-current="page">browser/CdpElectronProvider</a></li></ul>
<h1>Module browser/CdpElectronProvider</h1></div>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Classes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="classes">Classes<a href="#classes" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="cdpelectronprovider"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="../assets/icons.svg#icon-128"></use></svg><a href="../classes/browser_CdpElectronProvider.CdpElectronProvider.html">CdpElectronProvider</a><a href="#cdpelectronprovider" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div>
<h2 class="tsd-anchor-link" id="classes">Classes<a href="#classes" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="cdpelectronprovider"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="../assets/icons.svg#icon-128"></use></svg><a href="../classes/browser_CdpElectronProvider.CdpElectronProvider.html">CdpElectronProvider</a><a href="#cdpelectronprovider" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="variables">Variables<a href="#variables" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="cdp_electron_provider_identity"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/browser_CdpElectronProvider.CDP_ELECTRON_PROVIDER_IDENTITY.html">CDP_ELECTRON_PROVIDER_IDENTITY</a><a href="#cdp_electron_provider_identity" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">
@ -27,7 +29,9 @@
<h3>On This Page</h3></summary>
<div class="tsd-accordion-details">
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Classes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Classes</summary>
<div><a href="#cdpelectronprovider"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="../assets/icons.svg#icon-128"></use></svg><span>Cdp<wbr/>Electron<wbr/>Provider</span></a></div></details></div></details></div>
<div><a href="#cdpelectronprovider"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="../assets/icons.svg#icon-128"></use></svg><span>Cdp<wbr/>Electron<wbr/>Provider</span></a></div></details>
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Variables</summary>
<div><a href="#cdp_electron_provider_identity"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>CDP_<wbr/>ELECTRON_<wbr/>PROVIDER_<wbr/>IDENTITY</span></a></div></details></div></details></div>
<div class="site-menu">
<nav class="tsd-navigation"><a href="../index.html">rea-agents - v1.6.0</a>
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">

View File

@ -12,6 +12,8 @@
<h1>Module domain/analysisSnapshot</h1></div>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Type Aliases"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="type-aliases">Type Aliases<a href="#type-aliases" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="analysissnapshot"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><a href="../types/domain_analysisSnapshot.AnalysisSnapshot.html">AnalysisSnapshot</a><a href="#analysissnapshot" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="analysissnapshotentry"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><a href="../types/domain_analysisSnapshot.AnalysisSnapshotEntry.html">AnalysisSnapshotEntry</a><a href="#analysissnapshotentry" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="analysissnapshottarget"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><a href="../types/domain_analysisSnapshot.AnalysisSnapshotTarget.html">AnalysisSnapshotTarget</a><a href="#analysissnapshottarget" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="variables">Variables<a href="#variables" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="analysissnapshotschema"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/domain_analysisSnapshot.analysisSnapshotSchema.html">analysisSnapshotSchema</a><a href="#analysissnapshotschema" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Functions"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="functions">Functions<a href="#functions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="analysisqueryid"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_analysisSnapshot.analysisQueryId.html">analysisQueryId</a><a href="#analysisqueryid" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="createanalysissnapshotentry"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_analysisSnapshot.createAnalysisSnapshotEntry.html">createAnalysisSnapshotEntry</a><a href="#createanalysissnapshotentry" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="parseanalysissnapshot"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_analysisSnapshot.parseAnalysisSnapshot.html">parseAnalysisSnapshot</a><a href="#parseanalysissnapshot" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="serializeanalysissnapshot"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_analysisSnapshot.serializeAnalysisSnapshot.html">serializeAnalysisSnapshot</a><a href="#serializeanalysissnapshot" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="snapshotevidenceforquery"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_analysisSnapshot.snapshotEvidenceForQuery.html">snapshotEvidenceForQuery</a><a href="#snapshotevidenceforquery" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="snapshotmatchestarget"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_analysisSnapshot.snapshotMatchesTarget.html">snapshotMatchesTarget</a><a href="#snapshotmatchestarget" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="snapshottarget"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_analysisSnapshot.snapshotTarget.html">snapshotTarget</a><a href="#snapshottarget" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div>
<div class="col-sidebar">
@ -30,6 +32,8 @@
<div class="tsd-accordion-details">
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Type Aliases"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Type Aliases</summary>
<div><a href="#analysissnapshot"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Analysis<wbr/>Snapshot</span></a><a href="#analysissnapshotentry"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Analysis<wbr/>Snapshot<wbr/>Entry</span></a><a href="#analysissnapshottarget"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Analysis<wbr/>Snapshot<wbr/>Target</span></a></div></details>
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Variables</summary>
<div><a href="#analysissnapshotschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>analysis<wbr/>Snapshot<wbr/>Schema</span></a></div></details>
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Functions"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Functions</summary>
<div><a href="#analysisqueryid"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>analysis<wbr/>Query<wbr/>Id</span></a><a href="#createanalysissnapshotentry"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>create<wbr/>Analysis<wbr/>Snapshot<wbr/>Entry</span></a><a href="#parseanalysissnapshot"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>parse<wbr/>Analysis<wbr/>Snapshot</span></a><a href="#serializeanalysissnapshot"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>serialize<wbr/>Analysis<wbr/>Snapshot</span></a><a href="#snapshotevidenceforquery"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>snapshot<wbr/>Evidence<wbr/>For<wbr/>Query</span></a><a href="#snapshotmatchestarget"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>snapshot<wbr/>Matches<wbr/>Target</span></a><a href="#snapshottarget"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>snapshot<wbr/>Target</span></a></div></details></div></details></div>
<div class="site-menu">

View File

@ -13,7 +13,7 @@
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Type Aliases"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="type-aliases">Type Aliases<a href="#type-aliases" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="crossversioninvestigationinput"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><a href="../types/domain_investigationWorkspace.CrossVersionInvestigationInput.html">CrossVersionInvestigationInput</a><a href="#crossversioninvestigationinput" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="investigationrun"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><a href="../types/domain_investigationWorkspace.InvestigationRun.html">InvestigationRun</a><a href="#investigationrun" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="investigationrunoptions"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><a href="../types/domain_investigationWorkspace.InvestigationRunOptions.html">InvestigationRunOptions</a><a href="#investigationrunoptions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="investigationruntarget"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><a href="../types/domain_investigationWorkspace.InvestigationRunTarget.html">InvestigationRunTarget</a><a href="#investigationruntarget" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="investigationworkspace"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><a href="../types/domain_investigationWorkspace.InvestigationWorkspace.html">InvestigationWorkspace</a><a href="#investigationworkspace" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="variables">Variables<a href="#variables" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="crossversioninvestigationinputschema"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/domain_investigationWorkspace.crossVersionInvestigationInputSchema.html">crossVersionInvestigationInputSchema</a><a href="#crossversioninvestigationinputschema" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="investigationrunschema"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/domain_investigationWorkspace.investigationRunSchema.html">investigationRunSchema</a><a href="#investigationrunschema" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="investigationrunsummaryschema"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/domain_investigationWorkspace.investigationRunSummarySchema.html">investigationRunSummarySchema</a><a href="#investigationrunsummaryschema" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details>
<h2 class="tsd-anchor-link" id="variables">Variables<a href="#variables" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="crossversioninvestigationinputschema"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/domain_investigationWorkspace.crossVersionInvestigationInputSchema.html">crossVersionInvestigationInputSchema</a><a href="#crossversioninvestigationinputschema" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="investigationrunschema"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/domain_investigationWorkspace.investigationRunSchema.html">investigationRunSchema</a><a href="#investigationrunschema" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="investigationrunsummaryschema"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/domain_investigationWorkspace.investigationRunSummarySchema.html">investigationRunSummarySchema</a><a href="#investigationrunsummaryschema" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="investigationworkspaceschema"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/domain_investigationWorkspace.investigationWorkspaceSchema.html">investigationWorkspaceSchema</a><a href="#investigationworkspaceschema" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Functions"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="functions">Functions<a href="#functions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="createinvestigationrunidentity"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_investigationWorkspace.createInvestigationRunIdentity.html">createInvestigationRunIdentity</a><a href="#createinvestigationrunidentity" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="createinvestigationworkspace"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_investigationWorkspace.createInvestigationWorkspace.html">createInvestigationWorkspace</a><a href="#createinvestigationworkspace" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="createlegacyinvestigationrunidentity"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_investigationWorkspace.createLegacyInvestigationRunIdentity.html">createLegacyInvestigationRunIdentity</a><a href="#createlegacyinvestigationrunidentity" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="parseinvestigationworkspace"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_investigationWorkspace.parseInvestigationWorkspace.html">parseInvestigationWorkspace</a><a href="#parseinvestigationworkspace" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="reviseinvestigationworkspace"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_investigationWorkspace.reviseInvestigationWorkspace.html">reviseInvestigationWorkspace</a><a href="#reviseinvestigationworkspace" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="serializeinvestigationworkspace"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><a href="../functions/domain_investigationWorkspace.serializeInvestigationWorkspace.html">serializeInvestigationWorkspace</a><a href="#serializeinvestigationworkspace" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div>
<div class="col-sidebar">
@ -33,7 +33,7 @@
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Type Aliases"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Type Aliases</summary>
<div><a href="#crossversioninvestigationinput"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Cross<wbr/>Version<wbr/>Investigation<wbr/>Input</span></a><a href="#investigationrun"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Investigation<wbr/>Run</span></a><a href="#investigationrunoptions"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Investigation<wbr/>Run<wbr/>Options</span></a><a href="#investigationruntarget"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Investigation<wbr/>Run<wbr/>Target</span></a><a href="#investigationworkspace"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Investigation<wbr/>Workspace</span></a></div></details>
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Variables</summary>
<div><a href="#crossversioninvestigationinputschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>cross<wbr/>Version<wbr/>Investigation<wbr/>Input<wbr/>Schema</span></a><a href="#investigationrunschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>investigation<wbr/>Run<wbr/>Schema</span></a><a href="#investigationrunsummaryschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>investigation<wbr/>Run<wbr/>Summary<wbr/>Schema</span></a></div></details>
<div><a href="#crossversioninvestigationinputschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>cross<wbr/>Version<wbr/>Investigation<wbr/>Input<wbr/>Schema</span></a><a href="#investigationrunschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>investigation<wbr/>Run<wbr/>Schema</span></a><a href="#investigationrunsummaryschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>investigation<wbr/>Run<wbr/>Summary<wbr/>Schema</span></a><a href="#investigationworkspaceschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>investigation<wbr/>Workspace<wbr/>Schema</span></a></div></details>
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Functions"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Functions</summary>
<div><a href="#createinvestigationrunidentity"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>create<wbr/>Investigation<wbr/>Run<wbr/>Identity</span></a><a href="#createinvestigationworkspace"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>create<wbr/>Investigation<wbr/>Workspace</span></a><a href="#createlegacyinvestigationrunidentity"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>create<wbr/>Legacy<wbr/>Investigation<wbr/>Run<wbr/>Identity</span></a><a href="#parseinvestigationworkspace"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>parse<wbr/>Investigation<wbr/>Workspace</span></a><a href="#reviseinvestigationworkspace"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>revise<wbr/>Investigation<wbr/>Workspace</span></a><a href="#serializeinvestigationworkspace"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Function"><use href="../assets/icons.svg#icon-64"></use></svg><span>serialize<wbr/>Investigation<wbr/>Workspace</span></a></div></details></div></details></div>
<div class="site-menu">

View File

@ -11,7 +11,9 @@
<li><a href="" aria-current="page">hopper/HopperProvider</a></li></ul>
<h1>Module hopper/HopperProvider</h1></div>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Classes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="classes">Classes<a href="#classes" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="hopperprovider"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="../assets/icons.svg#icon-128"></use></svg><a href="../classes/hopper_HopperProvider.HopperProvider.html">HopperProvider</a><a href="#hopperprovider" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div>
<h2 class="tsd-anchor-link" id="classes">Classes<a href="#classes" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="hopperprovider"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="../assets/icons.svg#icon-128"></use></svg><a href="../classes/hopper_HopperProvider.HopperProvider.html">HopperProvider</a><a href="#hopperprovider" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details>
<details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h2 class="tsd-anchor-link" id="variables">Variables<a href="#variables" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2></summary><dl class="tsd-member-summaries"><dt class="tsd-member-summary" id="hopper_provider_identity"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/hopper_HopperProvider.HOPPER_PROVIDER_IDENTITY.html">HOPPER_PROVIDER_IDENTITY</a><a href="#hopper_provider_identity" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd><dt class="tsd-member-summary" id="hopper_provider_tool_contracts"><span class="tsd-member-summary-name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><a href="../variables/hopper_HopperProvider.HOPPER_PROVIDER_TOOL_CONTRACTS.html">HOPPER_PROVIDER_TOOL_CONTRACTS</a><a href="#hopper_provider_tool_contracts" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></span></dt><dd class="tsd-member-summary"></dd></dl></details></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">
@ -27,7 +29,9 @@
<h3>On This Page</h3></summary>
<div class="tsd-accordion-details">
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Classes"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Classes</summary>
<div><a href="#hopperprovider"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="../assets/icons.svg#icon-128"></use></svg><span>Hopper<wbr/>Provider</span></a></div></details></div></details></div>
<div><a href="#hopperprovider"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="../assets/icons.svg#icon-128"></use></svg><span>Hopper<wbr/>Provider</span></a></div></details>
<details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Variables"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Variables</summary>
<div><a href="#hopper_provider_identity"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>HOPPER_<wbr/>PROVIDER_<wbr/>IDENTITY</span></a><a href="#hopper_provider_tool_contracts"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>HOPPER_<wbr/>PROVIDER_<wbr/>TOOL_<wbr/>CONTRACTS</span></a></div></details></div></details></div>
<div class="site-menu">
<nav class="tsd-navigation"><a href="../index.html">rea-agents - v1.6.0</a>
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">

View File

@ -11,7 +11,7 @@
<li><a href="../modules/domain_analysisSnapshot.html">domain/analysisSnapshot</a></li>
<li><a href="" aria-current="page">AnalysisSnapshot</a></li></ul>
<h1>Type Alias AnalysisSnapshot</h1></div>
<div class="tsd-signature"><span class="tsd-kind-type-alias">AnalysisSnapshot</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">z.infer</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">typeof</span> <span class="tsd-signature-type">analysisSnapshotSchema</span><span class="tsd-signature-symbol">&gt;</span></div><aside class="tsd-sources">
<div class="tsd-signature"><span class="tsd-kind-type-alias">AnalysisSnapshot</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">z.infer</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">typeof</span> <a href="../variables/domain_analysisSnapshot.analysisSnapshotSchema.html" class="tsd-signature-type tsd-kind-variable">analysisSnapshotSchema</a><span class="tsd-signature-symbol">&gt;</span></div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/analysisSnapshot.ts#L86">src/domain/analysisSnapshot.ts:86</a></li></ul></aside></div>
<div class="col-sidebar">

View File

@ -11,9 +11,9 @@
<li><a href="../modules/domain_investigationWorkspace.html">domain/investigationWorkspace</a></li>
<li><a href="" aria-current="page">InvestigationWorkspace</a></li></ul>
<h1>Type Alias InvestigationWorkspace</h1></div>
<div class="tsd-signature"><span class="tsd-kind-type-alias">InvestigationWorkspace</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">z.infer</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">typeof</span> <span class="tsd-signature-type">investigationWorkspaceSchema</span><span class="tsd-signature-symbol">&gt;</span></div><aside class="tsd-sources">
<div class="tsd-signature"><span class="tsd-kind-type-alias">InvestigationWorkspace</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">z.infer</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">typeof</span> <a href="../variables/domain_investigationWorkspace.investigationWorkspaceSchema.html" class="tsd-signature-type tsd-kind-variable">investigationWorkspaceSchema</a><span class="tsd-signature-symbol">&gt;</span></div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/investigationWorkspace.ts#L192">src/domain/investigationWorkspace.ts:192</a></li></ul></aside></div>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/investigationWorkspace.ts#L193">src/domain/investigationWorkspace.ts:193</a></li></ul></aside></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,35 @@
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>CDP_BROWSER_PROVIDER_IDENTITY | rea-agents - v1.6.0</title><meta name="description" content="Documentation for rea-agents"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar">
<div class="tsd-toolbar-contents container"><a href="../index.html" class="title">rea-agents - v1.6.0</a>
<div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/>
<ul role="listbox" id="tsd-search-results"></ul>
<div id="tsd-search-status" aria-live="polite" aria-atomic="true">
<div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header>
<div class="container container-main">
<div class="col-content">
<div class="tsd-page-title">
<ul class="tsd-breadcrumb" aria-label="Breadcrumb">
<li><a href="../modules/browser_CdpBrowserProvider.html">browser/CdpBrowserProvider</a></li>
<li><a href="" aria-current="page">CDP_BROWSER_PROVIDER_IDENTITY</a></li></ul>
<h1>Variable CDP_BROWSER_PROVIDER_IDENTITY<code class="tsd-tag">Const</code></h1></div>
<div class="tsd-signature"><span class="tsd-kind-variable">CDP_BROWSER_PROVIDER_IDENTITY</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/application_AnalysisProvider.ProviderIdentity.html" class="tsd-signature-type tsd-kind-interface">ProviderIdentity</a><span class="tsd-signature-symbol"> = ...</span></div>
<div class="tsd-comment tsd-typography"><p>Public identity committed by passive browser observations.</p>
</div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/browser/CdpBrowserProvider.ts#L69">src/browser/CdpBrowserProvider.ts:69</a></li></ul></aside></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">
<details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h3>Settings</h3></summary>
<div class="tsd-accordion-details">
<div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span>
<ul id="tsd-filter-options">
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li>
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div>
<div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div>
<div class="site-menu">
<nav class="tsd-navigation"><a href="../index.html">rea-agents - v1.6.0</a>
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">
<li>Loading...</li></ul></nav></div></div></div><footer>
<p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer>
<div class="overlay"></div></body></html>

View File

@ -0,0 +1,35 @@
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>CDP_ELECTRON_PROVIDER_IDENTITY | rea-agents - v1.6.0</title><meta name="description" content="Documentation for rea-agents"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar">
<div class="tsd-toolbar-contents container"><a href="../index.html" class="title">rea-agents - v1.6.0</a>
<div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/>
<ul role="listbox" id="tsd-search-results"></ul>
<div id="tsd-search-status" aria-live="polite" aria-atomic="true">
<div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header>
<div class="container container-main">
<div class="col-content">
<div class="tsd-page-title">
<ul class="tsd-breadcrumb" aria-label="Breadcrumb">
<li><a href="../modules/browser_CdpElectronProvider.html">browser/CdpElectronProvider</a></li>
<li><a href="" aria-current="page">CDP_ELECTRON_PROVIDER_IDENTITY</a></li></ul>
<h1>Variable CDP_ELECTRON_PROVIDER_IDENTITY<code class="tsd-tag">Const</code></h1></div>
<div class="tsd-signature"><span class="tsd-kind-variable">CDP_ELECTRON_PROVIDER_IDENTITY</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/application_AnalysisProvider.ProviderIdentity.html" class="tsd-signature-type tsd-kind-interface">ProviderIdentity</a><span class="tsd-signature-symbol"> = ...</span></div>
<div class="tsd-comment tsd-typography"><p>Public identity committed by passive Electron observations.</p>
</div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/browser/CdpElectronProvider.ts#L38">src/browser/CdpElectronProvider.ts:38</a></li></ul></aside></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">
<details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h3>Settings</h3></summary>
<div class="tsd-accordion-details">
<div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span>
<ul id="tsd-filter-options">
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li>
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div>
<div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div>
<div class="site-menu">
<nav class="tsd-navigation"><a href="../index.html">rea-agents - v1.6.0</a>
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">
<li>Loading...</li></ul></nav></div></div></div><footer>
<p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer>
<div class="overlay"></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,35 @@
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>HOPPER_PROVIDER_IDENTITY | rea-agents - v1.6.0</title><meta name="description" content="Documentation for rea-agents"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar">
<div class="tsd-toolbar-contents container"><a href="../index.html" class="title">rea-agents - v1.6.0</a>
<div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/>
<ul role="listbox" id="tsd-search-results"></ul>
<div id="tsd-search-status" aria-live="polite" aria-atomic="true">
<div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header>
<div class="container container-main">
<div class="col-content">
<div class="tsd-page-title">
<ul class="tsd-breadcrumb" aria-label="Breadcrumb">
<li><a href="../modules/hopper_HopperProvider.html">hopper/HopperProvider</a></li>
<li><a href="" aria-current="page">HOPPER_PROVIDER_IDENTITY</a></li></ul>
<h1>Variable HOPPER_PROVIDER_IDENTITY<code class="tsd-tag">Const</code></h1></div>
<div class="tsd-signature"><span class="tsd-kind-variable">HOPPER_PROVIDER_IDENTITY</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/application_AnalysisProvider.ProviderIdentity.html" class="tsd-signature-type tsd-kind-interface">ProviderIdentity</a><span class="tsd-signature-symbol"> = ...</span></div>
<div class="tsd-comment tsd-typography"><p>Public identity committed by every Hopper-backed observation.</p>
</div><aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/hopper/HopperProvider.ts#L23">src/hopper/HopperProvider.ts:23</a></li></ul></aside></div>
<div class="col-sidebar">
<div class="page-menu">
<div class="tsd-navigation settings">
<details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
<h3>Settings</h3></summary>
<div class="tsd-accordion-details">
<div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span>
<ul id="tsd-filter-options">
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li>
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div>
<div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div>
<div class="site-menu">
<nav class="tsd-navigation"><a href="../index.html">rea-agents - v1.6.0</a>
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">
<li>Loading...</li></ul></nav></div></div></div><footer>
<p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer>
<div class="overlay"></div></body></html>

File diff suppressed because one or more lines are too long

415
docs/product-catalog.json Normal file
View File

@ -0,0 +1,415 @@
{
"catalog_schema_version": 1,
"package": {
"name": "rea-agents",
"version": "1.6.0",
"sdk": {
"server": "2.0.0-beta.4",
"client": "2.0.0-beta.4",
"core": "2.0.0-beta.4"
},
"skill_version": "14"
},
"tools": {
"total": 78,
"families": [
{
"id": "direct",
"surface": "official-proxy",
"count": 33,
"tools": [
"address_name",
"comment",
"current_address",
"current_document",
"current_procedure",
"goto_address",
"inline_comment",
"list_bookmarks",
"list_documents",
"list_names",
"list_procedures",
"list_segments",
"list_strings",
"next_address",
"prev_address",
"procedure_address",
"procedure_assembly",
"procedure_callees",
"procedure_callers",
"procedure_info",
"procedure_pseudo_code",
"procedure_references",
"resolve_containing_procedure",
"search_procedures",
"search_strings",
"set_address_name",
"set_addresses_names",
"set_bookmark",
"set_comment",
"set_current_document",
"set_inline_comment",
"unset_bookmark",
"xrefs"
]
},
{
"id": "enhanced",
"surface": "enhanced",
"count": 10,
"tools": [
"analyze_function",
"analyze_swift_types",
"batch_decompile",
"binary_overview",
"find_xrefs_to_name",
"get_call_graph",
"get_objc_classes",
"get_objc_protocols",
"swift_classes",
"trace_feature"
]
},
{
"id": "native",
"surface": "native-provider",
"count": 5,
"tools": [
"demangle_swift",
"inspect_macho",
"inspect_plist",
"inspect_signature",
"list_architectures"
]
},
{
"id": "artifact",
"surface": "artifact-provider",
"count": 2,
"tools": ["extract_artifact", "inventory_artifact"]
},
{
"id": "browser",
"surface": "browser-provider",
"count": 8,
"tools": [
"analyze_web_bundle",
"capture_web_screenshot",
"compare_web_captures",
"compare_web_screenshots",
"discover_webmcp_tools",
"inspect_web_page",
"list_browser_targets",
"observe_web_session"
]
},
{
"id": "electron",
"surface": "electron-provider",
"count": 2,
"tools": ["inspect_electron_page", "list_electron_targets"]
},
{
"id": "session",
"surface": "session",
"count": 18,
"tools": [
"binary_session",
"build_call_path",
"capture_process_scenario",
"close_binary",
"compare_artifacts",
"compare_bundles",
"compare_functions",
"compare_process_captures",
"correlate_static_and_runtime",
"export_evidence_bundle",
"find_changed_behavior",
"import_evidence_bundle",
"list_unknowns",
"open_binary",
"record_unknown",
"update_unknown",
"verify_reconstruction",
"verify_unknown_resolution"
]
}
]
},
"providers": [
{
"id": "hopper",
"name": "Hopper Disassembler",
"version": null,
"capabilities": [
"address_name",
"analyze_function",
"comment",
"current_address",
"current_document",
"current_procedure",
"goto_address",
"inline_comment",
"list_bookmarks",
"list_documents",
"list_names",
"list_procedures",
"list_segments",
"list_strings",
"next_address",
"prev_address",
"procedure_address",
"procedure_assembly",
"procedure_callees",
"procedure_callers",
"procedure_info",
"procedure_pseudo_code",
"procedure_references",
"resolve_containing_procedure",
"search_procedures",
"search_strings",
"set_address_name",
"set_addresses_names",
"set_bookmark",
"set_comment",
"set_current_document",
"set_inline_comment",
"unset_bookmark",
"xrefs"
]
},
{
"id": "native-macos",
"name": "macOS native inspection utilities",
"version": null,
"capabilities": [
"demangle_swift",
"inspect_macho",
"inspect_plist",
"inspect_signature",
"list_architectures"
]
},
{
"id": "rea-artifact-graph",
"name": "REA safe artifact graph provider",
"version": "1",
"capabilities": ["extract_artifact", "inventory_artifact"]
},
{
"id": "rea-cdp-browser",
"name": "REA Chrome DevTools Protocol observation provider",
"version": "2",
"capabilities": [
"analyze_web_bundle",
"capture_web_screenshot",
"compare_web_captures",
"compare_web_screenshots",
"discover_webmcp_tools",
"inspect_web_page",
"list_browser_targets",
"observe_web_session"
]
},
{
"id": "rea-cdp-electron",
"name": "REA Electron file-page CDP observation provider",
"version": "1",
"capabilities": ["inspect_electron_page", "list_electron_targets"]
}
],
"setup_clients": [
{
"id": "claude_code",
"display_name": "Claude Code",
"format": "json",
"configuration": "managed"
},
{
"id": "claude_desktop",
"display_name": "Claude Desktop",
"format": "json",
"configuration": "managed"
},
{
"id": "codex",
"display_name": "Codex",
"format": "toml",
"configuration": "managed"
},
{
"id": "cursor",
"display_name": "Cursor",
"format": "json",
"configuration": "managed"
},
{
"id": "gemini_cli",
"display_name": "Gemini CLI",
"format": "json",
"configuration": "managed"
},
{
"id": "windsurf",
"display_name": "Windsurf",
"format": "json",
"configuration": "managed"
},
{
"id": "devin",
"display_name": "Devin",
"format": "unsupported",
"configuration": "detect-only"
}
],
"schemas": [
{
"id": "analysis_snapshot",
"version": 1
},
{
"id": "artifact_extraction",
"version": 1
},
{
"id": "artifact_graph",
"version": 1
},
{
"id": "browser_target_list",
"version": 1
},
{
"id": "electron_page_inspection",
"version": 1
},
{
"id": "electron_target_list",
"version": 1
},
{
"id": "evidence",
"version": 2
},
{
"id": "evidence_bundle",
"version": 2
},
{
"id": "investigation_run",
"version": 1
},
{
"id": "investigation_run_summary",
"version": 1
},
{
"id": "investigation_workspace",
"version": 1
},
{
"id": "process_capture",
"version": 4
},
{
"id": "reconstruction_verification",
"version": 1
},
{
"id": "residual_unknown",
"version": 1
},
{
"id": "web_bundle_analysis",
"version": 1
},
{
"id": "web_capture_diff",
"version": 1
},
{
"id": "web_mcp_discovery",
"version": 1
},
{
"id": "web_observation_session",
"version": 1
},
{
"id": "web_page_inspection",
"version": 2
},
{
"id": "web_screenshot",
"version": 1
},
{
"id": "web_screenshot_diff",
"version": 1
}
],
"cli": {
"primary_count": 38,
"commands": [
"analyze",
"analyze-web-bundle",
"capabilities",
"capture-process",
"capture-web-screenshot",
"compare",
"compare-process-captures",
"compare-web-captures",
"compare-web-screenshots",
"decompile",
"demangle-swift",
"discover-webmcp-tools",
"doctor",
"evidence-export",
"evidence-import",
"extract-artifact",
"function",
"import-reference-source",
"inspect",
"inspect-electron-page",
"inspect-macho",
"inspect-plist",
"inspect-signature",
"inspect-web-page",
"inventory-artifact",
"investigate-versions",
"list-architectures",
"list-browser-targets",
"list-electron-targets",
"observe-web-session",
"policy",
"providers",
"search",
"setup",
"trace",
"uninstall",
"upgrade",
"xrefs"
],
"aliases": [
{
"name": "compare-bundles",
"target": "compare"
}
]
},
"runtime_catalog": {
"counts": {
"cli_commands": 38,
"mcp_tools": 78,
"mcp_prompts": 6,
"mcp_resources": 2,
"mcp_resource_templates": 7
},
"digests": {
"tools_sha256": "881033cf0352b32a37124556fbbced145e2e879d11462a2b447f0c7d25f70965",
"prompts_sha256": "cb1a0316708d1bdb5f4325c2000e466211b16070af8c927bc201340301f194c4",
"resources_sha256": "e603aad57a79479004fbdc267644092e8365dd64d94ad772b9da4425a49abd73",
"combined_sha256": "f6bc43b72d2c5ba79af09e849e2be41df846c24423661a460d805fd07d30931e"
}
}
}

View File

@ -52,7 +52,7 @@
"prebuild": "node scripts/generate-package-metadata.mjs",
"build": "tsc -p tsconfig.build.json",
"postbuild": "node scripts/record-build-cache.mjs",
"check": "npm run typecheck && npm run lint && npm run format:check && npm test",
"check": "npm run typecheck && npm run lint && npm run format:check && npm run docs:check && npm test",
"format": "prettier --write .",
"format:check": "prettier --check .",
"lint": "oxlint",
@ -79,7 +79,8 @@
"verify:package": "npm run build && node scripts/verify-package.mjs",
"verify:published": "node scripts/verify-published-package.mjs",
"config:print": "node scripts/print-mcp-config.mjs",
"docs:generate": "npm run build && typedoc && node scripts/generate-error-schema.mjs",
"docs:generate": "npm run build && node scripts/generate-product-catalog.mjs && typedoc && node scripts/generate-error-schema.mjs",
"docs:check": "node scripts/generate-package-metadata.mjs --check && npm run build && node scripts/generate-product-catalog.mjs --check && node scripts/check-doc-facts.mjs && node scripts/check-typedoc.mjs && node scripts/generate-error-schema.mjs --check",
"docs:error-schema": "npm run build && node scripts/generate-error-schema.mjs",
"prepack": "npm run build",
"prepare": "husky",

View File

@ -0,0 +1,10 @@
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import { assertDocumentationFacts } from "./lib/docs-facts.mjs";
import { createProductCatalog } from "./lib/product-catalog.mjs";
if (process.argv.length > 2)
throw new Error(`Unknown documentation check option: ${process.argv[2]}`);
const root = join(dirname(fileURLToPath(import.meta.url)), "..");
await assertDocumentationFacts(root, await createProductCatalog(root));

67
scripts/check-typedoc.mjs Normal file
View File

@ -0,0 +1,67 @@
import { execFile } from "node:child_process";
import { createHash } from "node:crypto";
import { mkdtemp, readFile, readdir, rm } from "node:fs/promises";
import { tmpdir } from "node:os";
import { dirname, join, relative } from "node:path";
import { promisify } from "node:util";
import { fileURLToPath } from "node:url";
const execFileAsync = promisify(execFile);
const root = join(dirname(fileURLToPath(import.meta.url)), "..");
const temporaryRoot = await mkdtemp(join(tmpdir(), "rea-typedoc-check-"));
const generated = join(temporaryRoot, "api");
const files = async (directory) =>
(await readdir(directory, { recursive: true, withFileTypes: true }))
.filter((entry) => entry.isFile())
.map((entry) => relative(directory, join(entry.parentPath, entry.name)))
.sort();
const digest = async (path) =>
createHash("sha256")
.update(await readFile(path))
.digest("hex");
try {
const { stderr } = await execFileAsync(
process.execPath,
[join(root, "node_modules/typedoc/bin/typedoc"), "--out", generated],
{ cwd: root, maxBuffer: 4 * 1024 * 1024 },
);
if (stderr.trim().length > 0) process.stderr.write(stderr);
const committed = join(root, "docs/api");
const [expectedFiles, actualFiles] = await Promise.all([
files(generated),
files(committed),
]);
const expectedSet = new Set(expectedFiles);
const actualSet = new Set(actualFiles);
const missing = expectedFiles.filter((path) => !actualSet.has(path));
const extra = actualFiles.filter((path) => !expectedSet.has(path));
const common = expectedFiles.filter((path) => actualSet.has(path));
const changed = (
await Promise.all(
common.map(async (path) =>
(await digest(join(generated, path))) ===
(await digest(join(committed, path)))
? undefined
: path,
),
)
).filter((path) => path !== undefined);
if (missing.length > 0 || extra.length > 0 || changed.length > 0) {
const summarize = (label, paths) =>
paths.length === 0
? []
: [`${label}:`, ...paths.slice(0, 20).map((path) => ` ${path}`)];
throw new Error(
[
"Committed TypeDoc output is stale. Run `npm run docs:generate`.",
...summarize("Missing", missing),
...summarize("Extra", extra),
...summarize("Changed", changed),
].join("\n"),
);
}
} finally {
await rm(temporaryRoot, { recursive: true, force: true });
}

View File

@ -1,13 +1,21 @@
import { writeFile } from "node:fs/promises";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import { analysisErrorJsonSchema } from "../dist/contracts/errorSchemas.js";
import { format } from "prettier";
import { ensureGeneratedFile } from "./lib/generated-file.mjs";
const arguments_ = new Set(process.argv.slice(2));
for (const argument of arguments_)
if (argument !== "--check")
throw new Error(`Unknown error schema option: ${argument}`);
const root = join(dirname(fileURLToPath(import.meta.url)), "..");
await writeFile(
join(root, "docs/error-contract.schema.json"),
await format(JSON.stringify(analysisErrorJsonSchema), { parser: "json" }),
"utf8",
);
await ensureGeneratedFile({
path: join(root, "docs/error-contract.schema.json"),
source: await format(JSON.stringify(analysisErrorJsonSchema), {
parser: "json",
}),
check: arguments_.has("--check"),
generateCommand: "npm run docs:generate",
});

View File

@ -1,8 +1,14 @@
import { readFile, writeFile } from "node:fs/promises";
import { readFile } from "node:fs/promises";
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import { validateBuildCache } from "./build-cache.mjs";
import { ensureGeneratedFile } from "./lib/generated-file.mjs";
const arguments_ = new Set(process.argv.slice(2));
for (const argument of arguments_)
if (argument !== "--check")
throw new Error(`Unknown package metadata option: ${argument}`);
const root = join(dirname(fileURLToPath(import.meta.url)), "..");
const packageJson = JSON.parse(
@ -35,17 +41,10 @@ export const PACKAGE_METADATA = {
} as const;
`;
const outputPath = join(root, "src/generatedPackageMetadata.ts");
let existingSource;
try {
existingSource = await readFile(outputPath, "utf8");
} catch (cause) {
if (
typeof cause !== "object" ||
cause === null ||
!("code" in cause) ||
cause.code !== "ENOENT"
)
throw cause;
}
if (existingSource !== source) await writeFile(outputPath, source, "utf8");
await ensureGeneratedFile({
path: outputPath,
source,
check: arguments_.has("--check"),
generateCommand: "npm run build",
});
await validateBuildCache(root);

View File

@ -0,0 +1,22 @@
import { dirname, join } from "node:path";
import { fileURLToPath } from "node:url";
import { ensureGeneratedFile } from "./lib/generated-file.mjs";
import {
createProductCatalog,
serializeProductCatalog,
} from "./lib/product-catalog.mjs";
const arguments_ = new Set(process.argv.slice(2));
for (const argument of arguments_)
if (argument !== "--check")
throw new Error(`Unknown product catalog option: ${argument}`);
const root = join(dirname(fileURLToPath(import.meta.url)), "..");
const catalog = await createProductCatalog(root);
await ensureGeneratedFile({
path: join(root, "docs/product-catalog.json"),
source: await serializeProductCatalog(catalog),
check: arguments_.has("--check"),
generateCommand: "npm run docs:generate",
});

View File

@ -0,0 +1,10 @@
import type { ProductCatalog } from "./product-catalog.mjs";
export function documentationFactIssues(
root: string,
catalog: ProductCatalog,
): Promise<readonly string[]>;
export function assertDocumentationFacts(
root: string,
catalog: ProductCatalog,
): Promise<void>;

124
scripts/lib/docs-facts.mjs Normal file
View File

@ -0,0 +1,124 @@
import { readFile } from "node:fs/promises";
import { join } from "node:path";
const README_PATHS = [
"README.md",
"README_zh.md",
"README_ja.md",
"README_ko.md",
"README_ar.md",
];
const familyLabel = (id) => (id === "electron" ? "Electron" : id);
const tableCounts = (content, path, total) => {
const lines = content.split(/\r?\n/u);
const headingIndex = lines.findIndex(
(line) => line.startsWith("## ") && line.includes(String(total)),
);
if (headingIndex === -1) {
throw new Error(`Missing ${total}-tool heading in ${path}`);
}
const counts = [];
for (const line of lines.slice(headingIndex + 1)) {
if (line.startsWith("## ")) break;
if (!line.trim().startsWith("|") || /^\|\s*-/u.test(line)) continue;
const count = Number(line.split("|")[2]?.trim());
if (!Number.isInteger(count)) {
if (counts.length === 0) continue;
throw new Error(`Non-numeric tool count in ${path}`);
}
counts.push(count);
}
return counts;
};
const requireText = (issues, path, content, expected) => {
if (!content.includes(expected)) issues.push(`${path}: missing ${expected}`);
};
/** Return every caller-visible documentation mismatch against canonical facts. */
export const documentationFactIssues = async (root, catalog) => {
const issues = [];
const expectedCounts = catalog.tools.families.map(({ count }) => count);
for (const path of README_PATHS) {
const content = await readFile(join(root, path), "utf8");
requireText(
issues,
path,
content,
`MCP_tools-${String(catalog.tools.total)}`,
);
for (const client of catalog.setup_clients)
requireText(issues, path, content, client.display_name);
try {
const actualCounts = tableCounts(content, path, catalog.tools.total);
if (JSON.stringify(actualCounts) !== JSON.stringify(expectedCounts))
issues.push(
`${path}: tool family counts ${JSON.stringify(actualCounts)} do not match ${JSON.stringify(expectedCounts)}`,
);
} catch (cause) {
issues.push(cause instanceof Error ? cause.message : String(cause));
}
}
const inventory = catalog.tools.families
.map(({ id, count }) => `${String(count)} ${familyLabel(id)}`)
.join(", ")
.replace(/, ([^,]+)$/u, ", and $1");
const plusInventory = catalog.tools.families
.map(({ id, count }) => `${String(count)} ${familyLabel(id)}`)
.join(" + ");
const agents = await readFile(join(root, "AGENTS.md"), "utf8");
requireText(issues, "AGENTS.md", agents, inventory);
requireText(
issues,
"AGENTS.md",
agents,
`(${String(catalog.tools.total)} total)`,
);
requireText(
issues,
"AGENTS.md",
agents,
`${String(catalog.tools.total)}-tool target-free MCP server`,
);
requireText(issues, "AGENTS.md", agents, "docs/product-catalog.json");
const templatePath = ".github/pull_request_template.md";
const template = await readFile(join(root, templatePath), "utf8");
requireText(
issues,
templatePath,
template,
`current inventory is ${String(catalog.tools.total)} tools (${plusInventory})`,
);
requireText(issues, templatePath, template, "docs/product-catalog.json");
const english = await readFile(join(root, "README.md"), "utf8");
const schemaVersion = (id) => {
const schema = catalog.schemas.find((candidate) => candidate.id === id);
if (schema === undefined) throw new Error(`Missing ${id} catalog schema`);
return String(schema.version);
};
requireText(
issues,
"README.md",
english,
`Evidence v${schemaVersion("evidence")}`,
);
requireText(
issues,
"README.md",
english,
`Process Capture v${schemaVersion("process_capture")}`,
);
requireText(issues, "README.md", english, "docs/product-catalog.json");
return issues;
};
/** Fail once with all documentation fact mismatches. */
export const assertDocumentationFacts = async (root, catalog) => {
const issues = await documentationFactIssues(root, catalog);
if (issues.length > 0)
throw new Error(`Documentation facts drifted:\n- ${issues.join("\n- ")}`);
};

View File

@ -0,0 +1,10 @@
export interface GeneratedFileOptions {
readonly path: string;
readonly source: string;
readonly check: boolean;
readonly generateCommand: string;
}
export function ensureGeneratedFile(
options: GeneratedFileOptions,
): Promise<{ readonly changed: boolean }>;

View File

@ -0,0 +1,29 @@
import { readFile, writeFile } from "node:fs/promises";
const isMissing = (cause) =>
typeof cause === "object" &&
cause !== null &&
"code" in cause &&
cause.code === "ENOENT";
/** Compare or update one generated text artifact with actionable diagnostics. */
export const ensureGeneratedFile = async ({
path,
source,
check,
generateCommand,
}) => {
let existing;
try {
existing = await readFile(path, "utf8");
} catch (cause) {
if (!isMissing(cause)) throw cause;
}
if (existing === source) return { changed: false };
if (check)
throw new Error(
`${path} is missing or stale. Run \`${generateCommand}\` and commit the result.`,
);
await writeFile(path, source, "utf8");
return { changed: true };
};

View File

@ -0,0 +1,58 @@
export interface ProductCatalog {
readonly catalog_schema_version: number;
readonly package: {
readonly name: string;
readonly version: string;
readonly sdk: Readonly<Record<string, string>>;
readonly skill_version: string;
};
readonly tools: {
readonly total: number;
readonly families: readonly {
readonly id: string;
readonly surface: string;
readonly count: number;
readonly tools: readonly string[];
}[];
};
readonly providers: readonly {
readonly id: string;
readonly name: string;
readonly version: string | null;
readonly capabilities: readonly string[];
}[];
readonly setup_clients: readonly {
readonly id: string;
readonly display_name: string;
readonly format: string;
readonly configuration: string;
}[];
readonly schemas: readonly {
readonly id: string;
readonly version: string | number;
}[];
readonly cli: {
readonly primary_count: number;
readonly commands: readonly string[];
readonly aliases: readonly {
readonly name: string;
readonly target: string;
}[];
};
readonly runtime_catalog: {
readonly counts: Readonly<Record<string, number>>;
readonly digests: Readonly<Record<string, string>>;
};
}
export function createProductCatalog(root: string): Promise<ProductCatalog>;
export function createCliInventory(cli: unknown): {
readonly primary: readonly string[];
readonly aliases: readonly {
readonly name: string;
readonly target: string;
}[];
};
export function serializeProductCatalog(
catalog: ProductCatalog,
): Promise<string>;

View File

@ -0,0 +1,374 @@
import { pathToFileURL } from "node:url";
import { join } from "node:path";
import { Cli } from "incur";
import { format } from "prettier";
import { z } from "zod";
const load = (root, path) => import(pathToFileURL(join(root, path)).href);
const names = (contracts) =>
contracts
.map(({ name }) => name)
.sort((left, right) => left.localeCompare(right));
const valuesAt = (node, path) => {
if (typeof node !== "object" || node === null) return [];
if ("anyOf" in node && Array.isArray(node.anyOf))
return node.anyOf.flatMap((alternative) => valuesAt(alternative, path));
if (path.length === 0)
return "const" in node &&
(typeof node.const === "number" || typeof node.const === "string")
? [node.const]
: [];
if (
!("properties" in node) ||
typeof node.properties !== "object" ||
node.properties === null
)
return [];
const [segment, ...remaining] = path;
return segment !== undefined && segment in node.properties
? valuesAt(node.properties[segment], remaining)
: [];
};
const versionAt = (schema, path) => {
const versions = [
...new Set(valuesAt(z.toJSONSchema(schema), path).map(String)),
];
if (versions.length !== 1)
throw new Error(
`Schema version path ${path.join(".")} has ${String(versions.length)} constant values`,
);
const version = versions[0];
if (version === undefined) throw new Error("Schema version disappeared");
return /^\d+$/u.test(version) ? Number(version) : version;
};
/** Read primary names and aliases from the actual Incur command router. */
export const createCliInventory = (cli) => {
const commands = Cli.toCommands.get(cli);
if (commands === undefined)
throw new Error("Incur did not expose the registered REA CLI commands");
const primary = [];
const aliases = [];
for (const [name, entry] of commands) {
if ("_alias" in entry) aliases.push({ name, target: entry.target });
else primary.push(name);
}
return {
primary: primary.sort((left, right) => left.localeCompare(right)),
aliases: aliases.sort((left, right) => left.name.localeCompare(right.name)),
};
};
const assertSameNames = (label, actual, expected) => {
const actualSet = new Set(actual);
const expectedSet = new Set(expected);
const missing = [...expectedSet].filter((name) => !actualSet.has(name));
const extra = [...actualSet].filter((name) => !expectedSet.has(name));
if (missing.length === 0 && extra.length === 0) return;
throw new Error(
`${label} drifted (missing: ${missing.join(", ") || "none"}; extra: ${extra.join(", ") || "none"})`,
);
};
const SOURCE_PATHS = {
packageMetadata: "dist/generatedPackageMetadata.js",
catalogIdentity: "dist/catalogIdentity.js",
cli: "dist/cli.js",
toolContracts: "dist/contracts/toolContracts.js",
nativeContracts: "dist/contracts/nativeToolContracts.js",
artifactContracts: "dist/contracts/artifactToolContracts.js",
browserContracts: "dist/contracts/browserToolContracts.js",
electronContracts: "dist/contracts/electronToolContracts.js",
supportedClients: "dist/application/SupportedClients.js",
hopperProvider: "dist/hopper/HopperProvider.js",
nativeProvider: "dist/native/NativeMacOSProvider.js",
artifactProviders: "dist/application/InvestigationProviders.js",
browserProvider: "dist/browser/CdpBrowserProvider.js",
electronProvider: "dist/browser/CdpElectronProvider.js",
evidence: "dist/domain/evidence.js",
evidenceBundle: "dist/domain/evidenceBundle.js",
processCapture: "dist/domain/processCapture.js",
analysisSnapshot: "dist/domain/analysisSnapshot.js",
artifactGraph: "dist/domain/artifactGraph.js",
investigationWorkspace: "dist/domain/investigationWorkspace.js",
browserObservation: "dist/domain/browserObservation.js",
browserSession: "dist/domain/browserSession.js",
electronObservation: "dist/domain/electronObservation.js",
webBundleAnalysis: "dist/domain/webBundleAnalysis.js",
webCaptureDiff: "dist/domain/webCaptureDiff.js",
webMcpDiscovery: "dist/domain/webMcpDiscovery.js",
webScreenshot: "dist/domain/webScreenshot.js",
reconstructionVerification:
"dist/domain/reconstructionVerificationSchemas.js",
residualUnknown: "dist/domain/residualUnknown.js",
};
const loadSources = async (root) =>
Object.fromEntries(
await Promise.all(
Object.entries(SOURCE_PATHS).map(async ([key, path]) => [
key,
await load(root, path),
]),
),
);
const toolFamilyCatalog = (sources) => {
const families = [
{
id: "direct",
surface: "official-proxy",
contracts: sources.toolContracts.OFFICIAL_TOOL_CONTRACTS,
},
{
id: "enhanced",
surface: "enhanced",
contracts: sources.toolContracts.ENHANCED_TOOL_CONTRACTS,
},
{
id: "native",
surface: "native-provider",
contracts: sources.nativeContracts.NATIVE_TOOL_CONTRACTS,
},
{
id: "artifact",
surface: "artifact-provider",
contracts: sources.artifactContracts.ARTIFACT_TOOL_CONTRACTS,
},
{
id: "browser",
surface: "browser-provider",
contracts: sources.browserContracts.BROWSER_TOOL_CONTRACTS,
},
{
id: "electron",
surface: "electron-provider",
contracts: sources.electronContracts.ELECTRON_TOOL_CONTRACTS,
},
{
id: "session",
surface: "session",
contracts: sources.toolContracts.SESSION_TOOL_CONTRACTS,
},
].map(({ id, surface, contracts }) => ({
id,
surface,
count: contracts.length,
tools: names(contracts),
}));
const familyTotal = families.reduce(
(total, family) => total + family.count,
0,
);
if (
familyTotal !== sources.toolContracts.TOOL_CONTRACTS.length ||
familyTotal !== sources.catalogIdentity.CATALOG_IDENTITY.counts.mcp_tools
)
throw new Error("Tool family inventory does not match TOOL_CONTRACTS");
return { total: familyTotal, families };
};
const providerCatalog = (sources) =>
[
{
identity: sources.hopperProvider.HOPPER_PROVIDER_IDENTITY,
contracts: sources.hopperProvider.HOPPER_PROVIDER_TOOL_CONTRACTS,
},
{
identity: sources.nativeProvider.NATIVE_MACOS_PROVIDER_IDENTITY,
contracts: sources.nativeContracts.NATIVE_TOOL_CONTRACTS,
},
{
identity: sources.artifactProviders.ARTIFACT_GRAPH_PROVIDER,
contracts: sources.artifactContracts.ARTIFACT_TOOL_CONTRACTS,
},
{
identity: sources.browserProvider.CDP_BROWSER_PROVIDER_IDENTITY,
contracts: sources.browserContracts.BROWSER_TOOL_CONTRACTS,
},
{
identity: sources.electronProvider.CDP_ELECTRON_PROVIDER_IDENTITY,
contracts: sources.electronContracts.ELECTRON_TOOL_CONTRACTS,
},
]
.map(({ identity, contracts }) => ({
id: identity.id,
name: identity.name,
version: identity.version,
capabilities: names(contracts),
}))
.sort((left, right) => left.id.localeCompare(right.id));
const durableSchemaDefinitions = (sources) => [
[
"analysis_snapshot",
sources.analysisSnapshot.analysisSnapshotSchema,
["snapshot_version"],
],
[
"artifact_graph",
sources.artifactGraph.artifactInventoryResultSchema,
["manifest", "schema_version"],
],
[
"artifact_extraction",
sources.artifactGraph.artifactExtractionResultSchema,
["extraction_manifest", "schema_version"],
],
["evidence", sources.evidence.evidenceSchema, ["schema_version"]],
[
"evidence_bundle",
sources.evidenceBundle.evidenceBundleSchema,
["bundle_version"],
],
[
"investigation_run",
sources.investigationWorkspace.investigationRunSchema,
["schema_version"],
],
[
"investigation_run_summary",
sources.investigationWorkspace.investigationRunSummarySchema,
["schema_version"],
],
[
"investigation_workspace",
sources.investigationWorkspace.investigationWorkspaceSchema,
["workspace_version"],
],
[
"process_capture",
sources.processCapture.processCaptureSchema,
["schema_version"],
],
[
"reconstruction_verification",
sources.reconstructionVerification.reconstructionSpecificationSchema,
["schema_version"],
],
[
"residual_unknown",
sources.residualUnknown.residualUnknownSchema,
["registry_version"],
],
];
const observationSchemaDefinitions = (sources) => [
[
"browser_target_list",
sources.browserObservation.browserTargetListSchema,
["schema_version"],
],
[
"electron_page_inspection",
sources.electronObservation.electronPageInspectionSchema,
["schema_version"],
],
[
"electron_target_list",
sources.electronObservation.electronTargetListSchema,
["schema_version"],
],
[
"web_bundle_analysis",
sources.webBundleAnalysis.webBundleAnalysisSchema,
["schema_version"],
],
[
"web_capture_diff",
sources.webCaptureDiff.webCaptureDiffSchema,
["schema_version"],
],
[
"web_mcp_discovery",
sources.webMcpDiscovery.webMcpDiscoverySchema,
["schema_version"],
],
[
"web_observation_session",
sources.browserSession.webObservationSessionSchema,
["schema_version"],
],
[
"web_page_inspection",
sources.browserObservation.webPageInspectionSchema,
["schema_version"],
],
[
"web_screenshot",
sources.webScreenshot.webScreenshotSchema,
["schema_version"],
],
[
"web_screenshot_diff",
sources.webScreenshot.webScreenshotDiffSchema,
["schema_version"],
],
];
const schemaCatalog = (sources) =>
[
...durableSchemaDefinitions(sources),
...observationSchemaDefinitions(sources),
]
.map(([id, schema, path]) => {
try {
return { id, version: versionAt(schema, path) };
} catch (cause) {
throw new Error(`Could not derive ${id} schema version`, { cause });
}
})
.sort((left, right) => left.id.localeCompare(right.id));
/** Project current runtime contracts into deterministic, machine-readable facts. */
export const createProductCatalog = async (root) => {
const sources = await loadSources(root);
const cli = createCliInventory(sources.cli.createCli());
assertSameNames(
"Primary CLI inventory",
cli.primary,
sources.catalogIdentity.CLI_COMMAND_NAMES,
);
const tools = toolFamilyCatalog(sources);
const metadata = sources.packageMetadata.PACKAGE_METADATA;
return {
catalog_schema_version: 1,
package: {
name: metadata.name,
version: metadata.version,
sdk: {
server: metadata.serverSdkVersion,
client: metadata.clientSdkVersion,
core: metadata.coreSdkVersion,
},
skill_version: metadata.skillVersion,
},
tools,
providers: providerCatalog(sources),
setup_clients: sources.supportedClients.SUPPORTED_CLIENT_DEFINITIONS.map(
({ name, displayName, format }) => ({
id: name,
display_name: displayName,
format,
configuration: format === "unsupported" ? "detect-only" : "managed",
}),
),
schemas: schemaCatalog(sources),
cli: {
primary_count: cli.primary.length,
commands: cli.primary,
aliases: cli.aliases,
},
runtime_catalog: {
counts: sources.catalogIdentity.CATALOG_IDENTITY.counts,
digests: sources.catalogIdentity.CATALOG_IDENTITY.digests,
},
};
};
/** Stable checked-in representation of the product catalog. */
export const serializeProductCatalog = (catalog) =>
format(JSON.stringify(catalog, null, 2), { parser: "json" });

View File

@ -8,46 +8,69 @@ export interface SetupClient {
readonly format?: "json" | "toml" | "unsupported";
}
/** Describe every client location that setup, doctor, or uninstall may inspect. */
export const supportedClients = (home: string): readonly SetupClient[] => [
/** Stable product metadata used to derive setup discovery and documentation. */
export const SUPPORTED_CLIENT_DEFINITIONS = [
{
name: "claude_code",
configPath: join(home, ".claude.json"),
markerPath: join(home, ".claude"),
displayName: "Claude Code",
configPath: [".claude.json"],
markerPath: [".claude"],
format: "json",
},
{
name: "claude_desktop",
configPath: join(
home,
"Library/Application Support/Claude/claude_desktop_config.json",
),
markerPath: join(home, "Library/Application Support/Claude"),
displayName: "Claude Desktop",
configPath: [
"Library",
"Application Support",
"Claude",
"claude_desktop_config.json",
],
markerPath: ["Library", "Application Support", "Claude"],
format: "json",
},
{
name: "codex",
configPath: join(home, ".codex/config.toml"),
markerPath: join(home, ".codex"),
displayName: "Codex",
configPath: [".codex", "config.toml"],
markerPath: [".codex"],
format: "toml",
},
{
name: "cursor",
configPath: join(home, ".cursor/mcp.json"),
markerPath: join(home, ".cursor"),
displayName: "Cursor",
configPath: [".cursor", "mcp.json"],
markerPath: [".cursor"],
format: "json",
},
{
name: "gemini_cli",
configPath: join(home, ".gemini/settings.json"),
markerPath: join(home, ".gemini"),
displayName: "Gemini CLI",
configPath: [".gemini", "settings.json"],
markerPath: [".gemini"],
format: "json",
},
{
name: "windsurf",
configPath: join(home, ".codeium/windsurf/mcp_config.json"),
markerPath: join(home, ".codeium/windsurf"),
displayName: "Windsurf",
configPath: [".codeium", "windsurf", "mcp_config.json"],
markerPath: [".codeium", "windsurf"],
format: "json",
},
{
name: "devin",
configPath: join(home, ".devin"),
markerPath: join(home, ".devin"),
displayName: "Devin",
configPath: [".devin"],
markerPath: [".devin"],
format: "unsupported",
},
];
] as const;
/** Describe every client location that setup, doctor, or uninstall may inspect. */
export const supportedClients = (home: string): readonly SetupClient[] =>
SUPPORTED_CLIENT_DEFINITIONS.map((definition) => ({
name: definition.name,
configPath: join(home, ...definition.configPath),
markerPath: join(home, ...definition.markerPath),
format: definition.format,
}));

View File

@ -65,11 +65,13 @@ import { discoverWebMcp } from "./CdpWebMcpDiscovery.js";
import { captureCdpScreenshot } from "./CdpScreenshot.js";
import { comparePngScreenshots } from "./PngVisualDiff.js";
const IDENTITY: ProviderIdentity = {
/** Public identity committed by passive browser observations. */
export const CDP_BROWSER_PROVIDER_IDENTITY: ProviderIdentity = Object.freeze({
id: "rea-cdp-browser",
name: "REA Chrome DevTools Protocol observation provider",
version: "2",
};
});
const IDENTITY = CDP_BROWSER_PROVIDER_IDENTITY;
const CLEANUP_DOMAINS = ["Network", "Debugger", "Runtime", "Page"] as const;
/** Passive, origin-scoped browser observation through a user-owned CDP endpoint. */

View File

@ -34,11 +34,13 @@ import {
canonicalElectronRoots,
} from "./ElectronFileScope.js";
const IDENTITY: ProviderIdentity = {
/** Public identity committed by passive Electron observations. */
export const CDP_ELECTRON_PROVIDER_IDENTITY: ProviderIdentity = Object.freeze({
id: "rea-cdp-electron",
name: "REA Electron file-page CDP observation provider",
version: "1",
};
});
const IDENTITY = CDP_ELECTRON_PROVIDER_IDENTITY;
/** Passive Electron provider with canonical file-root confinement. */
export class CdpElectronProvider implements ElectronObservationPort {

View File

@ -5,48 +5,9 @@ import { z } from "zod";
import { PROMPT_CONTRACTS } from "./contracts/promptContracts.js";
import { TOOL_CONTRACTS } from "./contracts/toolContracts.js";
import { CLI_COMMAND_NAMES } from "./cliCommandNames.js";
/** Explicit CLI command inventory, kept separate from MCP tool counts. */
export const CLI_COMMAND_NAMES = [
"analyze",
"inspect",
"decompile",
"setup",
"doctor",
"uninstall",
"upgrade",
"xrefs",
"trace",
"capabilities",
"providers",
"function",
"search",
"import-reference-source",
"inventory-artifact",
"extract-artifact",
"inspect-macho",
"inspect-signature",
"list-architectures",
"inspect-plist",
"demangle-swift",
"evidence-import",
"evidence-export",
"compare",
"investigate-versions",
"capture-process",
"compare-process-captures",
"policy",
"list-browser-targets",
"inspect-web-page",
"analyze-web-bundle",
"observe-web-session",
"discover-webmcp-tools",
"compare-web-captures",
"capture-web-screenshot",
"compare-web-screenshots",
"list-electron-targets",
"inspect-electron-page",
] as const;
export { CLI_COMMAND_NAMES } from "./cliCommandNames.js";
const toolCatalog = TOOL_CONTRACTS.map((contract) => ({
name: contract.name,

View File

@ -30,6 +30,7 @@ import { registerPolicyCommands } from "./cliPolicyCommands.js";
import { registerBrowserCommands } from "./cliBrowserCommands.js";
import { registerAdvancedBrowserCommands } from "./cliBrowserAdvancedCommands.js";
import { registerElectronCommands } from "./cliElectronCommands.js";
import { CLI_COMMANDS } from "./cliCommandNames.js";
/**
* Build the one-shot Incur CLI without starting Hopper at import time.
@ -95,7 +96,7 @@ const registerCoreCommands = (
.optional()
.describe("Load and update a local analysis snapshot"),
});
cli.command("analyze", {
cli.command(CLI_COMMANDS.analyze, {
description: "Get an overview of an app",
args: z.object({
path: z.string().describe("App, program, or Hopper database path"),
@ -111,7 +112,7 @@ const registerCoreCommands = (
),
),
});
cli.command("inspect", {
cli.command(CLI_COMMANDS.inspect, {
description: "Inspect an app overview with evidence",
args: z.object({
path: z.string().describe("App, program, or Hopper database path"),
@ -127,7 +128,7 @@ const registerCoreCommands = (
),
),
});
cli.command("decompile", {
cli.command(CLI_COMMANDS.decompile, {
description: "Read one part of an app as code",
args: z.object({
path: z.string().describe("App or program path"),
@ -150,7 +151,7 @@ const registerSetupCommands = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("setup", {
cli.command(CLI_COMMANDS.setup, {
description: "Install requirements and configure agents",
options: z.object({
yes: z
@ -178,7 +179,7 @@ const registerSetupCommands = (
),
),
});
cli.command("doctor", {
cli.command(CLI_COMMANDS.doctor, {
description: "Check whether REA is ready",
options: z.object({
target: z.string().optional().describe("Optional app path to check"),
@ -186,7 +187,7 @@ const registerSetupCommands = (
run: ({ options }) =>
logCliCommand(logger, "doctor", () => runDoctor(options.target)),
});
cli.command("uninstall", {
cli.command(CLI_COMMANDS.uninstall, {
description: "Remove REA-owned agent configuration and skill files",
options: z.object({
purgeData: z
@ -198,7 +199,7 @@ const registerSetupCommands = (
run: ({ options }) =>
logCliCommand(logger, "uninstall", () => runUninstall(options.purgeData)),
});
cli.command("upgrade", {
cli.command(CLI_COMMANDS.upgrade, {
description: "Upgrade a global npm installation to the latest REA release",
run: ({ formatExplicit }) =>
logCliCommand(logger, "upgrade", () =>
@ -237,7 +238,7 @@ const registerXrefsCommand = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("xrefs", {
cli.command(CLI_COMMANDS.xrefs, {
description: "List bounded references to an analyzed address",
args: z.object({
path: z.string().describe("App or program path"),
@ -260,7 +261,7 @@ const registerTraceCommand = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("trace", {
cli.command(CLI_COMMANDS.trace, {
description: "Trace a bounded literal feature through analyzed references",
args: z.object({
path: z.string().describe("App or program path"),
@ -297,7 +298,10 @@ const registerCapabilityCommands = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
for (const command of ["capabilities", "providers"] as const) {
for (const command of [
CLI_COMMANDS.capabilities,
CLI_COMMANDS.providers,
] as const) {
cli.command(command, {
description:
command === "capabilities"
@ -312,7 +316,7 @@ const registerFunctionCommand = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("function", {
cli.command(CLI_COMMANDS.function, {
description: "Analyze one bounded function with evidence",
args: z.object({
path: z.string().describe("App or program path"),
@ -352,7 +356,7 @@ const registerSearchCommand = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("search", {
cli.command(CLI_COMMANDS.search, {
description: "Search bounded analyzed strings or procedure names",
args: z.object({
path: z.string().describe("App or program path"),
@ -389,7 +393,7 @@ const registerReferenceSourceCommand = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("import-reference-source", {
cli.command(CLI_COMMANDS.importReferenceSource, {
description: "Import a bounded source tree as historical reference only",
args: z.object({
root: z
@ -455,7 +459,7 @@ const registerArtifactCommands = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("inventory-artifact", {
cli.command(CLI_COMMANDS.inventoryArtifact, {
description: "Build a bounded deterministic artifact graph",
args: z.object({
path: z.string().describe("Application or package path"),
@ -495,7 +499,7 @@ const registerArtifactCommands = (
),
),
});
cli.command("extract-artifact", {
cli.command(CLI_COMMANDS.extractArtifact, {
description: "Extract explicitly selected artifact occurrences safely",
args: z.object({
path: z.string().describe("Application or package path"),
@ -527,9 +531,9 @@ const registerNativeCommands = (
logger: Logger,
): void => {
for (const [command, tool] of [
["inspect-macho", "inspect_macho"],
["inspect-signature", "inspect_signature"],
["list-architectures", "list_architectures"],
[CLI_COMMANDS.inspectMacho, "inspect_macho"],
[CLI_COMMANDS.inspectSignature, "inspect_signature"],
[CLI_COMMANDS.listArchitectures, "list_architectures"],
] as const) {
cli.command(command, {
description: `Run ${tool} without launching Hopper`,
@ -540,7 +544,7 @@ const registerNativeCommands = (
),
});
}
cli.command("inspect-plist", {
cli.command(CLI_COMMANDS.inspectPlist, {
description: "Parse app plist metadata without launching Hopper",
args: z.object({ path: z.string().describe("App or Mach-O path") }),
options: z.object({
@ -557,7 +561,7 @@ const registerNativeCommands = (
),
),
});
cli.command("demangle-swift", {
cli.command(CLI_COMMANDS.demangleSwift, {
description: "Demangle a bounded Swift symbol batch without Hopper",
args: z.object({
path: z.string().describe("Artifact path used for evidence identity"),

View File

@ -19,6 +19,7 @@ import {
} from "./domain/webScreenshot.js";
import type { JsonValue } from "./domain/jsonValue.js";
import type { Logger } from "./logger.js";
import { CLI_COMMANDS } from "./cliCommandNames.js";
const scopeOptions = {
allowedOrigins: z.array(z.string().min(1)).optional(),
@ -40,7 +41,7 @@ const registerWebMcp = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("discover-webmcp-tools", {
cli.command(CLI_COMMANDS.discoverWebMcpTools, {
description: "Passively discover page-declared WebMCP tools",
args: z.object({ endpoint: z.string(), targetId: z.string() }),
options: z.object({
@ -87,7 +88,7 @@ const registerCaptureDiff = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("compare-web-captures", {
cli.command(CLI_COMMANDS.compareWebCaptures, {
description: "Compare two normalized web capture JSON values",
args: z.object({ beforeJson: z.string(), afterJson: z.string() }),
options: z.object({
@ -116,7 +117,7 @@ const registerScreenshot = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("capture-web-screenshot", {
cli.command(CLI_COMMANDS.captureWebScreenshot, {
description: "Capture an explicitly approved visible page viewport",
args: z.object({ endpoint: z.string(), targetId: z.string() }),
options: z.object({
@ -157,7 +158,7 @@ const registerScreenshotDiff = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("compare-web-screenshots", {
cli.command(CLI_COMMANDS.compareWebScreenshots, {
description: "Compare two self-verifying PNG artifact JSON values",
args: z.object({ beforeJson: z.string(), afterJson: z.string() }),
options: z.object({

View File

@ -19,6 +19,7 @@ import { observeWebSessionInputSchema } from "./domain/browserSession.js";
import { AnalysisInputError, projectAnalysisError } from "./domain/errors.js";
import type { JsonValue } from "./domain/jsonValue.js";
import type { Logger } from "./logger.js";
import { CLI_COMMANDS } from "./cliCommandNames.js";
const browserScopeOptions = {
allowedOrigins: z
@ -45,7 +46,7 @@ const registerTargetList = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("list-browser-targets", {
cli.command(CLI_COMMANDS.listBrowserTargets, {
description: "List approved pages from a user-owned loopback CDP browser",
args: z.object({
endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
@ -83,7 +84,7 @@ const registerPageInspection = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("inspect-web-page", {
cli.command(CLI_COMMANDS.inspectWebPage, {
description: "Passively inspect one approved page through CDP",
args: z.object({
endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
@ -236,7 +237,7 @@ const registerBundleAnalysis = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("analyze-web-bundle", {
cli.command(CLI_COMMANDS.analyzeWebBundle, {
description: "Capture and statically analyze an approved page bundle",
args: z.object({
endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
@ -312,7 +313,7 @@ const registerObservationSession = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("observe-web-session", {
cli.command(CLI_COMMANDS.observeWebSession, {
description: "Observe user-driven page navigation during a bounded window",
args: z.object({
endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),

44
src/cliCommandNames.ts Normal file
View File

@ -0,0 +1,44 @@
/** Canonical names used by every one-shot CLI command registration. */
export const CLI_COMMANDS = Object.freeze({
analyze: "analyze",
inspect: "inspect",
decompile: "decompile",
setup: "setup",
doctor: "doctor",
uninstall: "uninstall",
upgrade: "upgrade",
xrefs: "xrefs",
trace: "trace",
capabilities: "capabilities",
providers: "providers",
function: "function",
search: "search",
importReferenceSource: "import-reference-source",
inventoryArtifact: "inventory-artifact",
extractArtifact: "extract-artifact",
inspectMacho: "inspect-macho",
inspectSignature: "inspect-signature",
listArchitectures: "list-architectures",
inspectPlist: "inspect-plist",
demangleSwift: "demangle-swift",
evidenceImport: "evidence-import",
evidenceExport: "evidence-export",
compare: "compare",
investigateVersions: "investigate-versions",
captureProcess: "capture-process",
compareProcessCaptures: "compare-process-captures",
policy: "policy",
listBrowserTargets: "list-browser-targets",
inspectWebPage: "inspect-web-page",
analyzeWebBundle: "analyze-web-bundle",
observeWebSession: "observe-web-session",
discoverWebMcpTools: "discover-webmcp-tools",
compareWebCaptures: "compare-web-captures",
captureWebScreenshot: "capture-web-screenshot",
compareWebScreenshots: "compare-web-screenshots",
listElectronTargets: "list-electron-targets",
inspectElectronPage: "inspect-electron-page",
});
/** Ordered primary CLI inventory; aliases are intentionally excluded. */
export const CLI_COMMAND_NAMES = Object.freeze(Object.values(CLI_COMMANDS));

View File

@ -15,6 +15,7 @@ import {
import { AnalysisInputError, projectAnalysisError } from "./domain/errors.js";
import type { JsonValue } from "./domain/jsonValue.js";
import type { Logger } from "./logger.js";
import { CLI_COMMANDS } from "./cliCommandNames.js";
const scopeOptions = {
allowedFileRoots: z
@ -29,7 +30,7 @@ export const registerElectronCommands = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("list-electron-targets", {
cli.command(CLI_COMMANDS.listElectronTargets, {
description: "List root-confined file pages from Electron CDP",
args: z.object({ endpoint: z.string() }),
options: z.object({
@ -58,7 +59,7 @@ export const registerElectronCommands = (
return result.ok ? result.value : cliError(result.error);
}),
});
cli.command("inspect-electron-page", {
cli.command(CLI_COMMANDS.inspectElectronPage, {
description: "Passively inspect one root-confined Electron file page",
args: z.object({ endpoint: z.string(), targetId: z.string() }),
options: z.object({

View File

@ -8,6 +8,7 @@ import {
import { parseConfig } from "./config.js";
import { logCliCommand } from "./cliLogging.js";
import type { Logger } from "./logger.js";
import { CLI_COMMANDS } from "./cliCommandNames.js";
import type { JsonValue } from "./domain/jsonValue.js";
import {
AnalysisProtocolError,
@ -23,7 +24,7 @@ export const registerEvidenceCommands = (
cli: ReturnType<typeof Cli.create>,
logger: Logger,
): void => {
cli.command("evidence-import", {
cli.command(CLI_COMMANDS.evidenceImport, {
description: "Validate and import a bounded local Evidence v2 bundle",
args: z.object({
path: z.string().describe("Evidence bundle JSON path"),
@ -43,7 +44,7 @@ export const registerEvidenceCommands = (
return imported.ok ? imported.value : cliError(imported.error);
}),
});
cli.command("evidence-export", {
cli.command(CLI_COMMANDS.evidenceExport, {
description: "Validate and atomically export canonical Evidence v2 JSON",
args: z.object({
source: z.string().describe("Existing evidence bundle JSON path"),
@ -70,7 +71,7 @@ export const registerEvidenceCommands = (
return exported.ok ? exported.value : cliError(exported.error);
}),
});
cli.command("compare", {
cli.command(CLI_COMMANDS.compare, {
aliases: ["compare-bundles"],
description: "Compare two canonical Evidence v2 bundles",
args: z.object({

Some files were not shown because too many files have changed in this diff Show More