rea-agents 4.0.0 → 4.1.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 (416) hide show
  1. package/README.md +93 -30
  2. package/bridge/ghidra/ReaGhidraBridge.java +358 -15
  3. package/bridge/ghidra/ReaGhidraExtensions.java +113 -0
  4. package/bridge/ghidra/ReaGhidraPrepareCom.java +32 -0
  5. package/dist/android/AndroidTargetSnapshot.js +34 -0
  6. package/dist/android/JadxAnalysis.js +191 -0
  7. package/dist/android/JadxConfiguration.js +41 -0
  8. package/dist/android/JadxMcpTransport.js +145 -0
  9. package/dist/android/JadxProtocol.js +101 -0
  10. package/dist/android/JadxProvider.js +170 -0
  11. package/dist/android/JadxRelease.js +19 -0
  12. package/dist/android/JadxSession.js +97 -0
  13. package/dist/application/AnalysisContextQueries.js +2 -1
  14. package/dist/application/AnalysisProviderEvaluation.js +5 -3
  15. package/dist/application/AnalysisProviderRegistry.js +2 -1
  16. package/dist/application/AnalysisSnapshotCache.js +4 -1
  17. package/dist/application/AnalysisSnapshotFiles.js +1 -1
  18. package/dist/application/AndroidAnalysisPort.js +1 -0
  19. package/dist/application/AndroidAnalysisService.js +37 -0
  20. package/dist/application/ArtifactExtraction.js +7 -4
  21. package/dist/application/ArtifactGraphConstruction.js +10 -17
  22. package/dist/application/ArtifactInventory/scanCanonical.js +8 -7
  23. package/dist/application/BinarySession.js +16 -3
  24. package/dist/application/BinarySessionExecution.js +4 -1
  25. package/dist/application/BinarySessionOpen.js +3 -2
  26. package/dist/application/BinarySessionRecords.js +9 -3
  27. package/dist/application/BinaryTargetResolver.js +25 -6
  28. package/dist/application/BrowserObservationService.js +2 -1
  29. package/dist/application/BrowserScenarioCaptureService.js +2 -1
  30. package/dist/application/BrowserScenarioEvidence.js +2 -2
  31. package/dist/application/CallPathTracing.js +2 -1
  32. package/dist/application/CapabilityInventory.js +18 -0
  33. package/dist/application/ClientConfigPath.js +3 -1
  34. package/dist/application/ClientConfigurationDocument.js +11 -1
  35. package/dist/application/ClientRegistrationStatus.js +8 -1
  36. package/dist/application/CompositeProvider.js +1 -1
  37. package/dist/application/DirectAnalysis.js +23 -7
  38. package/dist/application/DirectAnalysisStatus.js +3 -3
  39. package/dist/application/Doctor.js +48 -8
  40. package/dist/application/DoctorDiagnostics.js +7 -5
  41. package/dist/application/DoctorScope.js +1 -1
  42. package/dist/application/ElectronActiveEvidence.js +2 -2
  43. package/dist/application/ElectronActiveObservationService.js +2 -1
  44. package/dist/application/ElectronBoundaryAnalysis.js +1 -1
  45. package/dist/application/ElectronObservationService.js +2 -1
  46. package/dist/application/EnhancedLiteralTracing.js +2 -1
  47. package/dist/application/EnhancedToolTypes.js +2 -1
  48. package/dist/application/EnhancedTools.js +3 -1
  49. package/dist/application/EvidenceBundleCommands.js +2 -1
  50. package/dist/application/EvidenceBundleFiles.js +1 -1
  51. package/dist/application/EvidenceInputResolver.js +30 -0
  52. package/dist/application/EvidenceLedger.js +2 -1
  53. package/dist/application/FirmwareAnalysisPort.js +1 -0
  54. package/dist/application/FirmwareAnalysisService.js +35 -0
  55. package/dist/application/FunctionAnalysisEvidence.js +32 -0
  56. package/dist/application/InventoryProjectionEvidence.js +2 -1
  57. package/dist/application/JavaScriptApplicationService.js +50 -3
  58. package/dist/application/JavaScriptApplicationWorkflowService.js +2 -1
  59. package/dist/application/JavaScriptArtifactAnalysis.js +4 -2
  60. package/dist/application/JavaScriptArtifactFiles.js +4 -2
  61. package/dist/application/JavaScriptArtifactPathResolution.js +6 -2
  62. package/dist/application/JavaScriptJsonModules.js +3 -2
  63. package/dist/application/JavaScriptModuleRelationships.js +4 -2
  64. package/dist/application/JavaScriptRuntimeObservationService.js +2 -1
  65. package/dist/application/JavaScriptRuntimeReconciliationService.js +2 -1
  66. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -1
  67. package/dist/application/JavaScriptSemanticTraceService.js +2 -1
  68. package/dist/application/JsonFiles.js +1 -1
  69. package/dist/application/LazyAnalysisProvider.js +3 -1
  70. package/dist/application/LinuxHopper.js +12 -4
  71. package/dist/application/MacHopper.js +20 -7
  72. package/dist/application/ManagedApplicationGraphService.js +2 -1
  73. package/dist/application/ManagedMemberComparisonService.js +3 -1
  74. package/dist/application/ManagedNativeVerificationService.js +2 -1
  75. package/dist/application/ManagedReconstructionService.js +2 -1
  76. package/dist/application/NativeCallRoutes.js +1 -1
  77. package/dist/application/NativeDispatchMetadataInspection.js +1 -1
  78. package/dist/application/NativeUiActionTrace.js +2 -1
  79. package/dist/application/NativeValueTrace.js +1 -1
  80. package/dist/application/ProcessCaptureError.js +1 -1
  81. package/dist/application/ProcessCaptureJournal.js +3 -1
  82. package/dist/application/ProcessCaptureLifecycle.js +6 -3
  83. package/dist/application/ProcessCli.js +9 -5
  84. package/dist/application/ProcessEvidence.js +2 -6
  85. package/dist/application/ProcessHarness.js +3 -2
  86. package/dist/application/ProcessNormalization.js +12 -5
  87. package/dist/application/ProcessSampling.js +3 -1
  88. package/dist/application/ReconstructionCoverageService.js +2 -1
  89. package/dist/application/ReconstructionObligationLedgerService.js +2 -1
  90. package/dist/application/ReferenceSourceImportEntries.js +2 -0
  91. package/dist/application/ReferenceSourceImportPolicy.js +4 -2
  92. package/dist/application/ReferenceSourceVcsAdapter.js +35 -4
  93. package/dist/application/SessionProviderRouter.js +4 -1
  94. package/dist/application/Setup.js +1 -128
  95. package/dist/application/SetupClientConfiguration.js +17 -6
  96. package/dist/application/SetupHost.js +111 -0
  97. package/dist/application/SetupRegistrationEnvironment.js +1 -2
  98. package/dist/application/SetupSkill.js +9 -3
  99. package/dist/application/SetupTypes.js +17 -0
  100. package/dist/application/StoreFileLock.js +7 -2
  101. package/dist/application/SupportedClients.js +8 -0
  102. package/dist/application/Uninstall.js +9 -4
  103. package/dist/application/UpdateRuntime.js +5 -2
  104. package/dist/application/WindowsCapabilities.js +7 -7
  105. package/dist/application/runtime.js +3 -1
  106. package/dist/artifacts/ArtifactProvider.js +3 -1
  107. package/dist/artifacts/DirectoryArtifactReader.js +2 -0
  108. package/dist/artifacts/NativeDmgArtifactReader.js +10 -3
  109. package/dist/artifacts/NibArchive.js +4 -2
  110. package/dist/artifacts/SafeOutputTree.js +26 -10
  111. package/dist/artifacts/ZipArtifactReader.js +1 -0
  112. package/dist/browser/BrowserProcessStartup.js +3 -1
  113. package/dist/browser/CdpAuthorizedMainFrame.js +1 -1
  114. package/dist/browser/CdpBrowserProvider.js +4 -1
  115. package/dist/browser/CdpCaptureDocuments.js +3 -1
  116. package/dist/browser/CdpCaptureEventHandlers.js +6 -2
  117. package/dist/browser/CdpCaptureStorageFingerprints.js +1 -1
  118. package/dist/browser/CdpCaptureValues.js +6 -2
  119. package/dist/browser/CdpConnection.js +8 -6
  120. package/dist/browser/CdpElectronInspection.js +3 -3
  121. package/dist/browser/CdpElectronProvider.js +4 -1
  122. package/dist/browser/CdpElectronScripts.js +2 -2
  123. package/dist/browser/CdpEndpoint.js +22 -10
  124. package/dist/browser/CdpObservationSession.js +2 -1
  125. package/dist/browser/CdpOptionalCommand.js +1 -1
  126. package/dist/browser/CdpPageCapture.js +2 -1
  127. package/dist/browser/CdpSafeMetadata.js +53 -8
  128. package/dist/browser/CdpScreenshot.js +1 -1
  129. package/dist/browser/CdpTargetSession.js +8 -5
  130. package/dist/browser/CdpWebMcpDiscovery.js +1 -1
  131. package/dist/browser/ElectronFileScope.js +9 -3
  132. package/dist/browser/JavaScriptRuntimeScope.js +3 -1
  133. package/dist/browser/PlaywrightBrowserScenarioProvider.js +3 -1
  134. package/dist/browser/PlaywrightElectronActiveActions.js +1 -1
  135. package/dist/browser/PlaywrightElectronActiveProvider.js +6 -2
  136. package/dist/browser/PlaywrightExecutionBoundary.js +1 -1
  137. package/dist/browser/PlaywrightScenarioArtifacts.js +10 -5
  138. package/dist/browser/PlaywrightScenarioBrowser.js +3 -1
  139. package/dist/browser/PlaywrightScenarioEvents.js +6 -2
  140. package/dist/browser/PlaywrightScenarioSession.js +5 -2
  141. package/dist/browser/V8InspectorEndpoint.js +2 -1
  142. package/dist/browser/V8InspectorProvider.js +6 -1
  143. package/dist/browser/WebSourceMapFetcher.js +24 -11
  144. package/dist/cli/androidCommands.js +81 -0
  145. package/dist/{cliApplicationCommands.js → cli/applicationCommands.js} +18 -16
  146. package/dist/{cliBrowserAdvancedCommands.js → cli/browserAdvancedCommands.js} +13 -16
  147. package/dist/{cliBrowserCommands.js → cli/browserCommands.js} +9 -9
  148. package/dist/cli/commandCancellation.js +24 -0
  149. package/dist/cli/coreAnalysisCommands.js +110 -17
  150. package/dist/{cliElectronCommands.js → cli/electronCommands.js} +14 -13
  151. package/dist/cli/firmwareCommands.js +75 -0
  152. package/dist/{cliSetup.js → cli/interactiveSetup.js} +1 -1
  153. package/dist/cli/javascriptApplicationAnalysis.js +1 -1
  154. package/dist/cli/managedCommands.js +1 -1
  155. package/dist/cli/managedProjectGraphCommand.js +1 -1
  156. package/dist/cli/options.js +7 -1
  157. package/dist/{cliProcessCommands.js → cli/processCommands.js} +3 -3
  158. package/dist/cli/referenceSourceImportStatus.js +10 -0
  159. package/dist/cli/setupCommands.js +4 -2
  160. package/dist/cli/utilityCommands.js +3 -2
  161. package/dist/cli.js +10 -15
  162. package/dist/cliBrowserContext.js +1 -1
  163. package/dist/cliBrowserScenarioCommands.js +2 -1
  164. package/dist/cliCommandNames.js +11 -2
  165. package/dist/cliEvidenceCommands.js +2 -1
  166. package/dist/cliJavaScriptRuntimeCommands.js +2 -1
  167. package/dist/cliJsonInput.js +26 -11
  168. package/dist/cliLogging.js +2 -1
  169. package/dist/cliOutput.js +15 -16
  170. package/dist/config/environment.js +11 -1
  171. package/dist/config/parseConfig.js +7 -1
  172. package/dist/config/parsers.js +1 -1
  173. package/dist/contracts/androidToolContracts.js +77 -0
  174. package/dist/contracts/applicationToolContracts.js +32 -5
  175. package/dist/contracts/applicationWorkflowInputContracts.js +13 -13
  176. package/dist/contracts/artifactComparisonExample.js +7 -14
  177. package/dist/contracts/enhancedToolContracts.js +31 -0
  178. package/dist/contracts/errorSchemas.js +4 -2
  179. package/dist/contracts/evidenceInputContracts.js +13 -0
  180. package/dist/contracts/firmwareToolContracts.js +38 -0
  181. package/dist/contracts/officialToolContracts.js +66 -0
  182. package/dist/contracts/promptContracts.js +1 -1
  183. package/dist/contracts/sessionLifecycleInputs.js +4 -0
  184. package/dist/contracts/sessionToolContracts.js +43 -0
  185. package/dist/contracts/sessionToolSchemas.js +1 -1
  186. package/dist/contracts/toolContractExamples.js +5 -0
  187. package/dist/contracts/toolContractTypes.js +2 -0
  188. package/dist/contracts/toolContracts.js +7 -130
  189. package/dist/contracts/toolEffects.js +43 -0
  190. package/dist/contracts/toolOutputSchemaGroups.js +4 -0
  191. package/dist/contracts/toolOutputSchemaPrimitives.js +1 -0
  192. package/dist/doctorRuntime.js +5 -1
  193. package/dist/domain/analysisErrorBase.js +33 -0
  194. package/dist/domain/analysisErrorCore.js +60 -0
  195. package/dist/domain/analysisErrorPresentation.js +22 -2
  196. package/dist/domain/analysisErrorProjection.js +24 -3
  197. package/dist/domain/analysisSnapshot.js +1 -0
  198. package/dist/domain/androidAnalysis.js +141 -0
  199. package/dist/domain/appleAssetCatalog.js +1 -1
  200. package/dist/domain/artifactGraph.js +1 -0
  201. package/dist/domain/artifactInspection.js +19 -17
  202. package/dist/domain/artifactInventoryEvidence.js +20 -25
  203. package/dist/domain/artifactOperationError.js +16 -0
  204. package/dist/domain/browserObservation.js +12 -4
  205. package/dist/domain/browserObservationError.js +23 -0
  206. package/dist/domain/browserScenario.js +1 -1
  207. package/dist/domain/browserScenarioCapture.js +1 -1
  208. package/dist/domain/browserScenarioDiff.js +1 -1
  209. package/dist/domain/browserScenarioNormalization.js +6 -11
  210. package/dist/domain/browserScenarioValues.js +3 -1
  211. package/dist/domain/callPath.js +47 -7
  212. package/dist/domain/canonicalDigest.js +65 -0
  213. package/dist/domain/canonicalOrdering.js +11 -0
  214. package/dist/domain/changedBehavior.js +8 -7
  215. package/dist/domain/comparisonSemantics.js +2 -4
  216. package/dist/domain/configurationErrors.js +25 -0
  217. package/dist/domain/dosCom.js +8 -0
  218. package/dist/domain/electronActiveObservation.js +3 -1
  219. package/dist/domain/electronStaticAnalysisBrowser.js +13 -23
  220. package/dist/domain/electronStaticAnalysisNative.js +2 -1
  221. package/dist/domain/electronStaticAnalysisValues.js +23 -3
  222. package/dist/domain/evidence.js +3 -11
  223. package/dist/domain/evidenceErrors.js +30 -0
  224. package/dist/domain/firmwareAnalysis.js +121 -0
  225. package/dist/domain/functionComparison.js +4 -2
  226. package/dist/domain/functionComparisonDimensions.js +6 -4
  227. package/dist/domain/functionComparisonNormalization.js +8 -1
  228. package/dist/domain/functionComparisonResults.js +1 -4
  229. package/dist/domain/hopperErrors.js +78 -0
  230. package/dist/domain/hopperValues.js +2 -1
  231. package/dist/domain/interfaceBuilderGraph.js +3 -1
  232. package/dist/domain/javascriptApplicationChangeGraph.js +2 -2
  233. package/dist/domain/javascriptApplicationGraph.js +13 -22
  234. package/dist/domain/javascriptApplicationVersionComparison.js +3 -11
  235. package/dist/domain/javascriptApplicationVersionItems.js +3 -3
  236. package/dist/domain/javascriptApplicationVersionKeys.js +1 -1
  237. package/dist/domain/javascriptAstFingerprint.js +1 -1
  238. package/dist/domain/javascriptExportShapeComparison.js +1 -2
  239. package/dist/domain/javascriptExportShapeSelection.js +1 -1
  240. package/dist/domain/javascriptExportShapeVariants.js +7 -3
  241. package/dist/domain/javascriptFeatureSeed.js +29 -9
  242. package/dist/domain/javascriptFeatureTrace.js +9 -13
  243. package/dist/domain/javascriptFeatureTraversal.js +2 -1
  244. package/dist/domain/javascriptNativeHandoff.js +2 -1
  245. package/dist/domain/javascriptRuntimeLoadState.js +2 -2
  246. package/dist/domain/javascriptRuntimeReconciliationActive.js +3 -10
  247. package/dist/domain/javascriptRuntimeReconciliationGraph.js +2 -2
  248. package/dist/domain/javascriptRuntimeReconciliationMatching.js +4 -3
  249. package/dist/domain/javascriptRuntimeReconciliationParsing.js +8 -14
  250. package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -4
  251. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +5 -2
  252. package/dist/domain/javascriptRuntimeStaticCandidates.js +8 -4
  253. package/dist/domain/javascriptSemanticAnalysis.js +40 -3
  254. package/dist/domain/javascriptSemanticCallResolution.js +2 -1
  255. package/dist/domain/javascriptSemanticChildProcesses.js +2 -1
  256. package/dist/domain/javascriptSemanticDataEffects.js +2 -1
  257. package/dist/domain/javascriptSemanticFingerprints.js +1 -1
  258. package/dist/domain/javascriptSemanticGraph.js +23 -28
  259. package/dist/domain/javascriptSemanticPrimitives.js +9 -2
  260. package/dist/domain/javascriptSemanticProjection.js +2 -1
  261. package/dist/domain/javascriptSemanticPromises.js +2 -1
  262. package/dist/domain/javascriptSemanticProvenance.js +1 -1
  263. package/dist/domain/javascriptSemanticQuery.js +7 -8
  264. package/dist/domain/javascriptSemanticQueryAssessment.js +1 -2
  265. package/dist/domain/javascriptSemanticQueryIdentity.js +1 -2
  266. package/dist/domain/javascriptSemanticReturns.js +2 -1
  267. package/dist/domain/javascriptSemanticValues.js +50 -16
  268. package/dist/domain/javascriptSourceParser.js +4 -2
  269. package/dist/domain/javascriptStaticAnalysis.js +1 -1
  270. package/dist/domain/javascriptStaticAnalysisBundler.js +2 -1
  271. package/dist/domain/javascriptStaticAnalysisCalls.js +14 -6
  272. package/dist/domain/javascriptStaticAnalysisHelpers.js +31 -4
  273. package/dist/domain/jsonShape.js +6 -2
  274. package/dist/domain/managedMemberComparison.js +1 -0
  275. package/dist/domain/managedMemberComparisonItems.js +2 -0
  276. package/dist/domain/managedNativeVerificationMatch.js +5 -3
  277. package/dist/domain/nativeDataType.js +2 -0
  278. package/dist/domain/nativeFunctionAnnotations.js +43 -0
  279. package/dist/domain/nativeLoadImage.js +95 -0
  280. package/dist/domain/nativeMetadataRecovery.js +55 -0
  281. package/dist/domain/processCapture.js +0 -1
  282. package/dist/domain/processEvidenceProvider.js +11 -0
  283. package/dist/domain/processTraceComparison.js +1 -1
  284. package/dist/domain/providerAdapterError.js +17 -0
  285. package/dist/domain/providerCleanupError.js +1 -1
  286. package/dist/domain/providerSelectionError.js +44 -0
  287. package/dist/domain/reconstructionUnknowns.js +1 -1
  288. package/dist/domain/reconstructionVerification.js +22 -8
  289. package/dist/domain/referenceSourceClassification.js +5 -6
  290. package/dist/domain/referenceSourceGraph.js +9 -17
  291. package/dist/domain/referenceSourceImportParsing.js +38 -23
  292. package/dist/domain/runtimeIdentification.js +1 -1
  293. package/dist/domain/runtimeVersion.js +4 -7
  294. package/dist/domain/safeJson.js +13 -0
  295. package/dist/domain/sourceToBundleComparison.js +5 -7
  296. package/dist/domain/sourceToBundleSignals.js +6 -6
  297. package/dist/domain/staticRuntimeCorrelation.js +9 -7
  298. package/dist/domain/unknownRegistryError.js +10 -0
  299. package/dist/domain/webBundleAnalyzerAst.js +22 -5
  300. package/dist/domain/webBundleAnalyzerInspection.js +20 -14
  301. package/dist/dotnet/ManagedMemberRows.js +1 -1
  302. package/dist/dotnet/ManagedMetadataHeaps.js +3 -2
  303. package/dist/dotnet/ManagedMetadataInventoryRows.js +4 -2
  304. package/dist/dotnet/ManagedMethodBodyReader.js +8 -1
  305. package/dist/dotnet/ManagedStaticProvider.js +3 -1
  306. package/dist/firmware/FirmwareCommand.js +163 -0
  307. package/dist/firmware/FirmwareFiles.js +190 -0
  308. package/dist/firmware/FirmwareProvider.js +258 -0
  309. package/dist/firmware/FirmwarePublication.js +84 -0
  310. package/dist/firmware/FirmwareRelease.js +32 -0
  311. package/dist/firmware/FirmwareReports.js +223 -0
  312. package/dist/generatedMcpToolCatalog.js +1 -1
  313. package/dist/generatedPackageMetadata.js +5 -5
  314. package/dist/ghidra/GhidraAnalysisProfile.js +37 -8
  315. package/dist/ghidra/GhidraClient.js +52 -6
  316. package/dist/ghidra/GhidraDiagnostics.js +3 -0
  317. package/dist/ghidra/GhidraDoctor.js +38 -14
  318. package/dist/ghidra/GhidraFunctionValues.js +10 -4
  319. package/dist/ghidra/GhidraInstallation.js +10 -4
  320. package/dist/ghidra/GhidraInventoryValues.js +39 -2
  321. package/dist/ghidra/GhidraLauncher.js +91 -26
  322. package/dist/ghidra/GhidraLoadImageValues.js +199 -0
  323. package/dist/ghidra/GhidraProvider.js +129 -13
  324. package/dist/ghidra/GhidraProviderCapabilities.js +52 -15
  325. package/dist/ghidra/GhidraRequestQueue.js +2 -2
  326. package/dist/ghidra/GhidraSessionError.js +31 -4
  327. package/dist/ghidra/GhidraSessionValues.js +10 -7
  328. package/dist/ghidra/GhidraTargetSnapshot.js +16 -2
  329. package/dist/ghidra/GhidraTransport.js +12 -0
  330. package/dist/ghidra/extensions/GhidraExtensionFailures.js +20 -0
  331. package/dist/ghidra/extensions/GhidraExtensions.js +170 -0
  332. package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +21 -0
  333. package/dist/ghidra/extensions/nativeaot/NativeAotReport.js +84 -0
  334. package/dist/hopper/BridgeLauncher.js +4 -2
  335. package/dist/hopper/HopperAnalysisProfile.js +7 -2
  336. package/dist/hopper/HopperCleanup.js +55 -9
  337. package/dist/hopper/HopperClient.js +14 -4
  338. package/dist/hopper/HopperProcessDiagnostic.js +1 -1
  339. package/dist/hopper/HopperProvider.js +8 -4
  340. package/dist/hopper/HopperRequestQueue.js +7 -3
  341. package/dist/hopper/HopperSessionValues.js +1 -1
  342. package/dist/hopper/HopperSocketConnection.js +1 -1
  343. package/dist/hopper/HopperTargetLease.js +23 -15
  344. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +7 -8
  345. package/dist/hopper/LinuxPrivateDisplayProbe.js +6 -2
  346. package/dist/hopper/protocol.js +8 -8
  347. package/dist/ida/IdaConfiguration.js +56 -0
  348. package/dist/ida/IdaDoctor.js +53 -0
  349. package/dist/ida/IdaInput.js +62 -0
  350. package/dist/ida/IdaMcpConnection.js +111 -0
  351. package/dist/ida/IdaOperationRunner.js +299 -0
  352. package/dist/ida/IdaProtocolValues.js +178 -0
  353. package/dist/ida/IdaProvider.js +126 -0
  354. package/dist/ida/IdaProviderCapabilities.js +60 -0
  355. package/dist/ida/IdaSessionClient.js +306 -0
  356. package/dist/ida/IdaWorkspace.js +54 -0
  357. package/dist/main/shutdown.js +21 -1
  358. package/dist/main/startup.js +1 -1
  359. package/dist/main/transport.js +8 -4
  360. package/dist/main.js +5 -2
  361. package/dist/native/AppleDispatchMetadata.js +31 -10
  362. package/dist/native/NativeMacOSProvider.js +87 -15
  363. package/dist/native/NativeMachoInspection.js +42 -12
  364. package/dist/native/NativeUiHelperRuntime.js +7 -1
  365. package/dist/native/NativeUiObservation.js +6 -2
  366. package/dist/native/parsers/demangle.js +1 -1
  367. package/dist/native/parsers/dyldInfo.js +3 -3
  368. package/dist/native/parsers/otool.js +4 -1
  369. package/dist/native/parsers/plist.js +11 -3
  370. package/dist/process/PrivateRuntimeRoot.js +13 -3
  371. package/dist/process/ProcessOwnership.js +5 -73
  372. package/dist/process/ProcessOwnershipObservation.js +62 -2
  373. package/dist/process/ProcessOwnershipProcessTree.js +13 -0
  374. package/dist/process/ProviderProcess.js +24 -7
  375. package/dist/process/ProviderRunLineage.js +1 -1
  376. package/dist/process/WindowsAuthority.js +20 -1
  377. package/dist/reference/ReferenceSourceReaderEntries.js +5 -1
  378. package/dist/reference/ReferenceSourceReaderFile.js +1 -0
  379. package/dist/server/createServer.js +25 -2
  380. package/dist/server/mcpProgress.js +2 -1
  381. package/dist/server/promptCompletion.js +3 -3
  382. package/dist/server/registerAndroidTools.js +30 -0
  383. package/dist/server/registerApplicationTools/compareExportShapes.js +5 -1
  384. package/dist/server/registerApplicationTools/compareSourceToBundle.js +7 -2
  385. package/dist/server/registerApplicationTools/compareVersions.js +5 -1
  386. package/dist/server/registerApplicationTools/traceFeature.js +7 -2
  387. package/dist/server/registerApplicationTools/traceSemantics.js +7 -2
  388. package/dist/server/registerEnhancedTools.js +28 -1
  389. package/dist/server/registerFirmwareTools.js +22 -0
  390. package/dist/server/registerFunctionComparisonTool.js +1 -1
  391. package/dist/server/registerInvestigationTools/helpers.js +2 -1
  392. package/dist/server/registerManagedTools.js +1 -1
  393. package/dist/server/registerManagedWorkflowTools/evidence.js +1 -1
  394. package/dist/server/registerOfficialTools.js +4 -1
  395. package/dist/server/registerProcessComparisonTool.js +5 -2
  396. package/dist/server/registerSessionTools.js +3 -1
  397. package/dist/server/runDerivedOperation.js +1 -1
  398. package/dist/server/sessionAvailabilityPolicy.js +3 -0
  399. package/dist/server/sessionEvidence.js +1 -1
  400. package/dist/server/toolResult.js +2 -1
  401. package/dist/windows/WindowsNativeLoader.js +108 -0
  402. package/dist/windows/WindowsOwnedProcess.js +168 -0
  403. package/dist/windows/WindowsPrivateRuntime.js +137 -0
  404. package/install.sh +4 -6
  405. package/native/windows/README.md +102 -0
  406. package/native/windows/build/manifest.json +9 -0
  407. package/native/windows/build/rea-windows-x64.node +0 -0
  408. package/package.json +38 -24
  409. package/scripts/rea.mjs +1 -1
  410. package/scripts/verify-windows-native-artifact.mjs +39 -0
  411. package/skills/reverse-engineer-anything/SKILL.md +92 -24
  412. package/skills/reverse-engineer-anything/references/android-applications.md +31 -0
  413. package/skills/reverse-engineer-anything/references/javascript-applications.md +19 -2
  414. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +52 -4
  415. package/dist/browser/CdpCanonicalJsonDigest.js +0 -9
  416. package/dist/domain/errors.js +0 -324
@@ -1,11 +1,15 @@
1
1
  import { z } from "zod";
2
2
  import { ArtifactReaderFailure } from "../artifacts/ArtifactReader.js";
3
3
  import { analyzeJavaScriptApplicationInputSchema, javascriptApplicationAnalysisResultSchema, } from "../domain/javascriptApplicationAnalysis.js";
4
- import { AnalysisInputError, AnalysisProtocolError, ArtifactOperationError, } from "../domain/errors.js";
4
+ import { AnalysisInputError, AnalysisOutputError, } from "../domain/analysisErrorCore.js";
5
+ import { ArtifactOperationError } from "../domain/artifactOperationError.js";
6
+ import {} from "../domain/analysisErrorBase.js";
5
7
  import { projectInputIssues } from "../domain/inputIssueProjection.js";
6
8
  import { err, ok } from "../domain/result.js";
9
+ import { ProviderAdapterError } from "../domain/providerAdapterError.js";
7
10
  import { createJavaScriptApplicationEvidence } from "./JavaScriptApplicationEvidence.js";
8
11
  import { reconstructJavaScriptArtifact } from "./JavaScriptArtifactReconstruction.js";
12
+ import { JAVASCRIPT_APPLICATION_PROVIDER } from "./InvestigationProviders.js";
9
13
  const OPERATION = "analyze_javascript_application";
10
14
  /** Statically analyze one local JavaScript/Electron application. */
11
15
  export const analyzeJavaScriptApplication = async (rawInput, options = {}) => {
@@ -46,7 +50,50 @@ export const analyzeJavaScriptApplicationValidated = async (input, options = {})
46
50
  if (cause instanceof ArtifactReaderFailure)
47
51
  return err(new ArtifactOperationError(OPERATION, cause.reason, cause.details));
48
52
  if (cause instanceof z.ZodError)
49
- return err(new AnalysisProtocolError("JavaScript application analysis produced an invalid result", { cause }));
50
- return err(new ArtifactOperationError(OPERATION, "io"));
53
+ return err(new AnalysisOutputError(OPERATION, describeResultSchemaFailure(cause), {
54
+ cause,
55
+ }));
56
+ if (cause instanceof Error &&
57
+ "code" in cause &&
58
+ typeof cause.code === "string" &&
59
+ FILESYSTEM_ERROR_CODES.has(cause.code))
60
+ return err(new ArtifactOperationError(OPERATION, "io"));
61
+ return err(new ProviderAdapterError(JAVASCRIPT_APPLICATION_PROVIDER.id, OPERATION, {
62
+ cause,
63
+ diagnostics: {
64
+ input_path: input.input_path,
65
+ error_name: cause instanceof Error ? cause.name : "UnknownError",
66
+ error_message: cause instanceof Error
67
+ ? cause.message
68
+ : typeof cause === "string"
69
+ ? cause
70
+ : "JavaScript analysis failed with a non-Error value",
71
+ },
72
+ }));
51
73
  }
52
74
  };
75
+ const describeResultSchemaFailure = (cause) => {
76
+ const issue = cause.issues[0];
77
+ if (issue === undefined)
78
+ return "Result schema rejected an unknown issue";
79
+ const path = issue.path.flatMap((part) => typeof part === "string" || typeof part === "number" ? [part] : []);
80
+ const pointer = path.length === 0
81
+ ? "/"
82
+ : `/${path.map((part) => escapePointerPart(String(part))).join("/")}`;
83
+ return `Result schema rejected ${String(cause.issues.length)} ${cause.issues.length === 1 ? "issue" : "issues"} at ${pointer} (${issue.code})`;
84
+ };
85
+ const escapePointerPart = (part) => part.replaceAll("~", "~0").replaceAll("/", "~1");
86
+ const FILESYSTEM_ERROR_CODES = new Set([
87
+ "ENOENT",
88
+ "EACCES",
89
+ "EPERM",
90
+ "ENOTDIR",
91
+ "EISDIR",
92
+ "EIO",
93
+ "ELOOP",
94
+ "ENAMETOOLONG",
95
+ "EMFILE",
96
+ "ENFILE",
97
+ "ENOSPC",
98
+ "EROFS",
99
+ ]);
@@ -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 { projectInputIssues } from "../domain/inputIssueProjection.js";
4
5
  import { compareJavaScriptApplicationVersions } from "../domain/javascriptApplicationVersionComparison.js";
5
6
  import { compareApplicationVersionsInputSchema } from "../domain/javascriptApplicationVersionComparisonSchemas.js";
@@ -102,7 +102,8 @@ const parsePackage = (file) => {
102
102
  try {
103
103
  value = JSON.parse(file.text.value);
104
104
  }
105
- catch {
105
+ catch (cause) {
106
+ void cause;
106
107
  return invalidPackage(file, "package.json is not valid JSON.");
107
108
  }
108
109
  if (!isRecord(value))
@@ -163,7 +164,8 @@ const parseSourceMap = (file) => {
163
164
  try {
164
165
  value = JSON.parse(file.text.value);
165
166
  }
166
- catch {
167
+ catch (cause) {
168
+ void cause;
167
169
  return invalidSourceMap(file, "Source map is not valid JSON.");
168
170
  }
169
171
  const maps = flattenSourceMaps(value);
@@ -1,5 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { isAbsolute } from "node:path";
3
+ import { compareCodePoints } from "../domain/canonicalOrdering.js";
3
4
  import { AsarArtifactReader } from "../artifacts/AsarArtifactReader.js";
4
5
  import { ArtifactPathRegistry, normalizeArtifactPath, } from "../artifacts/ArtifactPaths.js";
5
6
  import { ArtifactReaderFailure, } from "../artifacts/ArtifactReader.js";
@@ -117,7 +118,9 @@ const readText = async (context, input) => {
117
118
  value: new TextDecoder("utf-8", { fatal: true }).decode(bytes),
118
119
  };
119
120
  }
120
- catch {
121
+ catch (cause) {
122
+ // Non-UTF8 bytes are counted; the fixed reason preserves the schema.
123
+ void cause;
121
124
  context.invalidUtf8 += 1;
122
125
  return { included: false, reason: "invalid-utf8" };
123
126
  }
@@ -197,4 +200,3 @@ const abortIfNeeded = (signal) => {
197
200
  if (signal?.aborted === true)
198
201
  throw new ArtifactReaderFailure("cancelled", "JavaScript artifact reconstruction cancelled");
199
202
  };
200
- const compareCodePoints = (left, right) => left < right ? -1 : left > right ? 1 : 0;
@@ -296,7 +296,9 @@ const packageEntry = (text, moduleKind, useExports) => {
296
296
  const legacy = packagePathValue(entry);
297
297
  return legacy.status === "value" ? { ...legacy, source: "legacy" } : legacy;
298
298
  }
299
- catch {
299
+ catch (cause) {
300
+ // Reflect-based manifest reads fail closed as invalid.
301
+ void cause;
300
302
  return { status: "invalid" };
301
303
  }
302
304
  };
@@ -390,7 +392,9 @@ const fileUrlPath = (value) => {
390
392
  return undefined;
391
393
  return decodeURIComponent(url.pathname).replace(/^\/+/, "");
392
394
  }
393
- catch {
395
+ catch (cause) {
396
+ // Unparseable file URLs have no path to resolve.
397
+ void cause;
394
398
  return undefined;
395
399
  }
396
400
  };
@@ -1,3 +1,4 @@
1
+ import { compareCodePoints } from "../domain/canonicalOrdering.js";
1
2
  /** Parse one approved JSON module without evaluating JavaScript or resolving imports. */
2
3
  export const analyzeJavaScriptJsonModule = (file) => {
3
4
  if (!file.text.included)
@@ -13,7 +14,8 @@ export const analyzeJavaScriptJsonModule = (file) => {
13
14
  try {
14
15
  value = JSON.parse(file.text.value);
15
16
  }
16
- catch {
17
+ catch (cause) {
18
+ void cause;
17
19
  return {
18
20
  path: file.path,
19
21
  sha256: file.sha256,
@@ -36,4 +38,3 @@ export const analyzeJavaScriptJsonModule = (file) => {
36
38
  limitation: null,
37
39
  };
38
40
  };
39
- const compareCodePoints = (left, right) => left < right ? -1 : left > right ? 1 : 0;
@@ -1,4 +1,5 @@
1
1
  import { posix } from "node:path";
2
+ import { compareCodePoints } from "../domain/canonicalOrdering.js";
2
3
  import { completeApplicationCoverage, partialApplicationCoverage, } from "../domain/javascriptApplicationEvidenceSchemas.js";
3
4
  import { addAstContainsEdge, artifactLocalIdentity, } from "./JavaScriptArtifactGraphContext.js";
4
5
  import { astObservationEvidence, staticInferenceEvidence, } from "./JavaScriptArtifactGraphEvidence.js";
@@ -271,11 +272,12 @@ const jsonStatus = (file) => {
271
272
  JSON.parse(file.text.value);
272
273
  return "included";
273
274
  }
274
- catch {
275
+ catch (cause) {
276
+ // Invalid JSON is classified without further detail.
277
+ void cause;
275
278
  return "invalid";
276
279
  }
277
280
  };
278
281
  const isExportLink = (link) => link.kind === "export" ||
279
282
  link.kind === "re-export" ||
280
283
  link.kind === "commonjs-export";
281
- const compareCodePoints = (left, right) => left < right ? -1 : left > right ? 1 : 0;
@@ -1,5 +1,6 @@
1
1
  import { createJavaScriptRuntimeObservationEvidence } from "./JavaScriptRuntimeObservationEvidence.js";
2
- import { AnalysisCapabilityUnavailableError, } from "../domain/errors.js";
2
+ import { AnalysisCapabilityUnavailableError } from "../domain/analysisErrorCore.js";
3
+ import {} from "../domain/analysisErrorBase.js";
3
4
  import { err, ok } from "../domain/result.js";
4
5
  /** List targets exposed by the explicitly selected loopback Inspector. */
5
6
  export const listJavaScriptRuntimeTargets = async (provider, input, options = {}) => {
@@ -1,6 +1,7 @@
1
1
  import { resolve } from "node:path";
2
2
  import { z } from "zod";
3
- import { AnalysisInputError, AnalysisProtocolError, } from "../domain/errors.js";
3
+ import { AnalysisInputError, AnalysisProtocolError, } from "../domain/analysisErrorCore.js";
4
+ import {} from "../domain/analysisErrorBase.js";
4
5
  import { projectInputIssues } from "../domain/inputIssueProjection.js";
5
6
  import { reconcileJavaScriptRuntime } from "../domain/javascriptRuntimeReconciliation.js";
6
7
  import { reconcileJavaScriptRuntimeInputSchema } from "../domain/javascriptRuntimeReconciliationSchemas.js";
@@ -1,4 +1,4 @@
1
- import { compareCodePoints } from "../domain/javascriptApplicationGraph.js";
1
+ import { compareCodePoints } from "../domain/canonicalOrdering.js";
2
2
  import { JAVASCRIPT_SEMANTIC_RELATION_FAMILIES } from "../domain/javascriptSemanticGraphSchemas.js";
3
3
  /** Find the innermost callable that contains one exact source range. */
4
4
  export const owningSemanticCallableNode = (location, ir, nodes) => {
@@ -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 { jsonValueSchema } from "../domain/jsonValue.js";
4
5
  import { queryJavaScriptSemanticGraph } from "../domain/javascriptSemanticQuery.js";
5
6
  import { javaScriptSemanticTraceResultSchema, traceJavaScriptSemanticsInputSchema, } from "../domain/javascriptSemanticTraceSchemas.js";
@@ -1,7 +1,7 @@
1
1
  import { link, lstat, mkdtemp, readFile, realpath, rm } from "node:fs/promises";
2
2
  import { basename, dirname, resolve } from "node:path";
3
3
  import writeFileAtomic from "write-file-atomic";
4
- import { EvidenceFileError } from "../domain/errors.js";
4
+ import { EvidenceFileError } from "../domain/evidenceErrors.js";
5
5
  import { err, ok } from "../domain/result.js";
6
6
  /** Read JSON data from a regular file at the caller-supplied path. */
7
7
  export const readJsonFile = async (path) => {
@@ -1,4 +1,6 @@
1
- import { AnalysisCancelledError, AnalysisError, ProviderAdapterError, } from "../domain/errors.js";
1
+ import { AnalysisCancelledError } from "../domain/analysisErrorCore.js";
2
+ import { AnalysisError } from "../domain/analysisErrorBase.js";
3
+ import { ProviderAdapterError } from "../domain/providerAdapterError.js";
2
4
  import { err } from "../domain/result.js";
3
5
  import { ABORTED, waitForAbortable } from "./AbortablePromise.js";
4
6
  const isAborted = (signal) => signal?.aborted === true;
@@ -73,7 +73,9 @@ export const readLinuxDistribution = async () => {
73
73
  try {
74
74
  return parseLinuxDistribution(await readFile("/etc/os-release", "utf8"));
75
75
  }
76
- catch {
76
+ catch (cause) {
77
+ // best-effort cleanup: optional host probing; unknown distribution means unsupported.
78
+ void cause;
77
79
  return undefined;
78
80
  }
79
81
  };
@@ -143,7 +145,9 @@ const systemLinuxHopperInstallHost = () => ({
143
145
  ? "ready"
144
146
  : "unsupported_hopper_build";
145
147
  }
146
- catch {
148
+ catch (cause) {
149
+ // best-effort cleanup: optional launcher probing; unreadable means missing.
150
+ void cause;
147
151
  return "missing";
148
152
  }
149
153
  },
@@ -157,7 +161,9 @@ export const linuxHopperBinarySupported = async (path) => {
157
161
  hash.update(chunk);
158
162
  return hash.digest("hex") === SUPPORTED_HOPPER_SHA256;
159
163
  }
160
- catch {
164
+ catch (cause) {
165
+ // best-effort cleanup: optional build probing; unreadable means unsupported.
166
+ void cause;
161
167
  return false;
162
168
  }
163
169
  };
@@ -169,7 +175,9 @@ const installSystemPackage = async (family, archive) => {
169
175
  await execFileAsync(command.executable, command.args);
170
176
  return true;
171
177
  }
172
- catch {
178
+ catch (cause) {
179
+ // Package-manager failure is reported by the false return.
180
+ void cause;
173
181
  return false;
174
182
  }
175
183
  };
@@ -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
  };
@@ -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 { jsonValueSchema } from "../domain/jsonValue.js";
5
6
  import { managedApplicationGraphResultSchema, projectManagedApplicationGraph, projectManagedApplicationGraphInputSchema, } from "../domain/managedApplicationGraph.js";
@@ -2,7 +2,9 @@ import { createHash } from "node:crypto";
2
2
  import { readFile } from "node:fs/promises";
3
3
  import { z } from "zod";
4
4
  import { compareManagedMembers, managedMemberComparisonResultSchema, parseManagedMemberEvidence, } from "../domain/managedMemberComparison.js";
5
- import { AnalysisInputError, AnalysisProtocolError, EvidenceIntegrityError, } from "../domain/errors.js";
5
+ import { AnalysisInputError, AnalysisProtocolError, } from "../domain/analysisErrorCore.js";
6
+ import { EvidenceIntegrityError } from "../domain/evidenceErrors.js";
7
+ import {} from "../domain/analysisErrorBase.js";
6
8
  import { createEvidence } from "../domain/evidence.js";
7
9
  import { jsonValueSchema } from "../domain/jsonValue.js";
8
10
  import { parseBinaryTarget } from "./BinaryTargetResolver.js";
@@ -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 { jsonValueSchema } from "../domain/jsonValue.js";
5
6
  import { managedNativeVerificationInputSchema, verifyManagedNativeBoundaries, } from "../domain/managedNativeVerification.js";
@@ -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 { jsonValueSchema } from "../domain/jsonValue.js";
5
6
  import { importManagedReconstruction, managedReconstructionImportInputSchema, } from "../domain/managedReconstruction.js";
@@ -1,7 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { parseRelatedAddresses, referenceKindSchema, } from "../domain/hopperValues.js";
3
3
  import { err, ok } from "../domain/result.js";
4
- import { AnalysisOutputError } from "../domain/errors.js";
4
+ import { AnalysisOutputError } from "../domain/analysisErrorCore.js";
5
5
  const referencesSchema = z.object({
6
6
  reference_kinds_available: z.boolean().optional(),
7
7
  references: z.array(z.object({
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { nativeDispatchMetadataResultSchema, inspectNativeDispatchMetadata, } from "../domain/objcSwiftMetadata.js";
3
- import { AnalysisOutputError } from "../domain/errors.js";
3
+ import { AnalysisOutputError } from "../domain/analysisErrorCore.js";
4
4
  import { jsonValueSchema } from "../domain/jsonValue.js";
5
5
  import { err, ok } from "../domain/result.js";
6
6
  /** Prefer validated binary metadata, otherwise preserve the bound provider's symbol-only coverage. */
@@ -6,7 +6,8 @@ import { inspectNativeDispatch } from "./NativeDispatchMetadataInspection.js";
6
6
  import { jsonValueSchema } from "../domain/jsonValue.js";
7
7
  import { readNativeCallRoutes } from "./NativeCallRoutes.js";
8
8
  import { err, ok } from "../domain/result.js";
9
- import { AnalysisOutputError, projectAnalysisError } from "../domain/errors.js";
9
+ import { AnalysisOutputError } from "../domain/analysisErrorCore.js";
10
+ import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
10
11
  /** Build a UI-to-code trace from the active app and selected native provider. */
11
12
  export const traceNativeUiAction = async (analysis, input, signal) => {
12
13
  const [uiExecution, metadataExecution] = await Promise.all([
@@ -2,7 +2,7 @@ import { functionDossierSchema } from "../domain/hopperValues.js";
2
2
  import { nativeCallTargetsSchema } from "../domain/nativeInstruction.js";
3
3
  import { nativeValueTraceInputSchema, nativeValueTraceSchema, } from "../domain/nativeValueTrace.js";
4
4
  import { createEvidence } from "../domain/evidence.js";
5
- import { AnalysisCancelledError, AnalysisOutputError, } from "../domain/errors.js";
5
+ import { AnalysisCancelledError, AnalysisOutputError, } from "../domain/analysisErrorCore.js";
6
6
  import { err, ok } from "../domain/result.js";
7
7
  /** Compose bounded high-p-code def-use graphs across exactly referenced call destinations. */
8
8
  export const traceNativeValues = async (analysis, parameters, signal) => {
@@ -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;
@@ -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,16 @@ 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
117
  const parsed = JSON.parse(bytes.toString("utf8"));
115
118
  return parsed;
116
119
  }
117
- catch {
120
+ catch (cause) {
121
+ void cause;
118
122
  throw new ProcessCliFailure("invalid_input", "Process input file is not valid JSON. Repair the file, then try again.");
119
123
  }
120
124
  };
@@ -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";
@@ -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,5 +1,6 @@
1
1
  import { z } from "zod";
2
- import { AnalysisInputError } from "../domain/errors.js";
2
+ import { AnalysisInputError } from "../domain/analysisErrorCore.js";
3
+ import {} from "../domain/analysisErrorBase.js";
3
4
  import { evaluateReconstructionClosure, reconstructionCoverageDataSchema, } from "../domain/reconstructionCoverage.js";
4
5
  import { jsonValueSchema } from "../domain/jsonValue.js";
5
6
  import { err, ok } from "../domain/result.js";
@@ -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";