rea-agents 4.0.1 → 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 (740) hide show
  1. package/README.md +257 -96
  2. package/bridge/android/ReaJadxBridge.java +247 -0
  3. package/bridge/ghidra/ReaGhidraBridge.java +358 -15
  4. package/bridge/ghidra/ReaGhidraExtensions.java +113 -0
  5. package/bridge/ghidra/ReaGhidraPrepareCom.java +32 -0
  6. package/bridge/native/NativeUIChildren.swift +27 -0
  7. package/bridge/native/ReaNativeUI.swift +30 -16
  8. package/dist/android/AndroidTargetSnapshot.js +36 -0
  9. package/dist/android/JadxAnalysis.js +193 -0
  10. package/dist/android/JadxConfiguration.js +57 -0
  11. package/dist/android/JadxMcpTransport.js +172 -0
  12. package/dist/android/JadxProtocol.js +109 -0
  13. package/dist/android/JadxProvider.js +259 -0
  14. package/dist/android/JadxRelease.js +27 -0
  15. package/dist/android/JadxSession.js +111 -0
  16. package/dist/application/AnalysisContextQueries.js +2 -1
  17. package/dist/application/AppBundleExecutable.js +141 -0
  18. package/dist/application/ArtifactExtraction.js +7 -4
  19. package/dist/application/ArtifactGraphConstruction.js +10 -17
  20. package/dist/application/ArtifactInventory/classify.js +1 -1
  21. package/dist/application/ArtifactInventory/scanCanonical.js +9 -8
  22. package/dist/application/ArtifactInventory/scanReader.js +1 -1
  23. package/dist/application/ArtifactInventory.js +1 -1
  24. package/dist/application/BinaryTargetResolver.js +32 -68
  25. package/dist/application/BrowserObservationService.js +2 -1
  26. package/dist/application/BrowserScenarioCaptureService.js +2 -1
  27. package/dist/application/BrowserScenarioEvidence.js +2 -2
  28. package/dist/application/CallPathTracing.js +2 -1
  29. package/dist/application/CapabilityInventory.js +78 -2
  30. package/dist/application/ClientConfigPath.js +3 -1
  31. package/dist/application/ClientConfigurationDocument.js +83 -13
  32. package/dist/application/ClientRegistrationStatus.js +15 -9
  33. package/dist/application/DirectAnalysis.js +35 -21
  34. package/dist/application/DirectAnalysisStatus.js +7 -8
  35. package/dist/application/Doctor.js +48 -8
  36. package/dist/application/DoctorDiagnostics.js +9 -7
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/EnhancedLiteralTracing.js +2 -1
  39. package/dist/application/EnhancedToolTypes.js +2 -1
  40. package/dist/application/EnhancedTools.js +7 -5
  41. package/dist/application/EvidenceBundleCommands.js +3 -2
  42. package/dist/application/EvidenceBundleFiles.js +1 -1
  43. package/dist/application/EvidenceInputResolver.js +30 -0
  44. package/dist/application/FilesystemSnapshot.js +20 -5
  45. package/dist/application/FunctionAnalysisEvidence.js +32 -0
  46. package/dist/application/InventoryProjectionEvidence.js +2 -1
  47. package/dist/application/InvestigationProviders.js +6 -0
  48. package/dist/application/JsonFiles.js +1 -1
  49. package/dist/application/LinuxHopper.js +20 -6
  50. package/dist/application/MacHopper.js +20 -7
  51. package/dist/application/OptionalObservationProviders.js +3 -0
  52. package/dist/application/ProcessCaptureCapability.js +1 -1
  53. package/dist/application/ProcessCaptureError.js +1 -1
  54. package/dist/application/ProcessCaptureJournal.js +3 -1
  55. package/dist/application/ProcessCaptureLifecycle.js +8 -5
  56. package/dist/application/ProcessCli.js +14 -6
  57. package/dist/application/ProcessEvidence.js +2 -6
  58. package/dist/application/ProcessHarness.js +23 -11
  59. package/dist/application/ProcessNormalization.js +12 -5
  60. package/dist/application/ProcessSampling.js +3 -1
  61. package/dist/application/ReconstructionCoverageService.js +4 -7
  62. package/dist/application/ReconstructionObligationCandidates.js +5 -2
  63. package/dist/application/ReconstructionObligationLedgerService.js +2 -1
  64. package/dist/application/ReferenceSourceImport.js +2 -0
  65. package/dist/application/ReferenceSourceImportEntries.js +22 -3
  66. package/dist/application/ReferenceSourceImportPolicy.js +4 -2
  67. package/dist/application/ReferenceSourceImportTypes.js +5 -0
  68. package/dist/application/ReferenceSourceVcsAdapter.js +35 -4
  69. package/dist/application/Setup.js +11 -130
  70. package/dist/application/SetupClientConfiguration.js +36 -22
  71. package/dist/application/SetupHost.js +126 -0
  72. package/dist/application/SetupPlan.js +1 -1
  73. package/dist/application/SetupRegistrationEnvironment.js +1 -2
  74. package/dist/application/SetupSkill.js +9 -3
  75. package/dist/application/SetupTypes.js +17 -0
  76. package/dist/application/StoreFileLock.js +7 -2
  77. package/dist/application/SupportedClients.js +8 -0
  78. package/dist/application/Uninstall.js +32 -21
  79. package/dist/application/UpdateMaintenance.js +3 -3
  80. package/dist/application/UpdateRuntime.js +5 -2
  81. package/dist/application/ValidateSelectedWebScript.js +27 -0
  82. package/dist/application/WebModuleTraceService.js +209 -0
  83. package/dist/application/WebRuntimeService.js +73 -0
  84. package/dist/application/WebScriptExportService.js +115 -0
  85. package/dist/application/WebSourceLocationService.js +160 -0
  86. package/dist/application/WindowsCapabilities.js +7 -7
  87. package/dist/application/android/AndroidAnalysisService.js +37 -0
  88. package/dist/application/{AndroidApplicationService.js → android/AndroidApplicationService.js} +3 -3
  89. package/dist/application/{AppleApplicationService.js → apple/AppleApplicationService.js} +5 -5
  90. package/dist/application/{AnalysisClientCleanup.js → binary/AnalysisClientCleanup.js} +2 -2
  91. package/dist/application/{AnalysisProviderEvaluation.js → binary/AnalysisProviderEvaluation.js} +8 -6
  92. package/dist/application/{AnalysisProviderRegistry.js → binary/AnalysisProviderRegistry.js} +5 -4
  93. package/dist/application/{AnalysisSnapshotCache.js → binary/AnalysisSnapshotCache.js} +8 -7
  94. package/dist/application/{AnalysisSnapshotFiles.js → binary/AnalysisSnapshotFiles.js} +4 -4
  95. package/dist/application/{BinarySession.js → binary/BinarySession.js} +26 -11
  96. package/dist/application/{BinarySessionComposition.js → binary/BinarySessionComposition.js} +2 -1
  97. package/dist/application/{BinarySessionExecution.js → binary/BinarySessionExecution.js} +9 -4
  98. package/dist/application/{BinarySessionOpen.js → binary/BinarySessionOpen.js} +7 -6
  99. package/dist/application/{BinarySessionRecords.js → binary/BinarySessionRecords.js} +34 -40
  100. package/dist/application/{CompositeProvider.js → binary/CompositeProvider.js} +2 -2
  101. package/dist/application/{LazyAnalysisProvider.js → binary/LazyAnalysisProvider.js} +6 -4
  102. package/dist/application/{SessionProviderRouter.js → binary/SessionProviderRouter.js} +7 -4
  103. package/dist/application/firmware/FirmwareAnalysisPort.js +1 -0
  104. package/dist/application/firmware/FirmwareAnalysisService.js +35 -0
  105. package/dist/application/{EvidenceLedger.js → investigation/EvidenceLedger.js} +44 -6
  106. package/dist/application/investigation/InvestigationRecordPort.js +1 -0
  107. package/dist/application/investigation/InvestigationRecords.js +69 -0
  108. package/dist/application/{UnknownEvidence.js → investigation/UnknownEvidence.js} +1 -1
  109. package/dist/application/{ElectronActiveEvidence.js → javascript/ElectronActiveEvidence.js} +4 -4
  110. package/dist/application/javascript/ElectronActiveObservationPort.js +1 -0
  111. package/dist/application/{ElectronActiveObservationService.js → javascript/ElectronActiveObservationService.js} +3 -2
  112. package/dist/application/{ElectronBoundaryAnalysis.js → javascript/ElectronBoundaryAnalysis.js} +1 -1
  113. package/dist/application/{ElectronBoundaryGraphContext.js → javascript/ElectronBoundaryGraphContext.js} +1 -1
  114. package/dist/application/{ElectronEvidence.js → javascript/ElectronEvidence.js} +2 -2
  115. package/dist/application/javascript/ElectronObservationPort.js +1 -0
  116. package/dist/application/{ElectronObservationService.js → javascript/ElectronObservationService.js} +3 -2
  117. package/dist/application/{JavaScriptApplicationEvidence.js → javascript/JavaScriptApplicationEvidence.js} +3 -3
  118. package/dist/application/{JavaScriptApplicationEvidenceGraph.js → javascript/JavaScriptApplicationEvidenceGraph.js} +5 -5
  119. package/dist/application/javascript/JavaScriptApplicationService.js +99 -0
  120. package/dist/application/{JavaScriptApplicationWorkflowEvidence.js → javascript/JavaScriptApplicationWorkflowEvidence.js} +3 -3
  121. package/dist/application/{JavaScriptApplicationWorkflowService.js → javascript/JavaScriptApplicationWorkflowService.js} +12 -11
  122. package/dist/application/{JavaScriptArtifactAnalysis.js → javascript/JavaScriptArtifactAnalysis.js} +12 -26
  123. package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +1 -0
  124. package/dist/application/{JavaScriptArtifactGraphAccumulator.js → javascript/JavaScriptArtifactGraphAccumulator.js} +16 -2
  125. package/dist/application/{JavaScriptArtifactGraphBuilder.js → javascript/JavaScriptArtifactGraphBuilder.js} +2 -2
  126. package/dist/application/{JavaScriptArtifactGraphContext.js → javascript/JavaScriptArtifactGraphContext.js} +1 -1
  127. package/dist/application/{JavaScriptArtifactGraphDocuments.js → javascript/JavaScriptArtifactGraphDocuments.js} +1 -1
  128. package/dist/application/{JavaScriptArtifactGraphFindings.js → javascript/JavaScriptArtifactGraphFindings.js} +20 -7
  129. package/dist/application/{JavaScriptArtifactGraphStructure.js → javascript/JavaScriptArtifactGraphStructure.js} +1 -1
  130. package/dist/application/{JavaScriptArtifactPathResolution.js → javascript/JavaScriptArtifactPathResolution.js} +12 -14
  131. package/dist/application/{JavaScriptArtifactReconstruction.js → javascript/JavaScriptArtifactReconstruction.js} +4 -8
  132. package/dist/application/{JavaScriptJsonModules.js → javascript/JavaScriptJsonModules.js} +3 -2
  133. package/dist/application/{JavaScriptModuleRelationships.js → javascript/JavaScriptModuleRelationships.js} +5 -3
  134. package/dist/application/javascript/JavaScriptRecoveryPort.js +1 -0
  135. package/dist/application/javascript/JavaScriptRecoveryService.js +52 -0
  136. package/dist/application/{JavaScriptReturnShapeProjection.js → javascript/JavaScriptReturnShapeProjection.js} +3 -3
  137. package/dist/application/{JavaScriptRuntimeObservationEvidence.js → javascript/JavaScriptRuntimeObservationEvidence.js} +2 -2
  138. package/dist/application/javascript/JavaScriptRuntimeObservationPort.js +1 -0
  139. package/dist/application/{JavaScriptRuntimeObservationService.js → javascript/JavaScriptRuntimeObservationService.js} +3 -2
  140. package/dist/application/{JavaScriptRuntimeReconciliationEvidence.js → javascript/JavaScriptRuntimeReconciliationEvidence.js} +3 -3
  141. package/dist/application/{JavaScriptRuntimeReconciliationService.js → javascript/JavaScriptRuntimeReconciliationService.js} +6 -5
  142. package/dist/application/{JavaScriptSemanticGraphAsyncProjection.js → javascript/JavaScriptSemanticGraphAsyncProjection.js} +1 -1
  143. package/dist/application/{JavaScriptSemanticGraphBuilder.js → javascript/JavaScriptSemanticGraphBuilder.js} +5 -3
  144. package/dist/application/{JavaScriptSemanticGraphChildProcessProjection.js → javascript/JavaScriptSemanticGraphChildProcessProjection.js} +1 -1
  145. package/dist/application/{JavaScriptSemanticGraphConstruction.js → javascript/JavaScriptSemanticGraphConstruction.js} +3 -2
  146. package/dist/application/{JavaScriptSemanticGraphDataProjection.js → javascript/JavaScriptSemanticGraphDataProjection.js} +1 -1
  147. package/dist/application/{JavaScriptSemanticGraphFingerprintProjection.js → javascript/JavaScriptSemanticGraphFingerprintProjection.js} +1 -1
  148. package/dist/application/{JavaScriptSemanticGraphFlowProjection.js → javascript/JavaScriptSemanticGraphFlowProjection.js} +2 -2
  149. package/dist/application/{JavaScriptSemanticGraphObjectProjection.js → javascript/JavaScriptSemanticGraphObjectProjection.js} +1 -1
  150. package/dist/application/{JavaScriptSemanticGraphProjection.js → javascript/JavaScriptSemanticGraphProjection.js} +2 -2
  151. package/dist/application/{JavaScriptSemanticGraphResourceProjection.js → javascript/JavaScriptSemanticGraphResourceProjection.js} +1 -1
  152. package/dist/application/{JavaScriptSemanticTraceService.js → javascript/JavaScriptSemanticTraceService.js} +6 -5
  153. package/dist/application/{ManagedApplicationGraphService.js → managed/ManagedApplicationGraphService.js} +7 -6
  154. package/dist/application/{ManagedMemberComparisonService.js → managed/ManagedMemberComparisonService.js} +10 -8
  155. package/dist/application/{ManagedNativeVerificationService.js → managed/ManagedNativeVerificationService.js} +7 -6
  156. package/dist/application/{ManagedReconstructionService.js → managed/ManagedReconstructionService.js} +7 -6
  157. package/dist/application/{NativeApiInspection.js → native/NativeApiInspection.js} +1 -1
  158. package/dist/application/{NativeCallRoutes.js → native/NativeCallRoutes.js} +3 -3
  159. package/dist/application/{NativeDispatchMetadataInspection.js → native/NativeDispatchMetadataInspection.js} +4 -4
  160. package/dist/application/{NativeUiActionTrace.js → native/NativeUiActionTrace.js} +7 -6
  161. package/dist/application/{NativeValueTrace.js → native/NativeValueTrace.js} +6 -6
  162. package/dist/{application/ArtifactInventory/hash.js → artifacts/ArtifactHash.js} +4 -2
  163. package/dist/artifacts/ArtifactPaths.js +3 -3
  164. package/dist/artifacts/ArtifactProvider.js +10 -38
  165. package/dist/artifacts/ArtifactProviderMetadata.js +36 -0
  166. package/dist/artifacts/AsarArtifactReader.js +195 -23
  167. package/dist/artifacts/AsarEntryStream.js +76 -0
  168. package/dist/artifacts/DirectoryArtifactReader.js +43 -7
  169. package/dist/artifacts/NativeDmgArtifactReader.js +171 -12
  170. package/dist/artifacts/SafeOutputTree.js +26 -10
  171. package/dist/artifacts/ZipArtifactReader.js +1 -0
  172. package/dist/{application → artifacts/apple}/AppleAssetCatalogAnalysis.js +4 -4
  173. package/dist/{application → artifacts/apple}/InterfaceBuilderAnalysis.js +125 -51
  174. package/dist/artifacts/{KeyedArchiveReader.js → apple/KeyedArchiveReader.js} +21 -27
  175. package/dist/artifacts/{NibArchive.js → apple/NibArchive.js} +4 -2
  176. package/dist/artifacts/apple/NibViewHierarchy.js +150 -0
  177. package/dist/{application → artifacts/javascript}/JavaScriptArtifactFiles.js +30 -7
  178. package/dist/artifacts/javascript/JavaScriptArtifactReader.js +6 -0
  179. package/dist/artifacts/readStableArtifact.js +52 -0
  180. package/dist/browser/BrowserProcessStartup.js +3 -1
  181. package/dist/browser/BrowserScenarioSecrets.js +50 -8
  182. package/dist/browser/CdpAuthorizedMainFrame.js +5 -5
  183. package/dist/browser/CdpAuthorizedTarget.js +22 -0
  184. package/dist/browser/CdpBrowserProvider.js +8 -16
  185. package/dist/browser/CdpCaptureDocuments.js +36 -22
  186. package/dist/browser/CdpCaptureEventBodyShapes.js +3 -3
  187. package/dist/browser/CdpCaptureEventHandlers.js +32 -28
  188. package/dist/browser/CdpCaptureEventHelpers.js +6 -6
  189. package/dist/browser/CdpCaptureStorage.js +10 -8
  190. package/dist/browser/CdpCaptureStorageFingerprints.js +25 -23
  191. package/dist/browser/CdpCaptureValues.js +8 -4
  192. package/dist/browser/CdpCommandRejection.js +17 -0
  193. package/dist/browser/CdpConnection.js +59 -17
  194. package/dist/browser/CdpElectronInspection.js +13 -13
  195. package/dist/browser/CdpElectronProvider.js +7 -7
  196. package/dist/browser/CdpElectronScriptEvents.js +6 -6
  197. package/dist/browser/CdpElectronScripts.js +4 -4
  198. package/dist/browser/CdpElectronWorkers.js +4 -4
  199. package/dist/browser/CdpEndpoint.js +22 -10
  200. package/dist/browser/CdpObservationSession.js +20 -24
  201. package/dist/browser/CdpOptionalCommand.js +1 -1
  202. package/dist/browser/CdpPageCapture.js +6 -5
  203. package/dist/browser/CdpPageCaptureScripts.js +2 -2
  204. package/dist/browser/CdpPageCaptureWorkers.js +9 -9
  205. package/dist/browser/CdpSafeMetadata.js +101 -18
  206. package/dist/browser/CdpScreenshot.js +6 -6
  207. package/dist/browser/CdpTargetEvents.js +8 -0
  208. package/dist/browser/CdpTargetSession.js +10 -7
  209. package/dist/browser/CdpWebMcpDiscovery.js +23 -17
  210. package/dist/browser/ElectronFileScope.js +9 -3
  211. package/dist/browser/PlaywrightBrowserScenarioProvider.js +10 -7
  212. package/dist/browser/PlaywrightElectronActiveActions.js +1 -1
  213. package/dist/browser/PlaywrightElectronActiveProvider.js +9 -8
  214. package/dist/browser/PlaywrightExecutionBoundary.js +1 -1
  215. package/dist/browser/PlaywrightScenarioArtifacts.js +10 -5
  216. package/dist/browser/PlaywrightScenarioBrowser.js +3 -1
  217. package/dist/browser/PlaywrightScenarioEvents.js +65 -53
  218. package/dist/browser/PlaywrightScenarioSession.js +13 -3
  219. package/dist/browser/WebSourceMapFetcher.js +55 -58
  220. package/dist/browser/assets/LocalWebScriptArtifacts.js +87 -0
  221. package/dist/browser/assets/PageScriptCapture.js +32 -0
  222. package/dist/browser/assets/PublishWebScripts.js +74 -0
  223. package/dist/browser/assets/ScenarioScriptCapture.js +76 -0
  224. package/dist/browser/assets/ScriptCaptureAdapters.js +57 -0
  225. package/dist/browser/assets/WebArtifactReads.js +56 -0
  226. package/dist/browser/assets/WebSourceLocationArtifacts.js +40 -0
  227. package/dist/browser/execution/CdpEventListeners.js +79 -0
  228. package/dist/browser/execution/CdpExecutionCapture.js +135 -0
  229. package/dist/browser/execution/CdpExecutionCollection.js +57 -0
  230. package/dist/browser/execution/CdpExecutionWindow.js +100 -0
  231. package/dist/browser/execution/CdpListenerSelector.js +22 -0
  232. package/dist/browser/execution/CdpPreciseCoverage.js +48 -0
  233. package/dist/browser/execution/CdpRuntimeInitiator.js +18 -0
  234. package/dist/browser/execution/CdpRuntimeProtocol.js +106 -0
  235. package/dist/browser/execution/CdpRuntimeRequests.js +81 -0
  236. package/dist/browser/execution/CdpRuntimeSession.js +163 -0
  237. package/dist/browser/execution/CdpRuntimeSources.js +223 -0
  238. package/dist/browser/execution/CdpWebRuntimeProvider.js +51 -0
  239. package/dist/browser/modules/NativeModuleResolver.js +210 -0
  240. package/dist/browser/modules/WebModuleArtifacts.js +40 -0
  241. package/dist/browser/network/PlaywrightNetworkContent.js +71 -0
  242. package/dist/browser/network/PlaywrightScenarioNetwork.js +180 -0
  243. package/dist/browser/providerIdentities.js +24 -0
  244. package/dist/catalogIdentity.js +23 -15
  245. package/dist/cli/androidCommands.js +91 -0
  246. package/dist/{cliApplicationCommands.js → cli/applicationCommands.js} +49 -16
  247. package/dist/cli/artifactCommands.js +1 -1
  248. package/dist/{cliBrowserAdvancedCommands.js → cli/browserAdvancedCommands.js} +39 -24
  249. package/dist/{cliBrowserCommands.js → cli/browserCommands.js} +9 -9
  250. package/dist/cli/commandCancellation.js +24 -0
  251. package/dist/cli/coreAnalysisCommands.js +5 -400
  252. package/dist/cli/coreBinaryCommands.js +211 -0
  253. package/dist/cli/coreNativeCommands.js +293 -0
  254. package/dist/{cliElectronCommands.js → cli/electronCommands.js} +20 -24
  255. package/dist/cli/firmwareCommands.js +75 -0
  256. package/dist/{cliSetup.js → cli/interactiveSetup.js} +1 -1
  257. package/dist/cli/javascriptApplicationAnalysis.js +2 -2
  258. package/dist/cli/javascriptRecoveryCommands.js +45 -0
  259. package/dist/cli/managedCommands.js +5 -5
  260. package/dist/cli/managedProjectGraphCommand.js +2 -2
  261. package/dist/cli/options.js +7 -1
  262. package/dist/{cliProcessCommands.js → cli/processCommands.js} +3 -3
  263. package/dist/cli/referenceSourceImportStatus.js +15 -0
  264. package/dist/cli/setupCommands.js +4 -2
  265. package/dist/cli/utilityCommands.js +50 -25
  266. package/dist/cli/webModuleCommands.js +56 -0
  267. package/dist/cli/webRuntimeCommands.js +60 -0
  268. package/dist/cli/webScriptCommands.js +31 -0
  269. package/dist/cli/webSourceLocationCommands.js +42 -0
  270. package/dist/cli.js +20 -15
  271. package/dist/cliBrowserContext.js +5 -3
  272. package/dist/cliBrowserScenarioCommands.js +6 -4
  273. package/dist/cliCommandNames.js +19 -2
  274. package/dist/cliEvidenceCommands.js +2 -1
  275. package/dist/cliJavaScriptRuntimeCommands.js +8 -5
  276. package/dist/cliJsonInput.js +35 -13
  277. package/dist/cliLogging.js +2 -1
  278. package/dist/cliOutput.js +52 -27
  279. package/dist/composition/android.js +3 -0
  280. package/dist/composition/auxiliaryAnalysisProviders.js +30 -0
  281. package/dist/composition/binary.js +25 -0
  282. package/dist/composition/browserObservation.js +3 -0
  283. package/dist/composition/browserScenario.js +3 -0
  284. package/dist/composition/directAnalysis.js +17 -0
  285. package/dist/composition/electronObservation.js +3 -0
  286. package/dist/composition/electronScenario.js +3 -0
  287. package/dist/composition/firmware.js +3 -0
  288. package/dist/composition/javascriptRecovery.js +3 -0
  289. package/dist/composition/javascriptRuntimeObservation.js +3 -0
  290. package/dist/composition/optionalObservationProviders.js +49 -0
  291. package/dist/composition/webModules.js +5 -0
  292. package/dist/composition/webRuntime.js +4 -0
  293. package/dist/composition/webSourceLocations.js +5 -0
  294. package/dist/config/environment.js +11 -1
  295. package/dist/config/parseConfig.js +29 -4
  296. package/dist/config/parsers.js +1 -1
  297. package/dist/contracts/android/androidToolContracts.js +77 -0
  298. package/dist/contracts/applicationToolContracts.js +75 -13
  299. package/dist/contracts/artifactComparisonExample.js +7 -14
  300. package/dist/contracts/artifactToolContracts.js +2 -2
  301. package/dist/contracts/browserScenarioToolContracts.js +1 -1
  302. package/dist/contracts/enhancedInputs.js +1 -1
  303. package/dist/contracts/enhancedToolContracts.js +31 -0
  304. package/dist/contracts/errorSchemas.js +4 -2
  305. package/dist/contracts/evidenceInputContracts.js +13 -0
  306. package/dist/contracts/firmware/firmwareToolContracts.js +38 -0
  307. package/dist/contracts/{applicationWorkflowInputContracts.js → javascript/applicationWorkflowInputContracts.js} +18 -18
  308. package/dist/contracts/{electronToolContracts.js → javascript/electronToolContracts.js} +6 -6
  309. package/dist/contracts/{javascriptApplicationWorkflowExamples.js → javascript/javascriptApplicationWorkflowExamples.js} +3 -3
  310. package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +23 -0
  311. package/dist/contracts/{javascriptRuntimeObservationToolContracts.js → javascript/javascriptRuntimeObservationToolContracts.js} +3 -3
  312. package/dist/contracts/{javascriptRuntimeReconciliationExample.js → javascript/javascriptRuntimeReconciliationExample.js} +5 -5
  313. package/dist/contracts/{managedToolContracts.js → managed/managedToolContracts.js} +3 -3
  314. package/dist/contracts/{managedWorkflowExamples.js → managed/managedWorkflowExamples.js} +1 -1
  315. package/dist/contracts/{managedWorkflowToolContracts.js → managed/managedWorkflowToolContracts.js} +6 -6
  316. package/dist/contracts/mobileApplicationGraphExamples.js +105 -0
  317. package/dist/contracts/{nativeToolContracts.js → native/nativeToolContracts.js} +14 -7
  318. package/dist/contracts/officialToolContracts.js +66 -0
  319. package/dist/contracts/promptContracts.js +1 -1
  320. package/dist/contracts/sessionLifecycleInputs.js +4 -0
  321. package/dist/contracts/sessionToolContracts.js +43 -0
  322. package/dist/contracts/sessionToolSchemas.js +1 -1
  323. package/dist/contracts/toolContractExamples.js +5 -0
  324. package/dist/contracts/toolContractTypes.js +2 -0
  325. package/dist/contracts/toolContracts.js +18 -135
  326. package/dist/contracts/toolEffects.js +75 -0
  327. package/dist/contracts/toolOutputSchemaGroups.js +20 -16
  328. package/dist/contracts/toolOutputSchemaPrimitives.js +1 -0
  329. package/dist/contracts/webRuntimeToolContracts.js +43 -0
  330. package/dist/contracts/webScriptToolContracts.js +68 -0
  331. package/dist/doctorRuntime.js +5 -1
  332. package/dist/domain/analysisErrorBase.js +33 -0
  333. package/dist/domain/analysisErrorCore.js +62 -0
  334. package/dist/domain/analysisErrorPresentation.js +22 -2
  335. package/dist/domain/analysisErrorProjection.js +25 -3
  336. package/dist/domain/analysisSnapshot.js +1 -0
  337. package/dist/domain/android/androidAnalysis.js +141 -0
  338. package/dist/domain/{androidApplication.js → android/androidApplication.js} +7 -6
  339. package/dist/domain/apple/appleApplication.js +277 -0
  340. package/dist/domain/{appleAssetCatalog.js → apple/appleAssetCatalog.js} +2 -2
  341. package/dist/domain/apple/appleBundleAnatomy.js +236 -0
  342. package/dist/domain/{interfaceBuilderGraph.js → apple/interfaceBuilderGraph.js} +47 -312
  343. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +411 -0
  344. package/dist/domain/{keyedArchive.js → apple/keyedArchive.js} +10 -9
  345. package/dist/domain/apple/plistValue.js +35 -0
  346. package/dist/domain/artifactGraph.js +1 -0
  347. package/dist/domain/artifactInspection.js +19 -17
  348. package/dist/domain/artifactInventoryEvidence.js +32 -27
  349. package/dist/domain/artifactInventorySnapshot.js +1 -0
  350. package/dist/domain/artifactOperationError.js +20 -0
  351. package/dist/domain/artifactPathSyntax.js +26 -0
  352. package/dist/domain/browserNetworkEvidence.js +82 -0
  353. package/dist/domain/browserObservation.js +12 -4
  354. package/dist/domain/browserObservationError.js +25 -0
  355. package/dist/domain/browserObservationSchemas.js +2 -1
  356. package/dist/domain/browserScenario.js +1 -1
  357. package/dist/domain/browserScenarioCapture.js +23 -1
  358. package/dist/domain/browserScenarioCaptureValues.js +25 -0
  359. package/dist/domain/browserScenarioDiff.js +7 -4
  360. package/dist/domain/browserScenarioDiffEvidence.js +35 -1
  361. package/dist/domain/browserScenarioNormalization.js +6 -11
  362. package/dist/domain/browserScenarioValues.js +15 -2
  363. package/dist/domain/browserSession.js +2 -7
  364. package/dist/domain/bundleComparison.js +2 -1
  365. package/dist/domain/callPath.js +86 -38
  366. package/dist/domain/canonicalDigest.js +65 -0
  367. package/dist/domain/canonicalOrdering.js +11 -0
  368. package/dist/domain/changedBehavior.js +8 -7
  369. package/dist/domain/comparisonSemantics.js +2 -4
  370. package/dist/domain/comparisonStatus.js +39 -0
  371. package/dist/domain/configurationErrors.js +25 -0
  372. package/dist/domain/dosCom.js +8 -0
  373. package/dist/domain/evidence.js +3 -11
  374. package/dist/domain/evidenceBundle.js +98 -35
  375. package/dist/domain/evidenceErrors.js +30 -0
  376. package/dist/domain/firmware/firmwareAnalysis.js +121 -0
  377. package/dist/domain/functionComparison.js +4 -2
  378. package/dist/domain/functionComparisonDimensions.js +6 -4
  379. package/dist/domain/functionComparisonNormalization.js +13 -8
  380. package/dist/domain/functionComparisonResults.js +1 -4
  381. package/dist/domain/hopperErrors.js +78 -0
  382. package/dist/domain/hopperValues.js +4 -3
  383. package/dist/domain/inputIssueProjection.js +17 -2
  384. package/dist/domain/{electronActiveObservation.js → javascript/electronActiveObservation.js} +3 -1
  385. package/dist/domain/{electronObservation.js → javascript/electronObservation.js} +5 -11
  386. package/dist/domain/{electronStaticAnalysisBrowser.js → javascript/electronStaticAnalysisBrowser.js} +15 -24
  387. package/dist/domain/{electronStaticAnalysisIpc.js → javascript/electronStaticAnalysisIpc.js} +2 -2
  388. package/dist/domain/{electronStaticAnalysisNative.js → javascript/electronStaticAnalysisNative.js} +12 -12
  389. package/dist/domain/javascript/electronStaticAnalysisTypes.js +1 -0
  390. package/dist/domain/{electronStaticAnalysisValues.js → javascript/electronStaticAnalysisValues.js} +24 -4
  391. package/dist/domain/{javascriptApplicationAnalysis.js → javascript/javascriptApplicationAnalysis.js} +2 -2
  392. package/dist/domain/{javascriptApplicationChangeGraph.js → javascript/javascriptApplicationChangeGraph.js} +2 -2
  393. package/dist/domain/{javascriptApplicationEvidenceSchemas.js → javascript/javascriptApplicationEvidenceSchemas.js} +6 -4
  394. package/dist/domain/{javascriptApplicationGraph.js → javascript/javascriptApplicationGraph.js} +13 -22
  395. package/dist/domain/{javascriptApplicationGraphSchemas.js → javascript/javascriptApplicationGraphSchemas.js} +2 -2
  396. package/dist/domain/{javascriptApplicationVersionComparison.js → javascript/javascriptApplicationVersionComparison.js} +3 -11
  397. package/dist/domain/{javascriptApplicationVersionComparisonSchemas.js → javascript/javascriptApplicationVersionComparisonSchemas.js} +3 -3
  398. package/dist/domain/{javascriptApplicationVersionItems.js → javascript/javascriptApplicationVersionItems.js} +4 -4
  399. package/dist/domain/{javascriptApplicationVersionKeys.js → javascript/javascriptApplicationVersionKeys.js} +16 -9
  400. package/dist/domain/javascript/javascriptArtifactFiles.js +1 -0
  401. package/dist/domain/{javascriptAstFingerprint.js → javascript/javascriptAstFingerprint.js} +38 -22
  402. package/dist/domain/javascript/javascriptAstValues.js +23 -0
  403. package/dist/domain/{javascriptExportShapeComparison.js → javascript/javascriptExportShapeComparison.js} +1 -2
  404. package/dist/domain/{javascriptExportShapeComparisonSchemas.js → javascript/javascriptExportShapeComparisonSchemas.js} +2 -2
  405. package/dist/domain/{javascriptExportShapeSelection.js → javascript/javascriptExportShapeSelection.js} +1 -1
  406. package/dist/domain/{javascriptExportShapeVariants.js → javascript/javascriptExportShapeVariants.js} +7 -3
  407. package/dist/domain/{javascriptFeatureSeed.js → javascript/javascriptFeatureSeed.js} +32 -11
  408. package/dist/domain/{javascriptFeatureTrace.js → javascript/javascriptFeatureTrace.js} +9 -13
  409. package/dist/domain/{javascriptFeatureTraceSchemas.js → javascript/javascriptFeatureTraceSchemas.js} +32 -18
  410. package/dist/domain/{javascriptFeatureTraversal.js → javascript/javascriptFeatureTraversal.js} +7 -2
  411. package/dist/domain/{javascriptNativeHandoff.js → javascript/javascriptNativeHandoff.js} +2 -1
  412. package/dist/domain/javascript/javascriptRecovery.js +88 -0
  413. package/dist/domain/{javascriptRuntimeLoadState.js → javascript/javascriptRuntimeLoadState.js} +2 -2
  414. package/dist/domain/{javascriptRuntimeObservation.js → javascript/javascriptRuntimeObservation.js} +2 -2
  415. package/dist/domain/{javascriptRuntimeReconciliationActive.js → javascript/javascriptRuntimeReconciliationActive.js} +5 -12
  416. package/dist/domain/{javascriptRuntimeReconciliationGraph.js → javascript/javascriptRuntimeReconciliationGraph.js} +2 -2
  417. package/dist/domain/{javascriptRuntimeReconciliationMatching.js → javascript/javascriptRuntimeReconciliationMatching.js} +4 -3
  418. package/dist/domain/{javascriptRuntimeReconciliationParsing.js → javascript/javascriptRuntimeReconciliationParsing.js} +11 -17
  419. package/dist/domain/{javascriptRuntimeReconciliationResult.js → javascript/javascriptRuntimeReconciliationResult.js} +4 -4
  420. package/dist/domain/{javascriptRuntimeReconciliationSchemas.js → javascript/javascriptRuntimeReconciliationSchemas.js} +8 -5
  421. package/dist/domain/{javascriptRuntimeStaticCandidates.js → javascript/javascriptRuntimeStaticCandidates.js} +8 -4
  422. package/dist/domain/{javascriptSemanticAnalysis.js → javascript/javascriptSemanticAnalysis.js} +80 -17
  423. package/dist/domain/{javascriptSemanticAsyncEffects.js → javascript/javascriptSemanticAsyncEffects.js} +2 -1
  424. package/dist/domain/{javascriptSemanticCallResolution.js → javascript/javascriptSemanticCallResolution.js} +11 -5
  425. package/dist/domain/{javascriptSemanticCalls.js → javascript/javascriptSemanticCalls.js} +7 -4
  426. package/dist/domain/{javascriptSemanticChildProcesses.js → javascript/javascriptSemanticChildProcesses.js} +5 -2
  427. package/dist/domain/{javascriptSemanticDataEffectHelpers.js → javascript/javascriptSemanticDataEffectHelpers.js} +7 -6
  428. package/dist/domain/{javascriptSemanticDataEffects.js → javascript/javascriptSemanticDataEffects.js} +9 -6
  429. package/dist/domain/{javascriptSemanticFingerprints.js → javascript/javascriptSemanticFingerprints.js} +40 -16
  430. package/dist/domain/{javascriptSemanticGraph.js → javascript/javascriptSemanticGraph.js} +23 -28
  431. package/dist/domain/{javascriptSemanticGraphSchemas.js → javascript/javascriptSemanticGraphSchemas.js} +3 -3
  432. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +116 -0
  433. package/dist/domain/javascript/javascriptSemanticMutationValues.js +53 -0
  434. package/dist/domain/{javascriptSemanticObjects.js → javascript/javascriptSemanticObjects.js} +5 -5
  435. package/dist/domain/{javascriptSemanticPrimitives.js → javascript/javascriptSemanticPrimitives.js} +9 -2
  436. package/dist/domain/{javascriptSemanticProjection.js → javascript/javascriptSemanticProjection.js} +32 -44
  437. package/dist/domain/{javascriptSemanticPromises.js → javascript/javascriptSemanticPromises.js} +77 -21
  438. package/dist/domain/{javascriptSemanticProvenance.js → javascript/javascriptSemanticProvenance.js} +4 -1
  439. package/dist/domain/{javascriptSemanticQuery.js → javascript/javascriptSemanticQuery.js} +7 -8
  440. package/dist/domain/{javascriptSemanticQueryAssessment.js → javascript/javascriptSemanticQueryAssessment.js} +1 -2
  441. package/dist/domain/{javascriptSemanticQueryIdentity.js → javascript/javascriptSemanticQueryIdentity.js} +1 -2
  442. package/dist/domain/{javascriptSemanticQuerySchemas.js → javascript/javascriptSemanticQuerySchemas.js} +3 -3
  443. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +25 -0
  444. package/dist/domain/{javascriptSemanticResources.js → javascript/javascriptSemanticResources.js} +2 -1
  445. package/dist/domain/{javascriptSemanticReturns.js → javascript/javascriptSemanticReturns.js} +2 -1
  446. package/dist/domain/{javascriptSemanticTraceSchemas.js → javascript/javascriptSemanticTraceSchemas.js} +2 -2
  447. package/dist/domain/javascript/javascriptSemanticTraversal.js +55 -0
  448. package/dist/domain/javascript/javascriptSemanticValueTypes.js +1 -0
  449. package/dist/domain/{javascriptSemanticValues.js → javascript/javascriptSemanticValues.js} +118 -60
  450. package/dist/domain/{javascriptSourceParser.js → javascript/javascriptSourceParser.js} +4 -2
  451. package/dist/domain/{javascriptStaticAnalysis.js → javascript/javascriptStaticAnalysis.js} +8 -5
  452. package/dist/domain/{javascriptStaticAnalysisBundler.js → javascript/javascriptStaticAnalysisBundler.js} +15 -11
  453. package/dist/domain/{javascriptStaticAnalysisCalls.js → javascript/javascriptStaticAnalysisCalls.js} +16 -8
  454. package/dist/domain/{javascriptStaticAnalysisHelpers.js → javascript/javascriptStaticAnalysisHelpers.js} +261 -43
  455. package/dist/domain/{sourceToBundleComparison.js → javascript/sourceToBundleComparison.js} +6 -8
  456. package/dist/domain/{sourceToBundleComparisonSchemas.js → javascript/sourceToBundleComparisonSchemas.js} +4 -4
  457. package/dist/domain/{sourceToBundleSignals.js → javascript/sourceToBundleSignals.js} +7 -7
  458. package/dist/domain/jsonShape.js +6 -2
  459. package/dist/domain/{managedApplicationGraph.js → managed/managedApplicationGraph.js} +4 -4
  460. package/dist/domain/{managedApplicationGraphNodes.js → managed/managedApplicationGraphNodes.js} +1 -1
  461. package/dist/domain/{managedArtifact.js → managed/managedArtifact.js} +1 -1
  462. package/dist/domain/{managedMemberComparison.js → managed/managedMemberComparison.js} +5 -4
  463. package/dist/domain/{managedMemberComparisonCoverage.js → managed/managedMemberComparisonCoverage.js} +2 -1
  464. package/dist/domain/{managedMemberComparisonItems.js → managed/managedMemberComparisonItems.js} +99 -40
  465. package/dist/domain/{managedMemberComparisonMatch.js → managed/managedMemberComparisonMatch.js} +22 -11
  466. package/dist/domain/{managedNativeVerification.js → managed/managedNativeVerification.js} +1 -1
  467. package/dist/domain/{managedNativeVerificationMatch.js → managed/managedNativeVerificationMatch.js} +8 -6
  468. package/dist/domain/{managedNativeVerificationSchemas.js → managed/managedNativeVerificationSchemas.js} +6 -5
  469. package/dist/domain/{managedReconstruction.js → managed/managedReconstruction.js} +3 -3
  470. package/dist/domain/{nativeDataType.js → native/nativeDataType.js} +2 -0
  471. package/dist/domain/native/nativeFunctionAnnotations.js +43 -0
  472. package/dist/domain/{nativeInspection.js → native/nativeInspection.js} +1 -1
  473. package/dist/domain/{nativeInvestigationGraph.js → native/nativeInvestigationGraph.js} +13 -4
  474. package/dist/domain/native/nativeLoadImage.js +95 -0
  475. package/dist/domain/native/nativeMetadataRecovery.js +55 -0
  476. package/dist/domain/{nativeUiObservation.js → native/nativeUiObservation.js} +20 -6
  477. package/dist/domain/{objcSwiftMetadata.js → native/objcSwiftMetadata.js} +17 -0
  478. package/dist/domain/processCapture.js +4 -3
  479. package/dist/domain/processEvidenceProvider.js +11 -0
  480. package/dist/domain/processScenario.js +17 -17
  481. package/dist/domain/processTraceComparison.js +1 -1
  482. package/dist/domain/propertyListKeys.js +69 -0
  483. package/dist/domain/providerAdapterError.js +17 -0
  484. package/dist/domain/providerCleanupError.js +6 -3
  485. package/dist/domain/providerSelectionError.js +44 -0
  486. package/dist/domain/reconstructionCoverageEvaluation.js +46 -24
  487. package/dist/domain/reconstructionCoverageInput.js +7 -0
  488. package/dist/domain/reconstructionUnknowns.js +1 -1
  489. package/dist/domain/reconstructionVerification.js +22 -8
  490. package/dist/domain/referenceSourceClassification.js +5 -6
  491. package/dist/domain/referenceSourceGraph.js +9 -17
  492. package/dist/domain/referenceSourceImportParsing.js +38 -23
  493. package/dist/domain/runtimeIdentification.js +1 -1
  494. package/dist/domain/runtimeVersion.js +6 -7
  495. package/dist/domain/safeJson.js +13 -0
  496. package/dist/domain/sourceMapEnvelope.js +38 -0
  497. package/dist/domain/staticRuntimeCorrelation.js +9 -7
  498. package/dist/domain/unicodeCodePointOrder.js +11 -6
  499. package/dist/domain/unknownRegistryError.js +10 -0
  500. package/dist/domain/webBundleAnalyzerAst.js +23 -38
  501. package/dist/domain/webBundleAnalyzerInspection.js +29 -20
  502. package/dist/domain/webEventListeners.js +28 -0
  503. package/dist/domain/webExecution.js +74 -0
  504. package/dist/domain/webMcpDiscovery.js +1 -7
  505. package/dist/domain/webModuleImports.js +104 -0
  506. package/dist/domain/webModuleTrace.js +106 -0
  507. package/dist/domain/webRuntime.js +69 -0
  508. package/dist/domain/webScreenshot.js +1 -7
  509. package/dist/domain/webScriptArtifacts.js +39 -0
  510. package/dist/domain/webScriptExport.js +86 -0
  511. package/dist/domain/webScriptExportError.js +13 -0
  512. package/dist/domain/webScriptExportPlan.js +108 -0
  513. package/dist/domain/webSourceLocation.js +106 -0
  514. package/dist/domain/webSourcePosition.js +21 -0
  515. package/dist/dotnet/ManagedArtifactInspector.js +1 -1
  516. package/dist/dotnet/ManagedMemberInspector.js +1 -1
  517. package/dist/dotnet/ManagedMemberInspectorCore.js +34 -0
  518. package/dist/dotnet/ManagedMemberRows.js +6 -4
  519. package/dist/dotnet/ManagedMetadataHeaps.js +3 -2
  520. package/dist/dotnet/ManagedMetadataInventoryRows.js +4 -2
  521. package/dist/dotnet/ManagedMethodBodyReader.js +8 -1
  522. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +22 -16
  523. package/dist/dotnet/ManagedNativeBoundaryInspector.js +56 -50
  524. package/dist/dotnet/ManagedStaticProvider.js +6 -34
  525. package/dist/dotnet/ManagedStaticProviderMetadata.js +36 -0
  526. package/dist/evaluation/CodexAgentEval.js +2 -1
  527. package/dist/firmware/FirmwareCommand.js +163 -0
  528. package/dist/firmware/FirmwareFiles.js +190 -0
  529. package/dist/firmware/FirmwareProvider.js +264 -0
  530. package/dist/firmware/FirmwarePublication.js +84 -0
  531. package/dist/firmware/FirmwareRelease.js +32 -0
  532. package/dist/firmware/FirmwareReports.js +235 -0
  533. package/dist/firmware/FirmwareVersion.js +80 -0
  534. package/dist/generatedMcpToolCatalog.js +1 -1
  535. package/dist/generatedPackageMetadata.js +5 -5
  536. package/dist/ghidra/GhidraAnalysisProfile.js +37 -8
  537. package/dist/ghidra/GhidraClient.js +52 -6
  538. package/dist/ghidra/GhidraDiagnostics.js +3 -0
  539. package/dist/ghidra/GhidraDoctor.js +38 -14
  540. package/dist/ghidra/GhidraFunctionValues.js +14 -8
  541. package/dist/ghidra/GhidraInstallation.js +48 -38
  542. package/dist/ghidra/GhidraInstallationPolicy.js +140 -0
  543. package/dist/ghidra/GhidraInventoryValues.js +39 -2
  544. package/dist/ghidra/GhidraLauncher.js +102 -29
  545. package/dist/ghidra/GhidraLoadImageAttest.js +36 -0
  546. package/dist/ghidra/GhidraLoadImageValues.js +199 -0
  547. package/dist/ghidra/GhidraProvider.js +47 -149
  548. package/dist/ghidra/GhidraProviderCapabilities.js +58 -28
  549. package/dist/ghidra/GhidraProviderClient.js +209 -0
  550. package/dist/ghidra/GhidraRequestQueue.js +2 -2
  551. package/dist/ghidra/GhidraResponseBuffer.js +7 -1
  552. package/dist/ghidra/GhidraSessionError.js +31 -4
  553. package/dist/ghidra/GhidraSessionValues.js +10 -7
  554. package/dist/ghidra/GhidraTargetSnapshot.js +16 -2
  555. package/dist/ghidra/GhidraTransport.js +12 -0
  556. package/dist/ghidra/extensions/GhidraExtensionFailures.js +20 -0
  557. package/dist/ghidra/extensions/GhidraExtensions.js +170 -0
  558. package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +21 -0
  559. package/dist/ghidra/extensions/nativeaot/NativeAotReport.js +100 -0
  560. package/dist/hopper/BridgeLauncher.js +4 -2
  561. package/dist/hopper/HopperAnalysisProfile.js +7 -2
  562. package/dist/hopper/HopperCleanup.js +55 -9
  563. package/dist/hopper/HopperClient.js +14 -4
  564. package/dist/hopper/HopperProcessDiagnostic.js +1 -1
  565. package/dist/hopper/HopperProvider.js +8 -50
  566. package/dist/hopper/HopperProviderCapabilities.js +73 -0
  567. package/dist/hopper/HopperRequestQueue.js +7 -3
  568. package/dist/hopper/HopperResponseStream.js +7 -1
  569. package/dist/hopper/HopperSessionValues.js +1 -1
  570. package/dist/hopper/HopperSocketConnection.js +1 -1
  571. package/dist/hopper/HopperTargetLease.js +23 -15
  572. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +7 -8
  573. package/dist/hopper/LinuxPrivateDisplayProbe.js +10 -6
  574. package/dist/hopper/protocol.js +8 -8
  575. package/dist/ida/IdaConfiguration.js +56 -0
  576. package/dist/ida/IdaDoctor.js +53 -0
  577. package/dist/ida/IdaInput.js +62 -0
  578. package/dist/ida/IdaMcpConnection.js +111 -0
  579. package/dist/ida/IdaOperationRunner.js +299 -0
  580. package/dist/ida/IdaProtocolValues.js +178 -0
  581. package/dist/ida/IdaProvider.js +126 -0
  582. package/dist/ida/IdaProviderCapabilities.js +52 -0
  583. package/dist/ida/IdaSessionClient.js +318 -0
  584. package/dist/ida/IdaWorkspace.js +54 -0
  585. package/dist/{browser → inspector}/JavaScriptRuntimeScope.js +19 -6
  586. package/dist/{browser → inspector}/V8InspectorCaptureProjection.js +46 -8
  587. package/dist/{browser → inspector}/V8InspectorEndpoint.js +3 -2
  588. package/dist/{browser → inspector}/V8InspectorProvider.js +16 -14
  589. package/dist/inspector/providerIdentity.js +6 -0
  590. package/dist/javascript/recovery/RecoveryFiles.js +122 -0
  591. package/dist/javascript/recovery/WakaruCommand.js +116 -0
  592. package/dist/javascript/recovery/WakaruExecution.js +100 -0
  593. package/dist/javascript/recovery/WakaruProvider.js +96 -0
  594. package/dist/javascript/recovery/WakaruPublication.js +102 -0
  595. package/dist/javascript/recovery/WakaruRelease.js +29 -0
  596. package/dist/javascript/recovery/WakaruReport.js +134 -0
  597. package/dist/javascript/sourceMaps/SourceMapCodecProcess.js +37 -0
  598. package/dist/javascript/sourceMaps/SourceMapCodecProtocol.js +20 -0
  599. package/dist/javascript/sourceMaps/SourceMapCommand.js +176 -0
  600. package/dist/javascript/sourceMaps/SourceMapDecoder.js +61 -0
  601. package/dist/javascript/sourceMaps/SourceMapFormat.js +185 -0
  602. package/dist/javascript/sourceMaps/TraceSourceMap.js +138 -0
  603. package/dist/main/shutdown.js +29 -3
  604. package/dist/main/startup.js +1 -1
  605. package/dist/main/transport.js +32 -11
  606. package/dist/main.js +9 -20
  607. package/dist/native/AppleDispatchCoverage.js +58 -0
  608. package/dist/native/AppleDispatchMetadata.js +73 -490
  609. package/dist/native/AppleMachoFixups.js +292 -0
  610. package/dist/native/AppleMachoSelection.js +188 -0
  611. package/dist/native/AppleObjcCategories.js +59 -0
  612. package/dist/native/AppleObjcDispatchFacets.js +257 -0
  613. package/dist/native/AppleObjcProperties.js +68 -0
  614. package/dist/native/AppleObjcProtocols.js +2 -1
  615. package/dist/native/AppleSwiftDispatchFacets.js +150 -0
  616. package/dist/native/NativeMacOSProvider.js +204 -72
  617. package/dist/native/NativeMacOSProviderMetadata.js +42 -0
  618. package/dist/native/NativeMachoInspection.js +87 -26
  619. package/dist/native/NativeUiHelperRuntime.js +14 -4
  620. package/dist/native/NativeUiObservation.js +14 -6
  621. package/dist/native/NativeUiOutputBudget.js +8 -0
  622. package/dist/native/parsers/codesign.js +40 -5
  623. package/dist/native/parsers/demangle.js +6 -2
  624. package/dist/native/parsers/dyldInfo.js +16 -7
  625. package/dist/native/parsers/echoedPath.js +14 -0
  626. package/dist/native/parsers/lipo.js +14 -0
  627. package/dist/native/parsers/otool.js +5 -2
  628. package/dist/native/parsers/plist.js +174 -11
  629. package/dist/process/ExecFileOutput.js +2 -0
  630. package/dist/process/PrivateRuntimeRoot.js +13 -3
  631. package/dist/process/ProcessOwnership.js +5 -73
  632. package/dist/process/ProcessOwnershipObservation.js +62 -2
  633. package/dist/process/ProcessOwnershipProcessTree.js +13 -0
  634. package/dist/process/ProviderProcess.js +62 -24
  635. package/dist/process/ProviderRunLineage.js +1 -1
  636. package/dist/process/WindowsAuthority.js +20 -1
  637. package/dist/reference/ReferenceSourceReaderEntries.js +11 -2
  638. package/dist/reference/ReferenceSourceReaderFile.js +1 -0
  639. package/dist/server/createServer.js +67 -2
  640. package/dist/server/mcpClientMetadata.js +6 -3
  641. package/dist/server/mcpProgress.js +2 -1
  642. package/dist/server/promptCompletion.js +3 -3
  643. package/dist/server/registerAndroidTools.js +30 -0
  644. package/dist/server/registerApplicationTools/compareExportShapes.js +7 -3
  645. package/dist/server/registerApplicationTools/compareSourceToBundle.js +9 -4
  646. package/dist/server/registerApplicationTools/compareVersions.js +7 -3
  647. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +43 -0
  648. package/dist/server/registerApplicationTools/traceFeature.js +8 -3
  649. package/dist/server/registerApplicationTools/traceSemantics.js +8 -3
  650. package/dist/server/registerApplicationTools.js +2 -0
  651. package/dist/server/registerBrowserScenarioTool.js +6 -2
  652. package/dist/server/registerBrowserTools.js +13 -2
  653. package/dist/server/registerCloseLifecycleTool.js +1 -1
  654. package/dist/server/registerElectronTools.js +21 -7
  655. package/dist/server/registerEnhancedTools.js +28 -1
  656. package/dist/server/registerFirmwareTools.js +22 -0
  657. package/dist/server/registerFunctionComparisonTool.js +1 -1
  658. package/dist/server/registerInvestigationTools/helpers.js +2 -1
  659. package/dist/server/registerJavaScriptRecoveryTool.js +17 -0
  660. package/dist/server/registerJavaScriptRuntimeObservationTools.js +9 -4
  661. package/dist/server/registerManagedTools.js +4 -4
  662. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +2 -2
  663. package/dist/server/registerManagedWorkflowTools/contract.js +1 -1
  664. package/dist/server/registerManagedWorkflowTools/evidence.js +1 -1
  665. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +1 -1
  666. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +1 -1
  667. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +2 -2
  668. package/dist/server/registerNativeTools.js +1 -1
  669. package/dist/server/registerOfficialTools.js +4 -1
  670. package/dist/server/registerProcessComparisonTool.js +5 -2
  671. package/dist/server/registerPrompts.js +5 -1
  672. package/dist/server/registerSessionTools.js +4 -2
  673. package/dist/server/registerWebModuleTool.js +17 -0
  674. package/dist/server/registerWebRuntimeTools.js +31 -0
  675. package/dist/server/registerWebScriptTool.js +18 -0
  676. package/dist/server/registerWebSourceLocationTool.js +17 -0
  677. package/dist/server/runDerivedOperation.js +1 -1
  678. package/dist/server/sessionAvailabilityPolicy.js +24 -9
  679. package/dist/server/sessionEvidence.js +1 -1
  680. package/dist/server/toolResult.js +2 -1
  681. package/dist/windows/WindowsNativeLoader.js +108 -0
  682. package/dist/windows/WindowsOwnedProcess.js +170 -0
  683. package/dist/windows/WindowsPrivateRuntime.js +137 -0
  684. package/install.sh +16 -8
  685. package/native/windows/README.md +107 -0
  686. package/native/windows/build/manifest.json +9 -0
  687. package/native/windows/build/rea-windows-x64.node +0 -0
  688. package/package.json +70 -35
  689. package/scripts/hopper-demo-x11.py +67 -8
  690. package/scripts/rea.mjs +10 -2
  691. package/scripts/verify-windows-native-artifact.mjs +39 -0
  692. package/skills/reverse-engineer-anything/SKILL.md +92 -24
  693. package/skills/reverse-engineer-anything/references/android-applications.md +31 -0
  694. package/skills/reverse-engineer-anything/references/javascript-applications.md +19 -2
  695. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +61 -4
  696. package/dist/application/JavaScriptApplicationService.js +0 -52
  697. package/dist/application/runtime.js +0 -51
  698. package/dist/browser/CdpCanonicalJsonDigest.js +0 -9
  699. package/dist/domain/appleApplication.js +0 -181
  700. package/dist/domain/errors.js +0 -324
  701. package/dist/domain/javascriptAstValues.js +0 -13
  702. package/dist/domain/javascriptSemanticTraversal.js +0 -30
  703. package/dist/native/NativeHostCapabilities.js +0 -23
  704. /package/dist/application/{BinarySessionPort.js → DirectAnalysisDependencies.js} +0 -0
  705. /package/dist/application/{ElectronActiveObservationPort.js → WebModulePorts.js} +0 -0
  706. /package/dist/application/{ElectronObservationPort.js → WebRuntimePort.js} +0 -0
  707. /package/dist/application/{JavaScriptArtifactAnalysisTypes.js → WebScriptArtifactPort.js} +0 -0
  708. /package/dist/application/{JavaScriptRuntimeObservationPort.js → WebSourceLocationPorts.js} +0 -0
  709. /package/dist/{domain/electronStaticAnalysisTypes.js → application/android/AndroidAnalysisPort.js} +0 -0
  710. /package/dist/application/{AbortablePromise.js → binary/AbortablePromise.js} +0 -0
  711. /package/dist/{domain/javascriptSemanticValueTypes.js → application/binary/BinarySessionPort.js} +0 -0
  712. /package/dist/application/{BinarySessionStatus.js → binary/BinarySessionStatus.js} +0 -0
  713. /package/dist/application/{ElectronBoundaryGraph.js → javascript/ElectronBoundaryGraph.js} +0 -0
  714. /package/dist/application/{ElectronBoundaryGraphIpc.js → javascript/ElectronBoundaryGraphIpc.js} +0 -0
  715. /package/dist/application/{ElectronBoundaryGraphNative.js → javascript/ElectronBoundaryGraphNative.js} +0 -0
  716. /package/dist/application/{ElectronBoundaryGraphWindows.js → javascript/ElectronBoundaryGraphWindows.js} +0 -0
  717. /package/dist/application/{JavaScriptArtifactGraphBundlers.js → javascript/JavaScriptArtifactGraphBundlers.js} +0 -0
  718. /package/dist/application/{JavaScriptArtifactGraphEvidence.js → javascript/JavaScriptArtifactGraphEvidence.js} +0 -0
  719. /package/dist/application/{JavaScriptArtifactReconstructionInput.js → javascript/JavaScriptArtifactReconstructionInput.js} +0 -0
  720. /package/dist/application/{JavaScriptSemanticGraphEvidence.js → javascript/JavaScriptSemanticGraphEvidence.js} +0 -0
  721. /package/dist/application/{JavaScriptSemanticGraphValueProjection.js → javascript/JavaScriptSemanticGraphValueProjection.js} +0 -0
  722. /package/dist/domain/{electronStaticAnalysis.js → javascript/electronStaticAnalysis.js} +0 -0
  723. /package/dist/domain/{javascriptExportShapeComparisonIdentity.js → javascript/javascriptExportShapeComparisonIdentity.js} +0 -0
  724. /package/dist/domain/{javascriptRuntimeReconciliation.js → javascript/javascriptRuntimeReconciliation.js} +0 -0
  725. /package/dist/domain/{javascriptRuntimeReconciliationRuntime.js → javascript/javascriptRuntimeReconciliationRuntime.js} +0 -0
  726. /package/dist/domain/{javascriptSemanticCoverage.js → javascript/javascriptSemanticCoverage.js} +0 -0
  727. /package/dist/domain/{javascriptSemanticDerivedAnalysis.js → javascript/javascriptSemanticDerivedAnalysis.js} +0 -0
  728. /package/dist/domain/{javascriptSemanticGraphSerialization.js → javascript/javascriptSemanticGraphSerialization.js} +0 -0
  729. /package/dist/domain/{javascriptSemanticIr.js → javascript/javascriptSemanticIr.js} +0 -0
  730. /package/dist/domain/{javascriptSemanticQueryRelations.js → javascript/javascriptSemanticQueryRelations.js} +0 -0
  731. /package/dist/domain/{javascriptSemanticState.js → javascript/javascriptSemanticState.js} +0 -0
  732. /package/dist/domain/{javascriptStaticAnalysisFindings.js → javascript/javascriptStaticAnalysisFindings.js} +0 -0
  733. /package/dist/domain/{javascriptStaticAnalysisState.js → javascript/javascriptStaticAnalysisState.js} +0 -0
  734. /package/dist/domain/{javascriptStaticAnalysisTypes.js → javascript/javascriptStaticAnalysisTypes.js} +0 -0
  735. /package/dist/domain/{managedApplicationGraphCoverage.js → managed/managedApplicationGraphCoverage.js} +0 -0
  736. /package/dist/domain/{managedApplicationGraphNodeCoverage.js → managed/managedApplicationGraphNodeCoverage.js} +0 -0
  737. /package/dist/domain/{nativeApiBoundary.js → native/nativeApiBoundary.js} +0 -0
  738. /package/dist/domain/{nativeInstruction.js → native/nativeInstruction.js} +0 -0
  739. /package/dist/domain/{nativeValueFlow.js → native/nativeValueFlow.js} +0 -0
  740. /package/dist/domain/{nativeValueTrace.js → native/nativeValueTrace.js} +0 -0
@@ -9,7 +9,10 @@ import { execFileOutput } from "../process/ExecFileOutput.js";
9
9
  const execFileAsync = promisify(execFile);
10
10
  const DOWNLOAD_PREFIX = "https://www.hopperapp.com:443/downloader/public/";
11
11
  const MAX_PACKAGE_BYTES = 100_000_000;
12
- const SUPPORTED_HOPPER_SHA256 = "0294ced141cc373468ee22d8343e7dac41980cb05a937994ca81c9f09afe7ded";
12
+ const SUPPORTED_HOPPER_SHA256 = new Set([
13
+ "0294ced141cc373468ee22d8343e7dac41980cb05a937994ca81c9f09afe7ded",
14
+ "1339f9e58377442b0c6fcb0dfc3cec20d593cc557408521fad9a00dbc6b8da13",
15
+ ]);
13
16
  const SUPPORTED_RELEASES = {
14
17
  deb: {
15
18
  filename: `${DOWNLOAD_PREFIX}Hopper-6.4.2-Linux-demo.deb`,
@@ -58,6 +61,7 @@ export const parseLinuxDistribution = (text) => {
58
61
  const packageFamily = packageFamilyFor(id, fields.get("ID_LIKE"));
59
62
  const supported = packageFamily !== undefined &&
60
63
  (id === "arch" ||
64
+ id === "cachyos" ||
61
65
  (id === "ubuntu" && versionAtLeast(versionId, 24)) ||
62
66
  (id === "fedora" && versionAtLeast(versionId, 41)));
63
67
  const identity = {
@@ -73,7 +77,9 @@ export const readLinuxDistribution = async () => {
73
77
  try {
74
78
  return parseLinuxDistribution(await readFile("/etc/os-release", "utf8"));
75
79
  }
76
- catch {
80
+ catch (cause) {
81
+ // best-effort cleanup: optional host probing; unknown distribution means unsupported.
82
+ void cause;
77
83
  return undefined;
78
84
  }
79
85
  };
@@ -143,7 +149,9 @@ const systemLinuxHopperInstallHost = () => ({
143
149
  ? "ready"
144
150
  : "unsupported_hopper_build";
145
151
  }
146
- catch {
152
+ catch (cause) {
153
+ // best-effort cleanup: optional launcher probing; unreadable means missing.
154
+ void cause;
147
155
  return "missing";
148
156
  }
149
157
  },
@@ -155,12 +163,16 @@ export const linuxHopperBinarySupported = async (path) => {
155
163
  const hash = createHash("sha256");
156
164
  for await (const chunk of createReadStream(path))
157
165
  hash.update(chunk);
158
- return hash.digest("hex") === SUPPORTED_HOPPER_SHA256;
166
+ return linuxHopperLauncherDigestSupported(hash.digest("hex"));
159
167
  }
160
- catch {
168
+ catch (cause) {
169
+ // best-effort cleanup: optional build probing; unreadable means unsupported.
170
+ void cause;
161
171
  return false;
162
172
  }
163
173
  };
174
+ /** Match a launcher extracted from one of the pinned official Linux packages. */
175
+ export const linuxHopperLauncherDigestSupported = (digest) => SUPPORTED_HOPPER_SHA256.has(digest);
164
176
  /** Interpret ldd output conservatively so a present but broken launcher is unhealthy. */
165
177
  export const linuxSharedLibrariesAvailable = (output) => !/(?:=>\s+not found|error while loading shared libraries)/iu.test(output);
166
178
  const installSystemPackage = async (family, archive) => {
@@ -169,7 +181,9 @@ const installSystemPackage = async (family, archive) => {
169
181
  await execFileAsync(command.executable, command.args);
170
182
  return true;
171
183
  }
172
- catch {
184
+ catch (cause) {
185
+ // Package-manager failure is reported by the false return.
186
+ void cause;
173
187
  return false;
174
188
  }
175
189
  };
@@ -63,7 +63,9 @@ export const installMacHopper = async (options = {}, host = systemMacHopperInsta
63
63
  await host.openApplication(destination);
64
64
  return { status: "installed", launcherPath };
65
65
  }
66
- catch {
66
+ catch (cause) {
67
+ // Install-stage failures share the download reason; the stage is cleaned below.
68
+ void cause;
67
69
  return { status: "failed", reason: "download" };
68
70
  }
69
71
  finally {
@@ -114,7 +116,9 @@ const systemMacHopperInstallHost = () => ({
114
116
  ])).stdout.trim();
115
117
  return identifier === BUNDLE_IDENTIFIER;
116
118
  }
117
- catch {
119
+ catch (cause) {
120
+ // best-effort cleanup: optional bundle probing; unreadable means invalid.
121
+ void cause;
118
122
  return false;
119
123
  }
120
124
  },
@@ -123,7 +127,9 @@ const systemMacHopperInstallHost = () => ({
123
127
  await access(path);
124
128
  return true;
125
129
  }
126
- catch {
130
+ catch (cause) {
131
+ // best-effort cleanup: optional existence probing; absence means missing.
132
+ void cause;
127
133
  return false;
128
134
  }
129
135
  },
@@ -142,14 +148,17 @@ const systemMacHopperInstallHost = () => ({
142
148
  await rm(previous, { recursive: true, force: true });
143
149
  return true;
144
150
  }
145
- catch {
151
+ catch (cause) {
152
+ // Install failure rolls back below; the false return reports it.
153
+ void cause;
146
154
  await rm(stage, { recursive: true, force: true });
147
155
  if (replaceExisting) {
148
156
  try {
149
157
  await rename(previous, destination);
150
158
  }
151
- catch {
159
+ catch (rollbackCause) {
152
160
  // The original destination was not moved, or rollback is impossible.
161
+ void rollbackCause;
153
162
  }
154
163
  }
155
164
  return false;
@@ -160,7 +169,9 @@ const systemMacHopperInstallHost = () => ({
160
169
  await access(path);
161
170
  return true;
162
171
  }
163
- catch {
172
+ catch (cause) {
173
+ // best-effort cleanup: optional launcher probing; absence means not ready.
174
+ void cause;
164
175
  return false;
165
176
  }
166
177
  },
@@ -190,7 +201,9 @@ const commandSucceeds = async (command, args) => {
190
201
  await execFileAsync(command, args);
191
202
  return true;
192
203
  }
193
- catch {
204
+ catch (cause) {
205
+ // best-effort cleanup: optional command probing; failure means unavailable.
206
+ void cause;
194
207
  return false;
195
208
  }
196
209
  };
@@ -0,0 +1,3 @@
1
+ import { AnalysisCapabilityUnavailableError } from "../domain/analysisErrorCore.js";
2
+ /** Preserve the module's failure reason through the existing tool error algebra. */
3
+ export const optionalProviderUnavailable = (failure, operation) => new AnalysisCapabilityUnavailableError(failure.providerId, operation, `Adapter could not load: ${failure.reason}`);
@@ -1,7 +1,7 @@
1
1
  import { tmpdir } from "node:os";
2
2
  /** Explain why process capture cannot claim owned-process cleanup on a host. */
3
3
  export const processCaptureOwnershipUnavailableReason = (platform) => platform === "win32"
4
- ? "Windows process-tree ownership and cleanup are unavailable; REA cannot verify that descendants have stopped."
4
+ ? "Windows PTY process capture is unavailable because this adapter does not yet verify descendant cleanup. Use Linux (including WSL for Linux commands) or macOS. Reinstalling the PTY backend does not enable native Windows capture."
5
5
  : undefined;
6
6
  /** Probe the native PTY seam and explain loader failures at their source. */
7
7
  export const processCaptureProbeFailureReason = (cause) => {
@@ -1,4 +1,4 @@
1
- import { AnalysisError } from "../domain/errors.js";
1
+ import { AnalysisError } from "../domain/analysisErrorBase.js";
2
2
  /** Typed application failure produced by controlled process capture. */
3
3
  export class ProcessCaptureError extends AnalysisError {
4
4
  _tag = "ProcessCaptureError";
@@ -33,7 +33,9 @@ export const scheduleScenarioInteractions = (options) => {
33
33
  else
34
34
  terminal.kill(event.signal);
35
35
  }
36
- catch {
36
+ catch (cause) {
37
+ // Terminal dispatch failures are recorded as failed outcomes.
38
+ void cause;
37
39
  outcome = "failed";
38
40
  }
39
41
  }
@@ -7,7 +7,8 @@ import { digestProcessCommitment, processComparisonContract, processScenarioComm
7
7
  import { PRODUCT_IDENTITY } from "../identity.js";
8
8
  import { snapshotRoots } from "./FilesystemSnapshot.js";
9
9
  import { classifyFilesystemEffects } from "./ProcessFilesystemEffects.js";
10
- import { cleanupOwnedProcessGroup, observeOwnedProcessGroup, } from "../process/ProcessOwnership.js";
10
+ import { cleanupOwnedProcessGroup } from "../process/ProcessOwnership.js";
11
+ import { observeOwnedProcessGroup } from "../process/ProcessOwnershipObservation.js";
11
12
  import { ProcessCaptureError } from "./ProcessCaptureError.js";
12
13
  import { assertNotCancelled } from "./ProcessScenarioRuntimeValidation.js";
13
14
  import { normalizeProcessElapsedTime, normalizeProcessSamples, normalizeProcessText, } from "./ProcessNormalization.js";
@@ -216,7 +217,8 @@ export const releaseProcessResources = async (options) => {
216
217
  try {
217
218
  await options.renderer?.dispose();
218
219
  }
219
- catch {
220
+ catch (cause) {
221
+ void cause;
220
222
  failure ??= "terminal renderer cleanup failed";
221
223
  }
222
224
  if (options.terminal !== undefined && host.platform !== "win32") {
@@ -233,7 +235,8 @@ export const releaseProcessResources = async (options) => {
233
235
  try {
234
236
  await host.removeTemporaryRoot(options.temporaryRoot);
235
237
  }
236
- catch {
238
+ catch (cause) {
239
+ void cause;
237
240
  failure ??= "temporary process root cleanup failed";
238
241
  }
239
242
  return failure;
@@ -277,9 +280,9 @@ export const resolveProcessResult = (capture, executionFailure, cleanupFailure)
277
280
  throw new ProcessCaptureError("process capture produced no result");
278
281
  return capture;
279
282
  };
280
- export const prepareProcessCapture = async (scenario, signal, host = systemProcessPreparationHost) => {
283
+ export const prepareProcessCapture = async (scenario, signal, captureSnapshot = snapshotRoots, host = systemProcessPreparationHost) => {
281
284
  assertNotCancelled(signal);
282
- const before = await snapshotRoots(scenario, signal);
285
+ const before = await captureSnapshot(scenario, signal);
283
286
  const temporaryRoot = await host.createTemporaryRoot();
284
287
  try {
285
288
  const runId = randomUUID();
@@ -1,5 +1,7 @@
1
1
  import { readFile } from "node:fs/promises";
2
- import { AnalysisError, AnalysisInputError, projectAnalysisError, } from "../domain/errors.js";
2
+ import { AnalysisError } from "../domain/analysisErrorBase.js";
3
+ import { AnalysisInputError } from "../domain/analysisErrorCore.js";
4
+ import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
3
5
  import { createEvidence, parseEvidence } from "../domain/evidence.js";
4
6
  import { jsonValueSchema } from "../domain/jsonValue.js";
5
7
  import { projectInputIssues } from "../domain/inputIssueProjection.js";
@@ -75,7 +77,7 @@ const parseCaptureEvidence = (input) => {
75
77
  try {
76
78
  evidence = parseEvidence(input);
77
79
  }
78
- catch {
80
+ catch (cause) {
79
81
  throw invalidCaptureEvidence();
80
82
  }
81
83
  if (evidence.operation !== "capture_process_scenario" ||
@@ -91,7 +93,7 @@ const parseCaptureEvidence = (input) => {
91
93
  locations: evidence.locations,
92
94
  };
93
95
  }
94
- catch {
96
+ catch (cause) {
95
97
  throw invalidCaptureEvidence();
96
98
  }
97
99
  };
@@ -107,14 +109,20 @@ const readJson = async (path) => {
107
109
  try {
108
110
  bytes = await readFile(path);
109
111
  }
110
- catch {
112
+ catch (cause) {
113
+ void cause;
111
114
  throw new ProcessCliFailure("invalid_input", "Process input file could not be read. Check that the path exists and is readable.");
112
115
  }
113
116
  try {
114
- const parsed = JSON.parse(bytes.toString("utf8"));
117
+ const text = new TextDecoder("utf-8", {
118
+ fatal: true,
119
+ ignoreBOM: true,
120
+ }).decode(bytes);
121
+ const parsed = JSON.parse(text);
115
122
  return parsed;
116
123
  }
117
- catch {
124
+ catch (cause) {
125
+ void cause;
118
126
  throw new ProcessCliFailure("invalid_input", "Process input file is not valid JSON. Repair the file, then try again.");
119
127
  }
120
128
  };
@@ -1,11 +1,7 @@
1
1
  import { createEvidence } from "../domain/evidence.js";
2
+ import { PROCESS_PROVIDER } from "../domain/processEvidenceProvider.js";
2
3
  import { jsonValueSchema } from "../domain/jsonValue.js";
3
- /** Provider identity for controlled process capture evidence. */
4
- export const PROCESS_PROVIDER = {
5
- id: "rea-process",
6
- name: "REA process capture",
7
- version: "3",
8
- };
4
+ export { PROCESS_PROVIDER } from "../domain/processEvidenceProvider.js";
9
5
  /** Project one process scenario into secret-free Evidence parameters. */
10
6
  const processEvidenceParameters = (scenario) => ({
11
7
  executable_name: scenario.executable.split("/").at(-1) ?? scenario.executable,
@@ -1,13 +1,14 @@
1
1
  import { parseProcessCapture } from "../domain/processCapture.js";
2
2
  import { err, ok } from "../domain/result.js";
3
- import { AnalysisCapabilityUnavailableError, } from "../domain/errors.js";
3
+ import { AnalysisCapabilityUnavailableError } from "../domain/analysisErrorCore.js";
4
+ import {} from "../domain/analysisErrorBase.js";
4
5
  import { ProcessCaptureError, processCaptureCancelled, } from "./ProcessCaptureError.js";
5
6
  export { ProcessCaptureError } from "./ProcessCaptureError.js";
6
7
  import { startProcessSampler } from "./ProcessSampling.js";
7
8
  import { snapshotRoots } from "./FilesystemSnapshot.js";
8
9
  import { TerminalRenderer } from "./TerminalRenderer.js";
9
10
  import { normalizeProcessText } from "./ProcessNormalization.js";
10
- import { selectCapturedProcessGroupIds } from "../process/ProcessOwnership.js";
11
+ import { selectCapturedProcessGroupIds } from "../process/ProcessOwnershipProcessTree.js";
11
12
  import { awaitTerminalExit, buildCaptureResult, captureTerminalFrames, createRunManifest, observeSettlement, prepareProcessCapture, releaseProcessResources, resolveProcessResult, settleProcessCaptureJournal, } from "./ProcessCaptureLifecycle.js";
12
13
  import { assertNotCancelled, resolveProcessScenarioRuntimePaths, } from "./ProcessScenarioRuntimeValidation.js";
13
14
  import { createProcessCaptureJournal, scheduleScenarioInteractions, } from "./ProcessCaptureJournal.js";
@@ -130,6 +131,15 @@ const finishProcessRun = async (options) => {
130
131
  }
131
132
  return resolveProcessResult(verifiedCapture, executionFailure, cleanupFailure);
132
133
  };
134
+ const normalizeCaptureFailure = (cause, signal) => {
135
+ if (cause instanceof ProcessCaptureError)
136
+ return cause;
137
+ if (signal?.aborted === true &&
138
+ (cause === signal.reason ||
139
+ (cause instanceof Error && cause.name === "AbortError")))
140
+ return processCaptureCancelled();
141
+ return cause;
142
+ };
133
143
  const completeCapture = async (options) => {
134
144
  const { runtime, scenario } = options;
135
145
  const { reason } = options.exit;
@@ -139,7 +149,7 @@ const completeCapture = async (options) => {
139
149
  const samplingPartial = (await runtime.stopSampler()).partial;
140
150
  await settleProcessCaptureJournal(options.eventJournal);
141
151
  assertNotCancelled(options.signal);
142
- const after = await snapshotRoots(scenario, options.signal);
152
+ const after = await options.captureSnapshot(scenario, options.signal);
143
153
  options.recordEvent("filesystem_checkpoints", 1);
144
154
  const renderedFrames = await runtime.renderer.frames();
145
155
  const checkpoints = [
@@ -184,8 +194,8 @@ const completeCapture = async (options) => {
184
194
  });
185
195
  };
186
196
  /** Execute one caller-selected scenario and return bounded observations. */
187
- const runProcessScenario = async (scenario, signal, hostEnvironment = process.env, hostPlatform = process.platform) => {
188
- const { temporaryRoot, runId, before } = await prepareProcessCapture(scenario, signal);
197
+ const runProcessScenario = async (scenario, signal, hostEnvironment = process.env, hostPlatform = process.platform, captureSnapshot = snapshotRoots) => {
198
+ const { temporaryRoot, runId, before } = await prepareProcessCapture(scenario, signal, captureSnapshot);
189
199
  const frames = [];
190
200
  const samples = [];
191
201
  const journal = createProcessCaptureJournal();
@@ -238,12 +248,13 @@ const runProcessScenario = async (scenario, signal, hostEnvironment = process.en
238
248
  initiallyTruncated: before.truncated,
239
249
  eventJournal,
240
250
  recordEvent,
251
+ captureSnapshot,
241
252
  ...(signal === undefined ? {} : { signal }),
242
253
  });
243
254
  }
244
255
  catch (cause) {
245
256
  runtime?.terminal.kill("SIGKILL");
246
- executionFailure = cause;
257
+ executionFailure = normalizeCaptureFailure(cause, signal);
247
258
  }
248
259
  return finishProcessRun({
249
260
  runtime,
@@ -257,18 +268,19 @@ const runProcessScenario = async (scenario, signal, hostEnvironment = process.en
257
268
  });
258
269
  };
259
270
  /** Execute one scenario through a typed expected-failure channel. */
260
- export const captureProcessScenario = async (scenario, signal, platform = process.platform, environment = process.env) => {
271
+ export const captureProcessScenario = async (scenario, signal, platform = process.platform, environment = process.env, captureSnapshot = snapshotRoots) => {
261
272
  const ownershipReason = processCaptureOwnershipUnavailableReason(platform);
262
273
  if (ownershipReason !== undefined)
263
- return err(new AnalysisCapabilityUnavailableError("rea-process", "capture_process_scenario", ownershipReason));
274
+ return err(new AnalysisCapabilityUnavailableError("rea-process", "capture_process_scenario", ownershipReason, { userMessage: ownershipReason }));
264
275
  try {
265
276
  assertNotCancelled(signal);
266
277
  const resolvedScenario = await resolveProcessScenarioRuntimePaths(scenario, environment);
267
- return ok(await runProcessScenario(resolvedScenario, signal, environment, platform));
278
+ return ok(await runProcessScenario(resolvedScenario, signal, environment, platform, captureSnapshot));
268
279
  }
269
280
  catch (cause) {
270
- return err(cause instanceof ProcessCaptureError
271
- ? cause
281
+ const failure = normalizeCaptureFailure(cause, signal);
282
+ return err(failure instanceof ProcessCaptureError
283
+ ? failure
272
284
  : new ProcessCaptureError("process capture failed", { cause }));
273
285
  }
274
286
  };
@@ -18,6 +18,7 @@ export const normalizeProcessText = (value, scenario, temporaryRoot, pid) => {
18
18
  normalized = normalized.replaceAll(pattern.pattern, pattern.replacement);
19
19
  return normalized;
20
20
  };
21
+ /** Project sampled observations under the caller-selected normalization rules. */
21
22
  export const normalizeProcessSamples = (samples, scenario, rootPid) => {
22
23
  const identifiers = [
23
24
  rootPid,
@@ -41,12 +42,18 @@ export const normalizeProcessSamples = (samples, scenario, rootPid) => {
41
42
  };
42
43
  return samples.map((sample) => ({
43
44
  at_ms: normalizeProcessElapsedTime(sample.at_ms, scenario.normalization.time_bucket_ms),
44
- pid: mapping.get(sample.pid) ?? 1,
45
- parent_pid: mapping.get(sample.parent_pid) ?? 0,
46
- process_group_id: sample.process_group_id === null
47
- ? null
45
+ pid: scenario.normalization.pids
46
+ ? (mapping.get(sample.pid) ?? 1)
47
+ : sample.pid,
48
+ parent_pid: scenario.normalization.pids
49
+ ? (mapping.get(sample.parent_pid) ?? 0)
50
+ : sample.parent_pid,
51
+ process_group_id: !scenario.normalization.pids || sample.process_group_id === null
52
+ ? sample.process_group_id
48
53
  : (mapping.get(sample.process_group_id) ?? 0),
49
- session_id: sample.session_id === null ? null : (mapping.get(sample.session_id) ?? 0),
54
+ session_id: !scenario.normalization.pids || sample.session_id === null
55
+ ? sample.session_id
56
+ : (mapping.get(sample.session_id) ?? 0),
50
57
  command: normalizeCommand(sample.command),
51
58
  }));
52
59
  };
@@ -240,7 +240,9 @@ const inspectInitializedPtyRoot = async (rootPid, runId, signal) => {
240
240
  try {
241
241
  observedRunId = await readProcessRunId(rootPid);
242
242
  }
243
- catch {
243
+ catch (cause) {
244
+ // Unreadable run identity means the root cannot be attributed.
245
+ void cause;
244
246
  return undefined;
245
247
  }
246
248
  const after = await readRootIdentity(rootPid, signal);
@@ -1,12 +1,9 @@
1
- import { z } from "zod";
2
- import { AnalysisInputError } from "../domain/errors.js";
3
- import { evaluateReconstructionClosure, reconstructionCoverageDataSchema, } from "../domain/reconstructionCoverage.js";
1
+ import { reconstructionCoverageEvaluationInputSchema } from "../domain/reconstructionCoverageInput.js";
2
+ import { AnalysisInputError } from "../domain/analysisErrorCore.js";
3
+ import {} from "../domain/analysisErrorBase.js";
4
+ import { evaluateReconstructionClosure } from "../domain/reconstructionCoverage.js";
4
5
  import { jsonValueSchema } from "../domain/jsonValue.js";
5
6
  import { err, ok } from "../domain/result.js";
6
- export const reconstructionCoverageEvaluationInputSchema = z.strictObject({
7
- coverage: reconstructionCoverageDataSchema,
8
- boundary_id: z.string().min(1),
9
- });
10
7
  /** Evaluate inline reconstruction coverage against a named boundary. */
11
8
  export const evaluateReconstructionCoverage = (rawInput, nowEpochMs = Date.now()) => {
12
9
  const parsed = reconstructionCoverageEvaluationInputSchema.safeParse(rawInput);
@@ -2,7 +2,7 @@ import { createHash } from "node:crypto";
2
2
  import canonicalize from "canonicalize";
3
3
  import { parseEvidenceBundle, } from "../domain/evidenceBundle.js";
4
4
  import { parseProcessCapture } from "../domain/processCapture.js";
5
- import { parseApplicationGraphEvidence } from "./JavaScriptApplicationEvidenceGraph.js";
5
+ import { parseApplicationGraphEvidence } from "./javascript/JavaScriptApplicationEvidenceGraph.js";
6
6
  import { applicationObligationPolicy, semanticObligationPolicy, } from "./ReconstructionObligationPolicies.js";
7
7
  /** Derive conservative candidates from graph, process, and reviewed inputs. */
8
8
  export const deriveReconstructionObligationCandidates = (bundleInput, reviewed) => {
@@ -32,8 +32,11 @@ const deriveApplicationCandidates = (evidence, records, candidates, limitations)
32
32
  const source = parseApplicationGraphEvidence(evidence);
33
33
  for (const node of source.graph.nodes) {
34
34
  const candidatePolicy = applicationObligationPolicy(node.kind);
35
- if (candidatePolicy === undefined)
35
+ if (candidatePolicy === undefined) {
36
+ if (node.kind === "unknown")
37
+ limitations.add(`Application graph ${source.graph.graph_id} contains unresolved node ${node.node_id}; reconstruction obligations remain unknown.`);
36
38
  continue;
39
+ }
37
40
  const reference = node.observations.map((observation) => graphReference(evidence, records, observation.evidence, `${source.graph.graph_id}/node/${node.node_id}/observation/${observation.observation_id}`));
38
41
  addCandidate(candidates, generatedCandidate({
39
42
  key: `application:${node.node_id}:${candidatePolicy.family}`,
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
- import { AnalysisInputError, AnalysisProtocolError, } from "../domain/errors.js";
2
+ import { AnalysisInputError, AnalysisProtocolError, } from "../domain/analysisErrorCore.js";
3
+ import {} from "../domain/analysisErrorBase.js";
3
4
  import { createEvidence } from "../domain/evidence.js";
4
5
  import { jsonObjectSchema, jsonValueSchema } from "../domain/jsonValue.js";
5
6
  import { reconstructionObligationLedgerInputSchema, reconstructionObligationLedgerSchema, } from "../domain/reconstructionObligationLedgerSchemas.js";
@@ -106,6 +106,8 @@ export const importReferenceSource = async (options) => {
106
106
  const error = readResult.error;
107
107
  if (error.code === "cancelled")
108
108
  return err(cancelled());
109
+ if (error.code === "unsupported")
110
+ return err(failure("unsupported", error.message));
109
111
  return err(failure("io", error.message));
110
112
  }
111
113
  if (isAborted(options.signal))
@@ -3,12 +3,13 @@ import { posix } from "node:path";
3
3
  import { classifyReferenceSourcePath, detectReferenceSourceLanguage, } from "../domain/referenceSourceClassification.js";
4
4
  import { parseReferenceSourceImports } from "../domain/referenceSourceImportParsing.js";
5
5
  import { PARSEABLE_REFERENCE_SOURCE_LANGUAGES } from "./ReferenceSourceImportTypes.js";
6
- /** Project a low-level entry failure into safe import guidance. */
7
- export const projectReferenceSourceEntryFailure = (entry) => {
6
+ /** Preserve the observed reader failure and add entry-specific recovery guidance. */
7
+ export const projectReferenceSourceEntryFailure = (entry) => `${entry.message} ${entryRecoveryGuidance(entry)}`;
8
+ const entryRecoveryGuidance = (entry) => {
8
9
  if (entry.code === "cancelled")
9
10
  return "This entry was not read because the import was cancelled. Start the import again when ready.";
10
11
  if (entry.code === "unsupported")
11
- return "This entry cannot be read safely on this system. Exclude it or import the directory on a supported system.";
12
+ return "Exclude this entry or replace it with a regular file.";
12
13
  if (entry.kind === "directory")
13
14
  return "This directory could not be read. Check its permissions, then try again.";
14
15
  if (entry.kind === "symlink")
@@ -48,6 +49,8 @@ const failedEntry = (entry) => {
48
49
  };
49
50
  };
50
51
  const resolveInternalSpecifier = (fromPath, specifier, filePaths) => {
52
+ if (posix.isAbsolute(specifier))
53
+ return { to: specifier, resolution: "unresolved" };
51
54
  const normalized = posix.normalize(posix.join(posix.dirname(fromPath), specifier));
52
55
  if (normalized.startsWith("../") || normalized === "..")
53
56
  return { to: normalized, resolution: "unresolved" };
@@ -56,6 +59,22 @@ const resolveInternalSpecifier = (fromPath, specifier, filePaths) => {
56
59
  `${normalized}${suffix}`,
57
60
  `${normalized}/index${suffix}`,
58
61
  ]);
62
+ // TypeScript source commonly names the extension emitted for NodeNext.
63
+ // Retain present runtime files first; substitute only a missing counterpart.
64
+ // Counterparts cover explicit filenames, not directory/index resolution.
65
+ if (/\.(?:ts|tsx|mts|cts)$/u.test(fromPath)) {
66
+ const sourceSuffixes = normalized.endsWith(".js")
67
+ ? [".ts", ".tsx", ".d.ts"]
68
+ : normalized.endsWith(".mjs")
69
+ ? [".mts", ".d.mts"]
70
+ : normalized.endsWith(".cjs")
71
+ ? [".cts", ".d.cts"]
72
+ : normalized.endsWith(".jsx")
73
+ ? [".tsx", ".d.ts"]
74
+ : [];
75
+ const stem = normalized.slice(0, -posix.extname(normalized).length);
76
+ candidates.push(...sourceSuffixes.map((suffix) => `${stem}${suffix}`));
77
+ }
59
78
  const match = candidates.find((candidate) => filePaths.has(candidate));
60
79
  return match === undefined
61
80
  ? { to: normalized, resolution: "unresolved" }
@@ -15,7 +15,8 @@ const resolveRoot = async (requestedRoot) => {
15
15
  const canonicalRoot = await realpath(resolve(requestedRoot));
16
16
  return ok(canonicalRoot);
17
17
  }
18
- catch {
18
+ catch (cause) {
19
+ void cause;
19
20
  return err(failure("invalid-root", "Reference source root could not be resolved"));
20
21
  }
21
22
  };
@@ -24,8 +25,9 @@ const buildIgnored = async (root, excludePaths) => {
24
25
  try {
25
26
  ignored.add(await readFile(join(root, ".gitignore"), "utf8"));
26
27
  }
27
- catch {
28
+ catch (cause) {
28
29
  // Missing or unreadable ignore file does not authorize broader access.
30
+ void cause;
29
31
  }
30
32
  ignored.add([...DEFAULT_REFERENCE_SOURCE_IGNORE_PATTERNS]);
31
33
  for (const path of excludePaths) {
@@ -10,6 +10,11 @@ export const projectReferenceSourceImportError = (error) => {
10
10
  category: "invalid_input",
11
11
  message: "Reference source directory could not be opened. Check that the path exists, is readable, and points to a directory.",
12
12
  };
13
+ if (error.code === "unsupported")
14
+ return {
15
+ category: "unsupported_host",
16
+ message: "Safe no-follow file opens are unavailable on this host. Import the source tree with REA on Linux (including WSL) or macOS.",
17
+ };
13
18
  if (error.code === "io")
14
19
  return {
15
20
  category: "execution_failure",
@@ -1,6 +1,6 @@
1
1
  import fs from "node:fs";
2
- import { lstat } from "node:fs/promises";
3
- import { join } from "node:path";
2
+ import { lstat, readFile } from "node:fs/promises";
3
+ import { join, resolve } from "node:path";
4
4
  import { resolveRef } from "isomorphic-git";
5
5
  /**
6
6
  * Read Git metadata for a directory using isomorphic-git.
@@ -19,15 +19,46 @@ export const readReferenceSourceVcs = async (root, signal) => {
19
19
  : { kind: "unknown", head: null, dirty: null };
20
20
  }
21
21
  try {
22
- const head = await resolveRef({ fs, dir: root, ref: "HEAD" });
22
+ const head = await resolveSourceHead(root);
23
23
  if (isAborted(signal))
24
24
  return { kind: "unknown", head: null, dirty: null };
25
25
  return { kind: "git", head, dirty: null };
26
26
  }
27
- catch {
27
+ catch (cause) {
28
+ // Unresolvable refs mean VCS state is unknown, not absent.
29
+ void cause;
28
30
  return { kind: "unknown", head: null, dirty: null };
29
31
  }
30
32
  };
33
+ const resolveSourceHead = async (root) => {
34
+ const dotgit = join(root, ".git");
35
+ if (!(await lstat(dotgit)).isFile())
36
+ return resolveRef({ fs, dir: root, ref: "HEAD" });
37
+ const pointer = (await readFile(dotgit, "utf8")).replace(/\r?\n$/u, "");
38
+ if (!pointer.startsWith("gitdir: ") || pointer.length === 8)
39
+ throw new Error("Invalid Git directory pointer");
40
+ const gitdir = resolve(root, pointer.slice(8));
41
+ let commonDirectory;
42
+ try {
43
+ commonDirectory = resolve(gitdir, (await readFile(join(gitdir, "commondir"), "utf8")).replace(/\r?\n$/u, ""));
44
+ }
45
+ catch (cause) {
46
+ if (errorCode(cause) !== "ENOENT")
47
+ throw cause;
48
+ return resolveRef({ fs, dir: root, gitdir, ref: "HEAD" });
49
+ }
50
+ const head = (await readFile(join(gitdir, "HEAD"), "utf8")).trim();
51
+ if (!head.startsWith("ref: "))
52
+ return resolveRef({ fs, dir: root, gitdir, ref: "HEAD" });
53
+ const ref = head.slice(5);
54
+ const privateRef = ["refs/bisect/", "refs/rewritten/", "refs/worktree/"].some((prefix) => ref.startsWith(prefix));
55
+ return resolveRef({
56
+ fs,
57
+ dir: root,
58
+ gitdir: privateRef ? gitdir : commonDirectory,
59
+ ref,
60
+ });
61
+ };
31
62
  const errorCode = (cause) => typeof cause === "object" && cause !== null && "code" in cause
32
63
  ? String(cause.code)
33
64
  : undefined;