rea-agents 5.0.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/README.md +157 -650
  2. package/bridge/mitmproxy/capture.py +210 -0
  3. package/bridge/native/rea_lldb_tracer.py +303 -0
  4. package/bridge/process/ProcessRunTokenReader.swift +263 -0
  5. package/bridge/process/ProcessRunTokenReaderMain.swift +35 -0
  6. package/bridge/pwndbg/core_context.py +101 -0
  7. package/bridge/pwndbg/launch.py +39 -0
  8. package/bridge/pwndbg/launch_impl.py +34 -0
  9. package/bridge/pwntools/decoder_runtime.py +59 -0
  10. package/bridge/pwntools/layout.py +39 -0
  11. package/bridge/pwntools/layout_impl.py +309 -0
  12. package/bridge/pwntools/recorded_crash.py +39 -0
  13. package/bridge/pwntools/recorded_crash_impl.py +143 -0
  14. package/dist/android/JadxProvider.js +1 -0
  15. package/dist/application/CapabilityInventory.js +21 -0
  16. package/dist/application/DirectAnalysis.js +97 -23
  17. package/dist/application/EvidenceBundleFiles.js +1 -1
  18. package/dist/application/ReconstructionObligationCandidates.js +5 -1
  19. package/dist/application/WebNetworkCapturePort.js +1 -0
  20. package/dist/application/WebNetworkCaptureService.js +132 -0
  21. package/dist/application/WindowsCapabilities.js +1 -1
  22. package/dist/application/binary/AnalysisSnapshotCache.js +49 -6
  23. package/dist/application/binary/BinarySession.js +38 -10
  24. package/dist/application/binary/BinarySessionOpen.js +16 -3
  25. package/dist/application/binary/BinarySessionRecords.js +20 -0
  26. package/dist/application/binaryDiagnostics/BinaryLayoutPort.js +1 -0
  27. package/dist/application/binaryDiagnostics/BinaryLayoutService.js +57 -0
  28. package/dist/application/binaryDiagnostics/RecordedCrashPort.js +1 -0
  29. package/dist/application/binaryDiagnostics/RecordedCrashService.js +60 -0
  30. package/dist/application/evm/EvmInterfacePort.js +1 -0
  31. package/dist/application/evm/EvmInterfaceService.js +62 -0
  32. package/dist/application/javascript/JavaScriptApplicationEvidence.js +1 -2
  33. package/dist/application/javascript/JavaScriptApplicationService.js +15 -2
  34. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +42 -23
  35. package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +26 -2
  36. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +74 -24
  37. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +23 -10
  38. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +7 -7
  39. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +145 -70
  40. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +14 -15
  41. package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +41 -1
  42. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +7 -7
  43. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +5 -9
  44. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +3 -3
  45. package/dist/application/javascript/JavaScriptSemanticGraphProjection.js +118 -12
  46. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +3 -3
  47. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +5 -5
  48. package/dist/application/{ProcessCli.js → process/ProcessCli.js} +10 -10
  49. package/dist/application/{ProcessEvidence.js → process/ProcessEvidence.js} +4 -4
  50. package/dist/artifacts/ArtifactProvider.js +30 -3
  51. package/dist/artifacts/ArtifactProviderMetadata.js +2 -1
  52. package/dist/artifacts/ZipArtifactReader.js +3 -0
  53. package/dist/artifacts/apple/DylibResolutionReader.js +259 -0
  54. package/dist/artifacts/apple/MachoLoadCommandReader.js +294 -0
  55. package/dist/{application → artifacts/extraction}/ArtifactExtraction.js +10 -10
  56. package/dist/{application → artifacts/inventory}/ArtifactGraphConstruction.js +3 -3
  57. package/dist/{application → artifacts/inventory}/ArtifactInventory.js +4 -4
  58. package/dist/{application/ArtifactInventory → artifacts/inventory}/classify.js +2 -2
  59. package/dist/{application/ArtifactInventory → artifacts/inventory}/reader.js +5 -5
  60. package/dist/{application/ArtifactInventory → artifacts/inventory}/scanCanonical.js +3 -3
  61. package/dist/{application/ArtifactInventory → artifacts/inventory}/scanReader.js +5 -5
  62. package/dist/artifacts/readStableArtifact.js +20 -4
  63. package/dist/browser/CdpCaptureEventHandlers.js +90 -2
  64. package/dist/browser/CdpCaptureEvents.js +9 -0
  65. package/dist/browser/PlaywrightElectronActiveProvider.js +12 -3
  66. package/dist/browser/history/CaptureFailures.js +101 -0
  67. package/dist/browser/history/CaptureFormatError.js +10 -0
  68. package/dist/browser/history/CaptureRedaction.js +65 -0
  69. package/dist/browser/history/CaptureRelease.js +12 -0
  70. package/dist/browser/history/HarCapture.js +165 -0
  71. package/dist/browser/history/HarCaptureAdapter.js +20 -0
  72. package/dist/browser/history/HarCaptureProcess.js +57 -0
  73. package/dist/browser/history/HarJson.js +91 -0
  74. package/dist/browser/history/HarSchema.js +72 -0
  75. package/dist/browser/history/HistoricalCaptureDecoder.js +186 -0
  76. package/dist/browser/history/HistoricalCaptureFormatAdapter.js +1 -0
  77. package/dist/browser/history/MitmproxyCaptureAdapter.js +42 -0
  78. package/dist/cli/artifactCommands.js +26 -1
  79. package/dist/cli/binaryDiagnosticsCommands.js +39 -0
  80. package/dist/cli/coreAnalysisCommands.js +2 -2
  81. package/dist/cli/coreBinaryCommands.js +8 -8
  82. package/dist/cli/electronCommands.js +16 -9
  83. package/dist/cli/evmCommands.js +24 -0
  84. package/dist/cli/firmwareCommands.js +6 -3
  85. package/dist/cli/javascriptApplicationAnalysis.js +16 -3
  86. package/dist/cli/jsonOutput.js +133 -0
  87. package/dist/cli/nativeCallCommands.js +35 -0
  88. package/dist/cli/processCommands.js +1 -1
  89. package/dist/cli/streamedJsonOutput.js +56 -0
  90. package/dist/cli/utilityCommands.js +2 -0
  91. package/dist/cli/webNetworkCaptureCommands.js +40 -0
  92. package/dist/cli.js +9 -3
  93. package/dist/cliBrowserScenarioCommands.js +2 -2
  94. package/dist/cliCommandNames.js +6 -0
  95. package/dist/cliJsonInput.js +30 -1
  96. package/dist/cliOutput.js +21 -6
  97. package/dist/composition/binaryDiagnostics.js +8 -0
  98. package/dist/composition/evm.js +4 -0
  99. package/dist/composition/webNetworkCaptures.js +6 -0
  100. package/dist/contracts/artifactToolContracts.js +6 -0
  101. package/dist/contracts/browserCaptureToolInputSchema.js +43 -0
  102. package/dist/contracts/browserToolContracts.js +4 -3
  103. package/dist/contracts/errorSchemas.js +8 -1
  104. package/dist/contracts/evm/evmToolContracts.js +20 -0
  105. package/dist/contracts/investigationExamples.js +2 -2
  106. package/dist/contracts/managed/managedToolContracts.js +7 -3
  107. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +42 -0
  108. package/dist/contracts/native/nativeToolContracts.js +17 -1
  109. package/dist/contracts/officialToolContracts.js +12 -9
  110. package/dist/contracts/process/processCaptureExample.js +2 -0
  111. package/dist/contracts/sessionLifecycleInputs.js +22 -5
  112. package/dist/contracts/sessionStatusContract.js +10 -2
  113. package/dist/contracts/sessionToolContracts.js +8 -1
  114. package/dist/contracts/sessionToolSchemas.js +10 -3
  115. package/dist/contracts/toolContractExamples.js +1 -1
  116. package/dist/contracts/toolContracts.js +6 -0
  117. package/dist/contracts/toolEffects.js +30 -0
  118. package/dist/contracts/toolOutputSchemaGroups.js +5 -1
  119. package/dist/contracts/toolOutputSchemaPrimitives.js +1 -1
  120. package/dist/contracts/webNetworkCaptureToolContracts.js +24 -0
  121. package/dist/domain/analysisErrorBase.js +15 -0
  122. package/dist/domain/analysisErrorCore.js +59 -5
  123. package/dist/domain/analysisErrorPresentation.js +29 -1
  124. package/dist/domain/analysisErrorProjection.js +52 -2
  125. package/dist/domain/analysisSnapshot.js +166 -2
  126. package/dist/domain/apple/dyldPaths.js +81 -0
  127. package/dist/domain/apple/dylibResolution.js +367 -0
  128. package/dist/domain/apple/dylibResolutionFindings.js +75 -0
  129. package/dist/domain/artifactPathSyntax.js +1 -1
  130. package/dist/domain/browserObservation.js +1 -1
  131. package/dist/domain/browserObservationSchemas.js +13 -0
  132. package/dist/domain/browserScenarioValues.js +9 -2
  133. package/dist/domain/callPathSchemas.js +1 -1
  134. package/dist/domain/canonicalDigest.js +13 -1
  135. package/dist/domain/changedBehavior.js +3 -3
  136. package/dist/domain/comparisonStatus.js +2 -30
  137. package/dist/domain/conformanceTrustGate.js +0 -16
  138. package/dist/domain/evidence.js +17 -5
  139. package/dist/domain/evm/evmInterface.js +63 -0
  140. package/dist/domain/explicitSensitiveFailure.js +92 -0
  141. package/dist/domain/explicitSensitiveValues.js +10 -0
  142. package/dist/domain/firmware/firmwareAnalysis.js +8 -1
  143. package/dist/domain/javascript/electronActiveObservation.js +9 -4
  144. package/dist/domain/javascript/htmlArtifactReferences.js +40 -0
  145. package/dist/domain/javascript/javascriptExportShapeComparison.js +21 -5
  146. package/dist/domain/javascript/javascriptExportShapeVariants.js +0 -10
  147. package/dist/domain/javascript/javascriptSemanticGraph.js +21 -5
  148. package/dist/domain/jsonValue.js +4 -0
  149. package/dist/domain/localPath.js +2 -0
  150. package/dist/domain/native/binaryLayout.js +357 -0
  151. package/dist/domain/native/nativeCallObservation.js +164 -0
  152. package/dist/domain/native/objcSwiftMetadata.js +0 -39
  153. package/dist/domain/native/recordedCrash.js +266 -0
  154. package/dist/domain/native/recordedCrashNoteCoverage.js +73 -0
  155. package/dist/domain/{processCapture.js → process/processCapture.js} +139 -2
  156. package/dist/domain/{processCaptureExample.js → process/processCaptureExample.js} +5 -0
  157. package/dist/domain/process/processCaptureParsing.js +54 -0
  158. package/dist/domain/{processCaptureValidation.js → process/processCaptureValidation.js} +18 -2
  159. package/dist/domain/{processComparison.js → process/processComparison.js} +1 -1
  160. package/dist/domain/{processObservation.js → process/processObservation.js} +1 -1
  161. package/dist/domain/{processTraceSpecification.js → process/processTraceSpecification.js} +1 -1
  162. package/dist/domain/providerSelectionError.js +4 -2
  163. package/dist/domain/reconstructionVerification.js +3 -3
  164. package/dist/domain/reconstructionVerificationSchemas.js +1 -1
  165. package/dist/domain/residualUnknown.js +3 -2
  166. package/dist/domain/staticRuntimeCorrelation.js +3 -3
  167. package/dist/domain/webCaptureDiff.js +1 -0
  168. package/dist/domain/webNetworkCapture.js +118 -0
  169. package/dist/domain/webNetworkCaptureCoordinates.js +58 -0
  170. package/dist/dotnet/ManagedExceptionRegionValidation.js +41 -0
  171. package/dist/dotnet/ManagedMemberInspector.js +4 -2
  172. package/dist/dotnet/ManagedMemberInspectorCore.js +38 -32
  173. package/dist/dotnet/ManagedMemberInstructionDecoder.js +23 -7
  174. package/dist/dotnet/ManagedMemberRows.js +14 -3
  175. package/dist/dotnet/ManagedMetadataHeaps.js +20 -2
  176. package/dist/dotnet/ManagedMetadataInventory.js +38 -28
  177. package/dist/dotnet/ManagedMetadataInventoryRows.js +24 -10
  178. package/dist/dotnet/ManagedMethodBodyReader.js +7 -1
  179. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +15 -3
  180. package/dist/dotnet/ManagedNativeBoundaryInspector.js +3 -1
  181. package/dist/dotnet/ManagedPeReader.js +11 -0
  182. package/dist/evm/EvmBytecodeCarrier.js +21 -0
  183. package/dist/evm/EvmWorkerLimits.js +40 -0
  184. package/dist/evm/EvmoleFailures.js +126 -0
  185. package/dist/evm/EvmoleInterfaceAdapter.js +53 -0
  186. package/dist/evm/EvmoleInterfaceProvider.js +273 -0
  187. package/dist/evm/EvmoleInterfaceWorker.js +87 -0
  188. package/dist/evm/EvmoleRelease.js +16 -0
  189. package/dist/firmware/FirmwareCommand.js +1 -0
  190. package/dist/generatedPackageMetadata.js +2 -2
  191. package/dist/ghidra/GhidraLauncher.js +1 -0
  192. package/dist/ghidra/GhidraProvider.js +2 -2
  193. package/dist/ghidra/GhidraProviderCapabilities.js +1 -1
  194. package/dist/hopper/BridgeLauncher.js +2 -0
  195. package/dist/hopper/LinuxPrivateDisplayProbe.js +4 -2
  196. package/dist/javascript/recovery/WakaruCommand.js +3 -0
  197. package/dist/javascript/sourceMaps/SourceMapCommand.js +1 -0
  198. package/dist/native/CommandRunner.js +2 -1
  199. package/dist/native/LldbCallTracer.js +278 -0
  200. package/dist/native/NativeCallObservation.js +135 -0
  201. package/dist/native/NativeMacOSProvider.js +19 -3
  202. package/dist/native/NativeMacOSProviderMetadata.js +8 -3
  203. package/dist/native/pwndbg/PwndbgCoreContext.js +160 -0
  204. package/dist/native/pwntools/PwntoolsDecoder.js +203 -0
  205. package/dist/native/pwntools/PwntoolsFailures.js +180 -0
  206. package/dist/native/pwntools/PwntoolsLayoutProvider.js +36 -0
  207. package/dist/native/pwntools/PwntoolsRecordedCrashProvider.js +75 -0
  208. package/dist/native/pwntools/PwntoolsRelease.js +19 -0
  209. package/dist/native/pwntools/PwntoolsResourceLimits.js +76 -0
  210. package/dist/native/pwntools/RecordedCrashSourceBindings.js +46 -0
  211. package/dist/native/pwntools/RecordedCrashStructureBindings.js +101 -0
  212. package/dist/process/DarwinProcessRunTokenReader.js +294 -0
  213. package/dist/process/OwnedCommand.js +113 -0
  214. package/dist/process/ProcessOwnership.js +263 -33
  215. package/dist/process/ProcessOwnershipObservation.js +161 -24
  216. package/dist/process/ProviderProcess.js +30 -3
  217. package/dist/{application → process/capture}/ProcessCaptureCapability.js +15 -0
  218. package/dist/{application → process/capture}/ProcessCaptureError.js +17 -1
  219. package/dist/process/capture/ProcessCaptureLifecycle.js +615 -0
  220. package/dist/{application → process/capture}/ProcessHarness.js +195 -29
  221. package/dist/{application → process/capture}/ProcessSampling.js +2 -2
  222. package/dist/server/createServer.js +22 -0
  223. package/dist/server/promptCompletion.js +10 -3
  224. package/dist/server/registerBinaryDiagnosticsTools.js +17 -0
  225. package/dist/server/registerEvidenceTools.js +1 -1
  226. package/dist/server/registerEvmTools.js +17 -0
  227. package/dist/server/registerProcessComparisonTool.js +1 -1
  228. package/dist/server/registerRecordedCrashTools.js +17 -0
  229. package/dist/server/registerSessionTools.js +2 -2
  230. package/dist/server/registerWebNetworkCaptureTool.js +28 -0
  231. package/dist/server/sessionAvailabilityPolicy.js +3 -0
  232. package/dist/server/sessionToolPolicies.js +1 -1
  233. package/dist/server/toolResult.js +1 -1
  234. package/native/windows/build/manifest.json +2 -2
  235. package/native/windows/build/rea-windows-x64.node +0 -0
  236. package/package.json +37 -9
  237. package/scripts/rea.mjs +11 -3
  238. package/skills/reverse-engineer-anything/SKILL.md +23 -3
  239. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +29 -0
  240. package/third_party/README.md +60 -0
  241. package/third_party/evmole/LICENSE +21 -0
  242. package/third_party/evmole/README.md +22 -0
  243. package/third_party/pwndbg/LICENSE.md +21 -0
  244. package/third_party/pwndbg/README.md +23 -0
  245. package/third_party/pwntools/README.md +40 -0
  246. package/dist/application/AuthorizedArtifactInventory.js +0 -7
  247. package/dist/application/ProcessCaptureLifecycle.js +0 -299
  248. package/dist/application/StoreFileLock.js +0 -124
  249. package/dist/contracts/processCaptureExample.js +0 -2
  250. package/dist/domain/bytecodeProvider.js +0 -178
  251. package/dist/domain/customProtocolCapture.js +0 -137
  252. package/dist/domain/eventProcessTree.js +0 -225
  253. package/dist/domain/mobileApplicationInvestigation.js +0 -159
  254. package/dist/domain/packageAnalysis.js +0 -123
  255. package/dist/domain/peInspection.js +0 -197
  256. package/dist/domain/processCaptureParsing.js +0 -21
  257. package/dist/domain/protocolCapture.js +0 -217
  258. package/dist/domain/runtimeIdentification.js +0 -212
  259. package/dist/generatedMcpToolCatalog.js +0 -37
  260. /package/dist/application/{ArtifactExtractionDestination.js → artifacts/ArtifactExtractionDestination.js} +0 -0
  261. /package/dist/{application/ArtifactInventory → artifacts/inventory}/policy.js +0 -0
  262. /package/dist/{application/ArtifactInventory → artifacts/inventory}/types.js +0 -0
  263. /package/dist/domain/{processEvidenceProvider.js → process/processEvidenceProvider.js} +0 -0
  264. /package/dist/domain/{processScenario.js → process/processScenario.js} +0 -0
  265. /package/dist/domain/{processTraceComparison.js → process/processTraceComparison.js} +0 -0
  266. /package/dist/domain/{processTraceDimensionProjection.js → process/processTraceDimensionProjection.js} +0 -0
  267. /package/dist/domain/{processTraceEvaluation.js → process/processTraceEvaluation.js} +0 -0
  268. /package/dist/{application → process/capture}/FilesystemSnapshot.js +0 -0
  269. /package/dist/{application → process/capture}/ProcessCaptureEnvironment.js +0 -0
  270. /package/dist/{application → process/capture}/ProcessCaptureJournal.js +0 -0
  271. /package/dist/{application → process/capture}/ProcessFilesystemEffects.js +0 -0
  272. /package/dist/{application → process/capture}/ProcessNormalization.js +0 -0
  273. /package/dist/{application → process/capture}/ProcessScenarioRuntimeValidation.js +0 -0
  274. /package/dist/{application → process/capture}/ProcessTimer.js +0 -0
  275. /package/dist/{application → process/capture}/TerminalRenderer.js +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "rea-agents",
3
3
  "mcpName": "io.github.morluto/rea",
4
- "version": "5.0.0",
4
+ "version": "6.0.0",
5
5
  "description": "Reverse engineer anything from your terminal or agent with one CLI and MCP server.",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -44,10 +44,14 @@
44
44
  "bridge/hopper_bridge.py",
45
45
  "bridge/native/NativeUIChildren.swift",
46
46
  "bridge/native/ReaNativeUI.swift",
47
+ "bridge/native/rea_lldb_tracer.py",
48
+ "bridge/process/ProcessRunTokenReader.swift",
49
+ "bridge/process/ProcessRunTokenReaderMain.swift",
47
50
  "bridge/ghidra/ReaGhidraBridge.java",
48
51
  "bridge/ghidra/ReaGhidraExtensions.java",
49
52
  "bridge/ghidra/ReaGhidraPrepareCom.java",
50
53
  "bridge/android/ReaJadxBridge.java",
54
+ "bridge/mitmproxy/capture.py",
51
55
  "scripts/rea.mjs",
52
56
  "scripts/electron-active-hook.cjs",
53
57
  "scripts/electron-active-hook-boundaries.cjs",
@@ -59,18 +63,31 @@
59
63
  "LICENSE",
60
64
  "native/windows/build/manifest.json",
61
65
  "native/windows/build/rea-windows-x64.node",
62
- "scripts/verify-windows-native-artifact.mjs"
66
+ "scripts/verify-windows-native-artifact.mjs",
67
+ "bridge/pwntools/layout.py",
68
+ "bridge/pwntools/layout_impl.py",
69
+ "third_party/pwntools/README.md",
70
+ "third_party/evmole/README.md",
71
+ "third_party/evmole/LICENSE",
72
+ "bridge/pwntools/decoder_runtime.py",
73
+ "bridge/pwntools/recorded_crash.py",
74
+ "bridge/pwntools/recorded_crash_impl.py",
75
+ "bridge/pwndbg/launch.py",
76
+ "bridge/pwndbg/launch_impl.py",
77
+ "bridge/pwndbg/core_context.py",
78
+ "third_party/pwndbg/README.md",
79
+ "third_party/pwndbg/LICENSE.md"
63
80
  ],
64
81
  "scripts": {
65
82
  "deps:check": "node scripts/check-dependency-install.mjs",
66
83
  "metadata:generate": "node scripts/generate-package-metadata.mjs",
67
84
  "metadata:check": "node scripts/generate-package-metadata.mjs --check",
68
85
  "mcp-registry:check": "node scripts/verify-mcp-registry-metadata.mjs",
69
- "mcp-catalog:generate": "npm run build:cached && node scripts/generate-mcp-tool-catalog.mjs",
86
+ "mcp-catalog:generate": "npm run build:cached",
70
87
  "mcp-catalog:check": "node scripts/generate-mcp-tool-catalog.mjs --check",
71
88
  "prebuild": "npm run deps:check && npm run metadata:check",
72
89
  "build": "node scripts/run-exclusive.mjs build npm run build:unlocked",
73
- "build:unlocked": "node scripts/clean-build-output.mjs && tsc -p tsconfig.build.json",
90
+ "build:unlocked": "node scripts/clean-build-output.mjs && tsc -p tsconfig.build.json && node scripts/generate-mcp-tool-catalog.mjs",
74
91
  "precheck": "npm run deps:check",
75
92
  "check": "turbo run typecheck lint format:check knip metadata:check",
76
93
  "precheck:fast": "npm run deps:check",
@@ -141,6 +158,7 @@
141
158
  "verify:inspector": "npm run build:cached && node scripts/verify/inspector/runtime-observation.mjs",
142
159
  "verify:javascript-runtime": "npm run build:cached && node scripts/verify/javascript/runtime-observation.mjs",
143
160
  "verify:javascript:digests": "npm run build:cached && node scripts/verify/javascript/digests.mjs",
161
+ "verify:javascript:output": "npm run build:cached && node scripts/verify/javascript/output.mjs",
144
162
  "verify:application-workflows": "npm run build:cached && node scripts/verify/javascript/application-workflows.mjs",
145
163
  "verify:managed": "npm run build:cached && node scripts/verify/managed/conformance.mjs",
146
164
  "verify:firmware": "npm run build:cached && node scripts/verify/firmware/analysis.mjs",
@@ -165,13 +183,14 @@
165
183
  "docs:build": "vitepress build docs",
166
184
  "docs:preview": "vitepress preview docs",
167
185
  "docs:generate": "node scripts/run-exclusive.mjs docs npm run docs:generate:unlocked",
168
- "docs:generate:unlocked": "npm run metadata:generate && npm run build:cached && node scripts/generate-mcp-tool-catalog.mjs && node scripts/generate-skill-metadata.mjs && node scripts/generate-product-catalog.mjs && node scripts/generate-completion-ledger.mjs && node scripts/generate-error-schema.mjs",
186
+ "docs:generate:unlocked": "npm run metadata:generate && npm run build:cached && node scripts/generate-skill-metadata.mjs && node scripts/generate-product-catalog.mjs && node scripts/generate-completion-ledger.mjs && node scripts/generate-error-schema.mjs",
169
187
  "docs:check": "node scripts/run-exclusive.mjs docs turbo run docs:check:built",
170
188
  "docs:check:built": "node scripts/generate-package-metadata.mjs --check && node scripts/generate-mcp-tool-catalog.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",
171
189
  "docs:error-schema": "npm run build:cached && node scripts/generate-error-schema.mjs",
172
190
  "prepack": "node scripts/prepack.mjs",
173
191
  "prepare": "node scripts/prepare.mjs",
174
192
  "verify:asset-catalog": "npm run build:cached && node scripts/verify/apple/asset-catalog.mjs",
193
+ "verify:native-calls": "npm run build:cached && node scripts/verify-native-calls.mjs",
175
194
  "verify:native-ui:permissions": "npm run build:cached && node scripts/verify-native-ui.mjs --allow-permission-denial",
176
195
  "test:focused": "node scripts/run-development-tests.mjs focused",
177
196
  "build:windows-native": "node scripts/build-windows-native.mjs",
@@ -188,7 +207,11 @@
188
207
  "verify:javascript:recovery": "node scripts/verify/javascript/recovery.mjs",
189
208
  "verify:module-boundaries": "node scripts/verify-module-boundaries.mjs",
190
209
  "verify:browser:source-maps": "npm run build:cached && node scripts/verify-browser-source-maps.mjs",
191
- "verify:browser:runtime": "npm run build:cached && node scripts/verify-browser-runtime.mjs"
210
+ "verify:browser:runtime": "npm run build:cached && node scripts/verify-browser-runtime.mjs",
211
+ "verify:web:network-captures": "npm run build:cached && node scripts/verify-web-network-captures.mjs",
212
+ "verify:binary:layout": "npm run build:cached && node scripts/verify-binary-layout.mjs",
213
+ "verify:evm:interface": "npm run build:cached && node scripts/verify-evm-interface.mjs",
214
+ "verify:recorded:crash": "npm run build:cached && node scripts/verify-recorded-crash.mjs"
192
215
  },
193
216
  "lint-staged": {
194
217
  "*.{cjs,cts,js,jsx,mjs,mts,ts,tsx}": [
@@ -208,14 +231,19 @@
208
231
  "@modelcontextprotocol/server": "2.3.1",
209
232
  "@xterm/addon-serialize": "0.14.0",
210
233
  "@xterm/headless": "6.0.0",
211
- "@zip.js/zip.js": "2.8.26",
234
+ "@zip.js/zip.js": "2.15.0",
235
+ "ajv": "8.20.0",
236
+ "ajv-formats": "3.0.1",
212
237
  "canonicalize": "3.0.0",
213
238
  "cross-spawn": "7.0.6",
214
239
  "diff": "9.0.0",
240
+ "har-schema": "2.0.0",
215
241
  "ignore": "7.0.6",
216
242
  "incur": "0.6.1",
217
243
  "isomorphic-git": "1.38.7",
218
244
  "jsonc-parser": "3.3.1",
245
+ "lossless-json": "4.3.1",
246
+ "parse5": "8.0.1",
219
247
  "pino": "10.4.0",
220
248
  "playwright-core": "1.58.2",
221
249
  "plist": "5.0.0",
@@ -223,7 +251,8 @@
223
251
  "smol-toml": "1.9.0",
224
252
  "write-file-atomic": "7.0.0",
225
253
  "ws": "8.21.0",
226
- "zod": "4.4.3"
254
+ "zod": "4.4.3",
255
+ "evmole": "0.9.3"
227
256
  },
228
257
  "overrides": {
229
258
  "vitepress": {
@@ -238,7 +267,6 @@
238
267
  "@types/write-file-atomic": "4.0.3",
239
268
  "@types/ws": "8.18.1",
240
269
  "@vitest/coverage-v8": "5.0.3",
241
- "ajv": "8.20.0",
242
270
  "husky": "9.1.7",
243
271
  "jscpd": "5.0.12",
244
272
  "knip": "6.39.0",
package/scripts/rea.mjs CHANGED
@@ -19,7 +19,7 @@ const runtimeFiles = isMcpMode
19
19
  ? ["dist/main.js"]
20
20
  : isMcpDoctorMode
21
21
  ? ["dist/main.js", "dist/mcpDoctor.js"]
22
- : ["dist/cli.js", "dist/cliOutput.js"];
22
+ : ["dist/cli.js", "dist/cliOutput.js", "dist/cli/streamedJsonOutput.js"];
23
23
 
24
24
  if (!(await compiledRuntimeExists(runtimeFiles))) {
25
25
  process.stderr.write(
@@ -39,6 +39,8 @@ if (!(await compiledRuntimeExists(runtimeFiles))) {
39
39
  process.exitCode = result.exitCode;
40
40
  } else {
41
41
  const { createCli } = await import("../dist/cli.js");
42
+ const { createStreamedCliJsonOutput } =
43
+ await import("../dist/cli/streamedJsonOutput.js");
42
44
  const {
43
45
  renderCliOutputArgumentError,
44
46
  renderEmptyFilteredCliOutput,
@@ -51,14 +53,20 @@ if (!(await compiledRuntimeExists(runtimeFiles))) {
51
53
  process.exitCode = 1;
52
54
  } else {
53
55
  let wroteOutput = false;
54
- await createCli().serve(args, {
56
+ const resultOutput = createStreamedCliJsonOutput(args, process.stdout);
57
+ await createCli(process.env, resultOutput).serve(args, {
55
58
  stdout: (output) => {
59
+ if (resultOutput?.handled) {
60
+ if (resultOutput.failed)
61
+ process.stderr.write(sanitizeCliOutput(output));
62
+ return;
63
+ }
56
64
  const sanitized = sanitizeCliOutput(output);
57
65
  if (sanitized.length > 0) wroteOutput = true;
58
66
  process.stdout.write(sanitized);
59
67
  },
60
68
  });
61
- if (!wroteOutput)
69
+ if (!wroteOutput && !resultOutput?.handled)
62
70
  process.stdout.write(renderEmptyFilteredCliOutput(args) ?? "");
63
71
  }
64
72
  }
@@ -2,9 +2,9 @@
2
2
  name: reverse-engineer-anything
3
3
  description: Reverse engineer native, managed, Electron/JavaScript, packaged, firmware, and browser targets with REA. Use shipped-artifact or requested runtime evidence to explain features, compare versions, decompile code, or guide a reconstruction. Skip REA for ordinary source-repository architecture analysis.
4
4
  metadata:
5
- version: "27"
6
- tool_count: 133
7
- catalog_digest: "83b4c3445ed0ec003c0aeefa3188f123d9ae319484f8b1e2b611d2fe278c9c72"
5
+ version: "33"
6
+ tool_count: 139
7
+ catalog_digest: "4c5f67d076baf821b5cb6d6fb2cc0f6c274e96b627b85b892577760a6f71ab1a"
8
8
  ---
9
9
 
10
10
  # REA
@@ -93,7 +93,27 @@ explicit path or endpoint and do not need it.
93
93
  consult the NativeAOT workflow in `references/native-and-artifacts.md` for
94
94
  optional metadata recovery and its supported host/layout boundary.
95
95
  - User-owned browser page already open: `list_browser_targets`.
96
+ - Retained HAR/native mitmproxy capture: `inspect_web_network_capture`. Select
97
+ original record ordinals when useful; inspect producer fields and byte/number
98
+ sidecars without fetching recorded URLs or claiming live attribution. See
99
+ [historical captures](https://github.com/morluto/rea/blob/main/docs/web-network-captures.md) for the exact upstream
100
+ profile and credential exclusions.
96
101
  - User-owned Electron runtime already open: `list_electron_targets`.
102
+ - Explicit local EVM bytecode carrier: `inspect_evm_interface` with caller-selected
103
+ `raw` or `hex` encoding. Preserve carrier/decoded digests and treat selectors,
104
+ argument strings and mutability as inferred candidates; this performs no chain
105
+ lookup or target execution. See the
106
+ [EVM bytecode guide](https://github.com/morluto/rea/blob/main/docs/evm-bytecode.md).
107
+ - Explicit Linux ELF file for offline layout, symbols, relocations or static
108
+ mitigation evidence: `inspect_binary_layout`. This target-free operation uses
109
+ caller-supplied pwntools without opening a disassembler database. Preserve its
110
+ raw locations and inference/coverage limits; see the
111
+ [offline binary guide](https://github.com/morluto/rea/blob/main/docs/binary-diagnostics.md).
112
+ - Supplied Linux x86-64 ELF core: `inspect_recorded_crash`. Read every recorded
113
+ thread, raw note and source-bound register without opening a live target.
114
+ Historical PIDs do not select live processes. Request `include_debugger_context`
115
+ only when core-only mapping candidates help; see the
116
+ [recorded crash guide](https://github.com/morluto/rea/blob/main/docs/recorded-crashes.md).
97
117
  - Native executable, library, or analysis database: `open_binary`, then
98
118
  use focused analysis tools directly; call `binary_overview` when metadata or
99
119
  inventory context is useful and available from the selected provider.
@@ -1,5 +1,21 @@
1
1
  # Native, managed, and packaged artifacts
2
2
 
3
+ ## Recorded Linux crashes
4
+
5
+ Use `inspect_recorded_crash` with an explicit Linux x86-64 ELF core path to
6
+ inspect historical thread registers, signals, raw notes and original file
7
+ ranges. It is independent of the active disassembler target. Source-bound
8
+ register values and note bytes are observations; missing notes, signal-thread
9
+ association and current executable/library identity remain unknown. PIDs are
10
+ historical metadata and never authorize live attach or control.
11
+
12
+ The optional `include_debugger_context` facet adds mapping candidates through
13
+ caller-supplied GDB/pwndbg in an owned core-only session. Display names do not
14
+ establish current file identity; zero reported flags leave permissions unknown.
15
+ Requested unavailable context fails with setup guidance. See
16
+ [recorded crashes](https://github.com/morluto/rea/blob/main/docs/recorded-crashes.md)
17
+ for exact upstream profiles, bounds and verification coverage.
18
+
3
19
  ## Native targets
4
20
 
5
21
  After `open_binary`, use focused search, procedure, or function tools directly.
@@ -9,6 +25,12 @@ cross-references. Addresses and recovered pseudocode are analysis observations,
9
25
  not original source. Provider unavailability and unsupported metadata remain
10
26
  unknown rather than false.
11
27
 
28
+ To see which functions or Objective-C methods a Mach-O actually calls in one
29
+ run, use `observe_native_calls` with explicit breakpoints and a bounded
30
+ `duration_ms`/`max_events`. It launches a new process under LLDB, so the target
31
+ runs and may change files or use the network. Hardened-runtime targets need the
32
+ `get-task-allow` entitlement.
33
+
12
34
  Use `binary_session` with no arguments to check the open target, selected
13
35
  provider, and alignment. Its default `result.tool_availability` includes the
14
36
  complete tool inventory with availability reasons and remediation. When choosing
@@ -77,6 +99,13 @@ helpers, launchd plists, symlinks, and each bundle's `info_plist_path` and
77
99
  executable candidates. Roles are path conventions, not parsed plists; read the
78
100
  listed plists with `inspect_plist`.
79
101
 
102
+ After `open_binary` on a `.app` or Mach-O, use `trace_dylib_resolution` to see
103
+ which file each `@rpath`, `@loader_path` and `@executable_path` load reaches for
104
+ every executable in the bundle. It also lists missing or weak loads and earlier
105
+ `@rpath` candidates that are absent. Narrow large bundles with `roots` or
106
+ `architecture`. System paths stay undetermined because the dyld shared cache
107
+ provides them.
108
+
80
109
  Use `extract_artifact` when materialized files are needed. It takes no arguments
81
110
  and materializes all regular files into a fresh temporary directory chosen by
82
111
  REA. Symlinks and encrypted entries are inventory facts, not extractable files.
@@ -0,0 +1,60 @@
1
+ # Upstream analysis engines
2
+
3
+ REA integrates existing tools through provider adapters. Upstream source remains
4
+ unmodified and retains its own license; it is not copied into REA's domain or
5
+ application code.
6
+
7
+ ## jadx-headless-mcp
8
+
9
+ - Source: <https://github.com/1013503897/jadx-headless-mcp>
10
+ - Submodule: `third_party/jadx-headless-mcp`
11
+ - Release: `v0.7.1`
12
+ - Commit: `5844800a486d2248fa949b74c9896285f5b54de2`
13
+ - License: Apache-2.0; see the submodule's `LICENSE`.
14
+ - Release identity: `src/android/JadxRelease.ts`.
15
+ - REA integration: `src/android/`; no upstream patches in this version.
16
+
17
+ Fetch source for inspection with:
18
+
19
+ ```sh
20
+ git submodule update --init third_party/jadx-headless-mcp
21
+ ```
22
+
23
+ Normal REA builds and installed npm packages do not require this submodule or a
24
+ Gradle build. Supply a separately obtained JAR with `REA_JADX_MCP_JAR`; REA never
25
+ downloads engines during an analysis operation. The audited release JAR is
26
+ identified by SHA-256. A caller-supplied build reporting the supported protocol
27
+ version retains its actual digest and an unknown source revision unless its
28
+ bytes match the audited release.
29
+
30
+ When updating: review upstream protocol and license changes, update the gitlink
31
+ and release identity together, exercise the adapter's producer regressions, and
32
+ run the real APK CLI/MCP lane. Never attribute modified engine bytes to the
33
+ audited source revision.
34
+
35
+ ## Public APK fixture
36
+
37
+ `scripts/fetch-android-fixtures.mjs` explicitly downloads the audited engine and
38
+ Appium ApiDemos v6.0.18 into ignored `_reference/apk-integration/`. Both downloads
39
+ are checked against fixed SHA-256 values. Fixture provenance is recorded in
40
+ `scripts/fixtures/android-apidemos.json`; the source uses Apache-2.0. This is a
41
+ static analysis fixture: no emulator, device, SDK installation or app execution
42
+ is needed. APKs and JARs are neither tracked nor included in npm packages.
43
+
44
+ ## Firmware engines
45
+
46
+ | Engine | Source | Release | Pinned commit | License |
47
+ | --- | --- | --- | --- | --- |
48
+ | Binwalk | <https://github.com/ReFirmLabs/binwalk> | v3.1.0 | `4fdab3d464d97b68e0af9088df3f9e2e1545b21c` | MIT, upstream `LICENSE` |
49
+ | Unblob | <https://github.com/onekey-sec/unblob> | 26.6.4 | `1fcc7a0a584a70a96c31f5a276c20944d199a089` | MIT, upstream `LICENSE` |
50
+
51
+ Source remains unmodified in `third_party/binwalk` and `third_party/unblob`.
52
+ Release records live in `src/firmware/FirmwareRelease.ts`; REA adapters own the
53
+ CLI/report interpretation and lifecycle in `src/firmware/`. Caller-supplied
54
+ executables retain their actual launcher digest and unknown source revision;
55
+ version output alone does not establish source identity. REA does not bundle
56
+ extractors or download/install firmware engines during analysis.
57
+
58
+ On updates: inspect actual pinned CLI and report producers, preserve licenses,
59
+ update gitlinks/release records, run report regressions and the real firmware
60
+ lane. See [firmware setup and coverage](../docs/firmware-analysis.md).
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Maxim Andreev
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,22 @@
1
+ # EVM interface upstream profile
2
+
3
+ REA integrates unchanged [EVMole](https://github.com/cdump/evmole) as the exact
4
+ npm dependency `evmole@0.9.3`, with lockfile integrity verification. Tag `0.9.3`
5
+ resolves to commit `0409707c2efef11a9043f9b4505cad5719054a7e`.
6
+
7
+ The JavaScript binding and WASM engine remain in the original upstream package;
8
+ REA contains only carrier validation, a worker adapter and portable contracts.
9
+ No submodule or vendored engine fork is required. No signature database,
10
+ LLM decompiler, blockchain node or RPC dependency is acquired.
11
+
12
+ Upstream is MIT, copyright (c) 2023 Maxim Andreev. Its npm tarball omits the
13
+ license file, so REA packages the unchanged tag's [LICENSE](LICENSE) here.
14
+ The engine is initialized through the upstream `no_tla`/`initSync` interface
15
+ only inside an owned worker; importing REA services performs no WASM/file I/O.
16
+
17
+ Initial interface analysis uses `contractInfo` with selectors, arguments and
18
+ stateMutability enabled. Selector recovery also extracts/reports terminal metadata;
19
+ its reported representation is retained with explicit unknown precision/coverage.
20
+ Other upstream outputs are separate future contracts;
21
+ in particular, CFG destination IDs are not byte addresses and terminal CBOR
22
+ metadata cannot establish a lossless integer claim through the current binding.
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2026 Dominik 'Disconnect3d' Czarnota
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,23 @@
1
+ # pwndbg core context adapter
2
+
3
+ REA uses caller-supplied unchanged [pwndbg](https://github.com/pwndbg/pwndbg)
4
+ 2026.09.15, commit `55596aa676a2756efb8d67034f31675170eabe48`, and GDB.
5
+ The original MIT license is retained in `LICENSE.md`. Engine source and its
6
+ dependencies are not vendored or acquired by REA.
7
+
8
+ The adapter executes the selected upstream `gdbinit.py` with its original
9
+ `__file__`, an explicitly selected existing virtual environment, and
10
+ `PWNDBG_NO_AUTOUPDATE=1`. The upstream entrypoint and dependencies are trusted
11
+ caller-supplied executable code. Reported versions establish observed behavior,
12
+ not source authenticity. The real verification lane checks out the exact commit
13
+ and uses its frozen `uv.lock` in isolated runner storage.
14
+
15
+ Only `pwndbg.aglib.vmmap.get()` is queried, after establishing a core-only GDB
16
+ connection without an executable. All original core notes and recorded register
17
+ values come from the independent pwntools/pyelftools decoder. Mapping candidates
18
+ are derived; original pathnames do not identify current host files, and reported
19
+ flags zero leave permissions unknown. REA does not expose upstream command
20
+ execution, live attach, target launch, implicit executable pairing or updates.
21
+
22
+ Local actual verification uses Linux x64, GDB 13.1 and the exact upstream tag/build.
23
+ Other GDB versions require their corresponding real workflow before being claimed.
@@ -0,0 +1,40 @@
1
+ # Offline ELF upstream profile
2
+
3
+ REA uses caller-supplied, unchanged Python packages. It vendors no pwntools,
4
+ pyelftools or Unicorn implementation and never installs these dependencies.
5
+
6
+ | Upstream | Exact verified profile | License | Role |
7
+ | --- | --- | --- | --- |
8
+ | [pwntools](https://github.com/Gallopsled/pwntools) | 4.15.0; tag commit `3ad86ec5adab1abf9781ca7552a6f5d7cff7a33c` | MIT | ELF analysis and static mitigation/GOT/PLT heuristics |
9
+ | [pyelftools](https://github.com/eliben/pyelftools) | 0.33 | Public domain | Original ELF sections, segments, symbols and relocations |
10
+ | [Unicorn](https://github.com/unicorn-engine/unicorn) | 2.1.2 | GPL-2.0 | Upstream PLT emulation; distinct from executing the target as a host process |
11
+
12
+ The adapter checks all three runtime versions before importing the ELF engine.
13
+ Original upstream code/licenses remain in the caller-selected environment.
14
+ No target or core binaries are committed. Fixtures are compiled in owned
15
+ temporary storage from repository source and are never executed.
16
+
17
+ `bridge/pwntools/layout.py` is an owned allocation-failure bootstrap;
18
+ `layout_impl.py` is the adapter. It reads original tables through
19
+ unchanged upstream APIs, preserves raw name bytes/ranges, and serializes uint64
20
+ values as strings. It never accesses `ELF.libs`, `ELF.maps`, `ELF.libc` or
21
+ `process.corefile`, which have materially different execution authority.
22
+
23
+ The real verification lane traces host exec syscalls, checks original artifact
24
+ hashes and observes released owned processes. No negative claim relies only on
25
+ an unmodified target's sentinel: upstream can execute a patched copy when its
26
+ runtime-library accessors are used.
27
+
28
+ The instance-local adapter subclass forwards the documented pyelftools 0.33
29
+ `iter_segments(type=...)` / `iter_sections(type=...)` filters missing from
30
+ pwntools 4.15.0 cached overrides. No upstream file or global method is changed.
31
+ Sectionless dynamic string tables use unique DT_STRTAB/DT_STRSZ mappings to
32
+ file-backed PT_LOAD bytes; ambiguous or non-file-backed mappings are explicitly
33
+ unsupported. Section-name table escapes follow the [ELF ABI](https://gabi.xinuos.com/elf/02-eheader.html):
34
+ SHN_XINDEX represents actual indices at least 0xff00; ordinary absence uses index
35
+ zero. Raw name offsets remain reported when the name table is absent.
36
+
37
+ PLT convenience inference uses the unchanged upstream Unicorn instruction
38
+ emulator. REA labels those maps as derived static evidence. The no-execution
39
+ verification claim concerns launching the selected object as a host process,
40
+ not the absence of static instruction emulation inside an analysis engine.
@@ -1,7 +0,0 @@
1
- import { realpath } from "node:fs/promises";
2
- import { scanCanonicalArtifactInventory, } from "./ArtifactInventory.js";
3
- /** Resolve, authorize, and scan one artifact without a second path resolution. */
4
- export const scanAuthorizedArtifactInventory = async (inputPath, options = {}) => {
5
- const path = await realpath(inputPath);
6
- return scanCanonicalArtifactInventory(path, options);
7
- };