mirror of
https://github.com/morluto/rea.git
synced 2026-11-10 00:36:35 +00:00
* feat(native): recover ELF function ranges from unwind tables inspect_elf_unwind_ranges and inspect-elf-unwind-ranges read .eh_frame and .eh_frame_hdr from one local ELF32 or ELF64 image and list the function ranges its FDEs name, with CIE facts, LSDA and personality, the containing section and an exact symbol where one starts at the address. Nothing is executed and no disassembler is needed. Pointer encodings follow the DW_EH_PE rules with raw zero as null, discarded FDEs are counted and skipped, the .eh_frame_hdr search table is compared with the decoded FDEs, and record, row and symbol budgets are bounded. verify:elf:unwind-ranges compares the reported starts with llvm-dwarfdump or readelf on a compiled C++ program. * fix(elf): keep unresolved unwind facts out of reported ranges Skip FDEs whose initial location is indirect and do not locate .eh_frame through an indirect eh_frame_ptr, since pointer slots are not functions. Stop an unbounded header-located scan at a CIE with an unrecognized augmentation, report ignored duplicate PT_GNU_EH_FRAME headers as incomplete coverage, and accept a null personality stored under an indirect encoding. Keep only symbols at decoded FDE starts, cache name observations per string-table offset, and decode names only for the returned page under a fixed 16 MiB text allowance, so repeated or long names no longer grow memory with the symbol count. * fix(scripts): run the ELF unwind verifier under owned process trees Launch probes, compiler drivers, the stripper, the frame dump and the inspection through createVerifierCommands, as verify-binary-hardening does, so a timeout or interrupt stops the whole tree. The temporary directory is removed only after the owned commands have closed. * docs(elf): move ELF unwind ranges guide under docs/guides/native The documentation guide assigns analyst workflows to docs/guides/<domain>/. Move the guide there, place its navigation and directory entries in the Native binaries group, and update links from the docs index, CLI guide, spec and authored skill. The public /elf-unwind-ranges route is unchanged. * fix(elf): give unwind text limits their own recovery and skip indirect tables Throw a dedicated failure when a page's symbol names exceed the 16 MiB text allowance, and map it to a resource error that tells the caller to request a smaller limit rather than raise max_ranges. Read a CIE augmentation with one bounded NUL search and keep it as a byte view, decoded only for returned CIEs, so a long augmentation is never built up character by character. Leave an .eh_frame_hdr search table with an indirect encoding unread: the header is incomplete, the comparison is unavailable, and the table no longer bounds a header-located .eh_frame scan. * fix(elf): resolve header count and table forms and name IFUNC resolvers Leave a non-zero .eh_frame_hdr FDE count under an indirect encoding unresolved, since it is the address of a slot that is not followed, and mark the header incomplete without reading the table. Treat a DW_EH_PE_omit table encoding as an omitted search table before testing the indirect bit, so a header that declares a count without a table stays present with complete coverage, and accept that form in output validation. Match STT_GNU_IFUNC symbols at exact FDE starts after function symbols, with a limitation that the name is the resolver, not the implementation it selects at run time. * fix(elf): require allocated unwind pointer bases * fix(elf): map unwind header relative base * fix(elf): validate unwind load mappings * test(elf): cover mapped nonallocated frame agreement --------- Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com> Co-authored-by: morluto <76467478+morluto@users.noreply.github.com>
453 lines
28 KiB
JSON
453 lines
28 KiB
JSON
{
|
|
"name": "rea-agents",
|
|
"mcpName": "io.github.morluto/rea",
|
|
"version": "6.8.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",
|
|
"rea",
|
|
"decompiler",
|
|
"mcp",
|
|
"hopper",
|
|
"electron",
|
|
"javascript-analysis",
|
|
"ghidra",
|
|
"ida"
|
|
],
|
|
"publishConfig": {
|
|
"access": "public"
|
|
},
|
|
"type": "module",
|
|
"imports": {
|
|
"#javascript-analysis-worker": "./dist/composition/javascriptAnalysisWorkerProcess.js",
|
|
"#web-bundle-analysis-worker": "./dist/composition/webBundleAnalysisWorkerProcess.js"
|
|
},
|
|
"bin": {
|
|
"rea": "scripts/rea.mjs",
|
|
"rea-agents": "scripts/rea.mjs"
|
|
},
|
|
"engines": {
|
|
"node": "^22.23.4 || ^24.22.1 || >=26.12.1"
|
|
},
|
|
"packageManager": "npm@11.16.0",
|
|
"files": [
|
|
"dist",
|
|
"install.sh",
|
|
"bridge/hopper_bridge.py",
|
|
"bridge/cutter/rea_bridge.py",
|
|
"bridge/native/NativeUIChildren.swift",
|
|
"bridge/native/NativeUIValues.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/ReaGhidraRiscvCallingConvention.java",
|
|
"bridge/ghidra/ReaGhidraPrepareRaw.java",
|
|
"bridge/ghidra/ReaGhidraPrepareDol.java",
|
|
"bridge/android/ReaJadxBridge.java",
|
|
"bridge/mitmproxy/capture.py",
|
|
"bridge/agentenv/capture.py",
|
|
"bridge/agentenv/computer.py",
|
|
"scripts/rea.mjs",
|
|
"scripts/lib/cli-process-environment.mjs",
|
|
"scripts/rea-android-workspace-guardian.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",
|
|
"assets/rea-plugin.png",
|
|
".claude-plugin/plugin.json",
|
|
".codex-plugin/plugin.json",
|
|
".codex-plugin/mcp.json",
|
|
"scripts/plugin-mcp-launcher.mjs",
|
|
"npm-shrinkwrap.json"
|
|
],
|
|
"scripts": {
|
|
"release:notes": "node scripts/release-notes.mjs",
|
|
"deps:check": "node scripts/check-dependency-install.mjs",
|
|
"pack:build-computer-runtime": "node scripts/pack-build-computer-runtime.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 node scripts/run-turbo.mjs run artifacts:mcp-catalog",
|
|
"mcp-catalog:check": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts node scripts/run-turbo.mjs run mcp-catalog:check:built",
|
|
"prebuild": "npm run deps:check",
|
|
"build": "node scripts/run-exclusive.mjs artifacts node scripts/run-turbo.mjs run artifacts:skills --force",
|
|
"precheck": "npm run deps:check",
|
|
"check": "node scripts/run-exclusive.mjs artifacts node scripts/run-turbo.mjs run typecheck lint format:check knip metadata:check && npm run verify:architecture-guards && npm run knip:production && npm run lint:typed",
|
|
"precheck:fast": "npm run deps:check",
|
|
"check:fast": "node scripts/run-turbo.mjs 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 node scripts/run-turbo.mjs run typecheck lint format:check knip metadata:check test:run",
|
|
"precheck:pr": "npm run deps:check",
|
|
"check:pr": "node scripts/run-exclusive.mjs artifacts node scripts/run-turbo.mjs run typecheck lint format:check knip metadata:check test:run && npm run test:python && npm run docs:check && npm run jscpd && npm run scan:todos && npm run knip:production && npm run lint:typed",
|
|
"precheck:ci": "npm run deps:check",
|
|
"precheck:ci:fast": "npm run deps:check",
|
|
"precheck:ci:deep": "npm run deps:check",
|
|
"check:ci": "npm run check:ci:fast && npm run check:ci:deep",
|
|
"check:ci:fast": "node scripts/run-exclusive.mjs artifacts npm run check:ci:fast:tasks",
|
|
"check:ci:fast:tasks": "node scripts/run-turbo.mjs run typecheck lint format:check",
|
|
"check:ci:deep": "node scripts/run-exclusive.mjs artifacts npm run check:ci:deep:tasks && npm run verify:architecture-guards && npm run verify:test-discovery && npm run test:python && npm run knip:production && npm run lint:typed",
|
|
"check:ci:deep:tasks": "node scripts/run-turbo.mjs run knip metadata:check jscpd scan:todos",
|
|
"ci:static-context": "node scripts/ci/static-task-context.mjs",
|
|
"build:cached": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts node scripts/run-turbo.mjs 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": "node scripts/ci/static-check-report.mjs lint && npm run verify:module-boundaries",
|
|
"lint:details": "oxlint && npm run verify:module-boundaries",
|
|
"lint:fix": "oxlint --fix && npm run verify:module-boundaries",
|
|
"knip": "knip --cache",
|
|
"jscpd": "node scripts/ci/static-check-report.mjs duplicates",
|
|
"jscpd:details": "jscpd src/ tests/ --no-tips",
|
|
"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 scripts/run-python-tests.py",
|
|
"eval:mcp-catalog": "node scripts/run-exclusive.mjs artifacts python3 tests/support/analysis-efficiency/catalog-eval.py",
|
|
"test:local": "node scripts/run-development-tests.mjs local",
|
|
"test:fast": "node scripts/ci/test-group.mjs source",
|
|
"test:built": "node scripts/ci/test-group.mjs built",
|
|
"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 node scripts/run-turbo.mjs 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:coverage:reverse-tools": "vitest run --config vitest.reverse-tools.config.ts --coverage.enabled",
|
|
"pretest:coverage:reverse-tools": "npm run test:prepare",
|
|
"test:mutation:reverse-tools": "node scripts/prepare-reverse-tools-mutation.mjs && stryker run stryker.config.mjs && stryker run stryker.semantics.config.mjs",
|
|
"pretest:mutation:reverse-tools": "npm run test:prepare",
|
|
"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": "node scripts/run-typescript.mjs --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:callers": "npm run build:cached && node scripts/verify-real-hopper-callers.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:node-sea": "npm run build:cached && node scripts/verify-node-sea.mjs",
|
|
"verify:architecture-guards": "node scripts/verify/architecture-guards.mjs",
|
|
"verify:apktool": "npm run build:cached && node scripts/verify-apktool.mjs",
|
|
"verify:pcap": "npm run build:cached && node scripts/verify-pcap.mjs",
|
|
"verify:pe:load-config": "npm run build:cached && node scripts/verify-pe-load-config.mjs",
|
|
"verify:binary-hardening": "node scripts/verify-binary-hardening.mjs",
|
|
"verify:elf:unwind-ranges": "npm run build:cached && node scripts/verify-elf-unwind-ranges.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:project-coverage": "npm run build:cached && node scripts/verify-real-ghidra-project-coverage.mjs",
|
|
"verify:ghidra:checkpoints": "npm run build:cached && node scripts/verify-real-ghidra-checkpoints.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:ppc": "npm run build:cached && node scripts/verify-real-ghidra-ppc.mjs",
|
|
"verify:ghidra:dol": "npm run build:cached && node scripts/verify-real-ghidra-dol.mjs",
|
|
"verify:ghidra:riscv": "npm run build:cached && node scripts/verify-real-ghidra-riscv.mjs",
|
|
"verify:ghidra:6502": "npm run build:cached && node scripts/verify-real-ghidra-6502.mjs",
|
|
"verify:ghidra:m68k": "npm run build:cached && node scripts/verify-real-ghidra-m68k.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:kuna": "npm run build:cached && node scripts/verify-real-kuna.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:address-context": "npm run build:cached && node scripts/verify-real-ghidra-address-context.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": "node scripts/run-typescript.mjs --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:browser:request": "npm run build:cached && node scripts/verify-browser-request.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:javascript:module-references": "npm run build:cached && node scripts/verify/javascript/module-references.mjs",
|
|
"verify:javascript:native-handoffs": "npm run build:cached && node scripts/verify/javascript/native-handoffs.mjs",
|
|
"verify:javascript:retained-facts": "npm run build:cached && node scripts/verify/javascript/retained-facts.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:uf2": "npm run build:cached && node scripts/verify/firmware/uf2-esptool.mjs",
|
|
"verify:firmware": "npm run build:cached && node scripts/verify/firmware/analysis.mjs",
|
|
"verify:devicetree": "npm run build:cached && node scripts/verify/firmware/devicetree.mjs",
|
|
"verify:esp-images": "npm run build:cached && node scripts/verify/firmware/esp-image.mjs",
|
|
"verify:esp-flash": "npm run build:cached && node scripts/verify/firmware/esp-flash.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 verify:fixtures && 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 node scripts/run-turbo.mjs run artifacts:managed-evidence",
|
|
"evidence:check": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts node scripts/run-turbo.mjs 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",
|
|
"verify:docs:routes": "npm run docs:build && node scripts/verify-documentation-routes.mjs",
|
|
"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 node scripts/run-turbo.mjs 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 && npm run licenses:check",
|
|
"docs:error-schema": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts node scripts/run-turbo.mjs 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:pascal-calls": "npm run build:cached && node scripts/verify-native-pascal-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",
|
|
"test:sqlite": "npm run test:prepare && npm run test:sqlite:run",
|
|
"test:sqlite:run": "node scripts/run-exact-tests.mjs run tests/acceptance/sqliteDatabaseCli.test.ts tests/boundary/mcp/serverLifecycleMcp.test.ts && vitest run src/application/sqlite/ tests/boundary/sqlite/",
|
|
"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:cutter": "npm run build:cached && node scripts/verify-real-cutter.mjs",
|
|
"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",
|
|
"verify:ghidra:bridge-sources": "node scripts/verify-ghidra-bridge-sources.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:agentenv:environment": "npm run build:cached && node scripts/verify-agentenv-environment.mjs",
|
|
"verify:web:http3": "npm run build:cached && node scripts/verify-http3-network-captures.mjs",
|
|
"verify:binary:layout": "npm run build:cached && node scripts/verify-binary-layout.mjs",
|
|
"verify:bun:standalone": "npm run build:cached && node scripts/verify-bun-standalone.mjs",
|
|
"verify:go:binary": "npm run build:cached && node scripts/verify-go-binary.mjs",
|
|
"verify:il2cpp:metadata": "npm run build:cached && node scripts/verify-il2cpp-metadata.mjs",
|
|
"verify:wasm:package": "npm run build:cached && node scripts/verify-packaged-wasm-artifact.mjs",
|
|
"verify:wasm-interface-comparison": "npm run build:cached && node scripts/verify-wasm-interface-comparison.mjs",
|
|
"verify:wasm:artifact": "npm run build:cached && node scripts/verify-wasm-artifact.mjs",
|
|
"verify:apk-signature": "npm run build:cached && node scripts/verify-apk-signature.mjs",
|
|
"verify:evm:interface": "npm run build:cached && node scripts/verify-evm-interface.mjs",
|
|
"verify:solidity:metadata": "npm run build:cached && node scripts/verify-solidity-metadata.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 && node scripts/run-typescript.mjs -p tsconfig.build.json && node scripts/record-catalog-digests.mjs && node scripts/record-mcp-catalog.mjs && 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/record-catalog-digests.mjs && node scripts/record-mcp-catalog.mjs && 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 node scripts/run-turbo.mjs 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 && node scripts/run-turbo.mjs run artifacts:product-catalog artifacts:managed-evidence artifacts:error-schema",
|
|
"verify:web:qlog": "npm run build:cached && node scripts/verify-qlog-captures.mjs",
|
|
"licenses:generate": "node scripts/generate-third-party-inventory.mjs",
|
|
"licenses:check": "node scripts/generate-third-party-inventory.mjs --check",
|
|
"lint:typed": "node scripts/ci/static-check-report.mjs typed-lint",
|
|
"knip:production": "node scripts/ci/production-reachability-report.mjs"
|
|
},
|
|
"lint-staged": {
|
|
"*.{cjs,cts,js,jsx,mjs,mts,ts,tsx}": [
|
|
"oxlint --fix",
|
|
"oxfmt"
|
|
],
|
|
"*.{json,md,yml,yaml}": "oxfmt --no-error-on-unmatched-pattern"
|
|
},
|
|
"dependencies": {
|
|
"@babel/parser": "8.0.4",
|
|
"@babel/types": "8.0.4",
|
|
"@bufbuild/protobuf": "2.16.0",
|
|
"@clack/prompts": "1.7.0",
|
|
"@jridgewell/trace-mapping": "0.3.31",
|
|
"@lydell/node-pty": "1.1.0",
|
|
"@modelcontextprotocol/client": "2.3.1",
|
|
"@modelcontextprotocol/server": "2.3.1",
|
|
"@msgpack/msgpack": "3.1.3",
|
|
"@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",
|
|
"cborg": "6.1.3",
|
|
"cross-spawn": "7.0.6",
|
|
"diff": "9.0.0",
|
|
"evmole": "0.9.3",
|
|
"graphql": "17.1.0",
|
|
"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",
|
|
"openpgp": "6.3.2",
|
|
"parse5": "8.0.1",
|
|
"pino": "10.4.0",
|
|
"playwright-core": "1.64.1",
|
|
"plist": "5.0.0",
|
|
"saxes": "6.0.0",
|
|
"semver": "7.8.5",
|
|
"smol-toml": "1.9.0",
|
|
"stream-chain": "4.2.6",
|
|
"stream-json": "3.7.0",
|
|
"tokenx": "1.3.0",
|
|
"write-file-atomic": "7.0.0",
|
|
"ws": "8.21.0",
|
|
"yaml": "2.9.0",
|
|
"zod": "4.6.6"
|
|
},
|
|
"overrides": {
|
|
"@electron/asar": {
|
|
"glob": "14.0.4"
|
|
},
|
|
"typed-rest-client": {
|
|
"qs": "6.16.1"
|
|
},
|
|
"vitepress": {
|
|
"vite": "6.4.5"
|
|
}
|
|
},
|
|
"devDependencies": {
|
|
"@electron/asar": "4.2.0",
|
|
"@fast-check/vitest": "0.5.0",
|
|
"@stryker-mutator/core": "10.0.0",
|
|
"@stryker-mutator/typescript-checker": "10.0.0",
|
|
"@stryker-mutator/vitest-runner": "10.0.0",
|
|
"@toon-format/toon": "2.3.1",
|
|
"@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",
|
|
"oxlint-tsgolint": "7.0.2005",
|
|
"release-please": "17.3.0",
|
|
"rolldown": "1.2.12",
|
|
"tsrs": "0.18.0-ts7.1.0-dev.20260929",
|
|
"tsx": "4.23.15",
|
|
"turbo": "2.11.7",
|
|
"typescript": "7.0.2",
|
|
"typescript-termux": "npm:typescript@5.9.3",
|
|
"typescript6": "npm:typescript@6.0.3",
|
|
"vitepress": "1.6.4",
|
|
"vitest": "5.0.3"
|
|
},
|
|
"optionalDependencies": {
|
|
"frida": "17.23.2"
|
|
},
|
|
"allowScripts": {
|
|
"frida@17.23.2": true
|
|
}
|
|
}
|