feat(dotnet): add managed member inspection
This commit is contained in:
parent
c251c38aa2
commit
98cad3788d
|
|
@ -27,7 +27,7 @@
|
|||
## Tool Contract Impact
|
||||
|
||||
<!-- If this PR adds, removes, or modifies MCP tools, list them here. -->
|
||||
<!-- The current inventory is 84 tools (33 direct + 10 enhanced + 5 native + 2 artifact + 1 managed + 8 browser + 4 Electron + 3 application + 18 session). Canonical facts: docs/product-catalog.json. -->
|
||||
<!-- The current inventory is 85 tools (33 direct + 10 enhanced + 5 native + 2 artifact + 2 managed + 8 browser + 4 Electron + 3 application + 18 session). Canonical facts: docs/product-catalog.json. -->
|
||||
|
||||
## Related Issues
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ See [docs/architecture.mermaid](docs/architecture.mermaid) for a visual architec
|
|||
- `src/cli.ts`: one-shot CLI adapter for setup, diagnostics, analysis, and decompilation.
|
||||
- `src/config.ts`: Zod-validated parsing of environment configuration into `AppConfig`.
|
||||
- `src/domain/`: pure, side-effect-free modules. `errors.ts` owns the tagged error algebra; `result.ts` owns `Result`/`ok`/`err`; `hopperValues.ts` owns shared function-dossier values plus Hopper boundary parsers; `symbolAnalysis.ts` parses Swift/ObjC names; `javascriptApplicationGraph.ts` validates and canonically commits the provider-neutral JavaScript Application Graph; `javascriptStaticAnalysis.ts` performs bounded AST-only JavaScript structure recovery.
|
||||
- `src/contracts/`: caller-visible schemas for 33 direct, 10 enhanced, 5 native, 2 artifact, 1 managed, 8 browser, 4 Electron, 3 application, and 18 session tools; `enhancedInputs.ts` owns enhanced input parsing.
|
||||
- `src/contracts/`: caller-visible schemas for 33 direct, 10 enhanced, 5 native, 2 artifact, 2 managed, 8 browser, 4 Electron, 3 application, and 18 session tools; `enhancedInputs.ts` owns enhanced input parsing.
|
||||
- `src/process/`: provider-neutral process ownership and lifecycle primitives. It owns private runtime roots, absolute startup deadlines, correlated request waits, bounded output capture, and TERM-to-KILL cleanup without defining any provider wire protocol.
|
||||
- `src/replay/`: Linux x64 controlled-JavaScript-replay adapter. It owns exact runtime closure inspection, Bubblewrap/seccomp/cgroup admission, the disposable worker, strict parent/worker protocol validation, and complete cleanup observation.
|
||||
- `src/browser/`: loopback CDP discovery, bounded WebSocket transport, exact-origin target authorization, and passive browser observation normalization.
|
||||
|
|
@ -61,7 +61,7 @@ See [docs/architecture.mermaid](docs/architecture.mermaid) for a visual architec
|
|||
- `npm run verify:ghidra`: build and run the real-Ghidra verifier against `GHIDRA_INSTALL_DIR` and optional `GHIDRA_TARGET_PATH`.
|
||||
- `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:replay`: build and run the real Linux Bubblewrap/seccomp/cgroup verifier against source-owned replay fixtures; set `REA_REPLAY_INPUT_PATH` to verify an operator-local manifest.
|
||||
- `npm run verify:package`: pack and test the CLI, setup transaction, skill, and 84-tool target-free MCP server in an isolated environment.
|
||||
- `npm run verify:package`: pack and test the CLI, setup transaction, skill, and 85-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.
|
||||
|
|
@ -95,7 +95,7 @@ Use ESM TypeScript, two-space indentation, and Prettier defaults. Keep compiler
|
|||
|
||||
## Testing Guidelines
|
||||
|
||||
Name tests `*.test.ts`. Use Vitest and production seams (`tests/fixtures/`) rather than module mocks. Domain tests assert pure behavior; adapter tests use fake launcher/socket seams; MCP tests connect with the beta.3 client. Preserve the 33 direct, 10 enhanced, 5 native, 2 artifact, 1 managed, 8 browser, 4 Electron, 3 application, and 18 session tool inventory (84 total). Cover malformed input, cancellation, timeouts, process exit, concurrency, limits, and clean shutdown. Real Hopper, Ghidra, browser, JavaScript replay, and any real managed-tool claims cannot be replaced by mocks; use the corresponding `verify:*` command.
|
||||
Name tests `*.test.ts`. Use Vitest and production seams (`tests/fixtures/`) rather than module mocks. Domain tests assert pure behavior; adapter tests use fake launcher/socket seams; MCP tests connect with the beta.3 client. Preserve the 33 direct, 10 enhanced, 5 native, 2 artifact, 2 managed, 8 browser, 4 Electron, 3 application, and 18 session tool inventory (85 total). Cover malformed input, cancellation, timeouts, process exit, concurrency, limits, and clean shutdown. Real Hopper, Ghidra, browser, JavaScript replay, and any real managed-tool claims cannot be replaced by mocks; use the corresponding `verify:*` command.
|
||||
|
||||
## Commit & Pull Request Guidelines
|
||||
|
||||
|
|
|
|||
10
README.md
10
README.md
|
|
@ -10,11 +10,11 @@
|
|||
|
||||
[](https://www.npmjs.com/package/rea-agents)
|
||||
[](https://github.com/morluto/rea/actions/workflows/ci.yml)
|
||||
[](#84-tools-for-investigation)
|
||||
[](#85-tools-for-investigation)
|
||||
[](https://nodejs.org/)
|
||||
[](LICENSE)
|
||||
|
||||
[Quick start](#quick-start) · [Current status](#current-status) · [Investigation model](#the-investigation-model) · [84 tools](#84-tools-for-investigation) · [Roadmap](#roadmap) · [How it works](#how-it-works)
|
||||
[Quick start](#quick-start) · [Current status](#current-status) · [Investigation model](#the-investigation-model) · [85 tools](#85-tools-for-investigation) · [Roadmap](#roadmap) · [How it works](#how-it-works)
|
||||
|
||||
<br />
|
||||
|
||||
|
|
@ -320,7 +320,7 @@ REA handles the app analysis in steps 1–5. The agent performs step 6 with its
|
|||
- Analyze Swift and Objective-C metadata without manually untangling every mangled symbol.
|
||||
- Leave names, comments, and bookmarks in Hopper so human and agent analysis reinforce each other.
|
||||
|
||||
## 84 tools for investigation
|
||||
## 85 tools for investigation
|
||||
|
||||
| Tool family | Count | Examples |
|
||||
| ------------------------- | ----: | -------------------------------------------------------------------------------------------------------------------------------- |
|
||||
|
|
@ -328,7 +328,7 @@ REA handles the app analysis in steps 1–5. The agent performs step 6 with its
|
|||
| Investigation workflows | 10 | `binary_overview`, `analyze_function`, `batch_decompile`, `trace_feature`, call graphs, Swift and Objective-C discovery |
|
||||
| Native macOS utilities | 5 | Mach-O metadata, code signatures, plists, architectures, Swift demangling; Hopper-free and provenance-bearing |
|
||||
| Artifact graph | 2 | deterministic directory, ZIP/APK/IPA, and ASAR inventory; explicitly selected extraction into an absent owned tree |
|
||||
| Managed PE/CLI | 1 | read-only PE/CLI classification plus assembly/module identity, target frameworks, references, resources, and attributes |
|
||||
| Managed PE/CLI | 2 | PE/CLI identity, metadata members, signatures, method-body CIL hashes, call edges, and field-access anchors |
|
||||
| Browser observation | 8 | exact-origin CDP capture, bundle and source-map analysis, WebMCP discovery, session timelines, capture diff, and visual evidence |
|
||||
| Electron analysis | 4 | passive root-confined observation, bounded static application mapping, and evidence-backed static/runtime reconciliation |
|
||||
| Application workflows | 3 | bounded cross-layer traces, unique-only version matching, and approved Linux-isolated extracted-module replay |
|
||||
|
|
@ -348,7 +348,7 @@ REA is already useful for native application, browser, and Electron investigatio
|
|||
- Reconstruct bounded static package, entrypoint, Webpack/Rspack module, import, worker, endpoint, storage, source-map, BrowserWindow, preload, contextBridge, IPC, utility-process, and native-add-on structure from an approved local directory or ASAR through `analyze_javascript_application` or `rea analyze-javascript-application`. The AST-only [application service](docs/javascript-artifact-reconstruction.md) never executes bootstrap code, pairs only unique exact literal IPC channels, and reports dynamic or ambiguous channels as unresolved.
|
||||
- Reconcile that static graph with existing passive web or Electron Evidence through `reconcile_javascript_runtime` or `rea reconcile-javascript-runtime`. Exact captured bytes outrank caller-declared file/URL mappings; target, frame, script, worker, cache, and asset ambiguity stays explicit, source-map authority stays separate, and a module resident in an observed bundle is never reported as executed. See [JavaScript static/runtime reconciliation](docs/javascript-runtime-reconciliation.md).
|
||||
- Trace a literal route, string, API, IPC channel, module, or native export through authenticated application Evidence with explicit traversal bounds, then hand exact native artifact digests and requested exports to retained Ghidra or Hopper Evidence without automatic provider switching. Compare application versions using unique-only digest, source-map, structural, and semantic tiers; duplicate, incomplete, and truncated matches stay unknown. See [cross-layer JavaScript application workflows](docs/javascript-application-workflows.md).
|
||||
- Classify PE/CLI managed artifacts with `inspect_managed_artifact` or `rea inspect-managed-artifact`, reporting exact module, assembly, target framework, reference, resource, and custom-attribute evidence without loading the assembly, resolving CLR dependencies, or executing target code. Method signatures, CIL, decompilation, and managed/native composition remain future managed-code contracts.
|
||||
- Classify PE/CLI managed artifacts with `inspect_managed_artifact` / `rea inspect-managed-artifact`, then inspect bounded metadata members, signatures, method-body CIL hashes, exception regions, call edges, and field-access anchors with `inspect_managed_members` / `rea inspect-managed-members`. Both paths are static and never load the assembly, resolve CLR dependencies, or execute target code; decompiled C#, cross-build matching, and managed/native composition remain future managed-code contracts.
|
||||
- Traverse content-addressed artifact graphs without extraction; on macOS, read-only DMG traversal additionally requires `native_mount_approved: true` and `REA_ARTIFACT_NATIVE_MOUNT_ENABLED=true`. Materialize only approved occurrences into absent output roots.
|
||||
- Build bounded function dossiers with pseudocode, assembly, CFG edges, comments, calls, references, strings, and names.
|
||||
- Search and trace features across symbols, strings, metadata, references, and call paths.
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@
|
|||
|
||||
[](https://www.npmjs.com/package/rea-agents)
|
||||
[](https://github.com/morluto/rea/actions/workflows/ci.yml)
|
||||
[](#منصة-من-84-أداة)
|
||||
[](#منصة-من-85-أداة)
|
||||
[](https://nodejs.org/)
|
||||
[](LICENSE)
|
||||
|
||||
[البدء السريع](#البدء-السريع) · [من الملف التنفيذي إلى السلوك](#من-الملف-التنفيذي-إلى-السلوك) · [84 أداة](#منصة-من-84-أداة) · [كيف يعمل](#كيف-يعمل) · [الأسئلة الشائعة](#الأسئلة-الشائعة)
|
||||
[البدء السريع](#البدء-السريع) · [من الملف التنفيذي إلى السلوك](#من-الملف-التنفيذي-إلى-السلوك) · [85 أداة](#منصة-من-85-أداة) · [كيف يعمل](#كيف-يعمل) · [الأسئلة الشائعة](#الأسئلة-الشائعة)
|
||||
|
||||
<br />
|
||||
|
||||
|
|
@ -157,7 +157,7 @@ rea uninstall --purge-data
|
|||
|
||||
افحص التحقق من الإدخال، والتشفير، والصلاحيات، والتخزين، ومسارات الأخطاء من دون رفع الملف التنفيذي إلى خدمة بعيدة.
|
||||
|
||||
## منصة من 84 أداة
|
||||
## منصة من 85 أداة
|
||||
|
||||
| عائلة الأدوات | العدد | أمثلة |
|
||||
| --------------------- | ----: | ----------------------------------------------------------------------------------------------------- |
|
||||
|
|
@ -165,7 +165,7 @@ rea uninstall --purge-data
|
|||
| التحليل المركب | 10 | النظرة العامة، وفك الترجمة الدفعي، ومخططات الاستدعاء، والمراجع، واكتشاف الأنواع |
|
||||
| أدوات macOS الأصلية | 5 | بيانات Mach-O والتوقيعات وملفات plist والمعماريات وفك رموز Swift دون تشغيل Hopper |
|
||||
| رسم القطع الأثرية | 2 | جرد حتمي للدلائل وZIP/APK/IPA وASAR واستخراج معاملاتي محدد صراحة |
|
||||
| Managed PE/CLI | 1 | تصنيف PE/CLI للقراءة فقط، وهوية التجميع/الوحدة، والأطر المستهدفة، والمراجع، والموارد، والسمات |
|
||||
| Managed PE/CLI | 2 | تصنيف PE/CLI للقراءة فقط، وهوية التجميع/الوحدة، والأطر المستهدفة، والمراجع، والموارد، والسمات |
|
||||
| مراقبة المتصفح | 8 | التقاط CDP محدود الأصل وتحليل الحزم وخرائط المصدر واكتشاف WebMCP والفروق والأدلة المرئية |
|
||||
| تحليل Electron | 4 | مراقبة سلبية ضمن جذور canonical، ورسم ثابت ومحدود للتطبيق، ومطابقة ثابتة/وقت تشغيل قائمة على Evidence |
|
||||
| سير عمل التطبيقات | 3 | تتبع محدود ومقارنة إصدارات فريدة وإعادة تشغيل وحدات معزولة ومعتمدة على Linux |
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@
|
|||
|
||||
[](https://www.npmjs.com/package/rea-agents)
|
||||
[](https://github.com/morluto/rea/actions/workflows/ci.yml)
|
||||
[](#84-ツールのワークベンチ)
|
||||
[](#85-ツールのワークベンチ)
|
||||
[](https://nodejs.org/)
|
||||
[](LICENSE)
|
||||
|
||||
[クイックスタート](#クイックスタート) · [バイナリから動作へ](#バイナリから動作へ) · [84 ツール](#84-ツールのワークベンチ) · [仕組み](#仕組み) · [FAQ](#faq)
|
||||
[クイックスタート](#クイックスタート) · [バイナリから動作へ](#バイナリから動作へ) · [85 ツール](#85-ツールのワークベンチ) · [仕組み](#仕組み) · [FAQ](#faq)
|
||||
|
||||
<br />
|
||||
|
||||
|
|
@ -147,7 +147,7 @@ REA は手順 1〜5 のバイナリ解析を処理し、手順 6 はエージェ
|
|||
- Swift / Objective-C のメタデータを解析する。
|
||||
- Hopper に名前、コメント、ブックマークを残し、人間とエージェントの調査を共有する。
|
||||
|
||||
## 84 ツールのワークベンチ
|
||||
## 85 ツールのワークベンチ
|
||||
|
||||
| ツール群 | 数 | 例 |
|
||||
| ---------------------- | --: | ------------------------------------------------------------------------------------------------------------------- |
|
||||
|
|
@ -155,7 +155,7 @@ REA は手順 1〜5 のバイナリ解析を処理し、手順 6 はエージェ
|
|||
| 合成解析 | 10 | `binary_overview`, `analyze_function`, `batch_decompile`, `get_call_graph`, `find_xrefs_to_name`, Swift / ObjC 検出 |
|
||||
| macOS ネイティブ | 5 | Mach-O メタデータ、署名、plist、アーキテクチャ、Swift デマングル。Hopper 起動不要 |
|
||||
| アーティファクトグラフ | 2 | ディレクトリ、ZIP/APK/IPA、ASAR の決定的一覧と明示選択されたトランザクション抽出 |
|
||||
| Managed PE/CLI | 1 | 読み取り専用 PE/CLI 分類、アセンブリ/モジュール識別、対象フレームワーク、参照、リソース、属性 |
|
||||
| Managed PE/CLI | 2 | 読み取り専用 PE/CLI 分類、アセンブリ/モジュール識別、対象フレームワーク、参照、リソース、属性 |
|
||||
| ブラウザ観察 | 8 | origin 限定 CDP 取得、bundle/source map 解析、WebMCP 検出、セッション、capture diff、視覚証拠 |
|
||||
| Electron 解析 | 4 | canonical ファイルルート内の受動観察、有界な静的アプリマッピング、Evidence に基づく静的/実行時の照合 |
|
||||
| アプリケーション | 3 | 有界なクロスレイヤー追跡、一意限定のバージョン比較、承認済み Linux 隔離 extracted-module replay |
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@
|
|||
|
||||
[](https://www.npmjs.com/package/rea-agents)
|
||||
[](https://github.com/morluto/rea/actions/workflows/ci.yml)
|
||||
[](#84개-도구로-구성된-워크벤치)
|
||||
[](#85개-도구로-구성된-워크벤치)
|
||||
[](https://nodejs.org/)
|
||||
[](LICENSE)
|
||||
|
||||
[빠른 시작](#빠른-시작) · [바이너리에서 동작까지](#바이너리에서-동작까지) · [84개 도구](#84개-도구로-구성된-워크벤치) · [작동 방식](#작동-방식) · [FAQ](#faq)
|
||||
[빠른 시작](#빠른-시작) · [바이너리에서 동작까지](#바이너리에서-동작까지) · [85개 도구](#85개-도구로-구성된-워크벤치) · [작동 방식](#작동-방식) · [FAQ](#faq)
|
||||
|
||||
<br />
|
||||
|
||||
|
|
@ -147,7 +147,7 @@ REA는 1–5단계의 바이너리 분석을 처리합니다. 6단계는 에이
|
|||
- Swift 및 Objective-C 메타데이터를 분석합니다.
|
||||
- Hopper에 이름, 주석, 북마크를 남겨 사람과 에이전트의 분석을 연결합니다.
|
||||
|
||||
## 84개 도구로 구성된 워크벤치
|
||||
## 85개 도구로 구성된 워크벤치
|
||||
|
||||
| 도구 그룹 | 수 | 예시 |
|
||||
| ------------------- | --: | -------------------------------------------------------------------------------------------------------------------- |
|
||||
|
|
@ -155,7 +155,7 @@ REA는 1–5단계의 바이너리 분석을 처리합니다. 6단계는 에이
|
|||
| 합성 분석 | 10 | `binary_overview`, `analyze_function`, `batch_decompile`, `get_call_graph`, `find_xrefs_to_name`, Swift 및 ObjC 탐색 |
|
||||
| macOS 네이티브 도구 | 5 | Mach-O 메타데이터, 코드 서명, plist, 아키텍처, Swift 디맹글링. Hopper 실행 불필요 |
|
||||
| 아티팩트 그래프 | 2 | 디렉터리, ZIP/APK/IPA, ASAR 결정적 인벤토리와 명시적으로 선택한 트랜잭션 추출 |
|
||||
| Managed PE/CLI | 1 | 읽기 전용 PE/CLI 분류, 어셈블리/모듈 ID, 대상 프레임워크, 참조, 리소스, 속성 |
|
||||
| Managed PE/CLI | 2 | 읽기 전용 PE/CLI 분류, 어셈블리/모듈 ID, 대상 프레임워크, 참조, 리소스, 속성 |
|
||||
| 브라우저 관찰 | 8 | origin 제한 CDP 캡처, bundle/source map 분석, WebMCP 검색, 세션 타임라인, capture diff 및 시각 증거 |
|
||||
| Electron 분석 | 4 | canonical 파일 루트 내 수동 관찰, 제한된 정적 앱 매핑, Evidence 기반 정적/런타임 조정 |
|
||||
| 애플리케이션 | 3 | 제한된 교차 계층 추적, 고유 일치 버전 비교, 승인된 Linux 격리 extracted-module replay |
|
||||
|
|
|
|||
|
|
@ -10,11 +10,11 @@
|
|||
|
||||
[](https://www.npmjs.com/package/rea-agents)
|
||||
[](https://github.com/morluto/rea/actions/workflows/ci.yml)
|
||||
[](#84-个工具组成的工作台)
|
||||
[](#85-个工具组成的工作台)
|
||||
[](https://nodejs.org/)
|
||||
[](LICENSE)
|
||||
|
||||
[快速开始](#快速开始) · [从二进制到行为](#从二进制到行为) · [84 个工具](#84-个工具组成的工作台) · [工作原理](#工作原理) · [常见问题](#常见问题)
|
||||
[快速开始](#快速开始) · [从二进制到行为](#从二进制到行为) · [85 个工具](#85-个工具组成的工作台) · [工作原理](#工作原理) · [常见问题](#常见问题)
|
||||
|
||||
<br />
|
||||
|
||||
|
|
@ -147,7 +147,7 @@ REA 负责第 1–5 步中的二进制分析。第 6 步由智能体使用其常
|
|||
- 分析 Swift 和 Objective-C 元数据。
|
||||
- 在 Hopper 中留下名称、注释与书签,使人与智能体的分析互相增强。
|
||||
|
||||
## 84 个工具组成的工作台
|
||||
## 85 个工具组成的工作台
|
||||
|
||||
| 工具类别 | 数量 | 示例 |
|
||||
| -------------- | ---: | -------------------------------------------------------------------------------------------------------------------- |
|
||||
|
|
@ -155,7 +155,7 @@ REA 负责第 1–5 步中的二进制分析。第 6 步由智能体使用其常
|
|||
| 组合分析 | 10 | `binary_overview`, `analyze_function`, `batch_decompile`, `get_call_graph`, `find_xrefs_to_name`、Swift 与 ObjC 发现 |
|
||||
| macOS 原生工具 | 5 | Mach-O 元数据、代码签名、plist、架构与 Swift 符号还原,无需启动 Hopper |
|
||||
| 制品图谱 | 2 | 确定性目录、ZIP/APK/IPA 与 ASAR 清单,以及显式选择的事务式提取 |
|
||||
| Managed PE/CLI | 1 | 只读 PE/CLI 分类、程序集/模块身份、目标框架、引用、资源与自定义属性 |
|
||||
| Managed PE/CLI | 2 | 只读 PE/CLI 分类、程序集/模块身份、目标框架、引用、资源与自定义属性 |
|
||||
| 浏览器观察 | 8 | 精确来源 CDP 抓取、bundle/source map 分析、WebMCP 发现、会话时间线、capture diff 与视觉证据 |
|
||||
| Electron 分析 | 4 | 限定 canonical 文件根的被动观察、有界静态应用映射,以及基于 Evidence 的静态/运行时对账 |
|
||||
| 应用工作流 | 3 | 有界跨层追踪、唯一匹配跨版本图比较,以及经批准的 Linux 隔离 extracted-module replay |
|
||||
|
|
|
|||
|
|
@ -3,9 +3,11 @@
|
|||
- Status: Accepted
|
||||
- Date: 2026-07-16
|
||||
- Implementation status: Read-only PE/CLI triage and exact identity are shipped
|
||||
through `inspect_managed_artifact` / `rea inspect-managed-artifact`. Metadata
|
||||
signatures, method bodies, normalized CIL, decompilation, cross-build matching,
|
||||
and managed/native composition remain future contracts.
|
||||
through `inspect_managed_artifact` / `rea inspect-managed-artifact`. Bounded
|
||||
metadata, signatures, method bodies, normalized CIL, exception regions, call
|
||||
edges, and field-access anchors are shipped through `inspect_managed_members`
|
||||
/ `rea inspect-managed-members`. Decompiled C#, cross-build matching, and
|
||||
managed/native composition remain future contracts.
|
||||
|
||||
## Context
|
||||
|
||||
|
|
@ -376,7 +378,7 @@ or development-only oracles.
|
|||
## Rollout gates
|
||||
|
||||
1. Add read-only triage and identity with malformed-input bounds. Shipped.
|
||||
2. Add metadata, signatures, method bodies, normalized CIL, and exact Evidence.
|
||||
2. Add metadata, signatures, method bodies, normalized CIL, and exact Evidence. Shipped.
|
||||
3. Add obfuscation-resistant slices and cross-build match states.
|
||||
4. Compose explicit managed/native boundaries with Hopper/Ghidra.
|
||||
5. Add source-built, pinned real-tool, package, CLI, and MCP conformance.
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
window.hierarchyData = "eJy1mVFv3CgQx7+LnzmfzWLAeUtXuTan6rJKWvXhFEXEJhtUL/gwm96q6nc/YW82OMYxdnQvzZr6P/MDhgHGPyOtlGmis79RRilAeEVygDCCFGCa0RSgFGc5yNAKIoDTJKcAQZgkAMI0sb8xTgAkaYZvQaT5Q8ULI5RsorOfkbVo/0q249FZdC5ZdWhEc6G10hGIvgtZRmcppCDa6yo6i4qKNQ1vfi/Vjgl5x+17TdyTxY9mV0WgezU6i0xT/mbt/NY1gKh4FFWpubQdwkkCEE4hQBgi27XM9sx2Ets2Yv/JMUDEvkIgAYigBCCCEUCE2P+wI0KTFCCaIoBongCUJxCgPLW/rL08WwECU5Le/gKR9eh0+JOqa65ndtcRzeoshRlA1CJRtAKIZhggShKAKD2ypdAzGRutjCpUtXBSevIJ3hYCIg/Epaz3ZiHBizbE/SrzuL/am+X+HXEIAPKtiDWr2b2ohDl8leyJiYrdV3whz7itEDzsi5E1kwWvKl4uRnL1IRjEh/FF7LhaPE+uOgQhxw7CRqsnUXJ9w4/5bSaEXx+AQXqL9tnMeclqMzuz+NQhCJA4CB+0+tFwfXXfcP3EFgzFiIEQEOQm13NtxAMrzFXN9RIOvz4EA7sp7MIOqSz4pTR8q4U5zMTw60MwCPZgfBY7MXeFDLUh7ntb+7OJP8TsvDWQBjinSeo4v5RPvDFi287iN6W/NzUr5mK8YSQEKHVj4qv8LtUPec23ojF6bkT41CEIMBscPZZlzKE2xP1q6H7pvuFThyCg1QBh4fHGIw4ByPAA4JrvlJkbjANpiHMyPHputCp4M/fAPdSGuKfpwP2NYXpZ8L0oQ1znbs/XSj6I7X7RnjDUBrjPE3eL/kt9EJLpw1XN53ofSEOcp27fO/0Xprd87rgPpCHOe2t+w/VONI1Q8pr/sxd69rIfMRACkrkr/5rXFTtsKiZvDJu9H/nU0wjtbdg7GDeFqvnJPczws3shDdcPrHghqE+ijapEcYhfWRnFOJnq3wkhTFNsL+oQ33aMKR6dMN6Yd1Me7QRwdjjQj/NRM/l+mNZKIIqtXzgo3/i9PQ9Io/Thmjdqr+0Brd4HQv1w5PGordmzSVKc33a0OHdob4y94n3j98/mF1AObIQNnC0Owd7tQJRb/pntZfE4QfHYJvo7V8F17D6GI+QjCFy/G4KPL/6ReUIpJqvbjowMTyTndV2Jot1hBpCe5OQnHDUVkCxT2tuwTrt9ezcMQOkL4leP0/5hmrtHhY+PotQsKGS27at3roLr2H0MDBlbwBxBmAyZaYgFIQNh2qbo9seA7BNnZcWbJiRe3sJ7bSdksiBCA56QYOlxnKLj1WOAf4wTTwHkeDgNipq6e/fulTb22lqw2DMI2pju5o9Q90y0LutjvSNkzO67V++GqtjTND14GaR5H+bClp+0kjNpXstiX1tI9ZW4PKcK6nMFZqP01A7LXlLenVOD7gi8BmfPKF7RDGQpIVlXNl9RX814XQk+eUgJou0sBWYu+2HGX8Xvz+c7eCYndGTgMkJJ+4HluPvZH2+grpksRcnM1GllFvPJ6IIMjBBo98bb7lKXZIOL1Q1vD5ZvLRqXtieK+0+Ti6UNwDGCmQtloI2HLXPHyw6QHan2w+Cb9eG5sF4DnrLxImybn1tsG6y9qsGuVo0wPCQzurgDYTxsmZzs9ruqW0495tblozhiIR5rnzuOdmux49h+I3ZXeWMuym3QZcnF/ZM9sZtCi9o8l+U/alY/rpU0/F8Tu1bnomJKEelQKXK/ZFzKB65t5fl/AB7aDsvv7Zfk/nnHnk3WrDZ7PV3JcAk90tjXNhGcv379B8/0+tI="
|
||||
window.hierarchyData = "eJy1mVFv3CgQx7+Ln6nPxoDtvKWrXNtTdVllW/XhFEXEJhtUr/FhNrlVle9eYe8mOOAYO7qXZI38n/kBwwDjX4EUQrXB2T8IZxlAJEWR/pvlgGQ5ggDBCEYAI5JhQGKEc4AgJjGAMEkJQEkEYwBTBNE1CCS7q1ihuKjb4OxXoC3q/zXdseAsOK9pdWh5eyGlkAEIfvK6DM5imIFgL6vgLCgq2ras/aMUO8rrG6bfa8OBLLxXuyoA/avBWaDa8oO286FvAEFxz6tSslp3iES6KzEEiEAEEEkwQATpThLdluo/OQEo1a+kMAWo63xKEECp7lyqRySLYoCyGAGU5RFAeQQBymP9S9vLcQJSiBN4/QQC7dHo8GfRNEzO7K4hmtXZDGKAMo2UoQSgDBOAsjQCKMvini2GjslYS6FEIaqFkzKQT/B2EBA5IL7UzV4tJHjR+rhPsMP95V4t92+IfQCQa0WsaENvecXV4XtNHyiv6G3FFvKM2/LBI64YWdG6YFXFysVIpt4HI3VhfOM7JhbPk6n2QciJgbCW4oGXTG7YMb/NhHDrPTDSwaI9mTkvaaNmZxaX2gcBpgbCRykeWyYvb1smH+iCoRgx4AOCzOR6LhW/o4W6bJhcwuHW+2AQM4Vd6CGtC/alVmwruTrMxHDrfTBS4sD4ynd87gqxtT7uB1v7ycSffHbesqQezrMoNpx/qR9Yq/i2m8UfQv5sG1rMxXjDiA9QbMbE9/pnLR7rK7blrZJzI8Kl9kGA2Dp6LMuYttbHfWK7X7pvuNQ+CCixEBYebxxiHwBMLIArthNqbjBaUh/nqX30XEtRsHbugdvW+rjPYsv9RlG5LPhelD6uc7PnK1Hf8e1+0Z5gaz3c55G5Rf8tPvKaysNlw+Z6t6Q+zmOz773+G5VbNnfcLamP88GaXzO5423LRX3F/t1zOXvZjxjwAcHmyr9iTUUP64rWG0Vn70cu9TRCdxt2DsamEA17dg8xObnntWLyjhYvBM2zaC0qXhzCV1ZGMZ5NDe+EECYZ0hf1HF33jBkanTDWqndTHu14cPY4uRvnk6T1+2E6K54oun5hoPxgt/o8UCshD1esFXupD2jN3hPq0ZCHo7Zmz2aKkvS6p03MI/lG6SveD3Z7Mr+A0rLhN3AIRnEyuB3wcsu+0n1d3E9Q3HeJ/sZUMBmaj94IMBpBYPLdEGx88Y/ME4JR0q237oe1KZ43TcWLboexIB3JyU04asojWcKYOM9J3d3QA2UoCF89evjH2NwwP93zUlKvkNl2r96YCiZD89E3ZDCJRxAmQ2YaYknI4DTtQwanqUX2mdGyYm3rEy9v4b224zNZJMIWj0+wDDieo+PV47R/XV52FECOh1OvqGn6d29eaUOnrQWLPU5AF9Pd/CUxMo8Bq7I51jt8xuy2f/XGVoWOpunBwwRHQ5gLXX6Sop5J81oWutp8ynrDCs6pgnqqwKyFnNph6UvKuzFq0D2B0+DsGSUpIgDDOCHXR2jigF5VnE0eUrxoe0uemUt/mHFX8Yfz+Q6eyQkdGTicwYQARLLj7qd/vIG6onXJS6qmTiuzmJ+Nzl/HJMKg2xuv+6sNIdbFasO6g+Vbi8akHYjC4dPkYukCcIxg5kKxtKHdMne89ADpkeo+DL5ZH54L6zTgKBsvwtb5ucPWwTqoGuwa0XLFfDKjiWsJQ7tlcrK776pmOfWYW5eP4oiFcKx97jjqrUWPY/eN2Fzlrboot16XJRP3L/pAN4XkjTqV5T9J2tyvRK3Yfyo0rc5FJTmMsg5V/xiUje+Y1JXn/wHYtu2X37svycPzjj6brGij9nK6kmESOqShq20iOJ+efgNNnfq2"
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -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="71965">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="72326">
|
||||
<h4>Hierarchy</h4>
|
||||
<ul class="tsd-hierarchy">
|
||||
<li class="tsd-hierarchy-item"><span class="tsd-signature-type">Error</span>
|
||||
|
|
|
|||
|
|
@ -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="72171">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="72532">
|
||||
<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>
|
||||
|
|
|
|||
|
|
@ -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="73750">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="74111">
|
||||
<h4>Hierarchy</h4>
|
||||
<ul class="tsd-hierarchy">
|
||||
<li class="tsd-hierarchy-item"><span class="tsd-signature-type">Error</span>
|
||||
|
|
|
|||
|
|
@ -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="22150">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="22418">
|
||||
<h4>Hierarchy</h4>
|
||||
<ul class="tsd-hierarchy">
|
||||
<li class="tsd-hierarchy-item"><span class="tsd-signature-type">Error</span>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<section class="tsd-panel tsd-comment">
|
||||
<div class="tsd-comment tsd-typography"><p>Local launch failure retained as the cause of a provider-neutral error.</p>
|
||||
</div></section>
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="42207">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="42568">
|
||||
<h4>Hierarchy</h4>
|
||||
<ul class="tsd-hierarchy">
|
||||
<li class="tsd-hierarchy-item"><span class="tsd-signature-type">Error</span>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<section class="tsd-panel tsd-comment">
|
||||
<div class="tsd-comment tsd-typography"><p>Provider-owned failure with bounded, token-redacted local diagnostics.</p>
|
||||
</div></section>
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="42380">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="42741">
|
||||
<h4>Hierarchy</h4>
|
||||
<ul class="tsd-hierarchy">
|
||||
<li class="tsd-hierarchy-item"><span class="tsd-signature-type">Error</span>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<section class="tsd-panel tsd-comment">
|
||||
<div class="tsd-comment tsd-typography"><p>Expected operation failure returned by the authenticated Java bridge.</p>
|
||||
</div></section>
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="42460">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="42821">
|
||||
<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
|
|
@ -14,7 +14,7 @@
|
|||
<section class="tsd-panel">
|
||||
<ul class="tsd-signatures">
|
||||
<li class="">
|
||||
<div class="tsd-signature tsd-anchor-link" id="runprovideranalysis"><span class="tsd-kind-call-signature">runProviderAnalysis</span><span class="tsd-signature-symbol">(</span><br/> <span class="tsd-kind-parameter">path</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">tool</span><span class="tsd-signature-symbol">:</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inventory_artifact"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"extract_artifact"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_macho"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_signature"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_plist"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"list_architectures"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"demangle_swift"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_managed_artifact"</span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">arguments_</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Readonly</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</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">></span><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">logger</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">Logger</span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">signal</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">AbortSignal</span><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"><</span><span class="tsd-signature-type">JSONType</span><span class="tsd-signature-symbol">></span><a href="#runprovideranalysis" 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></div>
|
||||
<div class="tsd-signature tsd-anchor-link" id="runprovideranalysis"><span class="tsd-kind-call-signature">runProviderAnalysis</span><span class="tsd-signature-symbol">(</span><br/> <span class="tsd-kind-parameter">path</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">tool</span><span class="tsd-signature-symbol">:</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inventory_artifact"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"extract_artifact"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_macho"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_signature"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_plist"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"list_architectures"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"demangle_swift"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_managed_artifact"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_managed_members"</span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">arguments_</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Readonly</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</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">></span><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">logger</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">Logger</span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">signal</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">AbortSignal</span><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"><</span><span class="tsd-signature-type">JSONType</span><span class="tsd-signature-symbol">></span><a href="#runprovideranalysis" 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></div>
|
||||
<div class="tsd-description">
|
||||
<div class="tsd-comment tsd-typography"><p>Execute one provider-native semantic operation with atomic provenance.</p>
|
||||
</div>
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
<h4 class="tsd-parameters-title">Parameters</h4>
|
||||
<ul class="tsd-parameter-list">
|
||||
<li><span><span class="tsd-kind-parameter">path</span>: <span class="tsd-signature-type">string</span></span></li>
|
||||
<li><span><span class="tsd-kind-parameter">tool</span>: <br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inventory_artifact"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"extract_artifact"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_macho"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_signature"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_plist"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"list_architectures"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"demangle_swift"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_managed_artifact"</span></span></li>
|
||||
<li><span><span class="tsd-kind-parameter">tool</span>: <br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inventory_artifact"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"extract_artifact"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_macho"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_signature"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_plist"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"list_architectures"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"demangle_swift"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_managed_artifact"</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"inspect_managed_members"</span></span></li>
|
||||
<li><span><span class="tsd-kind-parameter">arguments_</span>: <span class="tsd-signature-type">Readonly</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</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">></span><span class="tsd-signature-symbol">></span></span></li>
|
||||
<li><span><span class="tsd-kind-parameter">logger</span>: <span class="tsd-signature-type">Logger</span><span class="tsd-signature-symbol"> = silentLogger</span></span></li>
|
||||
<li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">signal</span>: <span class="tsd-signature-type">AbortSignal</span></span></li></ul></div>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -25,7 +25,7 @@
|
|||
<li><span><span class="tsd-kind-parameter">name</span>: <span class="tsd-signature-type">string</span></span></li></ul></div>
|
||||
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">ZodObject</span></h4><aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L49">src/contracts/toolOutputSchemas.ts:49</a></li></ul></aside></div></li></ul></section></div>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L52">src/contracts/toolOutputSchemas.ts:52</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
|
|
@ -40,56 +40,56 @@
|
|||
<li data-refl="4910" 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="4935" 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="4953" id="domain/errors.ReplayPlanStaleError"><a href="classes/domain_errors.ReplayPlanStaleError.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>ReplayPlanStaleError</a></li>
|
||||
<li data-refl="72171" 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="72532" 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="46379" 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="46740" 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="46385" 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="51775" 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="46746" 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="52136" 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="49005" 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="49366" 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="46428" 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="46789" 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="57875" 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="46473" id="application/AnalysisProvider.AnalysisProviderCandidate"><a href="interfaces/application_AnalysisProvider.AnalysisProviderCandidate.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>AnalysisProviderCandidate</a>
|
||||
<li data-refl="58236" 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="46834" id="application/AnalysisProvider.AnalysisProviderCandidate"><a href="interfaces/application_AnalysisProvider.AnalysisProviderCandidate.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>AnalysisProviderCandidate</a>
|
||||
<ul>
|
||||
<li data-refl="42244" id="ghidra/GhidraProvider.GhidraProvider"><a href="classes/ghidra_GhidraProvider.GhidraProvider.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>GhidraProvider</a></li>
|
||||
<li data-refl="41802" 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></ul>
|
||||
<li data-refl="42605" id="ghidra/GhidraProvider.GhidraProvider"><a href="classes/ghidra_GhidraProvider.GhidraProvider.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>GhidraProvider</a></li>
|
||||
<li data-refl="42163" 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></ul>
|
||||
<ul class="tsd-full-hierarchy">
|
||||
<li data-refl="68581" id="application/JavaScriptArtifactGraphContext.AstEdgeInput"><a href="interfaces/application_JavaScriptArtifactGraphContext.AstEdgeInput.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>AstEdgeInput</a>
|
||||
<li data-refl="68942" id="application/JavaScriptArtifactGraphContext.AstEdgeInput"><a href="interfaces/application_JavaScriptArtifactGraphContext.AstEdgeInput.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>AstEdgeInput</a>
|
||||
<ul>
|
||||
<li data-refl="68847" id="application/JavaScriptArtifactGraphContext.InferenceEdgeInput"><a href="interfaces/application_JavaScriptArtifactGraphContext.InferenceEdgeInput.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>InferenceEdgeInput</a></li></ul></li></ul>
|
||||
<li data-refl="69208" id="application/JavaScriptArtifactGraphContext.InferenceEdgeInput"><a href="interfaces/application_JavaScriptArtifactGraphContext.InferenceEdgeInput.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>InferenceEdgeInput</a></li></ul></li></ul>
|
||||
<ul class="tsd-full-hierarchy">
|
||||
<li data-refl="41659" 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="42020" 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="41673" 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="42034" 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="54324" 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="54685" 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="42785" 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="43146" 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="61098" 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="61459" 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="45289" 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="45650" 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="42200" id="ghidra/GhidraLauncher.GhidraLauncher"><a href="interfaces/ghidra_GhidraLauncher.GhidraLauncher.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>GhidraLauncher</a>
|
||||
<li data-refl="42561" id="ghidra/GhidraLauncher.GhidraLauncher"><a href="interfaces/ghidra_GhidraLauncher.GhidraLauncher.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>GhidraLauncher</a>
|
||||
<ul>
|
||||
<li data-refl="42216" id="ghidra/GhidraLauncher.GhidraHeadlessLauncher"><a href="classes/ghidra_GhidraLauncher.GhidraHeadlessLauncher.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>GhidraHeadlessLauncher</a></li></ul></li></ul>
|
||||
<li data-refl="42577" id="ghidra/GhidraLauncher.GhidraHeadlessLauncher"><a href="classes/ghidra_GhidraLauncher.GhidraHeadlessLauncher.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Class"><use href="assets/icons.svg#icon-128"></use></svg>GhidraHeadlessLauncher</a></li></ul></li></ul>
|
||||
<ul class="tsd-full-hierarchy">
|
||||
<li data-refl="22108" 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="22376" 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="22116" 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="22126" 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="22384" 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="22394" 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="42660" id="process/ProviderProcess.ProviderProcessLaunch"><a href="interfaces/process_ProviderProcess.ProviderProcessLaunch.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>ProviderProcessLaunch</a>
|
||||
<li data-refl="43021" id="process/ProviderProcess.ProviderProcessLaunch"><a href="interfaces/process_ProviderProcess.ProviderProcessLaunch.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>ProviderProcessLaunch</a>
|
||||
<ul>
|
||||
<li data-refl="41652" id="hopper/BridgeLauncher.BridgeLaunch"><a href="interfaces/hopper_BridgeLauncher.BridgeLaunch.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>BridgeLaunch</a></li>
|
||||
<li data-refl="42191" id="ghidra/GhidraLauncher.GhidraLaunch"><a href="interfaces/ghidra_GhidraLauncher.GhidraLaunch.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>GhidraLaunch</a></li></ul></li></ul>
|
||||
<li data-refl="42013" id="hopper/BridgeLauncher.BridgeLaunch"><a href="interfaces/hopper_BridgeLauncher.BridgeLaunch.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>BridgeLaunch</a></li>
|
||||
<li data-refl="42552" id="ghidra/GhidraLauncher.GhidraLaunch"><a href="interfaces/ghidra_GhidraLauncher.GhidraLaunch.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Interface"><use href="assets/icons.svg#icon-256"></use></svg>GhidraLaunch</a></li></ul></li></ul>
|
||||
<ul class="tsd-full-hierarchy">
|
||||
<li data-refl="27156" 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="27424" 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="27169" 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="27437" 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">
|
||||
|
|
|
|||
|
|
@ -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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></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"><</span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</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">></span><span class="tsd-signature-symbol">></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"><</span><a href="../types/domain_result.Result.html" class="tsd-signature-type tsd-kind-type-alias">Result</a><span class="tsd-signature-symbol"><</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">></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="46385">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="46746">
|
||||
<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>
|
||||
|
|
|
|||
|
|
@ -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"><</span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</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">></span><span class="tsd-signature-symbol">></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"><</span><a href="../types/domain_result.Result.html" class="tsd-signature-type tsd-kind-type-alias">Result</a><span class="tsd-signature-symbol"><</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">></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="46379">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="46740">
|
||||
<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
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
|
|
@ -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">"once"</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"session"</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"project"</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">"administrator"</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="22126">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="22394">
|
||||
<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>
|
||||
|
|
|
|||
|
|
@ -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="22116">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="22384">
|
||||
<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>
|
||||
|
|
|
|||
|
|
@ -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="22108">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="22376">
|
||||
<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>
|
||||
|
|
|
|||
|
|
@ -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="27169">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="27437">
|
||||
<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>
|
||||
|
|
|
|||
|
|
@ -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="27156">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="27424">
|
||||
<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>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="tsd-comment tsd-typography"><p>Process plus private log coordinates returned by a Ghidra launcher.</p>
|
||||
</div></section>
|
||||
<div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">GhidraLaunch</span> <span class="tsd-signature-symbol">{</span><br/> <a class="tsd-kind-property" href="#cleanup">cleanup</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><a href="../types/process_ProcessOwnership.ProcessCleanupResult.html" class="tsd-signature-type tsd-kind-type-alias">ProcessCleanupResult</a><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#ghidralogpath">ghidraLogPath</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="#ownsprocesslifetime">ownsProcessLifetime</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="#process">process</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">ChildProcess</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#projectroot">projectRoot</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="#scriptlogpath">scriptLogPath</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="42191">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="42552">
|
||||
<h4>Hierarchy (<a href="../hierarchy.html#ghidra/GhidraLauncher.GhidraLaunch">View Summary</a>)</h4>
|
||||
<ul class="tsd-hierarchy">
|
||||
<li class="tsd-hierarchy-item"><a href="process_ProviderProcess.ProviderProcessLaunch.html" class="tsd-signature-type tsd-kind-interface">ProviderProcessLaunch</a>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="tsd-comment tsd-typography"><p>Additional structured context for a Ghidra session failure.</p>
|
||||
</div></section>
|
||||
<div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">GhidraSessionErrorOptions</span> <span class="tsd-signature-symbol">{</span><br/> <a class="tsd-kind-property" href="#remotecode">remoteCode</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="#timeoutms">timeoutMs</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div>
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="42377">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="42738">
|
||||
<h4>Hierarchy</h4>
|
||||
<ul class="tsd-hierarchy">
|
||||
<li class="tsd-hierarchy-item"><span class="tsd-signature-type">ErrorOptions</span>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="tsd-comment tsd-typography"><p>Process handle returned by a bridge launcher.</p>
|
||||
</div></section>
|
||||
<div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">BridgeLaunch</span> <span class="tsd-signature-symbol">{</span><br/> <a class="tsd-kind-property" href="#cleanup">cleanup</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><a href="../types/process_ProcessOwnership.ProcessCleanupResult.html" class="tsd-signature-type tsd-kind-type-alias">ProcessCleanupResult</a><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#ownsprocesslifetime">ownsProcessLifetime</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="#process">process</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">ChildProcess</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#shutdownbycleanup">shutdownByCleanup</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div>
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="41652">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="42013">
|
||||
<h4>Hierarchy (<a href="../hierarchy.html#hopper/BridgeLauncher.BridgeLaunch">View Summary</a>)</h4>
|
||||
<ul class="tsd-hierarchy">
|
||||
<li class="tsd-hierarchy-item"><a href="process_ProviderProcess.ProviderProcessLaunch.html" class="tsd-signature-type tsd-kind-interface">ProviderProcessLaunch</a>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="tsd-comment tsd-typography"><p>Process handle returned by a provider-specific launcher.</p>
|
||||
</div></section>
|
||||
<div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">ProviderProcessLaunch</span> <span class="tsd-signature-symbol">{</span><br/> <a class="tsd-kind-property" href="#cleanup">cleanup</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><a href="../types/process_ProcessOwnership.ProcessCleanupResult.html" class="tsd-signature-type tsd-kind-type-alias">ProcessCleanupResult</a><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#ownsprocesslifetime">ownsProcessLifetime</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="#process">process</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">ChildProcess</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div>
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="42660">
|
||||
<section class="tsd-panel tsd-hierarchy" data-refl="43021">
|
||||
<h4>Hierarchy (<a href="../hierarchy.html#process/ProviderProcess.ProviderProcessLaunch">View Summary</a>)</h4>
|
||||
<ul class="tsd-hierarchy">
|
||||
<li class="tsd-hierarchy-item"><span class="tsd-hierarchy-target">ProviderProcessLaunch</span>
|
||||
|
|
|
|||
|
|
@ -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="managedtoolname"><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/contracts_managedToolContracts.ManagedToolName.html">ManagedToolName</a><a href="#managedtoolname" 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="managed_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/contracts_managedToolContracts.MANAGED_TOOL_CONTRACTS.html">MANAGED_TOOL_CONTRACTS</a><a href="#managed_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><dt class="tsd-member-summary" id="managedartifactinputschema"><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/contracts_managedToolContracts.managedArtifactInputSchema.html">managedArtifactInputSchema</a><a href="#managedartifactinputschema" 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="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="managed_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/contracts_managedToolContracts.MANAGED_TOOL_CONTRACTS.html">MANAGED_TOOL_CONTRACTS</a><a href="#managed_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><dt class="tsd-member-summary" id="managedartifactinputschema"><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/contracts_managedToolContracts.managedArtifactInputSchema.html">managedArtifactInputSchema</a><a href="#managedartifactinputschema" 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="managedmemberinputschema"><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/contracts_managedToolContracts.managedMemberInputSchema.html">managedMemberInputSchema</a><a href="#managedmemberinputschema" 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">
|
||||
|
|
@ -31,7 +31,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="#managedtoolname"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Managed<wbr/>Tool<wbr/>Name</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="#managed_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>MANAGED_<wbr/>TOOL_<wbr/>CONTRACTS</span></a><a href="#managedartifactinputschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>managed<wbr/>Artifact<wbr/>Input<wbr/>Schema</span></a></div></details></div></details></div>
|
||||
<div><a href="#managed_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>MANAGED_<wbr/>TOOL_<wbr/>CONTRACTS</span></a><a href="#managedartifactinputschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>managed<wbr/>Artifact<wbr/>Input<wbr/>Schema</span></a><a href="#managedmemberinputschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>managed<wbr/>Member<wbr/>Input<wbr/>Schema</span></a></div></details></div></details></div>
|
||||
<div class="site-menu">
|
||||
<nav class="tsd-navigation"><a href="../index.html">rea-agents - v1.7.0</a>
|
||||
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@
|
|||
<li><a href="" aria-current="page">domain/managedArtifact</a></li></ul>
|
||||
<h1>Module domain/managedArtifact</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="managedartifactinspection"><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_managedArtifact.ManagedArtifactInspection.html">ManagedArtifactInspection</a><a href="#managedartifactinspection" 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="managedparseissue"><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_managedArtifact.ManagedParseIssue.html">ManagedParseIssue</a><a href="#managedparseissue" 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="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="managedartifactinspection"><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_managedArtifact.ManagedArtifactInspection.html">ManagedArtifactInspection</a><a href="#managedartifactinspection" 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="managedmemberinspection"><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_managedArtifact.ManagedMemberInspection.html">ManagedMemberInspection</a><a href="#managedmemberinspection" 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="managedparseissue"><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_managedArtifact.ManagedParseIssue.html">ManagedParseIssue</a><a href="#managedparseissue" 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="managedartifactinspectionschema"><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_managedArtifact.managedArtifactInspectionSchema.html">managedArtifactInspectionSchema</a><a href="#managedartifactinspectionschema" 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="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="managedartifactinspectionschema"><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_managedArtifact.managedArtifactInspectionSchema.html">managedArtifactInspectionSchema</a><a href="#managedartifactinspectionschema" 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="managedmemberinspectionschema"><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_managedArtifact.managedMemberInspectionSchema.html">managedMemberInspectionSchema</a><a href="#managedmemberinspectionschema" 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">
|
||||
|
|
@ -29,9 +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-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="#managedartifactinspection"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Managed<wbr/>Artifact<wbr/>Inspection</span></a><a href="#managedparseissue"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Managed<wbr/>Parse<wbr/>Issue</span></a></div></details>
|
||||
<div><a href="#managedartifactinspection"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Managed<wbr/>Artifact<wbr/>Inspection</span></a><a href="#managedmemberinspection"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Managed<wbr/>Member<wbr/>Inspection</span></a><a href="#managedparseissue"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Type Alias"><use href="../assets/icons.svg#icon-2097152"></use></svg><span>Managed<wbr/>Parse<wbr/>Issue</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="#managedartifactinspectionschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>managed<wbr/>Artifact<wbr/>Inspection<wbr/>Schema</span></a></div></details></div></details></div>
|
||||
<div><a href="#managedartifactinspectionschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>managed<wbr/>Artifact<wbr/>Inspection<wbr/>Schema</span></a><a href="#managedmemberinspectionschema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Variable"><use href="../assets/icons.svg#icon-32"></use></svg><span>managed<wbr/>Member<wbr/>Inspection<wbr/>Schema</span></a></div></details></div></details></div>
|
||||
<div class="site-menu">
|
||||
<nav class="tsd-navigation"><a href="../index.html">rea-agents - v1.7.0</a>
|
||||
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="tsd-comment tsd-typography"><p>Names of execution-free managed static operations.</p>
|
||||
</div><aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/managedToolContracts.ts#L64">src/contracts/managedToolContracts.ts:64</a></li></ul></aside></div>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/managedToolContracts.ts#L128">src/contracts/managedToolContracts.ts:128</a></li></ul></aside></div>
|
||||
<div class="col-sidebar">
|
||||
<div class="page-menu">
|
||||
<div class="tsd-navigation settings">
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
<h1>Type Alias ManagedArtifactInspection</h1></div>
|
||||
<div class="tsd-signature"><span class="tsd-kind-type-alias">ManagedArtifactInspection</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">z.infer</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-keyword">typeof</span> <a href="../variables/domain_managedArtifact.managedArtifactInspectionSchema.html" class="tsd-signature-type tsd-kind-variable">managedArtifactInspectionSchema</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/managedArtifact.ts#L202">src/domain/managedArtifact.ts:202</a></li></ul></aside></div>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/managedArtifact.ts#L370">src/domain/managedArtifact.ts:370</a></li></ul></aside></div>
|
||||
<div class="col-sidebar">
|
||||
<div class="page-menu">
|
||||
<div class="tsd-navigation settings">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ManagedMemberInspection | rea-agents - v1.7.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.7.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/domain_managedArtifact.html">domain/managedArtifact</a></li>
|
||||
<li><a href="" aria-current="page">ManagedMemberInspection</a></li></ul>
|
||||
<h1>Type Alias ManagedMemberInspection</h1></div>
|
||||
<div class="tsd-signature"><span class="tsd-kind-type-alias">ManagedMemberInspection</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">z.infer</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-keyword">typeof</span> <a href="../variables/domain_managedArtifact.managedMemberInspectionSchema.html" class="tsd-signature-type tsd-kind-variable">managedMemberInspectionSchema</a><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/managedArtifact.ts#L373">src/domain/managedArtifact.ts:373</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.7.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>
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
<h1>Type Alias ManagedParseIssue</h1></div>
|
||||
<div class="tsd-signature"><span class="tsd-kind-type-alias">ManagedParseIssue</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">z.infer</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-keyword">typeof</span> <span class="tsd-signature-type">managedParseIssueSchema</span><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/managedArtifact.ts#L205">src/domain/managedArtifact.ts:205</a></li></ul></aside></div>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/managedArtifact.ts#L376">src/domain/managedArtifact.ts:376</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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -15,7 +15,7 @@
|
|||
<div class="tsd-comment tsd-typography"><p>Exact Evidence v2 schemas for provider-neutral artifact graph operations.</p>
|
||||
</div><aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L528">src/contracts/toolOutputSchemas.ts:528</a></li></ul></aside></div>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L531">src/contracts/toolOutputSchemas.ts:531</a></li></ul></aside></div>
|
||||
<div class="col-sidebar">
|
||||
<div class="page-menu">
|
||||
<div class="tsd-navigation settings">
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="tsd-comment tsd-typography"><p>Exact structured-content schemas for composed analysis workflows.</p>
|
||||
</div><aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L421">src/contracts/toolOutputSchemas.ts:421</a></li></ul></aside></div>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L424">src/contracts/toolOutputSchemas.ts:424</a></li></ul></aside></div>
|
||||
<div class="col-sidebar">
|
||||
<div class="page-menu">
|
||||
<div class="tsd-navigation settings">
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="tsd-comment tsd-typography"><p>Exact Evidence v2 schema for execution-free managed static analysis.</p>
|
||||
</div><aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L534">src/contracts/toolOutputSchemas.ts:534</a></li></ul></aside></div>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L537">src/contracts/toolOutputSchemas.ts:537</a></li></ul></aside></div>
|
||||
<div class="col-sidebar">
|
||||
<div class="page-menu">
|
||||
<div class="tsd-navigation settings">
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="tsd-comment tsd-typography"><p>Exact Evidence v2 schemas for provider-neutral native inspection.</p>
|
||||
</div><aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L519">src/contracts/toolOutputSchemas.ts:519</a></li></ul></aside></div>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L522">src/contracts/toolOutputSchemas.ts:522</a></li></ul></aside></div>
|
||||
<div class="col-sidebar">
|
||||
<div class="page-menu">
|
||||
<div class="tsd-navigation settings">
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="tsd-comment tsd-typography"><p>Exact structured-content schemas shared by direct analysis providers.</p>
|
||||
</div><aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L368">src/contracts/toolOutputSchemas.ts:368</a></li></ul></aside></div>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L371">src/contracts/toolOutputSchemas.ts:371</a></li></ul></aside></div>
|
||||
<div class="col-sidebar">
|
||||
<div class="page-menu">
|
||||
<div class="tsd-navigation settings">
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="tsd-comment tsd-typography"><p>Exact structured-content schemas for target lifecycle operations.</p>
|
||||
</div><aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L539">src/contracts/toolOutputSchemas.ts:539</a></li></ul></aside></div>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/contracts/toolOutputSchemas.ts#L543">src/contracts/toolOutputSchemas.ts:543</a></li></ul></aside></div>
|
||||
<div class="col-sidebar">
|
||||
<div class="page-menu">
|
||||
<div class="tsd-navigation settings">
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="tsd-comment tsd-typography"><p>Provider-neutral, execution-free PE/CLI triage and identity result.</p>
|
||||
</div><aside class="tsd-sources">
|
||||
<ul>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/managedArtifact.ts#L107">src/domain/managedArtifact.ts:107</a></li></ul></aside></div>
|
||||
<li>Defined in <a href="https://github.com/morluto/rea/blob/main/src/domain/managedArtifact.ts#L239">src/domain/managedArtifact.ts:239</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
|
|
@ -33,7 +33,7 @@ graph TD
|
|||
end
|
||||
|
||||
subgraph "Contracts Layer"
|
||||
CONTRACTS["src/contracts/<br/>Caller-visible tool schemas<br/>84 analysis, managed, browser, Electron, application, and session tools"]
|
||||
CONTRACTS["src/contracts/<br/>Caller-visible tool schemas<br/>85 analysis, managed, browser, Electron, application, and session tools"]
|
||||
end
|
||||
|
||||
subgraph "Domain Layer"
|
||||
|
|
|
|||
|
|
@ -2,11 +2,14 @@
|
|||
|
||||
This document turns
|
||||
[ADR-0003](adr/0003-managed-code-evidence-and-provider-boundary.md) into an
|
||||
implementation and verification plan. REA currently ships only read-only PE/CLI
|
||||
implementation and verification plan. REA currently ships read-only PE/CLI
|
||||
triage and exact identity through `inspect_managed_artifact` and
|
||||
`rea inspect-managed-artifact`; CIL, method bodies, decompilation, cross-build
|
||||
matching, and managed/native composition remain planned behavior. The current
|
||||
product inventory remains the one in [`product-catalog.json`](product-catalog.json).
|
||||
`rea inspect-managed-artifact`, plus bounded metadata, signature, method-body
|
||||
CIL, exception-region, call-edge, and field-access inspection through
|
||||
`inspect_managed_members` and `rea inspect-managed-members`. Decompiled C#,
|
||||
cross-build matching, managed/native composition, and runtime correlation remain
|
||||
planned behavior. The current product inventory remains the one in
|
||||
[`product-catalog.json`](product-catalog.json).
|
||||
|
||||
## Analysis objective
|
||||
|
||||
|
|
@ -290,7 +293,7 @@ The managed-code track advances as reviewable pull requests:
|
|||
|
||||
1. accepted evidence/provider boundary (this document and ADR);
|
||||
2. read-only artifact triage and exact identity (shipped);
|
||||
3. bounded metadata, signatures, method bodies, and normalized CIL;
|
||||
3. bounded metadata, signatures, method bodies, and normalized CIL (shipped);
|
||||
4. obfuscation-resistant slices and cross-version comparison;
|
||||
5. managed/native composition and truthful deployment degradation;
|
||||
6. source-built, pinned real-tool, package, CLI, and MCP conformance; and
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Guided MCP prompts and completion
|
||||
|
||||
REA exposes six provider-neutral investigation workflows through the MCP
|
||||
`prompts` capability. They complement the 84 tools; they do not add, remove, or
|
||||
`prompts` capability. They complement the 85 tools; they do not add, remove, or
|
||||
invoke tools by themselves.
|
||||
|
||||
## Prompt inventory
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
"skill_version": "18"
|
||||
},
|
||||
"tools": {
|
||||
"total": 84,
|
||||
"total": 85,
|
||||
"families": [
|
||||
{
|
||||
"id": "direct",
|
||||
|
|
@ -91,8 +91,8 @@
|
|||
{
|
||||
"id": "managed",
|
||||
"surface": "managed-provider",
|
||||
"count": 1,
|
||||
"tools": ["inspect_managed_artifact"]
|
||||
"count": 2,
|
||||
"tools": ["inspect_managed_artifact", "inspect_managed_members"]
|
||||
},
|
||||
{
|
||||
"id": "browser",
|
||||
|
|
@ -267,7 +267,7 @@
|
|||
"id": "rea-dotnet-static",
|
||||
"name": "REA managed static analysis provider",
|
||||
"version": "1",
|
||||
"capabilities": ["inspect_managed_artifact"]
|
||||
"capabilities": ["inspect_managed_artifact", "inspect_managed_members"]
|
||||
},
|
||||
{
|
||||
"id": "rea-javascript-application",
|
||||
|
|
@ -401,6 +401,10 @@
|
|||
"id": "managed_artifact_inspection",
|
||||
"version": 1
|
||||
},
|
||||
{
|
||||
"id": "managed_member_inspection",
|
||||
"version": 1
|
||||
},
|
||||
{
|
||||
"id": "process_capture",
|
||||
"version": 4
|
||||
|
|
@ -443,7 +447,7 @@
|
|||
}
|
||||
],
|
||||
"cli": {
|
||||
"primary_count": 44,
|
||||
"primary_count": 45,
|
||||
"commands": [
|
||||
"analyze",
|
||||
"analyze-javascript-application",
|
||||
|
|
@ -469,6 +473,7 @@
|
|||
"inspect-electron-page",
|
||||
"inspect-macho",
|
||||
"inspect-managed-artifact",
|
||||
"inspect-managed-members",
|
||||
"inspect-plist",
|
||||
"inspect-signature",
|
||||
"inspect-web-page",
|
||||
|
|
@ -499,17 +504,17 @@
|
|||
},
|
||||
"runtime_catalog": {
|
||||
"counts": {
|
||||
"cli_commands": 44,
|
||||
"mcp_tools": 84,
|
||||
"cli_commands": 45,
|
||||
"mcp_tools": 85,
|
||||
"mcp_prompts": 6,
|
||||
"mcp_resources": 2,
|
||||
"mcp_resource_templates": 7
|
||||
},
|
||||
"digests": {
|
||||
"tools_sha256": "1c35163e945130a6ba42c30e6b53a212cdd34ec3ac209071a4997bb3dfce19ae",
|
||||
"tools_sha256": "927650897b4662c965fa102945c7f69a0851ab2b13bc3ba34e28f314388946a1",
|
||||
"prompts_sha256": "f6da3ad38a1000c11364d1710f122ac4990551f04efd8c53ffb2e819b5cf5707",
|
||||
"resources_sha256": "e603aad57a79479004fbdc267644092e8365dd64d94ad772b9da4425a49abd73",
|
||||
"combined_sha256": "8494535b9ec0398faee7f311e4f1d7d2b4683d756eeb840caa1caabdb762452c"
|
||||
"combined_sha256": "0a8f2ea1cf96585b79ee1d12796202d4bc78a2734893fd881971ada26dba338f"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -357,6 +357,11 @@ const observationSchemaDefinitions = (sources) => [
|
|||
sources.managedArtifact.managedArtifactInspectionSchema,
|
||||
["schema_version"],
|
||||
],
|
||||
[
|
||||
"managed_member_inspection",
|
||||
sources.managedArtifact.managedMemberInspectionSchema,
|
||||
["schema_version"],
|
||||
],
|
||||
[
|
||||
"browser_target_list",
|
||||
sources.browserObservation.browserTargetListSchema,
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ name: rea-analysis
|
|||
description: Reverse engineer native, Electron/JavaScript, and web applications with REA. Connect static artifacts to passive runtime evidence, explain how features work, and build a version tailored to the user's project.
|
||||
metadata:
|
||||
version: "18"
|
||||
tool_count: 84
|
||||
tool_count: 85
|
||||
---
|
||||
|
||||
# REA
|
||||
|
|
|
|||
99
src/cli.ts
99
src/cli.ts
|
|
@ -578,7 +578,7 @@ const registerManagedCommands = (
|
|||
.min(256)
|
||||
.max(268_435_456)
|
||||
.default(67_108_864),
|
||||
maxTableRows: z.number().int().min(1).max(10_000_000).default(1_000_000),
|
||||
maxTableRows: z.number().int().min(1).max(1_000_000).default(100_000),
|
||||
maxHeapItemBytes: z
|
||||
.number()
|
||||
.int()
|
||||
|
|
@ -619,6 +619,103 @@ const registerManagedCommands = (
|
|||
),
|
||||
),
|
||||
});
|
||||
cli.command(CLI_COMMANDS.inspectManagedMembers, {
|
||||
description:
|
||||
"Inspect PE/CLI metadata members, signatures, and CIL anchors without loading target code",
|
||||
args: z.object({
|
||||
path: z.string().describe("Managed PE executable or assembly path"),
|
||||
}),
|
||||
options: z.object({
|
||||
typeOffset: z.number().int().min(0).default(0),
|
||||
typeLimit: z.number().int().min(1).max(500).default(100),
|
||||
methodOffset: z.number().int().min(0).default(0),
|
||||
methodLimit: z.number().int().min(1).max(500).default(100),
|
||||
fieldOffset: z.number().int().min(0).default(0),
|
||||
fieldLimit: z.number().int().min(1).max(500).default(100),
|
||||
memberRefOffset: z.number().int().min(0).default(0),
|
||||
memberRefLimit: z.number().int().min(1).max(500).default(100),
|
||||
edgeOffset: z.number().int().min(0).default(0),
|
||||
edgeLimit: z.number().int().min(1).max(1_000).default(250),
|
||||
instructionAnchorLimit: z.number().int().min(0).max(500).default(100),
|
||||
maxFileBytes: z
|
||||
.number()
|
||||
.int()
|
||||
.min(4_096)
|
||||
.max(1_073_741_824)
|
||||
.default(268_435_456),
|
||||
maxMetadataBytes: z
|
||||
.number()
|
||||
.int()
|
||||
.min(256)
|
||||
.max(268_435_456)
|
||||
.default(67_108_864),
|
||||
maxTableRows: z.number().int().min(1).max(1_000_000).default(100_000),
|
||||
maxHeapItemBytes: z
|
||||
.number()
|
||||
.int()
|
||||
.min(1)
|
||||
.max(16_777_216)
|
||||
.default(1_048_576),
|
||||
maxMethodBodyBytes: z
|
||||
.number()
|
||||
.int()
|
||||
.min(1)
|
||||
.max(16_777_216)
|
||||
.default(1_048_576),
|
||||
maxMethodInstructions: z
|
||||
.number()
|
||||
.int()
|
||||
.min(1)
|
||||
.max(100_000)
|
||||
.default(10_000),
|
||||
}),
|
||||
alias: {
|
||||
typeOffset: "type-offset",
|
||||
typeLimit: "type-limit",
|
||||
methodOffset: "method-offset",
|
||||
methodLimit: "method-limit",
|
||||
fieldOffset: "field-offset",
|
||||
fieldLimit: "field-limit",
|
||||
memberRefOffset: "member-ref-offset",
|
||||
memberRefLimit: "member-ref-limit",
|
||||
edgeOffset: "edge-offset",
|
||||
edgeLimit: "edge-limit",
|
||||
instructionAnchorLimit: "instruction-anchor-limit",
|
||||
maxFileBytes: "max-file-bytes",
|
||||
maxMetadataBytes: "max-metadata-bytes",
|
||||
maxTableRows: "max-table-rows",
|
||||
maxHeapItemBytes: "max-heap-item-bytes",
|
||||
maxMethodBodyBytes: "max-method-body-bytes",
|
||||
maxMethodInstructions: "max-method-instructions",
|
||||
},
|
||||
run: ({ args, options }) =>
|
||||
logCliCommand(logger, "inspect-managed-members", () =>
|
||||
runProviderAnalysis(
|
||||
args.path,
|
||||
"inspect_managed_members",
|
||||
{
|
||||
type_offset: options.typeOffset,
|
||||
type_limit: options.typeLimit,
|
||||
method_offset: options.methodOffset,
|
||||
method_limit: options.methodLimit,
|
||||
field_offset: options.fieldOffset,
|
||||
field_limit: options.fieldLimit,
|
||||
member_ref_offset: options.memberRefOffset,
|
||||
member_ref_limit: options.memberRefLimit,
|
||||
edge_offset: options.edgeOffset,
|
||||
edge_limit: options.edgeLimit,
|
||||
instruction_anchor_limit: options.instructionAnchorLimit,
|
||||
max_file_bytes: options.maxFileBytes,
|
||||
max_metadata_bytes: options.maxMetadataBytes,
|
||||
max_table_rows: options.maxTableRows,
|
||||
max_heap_item_bytes: options.maxHeapItemBytes,
|
||||
max_method_body_bytes: options.maxMethodBodyBytes,
|
||||
max_method_instructions: options.maxMethodInstructions,
|
||||
},
|
||||
logger,
|
||||
),
|
||||
),
|
||||
});
|
||||
};
|
||||
|
||||
const registerNativeCommands = (
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ export const CLI_COMMANDS = Object.freeze({
|
|||
inventoryArtifact: "inventory-artifact",
|
||||
extractArtifact: "extract-artifact",
|
||||
inspectManagedArtifact: "inspect-managed-artifact",
|
||||
inspectManagedMembers: "inspect-managed-members",
|
||||
inspectMacho: "inspect-macho",
|
||||
inspectSignature: "inspect-signature",
|
||||
listArchitectures: "list-architectures",
|
||||
|
|
|
|||
|
|
@ -32,9 +32,53 @@ export const managedArtifactInputSchema = z.object({
|
|||
.default(1_048_576),
|
||||
});
|
||||
|
||||
/** Exact caller boundary for execution-free metadata/signature/IL inspection. */
|
||||
export const managedMemberInputSchema = z.object({
|
||||
type_offset: z.number().int().min(0).default(0),
|
||||
type_limit: z.number().int().min(1).max(500).default(100),
|
||||
method_offset: z.number().int().min(0).default(0),
|
||||
method_limit: z.number().int().min(1).max(500).default(100),
|
||||
field_offset: z.number().int().min(0).default(0),
|
||||
field_limit: z.number().int().min(1).max(500).default(100),
|
||||
member_ref_offset: z.number().int().min(0).default(0),
|
||||
member_ref_limit: z.number().int().min(1).max(500).default(100),
|
||||
edge_offset: z.number().int().min(0).default(0),
|
||||
edge_limit: z.number().int().min(1).max(1_000).default(250),
|
||||
instruction_anchor_limit: z.number().int().min(0).max(500).default(100),
|
||||
max_file_bytes: z
|
||||
.number()
|
||||
.int()
|
||||
.min(4_096)
|
||||
.max(1_073_741_824)
|
||||
.default(268_435_456),
|
||||
max_metadata_bytes: z
|
||||
.number()
|
||||
.int()
|
||||
.min(256)
|
||||
.max(268_435_456)
|
||||
.default(67_108_864),
|
||||
max_table_rows: z.number().int().min(1).max(1_000_000).default(100_000),
|
||||
max_heap_item_bytes: z
|
||||
.number()
|
||||
.int()
|
||||
.min(1)
|
||||
.max(16_777_216)
|
||||
.default(1_048_576),
|
||||
max_method_body_bytes: z
|
||||
.number()
|
||||
.int()
|
||||
.min(1)
|
||||
.max(16_777_216)
|
||||
.default(1_048_576),
|
||||
max_method_instructions: z.number().int().min(1).max(100_000).default(10_000),
|
||||
});
|
||||
|
||||
const outputSchema = managedOutputSchemas.inspect_managed_artifact;
|
||||
if (outputSchema === undefined)
|
||||
throw new Error("Missing managed output schema for inspect_managed_artifact");
|
||||
const memberOutputSchema = managedOutputSchemas.inspect_managed_members;
|
||||
if (memberOutputSchema === undefined)
|
||||
throw new Error("Missing managed output schema for inspect_managed_members");
|
||||
|
||||
/** Read-only managed artifact contracts. */
|
||||
export const MANAGED_TOOL_CONTRACTS = [
|
||||
|
|
@ -58,6 +102,26 @@ export const MANAGED_TOOL_CONTRACTS = [
|
|||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "inspect_managed_members",
|
||||
description:
|
||||
"Inspect bounded PE/CLI metadata members, signatures, method body IL hashes, exception regions, call edges, and field-access anchors without loading or executing target code. Metadata tokens are reported as build-local coordinates bound to the artifact SHA-256 and MVID.",
|
||||
kind: "managed-provider",
|
||||
inputSchema: managedMemberInputSchema,
|
||||
outputSchema: memberOutputSchema,
|
||||
annotations: {
|
||||
readOnlyHint: true,
|
||||
destructiveHint: false,
|
||||
idempotentHint: true,
|
||||
openWorldHint: false,
|
||||
},
|
||||
examples: [
|
||||
{
|
||||
title: "Example inspect managed members request",
|
||||
input: { method_limit: 25, edge_limit: 100 },
|
||||
},
|
||||
],
|
||||
},
|
||||
] as const satisfies readonly ToolContract[];
|
||||
|
||||
/** Names of execution-free managed static operations. */
|
||||
|
|
|
|||
|
|
@ -24,7 +24,10 @@ import {
|
|||
artifactExtractionResultSchema,
|
||||
artifactInventoryResultSchema,
|
||||
} from "../domain/artifactGraph.js";
|
||||
import { managedArtifactInspectionSchema } from "../domain/managedArtifact.js";
|
||||
import {
|
||||
managedArtifactInspectionSchema,
|
||||
managedMemberInspectionSchema,
|
||||
} from "../domain/managedArtifact.js";
|
||||
import { artifactComparisonResultSchema } from "../domain/artifactComparison.js";
|
||||
import { functionComparisonResultSchema } from "../domain/functionComparison.js";
|
||||
import { bundleComparisonResultSchema } from "../domain/bundleComparison.js";
|
||||
|
|
@ -533,6 +536,7 @@ export const artifactOutputSchemas: Readonly<Record<string, z.ZodObject>> = {
|
|||
/** Exact Evidence v2 schema for execution-free managed static analysis. */
|
||||
export const managedOutputSchemas: Readonly<Record<string, z.ZodObject>> = {
|
||||
inspect_managed_artifact: resultOf(managedArtifactInspectionSchema),
|
||||
inspect_managed_members: resultOf(managedMemberInspectionSchema),
|
||||
};
|
||||
|
||||
/** Exact structured-content schemas for target lifecycle operations. */
|
||||
|
|
|
|||
|
|
@ -82,6 +82,138 @@ const customAttributeSchema = z.object({
|
|||
row_offset: offsetSchema,
|
||||
});
|
||||
|
||||
const managedSignatureSchema = z.object({
|
||||
raw_length: z.number().int().min(0),
|
||||
raw_sha256: digestSchema,
|
||||
kind: z.enum(["method", "field", "unknown"]),
|
||||
parse_status: z.enum(["decoded", "partial", "unsupported", "malformed"]),
|
||||
calling_convention: z.string().nullable(),
|
||||
generic_parameter_count: z.number().int().min(0).nullable(),
|
||||
parameter_count: z.number().int().min(0).nullable(),
|
||||
return_type: z.string().nullable(),
|
||||
parameter_types: z.array(z.string()),
|
||||
field_type: z.string().nullable(),
|
||||
issue: z.string().nullable(),
|
||||
});
|
||||
|
||||
const managedTypeSchema = z.object({
|
||||
token: tokenSchema,
|
||||
row_offset: offsetSchema,
|
||||
namespace: z.string(),
|
||||
name: z.string(),
|
||||
full_name: z.string(),
|
||||
flags: z.number().int().min(0).max(0xffff_ffff),
|
||||
extends_token: tokenSchema.nullable(),
|
||||
field_list: z.object({
|
||||
first_row: z.number().int().min(1).nullable(),
|
||||
last_row: z.number().int().min(0).nullable(),
|
||||
count: z.number().int().min(0),
|
||||
}),
|
||||
method_list: z.object({
|
||||
first_row: z.number().int().min(1).nullable(),
|
||||
last_row: z.number().int().min(0).nullable(),
|
||||
count: z.number().int().min(0),
|
||||
}),
|
||||
});
|
||||
|
||||
const managedFieldSchema = z.object({
|
||||
token: tokenSchema,
|
||||
row_offset: offsetSchema,
|
||||
declaring_type_token: tokenSchema.nullable(),
|
||||
declaring_type: z.string().nullable(),
|
||||
name: z.string(),
|
||||
flags: z.number().int().min(0).max(0xffff),
|
||||
signature: managedSignatureSchema,
|
||||
});
|
||||
|
||||
const managedExceptionRegionSchema = z.object({
|
||||
flags: z.number().int().min(0).max(0xffff_ffff),
|
||||
try_offset: z.number().int().min(0),
|
||||
try_length: z.number().int().min(0),
|
||||
handler_offset: z.number().int().min(0),
|
||||
handler_length: z.number().int().min(0),
|
||||
class_token: tokenSchema.nullable(),
|
||||
filter_offset: z.number().int().min(0).nullable(),
|
||||
});
|
||||
|
||||
const managedInstructionAnchorSchema = z.object({
|
||||
il_offset: z.number().int().min(0),
|
||||
opcode: z.string().min(1),
|
||||
operand_kind: z.enum([
|
||||
"none",
|
||||
"branch",
|
||||
"constant",
|
||||
"field",
|
||||
"method",
|
||||
"signature",
|
||||
"string",
|
||||
"switch",
|
||||
"token",
|
||||
"type",
|
||||
"variable",
|
||||
"unknown",
|
||||
]),
|
||||
operand: z.string().nullable(),
|
||||
});
|
||||
|
||||
const managedMethodBodySchema = z.object({
|
||||
status: z.enum(["present", "absent", "malformed", "too-large"]),
|
||||
header_format: z.enum(["tiny", "fat", "none", "unknown"]),
|
||||
rva: z.number().int().min(0).max(0xffff_ffff),
|
||||
file_offset: offsetSchema.nullable(),
|
||||
max_stack: z.number().int().min(0).nullable(),
|
||||
init_locals: z.boolean().nullable(),
|
||||
local_var_sig_token: tokenSchema.nullable(),
|
||||
il_size: z.number().int().min(0),
|
||||
il_sha256: digestSchema.nullable(),
|
||||
normalized_il_sha256: digestSchema.nullable(),
|
||||
instruction_count: z.number().int().min(0),
|
||||
decoded_instruction_count: z.number().int().min(0),
|
||||
truncated_instructions: z.number().int().min(0),
|
||||
opcode_counts: z.record(z.string(), z.number().int().min(1)),
|
||||
anchors: z.array(managedInstructionAnchorSchema),
|
||||
exception_regions: z.array(managedExceptionRegionSchema),
|
||||
issue: z.string().nullable(),
|
||||
});
|
||||
|
||||
const managedMethodSchema = z.object({
|
||||
token: tokenSchema,
|
||||
row_offset: offsetSchema,
|
||||
declaring_type_token: tokenSchema.nullable(),
|
||||
declaring_type: z.string().nullable(),
|
||||
name: z.string(),
|
||||
rva: z.number().int().min(0).max(0xffff_ffff),
|
||||
impl_flags: z.number().int().min(0).max(0xffff),
|
||||
flags: z.number().int().min(0).max(0xffff),
|
||||
signature: managedSignatureSchema,
|
||||
body: managedMethodBodySchema,
|
||||
});
|
||||
|
||||
const managedMemberReferenceSchema = z.object({
|
||||
token: tokenSchema,
|
||||
row_offset: offsetSchema,
|
||||
parent_token: tokenSchema.nullable(),
|
||||
name: z.string(),
|
||||
signature: managedSignatureSchema,
|
||||
});
|
||||
|
||||
const managedCallEdgeSchema = z.object({
|
||||
caller_token: tokenSchema,
|
||||
caller: z.string().nullable(),
|
||||
opcode: z.string(),
|
||||
target_token: tokenSchema,
|
||||
target_kind: z.enum(["method-def", "member-ref", "method-spec", "unknown"]),
|
||||
target_name: z.string().nullable(),
|
||||
});
|
||||
|
||||
const managedFieldAccessSchema = z.object({
|
||||
method_token: tokenSchema,
|
||||
method: z.string().nullable(),
|
||||
opcode: z.string(),
|
||||
field_token: tokenSchema,
|
||||
field_name: z.string().nullable(),
|
||||
});
|
||||
|
||||
const managedParseIssueSchema = z.object({
|
||||
code: z.enum([
|
||||
"invalid-cli-header",
|
||||
|
|
@ -199,7 +331,46 @@ export const managedArtifactInspectionSchema = z.object({
|
|||
limitations: z.array(z.string()),
|
||||
});
|
||||
|
||||
/** Provider-neutral, execution-free metadata/signature/IL member inspection. */
|
||||
export const managedMemberInspectionSchema = z.object({
|
||||
schema_version: z.literal(1),
|
||||
artifact: z.object({
|
||||
path: z.string().min(1),
|
||||
sha256: digestSchema,
|
||||
byte_length: z.number().int().min(0),
|
||||
format: z.literal("pe"),
|
||||
}),
|
||||
module: moduleIdentitySchema.nullable(),
|
||||
metadata: z.object({
|
||||
status: z.enum(["absent", "complete", "partial", "malformed"]),
|
||||
version: z.string().nullable(),
|
||||
table_row_counts: z.record(
|
||||
z.string(),
|
||||
z.number().int().min(0).max(0xffff_ffff),
|
||||
),
|
||||
}),
|
||||
identity_scope: z.object({
|
||||
token_identity: z.literal("build-local"),
|
||||
requires_artifact_sha256: digestSchema,
|
||||
requires_mvid: z.string().uuid().nullable(),
|
||||
}),
|
||||
types: managedPage(managedTypeSchema),
|
||||
fields: managedPage(managedFieldSchema),
|
||||
methods: managedPage(managedMethodSchema),
|
||||
member_refs: managedPage(managedMemberReferenceSchema),
|
||||
call_edges: managedPage(managedCallEdgeSchema),
|
||||
field_accesses: managedPage(managedFieldAccessSchema),
|
||||
coverage: z.object({
|
||||
state: z.enum(["complete", "partial", "unavailable"]),
|
||||
issues: z.array(managedParseIssueSchema),
|
||||
}),
|
||||
limitations: z.array(z.string()),
|
||||
});
|
||||
|
||||
export type ManagedArtifactInspection = z.infer<
|
||||
typeof managedArtifactInspectionSchema
|
||||
>;
|
||||
export type ManagedMemberInspection = z.infer<
|
||||
typeof managedMemberInspectionSchema
|
||||
>;
|
||||
export type ManagedParseIssue = z.infer<typeof managedParseIssueSchema>;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -14,6 +14,7 @@ import { MANAGED_STATIC_PROVIDER } from "../application/InvestigationProviders.j
|
|||
import {
|
||||
MANAGED_TOOL_CONTRACTS,
|
||||
managedArtifactInputSchema,
|
||||
managedMemberInputSchema,
|
||||
type ManagedToolName,
|
||||
} from "../contracts/managedToolContracts.js";
|
||||
import type { BinaryTarget } from "../domain/binaryTarget.js";
|
||||
|
|
@ -23,9 +24,15 @@ import {
|
|||
EvidenceIntegrityError,
|
||||
ProviderAdapterError,
|
||||
} from "../domain/errors.js";
|
||||
import type { EvidenceLocation } from "../domain/evidence.js";
|
||||
import type { JsonValue } from "../domain/jsonValue.js";
|
||||
import type {
|
||||
ManagedArtifactInspection,
|
||||
ManagedMemberInspection,
|
||||
} from "../domain/managedArtifact.js";
|
||||
import { err, ok } from "../domain/result.js";
|
||||
import { inspectManagedArtifactBytes } from "./ManagedArtifactInspector.js";
|
||||
import { inspectManagedMembersBytes } from "./ManagedMemberInspector.js";
|
||||
|
||||
const IDENTITY: ProviderIdentity = Object.freeze(MANAGED_STATIC_PROVIDER);
|
||||
|
||||
|
|
@ -56,10 +63,7 @@ export class ManagedStaticProvider implements AnalysisProvider {
|
|||
maxPayloadBytes: 4 * 1024 * 1024,
|
||||
timeoutMs: null,
|
||||
}),
|
||||
limitations: Object.freeze([
|
||||
"This capability inventories PE/CLI identity only; method signatures and CIL are admitted by a later contract.",
|
||||
"It never loads the target assembly, resolves dependencies through a CLR, decompiles C#, or executes target code.",
|
||||
]),
|
||||
limitations: limitationsFor(contract.name),
|
||||
}),
|
||||
),
|
||||
);
|
||||
|
|
@ -104,28 +108,28 @@ class ManagedStaticClient implements AnalysisClient {
|
|||
),
|
||||
);
|
||||
try {
|
||||
const input = managedArtifactInputSchema.parse(parameters);
|
||||
if (options?.signal?.aborted === true)
|
||||
return err(new AnalysisCancelledError(operation));
|
||||
const maxFileBytes = maxRequestedFileBytes(operation, parameters);
|
||||
const metadata = await stat(this.target.path);
|
||||
if (metadata.size > input.max_file_bytes)
|
||||
if (metadata.size > maxFileBytes)
|
||||
return err(
|
||||
new AnalysisCapabilityUnavailableError(
|
||||
IDENTITY.id,
|
||||
operation,
|
||||
`Artifact size ${String(metadata.size)} exceeds max_file_bytes ${String(input.max_file_bytes)}.`,
|
||||
`Artifact size ${String(metadata.size)} exceeds max_file_bytes ${String(maxFileBytes)}.`,
|
||||
),
|
||||
);
|
||||
const bytes = await readFile(
|
||||
this.target.path,
|
||||
options?.signal === undefined ? undefined : { signal: options.signal },
|
||||
);
|
||||
if (bytes.length > input.max_file_bytes)
|
||||
if (bytes.length > maxFileBytes)
|
||||
return err(
|
||||
new AnalysisCapabilityUnavailableError(
|
||||
IDENTITY.id,
|
||||
operation,
|
||||
`Artifact grew beyond max_file_bytes ${String(input.max_file_bytes)} while it was read.`,
|
||||
`Artifact grew beyond max_file_bytes ${String(maxFileBytes)} while it was read.`,
|
||||
),
|
||||
);
|
||||
const observedDigest = createHash("sha256").update(bytes).digest("hex");
|
||||
|
|
@ -135,39 +139,18 @@ class ManagedStaticClient implements AnalysisClient {
|
|||
`Managed artifact digest changed after open: expected ${this.target.sha256}, observed ${observedDigest} at ${this.target.path}`,
|
||||
),
|
||||
);
|
||||
const result = inspectManagedArtifactBytes(bytes, this.target, {
|
||||
referenceOffset: input.reference_offset,
|
||||
referenceLimit: input.reference_limit,
|
||||
resourceOffset: input.resource_offset,
|
||||
resourceLimit: input.resource_limit,
|
||||
attributeOffset: input.attribute_offset,
|
||||
attributeLimit: input.attribute_limit,
|
||||
maxMetadataBytes: input.max_metadata_bytes,
|
||||
maxTableRows: input.max_table_rows,
|
||||
maxHeapItemBytes: input.max_heap_item_bytes,
|
||||
});
|
||||
const result = inspectManagedOperation(
|
||||
operation,
|
||||
parameters,
|
||||
bytes,
|
||||
this.target,
|
||||
);
|
||||
return ok(
|
||||
createAnalysisExecution(result, IDENTITY, {
|
||||
rawResult: null,
|
||||
limitations: result.limitations,
|
||||
subject: this.target,
|
||||
locations:
|
||||
result.pe.cli === null
|
||||
? [{ kind: "file-offset" as const, offset: 0 }]
|
||||
: [
|
||||
{
|
||||
kind: "file-offset-range" as const,
|
||||
start: result.pe.cli.header_offset,
|
||||
end:
|
||||
result.pe.cli.header_offset + result.pe.cli.header_size,
|
||||
},
|
||||
...[result.module, result.assembly]
|
||||
.filter((value) => value !== null)
|
||||
.map((value) => ({
|
||||
kind: "file-offset" as const,
|
||||
offset: value.row_offset,
|
||||
})),
|
||||
],
|
||||
locations: managedLocations(result),
|
||||
}),
|
||||
);
|
||||
} catch (cause: unknown) {
|
||||
|
|
@ -186,3 +169,99 @@ const isManagedOperation = (
|
|||
operation: AnalysisOperation,
|
||||
): operation is ManagedToolName =>
|
||||
MANAGED_TOOL_CONTRACTS.some(({ name }) => name === operation);
|
||||
|
||||
const limitationsFor = (operation: ManagedToolName): readonly string[] =>
|
||||
Object.freeze(
|
||||
operation === "inspect_managed_artifact"
|
||||
? [
|
||||
"This capability inventories PE/CLI identity only; inspect_managed_members admits bounded metadata members, signatures, and CIL anchors.",
|
||||
"It never loads the target assembly, resolves dependencies through a CLR, decompiles C#, or executes target code.",
|
||||
]
|
||||
: [
|
||||
"This capability decodes bounded PE/CLI metadata members, signatures, and file-backed method bodies; decompiled C# and cross-build matching are separate future contracts.",
|
||||
"It never loads the target assembly, resolves dependencies through a CLR, decompiles C#, or executes target code.",
|
||||
],
|
||||
);
|
||||
|
||||
const maxRequestedFileBytes = (
|
||||
operation: ManagedToolName,
|
||||
parameters: Readonly<Record<string, JsonValue>>,
|
||||
): number => {
|
||||
if (operation === "inspect_managed_artifact")
|
||||
return managedArtifactInputSchema.parse(parameters).max_file_bytes;
|
||||
return managedMemberInputSchema.parse(parameters).max_file_bytes;
|
||||
};
|
||||
|
||||
const inspectManagedOperation = (
|
||||
operation: ManagedToolName,
|
||||
parameters: Readonly<Record<string, JsonValue>>,
|
||||
bytes: Buffer,
|
||||
target: BinaryTarget,
|
||||
): ManagedArtifactInspection | ManagedMemberInspection => {
|
||||
if (operation === "inspect_managed_artifact") {
|
||||
const input = managedArtifactInputSchema.parse(parameters);
|
||||
return inspectManagedArtifactBytes(bytes, target, {
|
||||
referenceOffset: input.reference_offset,
|
||||
referenceLimit: input.reference_limit,
|
||||
resourceOffset: input.resource_offset,
|
||||
resourceLimit: input.resource_limit,
|
||||
attributeOffset: input.attribute_offset,
|
||||
attributeLimit: input.attribute_limit,
|
||||
maxMetadataBytes: input.max_metadata_bytes,
|
||||
maxTableRows: input.max_table_rows,
|
||||
maxHeapItemBytes: input.max_heap_item_bytes,
|
||||
});
|
||||
}
|
||||
const input = managedMemberInputSchema.parse(parameters);
|
||||
return inspectManagedMembersBytes(bytes, target, {
|
||||
typeOffset: input.type_offset,
|
||||
typeLimit: input.type_limit,
|
||||
methodOffset: input.method_offset,
|
||||
methodLimit: input.method_limit,
|
||||
fieldOffset: input.field_offset,
|
||||
fieldLimit: input.field_limit,
|
||||
memberRefOffset: input.member_ref_offset,
|
||||
memberRefLimit: input.member_ref_limit,
|
||||
edgeOffset: input.edge_offset,
|
||||
edgeLimit: input.edge_limit,
|
||||
instructionAnchorLimit: input.instruction_anchor_limit,
|
||||
maxMetadataBytes: input.max_metadata_bytes,
|
||||
maxTableRows: input.max_table_rows,
|
||||
maxHeapItemBytes: input.max_heap_item_bytes,
|
||||
maxMethodBodyBytes: input.max_method_body_bytes,
|
||||
maxMethodInstructions: input.max_method_instructions,
|
||||
});
|
||||
};
|
||||
|
||||
const managedLocations = (
|
||||
result: ManagedArtifactInspection | ManagedMemberInspection,
|
||||
): readonly EvidenceLocation[] => {
|
||||
if ("pe" in result) {
|
||||
if (result.pe.cli === null) return [{ kind: "file-offset", offset: 0 }];
|
||||
return [
|
||||
{
|
||||
kind: "file-offset-range",
|
||||
start: result.pe.cli.header_offset,
|
||||
end: result.pe.cli.header_offset + result.pe.cli.header_size,
|
||||
},
|
||||
...[result.module, result.assembly]
|
||||
.filter((value) => value !== null)
|
||||
.map((value) => ({
|
||||
kind: "file-offset" as const,
|
||||
offset: value.row_offset,
|
||||
})),
|
||||
];
|
||||
}
|
||||
return [
|
||||
...(result.module === null
|
||||
? [{ kind: "file-offset" as const, offset: 0 }]
|
||||
: [{ kind: "file-offset" as const, offset: result.module.row_offset }]),
|
||||
...result.methods.items
|
||||
.filter((method) => method.body.file_offset !== null)
|
||||
.slice(0, 8)
|
||||
.map((method) => ({
|
||||
kind: "file-offset" as const,
|
||||
offset: method.body.file_offset ?? 0,
|
||||
})),
|
||||
];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ describe("browser MCP tools", () => {
|
|||
const connected = await connectBrowser(browser);
|
||||
|
||||
const tools = await connected.client.listTools();
|
||||
expect(tools.tools).toHaveLength(84);
|
||||
expect(tools.tools).toHaveLength(85);
|
||||
expect(tools.tools.map(({ name }) => name)).toEqual(
|
||||
expect.arrayContaining([
|
||||
"list_browser_targets",
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ describe("tool contract surface", () => {
|
|||
...ELECTRON_TOOL_CONTRACTS,
|
||||
...APPLICATION_TOOL_CONTRACTS,
|
||||
];
|
||||
expect(contracts).toHaveLength(66);
|
||||
expect(contracts).toHaveLength(67);
|
||||
for (const contract of contracts) {
|
||||
const inputSchema = contractJsonSchema(contract.inputSchema);
|
||||
const outputSchema = contractJsonSchema(contract.outputSchema);
|
||||
|
|
@ -157,7 +157,7 @@ describe("tool contract surface", () => {
|
|||
}
|
||||
});
|
||||
|
||||
it("publishes no unconstrained output-schema holes across all 84 tools", () => {
|
||||
it("publishes no unconstrained output-schema holes across all 85 tools", () => {
|
||||
const contracts = [
|
||||
...OFFICIAL_TOOL_CONTRACTS,
|
||||
...ENHANCED_TOOL_CONTRACTS,
|
||||
|
|
@ -169,7 +169,7 @@ describe("tool contract surface", () => {
|
|||
...APPLICATION_TOOL_CONTRACTS,
|
||||
...SESSION_TOOL_CONTRACTS,
|
||||
];
|
||||
expect(contracts).toHaveLength(84);
|
||||
expect(contracts).toHaveLength(85);
|
||||
for (const contract of contracts) {
|
||||
const schema = contractJsonSchema(contract.outputSchema);
|
||||
expect(emptySchemaPaths(schema), contract.name).toEqual([]);
|
||||
|
|
|
|||
|
|
@ -75,8 +75,33 @@ const moduleRow = (name: number): Buffer =>
|
|||
const typeRefRow = (name: number, namespace: number): Buffer =>
|
||||
Buffer.concat([u16(0), u16(name), u16(namespace)]);
|
||||
|
||||
const methodDefRow = (name: number, signature: number): Buffer =>
|
||||
Buffer.concat([u32(0), u16(0), u16(0), u16(name), u16(signature), u16(0)]);
|
||||
const typeDefRow = (
|
||||
name: number,
|
||||
namespace: number,
|
||||
fieldList: number,
|
||||
methodList: number,
|
||||
): Buffer =>
|
||||
Buffer.concat([
|
||||
u32(0x0010_0001),
|
||||
u16(name),
|
||||
u16(namespace),
|
||||
u16((1 << 2) | 1),
|
||||
u16(fieldList),
|
||||
u16(methodList),
|
||||
]);
|
||||
|
||||
const fieldRow = (name: number, signature: number): Buffer =>
|
||||
Buffer.concat([u16(0x0001), u16(name), u16(signature)]);
|
||||
|
||||
const methodDefRow = (name: number, signature: number, rva = 0): Buffer =>
|
||||
Buffer.concat([
|
||||
u32(rva),
|
||||
u16(0),
|
||||
u16(0x0016),
|
||||
u16(name),
|
||||
u16(signature),
|
||||
u16(0),
|
||||
]);
|
||||
|
||||
const memberRefRow = (name: number, signature: number): Buffer =>
|
||||
Buffer.concat([u16((1 << 3) | 1), u16(name), u16(signature)]);
|
||||
|
|
@ -213,6 +238,9 @@ export const buildManagedPeFixture = (
|
|||
const attributeName = strings.add("TargetFrameworkAttribute");
|
||||
const attributeNamespace = strings.add("System.Runtime.Versioning");
|
||||
const constructorName = strings.add(".ctor");
|
||||
const typeName = strings.add("Program");
|
||||
const typeNamespace = strings.add("Fixture");
|
||||
const fieldName = strings.add("counter");
|
||||
const methodName = strings.add("Main");
|
||||
const resourceName = strings.add("Fixture.resources");
|
||||
const referenceNames = options.references ?? ["System.Runtime"];
|
||||
|
|
@ -220,8 +248,9 @@ export const buildManagedPeFixture = (
|
|||
strings.add(name),
|
||||
);
|
||||
const tokenBlob = blobs.add(Buffer.from("b77a5c561934e089", "hex"));
|
||||
const methodSignature = blobs.add(Buffer.from([0x00, 0x00]));
|
||||
const constructorSignature = blobs.add(Buffer.from([0x20, 0x01, 0x01]));
|
||||
const fieldSignature = blobs.add(Buffer.from([0x06, 0x08]));
|
||||
const methodSignature = blobs.add(Buffer.from([0x00, 0x00, 0x01]));
|
||||
const constructorSignature = blobs.add(Buffer.from([0x20, 0x01, 0x01, 0x0e]));
|
||||
const attributeBlob = blobs.add(
|
||||
fixedStringAttributeBlob(
|
||||
options.targetFramework ?? ".NETCoreApp,Version=v8.0",
|
||||
|
|
@ -230,7 +259,9 @@ export const buildManagedPeFixture = (
|
|||
const rows = new Map<number, readonly Buffer[]>([
|
||||
[0, [moduleRow(moduleName)]],
|
||||
[1, [typeRefRow(attributeName, attributeNamespace)]],
|
||||
[6, [methodDefRow(methodName, methodSignature)]],
|
||||
[2, [typeDefRow(typeName, typeNamespace, 1, 1)]],
|
||||
[4, [fieldRow(fieldName, fieldSignature)]],
|
||||
[6, [methodDefRow(methodName, methodSignature, 0x2800)]],
|
||||
[10, [memberRefRow(constructorName, constructorSignature)]],
|
||||
[12, [customAttributeRow(attributeBlob)]],
|
||||
[32, [assemblyRow(assemblyName)]],
|
||||
|
|
@ -291,6 +322,10 @@ export const buildManagedPeFixture = (
|
|||
image.writeUInt32LE(4, cli + 68);
|
||||
image.write("RTR\0", 0x0900, "ascii");
|
||||
}
|
||||
Buffer.from([
|
||||
0x32, 0x02, 0x7b, 0x01, 0x00, 0x00, 0x04, 0x28, 0x01, 0x00, 0x00, 0x0a,
|
||||
0x2a,
|
||||
]).copy(image, 0x0a00);
|
||||
metadata.copy(image, 0x0300);
|
||||
resourceDirectory.copy(image, 0x0800);
|
||||
return image;
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ describe("full MCP integration with multi-tool sequences", () => {
|
|||
});
|
||||
});
|
||||
|
||||
it("preserves the complete 84-tool inventory with a session", async () => {
|
||||
it("preserves the complete 85-tool inventory with a session", async () => {
|
||||
const session = new BinarySession(
|
||||
(_path) =>
|
||||
({
|
||||
|
|
@ -154,7 +154,7 @@ describe("full MCP integration with multi-tool sequences", () => {
|
|||
await client.connect(clientTransport);
|
||||
|
||||
const listed = await client.listTools();
|
||||
expect(listed.tools).toHaveLength(84);
|
||||
expect(listed.tools).toHaveLength(85);
|
||||
const names = listed.tools.map((t) => t.name);
|
||||
expect(names).toContain("open_binary");
|
||||
expect(names).toContain("close_binary");
|
||||
|
|
|
|||
|
|
@ -7,12 +7,16 @@ import { describe, expect, it } from "vitest";
|
|||
|
||||
import { runProviderAnalysis } from "../src/application/DirectAnalysis.js";
|
||||
import type { AnalysisExecution } from "../src/application/AnalysisProvider.js";
|
||||
import { managedArtifactInspectionSchema } from "../src/domain/managedArtifact.js";
|
||||
import {
|
||||
managedArtifactInspectionSchema,
|
||||
managedMemberInspectionSchema,
|
||||
} from "../src/domain/managedArtifact.js";
|
||||
import type { BinaryTarget } from "../src/domain/binaryTarget.js";
|
||||
import { parseBinaryTarget } from "../src/domain/binaryTarget.js";
|
||||
import { parseEvidence } from "../src/domain/evidence.js";
|
||||
import { ManagedStaticProvider } from "../src/dotnet/ManagedStaticProvider.js";
|
||||
import { inspectManagedArtifactBytes } from "../src/dotnet/ManagedArtifactInspector.js";
|
||||
import { inspectManagedMembersBytes } from "../src/dotnet/ManagedMemberInspector.js";
|
||||
import {
|
||||
buildManagedPeFixture,
|
||||
buildNativePeFixture,
|
||||
|
|
@ -30,6 +34,25 @@ const limits = {
|
|||
maxHeapItemBytes: 1024 * 1024,
|
||||
};
|
||||
|
||||
const memberLimits = {
|
||||
typeOffset: 0,
|
||||
typeLimit: 100,
|
||||
methodOffset: 0,
|
||||
methodLimit: 100,
|
||||
fieldOffset: 0,
|
||||
fieldLimit: 100,
|
||||
memberRefOffset: 0,
|
||||
memberRefLimit: 100,
|
||||
edgeOffset: 0,
|
||||
edgeLimit: 100,
|
||||
instructionAnchorLimit: 100,
|
||||
maxMetadataBytes: 1024 * 1024,
|
||||
maxTableRows: 1_000,
|
||||
maxHeapItemBytes: 1024 * 1024,
|
||||
maxMethodBodyBytes: 1024 * 1024,
|
||||
maxMethodInstructions: 1_000,
|
||||
};
|
||||
|
||||
describe("managed PE/CLI static provider", () => {
|
||||
it("inventories module, assembly, framework, references, and resources without loading CLR code", () => {
|
||||
const resource = Buffer.from("source-owned resource");
|
||||
|
|
@ -94,6 +117,147 @@ describe("managed PE/CLI static provider", () => {
|
|||
expect(result.coverage.issues).toEqual([]);
|
||||
});
|
||||
|
||||
it("inspects metadata members, signatures, CIL hashes, call edges, and field anchors", () => {
|
||||
const bytes = buildManagedPeFixture();
|
||||
const result = inspectManagedMembersBytes(
|
||||
bytes,
|
||||
target(bytes),
|
||||
memberLimits,
|
||||
);
|
||||
|
||||
expect(result.identity_scope).toEqual({
|
||||
token_identity: "build-local",
|
||||
requires_artifact_sha256: target(bytes).sha256,
|
||||
requires_mvid: "00112233-4455-6677-8899-aabbccddeeff",
|
||||
});
|
||||
expect(result.types.items).toEqual([
|
||||
expect.objectContaining({
|
||||
token: "0x02000001",
|
||||
full_name: "Fixture.Program",
|
||||
field_list: { first_row: 1, last_row: 1, count: 1 },
|
||||
method_list: { first_row: 1, last_row: 1, count: 1 },
|
||||
}),
|
||||
]);
|
||||
expect(result.fields.items).toEqual([
|
||||
expect.objectContaining({
|
||||
token: "0x04000001",
|
||||
declaring_type: "Fixture.Program",
|
||||
name: "counter",
|
||||
signature: expect.objectContaining({
|
||||
kind: "field",
|
||||
parse_status: "decoded",
|
||||
field_type: "i4",
|
||||
}),
|
||||
}),
|
||||
]);
|
||||
expect(result.methods.items).toEqual([
|
||||
expect.objectContaining({
|
||||
token: "0x06000001",
|
||||
declaring_type: "Fixture.Program",
|
||||
name: "Main",
|
||||
rva: 0x2800,
|
||||
signature: expect.objectContaining({
|
||||
kind: "method",
|
||||
parse_status: "decoded",
|
||||
return_type: "void",
|
||||
parameter_types: [],
|
||||
}),
|
||||
body: expect.objectContaining({
|
||||
status: "present",
|
||||
header_format: "tiny",
|
||||
file_offset: 0x0a00,
|
||||
il_size: 12,
|
||||
instruction_count: 4,
|
||||
decoded_instruction_count: 4,
|
||||
truncated_instructions: 0,
|
||||
opcode_counts: { "ldarg.0": 1, ldfld: 1, call: 1, ret: 1 },
|
||||
anchors: [
|
||||
{
|
||||
il_offset: 1,
|
||||
opcode: "ldfld",
|
||||
operand_kind: "field",
|
||||
operand: "0x04000001",
|
||||
},
|
||||
{
|
||||
il_offset: 6,
|
||||
opcode: "call",
|
||||
operand_kind: "method",
|
||||
operand: "0x0a000001",
|
||||
},
|
||||
],
|
||||
}),
|
||||
}),
|
||||
]);
|
||||
expect(result.member_refs.items).toEqual([
|
||||
expect.objectContaining({
|
||||
token: "0x0a000001",
|
||||
name: ".ctor",
|
||||
signature: expect.objectContaining({
|
||||
kind: "method",
|
||||
parse_status: "decoded",
|
||||
parameter_types: ["string"],
|
||||
}),
|
||||
}),
|
||||
]);
|
||||
expect(result.call_edges.items).toEqual([
|
||||
{
|
||||
caller_token: "0x06000001",
|
||||
caller: "Fixture.Program.Main",
|
||||
opcode: "call",
|
||||
target_token: "0x0a000001",
|
||||
target_kind: "member-ref",
|
||||
target_name: ".ctor",
|
||||
},
|
||||
]);
|
||||
expect(result.field_accesses.items).toEqual([
|
||||
{
|
||||
method_token: "0x06000001",
|
||||
method: "Fixture.Program.Main",
|
||||
opcode: "ldfld",
|
||||
field_token: "0x04000001",
|
||||
field_name: "counter",
|
||||
},
|
||||
]);
|
||||
expect(result.coverage).toMatchObject({ state: "complete", issues: [] });
|
||||
});
|
||||
|
||||
it("keeps member evidence bounded and typed for pagination and unavailable metadata", () => {
|
||||
const bytes = buildManagedPeFixture();
|
||||
const paged = inspectManagedMembersBytes(bytes, target(bytes), {
|
||||
...memberLimits,
|
||||
methodLimit: 0 + 1,
|
||||
instructionAnchorLimit: 1,
|
||||
});
|
||||
expect(paged.methods).toMatchObject({
|
||||
total: 1,
|
||||
returned: 1,
|
||||
complete: true,
|
||||
});
|
||||
expect(paged.methods.items[0]?.body.anchors).toHaveLength(1);
|
||||
|
||||
const nativeBytes = buildNativePeFixture();
|
||||
const native = inspectManagedMembersBytes(
|
||||
nativeBytes,
|
||||
target(nativeBytes),
|
||||
memberLimits,
|
||||
);
|
||||
expect(native.metadata.status).toBe("absent");
|
||||
expect(native.coverage.state).toBe("unavailable");
|
||||
|
||||
const malformedBytes = buildManagedPeFixture({
|
||||
corruptMetadataSignature: true,
|
||||
});
|
||||
const malformed = inspectManagedMembersBytes(
|
||||
malformedBytes,
|
||||
target(malformedBytes),
|
||||
memberLimits,
|
||||
);
|
||||
expect(malformed.metadata.status).toBe("malformed");
|
||||
expect(malformed.coverage.issues).toEqual([
|
||||
expect.objectContaining({ code: "invalid-metadata-root" }),
|
||||
]);
|
||||
});
|
||||
|
||||
it("reports native PE, malformed metadata, and bounded metadata failures as typed results", () => {
|
||||
const native = inspectManagedArtifactBytes(
|
||||
buildNativePeFixture(),
|
||||
|
|
@ -160,6 +324,16 @@ describe("managed PE/CLI static provider", () => {
|
|||
expect(observed.value.provider.id).toBe("rea-dotnet-static");
|
||||
expect(observed.value.subject).toMatchObject({ path, format: "pe" });
|
||||
|
||||
const members = await client.execute("inspect_managed_members", {});
|
||||
expect(members.ok).toBe(true);
|
||||
if (!members.ok) return;
|
||||
expect(asManagedMemberResult(members.value)).toMatchObject({
|
||||
artifact: { path, sha256: parsed.value.sha256, format: "pe" },
|
||||
methods: { total: 1 },
|
||||
call_edges: { total: 1 },
|
||||
field_accesses: { total: 1 },
|
||||
});
|
||||
|
||||
const cancelled = new AbortController();
|
||||
cancelled.abort();
|
||||
const cancelledResult = await client.execute(
|
||||
|
|
@ -213,6 +387,19 @@ describe("managed PE/CLI static provider", () => {
|
|||
references: { limit: 1 },
|
||||
},
|
||||
});
|
||||
|
||||
const memberEvidence = parseEvidence(
|
||||
await runProviderAnalysis(path, "inspect_managed_members", {}),
|
||||
);
|
||||
expect(memberEvidence).toMatchObject({
|
||||
operation: "inspect_managed_members",
|
||||
provider: { id: "rea-dotnet-static" },
|
||||
subject: { local_path: path, format: "pe" },
|
||||
normalized_result: {
|
||||
identity_scope: { token_identity: "build-local" },
|
||||
methods: { total: 1 },
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -227,3 +414,6 @@ const target = (bytes: Buffer): BinaryTarget => ({
|
|||
|
||||
const asManagedResult = (execution: AnalysisExecution) =>
|
||||
managedArtifactInspectionSchema.parse(execution.result);
|
||||
|
||||
const asManagedMemberResult = (execution: AnalysisExecution) =>
|
||||
managedMemberInspectionSchema.parse(execution.result);
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@ describe("managed artifact MCP tools", () => {
|
|||
expect(tools.tools.map(({ name }) => name)).toContain(
|
||||
"inspect_managed_artifact",
|
||||
);
|
||||
expect(tools.tools.map(({ name }) => name)).toContain(
|
||||
"inspect_managed_members",
|
||||
);
|
||||
|
||||
await client.callTool({
|
||||
name: "open_binary",
|
||||
|
|
@ -59,6 +62,25 @@ describe("managed artifact MCP tools", () => {
|
|||
references: { limit: 1 },
|
||||
},
|
||||
});
|
||||
|
||||
const members = structured(
|
||||
await client.callTool({
|
||||
name: "inspect_managed_members",
|
||||
arguments: { method_limit: 1 },
|
||||
}),
|
||||
);
|
||||
|
||||
expect(members).toMatchObject({
|
||||
operation: "inspect_managed_members",
|
||||
provider: { id: "rea-dotnet-static" },
|
||||
subject: { local_path: path, format: "pe" },
|
||||
normalized_result: {
|
||||
identity_scope: { token_identity: "build-local" },
|
||||
methods: { total: 1, returned: 1 },
|
||||
call_edges: { total: 1 },
|
||||
field_accesses: { total: 1 },
|
||||
},
|
||||
});
|
||||
} finally {
|
||||
await Promise.all([client.close(), server.close()]);
|
||||
await session.close();
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ describe("guided prompts over MCP", () => {
|
|||
),
|
||||
);
|
||||
}
|
||||
expect((await client.listTools()).tools).toHaveLength(84);
|
||||
expect((await client.listTools()).tools).toHaveLength(85);
|
||||
const result = await client.getPrompt({
|
||||
name: "investigate_feature",
|
||||
arguments: {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ const fixturePath = fileURLToPath(
|
|||
);
|
||||
|
||||
describe("production stdio runtime", () => {
|
||||
it("starts the built entrypoint, lists 84 tools, calls one, and shuts down", async () => {
|
||||
it("starts the built entrypoint, lists 85 tools, calls one, and shuts down", async () => {
|
||||
const transport = new StdioClientTransport({
|
||||
command: process.execPath,
|
||||
args: [mainPath],
|
||||
|
|
@ -32,7 +32,7 @@ describe("production stdio runtime", () => {
|
|||
try {
|
||||
await client.connect(transport);
|
||||
const tools = await client.listTools();
|
||||
expect(tools.tools).toHaveLength(84);
|
||||
expect(tools.tools).toHaveLength(85);
|
||||
const result = await client.callTool({
|
||||
name: "current_document",
|
||||
arguments: {},
|
||||
|
|
@ -78,7 +78,7 @@ describe("production stdio runtime", () => {
|
|||
|
||||
try {
|
||||
await client.connect(transport);
|
||||
expect((await client.listTools()).tools).toHaveLength(84);
|
||||
expect((await client.listTools()).tools).toHaveLength(85);
|
||||
} finally {
|
||||
await client.close();
|
||||
await transport.close();
|
||||
|
|
|
|||
|
|
@ -24,11 +24,11 @@ describe("server and catalog identity", () => {
|
|||
});
|
||||
expect(PRODUCT_IDENTITY.packageVersion).toBe(packageJson.version);
|
||||
expect(SDK_IDENTITY.server).toBe("2.0.0-beta.4");
|
||||
expect(CLI_COMMAND_NAMES).toHaveLength(44);
|
||||
expect(new Set(CLI_COMMAND_NAMES).size).toBe(44);
|
||||
expect(CLI_COMMAND_NAMES).toHaveLength(45);
|
||||
expect(new Set(CLI_COMMAND_NAMES).size).toBe(45);
|
||||
expect(CATALOG_IDENTITY.counts).toEqual({
|
||||
cli_commands: 44,
|
||||
mcp_tools: 84,
|
||||
cli_commands: 45,
|
||||
mcp_tools: 85,
|
||||
mcp_prompts: 6,
|
||||
mcp_resources: 2,
|
||||
mcp_resource_templates: 7,
|
||||
|
|
@ -162,7 +162,7 @@ describe("server and catalog identity", () => {
|
|||
expect(status.structuredContent).toMatchObject({
|
||||
result: {
|
||||
server_identity: {
|
||||
catalog: { counts: { mcp_tools: 84, cli_commands: 44 } },
|
||||
catalog: { counts: { mcp_tools: 85, cli_commands: 45 } },
|
||||
alignment: { state: "mcp_server_restart_required" },
|
||||
},
|
||||
tool_availability: expect.arrayContaining([
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ describe("target-free MCP lifecycle", () => {
|
|||
expect(text(before)).toBe(
|
||||
"No app is open. Ask the user which app to investigate, then call open_binary with its local path.",
|
||||
);
|
||||
expect((await mcp.listTools()).tools).toHaveLength(84);
|
||||
expect((await mcp.listTools()).tools).toHaveLength(85);
|
||||
const deniedCapture = await mcp.callTool({
|
||||
name: "capture_process_scenario",
|
||||
arguments: {
|
||||
|
|
|
|||
|
|
@ -14,13 +14,14 @@ import { ELECTRON_TOOL_CONTRACTS } from "../src/contracts/electronToolContracts.
|
|||
import { APPLICATION_TOOL_CONTRACTS } from "../src/contracts/applicationToolContracts.js";
|
||||
|
||||
describe("tool contract inventory", () => {
|
||||
it("publishes 66 analysis contracts and eighteen session tools", () => {
|
||||
it("publishes 67 analysis contracts and eighteen session tools", () => {
|
||||
expect(OFFICIAL_TOOL_CONTRACTS).toHaveLength(33);
|
||||
expect(ENHANCED_TOOL_CONTRACTS).toHaveLength(10);
|
||||
expect(NATIVE_TOOL_CONTRACTS).toHaveLength(5);
|
||||
expect(ARTIFACT_TOOL_CONTRACTS).toHaveLength(2);
|
||||
expect(MANAGED_TOOL_CONTRACTS.map(({ name }) => name)).toEqual([
|
||||
"inspect_managed_artifact",
|
||||
"inspect_managed_members",
|
||||
]);
|
||||
expect(BROWSER_TOOL_CONTRACTS.map(({ name }) => name)).toEqual([
|
||||
"list_browser_targets",
|
||||
|
|
@ -63,8 +64,8 @@ describe("tool contract inventory", () => {
|
|||
"update_unknown",
|
||||
"verify_unknown_resolution",
|
||||
]);
|
||||
expect(TOOL_CONTRACTS).toHaveLength(84);
|
||||
expect(new Set(TOOL_CONTRACTS.map(({ name }) => name)).size).toBe(84);
|
||||
expect(TOOL_CONTRACTS).toHaveLength(85);
|
||||
expect(new Set(TOOL_CONTRACTS.map(({ name }) => name)).size).toBe(85);
|
||||
});
|
||||
|
||||
it("retains documented enhanced-tool limits at the input boundary", () => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue