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,30 +1,13 @@
1
1
  import { Cli, z } from "incur";
2
+ import { browserContext, browserCliError } from "./cliBrowserContext.js";
2
3
  import { analyzeWebBundle, inspectWebPage, listBrowserTargets, observeWebSession, } from "./application/BrowserObservationService.js";
3
- import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
4
- import { CdpBrowserProvider } from "./browser/CdpBrowserProvider.js";
5
4
  import { logCliCommand } from "./cliLogging.js";
6
- import { parseConfig } from "./config.js";
7
5
  import { inspectWebPageInputSchema, listBrowserTargetsInputSchema, } from "./domain/browserObservation.js";
8
6
  import { analyzeWebBundleInputSchema } from "./domain/webBundleAnalysis.js";
9
7
  import { observeWebSessionInputSchema } from "./domain/browserSession.js";
10
- import { AnalysisCapabilityUnavailableError, AnalysisInputError, projectAnalysisError, } from "./domain/errors.js";
8
+ import { AnalysisInputError } from "./domain/errors.js";
11
9
  import { CLI_COMMANDS } from "./cliCommandNames.js";
12
- import { browserPageInspectionOptions } from "./cliObservationOptions.js";
13
- const browserScopeOptions = {
14
- allowedOrigins: z
15
- .array(z.string().min(1))
16
- .optional()
17
- .describe("Exact origins to observe; defaults to REA_BROWSER_ALLOWED_ORIGINS_JSON"),
18
- approved: z.boolean().default(false).describe("Approve passive observation"),
19
- };
20
- const boundedCount = (subject, maximum, fallback, minimum = 1) => z
21
- .number()
22
- .int()
23
- .min(minimum)
24
- .max(maximum)
25
- .default(fallback)
26
- .describe(`Maximum ${subject}`);
27
- const boundedBytes = (subject, maximum, fallback) => boundedCount(`${subject} in bytes`, maximum, fallback);
10
+ import { browserPageInspectionOptions, browserScopeOptions, observationDuration, } from "./cliObservationOptions.js";
28
11
  /** Register CLI equivalents of the passive browser MCP tools. */
29
12
  export const registerBrowserCommands = (cli, logger) => {
30
13
  registerTargetList(cli, logger);
@@ -38,16 +21,7 @@ const registerTargetList = (cli, logger) => {
38
21
  args: z.object({
39
22
  endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
40
23
  }),
41
- options: z.object({
42
- ...browserScopeOptions,
43
- offset: z
44
- .number()
45
- .int()
46
- .min(0)
47
- .default(0)
48
- .describe("Zero-based browser-target offset"),
49
- limit: boundedCount("browser targets to return", 200, 100),
50
- }),
24
+ options: z.object({ ...browserScopeOptions }),
51
25
  run: ({ args, options }) => logCliCommand(logger, "list-browser-targets", async () => {
52
26
  const context = await browserContext("list_browser_targets");
53
27
  if (!context.ok)
@@ -55,14 +29,11 @@ const registerTargetList = (cli, logger) => {
55
29
  const parsed = listBrowserTargetsInputSchema.safeParse({
56
30
  cdp_endpoint: args.endpoint,
57
31
  allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
58
- approved: options.approved,
59
- offset: options.offset,
60
- limit: options.limit,
61
32
  });
62
33
  if (!parsed.success)
63
- return cliError(new AnalysisInputError("list_browser_targets"));
34
+ return browserCliError(new AnalysisInputError("list_browser_targets"));
64
35
  const result = await listBrowserTargets(context.provider, context.authority, parsed.data);
65
- return result.ok ? result.value : cliError(result.error);
36
+ return result.ok ? result.value : browserCliError(result.error);
66
37
  }),
67
38
  });
68
39
  };
@@ -81,49 +52,20 @@ const registerPageInspection = (cli, logger) => {
81
52
  const parsed = inspectWebPageInputSchema.safeParse({
82
53
  cdp_endpoint: args.endpoint,
83
54
  allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
84
- approved: options.approved,
85
55
  target_id: args.targetId,
86
56
  observation_ms: options.observationMs,
87
57
  include_accessibility_text: options.includeAccessibilityText,
88
58
  include_console_text: options.includeConsoleText,
89
- console_text_approved: options.consoleTextApproved,
90
59
  include_json_body_shapes: options.includeJsonBodyShapes,
91
- json_body_schema_approved: options.jsonBodySchemaApproved,
92
60
  include_websocket_shapes: options.includeWebsocketShapes,
93
- websocket_shape_approved: options.websocketShapeApproved,
94
61
  include_script_sources: options.includeScriptSources,
95
- source_capture_approved: options.sourceCaptureApproved,
96
62
  include_storage_keys: options.includeStorageKeys,
97
63
  include_storage_fingerprints: options.includeStorageFingerprints,
98
- limits: {
99
- max_frames: options.maxFrames,
100
- max_dom_nodes: options.maxDomNodes,
101
- max_ax_nodes: options.maxAxNodes,
102
- max_ax_text_field_bytes: options.maxAxTextFieldBytes,
103
- max_total_ax_text_bytes: options.maxTotalAxTextBytes,
104
- max_scripts: options.maxScripts,
105
- max_resources: options.maxResources,
106
- max_workers: options.maxWorkers,
107
- max_storage_keys: options.maxStorageKeys,
108
- max_script_source_bytes: options.maxScriptSourceBytes,
109
- max_total_script_source_bytes: options.maxTotalScriptSourceBytes,
110
- max_network_events: options.maxNetworkEvents,
111
- max_console_events: options.maxConsoleEvents,
112
- max_console_text_field_bytes: options.maxConsoleTextFieldBytes,
113
- max_total_console_text_bytes: options.maxTotalConsoleTextBytes,
114
- max_json_body_bytes: options.maxJsonBodyBytes,
115
- max_total_json_body_bytes: options.maxTotalJsonBodyBytes,
116
- max_json_shape_nodes: options.maxJsonShapeNodes,
117
- max_json_shape_depth: options.maxJsonShapeDepth,
118
- max_websocket_events: options.maxWebsocketEvents,
119
- max_websocket_shape_bytes: options.maxWebsocketShapeBytes,
120
- max_total_websocket_shape_bytes: options.maxTotalWebsocketShapeBytes,
121
- },
122
64
  });
123
65
  if (!parsed.success)
124
- return cliError(new AnalysisInputError("inspect_web_page"));
66
+ return browserCliError(new AnalysisInputError("inspect_web_page"));
125
67
  const result = await inspectWebPage(context.provider, context.authority, parsed.data);
126
- return result.ok ? result.value : cliError(result.error);
68
+ return result.ok ? result.value : browserCliError(result.error);
127
69
  }),
128
70
  });
129
71
  };
@@ -136,26 +78,11 @@ const registerBundleAnalysis = (cli, logger) => {
136
78
  }),
137
79
  options: z.object({
138
80
  ...browserScopeOptions,
139
- sourceCaptureApproved: z
140
- .boolean()
141
- .default(false)
142
- .describe("Approve capturing bounded script source text"),
143
- observationMs: boundedCount("observation duration in milliseconds", 10_000, 500, 0),
81
+ observationMs: observationDuration(500),
144
82
  fetchSourceMaps: z
145
83
  .boolean()
146
84
  .default(false)
147
85
  .describe("Fetch source maps referenced by captured scripts"),
148
- sourceMapFetchApproved: z
149
- .boolean()
150
- .default(false)
151
- .describe("Approve fetching referenced source maps from allowed origins"),
152
- maxFindings: boundedCount("static-analysis findings", 10_000, 1_000),
153
- maxAstNodes: boundedCount("JavaScript AST nodes", 2_000_000, 250_000),
154
- maxSourceMaps: boundedCount("source maps", 1_000, 100),
155
- maxSourceMapBytes: boundedBytes("one source map", 16 * 1_024 * 1_024, 4 * 1_024 * 1_024),
156
- maxTotalSourceMapBytes: boundedBytes("total source maps", 64 * 1_024 * 1_024, 16 * 1_024 * 1_024),
157
- maxSourceMapMappings: boundedCount("decoded source-map mappings", 100_000, 10_000),
158
- maxOriginalSources: boundedCount("original source files", 20_000, 2_000),
159
86
  }),
160
87
  run: ({ args, options }) => logCliCommand(logger, "analyze-web-bundle", async () => {
161
88
  const context = await browserContext("analyze_web_bundle");
@@ -164,41 +91,28 @@ const registerBundleAnalysis = (cli, logger) => {
164
91
  const parsed = analyzeWebBundleInputSchema.safeParse({
165
92
  cdp_endpoint: args.endpoint,
166
93
  allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
167
- approved: options.approved,
168
94
  target_id: args.targetId,
169
95
  observation_ms: options.observationMs,
170
96
  include_script_sources: true,
171
- source_capture_approved: options.sourceCaptureApproved,
172
97
  fetch_source_maps: options.fetchSourceMaps,
173
- source_map_fetch_approved: options.sourceMapFetchApproved,
174
- analysis_limits: {
175
- max_findings: options.maxFindings,
176
- max_ast_nodes: options.maxAstNodes,
177
- max_source_maps: options.maxSourceMaps,
178
- max_source_map_bytes: options.maxSourceMapBytes,
179
- max_total_source_map_bytes: options.maxTotalSourceMapBytes,
180
- max_source_map_mappings: options.maxSourceMapMappings,
181
- max_original_sources: options.maxOriginalSources,
182
- },
183
98
  });
184
99
  if (!parsed.success)
185
- return cliError(new AnalysisInputError("analyze_web_bundle"));
100
+ return browserCliError(new AnalysisInputError("analyze_web_bundle"));
186
101
  const result = await analyzeWebBundle(context.provider, context.authority, parsed.data);
187
- return result.ok ? result.value : cliError(result.error);
102
+ return result.ok ? result.value : browserCliError(result.error);
188
103
  }),
189
104
  });
190
105
  };
191
106
  const registerObservationSession = (cli, logger) => {
192
107
  cli.command(CLI_COMMANDS.observeWebSession, {
193
- description: "Observe user-driven page navigation during a bounded window",
108
+ description: "Observe user-driven page navigation during a chosen window",
194
109
  args: z.object({
195
110
  endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
196
111
  targetId: z.string().describe("Target ID from list-browser-targets"),
197
112
  }),
198
113
  options: z.object({
199
114
  ...browserScopeOptions,
200
- observationMs: boundedCount("observation duration in milliseconds", 60_000, 10_000),
201
- maxTimelineEvents: boundedCount("timeline events", 20_000, 2_000),
115
+ observationMs: observationDuration(10_000, 1),
202
116
  }),
203
117
  run: ({ args, options }) => logCliCommand(logger, "observe-web-session", async () => {
204
118
  const context = await browserContext("observe_web_session");
@@ -208,38 +122,12 @@ const registerObservationSession = (cli, logger) => {
208
122
  cdp_endpoint: args.endpoint,
209
123
  allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
210
124
  target_id: args.targetId,
211
- approved: options.approved,
212
125
  observation_ms: options.observationMs,
213
- max_timeline_events: options.maxTimelineEvents,
214
126
  });
215
127
  if (!parsed.success)
216
- return cliError(new AnalysisInputError("observe_web_session"));
128
+ return browserCliError(new AnalysisInputError("observe_web_session"));
217
129
  const result = await observeWebSession(context.provider, context.authority, parsed.data);
218
- return result.ok ? result.value : cliError(result.error);
130
+ return result.ok ? result.value : browserCliError(result.error);
219
131
  }),
220
132
  });
221
133
  };
222
- const browserContext = async (operation) => {
223
- const config = parseConfig(process.env);
224
- if (!config.ok)
225
- return { ok: false, error: cliError(config.error) };
226
- const policy = config.value.browserObservationPolicy;
227
- if (policy.status === "disabled")
228
- return {
229
- ok: false,
230
- error: cliError(new AnalysisCapabilityUnavailableError("rea-cdp-browser", operation, "browser observation is disabled; configure exact endpoints and origins before enabling it")),
231
- };
232
- const authority = await loadConfiguredPermissionAuthority(config.value);
233
- if (!authority.ok)
234
- return { ok: false, error: cliError(authority.error) };
235
- return {
236
- ok: true,
237
- authority: authority.value,
238
- provider: new CdpBrowserProvider(),
239
- allowedBrowserOrigins: policy.allowedOrigins,
240
- };
241
- };
242
- const cliError = (error) => ({
243
- error: "Browser observation failed",
244
- ...projectAnalysisError(error),
245
- });
@@ -0,0 +1,30 @@
1
+ import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
2
+ import { CdpBrowserProvider } from "./browser/CdpBrowserProvider.js";
3
+ import { parseConfig } from "./config.js";
4
+ import { AnalysisCapabilityUnavailableError, projectAnalysisError, } from "./domain/errors.js";
5
+ /** Load the configured passive browser authority and provider for one CLI operation. */
6
+ export const browserContext = async (operation) => {
7
+ const config = parseConfig(process.env);
8
+ if (!config.ok)
9
+ return { ok: false, error: browserCliError(config.error) };
10
+ const policy = config.value.browserObservationPolicy;
11
+ if (policy.status === "disabled")
12
+ return {
13
+ ok: false,
14
+ error: browserCliError(new AnalysisCapabilityUnavailableError("rea-cdp-browser", operation, "browser observation is disabled; configure exact endpoints and origins before enabling it")),
15
+ };
16
+ const authority = await loadConfiguredPermissionAuthority(config.value);
17
+ if (!authority.ok)
18
+ return { ok: false, error: browserCliError(authority.error) };
19
+ return {
20
+ ok: true,
21
+ authority: authority.value,
22
+ provider: new CdpBrowserProvider(),
23
+ allowedBrowserOrigins: policy.allowedOrigins,
24
+ };
25
+ };
26
+ /** Project a browser operation failure consistently across CLI command groups. */
27
+ export const browserCliError = (error) => ({
28
+ error: "Browser observation failed",
29
+ ...projectAnalysisError(error),
30
+ });
@@ -9,6 +9,8 @@ export const CLI_COMMANDS = Object.freeze({
9
9
  upgrade: "upgrade",
10
10
  xrefs: "xrefs",
11
11
  trace: "trace",
12
+ traceNativeUiAction: "trace-native-ui-action",
13
+ inspectNativeDispatchMetadata: "inspect-native-dispatch-metadata",
12
14
  capabilities: "capabilities",
13
15
  providers: "providers",
14
16
  function: "function",
@@ -16,9 +18,9 @@ export const CLI_COMMANDS = Object.freeze({
16
18
  instructions: "instructions",
17
19
  search: "search",
18
20
  importReferenceSource: "import-reference-source",
19
- inventoryArtifact: "inventory-artifact",
20
21
  inspectArtifact: "inspect-artifact",
21
22
  extractArtifact: "extract-artifact",
23
+ decodeInterfaceBuilder: "decode-interface-builder",
22
24
  inspectManagedArtifact: "inspect-managed-artifact",
23
25
  inspectManagedMembers: "inspect-managed-members",
24
26
  inspectManagedNativeBoundaries: "inspect-managed-native-boundaries",
@@ -35,7 +37,6 @@ export const CLI_COMMANDS = Object.freeze({
35
37
  evidenceImport: "evidence-import",
36
38
  evidenceExport: "evidence-export",
37
39
  compare: "compare",
38
- investigateVersions: "investigate-versions",
39
40
  captureProcess: "capture-process",
40
41
  compareProcessCaptures: "compare-process-captures",
41
42
  policy: "policy",
@@ -65,9 +66,7 @@ export const CLI_COMMANDS = Object.freeze({
65
66
  prepareNodeCharacterization: "prepare-node-characterization",
66
67
  executeNodeCharacterization: "execute-node-characterization",
67
68
  buildReconstructionObligationLedger: "build-reconstruction-obligation-ledger",
68
- evaluateReconstructionReadiness: "evaluate-reconstruction-readiness",
69
- commitReconstructionCoverage: "commit-reconstruction-coverage",
70
- queryReconstructionCoverage: "query-reconstruction-coverage",
69
+ evaluateReconstructionCoverage: "evaluate-reconstruction-coverage",
71
70
  });
72
71
  /** Ordered primary CLI inventory; aliases are intentionally excluded. */
73
72
  export const CLI_COMMAND_NAMES = Object.freeze(Object.values(CLI_COMMANDS));
@@ -14,13 +14,6 @@ import { CLI_COMMANDS } from "./cliCommandNames.js";
14
14
  import { parseCliJsonInput } from "./cliJsonInput.js";
15
15
  import { electronPageInspectionOptions, javascriptApplicationOptions, } from "./cliObservationOptions.js";
16
16
  import { runCliJavaScriptApplicationAnalysis } from "./cli/javascriptApplicationAnalysis.js";
17
- const scopeOptions = {
18
- allowedFileRoots: z
19
- .array(z.string().min(1))
20
- .optional()
21
- .describe("Filesystem roots; defaults to REA_ELECTRON_FILE_ROOTS_JSON"),
22
- approved: z.boolean().default(false).describe("Approve passive observation"),
23
- };
24
17
  /** Register CLI equivalents of the Electron MCP tools. */
25
18
  export const registerElectronCommands = (cli, logger) => {
26
19
  registerElectronObservationCommands(cli, logger);
@@ -74,38 +67,16 @@ const registerElectronObservationCommands = (cli, logger) => {
74
67
  };
75
68
  const registerElectronTargetList = (cli, logger) => {
76
69
  cli.command(CLI_COMMANDS.listElectronTargets, {
77
- description: "List root-confined file pages from Electron CDP",
70
+ description: "List local file pages exposed by Electron CDP",
78
71
  args: z.object({
79
- endpoint: z
80
- .string()
81
- .describe("Configured loopback Electron CDP endpoint"),
82
- }),
83
- options: z.object({
84
- ...scopeOptions,
85
- offset: z
86
- .number()
87
- .int()
88
- .min(0)
89
- .default(0)
90
- .describe("Zero-based Electron-target offset"),
91
- limit: z
92
- .number()
93
- .int()
94
- .min(1)
95
- .max(200)
96
- .default(100)
97
- .describe("Maximum Electron targets to return"),
72
+ endpoint: z.string().describe("Literal-loopback Electron CDP endpoint"),
98
73
  }),
99
- run: ({ args, options }) => logCliCommand(logger, "list-electron-targets", async () => {
74
+ run: ({ args }) => logCliCommand(logger, "list-electron-targets", async () => {
100
75
  const context = await electronObservationContext("list_electron_targets");
101
76
  if (!context.ok)
102
77
  return context.error;
103
78
  const parsed = listElectronTargetsInputSchema.safeParse({
104
79
  cdp_endpoint: args.endpoint,
105
- allowed_file_roots: options.allowedFileRoots ?? context.allowedFileRoots,
106
- approved: options.approved,
107
- offset: options.offset,
108
- limit: options.limit,
109
80
  });
110
81
  if (!parsed.success)
111
82
  return inputError("list_electron_targets");
@@ -116,11 +87,9 @@ const registerElectronTargetList = (cli, logger) => {
116
87
  };
117
88
  const registerElectronPageInspection = (cli, logger) => {
118
89
  cli.command(CLI_COMMANDS.inspectElectronPage, {
119
- description: "Passively inspect one root-confined Electron file page",
90
+ description: "Passively inspect one Electron file page",
120
91
  args: z.object({
121
- endpoint: z
122
- .string()
123
- .describe("Configured loopback Electron CDP endpoint"),
92
+ endpoint: z.string().describe("Literal-loopback Electron CDP endpoint"),
124
93
  targetId: z.string().describe("Target ID from list-electron-targets"),
125
94
  }),
126
95
  options: electronPageInspectionOptions,
@@ -130,21 +99,9 @@ const registerElectronPageInspection = (cli, logger) => {
130
99
  return context.error;
131
100
  const parsed = inspectElectronPageInputSchema.safeParse({
132
101
  cdp_endpoint: args.endpoint,
133
- allowed_file_roots: options.allowedFileRoots ?? context.allowedFileRoots,
134
102
  target_id: args.targetId,
135
- approved: options.approved,
136
103
  observation_ms: options.observationMs,
137
104
  include_script_sources: options.includeScriptSources,
138
- source_capture_approved: options.sourceCaptureApproved,
139
- limits: {
140
- max_frames: options.maxFrames,
141
- max_dom_nodes: options.maxDomNodes,
142
- max_scripts: options.maxScripts,
143
- max_resources: options.maxResources,
144
- max_workers: options.maxWorkers,
145
- max_script_source_bytes: options.maxScriptSourceBytes,
146
- max_total_script_source_bytes: options.maxTotalScriptSourceBytes,
147
- },
148
105
  });
149
106
  if (!parsed.success)
150
107
  return inputError("inspect_electron_page");
@@ -155,32 +112,14 @@ const registerElectronPageInspection = (cli, logger) => {
155
112
  };
156
113
  const registerJavaScriptApplicationCommand = (cli, logger) => {
157
114
  cli.command(CLI_COMMANDS.analyzeJavaScriptApplication, {
158
- description: "Statically reconstruct an approved JavaScript/Electron application",
115
+ description: "Statically reconstruct a local JavaScript/Electron application",
159
116
  args: z.object({
160
117
  path: z.string().describe("Absolute ASAR or extracted application path"),
161
118
  }),
162
119
  options: javascriptApplicationOptions,
163
120
  run: ({ args, options }) => logCliCommand(logger, CLI_COMMANDS.analyzeJavaScriptApplication, () => runCliJavaScriptApplicationAnalysis({
164
121
  input_path: args.path,
165
- approved: options.approved,
166
122
  format: options.artifactFormat,
167
- source_map_read_approved: options.sourceMapReadApproved,
168
- limits: {
169
- max_entries: options.maxEntries,
170
- max_total_artifact_bytes: options.maxTotalArtifactBytes,
171
- max_artifact_entry_bytes: options.maxArtifactEntryBytes,
172
- max_compression_ratio: options.maxCompressionRatio,
173
- max_depth: options.maxDepth,
174
- max_path_bytes: options.maxPathBytes,
175
- max_text_files: options.maxTextFiles,
176
- max_total_text_bytes: options.maxTotalTextBytes,
177
- max_text_file_bytes: options.maxTextFileBytes,
178
- max_ast_nodes: options.maxAstNodes,
179
- max_findings: options.maxFindings,
180
- max_modules: options.maxModules,
181
- max_source_map_sources: options.maxSourceMapSources,
182
- max_parse_milliseconds: options.maxParseMilliseconds,
183
- },
184
123
  })),
185
124
  });
186
125
  };
@@ -206,12 +145,9 @@ const electronObservationContext = async (operation) => {
206
145
  if (context.observationPolicy.status === "disabled")
207
146
  return {
208
147
  ok: false,
209
- error: cliError(new AnalysisCapabilityUnavailableError("rea-cdp-electron", operation, "Electron observation is disabled; configure exact endpoints and file roots before enabling it")),
148
+ error: cliError(new AnalysisCapabilityUnavailableError("rea-cdp-electron", operation, "Electron observation is disabled; enable REA_ELECTRON_OBSERVE_ENABLED to authorize loopback endpoints")),
210
149
  };
211
- return {
212
- ...context,
213
- allowedFileRoots: context.observationPolicy.fileRoots,
214
- };
150
+ return context;
215
151
  };
216
152
  const inputError = (operation) => cliError(new AnalysisInputError(operation));
217
153
  const cliError = (error) => ({
@@ -1,32 +1,22 @@
1
1
  import { Cli, z } from "incur";
2
2
  import { compareEvidenceBundlesCommand, exportEvidenceBundleCommand, importEvidenceBundleCommand, } from "./application/EvidenceBundleCommands.js";
3
- import { parseConfig } from "./config.js";
4
3
  import { logCliCommand } from "./cliLogging.js";
5
4
  import { CLI_COMMANDS } from "./cliCommandNames.js";
6
- import { AnalysisProtocolError, PermissionRequiredError, projectAnalysisError, } from "./domain/errors.js";
7
- import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
8
- /** Register filesystem-gated Evidence v2 commands. */
5
+ import { projectAnalysisError } from "./domain/errors.js";
6
+ /** Register caller-path Evidence commands. */
9
7
  export const registerEvidenceCommands = (cli, logger) => {
10
8
  cli.command(CLI_COMMANDS.evidenceImport, {
11
- description: "Validate and import a bounded local Evidence v2 bundle",
9
+ description: "Validate and import a bounded local Evidence bundle",
12
10
  args: z.object({
13
11
  path: z.string().describe("Evidence bundle JSON path"),
14
12
  }),
15
13
  run: ({ args }) => logCliCommand(logger, "evidence-import", async () => {
16
- const config = parseConfig(process.env);
17
- if (!config.ok)
18
- return cliError(config.error);
19
- const denied = await authorizeEvidence(config.value, [
20
- { capability: "evidence_read", path: args.path, access: "read" },
21
- ]);
22
- if (denied !== undefined)
23
- return cliError(denied);
24
- const imported = await importEvidenceBundleCommand(args.path, config.value.evidenceFilePolicy);
14
+ const imported = await importEvidenceBundleCommand(args.path);
25
15
  return imported.ok ? imported.value : cliError(imported.error);
26
16
  }),
27
17
  });
28
18
  cli.command(CLI_COMMANDS.evidenceExport, {
29
- description: "Validate and atomically export canonical Evidence v2 JSON",
19
+ description: "Validate and atomically export canonical Evidence JSON",
30
20
  args: z.object({
31
21
  source: z.string().describe("Existing evidence bundle JSON path"),
32
22
  output: z.string().describe("Canonical output JSON path"),
@@ -35,85 +25,26 @@ export const registerEvidenceCommands = (cli, logger) => {
35
25
  overwrite: z.boolean().default(false).describe("Replace output file"),
36
26
  }),
37
27
  run: ({ args, options }) => logCliCommand(logger, "evidence-export", async () => {
38
- const config = parseConfig(process.env);
39
- if (!config.ok)
40
- return cliError(config.error);
41
- const denied = await authorizeEvidence(config.value, [
42
- { capability: "evidence_read", path: args.source, access: "read" },
43
- { capability: "evidence_write", path: args.output, access: "write" },
44
- ]);
45
- if (denied !== undefined)
46
- return cliError(denied);
47
- const exported = await exportEvidenceBundleCommand(args.source, args.output, options.overwrite, config.value.evidenceFilePolicy);
28
+ const exported = await exportEvidenceBundleCommand(args.source, args.output, options.overwrite);
48
29
  return exported.ok ? exported.value : cliError(exported.error);
49
30
  }),
50
31
  });
51
32
  cli.command(CLI_COMMANDS.compare, {
52
33
  aliases: ["compare-bundles"],
53
- description: "Compare two canonical Evidence v2 bundles",
34
+ description: "Compare two canonical Evidence bundles",
54
35
  args: z.object({
55
36
  left: z.string().describe("Left Evidence bundle JSON path"),
56
37
  right: z.string().describe("Right Evidence bundle JSON path"),
57
38
  }),
58
- options: z.object({
59
- offset: z
60
- .number()
61
- .int()
62
- .min(0)
63
- .default(0)
64
- .describe("Zero-based changed-record offset"),
65
- limit: z
66
- .number()
67
- .int()
68
- .min(1)
69
- .max(500)
70
- .default(100)
71
- .describe("Maximum changed records to return"),
72
- }),
73
- run: ({ args, options }) => logCliCommand(logger, "compare", async () => {
74
- const config = parseConfig(process.env);
75
- if (!config.ok)
76
- return cliError(config.error);
77
- const denied = await authorizeEvidence(config.value, [
78
- { capability: "evidence_read", path: args.left, access: "read" },
79
- { capability: "evidence_read", path: args.right, access: "read" },
80
- ]);
81
- if (denied !== undefined)
82
- return cliError(denied);
39
+ run: ({ args }) => logCliCommand(logger, "compare", async () => {
83
40
  const compared = await compareEvidenceBundlesCommand({
84
41
  leftPath: args.left,
85
42
  rightPath: args.right,
86
- offset: options.offset,
87
- limit: options.limit,
88
- policy: config.value.evidenceFilePolicy,
89
43
  });
90
44
  return compared.ok ? compared.value : cliError(compared.error);
91
45
  }),
92
46
  });
93
47
  };
94
- const authorizeEvidence = async (config, requests) => {
95
- const authority = await loadConfiguredPermissionAuthority(config);
96
- if (!authority.ok)
97
- return authority.error;
98
- for (const request of requests) {
99
- const result = await authority.value.authorize({
100
- capability: request.capability,
101
- roots: [request.path],
102
- executables: [],
103
- environment_names: [],
104
- network: "none",
105
- mount: false,
106
- operation_identity: `cli:${request.capability}:${request.path}`,
107
- }, request.access);
108
- if (!result.ok)
109
- return result.error instanceof PermissionRequiredError
110
- ? result.error
111
- : new AnalysisProtocolError(result.error.message, {
112
- cause: result.error,
113
- });
114
- }
115
- return undefined;
116
- };
117
48
  const cliError = (error) => ({
118
49
  error: "Analysis failed",
119
50
  ...projectAnalysisError(error),