rea-agents 3.1.0 → 3.2.1

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 (590) hide show
  1. package/README.md +72 -95
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisSnapshotCache.js +0 -1
  6. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  7. package/dist/application/AndroidApplicationService.js +1 -1
  8. package/dist/application/AppleApplicationService.js +1 -1
  9. package/dist/application/ArtifactExtraction.js +35 -54
  10. package/dist/application/ArtifactExtractionDestination.js +17 -0
  11. package/dist/application/ArtifactGraphConstruction.js +2 -17
  12. package/dist/application/ArtifactInventory/classify.js +2 -6
  13. package/dist/application/ArtifactInventory/hash.js +2 -20
  14. package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
  15. package/dist/application/ArtifactInventory/scanReader.js +69 -51
  16. package/dist/application/ArtifactInventory.js +6 -14
  17. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  18. package/dist/application/BinarySession.js +41 -13
  19. package/dist/application/BinarySessionComposition.js +0 -11
  20. package/dist/application/BinarySessionOpen.js +2 -1
  21. package/dist/application/BinarySessionRecords.js +5 -93
  22. package/dist/application/BinarySessionStatus.js +5 -16
  23. package/dist/application/BinaryTargetResolver.js +216 -0
  24. package/dist/application/BrowserEvidence.js +42 -58
  25. package/dist/application/BrowserObservationService.js +3 -6
  26. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  27. package/dist/application/BrowserScenarioEvidence.js +3 -3
  28. package/dist/application/CallPathTracing.js +2 -36
  29. package/dist/application/CapabilityInventory.js +10 -15
  30. package/dist/application/ClientConfigurationDocument.js +27 -0
  31. package/dist/application/ClientRegistrationStatus.js +16 -13
  32. package/dist/application/CommandShimReplay.js +14 -1
  33. package/dist/application/DirectAnalysis.js +22 -46
  34. package/dist/application/DirectAnalysisStatus.js +5 -61
  35. package/dist/application/Doctor.js +11 -32
  36. package/dist/application/DoctorDiagnostics.js +1 -2
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/ElectronActiveEvidence.js +3 -8
  39. package/dist/application/ElectronActiveObservationService.js +3 -6
  40. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  41. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  42. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  43. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  44. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  45. package/dist/application/ElectronEvidence.js +4 -7
  46. package/dist/application/ElectronObservationService.js +5 -9
  47. package/dist/application/EnhancedLiteralTracing.js +42 -65
  48. package/dist/application/EnhancedTools.js +76 -44
  49. package/dist/application/EvidenceBundleCommands.js +11 -11
  50. package/dist/application/EvidenceBundleFiles.js +9 -15
  51. package/dist/application/EvidenceLedger.js +6 -41
  52. package/dist/application/FilesystemSnapshot.js +2 -3
  53. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  54. package/dist/application/InventoryProjectionEvidence.js +4 -2
  55. package/dist/application/InvestigationProviders.js +1 -1
  56. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  57. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  58. package/dist/application/JavaScriptApplicationService.js +6 -29
  59. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  60. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  61. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  62. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  63. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  64. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  65. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  66. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  67. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  68. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  69. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  70. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  71. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  72. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  73. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  74. package/dist/application/JavaScriptJsonModules.js +2 -2
  75. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  76. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  77. package/dist/application/JavaScriptReplayService.js +6 -32
  78. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  79. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  80. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  81. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  82. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  83. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  84. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  85. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  86. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  87. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  88. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  89. package/dist/application/JsonFiles.js +79 -0
  90. package/dist/application/LinuxHopper.js +11 -9
  91. package/dist/application/LoopbackReplay.js +26 -23
  92. package/dist/application/LoopbackReplayRecorder.js +29 -1
  93. package/dist/application/ManagedApplicationGraphService.js +1 -2
  94. package/dist/application/ManagedMemberComparisonService.js +11 -41
  95. package/dist/application/ManagedNativeVerificationService.js +1 -2
  96. package/dist/application/ManagedReconstructionService.js +1 -1
  97. package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
  98. package/dist/application/NativeApiInspection.js +2 -7
  99. package/dist/application/NativeUiActionTrace.js +394 -0
  100. package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
  101. package/dist/application/PermissionAuthority.js +15 -7
  102. package/dist/application/PermissionFailure.js +5 -0
  103. package/dist/application/ProcessCaptureAuthority.js +5 -7
  104. package/dist/application/ProcessCaptureJournal.js +3 -2
  105. package/dist/application/ProcessCaptureLifecycle.js +5 -12
  106. package/dist/application/ProcessCheckpoints.js +29 -11
  107. package/dist/application/ProcessCli.js +6 -16
  108. package/dist/application/ProcessEvidence.js +5 -7
  109. package/dist/application/ProcessHarness.js +52 -17
  110. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  111. package/dist/application/ProcessReactiveEffects.js +9 -3
  112. package/dist/application/ProcessReactiveHarness.js +13 -7
  113. package/dist/application/ProcessSampling.js +2 -4
  114. package/dist/application/ProcessTimer.js +39 -0
  115. package/dist/application/ProjectPermissionStore.js +39 -96
  116. package/dist/application/RealHopperAssertions.js +20 -66
  117. package/dist/application/ReconstructionCoverageService.js +12 -58
  118. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  119. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  120. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  121. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  122. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  123. package/dist/application/ReferenceSourceImport.js +19 -45
  124. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  125. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  126. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  127. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  128. package/dist/application/SessionProviderRouter.js +2 -2
  129. package/dist/application/Setup.js +1 -3
  130. package/dist/application/SetupClientConfiguration.js +22 -93
  131. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  132. package/dist/application/StoreFileLock.js +119 -0
  133. package/dist/application/TerminalRenderer.js +2 -3
  134. package/dist/application/Uninstall.js +9 -14
  135. package/dist/application/UnknownEvidence.js +1 -1
  136. package/dist/artifacts/ArtifactPaths.js +2 -5
  137. package/dist/artifacts/ArtifactProvider.js +36 -58
  138. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  139. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  140. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  141. package/dist/artifacts/NibArchive.js +269 -0
  142. package/dist/artifacts/SafeOutputTree.js +15 -24
  143. package/dist/browser/BrowserProcessStartup.js +1 -2
  144. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  145. package/dist/browser/CdpBrowserProvider.js +3 -13
  146. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  147. package/dist/browser/CdpCaptureDocuments.js +28 -76
  148. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  149. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  150. package/dist/browser/CdpCaptureEvents.js +2 -8
  151. package/dist/browser/CdpCaptureStorage.js +9 -20
  152. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
  153. package/dist/browser/CdpCaptureValues.js +21 -21
  154. package/dist/browser/CdpConnection.js +10 -25
  155. package/dist/browser/CdpElectronInspection.js +26 -50
  156. package/dist/browser/CdpElectronProvider.js +10 -35
  157. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  158. package/dist/browser/CdpElectronScripts.js +6 -35
  159. package/dist/browser/CdpElectronWorkers.js +6 -10
  160. package/dist/browser/CdpEndpoint.js +25 -41
  161. package/dist/browser/CdpObservationSession.js +14 -26
  162. package/dist/browser/CdpPageCapture.js +34 -48
  163. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  164. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  165. package/dist/browser/CdpSafeMetadata.js +19 -22
  166. package/dist/browser/CdpScreenshot.js +3 -5
  167. package/dist/browser/CdpTargetSession.js +1 -2
  168. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  169. package/dist/browser/ElectronFileScope.js +8 -19
  170. package/dist/browser/JavaScriptRuntimeScope.js +9 -14
  171. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  172. package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
  174. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  175. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  176. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  177. package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
  178. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  179. package/dist/browser/PlaywrightScenarioSession.js +14 -30
  180. package/dist/browser/PngVisualDiff.js +22 -14
  181. package/dist/browser/SensitiveTextCapture.js +0 -17
  182. package/dist/browser/V8InspectorCaptureProjection.js +7 -8
  183. package/dist/browser/V8InspectorEndpoint.js +12 -14
  184. package/dist/browser/V8InspectorProvider.js +20 -61
  185. package/dist/browser/WebSourceMapFetcher.js +56 -176
  186. package/dist/catalogIdentity.js +0 -54
  187. package/dist/cli/artifactCommands.js +49 -77
  188. package/dist/cli/coreAnalysisCommands.js +83 -133
  189. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  190. package/dist/cli/managedCommands.js +5 -270
  191. package/dist/cli/setupCommands.js +3 -12
  192. package/dist/cli/utilityCommands.js +7 -41
  193. package/dist/cli.js +0 -2
  194. package/dist/cliApplicationCommands.js +42 -112
  195. package/dist/cliBrowserAdvancedCommands.js +10 -106
  196. package/dist/cliBrowserCommands.js +15 -127
  197. package/dist/cliBrowserContext.js +30 -0
  198. package/dist/cliCommandNames.js +4 -5
  199. package/dist/cliElectronCommands.js +8 -72
  200. package/dist/cliEvidenceCommands.js +8 -77
  201. package/dist/cliJavaScriptRuntimeCommands.js +9 -91
  202. package/dist/cliJsonInput.js +4 -14
  203. package/dist/cliObservationOptions.js +11 -96
  204. package/dist/cliPolicyCommands.js +2 -17
  205. package/dist/cliProcessCommands.js +3 -3
  206. package/dist/cliSetup.js +0 -13
  207. package/dist/config/browserScenario.js +2 -2
  208. package/dist/config/environment.js +0 -9
  209. package/dist/config/parseConfig.js +1 -33
  210. package/dist/config/parsers.js +6 -27
  211. package/dist/config/passiveObservation.js +7 -77
  212. package/dist/config/permissions.js +0 -7
  213. package/dist/contracts/analysisSearchContract.js +2 -5
  214. package/dist/contracts/applicationToolContracts.js +56 -109
  215. package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
  216. package/dist/contracts/artifactComparisonExample.js +58 -60
  217. package/dist/contracts/artifactToolContracts.js +20 -67
  218. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  219. package/dist/contracts/browserToolContracts.js +8 -73
  220. package/dist/contracts/electronToolContracts.js +8 -108
  221. package/dist/contracts/enhancedInputs.js +23 -54
  222. package/dist/contracts/errorSchemas.js +0 -1
  223. package/dist/contracts/functionComparisonExample.js +10 -24
  224. package/dist/contracts/functionInstructionContract.js +1 -3
  225. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  226. package/dist/contracts/hopperMemoryContracts.js +3 -3
  227. package/dist/contracts/investigationExamples.js +14 -11
  228. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  229. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  230. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  231. package/dist/contracts/managedToolContracts.js +6 -95
  232. package/dist/contracts/managedWorkflowExamples.js +77 -128
  233. package/dist/contracts/managedWorkflowToolContracts.js +51 -77
  234. package/dist/contracts/nativeToolContracts.js +7 -11
  235. package/dist/contracts/processCaptureExample.js +2 -69
  236. package/dist/contracts/promptContracts.js +49 -67
  237. package/dist/contracts/providerSelection.js +0 -1
  238. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  239. package/dist/contracts/sessionStatusContract.js +1 -17
  240. package/dist/contracts/sessionToolSchemas.js +6 -15
  241. package/dist/contracts/toolContractExamples.js +11 -11
  242. package/dist/contracts/toolContractHelpers.js +0 -4
  243. package/dist/contracts/toolContracts.js +60 -71
  244. package/dist/contracts/toolEffects.js +5 -13
  245. package/dist/contracts/toolOutputSchemaGroups.js +37 -91
  246. package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
  247. package/dist/contracts/toolSchemaMetadata.js +8 -19
  248. package/dist/contracts/unknownContractExamples.js +0 -2
  249. package/dist/domain/analysisErrorPresentation.js +46 -54
  250. package/dist/domain/analysisErrorProjection.js +28 -37
  251. package/dist/domain/analysisProfile.js +3 -31
  252. package/dist/domain/analysisSnapshot.js +3 -12
  253. package/dist/domain/androidApplication.js +15 -54
  254. package/dist/domain/appleApplication.js +24 -67
  255. package/dist/domain/artifactComparison.js +11 -29
  256. package/dist/domain/artifactGraph.js +14 -44
  257. package/dist/domain/artifactInspection.js +38 -69
  258. package/dist/domain/artifactInventoryEvidence.js +27 -21
  259. package/dist/domain/binaryTarget.js +2 -221
  260. package/dist/domain/browserCaptureComparison.js +47 -24
  261. package/dist/domain/browserObservation.js +28 -193
  262. package/dist/domain/browserObservationSchemas.js +5 -23
  263. package/dist/domain/browserScenario.js +11 -14
  264. package/dist/domain/browserScenarioCapture.js +11 -12
  265. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  266. package/dist/domain/browserScenarioDiff.js +2 -59
  267. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  268. package/dist/domain/browserScenarioDiffValues.js +21 -38
  269. package/dist/domain/browserScenarioValues.js +80 -109
  270. package/dist/domain/browserSession.js +4 -7
  271. package/dist/domain/bundleComparison.js +6 -32
  272. package/dist/domain/bytecodeProvider.js +20 -19
  273. package/dist/domain/callPath.js +47 -167
  274. package/dist/domain/callPathSchemas.js +79 -0
  275. package/dist/domain/changedBehavior.js +34 -60
  276. package/dist/domain/completionLedgerGeneration.js +8 -14
  277. package/dist/domain/conformancePackage.js +126 -97
  278. package/dist/domain/conformanceReplay.js +36 -8
  279. package/dist/domain/conformanceTrustGate.js +23 -14
  280. package/dist/domain/customProtocolCapture.js +1 -1
  281. package/dist/domain/electronActiveObservation.js +70 -103
  282. package/dist/domain/electronObservation.js +14 -80
  283. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  284. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  285. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  286. package/dist/domain/electronStaticAnalysisValues.js +10 -17
  287. package/dist/domain/errors.js +33 -54
  288. package/dist/domain/eventProcessTree.js +20 -12
  289. package/dist/domain/evidence.js +2 -10
  290. package/dist/domain/evidenceBundle.js +3 -5
  291. package/dist/domain/evidenceCompletionLedger.js +6 -8
  292. package/dist/domain/functionComparison.js +4 -14
  293. package/dist/domain/functionComparisonNormalization.js +4 -11
  294. package/dist/domain/functionComparisonResults.js +25 -15
  295. package/dist/domain/functionComparisonSchemas.js +49 -33
  296. package/dist/domain/functionDossierEvidence.js +31 -156
  297. package/dist/domain/hopperStartupFailure.js +1 -1
  298. package/dist/domain/hopperValues.js +15 -136
  299. package/dist/domain/interfaceBuilderGraph.js +654 -0
  300. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  301. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  302. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  303. package/dist/domain/javascriptApplicationGraph.js +3 -13
  304. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  305. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  306. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  307. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  308. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  309. package/dist/domain/javascriptAstFingerprint.js +25 -58
  310. package/dist/domain/javascriptAstValues.js +9 -0
  311. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  312. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  313. package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
  314. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  315. package/dist/domain/javascriptFeatureSeed.js +20 -12
  316. package/dist/domain/javascriptFeatureTrace.js +13 -67
  317. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  318. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  319. package/dist/domain/javascriptNativeHandoff.js +1 -1
  320. package/dist/domain/javascriptReplay.js +24 -41
  321. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  322. package/dist/domain/javascriptRuntimeObservation.js +42 -103
  323. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  324. package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
  325. package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
  326. package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
  327. package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
  328. package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
  329. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  330. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
  331. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  332. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  333. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  334. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  335. package/dist/domain/javascriptSemanticCalls.js +5 -32
  336. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  337. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  338. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  339. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  340. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  341. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  342. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  343. package/dist/domain/javascriptSemanticIr.js +1 -29
  344. package/dist/domain/javascriptSemanticObjects.js +1 -5
  345. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  346. package/dist/domain/javascriptSemanticProjection.js +0 -18
  347. package/dist/domain/javascriptSemanticPromises.js +9 -16
  348. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  349. package/dist/domain/javascriptSemanticQuery.js +17 -139
  350. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  351. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  352. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  353. package/dist/domain/javascriptSemanticResources.js +1 -6
  354. package/dist/domain/javascriptSemanticReturns.js +10 -27
  355. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  356. package/dist/domain/javascriptSemanticValues.js +44 -62
  357. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  358. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  359. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  360. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  361. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  362. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  363. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  364. package/dist/domain/jsonShape.js +7 -33
  365. package/dist/domain/localPath.js +7 -0
  366. package/dist/domain/managedApplicationGraph.js +9 -41
  367. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  368. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  369. package/dist/domain/managedArtifact.js +14 -27
  370. package/dist/domain/managedMemberComparison.js +90 -92
  371. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  372. package/dist/domain/managedMemberComparisonItems.js +221 -0
  373. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  374. package/dist/domain/managedNativeVerification.js +3 -6
  375. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  376. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  377. package/dist/domain/managedReconstruction.js +19 -23
  378. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  379. package/dist/domain/nativeApiBoundary.js +2 -7
  380. package/dist/domain/nativeInspection.js +0 -2
  381. package/dist/domain/nativeInvestigationGraph.js +351 -0
  382. package/dist/domain/nativeValueFlow.js +61 -0
  383. package/dist/domain/nodeRuntimeCharacterization.js +1 -5
  384. package/dist/domain/objcSwiftMetadata.js +254 -0
  385. package/dist/domain/peInspection.js +1 -1
  386. package/dist/domain/permissionPolicy.js +13 -0
  387. package/dist/domain/processCapture.js +76 -113
  388. package/dist/domain/processCaptureExample.js +68 -0
  389. package/dist/domain/processCaptureParsing.js +21 -0
  390. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  391. package/dist/domain/processCaptureValidation.js +1 -7
  392. package/dist/domain/processComparison.js +3 -12
  393. package/dist/domain/processReactiveMatching.js +29 -50
  394. package/dist/domain/processReactiveRuntime.js +4 -8
  395. package/dist/domain/processReactiveScenario.js +28 -94
  396. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  397. package/dist/domain/processReactiveTransition.js +33 -18
  398. package/dist/domain/processScenario.js +56 -90
  399. package/dist/domain/processTraceComparison.js +0 -8
  400. package/dist/domain/processTraceEvaluation.js +14 -4
  401. package/dist/domain/processTraceSpecification.js +11 -17
  402. package/dist/domain/protocolCapture.js +3 -3
  403. package/dist/domain/reconstructionCoverage.js +62 -129
  404. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  405. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  406. package/dist/domain/reconstructionReadiness.js +1 -2
  407. package/dist/domain/reconstructionReadinessSchemas.js +36 -38
  408. package/dist/domain/reconstructionUnknowns.js +3 -3
  409. package/dist/domain/reconstructionVerification.js +13 -47
  410. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  411. package/dist/domain/referenceSourceGraph.js +53 -61
  412. package/dist/domain/referenceSourceImportParsing.js +1 -5
  413. package/dist/domain/replayMachine.js +19 -31
  414. package/dist/domain/replayMachineRun.js +15 -63
  415. package/dist/domain/replayMachineRuntime.js +41 -41
  416. package/dist/domain/replayMachineValues.js +84 -0
  417. package/dist/domain/residualUnknown.js +25 -30
  418. package/dist/domain/runtimeCharacterization.js +15 -16
  419. package/dist/domain/runtimeIdentification.js +48 -47
  420. package/dist/domain/sourceToBundleComparison.js +9 -85
  421. package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
  422. package/dist/domain/sourceToBundleSignals.js +4 -15
  423. package/dist/domain/staticRuntimeCorrelation.js +37 -49
  424. package/dist/domain/symbolAnalysis.js +10 -19
  425. package/dist/domain/unicodeCodePointOrder.js +12 -0
  426. package/dist/domain/webBundleAnalysis.js +70 -99
  427. package/dist/domain/webBundleAnalyzer.js +2 -4
  428. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  429. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  430. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  431. package/dist/domain/webCaptureDiff.js +33 -73
  432. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  433. package/dist/domain/webContentArtifact.js +1 -10
  434. package/dist/domain/webMcpDiscovery.js +3 -14
  435. package/dist/domain/webScreenshot.js +58 -34
  436. package/dist/domain/zipPackageFormat.js +7 -0
  437. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  438. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  439. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  440. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  441. package/dist/dotnet/ManagedMemberRows.js +16 -16
  442. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  443. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  444. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  445. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  446. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  447. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  448. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
  449. package/dist/dotnet/ManagedPeReader.js +2 -2
  450. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  451. package/dist/generatedMcpToolCatalog.js +1 -1
  452. package/dist/generatedPackageMetadata.js +1 -1
  453. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  454. package/dist/ghidra/GhidraClient.js +4 -12
  455. package/dist/ghidra/GhidraClientWire.js +9 -5
  456. package/dist/ghidra/GhidraDefaults.js +0 -18
  457. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  458. package/dist/ghidra/GhidraDoctor.js +16 -12
  459. package/dist/ghidra/GhidraFunctionValues.js +65 -108
  460. package/dist/ghidra/GhidraInstallation.js +98 -42
  461. package/dist/ghidra/GhidraInventoryValues.js +16 -85
  462. package/dist/ghidra/GhidraLauncher.js +0 -8
  463. package/dist/ghidra/GhidraProvider.js +15 -22
  464. package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
  465. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  466. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  467. package/dist/ghidra/GhidraSessionValues.js +0 -2
  468. package/dist/ghidra/GhidraTransport.js +4 -7
  469. package/dist/ghidra/protocol.js +2 -2
  470. package/dist/hopper/BridgeLauncher.js +112 -36
  471. package/dist/hopper/HopperAnalysisProfile.js +1 -1
  472. package/dist/hopper/HopperCleanup.js +6 -3
  473. package/dist/hopper/HopperClient.js +4 -7
  474. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  475. package/dist/hopper/HopperProvider.js +0 -16
  476. package/dist/hopper/HopperRequestQueue.js +21 -40
  477. package/dist/hopper/HopperResponseStream.js +1 -9
  478. package/dist/hopper/HopperSessionValues.js +3 -2
  479. package/dist/hopper/HopperTargetLease.js +119 -0
  480. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  481. package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
  482. package/dist/hopper/protocol.js +6 -4
  483. package/dist/main/reload.js +0 -3
  484. package/dist/main/shutdown.js +1 -1
  485. package/dist/main/state.js +0 -9
  486. package/dist/main/transport.js +0 -5
  487. package/dist/mcpDoctor.js +25 -45
  488. package/dist/native/CommandRunner.js +18 -25
  489. package/dist/native/NativeMacOSProvider.js +13 -38
  490. package/dist/native/NativeMachoInspection.js +1 -1
  491. package/dist/process/BoundedFileBytes.js +17 -0
  492. package/dist/process/ExecFileOutput.js +11 -0
  493. package/dist/process/PendingOperations.js +8 -6
  494. package/dist/process/ProcessOwnership.js +3 -2
  495. package/dist/process/ProcessOwnershipObservation.js +0 -1
  496. package/dist/process/ProviderProcess.js +7 -28
  497. package/dist/reference/ReferenceSourceReader.js +8 -24
  498. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  499. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  500. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  501. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  502. package/dist/replay/JavaScriptReplayWorker.js +3 -5
  503. package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
  504. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  505. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  506. package/dist/replay/ReplayOutcome.js +1 -3
  507. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  508. package/dist/replay/ReplaySeccompFile.js +29 -0
  509. package/dist/replay/ReplayWorkerProtocol.js +0 -2
  510. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  511. package/dist/server/ProcessCaptureElicitation.js +4 -8
  512. package/dist/server/createServer.js +6 -44
  513. package/dist/server/promptCompletion.js +37 -61
  514. package/dist/server/recordDerivedEvidence.js +1 -1
  515. package/dist/server/registerApplicationTools/characterization.js +4 -8
  516. package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
  517. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
  518. package/dist/server/registerApplicationTools/compareVersions.js +5 -10
  519. package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
  520. package/dist/server/registerApplicationTools/coverage.js +6 -71
  521. package/dist/server/registerApplicationTools/helpers.js +1 -13
  522. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  523. package/dist/server/registerApplicationTools/traceFeature.js +5 -9
  524. package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
  525. package/dist/server/registerApplicationTools.js +0 -2
  526. package/dist/server/registerArtifactComparisonTool.js +23 -27
  527. package/dist/server/registerBrowserScenarioTool.js +4 -4
  528. package/dist/server/registerBrowserTools.js +5 -8
  529. package/dist/server/registerBundleComparisonTool.js +5 -7
  530. package/dist/server/registerCloseLifecycleTool.js +2 -16
  531. package/dist/server/registerElectronTools.js +10 -29
  532. package/dist/server/registerEnhancedTools.js +10 -11
  533. package/dist/server/registerEvidenceTools.js +15 -22
  534. package/dist/server/registerFunctionComparisonTool.js +30 -25
  535. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  536. package/dist/server/registerInvestigationTools.js +20 -116
  537. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
  538. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
  539. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  540. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
  541. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
  542. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
  543. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
  544. package/dist/server/registerOfficialTools.js +1 -43
  545. package/dist/server/registerProcessComparisonTool.js +33 -23
  546. package/dist/server/registerPrompts.js +19 -17
  547. package/dist/server/registerSessionRecordTools.js +10 -156
  548. package/dist/server/registerSessionStatusTool.js +6 -69
  549. package/dist/server/registerSessionTools.js +10 -51
  550. package/dist/server/sessionAvailabilityPolicy.js +0 -2
  551. package/dist/server/sessionEvidence.js +9 -15
  552. package/dist/server/sessionToolPolicies.js +0 -8
  553. package/dist/server/toolResult.js +14 -50
  554. package/dist/serverIdentity.js +0 -20
  555. package/install.sh +1 -1
  556. package/package.json +11 -7
  557. package/scripts/electron-active-hook.cjs +23 -55
  558. package/scripts/hopper-demo-x11.py +13 -32
  559. package/skills/reverse-engineer-anything/SKILL.md +47 -12
  560. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  561. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  562. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  563. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
  564. package/dist/application/BoundedJsonFiles.js +0 -86
  565. package/dist/application/CrossVersionInventory.js +0 -129
  566. package/dist/application/CrossVersionInvestigation.js +0 -301
  567. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  568. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  569. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  570. package/dist/application/DeferredFileAuthorization.js +0 -61
  571. package/dist/application/DoctorProjection.js +0 -43
  572. package/dist/application/EnhancedToolPagination.js +0 -22
  573. package/dist/application/EvidenceReferenceResolver.js +0 -26
  574. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  575. package/dist/application/ProcessPairedExperiment.js +0 -72
  576. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  577. package/dist/application/ReconstructionReadinessService.js +0 -48
  578. package/dist/cliInvestigationCommands.js +0 -173
  579. package/dist/domain/boundedCartesianProjection.js +0 -15
  580. package/dist/domain/investigationWorkspace.js +0 -347
  581. package/dist/domain/jsonLimits.js +0 -26
  582. package/dist/domain/knownPageCoverage.js +0 -29
  583. package/dist/domain/processPairedExperiment.js +0 -128
  584. package/dist/server/javascriptApplicationResult.js +0 -106
  585. package/dist/server/permissionFailure.js +0 -12
  586. package/dist/server/registerApplicationTools/readiness.js +0 -50
  587. package/dist/server/registerEvidenceResources.js +0 -315
  588. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  589. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  590. package/dist/server/registerReconstructionReadinessResource.js +0 -32
@@ -1,10 +1,10 @@
1
1
  import { createEvidence, } from "../domain/evidence.js";
2
2
  import { jsonValueSchema } from "../domain/jsonValue.js";
3
- /** Create deterministic Evidence v2 for one passive Inspector operation. */
3
+ /** Create deterministic Evidence for one passive Inspector operation. */
4
4
  export const createJavaScriptRuntimeObservationEvidence = (operation, input, result, provider) => createEvidence(undefined, provider, {
5
5
  predicateType: operation === "list_javascript_runtime_targets"
6
- ? "rea.javascript-runtime-target-list/v1"
7
- : "rea.javascript-runtime-observation/v1",
6
+ ? "rea.javascript-runtime-target-list"
7
+ : "rea.javascript-runtime-observation",
8
8
  operation,
9
9
  parameters: parameters(input),
10
10
  result: jsonValueSchema.parse(result),
@@ -21,14 +21,13 @@ export const createJavaScriptRuntimeObservationEvidence = (operation, input, res
21
21
  });
22
22
  const parameters = (input) => ({
23
23
  inspector_endpoint: input.inspector_endpoint,
24
- allowed_file_roots: input.allowed_file_roots,
25
- allowed_origins: input.allowed_origins,
26
24
  ...("target_id" in input
27
25
  ? {
28
26
  target_id: input.target_id,
29
- runtime_kind: input.runtime_kind,
27
+ ...(input.runtime_kind === undefined
28
+ ? {}
29
+ : { runtime_kind: input.runtime_kind }),
30
30
  observation_ms: input.observation_ms,
31
- limits: input.limits,
32
31
  }
33
- : { offset: input.offset, limit: input.limit }),
32
+ : {}),
34
33
  });
@@ -1,5 +1,6 @@
1
+ import { projectPermissionFailure } from "./PermissionFailure.js";
1
2
  import { createJavaScriptRuntimeObservationEvidence } from "./JavaScriptRuntimeObservationEvidence.js";
2
- import { AnalysisCapabilityUnavailableError, AnalysisProtocolError, PermissionRequiredError, } from "../domain/errors.js";
3
+ import { AnalysisCapabilityUnavailableError, } from "../domain/errors.js";
3
4
  import { err, ok } from "../domain/result.js";
4
5
  /** Authorize and list attachable Node/Electron Inspector targets. */
5
6
  export const listJavaScriptRuntimeTargets = async (provider, authority, input, options = {}) => {
@@ -26,20 +27,15 @@ const prepare = async (provider, authority, input, operation) => {
26
27
  return err(new AnalysisCapabilityUnavailableError("rea-v8-inspector", operation, "V8 Inspector observation permission policy is not configured"));
27
28
  const authorized = await authority.authorize({
28
29
  capability: "v8_inspector_observe",
29
- roots: input.allowed_file_roots,
30
+ roots: [],
30
31
  executables: [],
31
32
  environment_names: [],
32
- origins: [input.inspector_endpoint, ...input.allowed_origins],
33
33
  network: "loopback",
34
34
  mount: false,
35
35
  operation_identity: `${operation}:${"target_id" in input ? input.target_id : input.inspector_endpoint}`,
36
36
  }, "read");
37
37
  if (!authorized.ok)
38
- return err(authorized.error instanceof PermissionRequiredError
39
- ? authorized.error
40
- : new AnalysisProtocolError(authorized.error.message, {
41
- cause: authorized.error,
42
- }));
38
+ return err(projectPermissionFailure(authorized.error));
43
39
  return provider === undefined
44
40
  ? err(new AnalysisCapabilityUnavailableError("rea-v8-inspector", operation, "V8 Inspector observation provider is not configured"))
45
41
  : ok(provider);
@@ -1,9 +1,9 @@
1
1
  import { createEvidence, } from "../domain/evidence.js";
2
2
  import { jsonValueSchema } from "../domain/jsonValue.js";
3
3
  import { JAVASCRIPT_RUNTIME_RECONCILIATION_PROVIDER } from "./InvestigationProviders.js";
4
- /** Create derived Evidence v2 for one exact set of static/runtime inputs. */
4
+ /** Create derived Evidence for one exact set of static/runtime inputs. */
5
5
  export const createJavaScriptRuntimeReconciliationEvidence = (input, result) => createEvidence(undefined, JAVASCRIPT_RUNTIME_RECONCILIATION_PROVIDER, {
6
- predicateType: "rea.javascript-runtime-reconciliation/v1",
6
+ predicateType: "rea.javascript-runtime-reconciliation",
7
7
  operation: "reconcile_javascript_runtime",
8
8
  parameters: parameters(input),
9
9
  result: jsonValueSchema.parse(result),
@@ -21,5 +21,4 @@ const parameters = (input) => ({
21
21
  runtime_mappings: layer.runtime_mappings,
22
22
  })),
23
23
  runtime_evidence_ids: input.runtime_observations.map(({ evidence_id: id }) => id),
24
- limits: input.limits,
25
24
  });
@@ -9,10 +9,10 @@ import { projectSemanticObjects } from "./JavaScriptSemanticGraphObjectProjectio
9
9
  import { projectSemanticValues } from "./JavaScriptSemanticGraphValueProjection.js";
10
10
  import { inferredSemanticEvidenceAt } from "./JavaScriptSemanticGraphEvidence.js";
11
11
  import { projectSemanticFunctionFingerprints } from "./JavaScriptSemanticGraphFingerprintProjection.js";
12
- import { projectSemanticClosureCaptures, projectSemanticFrontiers, projectSemanticPromises, projectSemanticReturnValues, semanticRecoveryLimits, } from "./JavaScriptSemanticGraphFlowProjection.js";
12
+ import { projectSemanticClosureCaptures, projectSemanticFrontiers, projectSemanticPromises, projectSemanticReturnValues, } from "./JavaScriptSemanticGraphFlowProjection.js";
13
13
  import { owningSemanticCallableNode, semanticFamilyStatus, semanticNodesWithinRange, } from "./JavaScriptSemanticGraphProjection.js";
14
- import { addSemanticFallbackRoot as addFallbackRoot, addSemanticGraphNode as addNode, addSemanticGraphRelation as addRelation, constructSemanticGraphNode as semanticNode, createSemanticGraphProjectionState as emptyState, MAX_APPLICATION_NODE_IDS_PER_SEMANTIC_NODE, MAX_SEMANTIC_GRAPH_NODES, MAX_SEMANTIC_GRAPH_RELATIONS, MAX_SEMANTIC_GRAPH_UNKNOWNS, } from "./JavaScriptSemanticGraphConstruction.js";
15
- /** Project bounded per-file semantic IR into an artifact-bound companion graph. */
14
+ import { addSemanticFallbackRoot as addFallbackRoot, addSemanticGraphNode as addNode, addSemanticGraphRelation as addRelation, constructSemanticGraphNode as semanticNode, createSemanticGraphProjectionState as emptyState, } from "./JavaScriptSemanticGraphConstruction.js";
15
+ /** Project per-file semantic IR into an artifact-bound companion graph. */
16
16
  export const buildJavaScriptSemanticGraph = ({ rootArtifactSha256, applicationGraph, analysis, }) => {
17
17
  const state = emptyState(applicationGraph);
18
18
  const fingerprints = [];
@@ -23,12 +23,9 @@ export const buildJavaScriptSemanticGraph = ({ rootArtifactSha256, applicationGr
23
23
  }
24
24
  if (state.roots.size === 0)
25
25
  addFallbackRoot(rootArtifactSha256, state);
26
- const semanticTruncated = analysis.files.some(({ semantic }) => semantic?.ir.coverage.status === "truncated");
27
- const truncated = state.limitsReached.size > 0 || semanticTruncated;
28
26
  const unknowns = [...state.unknowns.values()];
29
27
  return createJavaScriptSemanticGraph({
30
28
  schema: "JavaScriptSemanticRelationGraph",
31
- schema_version: 1,
32
29
  root_artifact_sha256: rootArtifactSha256,
33
30
  application_graph_id: applicationGraph.graph_id,
34
31
  root_node_ids: [...state.roots],
@@ -37,38 +34,16 @@ export const buildJavaScriptSemanticGraph = ({ rootArtifactSha256, applicationGr
37
34
  fingerprints,
38
35
  unknowns,
39
36
  coverage: {
40
- status: truncated ? "partial" : "unknown",
41
- truncated,
42
- omitted_nodes: truncated ? null : 0,
43
- omitted_relations: truncated ? null : 0,
44
- limits: [
45
- {
46
- name: "max_nodes",
47
- value: MAX_SEMANTIC_GRAPH_NODES,
48
- unit: "items",
49
- },
50
- {
51
- name: "max_relations",
52
- value: MAX_SEMANTIC_GRAPH_RELATIONS,
53
- unit: "items",
54
- },
55
- {
56
- name: "max_unknowns",
57
- value: MAX_SEMANTIC_GRAPH_UNKNOWNS,
58
- unit: "items",
59
- },
60
- {
61
- name: "max_application_node_ids_per_semantic_node",
62
- value: MAX_APPLICATION_NODE_IDS_PER_SEMANTIC_NODE,
63
- unit: "items",
64
- },
65
- ...semanticRecoveryLimits(analysis),
66
- ],
37
+ status: "unknown",
38
+ truncated: false,
39
+ omitted_nodes: 0,
40
+ omitted_relations: 0,
41
+ limits: [],
67
42
  families: JAVASCRIPT_SEMANTIC_RELATION_FAMILIES.map((family) => ({
68
43
  family,
69
- status: semanticFamilyStatus(family, analysis, truncated),
44
+ status: semanticFamilyStatus(family, analysis),
70
45
  retained_relations: [...state.relations.values()].filter((relation) => JAVASCRIPT_SEMANTIC_RELATION_FAMILY[relation.relation] === family).length,
71
- omitted_relations: truncated ? null : 0,
46
+ omitted_relations: 0,
72
47
  unknown_ids: unknowns
73
48
  .filter((unknown) => unknown.family === family)
74
49
  .map(({ unknown_id: identifier }) => identifier),
@@ -78,7 +53,7 @@ export const buildJavaScriptSemanticGraph = ({ rootArtifactSha256, applicationGr
78
53
  "The semantic graph contains static syntax observations and conservative relationship candidates; it does not claim runtime execution.",
79
54
  "Local data flow does not claim control-flow-sensitive reaching definitions or arbitrary dynamic property resolution.",
80
55
  "Promise ownership covers explicit unshadowed Promise construction, static factories, aggregation, chaining, and await syntax only.",
81
- "Function fingerprints are bounded static candidates; equal digests can remain ambiguous and do not prove behavioral equivalence.",
56
+ "Function fingerprints are static candidates; equal digests can remain ambiguous and do not prove behavioral equivalence.",
82
57
  "Event extraction covers EventEmitter-style literal registrations, removals, and dispatch candidates; dynamic names remain unknown.",
83
58
  "Timer extraction covers global or node:timers scheduling and exact local-handle cancellation.",
84
59
  "Child-process extraction covers asynchronous node:child_process creation, literal argv/env/stdio options, exit/error listeners, and kill signals.",
@@ -86,11 +61,6 @@ export const buildJavaScriptSemanticGraph = ({ rootArtifactSha256, applicationGr
86
61
  "Request extraction covers fetch, WebSocket, node:http/node:https construction, direct option fields, and exact local response consumers.",
87
62
  "Boundary extraction covers unshadowed JSON/global coercions plus parse and validation method candidates.",
88
63
  "Resource extraction covers built-in filesystem/network acquisition and exact local close/destroy/end handles.",
89
- ...(truncated
90
- ? [
91
- "Semantic graph projection reached one or more explicit hard limits.",
92
- ]
93
- : []),
94
64
  ],
95
65
  });
96
66
  };
@@ -1,13 +1,5 @@
1
1
  import { createJavaScriptSemanticGraphNode, createJavaScriptSemanticGraphRelation, } from "../domain/javascriptSemanticGraph.js";
2
2
  import { inferredSemanticEvidence, observedSemanticEvidence, unavailableSemanticRootEvidence, } from "./JavaScriptSemanticGraphEvidence.js";
3
- /** Hard semantic graph node bound enforced during artifact projection. */
4
- export const MAX_SEMANTIC_GRAPH_NODES = 100_000;
5
- /** Hard semantic graph relation bound enforced during artifact projection. */
6
- export const MAX_SEMANTIC_GRAPH_RELATIONS = 200_000;
7
- /** Hard unresolved-frontier bound enforced across all analyzed files. */
8
- export const MAX_SEMANTIC_GRAPH_UNKNOWNS = 100_000;
9
- /** Maximum structural nodes linked to one exact semantic location. */
10
- export const MAX_APPLICATION_NODE_IDS_PER_SEMANTIC_NODE = 64;
11
3
  /** Create empty projection state with structural application-node mappings. */
12
4
  export const createSemanticGraphProjectionState = (applicationGraph) => {
13
5
  const index = indexApplicationNodes(applicationGraph.nodes);
@@ -16,7 +8,6 @@ export const createSemanticGraphProjectionState = (applicationGraph) => {
16
8
  relations: new Map(),
17
9
  unknowns: new Map(),
18
10
  roots: new Set(),
19
- limitsReached: new Set(index.truncated ? ["max_application_node_ids_per_semantic_node"] : []),
20
11
  applicationNodeIdsByLocation: index.identifiers,
21
12
  };
22
13
  };
@@ -35,19 +26,15 @@ export const constructSemanticGraphNode = (file, input, state) => createJavaScri
35
26
  properties: input.properties ?? {},
36
27
  evidence: observedSemanticEvidence(file, input.location),
37
28
  });
38
- /** Retain one canonical node unless the hard graph bound was reached. */
29
+ /** Retain one canonical semantic node. */
39
30
  export const addSemanticGraphNode = (state, node) => {
40
31
  const existing = state.nodes.get(node.node_id);
41
32
  if (existing !== undefined)
42
33
  return existing;
43
- if (state.nodes.size >= MAX_SEMANTIC_GRAPH_NODES) {
44
- state.limitsReached.add("max_nodes");
45
- return null;
46
- }
47
34
  state.nodes.set(node.node_id, node);
48
35
  return node;
49
36
  };
50
- /** Retain one non-self semantic relationship unless its hard bound was reached. */
37
+ /** Retain one non-self semantic relationship. */
51
38
  export const addSemanticGraphRelation = (state, input) => {
52
39
  if (input.source === undefined ||
53
40
  input.source === null ||
@@ -65,20 +52,12 @@ export const addSemanticGraphRelation = (state, input) => {
65
52
  });
66
53
  if (state.relations.has(value.relation_id))
67
54
  return;
68
- if (state.relations.size >= MAX_SEMANTIC_GRAPH_RELATIONS) {
69
- state.limitsReached.add("max_relations");
70
- return;
71
- }
72
55
  state.relations.set(value.relation_id, value);
73
56
  };
74
- /** Retain one unresolved frontier unless the global graph bound was reached. */
57
+ /** Retain one unresolved frontier. */
75
58
  export const addSemanticGraphUnknown = (state, unknown) => {
76
59
  if (state.unknowns.has(unknown.unknown_id))
77
60
  return;
78
- if (state.unknowns.size >= MAX_SEMANTIC_GRAPH_UNKNOWNS) {
79
- state.limitsReached.add("max_unknowns");
80
- return;
81
- }
82
61
  state.unknowns.set(unknown.unknown_id, unknown);
83
62
  };
84
63
  /** Add a truthful root when no source file could produce semantic IR. */
@@ -118,14 +97,11 @@ const indexApplicationNodes = (nodes) => {
118
97
  }
119
98
  }
120
99
  }
121
- let truncated = false;
122
100
  const indexed = new Map([...identifiers].map(([key, values]) => {
123
101
  const sorted = [...values].sort();
124
- if (sorted.length > MAX_APPLICATION_NODE_IDS_PER_SEMANTIC_NODE)
125
- truncated = true;
126
- return [key, sorted.slice(0, MAX_APPLICATION_NODE_IDS_PER_SEMANTIC_NODE)];
102
+ return [key, sorted];
127
103
  }));
128
- return { identifiers: indexed, truncated };
104
+ return { identifiers: indexed };
129
105
  };
130
106
  const matchingApplicationNodeIds = (file, input, state) => [
131
107
  ...(state.applicationNodeIdsByLocation.get(applicationLocationKey(file.sha256, file.path, input.location)) ?? []),
@@ -1,4 +1,4 @@
1
- const INFERENCE_LIMITATION = "This relationship is a bounded static candidate; it does not prove runtime execution or causal flow.";
1
+ const INFERENCE_LIMITATION = "This relationship is a conservative static candidate; it does not prove runtime execution or causal flow.";
2
2
  /** Exact artifact-backed syntax evidence for one semantic graph node. */
3
3
  export const observedSemanticEvidence = (file, location) => ({
4
4
  authority: "ast-static-analysis",
@@ -8,7 +8,7 @@ export const projectSemanticFunctionFingerprints = (file, ir, callableNodes) =>
8
8
  return [
9
9
  createJavaScriptSemanticFingerprint({
10
10
  function_node_id: callable.node_id,
11
- algorithm: "rea.javascript-semantic-function/v1",
11
+ algorithm: "rea.javascript-semantic-function",
12
12
  status: fingerprint.status,
13
13
  components: {
14
14
  parameter_arity: fingerprint.components.parameterArity,
@@ -178,16 +178,3 @@ export const projectSemanticFrontiers = (context) => {
178
178
  addSemanticGraphUnknown(context.state, unknown);
179
179
  }
180
180
  };
181
- /** Publish exact semantic analyzer limits reached by any admitted source file. */
182
- export const semanticRecoveryLimits = (analysis) => {
183
- const limits = new Map();
184
- for (const { semantic } of analysis.files) {
185
- if (semantic === null)
186
- continue;
187
- for (const name of semantic.ir.coverage.limitsReached)
188
- limits.set(`semantic.${name}`, semantic.limits[name]);
189
- }
190
- return [...limits]
191
- .sort(([left], [right]) => left.localeCompare(right))
192
- .map(([name, value]) => ({ name, value, unit: "items" }));
193
- };
@@ -14,7 +14,7 @@ export const owningSemanticCallableNode = (location, ir, nodes) => {
14
14
  export const semanticNodesWithinRange = (nodes, range) => nodes.filter((node) => node.identity.source_range !== null &&
15
15
  contains(range, node.identity.source_range));
16
16
  /** Report extractor support without treating missing families as absence. */
17
- export const semanticFamilyStatus = (family, analysis, truncated) => {
17
+ export const semanticFamilyStatus = (family, analysis) => {
18
18
  if (![
19
19
  "call-flow",
20
20
  "boundary",
@@ -30,8 +30,6 @@ export const semanticFamilyStatus = (family, analysis, truncated) => {
30
30
  "timer",
31
31
  ].includes(family))
32
32
  return "unsupported";
33
- if (truncated)
34
- return "unknown";
35
33
  return analysis.truncated_scopes === 0 ? "partial" : "unknown";
36
34
  };
37
35
  const contains = (outer, inner) => pointCompare(outer.start, inner.start) <= 0 &&
@@ -2,7 +2,6 @@ import { z } from "zod";
2
2
  import { AnalysisInputError, AnalysisProtocolError, } from "../domain/errors.js";
3
3
  import { jsonValueSchema } from "../domain/jsonValue.js";
4
4
  import { queryJavaScriptSemanticGraph } from "../domain/javascriptSemanticQuery.js";
5
- import { JavaScriptSemanticQueryCursorError } from "../domain/javascriptSemanticQueryIdentity.js";
6
5
  import { javaScriptSemanticTraceResultSchema, traceJavaScriptSemanticsInputSchema, } from "../domain/javascriptSemanticTraceSchemas.js";
7
6
  import { err, ok } from "../domain/result.js";
8
7
  import { parseApplicationGraphEvidence } from "./JavaScriptApplicationEvidenceGraph.js";
@@ -17,7 +16,7 @@ export const traceJavaScriptSemanticsEvidenceValidated = (input) => {
17
16
  {
18
17
  path: ["application"],
19
18
  reason: "invalid_value",
20
- expected: "analyze_javascript_application v2 Evidence; reanalyze the artifact with the current REA version",
19
+ expected: "inline Evidence from analyze_javascript_application with a semantic graph",
21
20
  },
22
21
  ]));
23
22
  const query = queryJavaScriptSemanticGraph(source.semanticGraph, input.query);
@@ -32,14 +31,6 @@ export const traceJavaScriptSemanticsEvidenceValidated = (input) => {
32
31
  }, result));
33
32
  }
34
33
  catch (cause) {
35
- if (cause instanceof JavaScriptSemanticQueryCursorError)
36
- return err(new AnalysisInputError(OPERATION, undefined, [
37
- {
38
- path: ["query", "cursor"],
39
- reason: "invalid_value",
40
- expected: "a cursor returned by the same graph, query, and limits",
41
- },
42
- ]));
43
34
  return err(new AnalysisProtocolError("JavaScript semantic trace failed", { cause }));
44
35
  }
45
36
  };
@@ -0,0 +1,79 @@
1
+ import { link, lstat, mkdtemp, readFile, realpath, rm } from "node:fs/promises";
2
+ import { basename, dirname, resolve } from "node:path";
3
+ import writeFileAtomic from "write-file-atomic";
4
+ import { EvidenceFileError } from "../domain/errors.js";
5
+ import { err, ok } from "../domain/result.js";
6
+ /** Read JSON data from a regular file at the caller-supplied path. */
7
+ export const readJsonFile = async (path) => {
8
+ try {
9
+ const canonicalPath = await realpath(resolve(path));
10
+ const stats = await lstat(canonicalPath);
11
+ if (!stats.isFile())
12
+ return err(new EvidenceFileError("read", "not-file"));
13
+ const encoded = await readFile(canonicalPath);
14
+ let decoded;
15
+ try {
16
+ decoded = JSON.parse(encoded.toString("utf8"));
17
+ }
18
+ catch (cause) {
19
+ return err(new EvidenceFileError("read", "invalid-json", { cause }));
20
+ }
21
+ return ok(decoded);
22
+ }
23
+ catch (cause) {
24
+ return err(new EvidenceFileError("read", "io", { cause }));
25
+ }
26
+ };
27
+ /** Atomically write text to the caller-supplied path. */
28
+ export const writeTextFile = async (encoded, path, overwrite) => {
29
+ const bytes = Buffer.byteLength(encoded, "utf8");
30
+ try {
31
+ const requestedPath = resolve(path);
32
+ const canonicalParent = await realpath(dirname(requestedPath));
33
+ const destination = resolve(canonicalParent, basename(requestedPath));
34
+ const existing = await lstat(destination).catch((cause) => {
35
+ if (fileErrorCode(cause) === "ENOENT")
36
+ return undefined;
37
+ throw cause;
38
+ });
39
+ if (existing !== undefined) {
40
+ if (!overwrite)
41
+ return err(new EvidenceFileError("write", "exists"));
42
+ if (!existing.isFile() || existing.isSymbolicLink())
43
+ return err(new EvidenceFileError("write", "not-file"));
44
+ }
45
+ if (overwrite)
46
+ await writeFileAtomic(destination, encoded, {
47
+ encoding: "utf8",
48
+ mode: 0o600,
49
+ fsync: true,
50
+ });
51
+ else
52
+ await publishNewFile(destination, encoded);
53
+ return ok({ path: requestedPath, bytes });
54
+ }
55
+ catch (cause) {
56
+ if (!overwrite && fileErrorCode(cause) === "EEXIST")
57
+ return err(new EvidenceFileError("write", "exists", { cause }));
58
+ return err(new EvidenceFileError("write", "io", { cause }));
59
+ }
60
+ };
61
+ const publishNewFile = async (destination, encoded) => {
62
+ const stagingDirectory = await mkdtemp(resolve(dirname(destination), ".rea-write-"));
63
+ try {
64
+ const staged = resolve(stagingDirectory, "content");
65
+ await writeFileAtomic(staged, encoded, {
66
+ encoding: "utf8",
67
+ mode: 0o600,
68
+ fsync: true,
69
+ });
70
+ // A hard link publishes complete bytes atomically and cannot replace an existing name.
71
+ await link(staged, destination);
72
+ }
73
+ finally {
74
+ await rm(stagingDirectory, { recursive: true, force: true });
75
+ }
76
+ };
77
+ const fileErrorCode = (cause) => typeof cause === "object" && cause !== null && "code" in cause
78
+ ? cause.code
79
+ : undefined;
@@ -5,6 +5,7 @@ import { access, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
5
5
  import { tmpdir } from "node:os";
6
6
  import { join } from "node:path";
7
7
  import { promisify } from "node:util";
8
+ import { execFileOutput } from "../process/ExecFileOutput.js";
8
9
  const execFileAsync = promisify(execFile);
9
10
  const DOWNLOAD_PREFIX = "https://www.hopperapp.com:443/downloader/public/";
10
11
  const MAX_PACKAGE_BYTES = 100_000_000;
@@ -55,15 +56,17 @@ export const parseLinuxDistribution = (text) => {
55
56
  const id = (fields.get("ID") ?? "unknown").toLowerCase();
56
57
  const versionId = fields.get("VERSION_ID");
57
58
  const packageFamily = packageFamilyFor(id, fields.get("ID_LIKE"));
58
- const supported = id === "arch" ||
59
- (id === "ubuntu" && versionAtLeast(versionId, 24)) ||
60
- (id === "fedora" && versionAtLeast(versionId, 41));
61
- return {
59
+ const supported = packageFamily !== undefined &&
60
+ (id === "arch" ||
61
+ (id === "ubuntu" && versionAtLeast(versionId, 24)) ||
62
+ (id === "fedora" && versionAtLeast(versionId, 41)));
63
+ const identity = {
62
64
  id,
63
65
  ...(versionId === undefined ? {} : { versionId }),
64
- packageFamily,
65
- supported,
66
66
  };
67
+ return supported
68
+ ? { ...identity, packageFamily, supported: true }
69
+ : { ...identity, packageFamily, supported: false };
67
70
  };
68
71
  /** Read and classify the current Linux distribution. */
69
72
  export const readLinuxDistribution = async () => {
@@ -79,8 +82,7 @@ export const installLinuxHopper = async (host = systemLinuxHopperInstallHost(),
79
82
  if (options.signal?.aborted === true)
80
83
  return { status: "failed", reason: "cancelled" };
81
84
  const distribution = await host.distribution();
82
- if (distribution?.supported !== true ||
83
- distribution.packageFamily === undefined)
85
+ if (distribution?.supported !== true)
84
86
  return { status: "failed", reason: "unsupported_host" };
85
87
  let temporary;
86
88
  try {
@@ -134,7 +136,7 @@ const systemLinuxHopperInstallHost = () => ({
134
136
  async launcherStatus(path) {
135
137
  try {
136
138
  await access(path);
137
- const linked = await execFileAsync("ldd", [path]);
139
+ const linked = await execFileOutput("ldd", [path]);
138
140
  if (!linuxSharedLibrariesAvailable(`${linked.stdout}\n${linked.stderr}`))
139
141
  return "runtime_dependencies";
140
142
  return (await linuxHopperBinarySupported(path))