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
@@ -5,101 +5,32 @@ import { V8InspectorProvider } from "./browser/V8InspectorProvider.js";
5
5
  import { CLI_COMMANDS } from "./cliCommandNames.js";
6
6
  import { logCliCommand } from "./cliLogging.js";
7
7
  import { parseConfig } from "./config.js";
8
- import { v8InspectorLocationScopes } from "./config/passiveObservation.js";
9
8
  import { javascriptRuntimeKindSchema, listJavaScriptRuntimeTargetsInputSchema, observeJavaScriptRuntimeInputSchema, } from "./domain/javascriptRuntimeObservation.js";
10
9
  import { AnalysisCapabilityUnavailableError, AnalysisInputError, projectAnalysisError, } from "./domain/errors.js";
11
- const scopeOptions = {
12
- allowedFileRoots: z
13
- .array(z.string().min(1))
14
- .optional()
15
- .describe("Exact roots; defaults to REA_V8_INSPECTOR_FILE_ROOTS_JSON"),
16
- allowedOrigins: z
17
- .array(z.string().min(1))
18
- .optional()
19
- .describe("Exact origins; defaults to REA_V8_INSPECTOR_ALLOWED_ORIGINS_JSON"),
20
- approved: z.boolean().default(false).describe("Approve passive attachment"),
21
- };
22
- const listOptionsSchema = z.object({
23
- ...scopeOptions,
24
- offset: z
25
- .number()
26
- .int()
27
- .min(0)
28
- .default(0)
29
- .describe("Zero-based target offset"),
30
- limit: z
31
- .number()
32
- .int()
33
- .min(1)
34
- .max(200)
35
- .default(100)
36
- .describe("Maximum targets to return"),
37
- });
38
10
  const observeOptionsSchema = z.object({
39
- ...scopeOptions,
40
- runtimeKind: javascriptRuntimeKindSchema.describe("Declared target role; Inspector cannot authenticate the Electron role"),
11
+ runtimeKind: javascriptRuntimeKindSchema
12
+ .optional()
13
+ .describe("Declared target role; Inspector cannot authenticate the Electron role"),
41
14
  observationMs: z
42
15
  .number()
43
16
  .int()
44
17
  .min(0)
45
- .max(10_000)
46
18
  .default(100)
47
- .describe("Bounded observation window in milliseconds"),
48
- maxEvents: z
49
- .number()
50
- .int()
51
- .min(1)
52
- .max(50_000)
53
- .default(10_000)
54
- .describe("Maximum retained protocol events"),
55
- maxScripts: z
56
- .number()
57
- .int()
58
- .min(1)
59
- .max(10_000)
60
- .default(2_000)
61
- .describe("Maximum retained scripts"),
62
- maxExecutionContexts: z
63
- .number()
64
- .int()
65
- .min(1)
66
- .max(5_000)
67
- .default(1_000)
68
- .describe("Maximum retained execution contexts"),
69
- maxLocationBytes: z
70
- .number()
71
- .int()
72
- .min(64)
73
- .max(65_536)
74
- .default(16_384)
75
- .describe("Maximum bytes in one protocol location"),
76
- maxTotalMetadataBytes: z
77
- .number()
78
- .int()
79
- .min(1_024)
80
- .max(32 * 1_024 * 1_024)
81
- .default(4 * 1_024 * 1_024)
82
- .describe("Maximum retained metadata bytes"),
19
+ .describe("Observation window in milliseconds"),
83
20
  });
84
21
  /** Register CLI equivalents of passive V8 Inspector tools. */
85
22
  export const registerJavaScriptRuntimeObservationCommands = (cli, logger) => {
86
23
  cli.command(CLI_COMMANDS.listJavaScriptRuntimeTargets, {
87
- description: "List approved Node/Electron V8 Inspector targets",
24
+ description: "List Node/Electron V8 Inspector targets",
88
25
  args: z.object({
89
- endpoint: z.string().describe("Configured literal-loopback endpoint"),
26
+ endpoint: z.string().describe("Literal-loopback Inspector endpoint"),
90
27
  }),
91
- options: listOptionsSchema,
92
- run: ({ args, options }) => logCliCommand(logger, CLI_COMMANDS.listJavaScriptRuntimeTargets, async () => {
28
+ run: ({ args }) => logCliCommand(logger, CLI_COMMANDS.listJavaScriptRuntimeTargets, async () => {
93
29
  const context = await runtimeContext("list_javascript_runtime_targets");
94
30
  if (!context.ok)
95
31
  return context.error;
96
32
  const parsed = listJavaScriptRuntimeTargetsInputSchema.safeParse({
97
33
  inspector_endpoint: args.endpoint,
98
- allowed_file_roots: options.allowedFileRoots ?? context.allowedFileRoots,
99
- allowed_origins: options.allowedOrigins ?? context.allowedOrigins,
100
- approved: options.approved,
101
- offset: options.offset,
102
- limit: options.limit,
103
34
  });
104
35
  if (!parsed.success)
105
36
  return inputError("list_javascript_runtime_targets");
@@ -110,7 +41,7 @@ export const registerJavaScriptRuntimeObservationCommands = (cli, logger) => {
110
41
  cli.command(CLI_COMMANDS.observeJavaScriptRuntime, {
111
42
  description: "Passively observe one exact Node/Electron Inspector target",
112
43
  args: z.object({
113
- endpoint: z.string().describe("Configured literal-loopback endpoint"),
44
+ endpoint: z.string().describe("Literal-loopback Inspector endpoint"),
114
45
  targetId: z
115
46
  .string()
116
47
  .describe("Target from list-javascript-runtime-targets"),
@@ -122,19 +53,9 @@ export const registerJavaScriptRuntimeObservationCommands = (cli, logger) => {
122
53
  return context.error;
123
54
  const parsed = observeJavaScriptRuntimeInputSchema.safeParse({
124
55
  inspector_endpoint: args.endpoint,
125
- allowed_file_roots: options.allowedFileRoots ?? context.allowedFileRoots,
126
- allowed_origins: options.allowedOrigins ?? context.allowedOrigins,
127
56
  target_id: args.targetId,
128
57
  runtime_kind: options.runtimeKind,
129
- approved: options.approved,
130
58
  observation_ms: options.observationMs,
131
- limits: {
132
- max_events: options.maxEvents,
133
- max_scripts: options.maxScripts,
134
- max_execution_contexts: options.maxExecutionContexts,
135
- max_location_bytes: options.maxLocationBytes,
136
- max_total_metadata_bytes: options.maxTotalMetadataBytes,
137
- },
138
59
  });
139
60
  if (!parsed.success)
140
61
  return inputError("observe_javascript_runtime");
@@ -151,18 +72,15 @@ const runtimeContext = async (operation) => {
151
72
  if (policy.status === "disabled")
152
73
  return {
153
74
  ok: false,
154
- error: cliError(new AnalysisCapabilityUnavailableError("rea-v8-inspector", operation, "V8 Inspector observation is disabled; configure exact endpoints and file or origin scopes before enabling it")),
75
+ error: cliError(new AnalysisCapabilityUnavailableError("rea-v8-inspector", operation, "V8 Inspector observation is disabled; enable REA_V8_INSPECTOR_OBSERVE_ENABLED to authorize loopback endpoints")),
155
76
  };
156
77
  const authority = await loadConfiguredPermissionAuthority(config.value);
157
78
  if (!authority.ok)
158
79
  return { ok: false, error: cliError(authority.error) };
159
- const scopes = v8InspectorLocationScopes(policy.locations);
160
80
  return {
161
81
  ok: true,
162
82
  authority: authority.value,
163
83
  provider: new V8InspectorProvider(),
164
- allowedFileRoots: scopes.fileRoots,
165
- allowedOrigins: scopes.allowedOrigins,
166
84
  };
167
85
  };
168
86
  const inputError = (operation) => cliError(new AnalysisInputError(operation));
@@ -1,7 +1,6 @@
1
- import { readFile, stat } from "node:fs/promises";
1
+ import { readFile } from "node:fs/promises";
2
2
  import { AnalysisInputError, projectAnalysisError } from "./domain/errors.js";
3
- const MAX_JSON_INPUT_BYTES = 64 * 1_024 * 1_024;
4
- /** Parse bounded inline JSON or one bounded local JSON file for a CLI workflow. */
3
+ /** Parse inline JSON or one local JSON file for a CLI workflow. */
5
4
  export const parseCliJsonInput = async (value, operation) => {
6
5
  const inline = parseJson(value);
7
6
  if (inline !== undefined)
@@ -9,15 +8,7 @@ export const parseCliJsonInput = async (value, operation) => {
9
8
  if (["{", "["].includes(value.trimStart()[0] ?? ""))
10
9
  return { ok: false, error: inputError(operation) };
11
10
  try {
12
- const metadata = await stat(value);
13
- if (!metadata.isFile())
14
- return jsonFileError(value, operation, "not-file");
15
- if (metadata.size > MAX_JSON_INPUT_BYTES)
16
- return jsonFileError(value, operation, "too-large");
17
- const bytes = await readFile(value);
18
- if (bytes.byteLength > MAX_JSON_INPUT_BYTES)
19
- return jsonFileError(value, operation, "too-large");
20
- const parsed = parseJson(bytes.toString("utf8"));
11
+ const parsed = parseJson(await readFile(value, "utf8"));
21
12
  return parsed === undefined
22
13
  ? jsonFileError(value, operation, "invalid-json")
23
14
  : { ok: true, value: parsed };
@@ -47,8 +38,7 @@ const jsonFileError = (path, operation, reason) => ({
47
38
  ...projectAnalysisError(new AnalysisInputError(operation, undefined, reason === "invalid-json"
48
39
  ? [{ path: [], reason: "invalid_format", expected: "JSON" }]
49
40
  : [])),
50
- input_path: path,
41
+ ...(path === undefined ? {} : { input_path: path }),
51
42
  input_reason: reason,
52
- maximum_input_bytes: MAX_JSON_INPUT_BYTES,
53
43
  },
54
44
  });
@@ -1,59 +1,41 @@
1
1
  import { z } from "incur";
2
- const boundedCount = (subject, maximum, fallback, minimum = 1) => z
2
+ /** Accept an agent-selected browser observation duration without an artificial ceiling. */
3
+ export const observationDuration = (fallback, minimum = 0) => z
3
4
  .number()
4
5
  .int()
5
6
  .min(minimum)
6
- .max(maximum)
7
7
  .default(fallback)
8
- .describe(`Maximum ${subject}`);
9
- const boundedBytes = (subject, maximum, fallback) => boundedCount(`${subject} in bytes`, maximum, fallback);
10
- const positiveCount = (subject, fallback) => z.number().int().min(1).default(fallback).describe(`Maximum ${subject}`);
11
- const browserScopeOptions = {
8
+ .describe("Observation duration in milliseconds");
9
+ /** Shared passive browser origin options. */
10
+ export const browserScopeOptions = {
12
11
  allowedOrigins: z
13
12
  .array(z.string().min(1))
14
13
  .optional()
15
14
  .describe("Exact origins to observe; defaults to REA_BROWSER_ALLOWED_ORIGINS_JSON"),
16
- approved: z.boolean().default(false).describe("Approve passive observation"),
17
15
  };
18
16
  export const browserPageInspectionOptions = z.object({
19
17
  ...browserScopeOptions,
20
- observationMs: boundedCount("observation duration in milliseconds", 10_000, 500, 0),
18
+ observationMs: observationDuration(500),
21
19
  includeAccessibilityText: z
22
20
  .boolean()
23
21
  .default(false)
24
- .describe("Include bounded accessibility text"),
22
+ .describe("Include accessibility text"),
25
23
  includeConsoleText: z
26
24
  .boolean()
27
25
  .default(false)
28
- .describe("Include bounded console message text"),
29
- consoleTextApproved: z
30
- .boolean()
31
- .default(false)
32
- .describe("Approve capturing console message text"),
26
+ .describe("Include console message text"),
33
27
  includeJsonBodyShapes: z
34
28
  .boolean()
35
29
  .default(false)
36
30
  .describe("Include structural shapes of JSON response bodies"),
37
- jsonBodySchemaApproved: z
38
- .boolean()
39
- .default(false)
40
- .describe("Approve inspecting JSON response bodies for structural shapes"),
41
31
  includeWebsocketShapes: z
42
32
  .boolean()
43
33
  .default(false)
44
34
  .describe("Include structural shapes of WebSocket payloads"),
45
- websocketShapeApproved: z
46
- .boolean()
47
- .default(false)
48
- .describe("Approve inspecting WebSocket payloads for structural shapes"),
49
35
  includeScriptSources: z
50
36
  .boolean()
51
37
  .default(false)
52
- .describe("Include bounded JavaScript source text"),
53
- sourceCaptureApproved: z
54
- .boolean()
55
- .default(false)
56
- .describe("Approve capturing bounded script source text"),
38
+ .describe("Include JavaScript source text"),
57
39
  includeStorageKeys: z
58
40
  .boolean()
59
41
  .default(false)
@@ -62,84 +44,17 @@ export const browserPageInspectionOptions = z.object({
62
44
  .boolean()
63
45
  .default(false)
64
46
  .describe("Include content-derived storage fingerprints"),
65
- maxFrames: boundedCount("page frames", 1_000, 200),
66
- maxDomNodes: boundedCount("DOM nodes", 10_000, 2_000),
67
- maxAxNodes: boundedCount("accessibility nodes", 10_000, 2_000),
68
- maxAxTextFieldBytes: boundedBytes("one accessibility text field", 16 * 1_024, 1_024),
69
- maxTotalAxTextBytes: boundedBytes("total accessibility text", 1_024 * 1_024, 64 * 1_024),
70
- maxScripts: boundedCount("scripts", 1_000, 200),
71
- maxResources: boundedCount("resources", 10_000, 2_000),
72
- maxWorkers: boundedCount("workers", 5_000, 500),
73
- maxStorageKeys: boundedCount("storage keys", 10_000, 1_000),
74
- maxScriptSourceBytes: boundedBytes("one script source", 4 * 1_024 * 1_024, 1_024 * 1_024),
75
- maxTotalScriptSourceBytes: boundedBytes("total script source", 16 * 1_024 * 1_024, 4 * 1_024 * 1_024),
76
- maxNetworkEvents: boundedCount("network events", 10_000, 1_000),
77
- maxConsoleEvents: boundedCount("console events", 2_000, 200),
78
- maxConsoleTextFieldBytes: boundedBytes("one console text field", 16 * 1_024, 1_024),
79
- maxTotalConsoleTextBytes: boundedBytes("total console text", 1_024 * 1_024, 64 * 1_024),
80
- maxJsonBodyBytes: boundedBytes("one JSON response body", 4 * 1_024 * 1_024, 1_024 * 1_024),
81
- maxTotalJsonBodyBytes: boundedBytes("total JSON response bodies", 16 * 1_024 * 1_024, 4 * 1_024 * 1_024),
82
- maxJsonShapeNodes: boundedCount("JSON shape nodes", 100_000, 5_000),
83
- maxJsonShapeDepth: boundedCount("JSON shape depth", 100, 20),
84
- maxWebsocketEvents: boundedCount("WebSocket events", 5_000, 500),
85
- maxWebsocketShapeBytes: boundedBytes("one WebSocket shape", 1_024 * 1_024, 64 * 1_024),
86
- maxTotalWebsocketShapeBytes: boundedBytes("total WebSocket shapes", 16 * 1_024 * 1_024, 1_024 * 1_024),
87
47
  });
88
- const electronScopeOptions = {
89
- allowedFileRoots: z
90
- .array(z.string().min(1))
91
- .optional()
92
- .describe("Filesystem roots; defaults to REA_ELECTRON_FILE_ROOTS_JSON"),
93
- approved: z.boolean().default(false).describe("Approve passive observation"),
94
- };
95
48
  export const electronPageInspectionOptions = z.object({
96
- ...electronScopeOptions,
97
- observationMs: boundedCount("observation duration in milliseconds", 10_000, 100, 0),
49
+ observationMs: observationDuration(100),
98
50
  includeScriptSources: z
99
51
  .boolean()
100
52
  .default(false)
101
- .describe("Include bounded JavaScript source text"),
102
- sourceCaptureApproved: z
103
- .boolean()
104
- .default(false)
105
- .describe("Approve capturing bounded script source text"),
106
- maxFrames: boundedCount("page frames", 1_000, 200),
107
- maxDomNodes: boundedCount("DOM nodes", 10_000, 2_000),
108
- maxScripts: boundedCount("scripts", 2_000, 500),
109
- maxResources: boundedCount("resources", 10_000, 2_000),
110
- maxWorkers: boundedCount("workers", 5_000, 500),
111
- maxScriptSourceBytes: boundedBytes("one captured script source", 4 * 1_024 * 1_024, 1_024 * 1_024),
112
- maxTotalScriptSourceBytes: boundedBytes("total captured script source", 16 * 1_024 * 1_024, 4 * 1_024 * 1_024),
53
+ .describe("Include JavaScript source text"),
113
54
  });
114
55
  export const javascriptApplicationOptions = z.object({
115
- approved: z
116
- .boolean()
117
- .default(false)
118
- .describe("Approve reading the application artifact"),
119
56
  artifactFormat: z
120
57
  .enum(["auto", "asar", "directory"])
121
58
  .default("auto")
122
59
  .describe("Application artifact format"),
123
- sourceMapReadApproved: z
124
- .boolean()
125
- .default(false)
126
- .describe("Approve reading local source maps referenced by the application"),
127
- maxEntries: positiveCount("artifact entries to inspect", 8_000),
128
- maxTotalArtifactBytes: positiveCount("total uncompressed artifact content to inspect", 512 * 1_024 * 1_024),
129
- maxArtifactEntryBytes: positiveCount("uncompressed content for one artifact entry", 128 * 1_024 * 1_024),
130
- maxCompressionRatio: z
131
- .number()
132
- .min(1)
133
- .default(1_000)
134
- .describe("Maximum accepted compressed-to-uncompressed expansion ratio"),
135
- maxDepth: positiveCount("artifact directory depth", 64),
136
- maxPathBytes: positiveCount("encoded artifact path length", 4_096),
137
- maxTextFiles: positiveCount("text files to parse", 5_000),
138
- maxTotalTextBytes: positiveCount("total text content to parse", 128 * 1_024 * 1_024),
139
- maxTextFileBytes: positiveCount("size of one parsed text file", 8 * 1_024 * 1_024),
140
- maxAstNodes: positiveCount("JavaScript AST nodes to parse", 2_000_000),
141
- maxFindings: positiveCount("static-analysis findings to return", 8_000),
142
- maxModules: positiveCount("application modules to project", 20_000),
143
- maxSourceMapSources: positiveCount("original sources from source maps", 5_000),
144
- maxParseMilliseconds: positiveCount("JavaScript parsing time in milliseconds", 30_000),
145
60
  });
@@ -5,24 +5,9 @@ import { readProjectPermissionStore, revokeProjectPermissionGrant, } from "./app
5
5
  import { logCliCommand } from "./cliLogging.js";
6
6
  import { parseConfig } from "./config.js";
7
7
  import { PermissionRequiredError, projectAnalysisError, } from "./domain/errors.js";
8
+ import { PERMISSION_CAPABILITIES, } from "./domain/permissionPolicy.js";
8
9
  import { CLI_COMMANDS } from "./cliCommandNames.js";
9
- const capabilitySchema = z.enum([
10
- "process_capture",
11
- "browser_observe",
12
- "browser_automate",
13
- "electron_observe",
14
- "electron_automate",
15
- "evidence_read",
16
- "evidence_write",
17
- "investigation_input",
18
- "investigation_workspace_read",
19
- "investigation_workspace_write",
20
- "snapshot_read",
21
- "snapshot_write",
22
- "artifact_extract",
23
- "native_mount",
24
- "reference_read",
25
- ]);
10
+ const capabilitySchema = z.enum(PERMISSION_CAPABILITIES);
26
11
  /** Require an explicit decision before a project permission grant is removed. */
27
12
  export const approvePolicyRevocation = async (options) => {
28
13
  if (options.approved)
@@ -6,16 +6,16 @@ import { parseCliJsonInput } from "./cliJsonInput.js";
6
6
  import { replayMachineRunInputSchema, runReplayMachine, } from "./domain/replayMachineRun.js";
7
7
  import { AnalysisInputError, projectAnalysisError } from "./domain/errors.js";
8
8
  import { projectInputIssues } from "./domain/inputIssueProjection.js";
9
- /** Register Process Capture v4 one-shot commands through shared application services. */
9
+ /** Register process capture one-shot commands through shared application services. */
10
10
  export const registerProcessCommands = (cli, logger) => {
11
11
  registerReplayMachineCommand(cli, logger);
12
12
  cli.command(CLI_COMMANDS.captureProcess, {
13
- description: "Capture one approved Process Capture v4 JSON scenario",
13
+ description: "Capture one approved process capture JSON scenario",
14
14
  args: z.object({ scenario: z.string().describe("Scenario JSON path") }),
15
15
  run: ({ args }) => logCliCommand(logger, "capture-process", () => captureProcessScenarioFile(args.scenario)),
16
16
  });
17
17
  cli.command(CLI_COMMANDS.compareProcessCaptures, {
18
- description: "Compare two Process Capture v4 Evidence JSON files",
18
+ description: "Compare two process capture Evidence JSON files",
19
19
  args: z.object({
20
20
  left: z.string().describe("Left capture Evidence JSON path"),
21
21
  right: z.string().describe("Right capture Evidence JSON path"),
package/dist/cliSetup.js CHANGED
@@ -1,5 +1,4 @@
1
1
  import { cancel, confirm, intro, isCancel, multiselect, outro, } from "@clack/prompts";
2
- import { projectDoctorReport } from "./application/DoctorProjection.js";
3
2
  import { SUPPORTED_CLIENT_DEFINITIONS } from "./application/SupportedClients.js";
4
3
  const clientDisplayNames = new Map(SUPPORTED_CLIENT_DEFINITIONS.map(({ name, displayName }) => [
5
4
  name,
@@ -72,18 +71,6 @@ export const renderInteractiveSetupResult = (result) => {
72
71
  writeLine(`! ${result.remediation ?? "Setup needs attention."}`);
73
72
  outro("Run `rea doctor` for the remaining checks.", promptStreams);
74
73
  };
75
- /** Keep default non-TTY output actionable without emitting the full catalog. */
76
- export const conciseSetupResult = (result) => ({
77
- status: result.status,
78
- plannedActions: result.plannedActions,
79
- appliedActions: result.appliedActions,
80
- clients: result.clients,
81
- doctor: projectDoctorReport(result.doctor, "summary"),
82
- ...(result.code === undefined ? {} : { code: result.code }),
83
- ...(result.remediation === undefined
84
- ? {}
85
- : { remediation: result.remediation }),
86
- });
87
74
  const selectSetupActions = async (actions, accessible) => {
88
75
  const clientActions = actions.filter(({ kind }) => kind === "configure_client");
89
76
  const componentActions = actions.filter(({ kind }) => kind !== "configure_client");
@@ -8,10 +8,10 @@ export const parseBrowserScenarioPolicy = (env) => {
8
8
  const executableRoots = parseAbsoluteRoots(env.REA_BROWSER_SCENARIO_EXECUTABLE_ROOTS_JSON, "REA_BROWSER_SCENARIO_EXECUTABLE_ROOTS_JSON");
9
9
  if (!executableRoots.ok)
10
10
  return executableRoots;
11
- const cdpEndpoints = parseBrowserArray(env.REA_BROWSER_SCENARIO_CDP_ENDPOINTS_JSON, "REA_BROWSER_SCENARIO_CDP_ENDPOINTS_JSON", browserEndpointSchema, 16);
11
+ const cdpEndpoints = parseBrowserArray(env.REA_BROWSER_SCENARIO_CDP_ENDPOINTS_JSON, "REA_BROWSER_SCENARIO_CDP_ENDPOINTS_JSON", browserEndpointSchema);
12
12
  if (!cdpEndpoints.ok)
13
13
  return cdpEndpoints;
14
- const allowedOrigins = parseBrowserArray(env.REA_BROWSER_SCENARIO_ALLOWED_ORIGINS_JSON, "REA_BROWSER_SCENARIO_ALLOWED_ORIGINS_JSON", browserOriginSchema, 32);
14
+ const allowedOrigins = parseBrowserArray(env.REA_BROWSER_SCENARIO_ALLOWED_ORIGINS_JSON, "REA_BROWSER_SCENARIO_ALLOWED_ORIGINS_JSON", browserOriginSchema);
15
15
  if (!allowedOrigins.ok)
16
16
  return allowedOrigins;
17
17
  const allowedEnvironment = parseStringArray(env.REA_BROWSER_SCENARIO_ALLOWED_ENV_JSON, "REA_BROWSER_SCENARIO_ALLOWED_ENV_JSON");
@@ -44,10 +44,6 @@ const environmentSchema = z
44
44
  REA_PROCESS_EXECUTABLE_ROOTS_JSON: z.string().default("[]"),
45
45
  REA_PROCESS_WORKING_ROOTS_JSON: z.string().default("[]"),
46
46
  REA_PROCESS_ALLOWED_ENV_JSON: z.string().default("[]"),
47
- REA_EVIDENCE_ROOTS_JSON: z.string().default("[]"),
48
- REA_INVESTIGATION_INPUT_ROOTS_JSON: z.string().default("[]"),
49
- REA_ANALYSIS_SNAPSHOT_ROOTS_JSON: z.string().default("[]"),
50
- REA_REFERENCE_ROOTS_JSON: z.string().default("[]"),
51
47
  REA_REFERENCE_SECRET_PATTERNS_JSON: z.string().default("[]"),
52
48
  REA_BROWSER_OBSERVE_ENABLED: z.enum(["true", "false"]).default("false"),
53
49
  REA_BROWSER_CDP_ENDPOINTS_JSON: z.string().default("[]"),
@@ -59,8 +55,6 @@ const environmentSchema = z
59
55
  REA_BROWSER_SCENARIO_ALLOWED_ORIGINS_JSON: z.string().default("[]"),
60
56
  REA_BROWSER_SCENARIO_ALLOWED_ENV_JSON: z.string().default("[]"),
61
57
  REA_ELECTRON_OBSERVE_ENABLED: z.enum(["true", "false"]).default("false"),
62
- REA_ELECTRON_CDP_ENDPOINTS_JSON: z.string().default("[]"),
63
- REA_ELECTRON_FILE_ROOTS_JSON: z.string().default("[]"),
64
58
  REA_ELECTRON_AUTOMATE_ENABLED: z.enum(["true", "false"]).default("false"),
65
59
  REA_ELECTRON_AUTOMATE_AUTO_GRANT: z
66
60
  .enum(["true", "false"])
@@ -70,9 +64,6 @@ const environmentSchema = z
70
64
  REA_V8_INSPECTOR_OBSERVE_ENABLED: z
71
65
  .enum(["true", "false"])
72
66
  .default("false"),
73
- REA_V8_INSPECTOR_ENDPOINTS_JSON: z.string().default("[]"),
74
- REA_V8_INSPECTOR_FILE_ROOTS_JSON: z.string().default("[]"),
75
- REA_V8_INSPECTOR_ALLOWED_ORIGINS_JSON: z.string().default("[]"),
76
67
  REA_JAVASCRIPT_REPLAY_ENABLED: z.enum(["true", "false"]).default("false"),
77
68
  REA_JAVASCRIPT_REPLAY_ROOTS_JSON: z.string().default("[]"),
78
69
  REA_JAVASCRIPT_REPLAY_NODE_PATH: z
@@ -2,7 +2,7 @@ import { ConfigurationError } from "../domain/errors.js";
2
2
  import { ok } from "../domain/result.js";
3
3
  import { parseEnvironment } from "./environment.js";
4
4
  import { parseStringArray, parseAbsoluteRoots, parseLoaderArgs, } from "./parsers.js";
5
- import { filePolicy, permissionScope, administratorGrants, } from "./permissions.js";
5
+ import { permissionScope, administratorGrants } from "./permissions.js";
6
6
  import { appendElectronAutomationCeiling, parseElectronAutomationPolicy, } from "./electronAutomation.js";
7
7
  import { appendBrowserScenarioCeiling, parseBrowserScenarioPolicy, } from "./browserScenario.js";
8
8
  import { appendManagedRuntimeCeiling, parseManagedRuntimePolicy, } from "./managedRuntime.js";
@@ -17,18 +17,6 @@ const parseAllArrays = (env) => {
17
17
  const loaderArgs = parseLoaderArgs(env.HOPPER_LOADER_ARGS_JSON);
18
18
  if (!loaderArgs.ok)
19
19
  return loaderArgs;
20
- const evidenceRoots = parseStringArray(env.REA_EVIDENCE_ROOTS_JSON, "REA_EVIDENCE_ROOTS_JSON");
21
- if (!evidenceRoots.ok)
22
- return evidenceRoots;
23
- const investigationInputRoots = parseStringArray(env.REA_INVESTIGATION_INPUT_ROOTS_JSON, "REA_INVESTIGATION_INPUT_ROOTS_JSON");
24
- if (!investigationInputRoots.ok)
25
- return investigationInputRoots;
26
- const analysisSnapshotRoots = parseStringArray(env.REA_ANALYSIS_SNAPSHOT_ROOTS_JSON, "REA_ANALYSIS_SNAPSHOT_ROOTS_JSON");
27
- if (!analysisSnapshotRoots.ok)
28
- return analysisSnapshotRoots;
29
- const referenceRoots = parseStringArray(env.REA_REFERENCE_ROOTS_JSON, "REA_REFERENCE_ROOTS_JSON");
30
- if (!referenceRoots.ok)
31
- return referenceRoots;
32
20
  const secretPatterns = parseStringArray(env.REA_REFERENCE_SECRET_PATTERNS_JSON, "REA_REFERENCE_SECRET_PATTERNS_JSON");
33
21
  if (!secretPatterns.ok)
34
22
  return secretPatterns;
@@ -37,10 +25,6 @@ const parseAllArrays = (env) => {
37
25
  return managedRuntimeRoots;
38
26
  return ok({
39
27
  loaderArgs: loaderArgs.value,
40
- evidenceRoots: evidenceRoots.value,
41
- investigationInputRoots: investigationInputRoots.value,
42
- analysisSnapshotRoots: analysisSnapshotRoots.value,
43
- referenceRoots: referenceRoots.value,
44
28
  secretPatterns: secretPatterns.value,
45
29
  managedRuntimeRoots: managedRuntimeRoots.value,
46
30
  });
@@ -51,15 +35,7 @@ const appendNativeMountCeiling = (ceilings, env) => {
51
35
  };
52
36
  const buildPermissionCeilings = (env, arrays, policies) => {
53
37
  const ceilings = [
54
- permissionScope("evidence_read", arrays.evidenceRoots),
55
- permissionScope("evidence_write", arrays.evidenceRoots),
56
- permissionScope("investigation_input", arrays.investigationInputRoots),
57
- permissionScope("investigation_workspace_read", arrays.evidenceRoots),
58
- permissionScope("investigation_workspace_write", arrays.evidenceRoots),
59
- permissionScope("snapshot_read", arrays.analysisSnapshotRoots),
60
- permissionScope("snapshot_write", arrays.analysisSnapshotRoots),
61
38
  permissionScope("artifact_extract", ["/"]),
62
- permissionScope("reference_read", arrays.referenceRoots),
63
39
  ];
64
40
  appendProcessCaptureCeiling(ceilings, policies.processCapture);
65
41
  appendPassiveObservationCeilings(ceilings, policies.passiveObservation);
@@ -83,16 +59,8 @@ const buildAppConfig = (env, arrays, permissionCeilings, policies) => ({
83
59
  processExecutionPolicy: policies.processCapture,
84
60
  artifactNativeMountEnabled: env.REA_ARTIFACT_NATIVE_MOUNT_ENABLED === "true",
85
61
  artifactIntegrityContinueEnabled: env.REA_ARTIFACT_INTEGRITY_CONTINUE_ENABLED === "true",
86
- evidenceFilePolicy: filePolicy(arrays.evidenceRoots),
87
- investigationInputRoots: arrays.investigationInputRoots,
88
- analysisSnapshotFilePolicy: filePolicy(arrays.analysisSnapshotRoots),
89
62
  referenceSourcePolicy: {
90
- roots: arrays.referenceRoots,
91
63
  secretPatterns: arrays.secretPatterns,
92
- maxBytes: 16 * 1024 * 1024,
93
- maxEntries: 10_000,
94
- maxDepth: 32,
95
- maxPathBytes: 4_096,
96
64
  },
97
65
  browserObservationPolicy: policies.passiveObservation.browser,
98
66
  browserScenarioPolicy: policies.browserScenario,
@@ -2,18 +2,14 @@ import { z } from "zod";
2
2
  import { isAbsolute } from "node:path";
3
3
  import { ConfigurationError } from "../domain/errors.js";
4
4
  import { err, ok } from "../domain/result.js";
5
- import { electronFileRootsSchema } from "../domain/electronObservation.js";
6
5
  export const parseStringArray = (encoded, name) => {
7
6
  try {
8
- const parsed = z
9
- .array(z.string().min(1))
10
- .max(128)
11
- .safeParse(JSON.parse(encoded));
7
+ const parsed = z.array(z.string().min(1)).safeParse(JSON.parse(encoded));
12
8
  return parsed.success
13
9
  ? ok(parsed.data)
14
- : err(new ConfigurationError(parsed.error.issues.some(({ code }) => code === "too_big")
15
- ? `${name} must encode at most 128 strings`
16
- : `${name} must encode an array of strings`, { cause: parsed.error }));
10
+ : err(new ConfigurationError(`${name} must encode an array of strings`, {
11
+ cause: parsed.error,
12
+ }));
17
13
  }
18
14
  catch (cause) {
19
15
  return err(new ConfigurationError(`${name} must be valid JSON`, { cause }));
@@ -28,12 +24,9 @@ export const parseAbsoluteRoots = (encoded, name) => {
28
24
  ? err(new ConfigurationError(`${name} must encode absolute roots`))
29
25
  : parsed;
30
26
  };
31
- export const parseBrowserArray = (encoded, name, itemSchema, maximum) => {
27
+ export const parseBrowserArray = (encoded, name, itemSchema) => {
32
28
  try {
33
- const parsed = z
34
- .array(itemSchema)
35
- .max(maximum)
36
- .safeParse(JSON.parse(encoded));
29
+ const parsed = z.array(itemSchema).safeParse(JSON.parse(encoded));
37
30
  return parsed.success
38
31
  ? ok([...new Set(parsed.data)].sort())
39
32
  : err(new ConfigurationError(`${name} must encode valid browser scopes`, {
@@ -44,20 +37,6 @@ export const parseBrowserArray = (encoded, name, itemSchema, maximum) => {
44
37
  return err(new ConfigurationError(`${name} must be valid JSON`, { cause }));
45
38
  }
46
39
  };
47
- export const parseElectronFileRoots = (encoded) => {
48
- try {
49
- const decoded = JSON.parse(encoded);
50
- if (Array.isArray(decoded) && decoded.length === 0)
51
- return ok([]);
52
- const parsed = electronFileRootsSchema.safeParse(decoded);
53
- return parsed.success
54
- ? ok(parsed.data)
55
- : err(new ConfigurationError("REA_ELECTRON_FILE_ROOTS_JSON must encode absolute roots", { cause: parsed.error }));
56
- }
57
- catch (cause) {
58
- return err(new ConfigurationError("REA_ELECTRON_FILE_ROOTS_JSON must be valid JSON", { cause }));
59
- }
60
- };
61
40
  export const parseLoaderArgs = (encoded) => {
62
41
  if (encoded === undefined)
63
42
  return ok([]);