rea-agents 4.1.0 → 5.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 (577) hide show
  1. package/README.md +184 -86
  2. package/bridge/android/ReaJadxBridge.java +247 -0
  3. package/bridge/native/NativeUIChildren.swift +27 -0
  4. package/bridge/native/ReaNativeUI.swift +30 -16
  5. package/dist/android/AndroidTargetSnapshot.js +5 -3
  6. package/dist/android/JadxAnalysis.js +8 -6
  7. package/dist/android/JadxConfiguration.js +19 -3
  8. package/dist/android/JadxMcpTransport.js +43 -16
  9. package/dist/android/JadxProtocol.js +8 -0
  10. package/dist/android/JadxProvider.js +117 -28
  11. package/dist/android/JadxRelease.js +8 -0
  12. package/dist/android/JadxSession.js +32 -18
  13. package/dist/application/AppBundleExecutable.js +141 -0
  14. package/dist/application/ArtifactInventory/classify.js +1 -1
  15. package/dist/application/ArtifactInventory/scanCanonical.js +1 -1
  16. package/dist/application/ArtifactInventory/scanReader.js +1 -1
  17. package/dist/application/ArtifactInventory.js +1 -1
  18. package/dist/application/BinaryTargetResolver.js +9 -64
  19. package/dist/application/CapabilityInventory.js +61 -3
  20. package/dist/application/ClientConfigurationDocument.js +72 -12
  21. package/dist/application/ClientRegistrationStatus.js +7 -8
  22. package/dist/application/DirectAnalysis.js +12 -14
  23. package/dist/application/DirectAnalysisStatus.js +4 -5
  24. package/dist/application/DoctorDiagnostics.js +3 -3
  25. package/dist/application/EnhancedTools.js +4 -4
  26. package/dist/application/EvidenceBundleCommands.js +1 -1
  27. package/dist/application/FilesystemSnapshot.js +20 -5
  28. package/dist/application/InvestigationProviders.js +6 -0
  29. package/dist/application/LinuxHopper.js +8 -2
  30. package/dist/application/OptionalObservationProviders.js +3 -0
  31. package/dist/application/ProcessCaptureCapability.js +1 -1
  32. package/dist/application/ProcessCaptureLifecycle.js +2 -2
  33. package/dist/application/ProcessCli.js +5 -1
  34. package/dist/application/ProcessHarness.js +20 -9
  35. package/dist/application/ReconstructionCoverageService.js +2 -6
  36. package/dist/application/ReconstructionObligationCandidates.js +5 -2
  37. package/dist/application/ReferenceSourceImport.js +2 -0
  38. package/dist/application/ReferenceSourceImportEntries.js +20 -3
  39. package/dist/application/ReferenceSourceImportTypes.js +5 -0
  40. package/dist/application/Setup.js +10 -2
  41. package/dist/application/SetupClientConfiguration.js +19 -16
  42. package/dist/application/SetupHost.js +18 -3
  43. package/dist/application/SetupPlan.js +1 -1
  44. package/dist/application/Uninstall.js +23 -17
  45. package/dist/application/UpdateMaintenance.js +3 -3
  46. package/dist/application/ValidateSelectedWebScript.js +27 -0
  47. package/dist/application/WebModuleTraceService.js +209 -0
  48. package/dist/application/WebRuntimeService.js +73 -0
  49. package/dist/application/WebScriptExportService.js +115 -0
  50. package/dist/application/WebSourceLocationService.js +160 -0
  51. package/dist/application/{AndroidAnalysisService.js → android/AndroidAnalysisService.js} +6 -6
  52. package/dist/application/{AndroidApplicationService.js → android/AndroidApplicationService.js} +3 -3
  53. package/dist/application/{AppleApplicationService.js → apple/AppleApplicationService.js} +5 -5
  54. package/dist/application/{AnalysisClientCleanup.js → binary/AnalysisClientCleanup.js} +2 -2
  55. package/dist/application/{AnalysisProviderEvaluation.js → binary/AnalysisProviderEvaluation.js} +4 -4
  56. package/dist/application/{AnalysisProviderRegistry.js → binary/AnalysisProviderRegistry.js} +5 -5
  57. package/dist/application/{AnalysisSnapshotCache.js → binary/AnalysisSnapshotCache.js} +7 -9
  58. package/dist/application/{AnalysisSnapshotFiles.js → binary/AnalysisSnapshotFiles.js} +4 -4
  59. package/dist/application/{BinarySession.js → binary/BinarySession.js} +12 -10
  60. package/dist/application/{BinarySessionComposition.js → binary/BinarySessionComposition.js} +2 -1
  61. package/dist/application/{BinarySessionExecution.js → binary/BinarySessionExecution.js} +9 -7
  62. package/dist/application/{BinarySessionOpen.js → binary/BinarySessionOpen.js} +6 -6
  63. package/dist/application/{BinarySessionRecords.js → binary/BinarySessionRecords.js} +28 -40
  64. package/dist/application/{CompositeProvider.js → binary/CompositeProvider.js} +2 -2
  65. package/dist/application/{LazyAnalysisProvider.js → binary/LazyAnalysisProvider.js} +6 -6
  66. package/dist/application/{SessionProviderRouter.js → binary/SessionProviderRouter.js} +7 -7
  67. package/dist/application/{FirmwareAnalysisService.js → firmware/FirmwareAnalysisService.js} +5 -5
  68. package/dist/application/{EvidenceLedger.js → investigation/EvidenceLedger.js} +44 -7
  69. package/dist/application/investigation/InvestigationRecords.js +69 -0
  70. package/dist/application/{UnknownEvidence.js → investigation/UnknownEvidence.js} +1 -1
  71. package/dist/application/{ElectronActiveEvidence.js → javascript/ElectronActiveEvidence.js} +3 -3
  72. package/dist/application/javascript/ElectronActiveObservationPort.js +1 -0
  73. package/dist/application/{ElectronActiveObservationService.js → javascript/ElectronActiveObservationService.js} +3 -3
  74. package/dist/application/{ElectronBoundaryAnalysis.js → javascript/ElectronBoundaryAnalysis.js} +1 -1
  75. package/dist/application/{ElectronBoundaryGraphContext.js → javascript/ElectronBoundaryGraphContext.js} +1 -1
  76. package/dist/application/{ElectronEvidence.js → javascript/ElectronEvidence.js} +2 -2
  77. package/dist/application/javascript/ElectronObservationPort.js +1 -0
  78. package/dist/application/{ElectronObservationService.js → javascript/ElectronObservationService.js} +3 -3
  79. package/dist/application/{JavaScriptApplicationEvidence.js → javascript/JavaScriptApplicationEvidence.js} +3 -3
  80. package/dist/application/{JavaScriptApplicationEvidenceGraph.js → javascript/JavaScriptApplicationEvidenceGraph.js} +5 -5
  81. package/dist/application/{JavaScriptApplicationService.js → javascript/JavaScriptApplicationService.js} +10 -10
  82. package/dist/application/{JavaScriptApplicationWorkflowEvidence.js → javascript/JavaScriptApplicationWorkflowEvidence.js} +3 -3
  83. package/dist/application/{JavaScriptApplicationWorkflowService.js → javascript/JavaScriptApplicationWorkflowService.js} +12 -12
  84. package/dist/application/{JavaScriptArtifactAnalysis.js → javascript/JavaScriptArtifactAnalysis.js} +8 -24
  85. package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +1 -0
  86. package/dist/application/{JavaScriptArtifactGraphAccumulator.js → javascript/JavaScriptArtifactGraphAccumulator.js} +16 -2
  87. package/dist/application/{JavaScriptArtifactGraphBuilder.js → javascript/JavaScriptArtifactGraphBuilder.js} +2 -2
  88. package/dist/application/{JavaScriptArtifactGraphContext.js → javascript/JavaScriptArtifactGraphContext.js} +1 -1
  89. package/dist/application/{JavaScriptArtifactGraphDocuments.js → javascript/JavaScriptArtifactGraphDocuments.js} +1 -1
  90. package/dist/application/{JavaScriptArtifactGraphFindings.js → javascript/JavaScriptArtifactGraphFindings.js} +20 -7
  91. package/dist/application/{JavaScriptArtifactGraphStructure.js → javascript/JavaScriptArtifactGraphStructure.js} +1 -1
  92. package/dist/application/{JavaScriptArtifactPathResolution.js → javascript/JavaScriptArtifactPathResolution.js} +6 -12
  93. package/dist/application/{JavaScriptArtifactReconstruction.js → javascript/JavaScriptArtifactReconstruction.js} +4 -8
  94. package/dist/application/{JavaScriptJsonModules.js → javascript/JavaScriptJsonModules.js} +1 -1
  95. package/dist/application/{JavaScriptModuleRelationships.js → javascript/JavaScriptModuleRelationships.js} +2 -2
  96. package/dist/application/javascript/JavaScriptRecoveryPort.js +1 -0
  97. package/dist/application/javascript/JavaScriptRecoveryService.js +52 -0
  98. package/dist/application/{JavaScriptReturnShapeProjection.js → javascript/JavaScriptReturnShapeProjection.js} +3 -3
  99. package/dist/application/{JavaScriptRuntimeObservationEvidence.js → javascript/JavaScriptRuntimeObservationEvidence.js} +2 -2
  100. package/dist/application/javascript/JavaScriptRuntimeObservationPort.js +1 -0
  101. package/dist/application/{JavaScriptRuntimeObservationService.js → javascript/JavaScriptRuntimeObservationService.js} +3 -3
  102. package/dist/application/{JavaScriptRuntimeReconciliationEvidence.js → javascript/JavaScriptRuntimeReconciliationEvidence.js} +3 -3
  103. package/dist/application/{JavaScriptRuntimeReconciliationService.js → javascript/JavaScriptRuntimeReconciliationService.js} +6 -6
  104. package/dist/application/{JavaScriptSemanticGraphAsyncProjection.js → javascript/JavaScriptSemanticGraphAsyncProjection.js} +1 -1
  105. package/dist/application/{JavaScriptSemanticGraphBuilder.js → javascript/JavaScriptSemanticGraphBuilder.js} +5 -3
  106. package/dist/application/{JavaScriptSemanticGraphChildProcessProjection.js → javascript/JavaScriptSemanticGraphChildProcessProjection.js} +1 -1
  107. package/dist/application/{JavaScriptSemanticGraphConstruction.js → javascript/JavaScriptSemanticGraphConstruction.js} +3 -2
  108. package/dist/application/{JavaScriptSemanticGraphDataProjection.js → javascript/JavaScriptSemanticGraphDataProjection.js} +1 -1
  109. package/dist/application/{JavaScriptSemanticGraphFingerprintProjection.js → javascript/JavaScriptSemanticGraphFingerprintProjection.js} +1 -1
  110. package/dist/application/{JavaScriptSemanticGraphFlowProjection.js → javascript/JavaScriptSemanticGraphFlowProjection.js} +2 -2
  111. package/dist/application/{JavaScriptSemanticGraphObjectProjection.js → javascript/JavaScriptSemanticGraphObjectProjection.js} +1 -1
  112. package/dist/application/{JavaScriptSemanticGraphProjection.js → javascript/JavaScriptSemanticGraphProjection.js} +2 -2
  113. package/dist/application/{JavaScriptSemanticGraphResourceProjection.js → javascript/JavaScriptSemanticGraphResourceProjection.js} +1 -1
  114. package/dist/application/{JavaScriptSemanticTraceService.js → javascript/JavaScriptSemanticTraceService.js} +6 -6
  115. package/dist/application/{ManagedApplicationGraphService.js → managed/ManagedApplicationGraphService.js} +7 -7
  116. package/dist/application/{ManagedMemberComparisonService.js → managed/ManagedMemberComparisonService.js} +10 -10
  117. package/dist/application/{ManagedNativeVerificationService.js → managed/ManagedNativeVerificationService.js} +7 -7
  118. package/dist/application/{ManagedReconstructionService.js → managed/ManagedReconstructionService.js} +7 -7
  119. package/dist/application/{NativeApiInspection.js → native/NativeApiInspection.js} +1 -1
  120. package/dist/application/{NativeCallRoutes.js → native/NativeCallRoutes.js} +3 -3
  121. package/dist/application/{NativeDispatchMetadataInspection.js → native/NativeDispatchMetadataInspection.js} +4 -4
  122. package/dist/application/{NativeUiActionTrace.js → native/NativeUiActionTrace.js} +7 -7
  123. package/dist/application/{NativeValueTrace.js → native/NativeValueTrace.js} +6 -6
  124. package/dist/{application/ArtifactInventory/hash.js → artifacts/ArtifactHash.js} +4 -2
  125. package/dist/artifacts/ArtifactPaths.js +3 -3
  126. package/dist/artifacts/ArtifactProvider.js +7 -37
  127. package/dist/artifacts/ArtifactProviderMetadata.js +36 -0
  128. package/dist/artifacts/AsarArtifactReader.js +195 -23
  129. package/dist/artifacts/AsarEntryStream.js +76 -0
  130. package/dist/artifacts/DirectoryArtifactReader.js +41 -7
  131. package/dist/artifacts/NativeDmgArtifactReader.js +161 -9
  132. package/dist/{application → artifacts/apple}/AppleAssetCatalogAnalysis.js +4 -4
  133. package/dist/{application → artifacts/apple}/InterfaceBuilderAnalysis.js +125 -51
  134. package/dist/artifacts/{KeyedArchiveReader.js → apple/KeyedArchiveReader.js} +21 -27
  135. package/dist/artifacts/apple/NibViewHierarchy.js +150 -0
  136. package/dist/{application → artifacts/javascript}/JavaScriptArtifactFiles.js +27 -6
  137. package/dist/artifacts/javascript/JavaScriptArtifactReader.js +6 -0
  138. package/dist/artifacts/readStableArtifact.js +52 -0
  139. package/dist/browser/BrowserScenarioSecrets.js +50 -8
  140. package/dist/browser/CdpAuthorizedMainFrame.js +4 -4
  141. package/dist/browser/CdpAuthorizedTarget.js +22 -0
  142. package/dist/browser/CdpBrowserProvider.js +4 -15
  143. package/dist/browser/CdpCaptureDocuments.js +33 -21
  144. package/dist/browser/CdpCaptureEventBodyShapes.js +3 -3
  145. package/dist/browser/CdpCaptureEventHandlers.js +26 -26
  146. package/dist/browser/CdpCaptureEventHelpers.js +6 -6
  147. package/dist/browser/CdpCaptureStorage.js +10 -8
  148. package/dist/browser/CdpCaptureStorageFingerprints.js +24 -22
  149. package/dist/browser/CdpCaptureValues.js +2 -2
  150. package/dist/browser/CdpCommandRejection.js +17 -0
  151. package/dist/browser/CdpConnection.js +51 -11
  152. package/dist/browser/CdpElectronInspection.js +10 -10
  153. package/dist/browser/CdpElectronProvider.js +3 -6
  154. package/dist/browser/CdpElectronScriptEvents.js +6 -6
  155. package/dist/browser/CdpElectronScripts.js +2 -2
  156. package/dist/browser/CdpElectronWorkers.js +4 -4
  157. package/dist/browser/CdpObservationSession.js +18 -23
  158. package/dist/browser/CdpPageCapture.js +4 -4
  159. package/dist/browser/CdpPageCaptureScripts.js +2 -2
  160. package/dist/browser/CdpPageCaptureWorkers.js +9 -9
  161. package/dist/browser/CdpSafeMetadata.js +48 -10
  162. package/dist/browser/CdpScreenshot.js +5 -5
  163. package/dist/browser/CdpTargetEvents.js +8 -0
  164. package/dist/browser/CdpTargetSession.js +2 -2
  165. package/dist/browser/CdpWebMcpDiscovery.js +22 -16
  166. package/dist/browser/PlaywrightBrowserScenarioProvider.js +7 -6
  167. package/dist/browser/PlaywrightElectronActiveProvider.js +3 -6
  168. package/dist/browser/PlaywrightScenarioEvents.js +59 -51
  169. package/dist/browser/PlaywrightScenarioSession.js +8 -1
  170. package/dist/browser/WebSourceMapFetcher.js +37 -53
  171. package/dist/browser/assets/LocalWebScriptArtifacts.js +87 -0
  172. package/dist/browser/assets/PageScriptCapture.js +32 -0
  173. package/dist/browser/assets/PublishWebScripts.js +74 -0
  174. package/dist/browser/assets/ScenarioScriptCapture.js +76 -0
  175. package/dist/browser/assets/ScriptCaptureAdapters.js +57 -0
  176. package/dist/browser/assets/WebArtifactReads.js +56 -0
  177. package/dist/browser/assets/WebSourceLocationArtifacts.js +40 -0
  178. package/dist/browser/execution/CdpEventListeners.js +79 -0
  179. package/dist/browser/execution/CdpExecutionCapture.js +135 -0
  180. package/dist/browser/execution/CdpExecutionCollection.js +57 -0
  181. package/dist/browser/execution/CdpExecutionWindow.js +100 -0
  182. package/dist/browser/execution/CdpListenerSelector.js +22 -0
  183. package/dist/browser/execution/CdpPreciseCoverage.js +48 -0
  184. package/dist/browser/execution/CdpRuntimeInitiator.js +18 -0
  185. package/dist/browser/execution/CdpRuntimeProtocol.js +106 -0
  186. package/dist/browser/execution/CdpRuntimeRequests.js +81 -0
  187. package/dist/browser/execution/CdpRuntimeSession.js +163 -0
  188. package/dist/browser/execution/CdpRuntimeSources.js +223 -0
  189. package/dist/browser/execution/CdpWebRuntimeProvider.js +51 -0
  190. package/dist/browser/modules/NativeModuleResolver.js +210 -0
  191. package/dist/browser/modules/WebModuleArtifacts.js +40 -0
  192. package/dist/browser/network/PlaywrightNetworkContent.js +71 -0
  193. package/dist/browser/network/PlaywrightScenarioNetwork.js +180 -0
  194. package/dist/browser/providerIdentities.js +24 -0
  195. package/dist/catalogIdentity.js +23 -15
  196. package/dist/cli/androidCommands.js +13 -3
  197. package/dist/cli/applicationCommands.js +39 -8
  198. package/dist/cli/artifactCommands.js +1 -1
  199. package/dist/cli/browserAdvancedCommands.js +27 -9
  200. package/dist/cli/coreAnalysisCommands.js +5 -493
  201. package/dist/cli/coreBinaryCommands.js +211 -0
  202. package/dist/cli/coreNativeCommands.js +293 -0
  203. package/dist/cli/electronCommands.js +13 -18
  204. package/dist/cli/firmwareCommands.js +3 -3
  205. package/dist/cli/javascriptApplicationAnalysis.js +1 -1
  206. package/dist/cli/javascriptRecoveryCommands.js +45 -0
  207. package/dist/cli/managedCommands.js +4 -4
  208. package/dist/cli/managedProjectGraphCommand.js +1 -1
  209. package/dist/cli/referenceSourceImportStatus.js +6 -1
  210. package/dist/cli/utilityCommands.js +47 -23
  211. package/dist/cli/webModuleCommands.js +56 -0
  212. package/dist/cli/webRuntimeCommands.js +60 -0
  213. package/dist/cli/webScriptCommands.js +31 -0
  214. package/dist/cli/webSourceLocationCommands.js +42 -0
  215. package/dist/cli.js +10 -0
  216. package/dist/cliBrowserContext.js +4 -2
  217. package/dist/cliBrowserScenarioCommands.js +4 -3
  218. package/dist/cliCommandNames.js +8 -0
  219. package/dist/cliJavaScriptRuntimeCommands.js +6 -4
  220. package/dist/cliJsonInput.js +9 -2
  221. package/dist/cliOutput.js +37 -11
  222. package/dist/composition/android.js +3 -0
  223. package/dist/composition/auxiliaryAnalysisProviders.js +30 -0
  224. package/dist/composition/binary.js +25 -0
  225. package/dist/composition/browserObservation.js +3 -0
  226. package/dist/composition/browserScenario.js +3 -0
  227. package/dist/composition/directAnalysis.js +17 -0
  228. package/dist/composition/electronObservation.js +3 -0
  229. package/dist/composition/electronScenario.js +3 -0
  230. package/dist/composition/firmware.js +3 -0
  231. package/dist/composition/javascriptRecovery.js +3 -0
  232. package/dist/composition/javascriptRuntimeObservation.js +3 -0
  233. package/dist/composition/optionalObservationProviders.js +49 -0
  234. package/dist/composition/webModules.js +5 -0
  235. package/dist/composition/webRuntime.js +4 -0
  236. package/dist/composition/webSourceLocations.js +5 -0
  237. package/dist/config/parseConfig.js +22 -3
  238. package/dist/contracts/{androidToolContracts.js → android/androidToolContracts.js} +5 -5
  239. package/dist/contracts/applicationToolContracts.js +43 -8
  240. package/dist/contracts/artifactToolContracts.js +2 -2
  241. package/dist/contracts/browserScenarioToolContracts.js +1 -1
  242. package/dist/contracts/enhancedInputs.js +1 -1
  243. package/dist/contracts/{firmwareToolContracts.js → firmware/firmwareToolContracts.js} +5 -5
  244. package/dist/contracts/{applicationWorkflowInputContracts.js → javascript/applicationWorkflowInputContracts.js} +6 -6
  245. package/dist/contracts/{electronToolContracts.js → javascript/electronToolContracts.js} +6 -6
  246. package/dist/contracts/{javascriptApplicationWorkflowExamples.js → javascript/javascriptApplicationWorkflowExamples.js} +3 -3
  247. package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +23 -0
  248. package/dist/contracts/{javascriptRuntimeObservationToolContracts.js → javascript/javascriptRuntimeObservationToolContracts.js} +3 -3
  249. package/dist/contracts/{javascriptRuntimeReconciliationExample.js → javascript/javascriptRuntimeReconciliationExample.js} +5 -5
  250. package/dist/contracts/{managedToolContracts.js → managed/managedToolContracts.js} +3 -3
  251. package/dist/contracts/{managedWorkflowExamples.js → managed/managedWorkflowExamples.js} +1 -1
  252. package/dist/contracts/{managedWorkflowToolContracts.js → managed/managedWorkflowToolContracts.js} +6 -6
  253. package/dist/contracts/mobileApplicationGraphExamples.js +105 -0
  254. package/dist/contracts/{nativeToolContracts.js → native/nativeToolContracts.js} +14 -7
  255. package/dist/contracts/officialToolContracts.js +3 -3
  256. package/dist/contracts/sessionToolContracts.js +1 -1
  257. package/dist/contracts/toolContracts.js +13 -7
  258. package/dist/contracts/toolEffects.js +32 -0
  259. package/dist/contracts/toolOutputSchemaGroups.js +18 -18
  260. package/dist/contracts/webRuntimeToolContracts.js +43 -0
  261. package/dist/contracts/webScriptToolContracts.js +68 -0
  262. package/dist/domain/analysisErrorCore.js +4 -2
  263. package/dist/domain/analysisErrorProjection.js +1 -0
  264. package/dist/domain/{androidApplication.js → android/androidApplication.js} +7 -6
  265. package/dist/domain/apple/appleApplication.js +277 -0
  266. package/dist/domain/{appleAssetCatalog.js → apple/appleAssetCatalog.js} +2 -2
  267. package/dist/domain/apple/appleBundleAnatomy.js +236 -0
  268. package/dist/domain/{interfaceBuilderGraph.js → apple/interfaceBuilderGraph.js} +47 -314
  269. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +411 -0
  270. package/dist/domain/{keyedArchive.js → apple/keyedArchive.js} +10 -9
  271. package/dist/domain/apple/plistValue.js +35 -0
  272. package/dist/domain/artifactInventoryEvidence.js +12 -2
  273. package/dist/domain/artifactInventorySnapshot.js +1 -0
  274. package/dist/domain/artifactOperationError.js +5 -1
  275. package/dist/domain/artifactPathSyntax.js +26 -0
  276. package/dist/domain/browserNetworkEvidence.js +82 -0
  277. package/dist/domain/browserObservationError.js +2 -0
  278. package/dist/domain/browserObservationSchemas.js +2 -1
  279. package/dist/domain/browserScenarioCapture.js +22 -0
  280. package/dist/domain/browserScenarioCaptureValues.js +25 -0
  281. package/dist/domain/browserScenarioDiff.js +6 -3
  282. package/dist/domain/browserScenarioDiffEvidence.js +35 -1
  283. package/dist/domain/browserScenarioValues.js +12 -1
  284. package/dist/domain/browserSession.js +2 -7
  285. package/dist/domain/bundleComparison.js +2 -1
  286. package/dist/domain/callPath.js +52 -44
  287. package/dist/domain/comparisonStatus.js +39 -0
  288. package/dist/domain/evidenceBundle.js +98 -35
  289. package/dist/domain/{firmwareAnalysis.js → firmware/firmwareAnalysis.js} +2 -2
  290. package/dist/domain/functionComparisonNormalization.js +11 -13
  291. package/dist/domain/hopperValues.js +2 -2
  292. package/dist/domain/inputIssueProjection.js +17 -2
  293. package/dist/domain/{electronObservation.js → javascript/electronObservation.js} +5 -11
  294. package/dist/domain/{electronStaticAnalysisBrowser.js → javascript/electronStaticAnalysisBrowser.js} +4 -3
  295. package/dist/domain/{electronStaticAnalysisIpc.js → javascript/electronStaticAnalysisIpc.js} +2 -2
  296. package/dist/domain/{electronStaticAnalysisNative.js → javascript/electronStaticAnalysisNative.js} +12 -13
  297. package/dist/domain/javascript/electronStaticAnalysisTypes.js +1 -0
  298. package/dist/domain/{electronStaticAnalysisValues.js → javascript/electronStaticAnalysisValues.js} +3 -3
  299. package/dist/domain/{javascriptApplicationAnalysis.js → javascript/javascriptApplicationAnalysis.js} +2 -2
  300. package/dist/domain/{javascriptApplicationChangeGraph.js → javascript/javascriptApplicationChangeGraph.js} +1 -1
  301. package/dist/domain/{javascriptApplicationEvidenceSchemas.js → javascript/javascriptApplicationEvidenceSchemas.js} +6 -4
  302. package/dist/domain/{javascriptApplicationGraph.js → javascript/javascriptApplicationGraph.js} +2 -2
  303. package/dist/domain/{javascriptApplicationGraphSchemas.js → javascript/javascriptApplicationGraphSchemas.js} +2 -2
  304. package/dist/domain/{javascriptApplicationVersionComparison.js → javascript/javascriptApplicationVersionComparison.js} +2 -2
  305. package/dist/domain/{javascriptApplicationVersionComparisonSchemas.js → javascript/javascriptApplicationVersionComparisonSchemas.js} +3 -3
  306. package/dist/domain/{javascriptApplicationVersionItems.js → javascript/javascriptApplicationVersionItems.js} +2 -2
  307. package/dist/domain/{javascriptApplicationVersionKeys.js → javascript/javascriptApplicationVersionKeys.js} +16 -9
  308. package/dist/domain/javascript/javascriptArtifactFiles.js +1 -0
  309. package/dist/domain/{javascriptAstFingerprint.js → javascript/javascriptAstFingerprint.js} +38 -22
  310. package/dist/domain/javascript/javascriptAstValues.js +23 -0
  311. package/dist/domain/{javascriptExportShapeComparison.js → javascript/javascriptExportShapeComparison.js} +1 -1
  312. package/dist/domain/{javascriptExportShapeComparisonSchemas.js → javascript/javascriptExportShapeComparisonSchemas.js} +2 -2
  313. package/dist/domain/{javascriptExportShapeSelection.js → javascript/javascriptExportShapeSelection.js} +1 -1
  314. package/dist/domain/{javascriptExportShapeVariants.js → javascript/javascriptExportShapeVariants.js} +1 -1
  315. package/dist/domain/{javascriptFeatureSeed.js → javascript/javascriptFeatureSeed.js} +4 -3
  316. package/dist/domain/{javascriptFeatureTrace.js → javascript/javascriptFeatureTrace.js} +2 -2
  317. package/dist/domain/{javascriptFeatureTraceSchemas.js → javascript/javascriptFeatureTraceSchemas.js} +32 -18
  318. package/dist/domain/{javascriptFeatureTraversal.js → javascript/javascriptFeatureTraversal.js} +6 -2
  319. package/dist/domain/{javascriptNativeHandoff.js → javascript/javascriptNativeHandoff.js} +1 -1
  320. package/dist/domain/javascript/javascriptRecovery.js +88 -0
  321. package/dist/domain/{javascriptRuntimeLoadState.js → javascript/javascriptRuntimeLoadState.js} +1 -1
  322. package/dist/domain/{javascriptRuntimeObservation.js → javascript/javascriptRuntimeObservation.js} +2 -2
  323. package/dist/domain/{javascriptRuntimeReconciliationActive.js → javascript/javascriptRuntimeReconciliationActive.js} +3 -3
  324. package/dist/domain/{javascriptRuntimeReconciliationGraph.js → javascript/javascriptRuntimeReconciliationGraph.js} +1 -1
  325. package/dist/domain/{javascriptRuntimeReconciliationMatching.js → javascript/javascriptRuntimeReconciliationMatching.js} +2 -2
  326. package/dist/domain/{javascriptRuntimeReconciliationParsing.js → javascript/javascriptRuntimeReconciliationParsing.js} +5 -5
  327. package/dist/domain/{javascriptRuntimeReconciliationResult.js → javascript/javascriptRuntimeReconciliationResult.js} +2 -2
  328. package/dist/domain/{javascriptRuntimeReconciliationSchemas.js → javascript/javascriptRuntimeReconciliationSchemas.js} +4 -4
  329. package/dist/domain/{javascriptRuntimeStaticCandidates.js → javascript/javascriptRuntimeStaticCandidates.js} +1 -1
  330. package/dist/domain/{javascriptSemanticAnalysis.js → javascript/javascriptSemanticAnalysis.js} +40 -14
  331. package/dist/domain/{javascriptSemanticAsyncEffects.js → javascript/javascriptSemanticAsyncEffects.js} +2 -1
  332. package/dist/domain/{javascriptSemanticCallResolution.js → javascript/javascriptSemanticCallResolution.js} +10 -5
  333. package/dist/domain/{javascriptSemanticCalls.js → javascript/javascriptSemanticCalls.js} +7 -4
  334. package/dist/domain/{javascriptSemanticChildProcesses.js → javascript/javascriptSemanticChildProcesses.js} +4 -2
  335. package/dist/domain/{javascriptSemanticDataEffectHelpers.js → javascript/javascriptSemanticDataEffectHelpers.js} +7 -6
  336. package/dist/domain/{javascriptSemanticDataEffects.js → javascript/javascriptSemanticDataEffects.js} +8 -6
  337. package/dist/domain/{javascriptSemanticFingerprints.js → javascript/javascriptSemanticFingerprints.js} +40 -16
  338. package/dist/domain/{javascriptSemanticGraph.js → javascript/javascriptSemanticGraph.js} +2 -2
  339. package/dist/domain/{javascriptSemanticGraphSchemas.js → javascript/javascriptSemanticGraphSchemas.js} +3 -3
  340. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +116 -0
  341. package/dist/domain/javascript/javascriptSemanticMutationValues.js +53 -0
  342. package/dist/domain/{javascriptSemanticObjects.js → javascript/javascriptSemanticObjects.js} +5 -5
  343. package/dist/domain/{javascriptSemanticPrimitives.js → javascript/javascriptSemanticPrimitives.js} +1 -1
  344. package/dist/domain/{javascriptSemanticProjection.js → javascript/javascriptSemanticProjection.js} +31 -44
  345. package/dist/domain/{javascriptSemanticPromises.js → javascript/javascriptSemanticPromises.js} +77 -22
  346. package/dist/domain/{javascriptSemanticProvenance.js → javascript/javascriptSemanticProvenance.js} +4 -1
  347. package/dist/domain/{javascriptSemanticQuery.js → javascript/javascriptSemanticQuery.js} +1 -1
  348. package/dist/domain/{javascriptSemanticQueryAssessment.js → javascript/javascriptSemanticQueryAssessment.js} +1 -1
  349. package/dist/domain/{javascriptSemanticQueryIdentity.js → javascript/javascriptSemanticQueryIdentity.js} +1 -1
  350. package/dist/domain/{javascriptSemanticQuerySchemas.js → javascript/javascriptSemanticQuerySchemas.js} +3 -3
  351. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +25 -0
  352. package/dist/domain/{javascriptSemanticResources.js → javascript/javascriptSemanticResources.js} +2 -1
  353. package/dist/domain/{javascriptSemanticReturns.js → javascript/javascriptSemanticReturns.js} +1 -1
  354. package/dist/domain/{javascriptSemanticTraceSchemas.js → javascript/javascriptSemanticTraceSchemas.js} +2 -2
  355. package/dist/domain/javascript/javascriptSemanticTraversal.js +55 -0
  356. package/dist/domain/javascript/javascriptSemanticValueTypes.js +1 -0
  357. package/dist/domain/{javascriptSemanticValues.js → javascript/javascriptSemanticValues.js} +72 -48
  358. package/dist/domain/{javascriptStaticAnalysis.js → javascript/javascriptStaticAnalysis.js} +7 -4
  359. package/dist/domain/{javascriptStaticAnalysisBundler.js → javascript/javascriptStaticAnalysisBundler.js} +14 -11
  360. package/dist/domain/{javascriptStaticAnalysisCalls.js → javascript/javascriptStaticAnalysisCalls.js} +2 -2
  361. package/dist/domain/{javascriptStaticAnalysisHelpers.js → javascript/javascriptStaticAnalysisHelpers.js} +231 -40
  362. package/dist/domain/{sourceToBundleComparison.js → javascript/sourceToBundleComparison.js} +2 -2
  363. package/dist/domain/{sourceToBundleComparisonSchemas.js → javascript/sourceToBundleComparisonSchemas.js} +4 -4
  364. package/dist/domain/{sourceToBundleSignals.js → javascript/sourceToBundleSignals.js} +2 -2
  365. package/dist/domain/{managedApplicationGraph.js → managed/managedApplicationGraph.js} +4 -4
  366. package/dist/domain/{managedApplicationGraphNodes.js → managed/managedApplicationGraphNodes.js} +1 -1
  367. package/dist/domain/{managedArtifact.js → managed/managedArtifact.js} +1 -1
  368. package/dist/domain/{managedMemberComparison.js → managed/managedMemberComparison.js} +4 -4
  369. package/dist/domain/{managedMemberComparisonCoverage.js → managed/managedMemberComparisonCoverage.js} +2 -1
  370. package/dist/domain/{managedMemberComparisonItems.js → managed/managedMemberComparisonItems.js} +97 -40
  371. package/dist/domain/{managedMemberComparisonMatch.js → managed/managedMemberComparisonMatch.js} +22 -11
  372. package/dist/domain/{managedNativeVerification.js → managed/managedNativeVerification.js} +1 -1
  373. package/dist/domain/{managedNativeVerificationMatch.js → managed/managedNativeVerificationMatch.js} +3 -3
  374. package/dist/domain/{managedNativeVerificationSchemas.js → managed/managedNativeVerificationSchemas.js} +6 -5
  375. package/dist/domain/{managedReconstruction.js → managed/managedReconstruction.js} +3 -3
  376. package/dist/domain/{nativeFunctionAnnotations.js → native/nativeFunctionAnnotations.js} +1 -1
  377. package/dist/domain/{nativeInspection.js → native/nativeInspection.js} +1 -1
  378. package/dist/domain/{nativeInvestigationGraph.js → native/nativeInvestigationGraph.js} +13 -4
  379. package/dist/domain/{nativeLoadImage.js → native/nativeLoadImage.js} +1 -1
  380. package/dist/domain/{nativeUiObservation.js → native/nativeUiObservation.js} +20 -6
  381. package/dist/domain/{objcSwiftMetadata.js → native/objcSwiftMetadata.js} +17 -0
  382. package/dist/domain/processCapture.js +4 -2
  383. package/dist/domain/processScenario.js +17 -17
  384. package/dist/domain/propertyListKeys.js +69 -0
  385. package/dist/domain/providerCleanupError.js +5 -2
  386. package/dist/domain/reconstructionCoverageEvaluation.js +46 -24
  387. package/dist/domain/reconstructionCoverageInput.js +7 -0
  388. package/dist/domain/runtimeVersion.js +2 -0
  389. package/dist/domain/sourceMapEnvelope.js +38 -0
  390. package/dist/domain/unicodeCodePointOrder.js +11 -6
  391. package/dist/domain/webBundleAnalyzerAst.js +2 -34
  392. package/dist/domain/webBundleAnalyzerInspection.js +12 -9
  393. package/dist/domain/webEventListeners.js +28 -0
  394. package/dist/domain/webExecution.js +74 -0
  395. package/dist/domain/webMcpDiscovery.js +1 -7
  396. package/dist/domain/webModuleImports.js +104 -0
  397. package/dist/domain/webModuleTrace.js +106 -0
  398. package/dist/domain/webRuntime.js +69 -0
  399. package/dist/domain/webScreenshot.js +1 -7
  400. package/dist/domain/webScriptArtifacts.js +39 -0
  401. package/dist/domain/webScriptExport.js +86 -0
  402. package/dist/domain/webScriptExportError.js +13 -0
  403. package/dist/domain/webScriptExportPlan.js +108 -0
  404. package/dist/domain/webSourceLocation.js +106 -0
  405. package/dist/domain/webSourcePosition.js +21 -0
  406. package/dist/dotnet/ManagedArtifactInspector.js +1 -1
  407. package/dist/dotnet/ManagedMemberInspector.js +1 -1
  408. package/dist/dotnet/ManagedMemberInspectorCore.js +34 -0
  409. package/dist/dotnet/ManagedMemberRows.js +5 -3
  410. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +22 -16
  411. package/dist/dotnet/ManagedNativeBoundaryInspector.js +56 -50
  412. package/dist/dotnet/ManagedStaticProvider.js +3 -33
  413. package/dist/dotnet/ManagedStaticProviderMetadata.js +36 -0
  414. package/dist/evaluation/CodexAgentEval.js +2 -1
  415. package/dist/firmware/FirmwareProvider.js +18 -12
  416. package/dist/firmware/FirmwarePublication.js +1 -1
  417. package/dist/firmware/FirmwareRelease.js +1 -1
  418. package/dist/firmware/FirmwareReports.js +12 -0
  419. package/dist/firmware/FirmwareVersion.js +80 -0
  420. package/dist/generatedMcpToolCatalog.js +1 -1
  421. package/dist/generatedPackageMetadata.js +2 -2
  422. package/dist/ghidra/GhidraFunctionValues.js +5 -5
  423. package/dist/ghidra/GhidraInstallation.js +38 -34
  424. package/dist/ghidra/GhidraInstallationPolicy.js +140 -0
  425. package/dist/ghidra/GhidraInventoryValues.js +1 -1
  426. package/dist/ghidra/GhidraLauncher.js +12 -4
  427. package/dist/ghidra/GhidraLoadImageAttest.js +36 -0
  428. package/dist/ghidra/GhidraLoadImageValues.js +1 -1
  429. package/dist/ghidra/GhidraProvider.js +15 -233
  430. package/dist/ghidra/GhidraProviderCapabilities.js +7 -14
  431. package/dist/ghidra/GhidraProviderClient.js +209 -0
  432. package/dist/ghidra/GhidraResponseBuffer.js +7 -1
  433. package/dist/ghidra/extensions/nativeaot/NativeAotReport.js +17 -1
  434. package/dist/hopper/HopperProvider.js +2 -48
  435. package/dist/hopper/HopperProviderCapabilities.js +73 -0
  436. package/dist/hopper/HopperResponseStream.js +7 -1
  437. package/dist/hopper/LinuxPrivateDisplayProbe.js +4 -4
  438. package/dist/ida/IdaProviderCapabilities.js +3 -11
  439. package/dist/ida/IdaSessionClient.js +12 -0
  440. package/dist/{browser → inspector}/JavaScriptRuntimeScope.js +16 -5
  441. package/dist/{browser → inspector}/V8InspectorCaptureProjection.js +46 -8
  442. package/dist/{browser → inspector}/V8InspectorEndpoint.js +1 -1
  443. package/dist/{browser → inspector}/V8InspectorProvider.js +10 -13
  444. package/dist/inspector/providerIdentity.js +6 -0
  445. package/dist/javascript/recovery/RecoveryFiles.js +122 -0
  446. package/dist/javascript/recovery/WakaruCommand.js +116 -0
  447. package/dist/javascript/recovery/WakaruExecution.js +100 -0
  448. package/dist/javascript/recovery/WakaruProvider.js +96 -0
  449. package/dist/javascript/recovery/WakaruPublication.js +102 -0
  450. package/dist/javascript/recovery/WakaruRelease.js +29 -0
  451. package/dist/javascript/recovery/WakaruReport.js +134 -0
  452. package/dist/javascript/sourceMaps/SourceMapCodecProcess.js +37 -0
  453. package/dist/javascript/sourceMaps/SourceMapCodecProtocol.js +20 -0
  454. package/dist/javascript/sourceMaps/SourceMapCommand.js +176 -0
  455. package/dist/javascript/sourceMaps/SourceMapDecoder.js +61 -0
  456. package/dist/javascript/sourceMaps/SourceMapFormat.js +185 -0
  457. package/dist/javascript/sourceMaps/TraceSourceMap.js +138 -0
  458. package/dist/main/shutdown.js +8 -2
  459. package/dist/main/transport.js +24 -7
  460. package/dist/main.js +4 -18
  461. package/dist/native/AppleDispatchCoverage.js +58 -0
  462. package/dist/native/AppleDispatchMetadata.js +71 -509
  463. package/dist/native/AppleMachoFixups.js +292 -0
  464. package/dist/native/AppleMachoSelection.js +188 -0
  465. package/dist/native/AppleObjcCategories.js +59 -0
  466. package/dist/native/AppleObjcDispatchFacets.js +257 -0
  467. package/dist/native/AppleObjcProperties.js +68 -0
  468. package/dist/native/AppleObjcProtocols.js +2 -1
  469. package/dist/native/AppleSwiftDispatchFacets.js +150 -0
  470. package/dist/native/NativeMacOSProvider.js +132 -72
  471. package/dist/native/NativeMacOSProviderMetadata.js +42 -0
  472. package/dist/native/NativeMachoInspection.js +45 -14
  473. package/dist/native/NativeUiHelperRuntime.js +7 -3
  474. package/dist/native/NativeUiObservation.js +8 -4
  475. package/dist/native/NativeUiOutputBudget.js +8 -0
  476. package/dist/native/parsers/codesign.js +40 -5
  477. package/dist/native/parsers/demangle.js +6 -2
  478. package/dist/native/parsers/dyldInfo.js +13 -4
  479. package/dist/native/parsers/echoedPath.js +14 -0
  480. package/dist/native/parsers/lipo.js +14 -0
  481. package/dist/native/parsers/otool.js +1 -1
  482. package/dist/native/parsers/plist.js +174 -19
  483. package/dist/process/ExecFileOutput.js +2 -0
  484. package/dist/process/ProviderProcess.js +38 -17
  485. package/dist/reference/ReferenceSourceReaderEntries.js +6 -1
  486. package/dist/server/createServer.js +48 -6
  487. package/dist/server/mcpClientMetadata.js +6 -3
  488. package/dist/server/registerAndroidTools.js +1 -1
  489. package/dist/server/registerApplicationTools/compareExportShapes.js +2 -2
  490. package/dist/server/registerApplicationTools/compareSourceToBundle.js +2 -2
  491. package/dist/server/registerApplicationTools/compareVersions.js +2 -2
  492. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +43 -0
  493. package/dist/server/registerApplicationTools/traceFeature.js +1 -1
  494. package/dist/server/registerApplicationTools/traceSemantics.js +1 -1
  495. package/dist/server/registerApplicationTools.js +2 -0
  496. package/dist/server/registerBrowserScenarioTool.js +6 -2
  497. package/dist/server/registerBrowserTools.js +13 -2
  498. package/dist/server/registerCloseLifecycleTool.js +1 -1
  499. package/dist/server/registerElectronTools.js +21 -7
  500. package/dist/server/registerJavaScriptRecoveryTool.js +17 -0
  501. package/dist/server/registerJavaScriptRuntimeObservationTools.js +9 -4
  502. package/dist/server/registerManagedTools.js +3 -3
  503. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +2 -2
  504. package/dist/server/registerManagedWorkflowTools/contract.js +1 -1
  505. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +1 -1
  506. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +1 -1
  507. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +2 -2
  508. package/dist/server/registerNativeTools.js +1 -1
  509. package/dist/server/registerPrompts.js +5 -1
  510. package/dist/server/registerSessionTools.js +1 -1
  511. package/dist/server/registerWebModuleTool.js +17 -0
  512. package/dist/server/registerWebRuntimeTools.js +31 -0
  513. package/dist/server/registerWebScriptTool.js +18 -0
  514. package/dist/server/registerWebSourceLocationTool.js +17 -0
  515. package/dist/server/sessionAvailabilityPolicy.js +24 -12
  516. package/dist/windows/WindowsOwnedProcess.js +3 -1
  517. package/install.sh +12 -2
  518. package/native/windows/README.md +5 -0
  519. package/native/windows/build/manifest.json +2 -2
  520. package/native/windows/build/rea-windows-x64.node +0 -0
  521. package/package.json +40 -19
  522. package/scripts/hopper-demo-x11.py +67 -8
  523. package/scripts/rea.mjs +9 -1
  524. package/skills/reverse-engineer-anything/SKILL.md +3 -3
  525. package/skills/reverse-engineer-anything/references/android-applications.md +2 -2
  526. package/skills/reverse-engineer-anything/references/javascript-applications.md +1 -1
  527. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +32 -23
  528. package/dist/application/runtime.js +0 -53
  529. package/dist/domain/appleApplication.js +0 -181
  530. package/dist/domain/javascriptAstValues.js +0 -13
  531. package/dist/domain/javascriptSemanticTraversal.js +0 -30
  532. package/dist/native/NativeHostCapabilities.js +0 -23
  533. /package/dist/application/{AndroidAnalysisPort.js → DirectAnalysisDependencies.js} +0 -0
  534. /package/dist/application/{BinarySessionPort.js → WebModulePorts.js} +0 -0
  535. /package/dist/application/{ElectronActiveObservationPort.js → WebRuntimePort.js} +0 -0
  536. /package/dist/application/{ElectronObservationPort.js → WebScriptArtifactPort.js} +0 -0
  537. /package/dist/application/{FirmwareAnalysisPort.js → WebSourceLocationPorts.js} +0 -0
  538. /package/dist/application/{JavaScriptArtifactAnalysisTypes.js → android/AndroidAnalysisPort.js} +0 -0
  539. /package/dist/application/{AbortablePromise.js → binary/AbortablePromise.js} +0 -0
  540. /package/dist/application/{JavaScriptRuntimeObservationPort.js → binary/BinarySessionPort.js} +0 -0
  541. /package/dist/application/{BinarySessionStatus.js → binary/BinarySessionStatus.js} +0 -0
  542. /package/dist/{domain/electronStaticAnalysisTypes.js → application/firmware/FirmwareAnalysisPort.js} +0 -0
  543. /package/dist/{domain/javascriptSemanticValueTypes.js → application/investigation/InvestigationRecordPort.js} +0 -0
  544. /package/dist/application/{ElectronBoundaryGraph.js → javascript/ElectronBoundaryGraph.js} +0 -0
  545. /package/dist/application/{ElectronBoundaryGraphIpc.js → javascript/ElectronBoundaryGraphIpc.js} +0 -0
  546. /package/dist/application/{ElectronBoundaryGraphNative.js → javascript/ElectronBoundaryGraphNative.js} +0 -0
  547. /package/dist/application/{ElectronBoundaryGraphWindows.js → javascript/ElectronBoundaryGraphWindows.js} +0 -0
  548. /package/dist/application/{JavaScriptArtifactGraphBundlers.js → javascript/JavaScriptArtifactGraphBundlers.js} +0 -0
  549. /package/dist/application/{JavaScriptArtifactGraphEvidence.js → javascript/JavaScriptArtifactGraphEvidence.js} +0 -0
  550. /package/dist/application/{JavaScriptArtifactReconstructionInput.js → javascript/JavaScriptArtifactReconstructionInput.js} +0 -0
  551. /package/dist/application/{JavaScriptSemanticGraphEvidence.js → javascript/JavaScriptSemanticGraphEvidence.js} +0 -0
  552. /package/dist/application/{JavaScriptSemanticGraphValueProjection.js → javascript/JavaScriptSemanticGraphValueProjection.js} +0 -0
  553. /package/dist/artifacts/{NibArchive.js → apple/NibArchive.js} +0 -0
  554. /package/dist/domain/{androidAnalysis.js → android/androidAnalysis.js} +0 -0
  555. /package/dist/domain/{electronActiveObservation.js → javascript/electronActiveObservation.js} +0 -0
  556. /package/dist/domain/{electronStaticAnalysis.js → javascript/electronStaticAnalysis.js} +0 -0
  557. /package/dist/domain/{javascriptExportShapeComparisonIdentity.js → javascript/javascriptExportShapeComparisonIdentity.js} +0 -0
  558. /package/dist/domain/{javascriptRuntimeReconciliation.js → javascript/javascriptRuntimeReconciliation.js} +0 -0
  559. /package/dist/domain/{javascriptRuntimeReconciliationRuntime.js → javascript/javascriptRuntimeReconciliationRuntime.js} +0 -0
  560. /package/dist/domain/{javascriptSemanticCoverage.js → javascript/javascriptSemanticCoverage.js} +0 -0
  561. /package/dist/domain/{javascriptSemanticDerivedAnalysis.js → javascript/javascriptSemanticDerivedAnalysis.js} +0 -0
  562. /package/dist/domain/{javascriptSemanticGraphSerialization.js → javascript/javascriptSemanticGraphSerialization.js} +0 -0
  563. /package/dist/domain/{javascriptSemanticIr.js → javascript/javascriptSemanticIr.js} +0 -0
  564. /package/dist/domain/{javascriptSemanticQueryRelations.js → javascript/javascriptSemanticQueryRelations.js} +0 -0
  565. /package/dist/domain/{javascriptSemanticState.js → javascript/javascriptSemanticState.js} +0 -0
  566. /package/dist/domain/{javascriptSourceParser.js → javascript/javascriptSourceParser.js} +0 -0
  567. /package/dist/domain/{javascriptStaticAnalysisFindings.js → javascript/javascriptStaticAnalysisFindings.js} +0 -0
  568. /package/dist/domain/{javascriptStaticAnalysisState.js → javascript/javascriptStaticAnalysisState.js} +0 -0
  569. /package/dist/domain/{javascriptStaticAnalysisTypes.js → javascript/javascriptStaticAnalysisTypes.js} +0 -0
  570. /package/dist/domain/{managedApplicationGraphCoverage.js → managed/managedApplicationGraphCoverage.js} +0 -0
  571. /package/dist/domain/{managedApplicationGraphNodeCoverage.js → managed/managedApplicationGraphNodeCoverage.js} +0 -0
  572. /package/dist/domain/{nativeApiBoundary.js → native/nativeApiBoundary.js} +0 -0
  573. /package/dist/domain/{nativeDataType.js → native/nativeDataType.js} +0 -0
  574. /package/dist/domain/{nativeInstruction.js → native/nativeInstruction.js} +0 -0
  575. /package/dist/domain/{nativeMetadataRecovery.js → native/nativeMetadataRecovery.js} +0 -0
  576. /package/dist/domain/{nativeValueFlow.js → native/nativeValueFlow.js} +0 -0
  577. /package/dist/domain/{nativeValueTrace.js → native/nativeValueTrace.js} +0 -0
@@ -1,9 +1,9 @@
1
1
  import { z } from "zod";
2
- import { evidenceSchema } from "./evidence.js";
2
+ import { evidenceSchema } from "../evidence.js";
3
3
  import { JAVASCRIPT_APPLICATION_NODE_KINDS } from "./javascriptApplicationGraphSchemas.js";
4
- import { historicalSourceGraphSchema } from "./referenceSourceGraph.js";
5
- import { digestSchema } from "./../domain/digests.js";
6
- import { prefixedDigestSchema } from "./../domain/digests.js";
4
+ import { historicalSourceGraphSchema } from "../referenceSourceGraph.js";
5
+ import { digestSchema } from "../digests.js";
6
+ import { prefixedDigestSchema } from "../digests.js";
7
7
  const evidenceIdSchema = prefixedDigestSchema("ev");
8
8
  const nodeIdSchema = prefixedDigestSchema("jag_node");
9
9
  const textSchema = z.string().min(1);
@@ -1,7 +1,7 @@
1
1
  import { posix } from "node:path";
2
- import { compareCodePoints } from "./canonicalOrdering.js";
2
+ import { compareCodePoints } from "../canonicalOrdering.js";
3
3
  import { SOURCE_TO_BUNDLE_SIGNAL_WEIGHTS, } from "./sourceToBundleComparisonSchemas.js";
4
- import { isDigest } from "./digests.js";
4
+ import { isDigest } from "../digests.js";
5
5
  const RELEVANT_NODE_KINDS = new Set([
6
6
  "javascript-asset",
7
7
  "javascript-module",
@@ -1,13 +1,13 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import canonicalize from "canonicalize";
3
3
  import { z } from "zod";
4
- import { evidenceSchema, parseEvidence } from "./evidence.js";
5
- import { createJavaScriptApplicationGraph, javascriptApplicationGraphSchema, } from "./javascriptApplicationGraph.js";
4
+ import { evidenceSchema, parseEvidence } from "../evidence.js";
5
+ import { createJavaScriptApplicationGraph, javascriptApplicationGraphSchema, } from "../javascript/javascriptApplicationGraph.js";
6
6
  import { managedArtifactInspectionSchema, managedMemberInspectionSchema, managedNativeBoundaryInspectionSchema, } from "./managedArtifact.js";
7
7
  import { assessManagedGraphOmissions, managedGraphEvidenceCoverage, managedGraphResultCoverage, } from "./managedApplicationGraphCoverage.js";
8
8
  import { addArtifactNode, addArtifactIdentityNodes, addBoundaryNodes, addMemberNodes, } from "./managedApplicationGraphNodes.js";
9
- import { digestSchema } from "./../domain/digests.js";
10
- import { prefixedDigestSchema } from "./../domain/digests.js";
9
+ import { digestSchema } from "../digests.js";
10
+ import { prefixedDigestSchema } from "../digests.js";
11
11
  const evidenceIdSchema = prefixedDigestSchema("ev");
12
12
  const textSchema = z.string().min(1);
13
13
  /** Authenticated managed Evidence records projected into the application graph. */
@@ -1,5 +1,5 @@
1
1
  import { basename } from "node:path";
2
- import { createJavaScriptApplicationEdge, createJavaScriptApplicationNode, } from "./javascriptApplicationGraph.js";
2
+ import { createJavaScriptApplicationEdge, createJavaScriptApplicationNode, } from "../javascript/javascriptApplicationGraph.js";
3
3
  import { managedSourceCoverage } from "./managedApplicationGraphCoverage.js";
4
4
  import {} from "./managedArtifact.js";
5
5
  import { moduleCoverageState } from "./managedApplicationGraphNodeCoverage.js";
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { digestSchema } from "./../domain/digests.js";
2
+ import { digestSchema } from "../digests.js";
3
3
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
4
4
  const offsetSchema = z.number().int().min(0);
5
5
  /** A 16-byte CLI metadata GUID without RFC 4122 version/variant restrictions. */
@@ -1,12 +1,12 @@
1
1
  import { z } from "zod";
2
- import { emptyArraySchema } from "./emptyArraySchema.js";
3
- import { evidenceSchema } from "./evidence.js";
2
+ import { emptyArraySchema } from "../emptyArraySchema.js";
3
+ import { evidenceSchema } from "../evidence.js";
4
4
  import { cliMetadataGuidSchema, } from "./managedArtifact.js";
5
5
  import { buildComparisonCoverage, buildComparisonMatching, buildComparisonSummary, comparisonLimitations, sideManifest, } from "./managedMemberComparisonCoverage.js";
6
6
  import { buildFieldItems, buildMethodItems, } from "./managedMemberComparisonItems.js";
7
7
  import { keyMembers, sha256 } from "./managedMemberComparisonMatch.js";
8
- import { digestSchema } from "./../domain/digests.js";
9
- import { prefixedDigestSchema } from "./../domain/digests.js";
8
+ import { digestSchema } from "../digests.js";
9
+ import { prefixedDigestSchema } from "../digests.js";
10
10
  const evidenceIdSchema = prefixedDigestSchema("ev");
11
11
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
12
12
  const boundedTextSchema = z.string().min(1);
@@ -33,7 +33,7 @@ export const buildComparisonSummary = (items) => ({
33
33
  });
34
34
  export const buildComparisonMatching = (methodItems, fieldItems) => ({
35
35
  exact_il_signature: methodItems.filter(({ match }) => match.basis === "exact-il-signature").length,
36
- exact_signature: methodItems.filter(({ match }) => match.basis === "exact-signature").length,
36
+ exact_signature: [...methodItems, ...fieldItems].filter(({ match }) => match.basis === "exact-signature").length,
37
37
  structural_method_shape: methodItems.filter(({ match }) => match.basis === "structural-method-shape").length,
38
38
  field_signature: fieldItems.filter(({ match }) => match.basis === "field-signature").length,
39
39
  ambiguous: methodItems.filter(({ match }) => match.status === "ambiguous").length +
@@ -44,6 +44,7 @@ export const comparisonLimitations = (left, right) => {
44
44
  const limitations = [
45
45
  "Metadata tokens are build-local coordinates; matched pairs are remaps, not persistent identities.",
46
46
  "Methods pair by exact CIL/signature, then declared type, name, and signature, then structural shape; names alone are never a matching basis.",
47
+ "Fields pair by exact signature, then declared type, name, and signature; an undecoded signature is compared only by its raw bytes, and an unmatched member with one stays unknown.",
47
48
  ];
48
49
  if (left.coverage.state !== "complete" || right.coverage.state !== "complete")
49
50
  limitations.push("At least one managed member observation is partial.");
@@ -56,72 +56,131 @@ const unmatchedComparison = () => ({
56
56
  candidate_left_tokens: [],
57
57
  candidate_right_tokens: [],
58
58
  });
59
- const methodOnlyItem = (member, context) => {
59
+ const methodOnlyItem = (member, context, undecoded) => {
60
60
  if (member.left !== undefined) {
61
- const absenceObserved = context.rightComplete;
61
+ const limitations = absenceLimitations(member.left, {
62
+ oppositeComplete: context.rightComplete,
63
+ oppositeUndecodedNames: undecoded.right,
64
+ opposite: "right",
65
+ inventory: "method",
66
+ });
62
67
  return {
63
68
  item_id: `mmc_method_${sha256({ token: member.left.token, side: "left" })}`,
64
- status: absenceObserved ? "removed" : "unknown",
69
+ status: limitations.length === 0 ? "removed" : "unknown",
65
70
  left: methodIdentity(member.left),
66
71
  right: null,
67
72
  match: unmatchedComparison(),
68
73
  dimensions: ["availability"],
69
74
  evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
70
- limitations: absenceObserved
71
- ? []
72
- : [
73
- "unknown-within-incomplete-metadata: The right method inventory is incomplete, so absence was not observed.",
74
- ],
75
+ limitations,
75
76
  };
76
77
  }
77
- const absenceObserved = context.leftComplete;
78
+ const limitations = absenceLimitations(member.right, {
79
+ oppositeComplete: context.leftComplete,
80
+ oppositeUndecodedNames: undecoded.left,
81
+ opposite: "left",
82
+ inventory: "method",
83
+ });
78
84
  return {
79
85
  item_id: `mmc_method_${sha256({ token: member.right.token, side: "right" })}`,
80
- status: absenceObserved ? "added" : "unknown",
86
+ status: limitations.length === 0 ? "added" : "unknown",
81
87
  left: null,
82
88
  right: methodIdentity(member.right),
83
89
  match: unmatchedComparison(),
84
90
  dimensions: ["availability"],
85
91
  evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
86
- limitations: absenceObserved
87
- ? []
88
- : [
89
- "unknown-within-incomplete-metadata: The left method inventory is incomplete, so absence was not observed.",
90
- ],
92
+ limitations,
91
93
  };
92
94
  };
93
- const fieldOnlyItem = (member, context) => {
95
+ /**
96
+ * Why a one-sided member's absence from the other inventory was not
97
+ * observed: that inventory is incomplete, the member's own signature was not
98
+ * decoded, so no shape round could seek a changed counterpart, or the other
99
+ * inventory has an unpaired (one-sided or ambiguous) same-named member whose
100
+ * signature was not decoded, which may be this member with a changed
101
+ * signature.
102
+ */
103
+ const absenceLimitations = (member, opposite) => [
104
+ ...(opposite.oppositeComplete
105
+ ? []
106
+ : [
107
+ `unknown-within-incomplete-metadata: The ${opposite.opposite} ${opposite.inventory} inventory is incomplete, so absence was not observed.`,
108
+ ]),
109
+ ...(member.signature.parse_status === "decoded"
110
+ ? []
111
+ : [
112
+ `signature-not-decoded: The member's ${member.signature.parse_status} signature was compared only by exact declared type, name, and raw bytes, so a changed or renamed counterpart could not be sought.`,
113
+ ]),
114
+ ...(member.signature.parse_status === "decoded" &&
115
+ opposite.oppositeUndecodedNames.has(declaredName(member))
116
+ ? [
117
+ `counterpart-signature-not-decoded: The ${opposite.opposite} ${opposite.inventory} inventory has an unpaired member with the same declared type and name whose signature was not decoded, so it may be this member with a changed signature.`,
118
+ ]
119
+ : []),
120
+ ];
121
+ const declaredName = (member) => JSON.stringify([member.declaring_type, member.name]);
122
+ /**
123
+ * Declared names of unpaired members whose signature was not decoded: one-sided
124
+ * members and candidates of ambiguous groups, which also remain unpaired.
125
+ */
126
+ const undecodedOneSidedNames = (members) => {
127
+ const names = (side) => new Set(side
128
+ .filter(({ item }) => item.signature.parse_status !== "decoded")
129
+ .map(({ item }) => declaredName(item)));
130
+ return {
131
+ left: names([
132
+ ...members.leftOnly,
133
+ ...members.ambiguous.flatMap(({ left }) => left),
134
+ ]),
135
+ right: names([
136
+ ...members.rightOnly,
137
+ ...members.ambiguous.flatMap(({ right }) => right),
138
+ ]),
139
+ };
140
+ };
141
+ const fieldOnlyItem = (member, context, undecoded) => {
94
142
  if (member.left !== undefined) {
95
- const absenceObserved = context.rightComplete;
143
+ const limitations = absenceLimitations(member.left, {
144
+ oppositeComplete: context.rightComplete,
145
+ oppositeUndecodedNames: undecoded.right,
146
+ opposite: "right",
147
+ inventory: "field",
148
+ });
96
149
  return {
97
150
  item_id: `mmc_field_${sha256({ token: member.left.token, side: "left" })}`,
98
- status: absenceObserved ? "removed" : "unknown",
151
+ status: limitations.length === 0 ? "removed" : "unknown",
99
152
  left: fieldIdentity(member.left),
100
153
  right: null,
101
154
  match: unmatchedComparison(),
102
155
  evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
103
- limitations: absenceObserved
104
- ? []
105
- : [
106
- "unknown-within-incomplete-metadata: The right field inventory is incomplete, so absence was not observed.",
107
- ],
156
+ limitations,
108
157
  };
109
158
  }
110
- const absenceObserved = context.leftComplete;
159
+ const limitations = absenceLimitations(member.right, {
160
+ oppositeComplete: context.leftComplete,
161
+ oppositeUndecodedNames: undecoded.left,
162
+ opposite: "left",
163
+ inventory: "field",
164
+ });
111
165
  return {
112
166
  item_id: `mmc_field_${sha256({ token: member.right.token, side: "right" })}`,
113
- status: absenceObserved ? "added" : "unknown",
167
+ status: limitations.length === 0 ? "added" : "unknown",
114
168
  left: null,
115
169
  right: fieldIdentity(member.right),
116
170
  match: unmatchedComparison(),
117
171
  evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
118
- limitations: absenceObserved
119
- ? []
120
- : [
121
- "unknown-within-incomplete-metadata: The left field inventory is incomplete, so absence was not observed.",
122
- ],
172
+ limitations,
123
173
  };
124
174
  };
175
+ /**
176
+ * Name the identity key an ambiguous group shares. The exact-signature key
177
+ * already includes the declared type and name, so names cannot separate it.
178
+ */
179
+ const ambiguityLimitation = (members, basis) => basis === "exact-signature"
180
+ ? `Multiple managed ${members} share the same declared type, name, and raw signature; REA did not guess a token remap.`
181
+ : members === "methods"
182
+ ? "Multiple managed methods share the same non-name identity key; REA did not guess a token remap."
183
+ : "Multiple managed fields share the same signature; REA did not guess a token remap from names.";
125
184
  export const buildMethodItems = (matches, context) => {
126
185
  const items = [];
127
186
  for (const pair of matches.pairs) {
@@ -178,15 +237,14 @@ export const buildMethodItems = (matches, context) => {
178
237
  },
179
238
  dimensions: ["availability"],
180
239
  evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
181
- limitations: [
182
- "Multiple managed methods share the same non-name identity key; REA did not guess a token remap.",
183
- ],
240
+ limitations: [ambiguityLimitation("methods", ambiguous.basis)],
184
241
  });
185
242
  }
243
+ const undecoded = undecodedOneSidedNames(matches);
186
244
  for (const item of matches.leftOnly)
187
- items.push(methodOnlyItem({ left: item.item }, context));
245
+ items.push(methodOnlyItem({ left: item.item }, context, undecoded));
188
246
  for (const item of matches.rightOnly)
189
- items.push(methodOnlyItem({ right: item.item }, context));
247
+ items.push(methodOnlyItem({ right: item.item }, context, undecoded));
190
248
  return items;
191
249
  };
192
250
  export const buildFieldItems = (matches, context) => {
@@ -231,13 +289,12 @@ export const buildFieldItems = (matches, context) => {
231
289
  candidate_right_tokens: ambiguous.right.map(({ item }) => item.token),
232
290
  },
233
291
  evidence_links: [context.leftEvidenceId, context.rightEvidenceId],
234
- limitations: [
235
- "Multiple managed fields share the same signature; REA did not guess a token remap from names.",
236
- ],
292
+ limitations: [ambiguityLimitation("fields", ambiguous.basis)],
237
293
  });
294
+ const undecoded = undecodedOneSidedNames(matches);
238
295
  for (const item of matches.leftOnly)
239
- items.push(fieldOnlyItem({ left: item.item }, context));
296
+ items.push(fieldOnlyItem({ left: item.item }, context, undecoded));
240
297
  for (const item of matches.rightOnly)
241
- items.push(fieldOnlyItem({ right: item.item }, context));
298
+ items.push(fieldOnlyItem({ right: item.item }, context, undecoded));
242
299
  return items;
243
300
  };
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import canonicalize from "canonicalize";
3
- import { parseEvidence } from "./evidence.js";
3
+ import { parseEvidence } from "../evidence.js";
4
4
  import { managedMemberInspectionSchema, } from "./managedArtifact.js";
5
5
  export const sha256 = (value) => {
6
6
  const serialized = canonicalize(value);
@@ -19,14 +19,13 @@ const keyMethod = (item) => ({
19
19
  item.body.normalized_il_sha256,
20
20
  ])
21
21
  : null,
22
- signatureKey: item.signature.parse_status === "decoded"
23
- ? stableKey([
24
- "method-signature",
25
- item.declaring_type,
26
- item.name,
27
- item.signature.raw_sha256,
28
- ])
29
- : null,
22
+ // The raw blob is the exact signature; decoding only feeds shape keys.
23
+ signatureKey: stableKey([
24
+ "method-signature",
25
+ item.declaring_type,
26
+ item.name,
27
+ item.signature.raw_sha256,
28
+ ]),
30
29
  structuralKey: item.signature.parse_status === "decoded" && item.body.status === "present"
31
30
  ? stableKey([
32
31
  "method-structural",
@@ -61,7 +60,14 @@ const keyField = (item) => ({
61
60
  exactKey: item.signature.parse_status === "decoded"
62
61
  ? stableKey(["field-exact", item.signature.raw_sha256])
63
62
  : null,
64
- signatureKey: null,
63
+ // Only an undecoded field reaches this round: a decoded field with the
64
+ // same raw signature already met its counterpart in the exact round.
65
+ signatureKey: stableKey([
66
+ "field-signature",
67
+ item.declaring_type,
68
+ item.name,
69
+ item.signature.raw_sha256,
70
+ ]),
65
71
  structuralKey: stableKey([
66
72
  "field-structural",
67
73
  item.signature.kind,
@@ -89,7 +95,12 @@ const matchFields = (left, right) => matchByKeys({
89
95
  left,
90
96
  right,
91
97
  exactBasis: "field-signature",
92
- fallbackBases: [],
98
+ fallbackBases: [
99
+ {
100
+ basis: "exact-signature",
101
+ key: ({ signatureKey }) => signatureKey,
102
+ },
103
+ ],
93
104
  });
94
105
  const matchByKeys = ({ left, right, exactBasis, fallbackBases, }) => {
95
106
  const usedLeft = new Set();
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import canonicalize from "canonicalize";
3
- import { parseEvidence } from "./evidence.js";
3
+ import { parseEvidence } from "../evidence.js";
4
4
  import { managedNativeBoundaryInspectionSchema, } from "./managedArtifact.js";
5
5
  import { managedNativeVerificationResultSchema, } from "./managedNativeVerificationSchemas.js";
6
6
  import { buildVerificationResult, collectNativeSymbols, verifyPinvoke, } from "./managedNativeVerificationMatch.js";
@@ -1,9 +1,9 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { basename } from "node:path";
3
3
  import canonicalize from "canonicalize";
4
- import { parseEvidence } from "./evidence.js";
5
- import { functionDossierSchema } from "./hopperValues.js";
6
- import { inspectMachoSchema } from "./nativeInspection.js";
4
+ import { parseEvidence } from "../evidence.js";
5
+ import { functionDossierSchema } from "../hopperValues.js";
6
+ import { inspectMachoSchema } from "../native/nativeInspection.js";
7
7
  import { pinvokeVerificationSchema, } from "./managedNativeVerificationSchemas.js";
8
8
  const digest = (value) => {
9
9
  const serialized = canonicalize(value);
@@ -1,9 +1,9 @@
1
1
  import { z } from "zod";
2
- import { emptyArraySchema } from "./emptyArraySchema.js";
3
- import { evidenceSchema } from "./evidence.js";
2
+ import { emptyArraySchema } from "../emptyArraySchema.js";
3
+ import { evidenceSchema } from "../evidence.js";
4
4
  import { cliMetadataGuidSchema } from "./managedArtifact.js";
5
- import { digestSchema } from "./../domain/digests.js";
6
- import { prefixedDigestSchema } from "./../domain/digests.js";
5
+ import { digestSchema } from "../digests.js";
6
+ import { prefixedDigestSchema } from "../digests.js";
7
7
  const evidenceIdSchema = prefixedDigestSchema("ev");
8
8
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
9
9
  const textSchema = z.string().min(1);
@@ -176,4 +176,5 @@ export const managedNativeVerificationResultSchema = z
176
176
  path: ["summary", "native_body_unresolved"],
177
177
  message: "Native body summary must match unresolved implementations",
178
178
  });
179
- });
179
+ })
180
+ .describe("Counts must agree across the result: native accepted plus unsupported equals total; each P/Invoke summary count equals the number of items with that status; and native_body_unresolved equals native_implementations.unresolved. REA checks these cross-field invariants after constructing the result.");
@@ -1,10 +1,10 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import canonicalize from "canonicalize";
3
3
  import { z } from "zod";
4
- import { evidenceSchema, parseEvidence } from "./evidence.js";
4
+ import { evidenceSchema, parseEvidence } from "../evidence.js";
5
5
  import { cliMetadataGuidSchema, managedMemberInspectionSchema, } from "./managedArtifact.js";
6
- import { digestSchema } from "./../domain/digests.js";
7
- import { prefixedDigestSchema } from "./../domain/digests.js";
6
+ import { digestSchema } from "../digests.js";
7
+ import { prefixedDigestSchema } from "../digests.js";
8
8
  const evidenceIdSchema = prefixedDigestSchema("ev");
9
9
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
10
10
  const textSchema = z.string().min(1);
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { functionDossierSchema } from "./hopperValues.js";
2
+ import { functionDossierSchema } from "../hopperValues.js";
3
3
  /** One explicit function's analyst-authored metadata changes. */
4
4
  export const nativeFunctionAnnotationsInputSchema = z
5
5
  .strictObject({
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { jsonValueSchema } from "./jsonValue.js";
2
+ import { jsonValueSchema } from "../jsonValue.js";
3
3
  const hexAddress = z.string().regex(/^0x[a-fA-F0-9]+$/u);
4
4
  const coverage = (item) => z.object({
5
5
  items: z.array(item),
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { nativeMetadataEvidenceSchema, nativeMetadataLocationSchema, } from "./objcSwiftMetadata.js";
3
- import { jsonValueSchema } from "./jsonValue.js";
3
+ import { jsonValueSchema } from "../jsonValue.js";
4
4
  /** Entity kinds shared by decoded Interface Builder archives and native code. */
5
5
  export const nativeInvestigationNodeKindSchema = z.enum([
6
6
  "storyboard",
@@ -154,14 +154,23 @@ export const traceNativeInvestigationGraph = (graph, input) => {
154
154
  let reachedDepth = 0;
155
155
  let truncated = false;
156
156
  let reason = null;
157
+ const adjacency = new Map();
158
+ for (const edge of graph.edges) {
159
+ const nodeId = direction === "forward" ? edge.from : edge.to;
160
+ if (nodeId === null)
161
+ continue;
162
+ const entries = adjacency.get(nodeId);
163
+ if (entries === undefined)
164
+ adjacency.set(nodeId, [edge]);
165
+ else
166
+ entries.push(edge);
167
+ }
157
168
  while (queue.length > 0) {
158
169
  const current = queue.shift();
159
170
  if (current === undefined)
160
171
  break;
161
172
  reachedDepth = Math.max(reachedDepth, current.depth);
162
- const adjacent = graph.edges.filter((edge) => direction === "forward"
163
- ? edge.from === current.id
164
- : edge.to === current.id);
173
+ const adjacent = adjacency.get(current.id) ?? [];
165
174
  for (const edge of adjacent) {
166
175
  if (selectedEdges.size + unresolved.size >= limits.max_edges) {
167
176
  truncated = true;
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { nativeMetadataRecoverySummarySchema } from "./nativeMetadataRecovery.js";
3
- import { jsonValueSchema } from "./jsonValue.js";
3
+ import { jsonValueSchema } from "../jsonValue.js";
4
4
  const integer = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
5
5
  const digest = z.string().regex(/^[a-f0-9]{64}$/u);
6
6
  const hexBytes = z.string().regex(/^(?:[a-f0-9]{2})*$/u);
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { z } from "zod";
3
- import { decodeCanonicalBase64 } from "./webScreenshot.js";
3
+ import { decodeCanonicalBase64 } from "../webScreenshot.js";
4
4
  const scope = {
5
5
  pid: z.number().int().positive(),
6
6
  window_id: z.number().int().positive(),
@@ -51,10 +51,24 @@ export const nativeUiScenarioInputSchema = z.strictObject({
51
51
  const nativeUiScreenshotSchema = z
52
52
  .strictObject({
53
53
  mime_type: z.literal("image/png"),
54
- base64: z.string().min(4),
55
- sha256: z.string().regex(/^[a-f0-9]{64}$/u),
56
- width: z.number().int().positive(),
57
- height: z.number().int().positive(),
54
+ base64: z
55
+ .string()
56
+ .min(4)
57
+ .describe("Canonical base64 encoding of PNG bytes; the decoded bytes must have a PNG signature and IHDR chunk."),
58
+ sha256: z
59
+ .string()
60
+ .regex(/^[a-f0-9]{64}$/u)
61
+ .describe("SHA-256 digest of the decoded PNG bytes."),
62
+ width: z
63
+ .number()
64
+ .int()
65
+ .positive()
66
+ .describe("Must equal the width encoded in the PNG IHDR chunk."),
67
+ height: z
68
+ .number()
69
+ .int()
70
+ .positive()
71
+ .describe("Must equal the height encoded in the PNG IHDR chunk."),
58
72
  })
59
73
  .superRefine((screenshot, context) => {
60
74
  const bytes = decodeCanonicalBase64(screenshot.base64);
@@ -101,7 +115,7 @@ export const nativeUiSnapshotSchema = z.strictObject({
101
115
  title: z.string().nullable(),
102
116
  value: z.string().nullable(),
103
117
  actions: z.array(z.string()),
104
- children_count: z.number().int().nonnegative(),
118
+ children_count: z.number().int().nonnegative().nullable(),
105
119
  })),
106
120
  truncated: z.boolean(),
107
121
  screenshot: nativeUiScreenshotSchema.nullable(),
@@ -133,6 +133,22 @@ export const objcDispatchImplementationSchema = z.strictObject({
133
133
  selector: z.string().min(1),
134
134
  method_type: z.enum(["instance", "class"]),
135
135
  implementation_address: z.string().nullable(),
136
+ /** Category that adds this method, when it is not defined by the class itself. */
137
+ category: z.string().nullable().optional(),
138
+ location: nativeMetadataLocationSchema,
139
+ decode: nativeMetadataDecodeSchema,
140
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1),
141
+ });
142
+ /** Objective-C category: methods, protocols and properties added to a class. */
143
+ export const objcCategorySchema = z.strictObject({
144
+ name: z.string().min(1),
145
+ /** Extended class; external classes come from the category's bind symbol. */
146
+ class_name: z.string().min(1).nullable(),
147
+ class_source: z.enum(["local", "external", "unresolved"]),
148
+ instance_methods: z.array(z.string()),
149
+ class_methods: z.array(z.string()),
150
+ protocols: z.array(z.string()),
151
+ properties: z.array(objcPropertySchema),
136
152
  location: nativeMetadataLocationSchema,
137
153
  decode: nativeMetadataDecodeSchema,
138
154
  evidence: z.array(nativeMetadataEvidenceSchema).min(1),
@@ -240,6 +256,7 @@ export const dbSaveResultSchema = z.strictObject({
240
256
  export const objcSwiftMetadataSchema = z.strictObject({
241
257
  objc_classes: z.array(objcClassSchema).default([]),
242
258
  objc_protocols: z.array(objcProtocolSchema).default([]),
259
+ objc_categories: z.array(objcCategorySchema).default([]),
243
260
  swift_decls: z.array(swiftDeclSchema).default([]),
244
261
  objc_ivars: z.array(objcIvarSchema).default([]),
245
262
  objc_protocol_records: z.array(objcProtocolRecordSchema).default([]),
@@ -165,13 +165,15 @@ const processCaptureShapeSchema = z.strictObject({
165
165
  }),
166
166
  });
167
167
  /** Exact serialized shape plus all process-capture semantic invariants. */
168
- export const processCaptureSchema = processCaptureShapeSchema.superRefine((capture, context) => {
168
+ export const processCaptureSchema = processCaptureShapeSchema
169
+ .superRefine((capture, context) => {
169
170
  for (const issue of collectProcessCaptureIssues(capture))
170
171
  context.addIssue({
171
172
  code: "custom",
172
173
  path: issue.path.split("."),
173
174
  message: issue.message,
174
175
  });
175
- });
176
+ })
177
+ .describe("The capture must preserve its canonical scenario, comparison, and normalization SHA-256 commitments; ordered capture timestamps and contiguous sequence numbers; before and final filesystem snapshots with truncation propagated; and exit-code consistency with deadline termination. When parsing older input without an event journal, REA supplies an empty journal; empty journals are valid. A non-empty journal must reference every captured observation exactly once with unique in-range references. These cross-field invariants are checked by REA after capture.");
176
178
  export { parseProcessCapture } from "./processCaptureParsing.js";
177
179
  export { compareProcessCaptures, comparisonStatusSchema, deriveProcessComparisonStatus, PROCESS_COMPARISON_DIMENSIONS, processCaptureComparisonSchema, } from "./processComparison.js";
@@ -3,10 +3,18 @@ import canonicalize from "canonicalize";
3
3
  import { z } from "zod";
4
4
  const positiveBudget = z.number().int().safe().positive();
5
5
  const timedEventBase = { at_ms: z.number().int().safe().nonnegative() };
6
+ const reservedRunIdEnvironmentName = "REA_PROCESS_RUN_ID";
6
7
  const environmentName = z
7
8
  .string()
8
- .regex(/^[^=\0]+$/u, "Environment names cannot contain '=' or NUL");
9
- const reservedEnvironment = new Set(["REA_PROCESS_RUN_ID"]);
9
+ .min(1, "Environment names must not be empty")
10
+ .regex(/^(?!REA_PROCESS_RUN_ID(?![\s\S]))[^=\0]+$/u, {
11
+ error: (issue) => issue.input === reservedRunIdEnvironmentName
12
+ ? `${reservedRunIdEnvironmentName} is reserved by the process adapter`
13
+ : "Environment names cannot contain '=' or NUL",
14
+ });
15
+ const childProcessString = z
16
+ .string()
17
+ .regex(/^[^\0]*$/u, "Values passed to operating-system APIs cannot contain NUL");
10
18
  export const normalizationSchema = z.object({
11
19
  paths: z.boolean(),
12
20
  pids: z.boolean(),
@@ -61,11 +69,13 @@ export const processComparisonContract = (scenario) => ({
61
69
  */
62
70
  export const processScenarioSchema = z
63
71
  .object({
64
- executable: z.string().min(1),
65
- arguments: z.array(z.string()).default([]),
66
- working_directory: z.string().default("."),
67
- environment: z.record(environmentName, z.string()).default({}),
68
- filesystem_observation_paths: z.array(z.string().min(1)).default([]),
72
+ executable: childProcessString.min(1),
73
+ arguments: z.array(childProcessString).default([]),
74
+ working_directory: childProcessString.default("."),
75
+ environment: z.record(environmentName, childProcessString).default({}),
76
+ filesystem_observation_paths: z
77
+ .array(childProcessString.min(1))
78
+ .default([]),
69
79
  terminal: z
70
80
  .object({
71
81
  columns: z.number().int().min(1).max(65_535).default(80),
@@ -147,16 +157,6 @@ export const processScenarioSchema = z
147
157
  });
148
158
  }
149
159
  }
150
- const explicit = new Set(Object.keys(scenario.environment));
151
- for (const name of explicit) {
152
- if (reservedEnvironment.has(name)) {
153
- context.addIssue({
154
- code: "custom",
155
- message: `${name} is reserved by the process adapter`,
156
- path: ["environment", name],
157
- });
158
- }
159
- }
160
160
  for (const event of scenario.events) {
161
161
  if (event.at_ms > scenario.timeout_ms) {
162
162
  context.addIssue({