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,13 +1,17 @@
1
1
  import { z } from "incur";
2
- import { jsonValueSchema } from "../domain/jsonValue.js";
3
- import { runCapabilityStatus, runProviderAnalysis, runProviderStatus, } from "../application/DirectAnalysis.js";
2
+ import { runCapabilityStatus, runProviderAnalysis, runProviderStatus, } from "../composition/directAnalysis.js";
4
3
  import { importReferenceSource } from "../application/ReferenceSourceImport.js";
5
4
  import { projectReferenceSourceImportError } from "../application/ReferenceSourceImportTypes.js";
6
5
  import { parseConfig } from "../config.js";
7
6
  import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
7
+ import { AnalysisInputError } from "../domain/analysisErrorCore.js";
8
+ import { projectInputIssues } from "../domain/inputIssueProjection.js";
9
+ import { safeParseJson } from "../domain/safeJson.js";
10
+ import { nativeUiScenarioInputSchema } from "../domain/native/nativeUiObservation.js";
8
11
  import { PRODUCT_IDENTITY } from "../identity.js";
9
12
  import { logCliCommand } from "../cliLogging.js";
10
13
  import { CLI_COMMANDS } from "../cliCommandNames.js";
14
+ import { swiftSymbolsSchema } from "../contracts/native/nativeToolContracts.js";
11
15
  import { isReferenceSourceImportCliFailure } from "./referenceSourceImportStatus.js";
12
16
  export const registerUtilityCommands = (cli, logger, environment = process.env) => {
13
17
  registerCapabilityCommands(cli, logger);
@@ -52,24 +56,45 @@ export const registerUtilityCommands = (cli, logger, environment = process.env)
52
56
  windowId: "window-id",
53
57
  maxNodes: "max-nodes",
54
58
  },
55
- run: ({ args, options }) => logCliCommand(logger, command, () => runProviderAnalysis(args.path, operation, {
56
- pid: options.pid,
57
- window_id: options.windowId,
58
- screenshot: options.screenshot,
59
- accessibility: options.accessibility,
60
- max_nodes: options.maxNodes,
61
- ...(operation === "capture_native_ui_scenario"
62
- ? {
63
- steps: options.steps === undefined
64
- ? []
65
- : jsonValueSchema.parse(JSON.parse(options.steps)),
66
- }
67
- : {}),
68
- }, logger)),
59
+ run: ({ args, options }) => logCliCommand(logger, command, async () => {
60
+ const parameters = {
61
+ pid: options.pid,
62
+ window_id: options.windowId,
63
+ screenshot: options.screenshot,
64
+ accessibility: options.accessibility,
65
+ max_nodes: options.maxNodes,
66
+ };
67
+ if (operation === "capture_native_ui_scenario") {
68
+ const decoded = options.steps === undefined
69
+ ? { ok: true, value: undefined }
70
+ : safeParseJson(options.steps);
71
+ if (!decoded.ok)
72
+ return invalidNativeUiScenarioInput(operation, [
73
+ { path: ["steps"], reason: "invalid_format", expected: "JSON" },
74
+ ]);
75
+ const parsed = nativeUiScenarioInputSchema.safeParse({
76
+ ...parameters,
77
+ steps: decoded.value,
78
+ });
79
+ if (!parsed.success)
80
+ return invalidNativeUiScenarioInput(operation, projectInputIssues(parsed.error.issues, {
81
+ ...parameters,
82
+ ...(options.steps === undefined
83
+ ? {}
84
+ : { steps: decoded.value }),
85
+ }));
86
+ return runProviderAnalysis(args.path, operation, parsed.data, logger);
87
+ }
88
+ return runProviderAnalysis(args.path, operation, parameters, logger);
89
+ }),
69
90
  });
70
91
  }
71
92
  registerReferenceSourceCommand(cli, logger, environment);
72
93
  };
94
+ const invalidNativeUiScenarioInput = (operation, issues) => ({
95
+ error: "Application workflow failed",
96
+ ...projectAnalysisError(new AnalysisInputError(operation, undefined, issues)),
97
+ });
73
98
  const registerCapabilityCommands = (cli, logger) => {
74
99
  for (const command of [
75
100
  CLI_COMMANDS.capabilities,
@@ -103,20 +128,19 @@ const registerNativeCommands = (cli, logger) => {
103
128
  options: z.object({
104
129
  relativePath: z
105
130
  .string()
106
- .default("Contents/Info.plist")
107
- .describe("Plist path relative to the app root"),
131
+ .optional()
132
+ .describe("Plist path relative to the app root (default: Contents/Info.plist)"),
108
133
  }),
109
134
  alias: { relativePath: "relative-path" },
110
- run: ({ args, options }) => logCliCommand(logger, "inspect-plist", () => runProviderAnalysis(args.path, "inspect_plist", { relative_path: options.relativePath }, logger)),
135
+ run: ({ args, options }) => logCliCommand(logger, "inspect-plist", () => runProviderAnalysis(args.path, "inspect_plist", options.relativePath === undefined
136
+ ? {}
137
+ : { path: options.relativePath }, logger)),
111
138
  });
112
139
  cli.command(CLI_COMMANDS.demangleSwift, {
113
140
  description: "Demangle Swift symbols without Hopper",
114
141
  args: z.object({
115
142
  path: z.string().describe("Artifact path used for evidence identity"),
116
- symbols: z
117
- .array(z.string().min(1))
118
- .min(1)
119
- .describe("Swift mangled symbols to demangle"),
143
+ symbols: swiftSymbolsSchema.describe("Swift mangled symbols to demangle"),
120
144
  }),
121
145
  run: ({ args }) => logCliCommand(logger, "demangle-swift", () => runProviderAnalysis(args.path, "demangle_swift", { symbols: args.symbols }, logger)),
122
146
  });
@@ -0,0 +1,56 @@
1
+ import { z } from "incur";
2
+ import { createWebModuleTraceService } from "../composition/webModules.js";
3
+ import { CLI_COMMANDS } from "../cliCommandNames.js";
4
+ import { logCliCommand } from "../cliLogging.js";
5
+ import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
6
+ import { withCommandCancellation } from "./commandCancellation.js";
7
+ /** Expose the same selected-context module trace through the CLI. */
8
+ export const registerWebModuleCommands = (cli, logger, environment) => {
9
+ const service = createWebModuleTraceService(environment);
10
+ cli.command(CLI_COMMANDS.traceWebModuleImports, {
11
+ description: "Trace one captured script's native imports to URLs and captured source candidates",
12
+ args: z.object({
13
+ manifestPath: z
14
+ .string()
15
+ .describe("Absolute export_web_scripts manifest path"),
16
+ scriptIndex: z.coerce
17
+ .number()
18
+ .int()
19
+ .min(0)
20
+ .describe("Zero-based manifest script index"),
21
+ }),
22
+ options: z.object({
23
+ importerUrl: z
24
+ .string()
25
+ .optional()
26
+ .describe("Explicit HTTP(S) importer URL"),
27
+ importMapPath: z
28
+ .string()
29
+ .optional()
30
+ .describe("Absolute local import-map JSON"),
31
+ importMapBaseUrl: z
32
+ .string()
33
+ .optional()
34
+ .describe("HTTP(S) import-map base URL"),
35
+ }),
36
+ run: ({ args, options }) => withCommandCancellation((signal) => logCliCommand(logger, CLI_COMMANDS.traceWebModuleImports, async () => {
37
+ const result = await service.trace({
38
+ manifest_path: args.manifestPath,
39
+ script_index: args.scriptIndex,
40
+ ...(options.importerUrl === undefined
41
+ ? {}
42
+ : { importer_url: options.importerUrl }),
43
+ ...(options.importMapPath === undefined &&
44
+ options.importMapBaseUrl === undefined
45
+ ? {}
46
+ : {
47
+ import_map: {
48
+ path: options.importMapPath,
49
+ base_url: options.importMapBaseUrl,
50
+ },
51
+ }),
52
+ }, { signal });
53
+ return result.ok ? result.value : projectAnalysisError(result.error);
54
+ })),
55
+ });
56
+ };
@@ -0,0 +1,60 @@
1
+ import { Cli, z } from "incur";
2
+ import { createWebRuntimeService } from "../composition/webRuntime.js";
3
+ import { browserCliError } from "../cliBrowserContext.js";
4
+ import { browserScopeOptions, observationDuration, } from "../cliObservationOptions.js";
5
+ import { logCliCommand } from "../cliLogging.js";
6
+ import { CLI_COMMANDS } from "../cliCommandNames.js";
7
+ import { withCommandCancellation } from "./commandCancellation.js";
8
+ /** CLI progress exposes the actual armed point on stderr without corrupting JSON results. */
9
+ const runtimeProgress = {
10
+ report: async (update) => {
11
+ process.stderr.write(`${JSON.stringify({ rea_progress: update })}\n`);
12
+ },
13
+ };
14
+ /** Register public equivalents of the two modular website runtime tools. */
15
+ export const registerWebRuntimeCommands = (cli, logger) => {
16
+ cli.command(CLI_COMMANDS.observeWebExecution, {
17
+ description: "Observe precise page execution; resets counters and temporarily disables optimization",
18
+ args: z.object({
19
+ endpoint: z.string().describe("Existing loopback browser CDP endpoint"),
20
+ targetId: z
21
+ .string()
22
+ .describe("Selected page target ID from list-browser-targets"),
23
+ }),
24
+ options: z.object({
25
+ ...browserScopeOptions,
26
+ observationMs: observationDuration(10_000, 1),
27
+ }),
28
+ run: ({ args, options }) => logCliCommand(logger, "observe-web-execution", async () => {
29
+ const result = await withCommandCancellation((signal) => createWebRuntimeService().observe({
30
+ cdp_endpoint: args.endpoint,
31
+ target_id: args.targetId,
32
+ allowed_origins: options.allowedOrigins,
33
+ observation_ms: options.observationMs,
34
+ }, { progress: runtimeProgress, signal }));
35
+ return result.ok ? result.value : browserCliError(result.error);
36
+ }),
37
+ });
38
+ cli.command(CLI_COMMANDS.inspectWebEventListeners, {
39
+ description: "Inspect native listener source locations on the first main-document CSS match",
40
+ args: z.object({
41
+ endpoint: z.string().describe("Existing loopback browser CDP endpoint"),
42
+ targetId: z
43
+ .string()
44
+ .describe("Selected page target ID from list-browser-targets"),
45
+ selector: z
46
+ .string()
47
+ .describe("Native CSS selector; inspect the first main-document match"),
48
+ }),
49
+ options: z.object({ ...browserScopeOptions }),
50
+ run: ({ args, options }) => logCliCommand(logger, "inspect-web-event-listeners", async () => {
51
+ const result = await withCommandCancellation((signal) => createWebRuntimeService().inspect({
52
+ cdp_endpoint: args.endpoint,
53
+ target_id: args.targetId,
54
+ selector: args.selector,
55
+ allowed_origins: options.allowedOrigins,
56
+ }, { signal }));
57
+ return result.ok ? result.value : browserCliError(result.error);
58
+ }),
59
+ });
60
+ };
@@ -0,0 +1,31 @@
1
+ import { Cli, z } from "incur";
2
+ import { exportWebScripts } from "../application/WebScriptExportService.js";
3
+ import { CLI_COMMANDS } from "../cliCommandNames.js";
4
+ import { logCliCommand } from "../cliLogging.js";
5
+ import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
6
+ /** Register the local captured-script export CLI workflow. */
7
+ export const registerWebScriptCommands = (cli, logger) => {
8
+ cli.command(CLI_COMMANDS.exportWebScripts, {
9
+ description: "Export retained website scripts into an absent directory for static JavaScript analysis",
10
+ args: z.object({
11
+ capturePath: z
12
+ .string()
13
+ .describe("Absolute path to saved page or scenario capture JSON"),
14
+ outputDirectory: z
15
+ .string()
16
+ .describe("Absolute absent directory for verified scripts and manifest"),
17
+ }),
18
+ run: ({ args }) => logCliCommand(logger, CLI_COMMANDS.exportWebScripts, async () => {
19
+ const result = await exportWebScripts({
20
+ capture_path: args.capturePath,
21
+ output_directory: args.outputDirectory,
22
+ });
23
+ return result.ok
24
+ ? result.value
25
+ : {
26
+ error: "Script export failed",
27
+ ...projectAnalysisError(result.error),
28
+ };
29
+ }),
30
+ });
31
+ };
@@ -0,0 +1,42 @@
1
+ import { z } from "incur";
2
+ import { createWebSourceLocationService } from "../composition/webSourceLocations.js";
3
+ import { CLI_COMMANDS } from "../cliCommandNames.js";
4
+ import { logCliCommand } from "../cliLogging.js";
5
+ import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
6
+ import { withCommandCancellation } from "./commandCancellation.js";
7
+ /** Expose the same explicit selected map/point contract through the CLI. */
8
+ export const registerWebSourceLocationCommands = (cli, logger, environment) => {
9
+ const service = createWebSourceLocationService(environment);
10
+ cli.command(CLI_COMMANDS.traceWebSourceLocation, {
11
+ description: "Trace one retained script position through an explicitly selected local source map",
12
+ args: z.object({
13
+ manifestPath: z
14
+ .string()
15
+ .describe("Absolute export_web_scripts manifest path"),
16
+ scriptIndex: z.coerce
17
+ .number()
18
+ .int()
19
+ .min(0)
20
+ .describe("Zero-based manifest script index"),
21
+ sourceMapPath: z.string().describe("Absolute local source-map path"),
22
+ sourceMapUrl: z
23
+ .string()
24
+ .describe("Absolute source-map URL context; no fetch"),
25
+ line: z.coerce.number().int().min(1).describe("One-based generated line"),
26
+ column: z.coerce
27
+ .number()
28
+ .int()
29
+ .min(0)
30
+ .describe("Zero-based UTF-16 generated column"),
31
+ }),
32
+ run: ({ args }) => withCommandCancellation((signal) => logCliCommand(logger, CLI_COMMANDS.traceWebSourceLocation, async () => {
33
+ const result = await service.trace({
34
+ manifest_path: args.manifestPath,
35
+ script_index: args.scriptIndex,
36
+ source_map: { path: args.sourceMapPath, url: args.sourceMapUrl },
37
+ generated_position: { line: args.line, column: args.column },
38
+ }, { signal });
39
+ return result.ok ? result.value : projectAnalysisError(result.error);
40
+ })),
41
+ });
42
+ };
package/dist/cli.js CHANGED
@@ -11,6 +11,11 @@ import { registerAndroidCommands } from "./cli/androidCommands.js";
11
11
  import { registerEvidenceCommands } from "./cliEvidenceCommands.js";
12
12
  import { registerProcessCommands } from "./cli/processCommands.js";
13
13
  import { registerBrowserCommands } from "./cli/browserCommands.js";
14
+ import { registerWebScriptCommands } from "./cli/webScriptCommands.js";
15
+ import { registerWebModuleCommands } from "./cli/webModuleCommands.js";
16
+ import { registerWebSourceLocationCommands } from "./cli/webSourceLocationCommands.js";
17
+ import { registerWebRuntimeCommands } from "./cli/webRuntimeCommands.js";
18
+ import { registerJavaScriptRecoveryCommands } from "./cli/javascriptRecoveryCommands.js";
14
19
  import { registerAdvancedBrowserCommands } from "./cli/browserAdvancedCommands.js";
15
20
  import { registerBrowserScenarioCommands } from "./cliBrowserScenarioCommands.js";
16
21
  import { registerElectronCommands } from "./cli/electronCommands.js";
@@ -44,6 +49,11 @@ export const createCli = (environment = process.env) => {
44
49
  registerEvidenceCommands(cli, logger);
45
50
  registerProcessCommands(cli, logger, environment);
46
51
  registerBrowserCommands(cli, logger);
52
+ registerWebScriptCommands(cli, logger);
53
+ registerWebModuleCommands(cli, logger, environment);
54
+ registerWebSourceLocationCommands(cli, logger, environment);
55
+ registerWebRuntimeCommands(cli, logger);
56
+ registerJavaScriptRecoveryCommands(cli, logger, environment);
47
57
  registerAdvancedBrowserCommands(cli, logger);
48
58
  registerBrowserScenarioCommands(cli, logger);
49
59
  registerElectronCommands(cli, logger);
@@ -1,7 +1,9 @@
1
- import { CdpBrowserProvider } from "./browser/CdpBrowserProvider.js";
1
+ import { createBrowserObservationProvider } from "./composition/browserObservation.js";
2
2
  import { projectAnalysisError } from "./domain/analysisErrorProjection.js";
3
3
  /** Build the passive browser provider; scope is supplied on each request. */
4
- export const browserContext = () => ({ provider: new CdpBrowserProvider() });
4
+ export const browserContext = () => ({
5
+ provider: createBrowserObservationProvider(),
6
+ });
5
7
  /** Project a browser operation failure consistently across CLI command groups. */
6
8
  export const browserCliError = (error) => ({
7
9
  error: "Browser observation failed",
@@ -1,12 +1,13 @@
1
1
  import { Cli } from "incur";
2
2
  import { z } from "zod";
3
3
  import { captureBrowserScenario } from "./application/BrowserScenarioCaptureService.js";
4
- import { PlaywrightBrowserScenarioProvider } from "./browser/PlaywrightBrowserScenarioProvider.js";
4
+ import { createBrowserScenarioProvider } from "./composition/browserScenario.js";
5
5
  import { CLI_COMMANDS } from "./cliCommandNames.js";
6
6
  import { parseCliJsonInput } from "./cliJsonInput.js";
7
7
  import { logCliCommand } from "./cliLogging.js";
8
8
  import { AnalysisInputError } from "./domain/analysisErrorCore.js";
9
9
  import { projectAnalysisError } from "./domain/analysisErrorProjection.js";
10
+ import { projectInputIssues } from "./domain/inputIssueProjection.js";
10
11
  import { browserScenarioSchema } from "./domain/browserScenario.js";
11
12
  const OPERATION = "capture_browser_scenario";
12
13
  /** Register the one-shot controlled browser scenario command. */
@@ -24,8 +25,8 @@ export const registerBrowserScenarioCommands = (cli, logger) => {
24
25
  return input.error;
25
26
  const scenario = browserScenarioSchema.safeParse(input.value);
26
27
  if (!scenario.success)
27
- return cliError(new AnalysisInputError(OPERATION));
28
- const result = await captureBrowserScenario(new PlaywrightBrowserScenarioProvider(), scenario.data);
28
+ return cliError(new AnalysisInputError(OPERATION, { cause: scenario.error }, projectInputIssues(scenario.error.issues, input.value)));
29
+ const result = await captureBrowserScenario(createBrowserScenarioProvider(), scenario.data);
29
30
  return result.ok ? result.value : cliError(result.error);
30
31
  }),
31
32
  });
@@ -1,5 +1,9 @@
1
1
  /** Canonical names used by every one-shot CLI command registration. */
2
2
  export const CLI_COMMANDS = Object.freeze({
3
+ observeWebExecution: "observe-web-execution",
4
+ inspectWebEventListeners: "inspect-web-event-listeners",
5
+ traceWebSourceLocation: "trace-web-source-location",
6
+ traceWebModuleImports: "trace-web-module-imports",
3
7
  analyze: "analyze",
4
8
  inspect: "inspect",
5
9
  decompile: "decompile",
@@ -60,6 +64,8 @@ export const CLI_COMMANDS = Object.freeze({
60
64
  listBrowserTargets: "list-browser-targets",
61
65
  inspectWebPage: "inspect-web-page",
62
66
  analyzeWebBundle: "analyze-web-bundle",
67
+ exportWebScripts: "export-web-scripts",
68
+ recoverJavaScriptSources: "recover-javascript-sources",
63
69
  observeWebSession: "observe-web-session",
64
70
  discoverWebMcpTools: "discover-webmcp-tools",
65
71
  compareWebCaptures: "compare-web-captures",
@@ -80,6 +86,8 @@ export const CLI_COMMANDS = Object.freeze({
80
86
  compareJavaScriptExportShapes: "compare-javascript-export-shapes",
81
87
  buildReconstructionObligationLedger: "build-reconstruction-obligation-ledger",
82
88
  evaluateReconstructionCoverage: "evaluate-reconstruction-coverage",
89
+ projectAndroidApplicationGraph: "project-android-application-graph",
90
+ projectAppleApplicationGraph: "project-apple-application-graph",
83
91
  });
84
92
  /** Ordered primary CLI inventory; aliases are intentionally excluded. */
85
93
  export const CLI_COMMAND_NAMES = Object.freeze(Object.values(CLI_COMMANDS));
@@ -1,9 +1,9 @@
1
1
  import { Cli, z } from "incur";
2
- import { listJavaScriptRuntimeTargets, observeJavaScriptRuntime, } from "./application/JavaScriptRuntimeObservationService.js";
3
- import { V8InspectorProvider } from "./browser/V8InspectorProvider.js";
2
+ import { listJavaScriptRuntimeTargets, observeJavaScriptRuntime, } from "./application/javascript/JavaScriptRuntimeObservationService.js";
3
+ import { createJavaScriptRuntimeObservationProvider } from "./composition/javascriptRuntimeObservation.js";
4
4
  import { CLI_COMMANDS } from "./cliCommandNames.js";
5
5
  import { logCliCommand } from "./cliLogging.js";
6
- import { javascriptRuntimeKindSchema, listJavaScriptRuntimeTargetsInputSchema, observeJavaScriptRuntimeInputSchema, } from "./domain/javascriptRuntimeObservation.js";
6
+ import { javascriptRuntimeKindSchema, listJavaScriptRuntimeTargetsInputSchema, observeJavaScriptRuntimeInputSchema, } from "./domain/javascript/javascriptRuntimeObservation.js";
7
7
  import { AnalysisInputError } from "./domain/analysisErrorCore.js";
8
8
  import { projectAnalysisError } from "./domain/analysisErrorProjection.js";
9
9
  const observeOptionsSchema = z.object({
@@ -59,7 +59,9 @@ export const registerJavaScriptRuntimeObservationCommands = (cli, logger) => {
59
59
  }),
60
60
  });
61
61
  };
62
- const runtimeContext = () => ({ provider: new V8InspectorProvider() });
62
+ const runtimeContext = () => ({
63
+ provider: createJavaScriptRuntimeObservationProvider(),
64
+ });
63
65
  const inputError = (operation) => cliError(new AnalysisInputError(operation));
64
66
  const cliError = (error) => ({
65
67
  error: "JavaScript runtime observation failed",
@@ -7,8 +7,6 @@ export const parseCliJsonInput = async (value, operation) => {
7
7
  const inline = parseJson(value);
8
8
  if (inline !== undefined)
9
9
  return { ok: true, value: inline };
10
- if (["{", "["].includes(value.trimStart()[0] ?? ""))
11
- return { ok: false, error: inputError(operation) };
12
10
  try {
13
11
  // Read raw bytes so invalid UTF-8 is rejected by parseJson instead of
14
12
  // being silently replaced by lossy "utf8" decoding.
@@ -18,9 +16,18 @@ export const parseCliJsonInput = async (value, operation) => {
18
16
  : { ok: true, value: parsed };
19
17
  }
20
18
  catch (cause) {
19
+ if (["{", "["].includes(value.trimStart()[0] ?? "") &&
20
+ cannotBeAnExistingFile(cause) &&
21
+ !hasExplicitJsonFileExtension(value))
22
+ return { ok: false, error: inputError(operation) };
21
23
  return jsonFileError(value, operation, "read-failed", cause);
22
24
  }
23
25
  };
26
+ const cannotBeAnExistingFile = (cause) => typeof cause === "object" &&
27
+ cause !== null &&
28
+ "code" in cause &&
29
+ (cause.code === "ENOENT" || cause.code === "ENAMETOOLONG");
30
+ const hasExplicitJsonFileExtension = (value) => value.toLowerCase().endsWith(".json");
24
31
  const parseJson = (value) => {
25
32
  let text;
26
33
  if (typeof value === "string") {
package/dist/cliOutput.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { safeParseJson } from "./domain/safeJson.js";
2
2
  const SAFE_VALIDATION_MESSAGE = "REA could not read the command arguments. Run `rea --help`, correct the arguments, then try again.";
3
3
  const UNSUPPORTED_OUTPUT_COMBINATION_MESSAGE = "Token windows cannot preserve structured output. Remove --token-limit/--token-offset and use --filter-output or command pagination.";
4
+ const INCUR_OUTPUT_FORMATS = new Set(["toon", "json", "yaml", "md", "jsonl"]);
4
5
  const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
5
6
  const validationError = (value) => {
6
7
  if (value.code === "VALIDATION_ERROR")
@@ -9,41 +10,56 @@ const validationError = (value) => {
9
10
  return value.error.code === "VALIDATION_ERROR" ? value.error : undefined;
10
11
  return undefined;
11
12
  };
12
- /** Reject text-window controls that would corrupt a structured document. */
13
- export const validateCliOutputArguments = (arguments_) => {
13
+ const parseCliOutputArguments = (arguments_) => {
14
14
  let format = "toon";
15
+ let filterOutput = false;
15
16
  let tokenWindow = false;
16
17
  for (let index = 0; index < arguments_.length; index += 1) {
17
18
  const argument = arguments_[index];
18
- if (argument === "--")
19
- break;
19
+ // Incur scans builtins across `--` and accepts only spaced value forms.
20
+ // Mirror those effective values at the executable output boundary.
20
21
  if (argument === "--json") {
21
22
  format = "json";
22
23
  continue;
23
24
  }
24
25
  if (argument === "--format") {
25
26
  const value = arguments_[index + 1];
26
- if (value !== undefined) {
27
+ if (value) {
28
+ // Incur stops parsing at an invalid format before applying any later
29
+ // output controls. Let it report that malformed flag itself.
30
+ if (!INCUR_OUTPUT_FORMATS.has(value))
31
+ return { filterOutput, format, parseError: true, tokenWindow: false };
27
32
  format = value;
28
33
  index += 1;
29
34
  }
30
35
  continue;
31
36
  }
32
- if (argument?.startsWith("--format=")) {
33
- format = argument.slice("--format=".length);
37
+ if (argument === "--filter-output") {
38
+ if (arguments_[index + 1]) {
39
+ filterOutput = true;
40
+ index += 1;
41
+ }
34
42
  continue;
35
43
  }
36
44
  if (argument === "--token-limit" || argument === "--token-offset") {
37
- if (arguments_[index + 1] !== undefined) {
45
+ const value = arguments_[index + 1];
46
+ if (value) {
47
+ const numericValue = Number(value);
48
+ if (!Number.isFinite(numericValue) || value.trim() === "")
49
+ return { filterOutput, format, parseError: true, tokenWindow: false };
38
50
  tokenWindow = true;
39
51
  index += 1;
40
52
  }
41
53
  continue;
42
54
  }
43
- if (argument?.startsWith("--token-limit=") ||
44
- argument?.startsWith("--token-offset="))
45
- tokenWindow = true;
46
55
  }
56
+ return { filterOutput, format, parseError: false, tokenWindow };
57
+ };
58
+ /** Reject text-window controls that would corrupt a structured document. */
59
+ export const validateCliOutputArguments = (arguments_) => {
60
+ const { format, parseError, tokenWindow } = parseCliOutputArguments(arguments_);
61
+ if (parseError)
62
+ return { ok: true };
47
63
  if (tokenWindow &&
48
64
  (format === "json" || format === "jsonl" || format === "yaml"))
49
65
  return {
@@ -54,6 +70,16 @@ export const validateCliOutputArguments = (arguments_) => {
54
70
  };
55
71
  return { ok: true };
56
72
  };
73
+ /** Preserve a complete document when Incur filters the entire result away. */
74
+ export const renderEmptyFilteredCliOutput = (arguments_) => {
75
+ const { filterOutput, format, parseError } = parseCliOutputArguments(arguments_);
76
+ if (parseError)
77
+ return undefined;
78
+ if (filterOutput &&
79
+ (format === "json" || format === "jsonl" || format === "yaml"))
80
+ return "{}\n";
81
+ return undefined;
82
+ };
57
83
  /** Render one complete structured error before command execution. */
58
84
  export const renderCliOutputArgumentError = (error) => {
59
85
  const value = {
@@ -0,0 +1,3 @@
1
+ import { JadxProvider } from "../android/JadxProvider.js";
2
+ /** Construct one APK provider with its own queue and cleanup-failure state. */
3
+ export const createAndroidAnalysisProvider = (environment = process.env, launcher) => new JadxProvider(environment, launcher);
@@ -0,0 +1,30 @@
1
+ import { ARTIFACT_PROVIDER_IDENTITY, artifactCapabilities, } from "../artifacts/ArtifactProviderMetadata.js";
2
+ import { MANAGED_STATIC_PROVIDER_IDENTITY, managedStaticCapabilities, } from "../dotnet/ManagedStaticProviderMetadata.js";
3
+ import { NATIVE_MACOS_PROVIDER_IDENTITY, nativeMacOSCapabilities, } from "../native/NativeMacOSProviderMetadata.js";
4
+ /** Wire the three existing auxiliary AnalysisProvider implementations lazily. */
5
+ export const auxiliaryAnalysisProviderDeclarations = (platform = process.platform) => [
6
+ {
7
+ identity: ARTIFACT_PROVIDER_IDENTITY,
8
+ capabilities: artifactCapabilities(platform),
9
+ load: async () => {
10
+ const { ArtifactProvider } = await import("../artifacts/ArtifactProvider.js");
11
+ return new ArtifactProvider(platform);
12
+ },
13
+ },
14
+ {
15
+ identity: NATIVE_MACOS_PROVIDER_IDENTITY,
16
+ capabilities: nativeMacOSCapabilities(platform),
17
+ load: async () => {
18
+ const { NativeMacOSProvider } = await import("../native/NativeMacOSProvider.js");
19
+ return new NativeMacOSProvider(undefined, platform);
20
+ },
21
+ },
22
+ {
23
+ identity: MANAGED_STATIC_PROVIDER_IDENTITY,
24
+ capabilities: managedStaticCapabilities(),
25
+ load: async () => {
26
+ const { ManagedStaticProvider } = await import("../dotnet/ManagedStaticProvider.js");
27
+ return new ManagedStaticProvider();
28
+ },
29
+ },
30
+ ];
@@ -0,0 +1,25 @@
1
+ import { HopperProvider } from "../hopper/HopperProvider.js";
2
+ import { GhidraProvider } from "../ghidra/GhidraProvider.js";
3
+ import { IdaProvider } from "../ida/IdaProvider.js";
4
+ import { silentLogger } from "../logger.js";
5
+ import { auxiliaryAnalysisProviderDeclarations } from "./auxiliaryAnalysisProviders.js";
6
+ import { AnalysisProviderRegistry } from "../application/binary/AnalysisProviderRegistry.js";
7
+ import { composeBinarySession } from "../application/binary/BinarySessionComposition.js";
8
+ import { LazyAnalysisProvider } from "../application/binary/LazyAnalysisProvider.js";
9
+ import { ManagedStaticProvider } from "../dotnet/ManagedStaticProvider.js";
10
+ import { SessionProviderRouter } from "../application/binary/SessionProviderRouter.js";
11
+ /**
12
+ * Compose the target-switching runtime shared directly by CLI and MCP adapters.
13
+ * This is the sole production wiring point, so both adapters share identical
14
+ * provider selection, profile, lifecycle, and Evidence semantics.
15
+ */
16
+ export const createBinarySession = (config, logger = silentLogger) => {
17
+ const hopper = new HopperProvider(config, logger);
18
+ const ghidra = new GhidraProvider(config, logger);
19
+ const ida = new IdaProvider(config);
20
+ return composeBinarySession(new AnalysisProviderRegistry([hopper, ghidra, ida], config.analysisProvider), auxiliaryAnalysisProviderDeclarations().map((declaration) => new LazyAnalysisProvider(declaration)));
21
+ };
22
+ /** Compose an execution-free managed session without native provider selection. */
23
+ export const createManagedBinarySession = () => composeBinarySession(SessionProviderRouter.selectable(new AnalysisProviderRegistry([]), [
24
+ new ManagedStaticProvider(),
25
+ ]));
@@ -0,0 +1,3 @@
1
+ import { CdpBrowserProvider } from "../browser/CdpBrowserProvider.js";
2
+ /** Construct a fresh provider without opening a target or acquiring an engine. */
3
+ export const createBrowserObservationProvider = () => new CdpBrowserProvider();
@@ -0,0 +1,3 @@
1
+ import { PlaywrightBrowserScenarioProvider } from "../browser/PlaywrightBrowserScenarioProvider.js";
2
+ /** Construct a fresh provider without opening a target or acquiring an engine. */
3
+ export const createBrowserScenarioProvider = () => new PlaywrightBrowserScenarioProvider();
@@ -0,0 +1,17 @@
1
+ import { runDirectAnalysis as executeDirectAnalysis, runProviderAnalysis as executeProviderAnalysis, runManagedProviderExecution as executeManagedProvider, } from "../application/DirectAnalysis.js";
2
+ import { runCapabilityStatus as executeCapabilityStatus, runProviderStatus as executeProviderStatus, } from "../application/DirectAnalysisStatus.js";
3
+ import { createBinarySession, createManagedBinarySession } from "./binary.js";
4
+ const dependencies = {
5
+ createBinarySession,
6
+ createManagedBinarySession,
7
+ };
8
+ /** Run one isolated binary operation through the production session factory. */
9
+ export const runDirectAnalysis = executeDirectAnalysis.bind(undefined, dependencies);
10
+ /** Run one isolated native, artifact or managed operation. */
11
+ export const runProviderAnalysis = executeProviderAnalysis.bind(undefined, dependencies);
12
+ /** Execute managed metadata without constructing native provider candidates. */
13
+ export const runManagedProviderExecution = executeManagedProvider.bind(undefined, dependencies);
14
+ /** Report production provider candidates without opening a target. */
15
+ export const runProviderStatus = executeProviderStatus.bind(undefined, dependencies);
16
+ /** Report production session operations without opening a target. */
17
+ export const runCapabilityStatus = executeCapabilityStatus.bind(undefined, dependencies);
@@ -0,0 +1,3 @@
1
+ import { CdpElectronProvider } from "../browser/CdpElectronProvider.js";
2
+ /** Construct a fresh provider without opening a target or acquiring an engine. */
3
+ export const createElectronObservationProvider = () => new CdpElectronProvider();
@@ -0,0 +1,3 @@
1
+ import { PlaywrightElectronActiveProvider } from "../browser/PlaywrightElectronActiveProvider.js";
2
+ /** Construct a fresh provider without opening a target or acquiring an engine. */
3
+ export const createElectronScenarioProvider = () => new PlaywrightElectronActiveProvider();