mirror of
https://github.com/morluto/rea
synced 2026-10-26 14:25:49 -04:00
0baad58e60
* feat(ghidra): admit RISC-V ELF analysis through a pinned generic lane Refs #2063. Recognize `EM_RISCV` (243) as a provider-neutral family that carries its own ELF facts, and bound the first Ghidra lane to little-endian `ET_EXEC` images that declare the double-float ABI, pinned to `RISCV:LE:32:default` or `RISCV:LE:64:default` with the `gcc` compiler specification. Ghidra 12.1.4 is not reliable without the pin: its `riscv.opinion` pins `variant="default"` for the 64-bit constraint and leaves the 32-bit constraint with the comment that the loader "must choose between 'default' and 'AndeStar' variants". Measured on the installed release tree, a source-owned generic RV32 ELF with no Andes declaration imports as `RISCV:LE:32:AndeStar_v5:gcc`, while RV64 resolves to `RISCV:LE:64:default:gcc`. The lane therefore states the language per width and refuses any caller-selected processor outside it instead of inheriting the header guess. Refusals name the declaration rather than falling back to a guessed profile: big-endian images (Ghidra 12.1.4 ships no big-endian RISC-V language), non-`ET_EXEC` images, `EF_RISCV_RVE`, `EF_RISCV_TSO`, and every float ABI other than double, which the pinned generic compiler specifications model. The raw e_flags bits stay in Evidence as declarations, not as instruction semantics. Family recognition now has one owner for the ELF-metadata families: `ELF_METADATA_ARCHITECTURES`, `isElfMetadataArchitecture`, and `HeaderArchitecture` replace ten `Exclude<BinaryArchitecture, "mips">` sites that would each have needed a second hand-edited member. `ghidraPinnedLanguage` is that owner for the import commitment: the session readback previously re-derived only the MIPS pin, so a profile committing any second pinned language failed with a language-mismatch error before the bridge started. Hopper and IDA refuse RISC-V by name, matching the MIPS wording. Caller-supplied raw-binary entry keeps its existing four-family list; this lane is ELF-header admission only. Verification on macOS 15.7.7 arm64, Node 24.18.0, Ghidra 12.1.4 PUBLIC and JDK 21.0.12.1, with the host decompiler built from the release sources for `os/mac_arm_64`: `npm run check` passes; `npm run test:fast` passes 396 test files; `npm run verify:test-discovery` discovers all 917 test files exactly once. Source-owned RV32 and RV64 double-float `ET_EXEC` fixtures complete `rea analyze --provider ghidra` and `rea decompile rea_riscv_entry`, committing `RISCV:LE:32:default` and `RISCV:LE:64:default` with `language_selection: provider-pinned-v1`; the soft-float RV64 shape is refused with the named float-ABI reason, and the full refusal matrix including the RV32 and width-mismatch shapes is covered by unit tests. No `verify:ghidra:riscv` lane script is included in this change; the runs above were performed manually against the installed engine. Fork pull requests receive no CI check runs, so the real-provider scope above is the evidence available for review. * fix(ghidra): bound the RISC-V lane by declared flags and document it Address review feedback on #2151. `e_flags` bits outside `EF_RISCV_RVC | EF_RISCV_FLOAT_ABI` are now refused with the offending value named, so a reserved or newer producer declaration cannot enter the verified generic lane by falling through the RVE, TSO and float-ABI checks. Admission reads `e_type` only, so the refusal text no longer calls `ET_EXEC` static: a fixed-address declaration does not establish static linkage, and `PT_INTERP` and dynamic dependencies are not inspected. The session records that boundary as a limitation rather than inferring a load model. Add `docs/ghidra-riscv.md` in the shape of the MIPS lane guide (admission boundary, refusal table, why the language is pinned per class, Evidence fields, and what the fixtures do not establish), and correct `docs/firmware-analysis.md`, which still told users that MIPS and RISC-V decompilation had not been added. Verification after the change: `npm run check` and `npm run docs:check` pass; the RISC-V module tests pass (17 lane cases plus 9 parser cases); on Ghidra 12.1.4 with JDK 21.0.12.1 the RV32 and RV64 double-float fixtures still analyze and decompile with `RISCV:LE:32:default` / `RISCV:LE:64:default` and `language_selection: provider-pinned-v1`, the soft-float fixture is still refused by name, and the new linkage limitation appears in the emitted Evidence. * fix(ghidra): align RISC-V pinning with admission Reuse the complete lane admission boundary when selecting a language, retain unsigned unsupported flag bits in diagnostics, and derive float ABI metadata from the source declaration. * test(ghidra): verify RISC-V CLI and MCP workflows Build source-owned RV32/RV64 fixtures with Clang and LLD, establish independent ELF and symbol facts with LLVM readelf, and verify real provider evidence, instruction bytes, calls, decompilation, schema projections, snapshot replay, refusal diagnostics, source immutability and cleanup. Verified on macOS ARM64 with Ghidra 12.1.4, JDK 21 and LLVM/LLD 23.1.2. Dynamic linkage, big-endian, Andes and RVE/TSO workflows remain unverified; ISA attributes are not inspected. --------- Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
357 lines
21 KiB
JSON
357 lines
21 KiB
JSON
{
|
|
"name": "rea-agents",
|
|
"mcpName": "io.github.morluto/rea",
|
|
"version": "6.4.0",
|
|
"description": "Reverse engineer anything from your terminal or agent with one CLI and MCP server.",
|
|
"license": "MIT",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/morluto/rea.git"
|
|
},
|
|
"homepage": "https://github.com/morluto/rea#readme",
|
|
"bugs": {
|
|
"url": "https://github.com/morluto/rea/issues"
|
|
},
|
|
"keywords": [
|
|
"reverse-engineering",
|
|
"binary-analysis",
|
|
"agents",
|
|
"agent-skills",
|
|
"cli",
|
|
"mcp-server",
|
|
"model-context-protocol",
|
|
"static-analysis",
|
|
"disassembler",
|
|
"decompiler",
|
|
"mcp",
|
|
"hopper"
|
|
],
|
|
"publishConfig": {
|
|
"access": "public"
|
|
},
|
|
"type": "module",
|
|
"imports": {
|
|
"#javascript-analysis-worker": "./dist/composition/javascriptAnalysisWorkerProcess.js"
|
|
},
|
|
"bin": {
|
|
"rea": "scripts/rea.mjs",
|
|
"rea-agents": "scripts/rea.mjs"
|
|
},
|
|
"engines": {
|
|
"node": "^22.19.0 || ^24.11.0 || >=26.0.0"
|
|
},
|
|
"packageManager": "npm@11.16.0",
|
|
"files": [
|
|
"dist",
|
|
"install.sh",
|
|
"bridge/hopper_bridge.py",
|
|
"bridge/native/NativeUIChildren.swift",
|
|
"bridge/native/ReaNativeUI.swift",
|
|
"bridge/native/rea_lldb_tracer.py",
|
|
"bridge/process/ProcessRunTokenReader.swift",
|
|
"bridge/process/ProcessRunTokenReaderMain.swift",
|
|
"bridge/ghidra/ReaGhidraBridge.java",
|
|
"bridge/ghidra/ReaGhidraBundleActivator.java",
|
|
"bridge/ghidra/ReaGhidraExtensions.java",
|
|
"bridge/ghidra/ReaGhidraPrepareCom.java",
|
|
"bridge/ghidra/ReaGhidraApplySeeds.java",
|
|
"bridge/ghidra/ReaGhidraAnalysisOptions.java",
|
|
"bridge/ghidra/ReaGhidraNoReturnFix.java",
|
|
"bridge/ghidra/ReaGhidraMipsSoftFloat.java",
|
|
"bridge/ghidra/ReaGhidraPrepareRaw.java",
|
|
"bridge/android/ReaJadxBridge.java",
|
|
"bridge/mitmproxy/capture.py",
|
|
"scripts/rea.mjs",
|
|
"scripts/electron-active-hook.cjs",
|
|
"scripts/electron-active-hook-boundaries.cjs",
|
|
"scripts/hopper-demo-x11.py",
|
|
"scripts/prepack.mjs",
|
|
"scripts/prepare.mjs",
|
|
"skills",
|
|
"README.md",
|
|
"DISCLAIMER.md",
|
|
"THIRD_PARTY_NOTICES.md",
|
|
"LICENSE",
|
|
"native/windows/build/manifest.json",
|
|
"native/windows/build/rea-windows-x64.node",
|
|
"scripts/verify-windows-native-artifact.mjs",
|
|
"bridge/pwntools/layout.py",
|
|
"bridge/pwntools/layout_impl.py",
|
|
"third_party/pwntools/README.md",
|
|
"third_party/wabt/README.md",
|
|
"third_party/evmole/README.md",
|
|
"third_party/evmole/LICENSE",
|
|
"bridge/pwntools/decoder_runtime.py",
|
|
"bridge/pwntools/recorded_crash.py",
|
|
"bridge/pwntools/recorded_crash_impl.py",
|
|
"bridge/pwndbg/launch.py",
|
|
"bridge/pwndbg/launch_impl.py",
|
|
"bridge/pwndbg/core_context.py",
|
|
"third_party/pwndbg/README.md",
|
|
"third_party/pwndbg/LICENSE.md",
|
|
"licenses"
|
|
],
|
|
"scripts": {
|
|
"release:notes": "node scripts/release-notes.mjs",
|
|
"deps:check": "node scripts/check-dependency-install.mjs",
|
|
"metadata:generate": "node scripts/run-exclusive.mjs artifacts node scripts/generate-package-metadata.mjs",
|
|
"metadata:check": "node scripts/generate-package-metadata.mjs --check",
|
|
"mcp-registry:check": "node scripts/verify-mcp-registry-metadata.mjs",
|
|
"mcp-catalog:generate": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:mcp-catalog",
|
|
"mcp-catalog:check": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run mcp-catalog:check:built",
|
|
"prebuild": "npm run deps:check",
|
|
"build": "node scripts/run-exclusive.mjs artifacts turbo run artifacts:skills --force",
|
|
"precheck": "npm run deps:check",
|
|
"check": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint:built format:check knip metadata:check && npm run verify:architecture-guards",
|
|
"precheck:fast": "npm run deps:check",
|
|
"check:fast": "turbo run typecheck lint --output-logs=errors-only",
|
|
"precheck:changed": "npm run deps:check",
|
|
"check:changed": "npm run check:fast && npm run test:changed",
|
|
"precheck:test": "npm run deps:check",
|
|
"check:test": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint:built format:check knip metadata:check test:run",
|
|
"precheck:pr": "npm run deps:check",
|
|
"check:pr": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint:built format:check knip metadata:check test:run && npm run test:python && npm run docs:check && npm run jscpd && npm run scan:todos",
|
|
"precheck:ci": "npm run deps:check",
|
|
"check:ci": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint:built format:check knip metadata:check jscpd scan:todos && npm run verify:architecture-guards",
|
|
"build:cached": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:skills",
|
|
"build:termux": "node scripts/run-exclusive.mjs artifacts npm run build:termux:run",
|
|
"build:termux:run": "npm run compile:termux && npm run artifacts:skills",
|
|
"format": "oxfmt .",
|
|
"format:check": "oxfmt --check .",
|
|
"lint": "oxlint && npm run verify:module-boundaries",
|
|
"lint:built": "npm run lint",
|
|
"lint:fix": "oxlint --fix && npm run verify:module-boundaries",
|
|
"knip": "knip",
|
|
"jscpd": "jscpd src/ tests/",
|
|
"scan:todos": "node scripts/scan-todos.mjs",
|
|
"start": "node scripts/rea.mjs mcp",
|
|
"test": "npm run test:with-build",
|
|
"test:with-build": "npm run test:prepare && vitest run",
|
|
"test:run": "vitest run",
|
|
"test:python": "python3 -m unittest bridge/native/test_rea_lldb_tracer.py -v",
|
|
"test:local": "node scripts/run-development-tests.mjs local",
|
|
"test:fast": "vitest run --project domain --project services --project adapters --project composition --project conformance --project evaluation",
|
|
"pretest:boundary": "npm run test:prepare",
|
|
"test:boundary": "vitest run --project boundary --project cli-boundary --project process-boundary --project mcp-boundary --project process-global",
|
|
"pretest:mcp": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:skills artifacts:mcp-catalog",
|
|
"test:mcp": "vitest run --project mcp-boundary",
|
|
"pretest:acceptance": "npm run build:cached",
|
|
"test:acceptance": "vitest run --project acceptance",
|
|
"test:changed": "node scripts/run-development-tests.mjs changed",
|
|
"pretest:integration": "npm run test:prepare",
|
|
"test:integration": "vitest run --project boundary --project cli-boundary --project process-boundary --project mcp-boundary --project process-global --project acceptance",
|
|
"pretest:coverage": "npm run test:prepare",
|
|
"test:coverage": "vitest run --coverage.enabled --coverage.provider=v8",
|
|
"test:ci": "npm run test:coverage -- --reporter=default --reporter=junit --outputFile.junit=test-results.xml",
|
|
"pretest:ci:shard": "npm run test:prepare",
|
|
"test:ci:shard": "npm run test:ci:shard:run",
|
|
"test:ci:shard:run": "vitest run --coverage.enabled --coverage.provider=v8 --coverage.thresholds.lines=0 --coverage.thresholds.functions=0 --coverage.thresholds.branches=0 --coverage.thresholds.statements=0 --reporter=default --reporter=blob",
|
|
"test:ci:merge": "vitest --merge-reports --coverage.enabled --coverage.provider=v8",
|
|
"pretest:verbose": "npm run test:prepare",
|
|
"test:verbose": "vitest run --reporter=verbose",
|
|
"test:watch": "vitest --project domain --project services --project adapters --project composition --project conformance --project evaluation --changed",
|
|
"pretest:watch:all": "npm run test:prepare",
|
|
"test:watch:all": "vitest --changed",
|
|
"typecheck": "tsc --noEmit",
|
|
"verify:test-temp-hygiene": "npm run test:prepare && node scripts/verify-test-temp-hygiene.mjs",
|
|
"verify:hopper": "npm run verify:fixtures && npm run build:cached && node scripts/verify-real-hopper.mjs",
|
|
"verify:hopper:deadlines": "npm run verify:fixtures && npm run build:cached && node scripts/verify-real-hopper-deadlines.mjs",
|
|
"verify:hopper:fat": "npm run build:cached && node scripts/verify-real-hopper-fat.mjs",
|
|
"verify:hopper:fat64": "npm run build:cached && node scripts/verify-real-hopper-fat.mjs --fat64",
|
|
"verify:apple-dispatch": "npm run build:cached && node scripts/verify/apple/dispatch.mjs",
|
|
"verify:native-ui": "npm run build:cached && node scripts/verify-native-ui.mjs",
|
|
"verify:keyed-archive": "npm run build:cached && node scripts/verify/apple/keyed-archive.mjs",
|
|
"verify:macos-bundle": "npm run build:cached && node scripts/verify/apple/macos-bundle.mjs",
|
|
"verify:legacy-simulator": "npm run build:cached && node scripts/verify/apple/legacy-simulator.mjs",
|
|
"verify:architecture-guards": "node scripts/verify/architecture-guards.mjs",
|
|
"verify:apktool": "npm run build:cached && node scripts/verify-apktool.mjs",
|
|
"verify:flutter": "npm run build:cached && node scripts/verify-flutter.mjs",
|
|
"verify:adb": "npm run build:cached && node scripts/verify-adb.mjs",
|
|
"verify:ghidra": "npm run build:cached && node scripts/verify-real-ghidra.mjs",
|
|
"verify:ghidra:seeds": "npm run build:cached && node scripts/verify/ghidra/seeds.mjs",
|
|
"verify:ghidra:mips": "npm run build:cached && node scripts/verify-real-ghidra-mips.mjs",
|
|
"verify:ghidra:riscv": "npm run build:cached && node scripts/verify-real-ghidra-riscv.mjs",
|
|
"verify:ghidra:mips-shared": "npm run build:cached && node scripts/verify-real-ghidra-mips-shared.mjs",
|
|
"verify:ghidra:mips-relocatable": "npm run build:cached && node scripts/verify-real-ghidra-mips-relocatable.mjs",
|
|
"verify:ghidra:swift": "npm run build:cached && node scripts/verify-real-ghidra-swift.mjs",
|
|
"verify:ida": "npm run build:cached && node scripts/verify-real-ida.mjs",
|
|
"verify:ghidra:switch": "npm run build:cached && node scripts/verify-real-ghidra-switch.mjs",
|
|
"verify:ghidra:dos": "npm run build:cached && node scripts/verify-real-ghidra-dos.mjs",
|
|
"verify:ghidra:com": "npm run build:cached && node scripts/verify-real-ghidra-com.mjs",
|
|
"verify:ghidra:raw": "npm run build:cached && node scripts/verify-real-ghidra-raw.mjs",
|
|
"verify:ghidra:aarch64-jump-table": "npm run build:cached && node scripts/verify-real-ghidra.mjs --aarch64-jump-table",
|
|
"verify:interface-builder": "npm run build:cached && node scripts/verify/apple/interface-builder.mjs",
|
|
"verify:ghidra:cross-format": "npm run build:cached && node scripts/verify-real-ghidra.mjs --cross-format",
|
|
"verify:ghidra:windows": "npm run build:cached && npm run build:ghidra-windows-fixture && node scripts/verify-real-ghidra-windows.mjs",
|
|
"verify:browser": "npm run build:cached && node scripts/verify-real-browser.mjs",
|
|
"verify:frida": "npm run build:cached && node scripts/verify-frida.mjs",
|
|
"verify:frida:bindings": "tsc --noEmit -p tsconfig.frida-verification.json",
|
|
"verify:browser:dom": "node scripts/verify-browser-dom-destinations.mjs",
|
|
"verify:browser:network": "npm run build:cached && node scripts/verify-browser-network.mjs",
|
|
"verify:electron": "npm run build:cached && node scripts/verify-real-electron.mjs",
|
|
"verify:inspector": "npm run build:cached && node scripts/verify/inspector/runtime-observation.mjs",
|
|
"verify:javascript-runtime": "npm run build:cached && node scripts/verify/javascript/runtime-observation.mjs",
|
|
"verify:javascript:digests": "npm run build:cached && node scripts/verify/javascript/digests.mjs",
|
|
"verify:javascript:output": "npm run build:cached && node scripts/verify/javascript/output.mjs",
|
|
"verify:application-workflows": "npm run build:cached && node scripts/verify/javascript/application-workflows.mjs",
|
|
"verify:managed": "npm run build:cached && node scripts/verify/managed/conformance.mjs",
|
|
"verify:firmware": "npm run build:cached && node scripts/verify/firmware/analysis.mjs",
|
|
"fixtures:firmware": "node scripts/fixtures/firmware/generate.mjs",
|
|
"verify:android": "npm run build:cached && node scripts/verify/android/analysis.mjs",
|
|
"verify:jeb": "npm run build:cached && node scripts/verify-jeb.mjs",
|
|
"fixtures:android": "node scripts/fixtures/android/fetch.mjs",
|
|
"verify:harmony": "npm run build:cached && node scripts/verify/harmony/analysis.mjs",
|
|
"fixtures:harmony": "node scripts/fixtures/harmony/fetch.mjs",
|
|
"verify:agent": "npm run build:cached && node scripts/verify-agent-experience.mjs",
|
|
"verify:hopper:linux": "npm run verify:fixtures && npm run build:cached && node scripts/verify-real-hopper-linux.mjs",
|
|
"verify:setup:linux": "npm run build:cached && node scripts/verify-linux-setup-e2e.mjs",
|
|
"build:fixtures": "node scripts/build-conformance-fixtures.mjs",
|
|
"build:ghidra-windows-fixture": "node scripts/create-ghidra-windows-fixture.mjs",
|
|
"verify:fixtures": "npm run build:fixtures && node scripts/verify-conformance-fixtures.mjs",
|
|
"verify:readiness": "npm run build:cached && npm run verify:fixtures && node scripts/verify-reconstruction-readiness.mjs",
|
|
"verify:package": "npm run build:cached && node scripts/verify-package.mjs",
|
|
"verify:package:windows": "npm run build:cached && node scripts/verify-windows-package.mjs",
|
|
"verify:qwen-client": "npm run build:cached && node scripts/verify-qwen-client.mjs",
|
|
"verify:gemini-client": "npm run build:cached && node scripts/verify-gemini-client.mjs",
|
|
"verify:opencode-client": "npm run build:cached && node scripts/verify-opencode-client.mjs",
|
|
"verify:grok-client": "npm run build:cached && node scripts/verify-grok-client.mjs",
|
|
"verify:commandcode-client": "npm run build:cached && node scripts/verify-commandcode-client.mjs",
|
|
"verify:omp-client": "npm run build:cached && node scripts/verify-omp-client.mjs",
|
|
"verify:copilot-client": "npm run build:cached && node scripts/verify-copilot-client.mjs",
|
|
"verify:claude-client": "npm run build:cached && node scripts/verify-claude-client.mjs",
|
|
"verify:pi-client": "npm run build:cached && node scripts/verify-native-agent-client.mjs pi",
|
|
"verify:hermes-client": "npm run build:cached && node scripts/verify-native-agent-client.mjs hermes",
|
|
"verify:deepseek-client": "npm run build:cached && node scripts/verify-deepseek-client.mjs",
|
|
"probe:windows-capabilities": "npm run build:cached && node scripts/windows-capabilities.mjs",
|
|
"verify:published": "node scripts/verify-published-package.mjs",
|
|
"config:print": "node scripts/print-mcp-config.mjs",
|
|
"evidence:generate": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:managed-evidence",
|
|
"evidence:check": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run evidence:check:built",
|
|
"predocs:dev": "npm run docs:generate",
|
|
"docs:dev": "vitepress dev docs",
|
|
"predocs:build": "npm run docs:generate",
|
|
"docs:build": "vitepress build docs",
|
|
"docs:preview": "vitepress preview docs",
|
|
"docs:generate": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts npm run docs:prepare",
|
|
"docs:check": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run docs:check:built && npm run test:local -- tests/conformance/readmeConsistency.test.ts",
|
|
"docs:check:built": "node scripts/generate-package-metadata.mjs --check && node scripts/generate-skill-metadata.mjs --check && node scripts/generate-product-catalog.mjs --check && node scripts/generate-completion-ledger.mjs --check && node scripts/check-doc-facts.mjs && node scripts/generate-error-schema.mjs --check",
|
|
"docs:error-schema": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:error-schema",
|
|
"prepack": "node scripts/prepack.mjs",
|
|
"prepare": "node scripts/prepare.mjs",
|
|
"verify:asset-catalog": "npm run build:cached && node scripts/verify/apple/asset-catalog.mjs",
|
|
"verify:native-calls": "npm run build:cached && node scripts/verify-native-calls.mjs",
|
|
"verify:native-ui:permissions": "npm run build:cached && node scripts/verify-native-ui.mjs --allow-permission-denial",
|
|
"test:focused": "node scripts/run-development-tests.mjs focused",
|
|
"build:windows-native": "node scripts/build-windows-native.mjs",
|
|
"verify:windows-native:artifact": "node scripts/verify-windows-native-artifact.mjs",
|
|
"prepublishOnly": "npm run verify:windows-native:artifact",
|
|
"verify:windows-native": "node scripts/verify-windows-native.mjs",
|
|
"verify:ghidra:windows:package": "node scripts/verify-packaged-ghidra-windows.mjs",
|
|
"build:ghidra:nativeaot": "node scripts/build-ghidra-nativeaot.mjs",
|
|
"build:fixtures:nativeaot": "node scripts/generate-nativeaot-fixtures.mjs",
|
|
"verify:ghidra:nativeaot": "npm run build:cached && node scripts/verify-real-ghidra-nativeaot.mjs",
|
|
"verify:browser:scripts": "npm run build:cached && node scripts/verify-browser-scripts.mjs",
|
|
"verify:browser:modules": "npm run build:cached && node scripts/verify-browser-modules.mjs",
|
|
"verify:test-discovery": "node scripts/verify-test-discovery.mjs",
|
|
"verify:javascript:recovery": "node scripts/verify/javascript/recovery.mjs",
|
|
"verify:module-boundaries": "node scripts/verify-module-boundaries.mjs",
|
|
"verify:browser:source-maps": "npm run build:cached && node scripts/verify-browser-source-maps.mjs",
|
|
"verify:browser:runtime": "npm run build:cached && node scripts/verify-browser-runtime.mjs",
|
|
"verify:web:network-captures": "npm run build:cached && node scripts/verify-web-network-captures.mjs",
|
|
"verify:binary:layout": "npm run build:cached && node scripts/verify-binary-layout.mjs",
|
|
"verify:go:binary": "npm run build:cached && node scripts/verify-go-binary.mjs",
|
|
"verify:wasm:package": "npm run build:cached && node scripts/verify-packaged-wasm-artifact.mjs",
|
|
"verify:wasm:artifact": "npm run build:cached && node scripts/verify-wasm-artifact.mjs",
|
|
"verify:evm:interface": "npm run build:cached && node scripts/verify-evm-interface.mjs",
|
|
"verify:recorded:crash": "npm run build:cached && node scripts/verify-recorded-crash.mjs",
|
|
"mcp-catalog:check:built": "node scripts/generate-mcp-tool-catalog.mjs --check",
|
|
"compile": "node scripts/clean-build-output.mjs && tsc -p tsconfig.build.json && node scripts/bundle-runtime.mjs",
|
|
"compile:termux": "node scripts/clean-build-output.mjs && node --max-old-space-size=3072 node_modules/typescript-termux/lib/tsc.js -p tsconfig.build.json && node scripts/bundle-runtime.mjs",
|
|
"artifacts:mcp-catalog": "node scripts/generate-mcp-tool-catalog.mjs",
|
|
"artifacts:skills": "node scripts/generate-skill-metadata.mjs",
|
|
"artifacts:product-catalog": "node scripts/generate-product-catalog.mjs",
|
|
"artifacts:managed-evidence": "node scripts/generate-completion-ledger.mjs",
|
|
"artifacts:error-schema": "node scripts/generate-error-schema.mjs",
|
|
"test:prepare": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:mcp-catalog artifacts:product-catalog artifacts:managed-evidence",
|
|
"evidence:check:built": "node scripts/generate-completion-ledger.mjs --check",
|
|
"docs:prepare": "node scripts/generate-package-metadata.mjs && turbo run artifacts:product-catalog artifacts:managed-evidence artifacts:error-schema"
|
|
},
|
|
"lint-staged": {
|
|
"*.{cjs,cts,js,jsx,mjs,mts,ts,tsx}": [
|
|
"oxfmt",
|
|
"oxlint --fix"
|
|
],
|
|
"*.{json,md,yml,yaml}": "oxfmt --no-error-on-unmatched-pattern"
|
|
},
|
|
"dependencies": {
|
|
"@babel/parser": "8.0.4",
|
|
"@babel/types": "8.0.4",
|
|
"@clack/prompts": "1.7.0",
|
|
"@electron/asar": "4.2.0",
|
|
"@jridgewell/trace-mapping": "0.3.31",
|
|
"@lydell/node-pty": "1.1.0",
|
|
"@modelcontextprotocol/client": "2.3.1",
|
|
"@modelcontextprotocol/server": "2.3.1",
|
|
"@xmldom/xmldom": "0.9.12",
|
|
"@xterm/addon-serialize": "0.14.0",
|
|
"@xterm/headless": "6.0.0",
|
|
"@zip.js/zip.js": "2.15.0",
|
|
"ajv": "8.20.0",
|
|
"ajv-formats": "3.0.1",
|
|
"canonicalize": "3.0.0",
|
|
"cross-spawn": "7.0.6",
|
|
"diff": "9.0.0",
|
|
"evmole": "0.9.3",
|
|
"har-schema": "2.0.0",
|
|
"ignore": "7.0.6",
|
|
"incur": "0.6.1",
|
|
"isomorphic-git": "1.38.7",
|
|
"jsonc-parser": "3.3.1",
|
|
"lossless-json": "4.3.1",
|
|
"parse5": "8.0.1",
|
|
"pino": "10.4.0",
|
|
"playwright-core": "1.58.2",
|
|
"plist": "5.0.0",
|
|
"semver": "7.8.5",
|
|
"smol-toml": "1.9.0",
|
|
"stream-chain": "4.2.6",
|
|
"stream-json": "3.7.0",
|
|
"write-file-atomic": "7.0.0",
|
|
"ws": "8.21.0",
|
|
"yaml": "2.9.0",
|
|
"zod": "4.4.3"
|
|
},
|
|
"overrides": {
|
|
"vitepress": {
|
|
"vite": "6.4.4"
|
|
}
|
|
},
|
|
"devDependencies": {
|
|
"@fast-check/vitest": "0.5.0",
|
|
"@types/cross-spawn": "6.0.6",
|
|
"@types/node": "26.6.4",
|
|
"@types/semver": "7.7.1",
|
|
"@types/write-file-atomic": "4.0.3",
|
|
"@types/ws": "8.18.1",
|
|
"@vitest/coverage-v8": "5.0.3",
|
|
"husky": "9.1.7",
|
|
"jscpd": "5.0.12",
|
|
"knip": "6.39.0",
|
|
"lint-staged": "16.4.0",
|
|
"oxfmt": "0.72.0",
|
|
"oxlint": "1.87.0",
|
|
"rolldown": "1.2.12",
|
|
"turbo": "2.11.7",
|
|
"typescript": "7.0.2",
|
|
"typescript-termux": "npm:typescript@5.9.3",
|
|
"vitepress": "1.6.4",
|
|
"vitest": "5.0.3"
|
|
},
|
|
"optionalDependencies": {
|
|
"frida": "17.23.2"
|
|
},
|
|
"allowScripts": {
|
|
"frida@17.23.2": true
|
|
}
|
|
}
|