rea-agents 3.2.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/README.md +183 -332
  2. package/bridge/ghidra/ReaGhidraBridge.java +561 -74
  3. package/bridge/hopper_bridge.py +70 -27
  4. package/bridge/native/ReaNativeUI.swift +157 -0
  5. package/dist/application/AnalysisContextQueries.js +19 -5
  6. package/dist/application/AnalysisSnapshotCache.js +30 -11
  7. package/dist/application/AppleAssetCatalogAnalysis.js +171 -0
  8. package/dist/application/ArtifactExtractionDestination.js +0 -12
  9. package/dist/application/ArtifactGraphConstruction.js +44 -11
  10. package/dist/application/ArtifactInventory/classify.js +7 -15
  11. package/dist/application/ArtifactInventory/hash.js +4 -2
  12. package/dist/application/ArtifactInventory/policy.js +2 -17
  13. package/dist/application/ArtifactInventory/reader.js +3 -3
  14. package/dist/application/ArtifactInventory/scanCanonical.js +2 -2
  15. package/dist/application/ArtifactInventory/scanReader.js +12 -4
  16. package/dist/application/ArtifactInventory/types.js +0 -3
  17. package/dist/application/BinarySession.js +28 -43
  18. package/dist/application/BinarySessionExecution.js +37 -1
  19. package/dist/application/BinaryTargetResolver.js +50 -4
  20. package/dist/application/BrowserEvidence.js +36 -7
  21. package/dist/application/BrowserObservationService.js +17 -44
  22. package/dist/application/BrowserScenarioCaptureService.js +2 -35
  23. package/dist/application/BrowserScenarioEvidence.js +13 -9
  24. package/dist/application/CapabilityClientRequirements.js +2 -11
  25. package/dist/application/CapabilityInventory.js +21 -35
  26. package/dist/application/ClientConfigurationDocument.js +84 -7
  27. package/dist/application/ClientRegistrationIdentity.js +32 -0
  28. package/dist/application/ClientRegistrationStatus.js +59 -6
  29. package/dist/application/DirectAnalysis.js +37 -58
  30. package/dist/application/DirectAnalysisStatus.js +4 -4
  31. package/dist/application/Doctor.js +89 -80
  32. package/dist/application/DoctorDiagnostics.js +2 -26
  33. package/dist/application/DoctorScope.js +8 -14
  34. package/dist/application/ElectronActiveEvidence.js +10 -27
  35. package/dist/application/ElectronActiveObservationService.js +9 -36
  36. package/dist/application/ElectronBoundaryAnalysis.js +2 -0
  37. package/dist/application/ElectronBoundaryGraphNative.js +1 -1
  38. package/dist/application/ElectronEvidence.js +8 -3
  39. package/dist/application/ElectronObservationService.js +9 -25
  40. package/dist/application/EnhancedLiteralTracing.js +4 -8
  41. package/dist/application/EnhancedTools.js +15 -35
  42. package/dist/application/FilesystemSnapshot.js +7 -8
  43. package/dist/application/JavaScriptApplicationEvidenceGraph.js +2 -1
  44. package/dist/application/JavaScriptApplicationWorkflowService.js +31 -7
  45. package/dist/application/JavaScriptArtifactAnalysis.js +6 -4
  46. package/dist/application/JavaScriptArtifactFiles.js +5 -0
  47. package/dist/application/JavaScriptArtifactPathResolution.js +179 -47
  48. package/dist/application/JavaScriptRuntimeObservationEvidence.js +6 -3
  49. package/dist/application/JavaScriptRuntimeObservationService.js +9 -25
  50. package/dist/application/JavaScriptRuntimeReconciliationService.js +45 -4
  51. package/dist/application/JavaScriptSemanticGraphAsyncProjection.js +11 -0
  52. package/dist/application/JavaScriptSemanticGraphChildProcessProjection.js +11 -0
  53. package/dist/application/JavaScriptSemanticGraphDataProjection.js +11 -0
  54. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +14 -5
  55. package/dist/application/JsonFiles.js +1 -1
  56. package/dist/application/LazyAnalysisProvider.js +27 -6
  57. package/dist/application/ManagedMemberComparisonService.js +19 -6
  58. package/dist/application/NativeApiInspection.js +2 -0
  59. package/dist/application/NativeCallRoutes.js +72 -0
  60. package/dist/application/NativeDispatchMetadataInspection.js +33 -0
  61. package/dist/application/NativeUiActionTrace.js +73 -49
  62. package/dist/application/NativeValueTrace.js +320 -0
  63. package/dist/application/ProcessCaptureCapability.js +32 -5
  64. package/dist/application/ProcessCaptureEnvironment.js +9 -26
  65. package/dist/application/ProcessCaptureError.js +1 -5
  66. package/dist/application/ProcessCaptureJournal.js +3 -40
  67. package/dist/application/ProcessCaptureLifecycle.js +102 -111
  68. package/dist/application/ProcessCli.js +18 -25
  69. package/dist/application/ProcessEvidence.js +5 -7
  70. package/dist/application/ProcessFilesystemEffects.js +36 -0
  71. package/dist/application/ProcessHarness.js +41 -120
  72. package/dist/application/ProcessNormalization.js +2 -17
  73. package/dist/application/ProcessScenarioRuntimeValidation.js +76 -0
  74. package/dist/application/ReferenceSourceImport.js +3 -4
  75. package/dist/application/Setup.js +236 -84
  76. package/dist/application/SetupClientConfiguration.js +14 -9
  77. package/dist/application/SetupPlan.js +138 -86
  78. package/dist/application/SetupSkill.js +0 -1
  79. package/dist/application/SupportedClients.js +102 -21
  80. package/dist/application/Uninstall.js +31 -20
  81. package/dist/application/Update.js +93 -0
  82. package/dist/application/UpdateMaintenance.js +108 -0
  83. package/dist/application/UpdateRuntime.js +126 -0
  84. package/dist/application/runtime.js +13 -2
  85. package/dist/artifacts/ArtifactPaths.js +6 -8
  86. package/dist/artifacts/ArtifactProvider.js +94 -41
  87. package/dist/artifacts/AsarArtifactReader.js +19 -4
  88. package/dist/artifacts/KeyedArchiveReader.js +110 -0
  89. package/dist/artifacts/MachOSliceArtifactReader.js +53 -5
  90. package/dist/artifacts/ZipArtifactReader.js +18 -1
  91. package/dist/browser/BrowserScenarioSecrets.js +28 -1
  92. package/dist/browser/CdpBrowserProvider.js +36 -15
  93. package/dist/browser/CdpCaptureDocuments.js +22 -8
  94. package/dist/browser/CdpCaptureEventHandlers.js +14 -5
  95. package/dist/browser/CdpCaptureEventHelpers.js +13 -0
  96. package/dist/browser/CdpCaptureEvents.js +10 -1
  97. package/dist/browser/CdpElectronInspection.js +5 -10
  98. package/dist/browser/CdpElectronProvider.js +1 -5
  99. package/dist/browser/CdpElectronScripts.js +1 -1
  100. package/dist/browser/CdpEndpoint.js +3 -2
  101. package/dist/browser/CdpObservationSession.js +14 -10
  102. package/dist/browser/CdpPageCapture.js +1 -1
  103. package/dist/browser/CdpPageCaptureScripts.js +1 -1
  104. package/dist/browser/CdpSafeMetadata.js +5 -4
  105. package/dist/browser/CdpScreenshot.js +16 -5
  106. package/dist/browser/CdpTargetSession.js +25 -4
  107. package/dist/browser/CdpWebMcpDiscovery.js +93 -20
  108. package/dist/browser/JavaScriptRuntimeScope.js +28 -2
  109. package/dist/browser/PlaywrightBrowserScenarioProvider.js +9 -8
  110. package/dist/browser/PlaywrightElectronActiveActions.js +3 -10
  111. package/dist/browser/PlaywrightElectronActiveProvider.js +5 -5
  112. package/dist/browser/PlaywrightScenarioActions.js +1 -1
  113. package/dist/browser/PlaywrightScenarioArtifacts.js +13 -25
  114. package/dist/browser/PlaywrightScenarioBrowser.js +28 -25
  115. package/dist/browser/PlaywrightScenarioEvents.js +82 -93
  116. package/dist/browser/PlaywrightScenarioSession.js +27 -123
  117. package/dist/browser/PngVisualDiff.js +22 -3
  118. package/dist/browser/V8InspectorCaptureProjection.js +7 -1
  119. package/dist/browser/V8InspectorProvider.js +60 -7
  120. package/dist/browser/WebSourceMapFetcher.js +99 -53
  121. package/dist/cli/artifactCommands.js +56 -12
  122. package/dist/cli/coreAnalysisCommands.js +110 -0
  123. package/dist/cli/managedCommands.js +1 -31
  124. package/dist/cli/setupCommands.js +16 -14
  125. package/dist/cli/utilityCommands.js +61 -4
  126. package/dist/cli.js +5 -7
  127. package/dist/cliApplicationCommands.js +0 -83
  128. package/dist/cliBrowserAdvancedCommands.js +7 -11
  129. package/dist/cliBrowserCommands.js +15 -23
  130. package/dist/cliBrowserContext.js +3 -24
  131. package/dist/cliBrowserScenarioCommands.js +2 -10
  132. package/dist/cliCommandNames.js +82 -7
  133. package/dist/cliElectronCommands.js +10 -36
  134. package/dist/cliJavaScriptRuntimeCommands.js +6 -30
  135. package/dist/cliJsonInput.js +4 -2
  136. package/dist/cliLogging.js +16 -7
  137. package/dist/cliObservationOptions.js +1 -1
  138. package/dist/cliOutput.js +2 -4
  139. package/dist/cliProcessCommands.js +6 -33
  140. package/dist/cliSetup.js +90 -160
  141. package/dist/config/environment.js +2 -78
  142. package/dist/config/parseConfig.js +18 -109
  143. package/dist/config/parsers.js +0 -23
  144. package/dist/contracts/applicationToolContracts.js +1 -118
  145. package/dist/contracts/artifactToolContracts.js +11 -19
  146. package/dist/contracts/browserScenarioToolContracts.js +1 -5
  147. package/dist/contracts/browserToolContracts.js +9 -16
  148. package/dist/contracts/electronToolContracts.js +5 -6
  149. package/dist/contracts/enhancedInputs.js +3 -2
  150. package/dist/contracts/errorSchemas.js +16 -40
  151. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  152. package/dist/contracts/javascriptApplicationWorkflowExamples.js +2 -2
  153. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +4 -4
  154. package/dist/contracts/javascriptRuntimeReconciliationExample.js +1 -1
  155. package/dist/contracts/managedToolContracts.js +7 -4
  156. package/dist/contracts/managedWorkflowExamples.js +0 -22
  157. package/dist/contracts/managedWorkflowToolContracts.js +16 -31
  158. package/dist/contracts/nativeToolContracts.js +9 -0
  159. package/dist/contracts/promptContracts.js +6 -6
  160. package/dist/contracts/sessionToolSchemas.js +3 -3
  161. package/dist/contracts/toolContractExamples.js +4 -3
  162. package/dist/contracts/toolContracts.js +18 -7
  163. package/dist/contracts/toolEffects.js +34 -21
  164. package/dist/contracts/toolOutputSchemaGroups.js +18 -5
  165. package/dist/contracts/toolOutputSchemaPrimitives.js +9 -6
  166. package/dist/contracts/toolSchemaMetadata.js +5 -8
  167. package/dist/doctorRuntime.js +0 -41
  168. package/dist/domain/analysisErrorPresentation.js +4 -28
  169. package/dist/domain/analysisErrorProjection.js +33 -50
  170. package/dist/domain/analysisProfile.js +1 -1
  171. package/dist/domain/analysisSnapshot.js +77 -3
  172. package/dist/domain/androidApplication.js +5 -4
  173. package/dist/domain/appleApplication.js +5 -4
  174. package/dist/domain/appleAssetCatalog.js +127 -0
  175. package/dist/domain/artifactComparison.js +7 -11
  176. package/dist/domain/artifactGraph.js +8 -6
  177. package/dist/domain/artifactInspection.js +13 -12
  178. package/dist/domain/binaryTarget.js +23 -9
  179. package/dist/domain/browserObservation.js +43 -24
  180. package/dist/domain/browserObservationSchemas.js +2 -1
  181. package/dist/domain/browserScenario.js +7 -107
  182. package/dist/domain/browserScenarioCapture.js +0 -1
  183. package/dist/domain/browserScenarioCaptureValues.js +5 -4
  184. package/dist/domain/browserScenarioDiff.js +1 -3
  185. package/dist/domain/browserScenarioValues.js +16 -107
  186. package/dist/domain/bundleComparison.js +18 -17
  187. package/dist/domain/callPathSchemas.js +17 -7
  188. package/dist/domain/changedBehavior.js +2 -3
  189. package/dist/domain/comparisonSemantics.js +19 -0
  190. package/dist/domain/completionLedgerGeneration.js +3 -2
  191. package/dist/domain/conformancePackage.js +2 -1
  192. package/dist/domain/conformanceTrustGate.js +3 -5
  193. package/dist/domain/customProtocolCapture.js +2 -2
  194. package/dist/domain/digests.js +30 -0
  195. package/dist/domain/dosMz.js +83 -0
  196. package/dist/domain/electronActiveObservation.js +7 -5
  197. package/dist/domain/electronObservation.js +3 -2
  198. package/dist/domain/electronStaticAnalysisNative.js +15 -6
  199. package/dist/domain/emptyArraySchema.js +3 -0
  200. package/dist/domain/errors.js +10 -28
  201. package/dist/domain/evidence.js +5 -3
  202. package/dist/domain/evidenceCompletionLedger.js +3 -2
  203. package/dist/domain/functionComparisonNormalization.js +24 -18
  204. package/dist/domain/functionComparisonResults.js +3 -7
  205. package/dist/domain/functionComparisonSchemas.js +3 -2
  206. package/dist/domain/hopperValues.js +108 -8
  207. package/dist/domain/javascriptApplicationAnalysis.js +4 -7
  208. package/dist/domain/javascriptApplicationEvidenceSchemas.js +4 -3
  209. package/dist/domain/javascriptApplicationGraphSchemas.js +8 -7
  210. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +9 -7
  211. package/dist/domain/javascriptApplicationVersionItems.js +12 -18
  212. package/dist/domain/javascriptAstValues.js +4 -0
  213. package/dist/domain/javascriptExportShapeComparison.js +1 -6
  214. package/dist/domain/javascriptExportShapeComparisonSchemas.js +6 -10
  215. package/dist/domain/javascriptExportShapeVariants.js +15 -2
  216. package/dist/domain/javascriptFeatureTraceSchemas.js +8 -7
  217. package/dist/domain/javascriptRuntimeObservation.js +14 -2
  218. package/dist/domain/javascriptRuntimeReconciliationMatching.js +8 -0
  219. package/dist/domain/javascriptRuntimeReconciliationParsing.js +4 -2
  220. package/dist/domain/javascriptRuntimeReconciliationResult.js +6 -4
  221. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +15 -4
  222. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +19 -18
  223. package/dist/domain/javascriptRuntimeStaticCandidates.js +18 -6
  224. package/dist/domain/javascriptSemanticAnalysis.js +57 -19
  225. package/dist/domain/javascriptSemanticAsyncEffects.js +39 -40
  226. package/dist/domain/javascriptSemanticCalls.js +46 -27
  227. package/dist/domain/javascriptSemanticChildProcesses.js +43 -50
  228. package/dist/domain/javascriptSemanticDataEffectHelpers.js +91 -18
  229. package/dist/domain/javascriptSemanticDataEffects.js +22 -10
  230. package/dist/domain/javascriptSemanticGraphSchemas.js +8 -6
  231. package/dist/domain/javascriptSemanticObjects.js +13 -3
  232. package/dist/domain/javascriptSemanticProjection.js +144 -38
  233. package/dist/domain/javascriptSemanticPromises.js +14 -27
  234. package/dist/domain/javascriptSemanticQuerySchemas.js +6 -9
  235. package/dist/domain/javascriptSemanticResources.js +2 -5
  236. package/dist/domain/javascriptSemanticState.js +4 -0
  237. package/dist/domain/javascriptSemanticTraceSchemas.js +2 -1
  238. package/dist/domain/javascriptSemanticTraversal.js +13 -5
  239. package/dist/domain/javascriptSemanticValues.js +10 -9
  240. package/dist/domain/javascriptSourceParser.js +5 -1
  241. package/dist/domain/javascriptStaticAnalysisCalls.js +8 -5
  242. package/dist/domain/javascriptStaticAnalysisHelpers.js +16 -7
  243. package/dist/domain/keyedArchive.js +181 -0
  244. package/dist/domain/managedApplicationGraph.js +4 -3
  245. package/dist/domain/managedArtifact.js +2 -1
  246. package/dist/domain/managedMemberComparison.js +18 -13
  247. package/dist/domain/managedMemberComparisonCoverage.js +2 -1
  248. package/dist/domain/managedMemberComparisonItems.js +27 -7
  249. package/dist/domain/managedMemberComparisonMatch.js +22 -6
  250. package/dist/domain/managedNativeVerificationMatch.js +2 -2
  251. package/dist/domain/managedNativeVerificationSchemas.js +7 -5
  252. package/dist/domain/managedReconstruction.js +6 -5
  253. package/dist/domain/nativeApiBoundary.js +7 -0
  254. package/dist/domain/nativeDataType.js +51 -0
  255. package/dist/domain/nativeInspection.js +0 -1
  256. package/dist/domain/nativeInstruction.js +82 -0
  257. package/dist/domain/nativeInvestigationGraph.js +9 -5
  258. package/dist/domain/nativeUiObservation.js +123 -0
  259. package/dist/domain/nativeValueFlow.js +17 -0
  260. package/dist/domain/nativeValueTrace.js +64 -0
  261. package/dist/domain/objcSwiftMetadata.js +39 -0
  262. package/dist/domain/peInspection.js +1 -0
  263. package/dist/domain/processCapture.js +5 -55
  264. package/dist/domain/processCaptureExample.js +0 -9
  265. package/dist/domain/processCaptureValidation.js +13 -144
  266. package/dist/domain/processComparison.js +3 -25
  267. package/dist/domain/processObservation.js +0 -29
  268. package/dist/domain/processScenario.js +28 -228
  269. package/dist/domain/processTraceDimensionProjection.js +0 -15
  270. package/dist/domain/processTraceEvaluation.js +0 -6
  271. package/dist/domain/protocolCapture.js +8 -36
  272. package/dist/domain/reconstructionCoverage.js +3 -2
  273. package/dist/domain/reconstructionObligationLedgerSchemas.js +4 -12
  274. package/dist/domain/reconstructionReadinessSchemas.js +4 -3
  275. package/dist/domain/reconstructionVerification.js +2 -1
  276. package/dist/domain/reconstructionVerificationSchemas.js +6 -13
  277. package/dist/domain/referenceSourceClassification.js +0 -110
  278. package/dist/domain/referenceSourceGraph.js +15 -5
  279. package/dist/domain/residualUnknown.js +3 -2
  280. package/dist/domain/runtimeIdentification.js +6 -5
  281. package/dist/domain/sourceMapContents.js +5 -0
  282. package/dist/domain/sourceToBundleComparison.js +3 -10
  283. package/dist/domain/sourceToBundleComparisonSchemas.js +7 -6
  284. package/dist/domain/sourceToBundleSignals.js +9 -3
  285. package/dist/domain/staticRuntimeCorrelation.js +5 -11
  286. package/dist/domain/webBundleAnalysis.js +17 -9
  287. package/dist/domain/webBundleAnalyzer.js +1 -1
  288. package/dist/domain/webCaptureDiff.js +5 -11
  289. package/dist/domain/webCaptureDiffSchemas.js +2 -1
  290. package/dist/domain/webMcpDiscovery.js +2 -1
  291. package/dist/dotnet/ManagedMemberInspectorCore.js +15 -7
  292. package/dist/dotnet/ManagedMemberInstructionDecoder.js +57 -40
  293. package/dist/dotnet/ManagedMemberRows.js +2 -0
  294. package/dist/dotnet/ManagedMethodBodyReader.js +15 -8
  295. package/dist/dotnet/ManagedPeReader.js +2 -0
  296. package/dist/generatedMcpToolCatalog.js +1 -1
  297. package/dist/generatedPackageMetadata.js +2 -2
  298. package/dist/ghidra/GhidraAnalysisProfile.js +15 -5
  299. package/dist/ghidra/GhidraClient.js +38 -8
  300. package/dist/ghidra/GhidraFunctionValues.js +56 -20
  301. package/dist/ghidra/GhidraInstallation.js +7 -4
  302. package/dist/ghidra/GhidraInventoryValues.js +44 -9
  303. package/dist/ghidra/GhidraLauncher.js +18 -3
  304. package/dist/ghidra/GhidraProvider.js +23 -2
  305. package/dist/ghidra/GhidraRequestQueue.js +45 -4
  306. package/dist/ghidra/GhidraSessionValues.js +5 -0
  307. package/dist/hopper/HopperAnalysisProfile.js +2 -0
  308. package/dist/hopper/HopperProvider.js +29 -6
  309. package/dist/hopper/HopperTargetLease.js +18 -4
  310. package/dist/logger.js +0 -13
  311. package/dist/main/messages.js +0 -1
  312. package/dist/main/reload.js +3 -32
  313. package/dist/main/shutdown.js +1 -2
  314. package/dist/main/transport.js +0 -17
  315. package/dist/main.js +0 -10
  316. package/dist/native/AppleDispatchMetadata.js +582 -0
  317. package/dist/native/AppleObjcProtocols.js +88 -0
  318. package/dist/native/AppleSwiftVtables.js +86 -0
  319. package/dist/native/CommandRunner.js +1 -1
  320. package/dist/native/NativeHostCapabilities.js +23 -0
  321. package/dist/native/NativeMacOSProvider.js +61 -9
  322. package/dist/native/NativeMachoInspection.js +39 -6
  323. package/dist/native/NativeUiHelperRuntime.js +42 -0
  324. package/dist/native/NativeUiObservation.js +174 -0
  325. package/dist/native/parsers/codesign.js +4 -1
  326. package/dist/native/parsers/dyldInfo.js +51 -25
  327. package/dist/native/parsers/lipo.js +13 -4
  328. package/dist/native/parsers/otool.js +84 -39
  329. package/dist/native/parsers/plist.js +2 -1
  330. package/dist/process/ExecFileOutput.js +5 -1
  331. package/dist/process/ProcessOwnership.js +69 -33
  332. package/dist/process/ProcessOwnershipObservation.js +31 -12
  333. package/dist/process/ProviderProcess.js +4 -2
  334. package/dist/reference/ReferenceSourceReaderEntries.js +48 -31
  335. package/dist/reference/ReferenceSourceReaderErrors.js +24 -0
  336. package/dist/reference/ReferenceSourceReaderFile.js +11 -5
  337. package/dist/reference/ReferenceSourceReaderValidate.js +22 -8
  338. package/dist/server/createServer.js +7 -62
  339. package/dist/server/registerApplicationTools/helpers.js +2 -9
  340. package/dist/server/registerApplicationTools.js +0 -4
  341. package/dist/server/registerArtifactComparisonTool.js +1 -1
  342. package/dist/server/registerBrowserScenarioTool.js +4 -2
  343. package/dist/server/registerBrowserTools.js +7 -7
  344. package/dist/server/registerBundleComparisonTool.js +1 -1
  345. package/dist/server/registerCloseLifecycleTool.js +1 -1
  346. package/dist/server/registerElectronTools.js +10 -4
  347. package/dist/server/registerEnhancedTools.js +20 -12
  348. package/dist/server/registerEvidenceTools.js +4 -28
  349. package/dist/server/registerFunctionComparisonTool.js +1 -1
  350. package/dist/server/registerInvestigationTools.js +6 -6
  351. package/dist/server/registerJavaScriptRuntimeObservationTools.js +2 -2
  352. package/dist/server/registerManagedTools.js +28 -14
  353. package/dist/server/registerManagedWorkflowTools.js +0 -2
  354. package/dist/server/registerProcessComparisonTool.js +1 -3
  355. package/dist/server/registerSessionRecordTools.js +9 -9
  356. package/dist/server/registerSessionStatusTool.js +1 -1
  357. package/dist/server/registerSessionTools.js +28 -57
  358. package/dist/server/sessionAvailabilityPolicy.js +2 -3
  359. package/dist/server/sessionToolPolicies.js +0 -4
  360. package/dist/server/toolResult.js +8 -10
  361. package/package.json +32 -22
  362. package/skills/reverse-engineer-anything/SKILL.md +15 -11
  363. package/skills/reverse-engineer-anything/references/evidence-workflows.md +3 -2
  364. package/skills/reverse-engineer-anything/references/javascript-applications.md +3 -2
  365. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +8 -6
  366. package/skills/reverse-engineer-anything/references/runtime-observation.md +15 -11
  367. package/dist/application/CommandShimReplay.js +0 -152
  368. package/dist/application/ConfiguredRoots.js +0 -19
  369. package/dist/application/InstrumentedJavaScriptReplayHost.js +0 -36
  370. package/dist/application/JavaScriptReplayPermission.js +0 -16
  371. package/dist/application/JavaScriptReplayPlanning.js +0 -207
  372. package/dist/application/JavaScriptReplayService.js +0 -274
  373. package/dist/application/LoopbackReplay.js +0 -389
  374. package/dist/application/LoopbackReplayRecorder.js +0 -129
  375. package/dist/application/ManagedRuntimeCorrelationService.js +0 -104
  376. package/dist/application/NodeRuntimeCharacterizationService.js +0 -191
  377. package/dist/application/PermissionAuthority.js +0 -268
  378. package/dist/application/PermissionConfiguration.js +0 -26
  379. package/dist/application/PermissionFailure.js +0 -5
  380. package/dist/application/ProcessCaptureAuthority.js +0 -24
  381. package/dist/application/ProcessCapturePermission.js +0 -13
  382. package/dist/application/ProcessCheckpoints.js +0 -178
  383. package/dist/application/ProcessReactiveCoordinator.js +0 -223
  384. package/dist/application/ProcessReactiveEffects.js +0 -153
  385. package/dist/application/ProcessReactiveHarness.js +0 -106
  386. package/dist/application/ProcessReactiveObservations.js +0 -105
  387. package/dist/application/ProjectPermissionStore.js +0 -199
  388. package/dist/application/RuntimeExecutableDiagnostics.js +0 -198
  389. package/dist/application/Upgrade.js +0 -134
  390. package/dist/browser/SensitiveTextCapture.js +0 -8
  391. package/dist/cliPolicyCommands.js +0 -185
  392. package/dist/config/browserScenario.js +0 -77
  393. package/dist/config/electronAutomation.js +0 -35
  394. package/dist/config/javascriptReplay.js +0 -41
  395. package/dist/config/managedRuntime.js +0 -25
  396. package/dist/config/passiveObservation.js +0 -87
  397. package/dist/config/permissions.js +0 -23
  398. package/dist/config/processCapture.js +0 -47
  399. package/dist/contracts/replayMachineExample.js +0 -37
  400. package/dist/domain/javascriptExportInstrumentation.js +0 -95
  401. package/dist/domain/javascriptReplay.js +0 -360
  402. package/dist/domain/managedRuntimeCorrelation.js +0 -181
  403. package/dist/domain/nodeRuntimeCharacterization.js +0 -63
  404. package/dist/domain/permissionPolicy.js +0 -176
  405. package/dist/domain/processCaptureReactiveSchema.js +0 -68
  406. package/dist/domain/processCaptureReactiveValidation.js +0 -180
  407. package/dist/domain/processReactiveCheckpointDataflow.js +0 -32
  408. package/dist/domain/processReactiveMatching.js +0 -196
  409. package/dist/domain/processReactiveRuntime.js +0 -116
  410. package/dist/domain/processReactiveScenario.js +0 -296
  411. package/dist/domain/processReactiveScenarioPreflight.js +0 -95
  412. package/dist/domain/processReactiveTransition.js +0 -187
  413. package/dist/domain/replayMachine.js +0 -320
  414. package/dist/domain/replayMachineRun.js +0 -168
  415. package/dist/domain/replayMachineRuntime.js +0 -296
  416. package/dist/domain/replayMachineValues.js +0 -84
  417. package/dist/domain/runtimeCharacterization.js +0 -84
  418. package/dist/replay/JavaScriptReplayWorker.js +0 -382
  419. package/dist/replay/JavaScriptReplayWorkerTypes.js +0 -1
  420. package/dist/replay/LinuxJavaScriptReplayRunner.js +0 -216
  421. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -121
  422. package/dist/replay/LinuxRuntimeClosure.js +0 -44
  423. package/dist/replay/LinuxSeccompPolicy.js +0 -40
  424. package/dist/replay/ReplayOutcome.js +0 -104
  425. package/dist/replay/ReplayProcessLifecycle.js +0 -96
  426. package/dist/replay/ReplaySeccompFile.js +0 -29
  427. package/dist/replay/ReplayWorkerProtocol.js +0 -58
  428. package/dist/replay/SystemJavaScriptReplayHost.js +0 -153
  429. package/dist/server/ProcessCaptureElicitation.js +0 -153
  430. package/dist/server/registerApplicationTools/characterization.js +0 -46
  431. package/dist/server/registerApplicationTools/controlledReplay.js +0 -31
  432. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +0 -29
  433. package/dist/server/registerReplayMachineTool.js +0 -14
  434. package/skills/reverse-engineer-anything/references/controlled-replay.md +0 -12
@@ -2,10 +2,7 @@ import { z } from "incur";
2
2
  import { compareManagedMemberPaths } from "../application/ManagedMemberComparisonService.js";
3
3
  import { verifyManagedNativeBoundariesEvidence } from "../application/ManagedNativeVerificationService.js";
4
4
  import { importManagedReconstructionEvidence } from "../application/ManagedReconstructionService.js";
5
- import { planManagedRuntimeCorrelationEvidence } from "../application/ManagedRuntimeCorrelationService.js";
6
5
  import { runProviderAnalysis } from "../application/DirectAnalysis.js";
7
- import { parseConfig } from "../config.js";
8
- import { loadConfiguredPermissionAuthority } from "../application/PermissionConfiguration.js";
9
6
  import { parseCliJsonInput } from "../cliJsonInput.js";
10
7
  import { projectAnalysisError } from "../domain/errors.js";
11
8
  import { CLI_COMMANDS } from "../cliCommandNames.js";
@@ -18,7 +15,6 @@ export const registerManagedCommands = (cli, logger) => {
18
15
  registerCompareManagedMembers(cli, logger);
19
16
  registerImportManagedReconstruction(cli, logger);
20
17
  registerVerifyManagedNativeBoundaries(cli, logger);
21
- registerPlanManagedRuntimeCorrelation(cli, logger);
22
18
  registerProjectManagedApplicationGraph(cli, logger);
23
19
  };
24
20
  const registerInspectManagedArtifact = (cli, logger) => {
@@ -54,7 +50,7 @@ const compareManagedMemberArgs = z.object({
54
50
  });
55
51
  const registerCompareManagedMembers = (cli, logger) => {
56
52
  cli.command(CLI_COMMANDS.compareManagedMembers, {
57
- description: "Compare two managed PE/CLI member inventories without name-based matching",
53
+ description: "Compare managed PE/CLI member inventories by exact declared type, name, and signature; names alone never form a match",
58
54
  args: compareManagedMemberArgs,
59
55
  run: ({ args }) => logCliCommand(logger, "compare-managed-members", async () => {
60
56
  const result = await compareManagedMemberPaths({
@@ -104,29 +100,3 @@ const registerVerifyManagedNativeBoundaries = (cli, logger) => {
104
100
  }),
105
101
  });
106
102
  };
107
- const registerPlanManagedRuntimeCorrelation = (cli, logger) => {
108
- cli.command(CLI_COMMANDS.planManagedRuntimeCorrelation, {
109
- description: "Plan a separately authorized managed runtime-correlation experiment without executing target code",
110
- args: z.object({
111
- inputJson: z
112
- .string()
113
- .describe("Inline managed runtime-correlation JSON or JSON file path"),
114
- }),
115
- run: ({ args }) => logCliCommand(logger, "plan-managed-runtime-correlation", async () => {
116
- const input = await parseCliJsonInput(args.inputJson, "plan-managed-runtime-correlation");
117
- if (!input.ok)
118
- return input.error;
119
- const config = parseConfig(process.env);
120
- if (!config.ok)
121
- return projectAnalysisError(config.error);
122
- const authority = await loadConfiguredPermissionAuthority(config.value);
123
- if (!authority.ok)
124
- return projectAnalysisError(authority.error);
125
- const result = await planManagedRuntimeCorrelationEvidence({
126
- policy: () => config.value.managedRuntimePolicy,
127
- authority: authority.value,
128
- }, input.value);
129
- return result.ok ? result.value : projectAnalysisError(result.error);
130
- }),
131
- });
132
- };
@@ -1,8 +1,9 @@
1
1
  import { z } from "incur";
2
2
  import { DOCTOR_PROVIDER_IDS, runDoctor, } from "../application/Doctor.js";
3
- import { runSetup, systemSetupHost, } from "../application/Setup.js";
4
- import { runUninstall } from "../application/Uninstall.js";
5
- import { runUpgrade, systemUpgradeHost } from "../application/Upgrade.js";
3
+ import { runSetup, isSetupFailure, systemSetupHost, } from "../application/Setup.js";
4
+ import { isUninstallFailure, runUninstall } from "../application/Uninstall.js";
5
+ import { isUpdateFailure, runUpdate } from "../application/Update.js";
6
+ import { systemUpdateHost } from "../application/UpdateRuntime.js";
6
7
  import { confirmInteractiveSetup, renderInteractiveSetupResult, renderSetupProgress, } from "../cliSetup.js";
7
8
  import { PRODUCT_IDENTITY } from "../identity.js";
8
9
  import { logCliCommand } from "../cliLogging.js";
@@ -13,7 +14,7 @@ const supportedClientIds = SUPPORTED_CLIENT_DEFINITIONS.map(({ name }) => name);
13
14
  const supportedClientSchema = z
14
15
  .string()
15
16
  .refine((candidate) => supportedClientIds.some((name) => name === candidate), "Unsupported agent integration");
16
- /** Register setup, doctor, uninstall, and upgrade CLI commands. */
17
+ /** Register setup, doctor, uninstall, and update CLI commands. */
17
18
  export const registerSetupCommands = (cli, logger) => {
18
19
  registerSetupCommand(cli, logger);
19
20
  registerDoctorCommand(cli, logger);
@@ -21,7 +22,7 @@ export const registerSetupCommands = (cli, logger) => {
21
22
  };
22
23
  const registerSetupCommand = (cli, logger) => {
23
24
  cli.command(CLI_COMMANDS.setup, {
24
- description: "Install requirements and configure agents",
25
+ description: "Configure agent integrations and optional analysis providers",
25
26
  outputPolicy: "agent-only",
26
27
  options: z.object({
27
28
  yes: z
@@ -54,7 +55,7 @@ const registerSetupCommand = (cli, logger) => {
54
55
  .describe("Use sequential accessible setup prompts"),
55
56
  }),
56
57
  alias: { yes: "y" },
57
- run: ({ options, formatExplicit }) => logCliCommand(logger, "setup", () => runSetupCommand({ options, formatExplicit })),
58
+ run: ({ options, formatExplicit }) => logCliCommand(logger, CLI_COMMANDS.setup, () => runSetupCommand({ options, formatExplicit }), isSetupFailure),
58
59
  });
59
60
  };
60
61
  const registerDoctorCommand = (cli, logger) => {
@@ -88,21 +89,19 @@ const registerMaintenanceCommands = (cli, logger) => {
88
89
  .describe("Also remove REA caches and state"),
89
90
  }),
90
91
  alias: { purgeData: "purge-data" },
91
- run: ({ options }) => logCliCommand(logger, "uninstall", () => runUninstall(options.purgeData)),
92
+ run: ({ options }) => logCliCommand(logger, "uninstall", () => runUninstall(options.purgeData), isUninstallFailure),
92
93
  });
93
- cli.command(CLI_COMMANDS.upgrade, {
94
- description: "Upgrade a global npm installation to the latest REA release",
95
- run: ({ formatExplicit }) => logCliCommand(logger, "upgrade", () => runUpgrade(PRODUCT_IDENTITY.packageVersion, systemUpgradeHost(), formatExplicit ? "structured" : "human")),
94
+ cli.command(CLI_COMMANDS.update, {
95
+ description: "Update this REA installation and verify the installed release",
96
+ run: ({ formatExplicit }) => logCliCommand(logger, CLI_COMMANDS.update, () => runUpdate(PRODUCT_IDENTITY.packageVersion, systemUpdateHost(), formatExplicit ? "structured" : "human"), isUpdateFailure),
96
97
  });
97
98
  };
98
99
  const runSetupCommand = async (input) => {
99
100
  const { options } = input;
100
101
  const interactive = setupIsInteractive(options, input.formatExplicit);
101
102
  const hasExplicitScope = setupHasExplicitScope(options);
102
- if (options.yes && !hasExplicitScope)
103
- process.stderr.write("! Implicit `rea setup --yes` scope is deprecated; use `--all-detected` to retain it.\n");
104
103
  const result = await runSetup(setupRunOptions(input, interactive, hasExplicitScope), systemSetupHost(createSystemDoctorHost()), interactive
105
- ? (actions) => confirmInteractiveSetup(actions, options.accessible)
104
+ ? (actions, context) => confirmInteractiveSetup(actions, options.accessible, context)
106
105
  : undefined);
107
106
  if (interactive)
108
107
  renderInteractiveSetupResult(result);
@@ -116,7 +115,9 @@ const setupRunOptions = (input, interactive, hasExplicitScope) => {
116
115
  approved: options.yes && !options.dryRun,
117
116
  installHopper: options.installHopper,
118
117
  structured: input.formatExplicit || options.dryRun,
119
- proposeHopper: !hasExplicitScope || options.installHopper,
118
+ dryRun: options.dryRun,
119
+ allDetectedClients: options.allDetected,
120
+ proposeHopper: interactive || options.installHopper,
120
121
  ...(hasSelectedClients ? { clientIds: options.client } : {}),
121
122
  ...(hasExplicitScope
122
123
  ? { installSkill: options.skill ?? agentIntegrationSelected }
@@ -137,6 +138,7 @@ const setupIsInteractive = (options, formatExplicit) => !options.yes &&
137
138
  !options.dryRun &&
138
139
  !formatExplicit &&
139
140
  process.stdin.isTTY === true &&
141
+ process.stdout.isTTY === true &&
140
142
  process.stderr.isTTY === true;
141
143
  const setupHasExplicitScope = (options) => options.allDetected ||
142
144
  options.client.length > 0 ||
@@ -1,4 +1,5 @@
1
1
  import { z } from "incur";
2
+ import { jsonValueSchema } from "../domain/jsonValue.js";
2
3
  import { runCapabilityStatus, runProviderAnalysis, runProviderStatus, } from "../application/DirectAnalysis.js";
3
4
  import { importReferenceSource } from "../application/ReferenceSourceImport.js";
4
5
  import { projectReferenceSourceImportError } from "../application/ReferenceSourceImportTypes.js";
@@ -7,10 +8,66 @@ import { projectAnalysisError } from "../domain/errors.js";
7
8
  import { PRODUCT_IDENTITY } from "../identity.js";
8
9
  import { logCliCommand } from "../cliLogging.js";
9
10
  import { CLI_COMMANDS } from "../cliCommandNames.js";
10
- export const registerUtilityCommands = (cli, logger) => {
11
+ export const registerUtilityCommands = (cli, logger, environment = process.env) => {
11
12
  registerCapabilityCommands(cli, logger);
12
13
  registerNativeCommands(cli, logger);
13
- registerReferenceSourceCommand(cli, logger);
14
+ for (const [command, operation] of [
15
+ [CLI_COMMANDS.observeNativeUi, "observe_native_ui"],
16
+ [CLI_COMMANDS.captureNativeUiScenario, "capture_native_ui_scenario"],
17
+ ]) {
18
+ cli.command(command, {
19
+ description: "Observe or run a scenario in one exact native application window",
20
+ args: z.object({
21
+ path: z.string().describe("Local native executable or app path"),
22
+ }),
23
+ options: z.object({
24
+ pid: z.number().int().positive().describe("Existing application PID"),
25
+ windowId: z
26
+ .number()
27
+ .int()
28
+ .positive()
29
+ .describe("Exact selected application window ID"),
30
+ steps: z
31
+ .string()
32
+ .optional()
33
+ .describe("JSON array of declarative AX actions or waits"),
34
+ screenshot: z
35
+ .boolean()
36
+ .default(true)
37
+ .describe("Capture only the selected window"),
38
+ accessibility: z
39
+ .boolean()
40
+ .default(true)
41
+ .describe("Read the selected window accessibility tree"),
42
+ maxNodes: z
43
+ .number()
44
+ .int()
45
+ .positive()
46
+ .safe()
47
+ .default(500)
48
+ .describe("Maximum accessibility nodes per capture"),
49
+ }),
50
+ alias: {
51
+ windowId: "window-id",
52
+ maxNodes: "max-nodes",
53
+ },
54
+ run: ({ args, options }) => logCliCommand(logger, command, () => runProviderAnalysis(args.path, operation, {
55
+ pid: options.pid,
56
+ window_id: options.windowId,
57
+ screenshot: options.screenshot,
58
+ accessibility: options.accessibility,
59
+ max_nodes: options.maxNodes,
60
+ ...(operation === "capture_native_ui_scenario"
61
+ ? {
62
+ steps: options.steps === undefined
63
+ ? []
64
+ : jsonValueSchema.parse(JSON.parse(options.steps)),
65
+ }
66
+ : {}),
67
+ }, logger)),
68
+ });
69
+ }
70
+ registerReferenceSourceCommand(cli, logger, environment);
14
71
  };
15
72
  const registerCapabilityCommands = (cli, logger) => {
16
73
  for (const command of [
@@ -63,7 +120,7 @@ const registerNativeCommands = (cli, logger) => {
63
120
  run: ({ args }) => logCliCommand(logger, "demangle-swift", () => runProviderAnalysis(args.path, "demangle_swift", { symbols: args.symbols }, logger)),
64
121
  });
65
122
  };
66
- const registerReferenceSourceCommand = (cli, logger) => {
123
+ const registerReferenceSourceCommand = (cli, logger, environment = process.env) => {
67
124
  cli.command(CLI_COMMANDS.importReferenceSource, {
68
125
  description: "Import a source tree as historical reference only",
69
126
  args: z.object({
@@ -72,7 +129,7 @@ const registerReferenceSourceCommand = (cli, logger) => {
72
129
  .describe("Local source directory to import as historical reference"),
73
130
  }),
74
131
  run: ({ args }) => logCliCommand(logger, "import-reference-source", async () => {
75
- const config = parseConfig(process.env);
132
+ const config = parseConfig(environment);
76
133
  if (!config.ok)
77
134
  return {
78
135
  error: "Import failed",
package/dist/cli.js CHANGED
@@ -9,7 +9,6 @@ import { registerArtifactCommands } from "./cli/artifactCommands.js";
9
9
  import { registerManagedCommands } from "./cli/managedCommands.js";
10
10
  import { registerEvidenceCommands } from "./cliEvidenceCommands.js";
11
11
  import { registerProcessCommands } from "./cliProcessCommands.js";
12
- import { registerPolicyCommands } from "./cliPolicyCommands.js";
13
12
  import { registerBrowserCommands } from "./cliBrowserCommands.js";
14
13
  import { registerAdvancedBrowserCommands } from "./cliBrowserAdvancedCommands.js";
15
14
  import { registerBrowserScenarioCommands } from "./cliBrowserScenarioCommands.js";
@@ -21,10 +20,10 @@ import { registerApplicationCommands } from "./cliApplicationCommands.js";
21
20
  * Analysis commands acquire and close their own sessions; bare `mcp` and
22
21
  * `--mcp` are intercepted by the executable dispatcher before this module loads.
23
22
  */
24
- export const createCli = () => {
25
- const logger = createLogger("cli", process.env.REA_LOG_LEVEL === undefined
23
+ export const createCli = (environment = process.env) => {
24
+ const logger = createLogger("cli", environment.REA_LOG_LEVEL === undefined
26
25
  ? "silent"
27
- : parseLogLevel(process.env.REA_LOG_LEVEL));
26
+ : parseLogLevel(environment.REA_LOG_LEVEL));
28
27
  const cli = Cli.create(PRODUCT_IDENTITY.cliBinary, {
29
28
  version: PRODUCT_IDENTITY.packageVersion,
30
29
  description: "Reverse engineer anything from your terminal or agent.",
@@ -44,12 +43,11 @@ export const createCli = () => {
44
43
  });
45
44
  registerSetupCommands(cli, logger);
46
45
  registerCoreAnalysisCommands(cli, logger);
47
- registerUtilityCommands(cli, logger);
46
+ registerUtilityCommands(cli, logger, environment);
48
47
  registerArtifactCommands(cli, logger);
49
48
  registerManagedCommands(cli, logger);
50
49
  registerEvidenceCommands(cli, logger);
51
- registerProcessCommands(cli, logger);
52
- registerPolicyCommands(cli, logger);
50
+ registerProcessCommands(cli, logger, environment);
53
51
  registerBrowserCommands(cli, logger);
54
52
  registerAdvancedBrowserCommands(cli, logger);
55
53
  registerBrowserScenarioCommands(cli, logger);
@@ -1,19 +1,13 @@
1
1
  import { Cli, z } from "incur";
2
2
  import { compareApplicationVersionsEvidenceValidated, compareJavaScriptExportShapesEvidenceValidated, compareSourceToBundleEvidenceValidated, traceApplicationFeatureEvidenceValidated, } from "./application/JavaScriptApplicationWorkflowService.js";
3
3
  import { traceJavaScriptSemanticsEvidenceValidated } from "./application/JavaScriptSemanticTraceService.js";
4
- import { runControlledReplay } from "./application/JavaScriptReplayService.js";
5
- import { executeNodeCharacterization, prepareNodeCharacterization, } from "./application/NodeRuntimeCharacterizationService.js";
6
4
  import { evaluateReconstructionCoverage, reconstructionCoverageEvaluationInputSchema, } from "./application/ReconstructionCoverageService.js";
7
5
  import { buildReconstructionObligationLedgerEvidenceValidated } from "./application/ReconstructionObligationLedgerService.js";
8
- import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
9
6
  import { CLI_COMMANDS } from "./cliCommandNames.js";
10
7
  import { parseCliJsonInput } from "./cliJsonInput.js";
11
8
  import { logCliCommand } from "./cliLogging.js";
12
9
  import { AnalysisInputError, projectAnalysisError, } from "./domain/errors.js";
13
10
  import { jsonValueSchema } from "./domain/jsonValue.js";
14
- import { parseConfig } from "./config.js";
15
- import { LinuxJavaScriptReplayRunner } from "./replay/LinuxJavaScriptReplayRunner.js";
16
- import { SystemJavaScriptReplayHost } from "./replay/SystemJavaScriptReplayHost.js";
17
11
  import { traceApplicationFeatureInputSchema } from "./domain/javascriptFeatureTraceSchemas.js";
18
12
  import { traceJavaScriptSemanticsInputSchema } from "./domain/javascriptSemanticTraceSchemas.js";
19
13
  import { compareApplicationVersionsInputSchema } from "./domain/javascriptApplicationVersionComparisonSchemas.js";
@@ -63,44 +57,6 @@ export const registerApplicationCommands = (cli, logger) => {
63
57
  inputSchema: compareJavaScriptExportShapesInputSchema,
64
58
  workflow: compareJavaScriptExportShapesEvidenceValidated,
65
59
  });
66
- cli.command(CLI_COMMANDS.runControlledReplay, {
67
- description: "Plan or execute an approved extracted-module replay in the Linux sandbox",
68
- args: z.object({
69
- inputJson: z.string().describe("Inline replay JSON or JSON file path"),
70
- }),
71
- run: ({ args }) => logCliCommand(logger, CLI_COMMANDS.runControlledReplay, async () => {
72
- const input = await parseCliJsonInput(args.inputJson, CLI_COMMANDS.runControlledReplay);
73
- if (!input.ok)
74
- return input.error;
75
- const config = parseConfig(process.env);
76
- if (!config.ok)
77
- return projectAnalysisError(config.error);
78
- const authority = await loadConfiguredPermissionAuthority(config.value);
79
- if (!authority.ok)
80
- return projectAnalysisError(authority.error);
81
- const result = await runControlledReplay({
82
- policy: () => config.value.javascriptReplayPolicy,
83
- host: new SystemJavaScriptReplayHost(),
84
- runner: new LinuxJavaScriptReplayRunner(),
85
- authority: authority.value,
86
- }, input.value);
87
- return result.ok ? result.value : projectAnalysisError(result.error);
88
- }),
89
- });
90
- registerAuthorizedJsonCommand({
91
- cli,
92
- logger,
93
- name: CLI_COMMANDS.prepareNodeCharacterization,
94
- description: "Prepare one exact Node/JavaScript characterization without execution",
95
- workflow: (config, authority, input) => prepareNodeCharacterization(replayDependencies(config, authority), input),
96
- });
97
- registerAuthorizedJsonCommand({
98
- cli,
99
- logger,
100
- name: CLI_COMMANDS.executeNodeCharacterization,
101
- description: "Execute one separately approved exact Node/JavaScript characterization",
102
- workflow: (config, authority, input) => executeNodeCharacterization(replayDependencies(config, authority), input),
103
- });
104
60
  registerObligationLedgerCommand(cli, logger);
105
61
  registerCoverageCommand(cli, logger);
106
62
  };
@@ -117,24 +73,6 @@ const registerObligationLedgerCommand = (cli, logger) => registerJsonCommand({
117
73
  : result;
118
74
  },
119
75
  });
120
- const registerAuthorizedJsonCommand = ({ cli, logger, name, description, workflow, }) => {
121
- cli.command(name, {
122
- description,
123
- args: z.object({
124
- inputJson: z.string().describe("Inline workflow JSON or JSON file path"),
125
- }),
126
- run: ({ args }) => logCliCommand(logger, name, async () => {
127
- const input = await parseCliJsonInput(args.inputJson, name);
128
- if (!input.ok)
129
- return input.error;
130
- const configured = await configuredAuthority();
131
- if (!configured.ok)
132
- return configured.error;
133
- const result = await workflow(configured.config, configured.authority, input.value);
134
- return result.ok ? result.value : projectAnalysisError(result.error);
135
- }),
136
- });
137
- };
138
76
  const registerCoverageCommand = (cli, logger) => registerJsonCommand({
139
77
  cli,
140
78
  logger,
@@ -148,18 +86,6 @@ const registerCoverageCommand = (cli, logger) => registerJsonCommand({
148
86
  : result;
149
87
  },
150
88
  });
151
- const configuredAuthority = async () => {
152
- const configured = await loadConfiguredAuthority();
153
- return configured.ok
154
- ? configured
155
- : { ok: false, error: projectAnalysisError(configured.error) };
156
- };
157
- const replayDependencies = (config, authority) => ({
158
- policy: () => config.javascriptReplayPolicy,
159
- host: new SystemJavaScriptReplayHost(),
160
- runner: new LinuxJavaScriptReplayRunner(),
161
- authority,
162
- });
163
89
  const registerJsonCommand = ({ cli, logger, name, description, inputSchema, workflow, }) => {
164
90
  cli.command(name, {
165
91
  description,
@@ -186,12 +112,3 @@ const registerJsonCommand = ({ cli, logger, name, description, inputSchema, work
186
112
  }),
187
113
  });
188
114
  };
189
- const loadConfiguredAuthority = async () => {
190
- const config = parseConfig(process.env);
191
- if (!config.ok)
192
- return config;
193
- const authority = await loadConfiguredPermissionAuthority(config.value);
194
- return authority.ok
195
- ? { ok: true, config: config.value, authority: authority.value }
196
- : authority;
197
- };
@@ -33,18 +33,16 @@ const registerWebMcp = (cli, logger) => {
33
33
  .describe("Observation duration in milliseconds"),
34
34
  }),
35
35
  run: ({ args, options }) => logCliCommand(logger, "discover-webmcp-tools", async () => {
36
- const context = await browserContext("discover_webmcp_tools");
37
- if (!context.ok)
38
- return context.error;
36
+ const context = browserContext();
39
37
  const parsed = discoverWebMcpToolsInputSchema.safeParse({
40
38
  cdp_endpoint: args.endpoint,
41
- allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
39
+ allowed_origins: options.allowedOrigins,
42
40
  target_id: args.targetId,
43
41
  observation_ms: options.observationMs,
44
42
  });
45
43
  if (!parsed.success)
46
44
  return inputError("discover_webmcp_tools");
47
- const result = await discoverWebMcpTools(context.provider, context.authority, parsed.data);
45
+ const result = await discoverWebMcpTools(context.provider, parsed.data);
48
46
  return result.ok ? result.value : browserCliError(result.error);
49
47
  }),
50
48
  });
@@ -85,7 +83,7 @@ const registerCaptureDiff = (cli, logger) => {
85
83
  };
86
84
  const registerScreenshot = (cli, logger) => {
87
85
  cli.command(CLI_COMMANDS.captureWebScreenshot, {
88
- description: "Capture an explicitly approved visible page viewport",
86
+ description: "Capture one visible page viewport within the supplied origin scope",
89
87
  args: z.object({
90
88
  endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
91
89
  targetId: z.string().describe("Target ID from list-browser-targets"),
@@ -94,17 +92,15 @@ const registerScreenshot = (cli, logger) => {
94
92
  ...browserScopeOptions,
95
93
  }),
96
94
  run: ({ args, options }) => logCliCommand(logger, "capture-web-screenshot", async () => {
97
- const context = await browserContext("capture_web_screenshot");
98
- if (!context.ok)
99
- return context.error;
95
+ const context = browserContext();
100
96
  const parsed = captureWebScreenshotInputSchema.safeParse({
101
97
  cdp_endpoint: args.endpoint,
102
- allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
98
+ allowed_origins: options.allowedOrigins,
103
99
  target_id: args.targetId,
104
100
  });
105
101
  if (!parsed.success)
106
102
  return inputError("capture_web_screenshot");
107
- const result = await captureWebScreenshot(context.provider, context.authority, parsed.data);
103
+ const result = await captureWebScreenshot(context.provider, parsed.data);
108
104
  return result.ok ? result.value : browserCliError(result.error);
109
105
  }),
110
106
  });
@@ -17,41 +17,37 @@ export const registerBrowserCommands = (cli, logger) => {
17
17
  };
18
18
  const registerTargetList = (cli, logger) => {
19
19
  cli.command(CLI_COMMANDS.listBrowserTargets, {
20
- description: "List approved pages from a user-owned loopback CDP browser",
20
+ description: "List page targets from a selected loopback CDP browser, optionally filtered by origin",
21
21
  args: z.object({
22
22
  endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
23
23
  }),
24
24
  options: z.object({ ...browserScopeOptions }),
25
25
  run: ({ args, options }) => logCliCommand(logger, "list-browser-targets", async () => {
26
- const context = await browserContext("list_browser_targets");
27
- if (!context.ok)
28
- return context.error;
26
+ const context = browserContext();
29
27
  const parsed = listBrowserTargetsInputSchema.safeParse({
30
28
  cdp_endpoint: args.endpoint,
31
- allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
29
+ allowed_origins: options.allowedOrigins,
32
30
  });
33
31
  if (!parsed.success)
34
32
  return browserCliError(new AnalysisInputError("list_browser_targets"));
35
- const result = await listBrowserTargets(context.provider, context.authority, parsed.data);
33
+ const result = await listBrowserTargets(context.provider, parsed.data);
36
34
  return result.ok ? result.value : browserCliError(result.error);
37
35
  }),
38
36
  });
39
37
  };
40
38
  const registerPageInspection = (cli, logger) => {
41
39
  cli.command(CLI_COMMANDS.inspectWebPage, {
42
- description: "Passively inspect one approved page through CDP",
40
+ description: "Passively inspect one page through CDP, defaulting to its current origin",
43
41
  args: z.object({
44
42
  endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
45
43
  targetId: z.string().describe("Target ID from list-browser-targets"),
46
44
  }),
47
45
  options: browserPageInspectionOptions,
48
46
  run: ({ args, options }) => logCliCommand(logger, "inspect-web-page", async () => {
49
- const context = await browserContext("inspect_web_page");
50
- if (!context.ok)
51
- return context.error;
47
+ const context = browserContext();
52
48
  const parsed = inspectWebPageInputSchema.safeParse({
53
49
  cdp_endpoint: args.endpoint,
54
- allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
50
+ allowed_origins: options.allowedOrigins,
55
51
  target_id: args.targetId,
56
52
  observation_ms: options.observationMs,
57
53
  include_accessibility_text: options.includeAccessibilityText,
@@ -64,14 +60,14 @@ const registerPageInspection = (cli, logger) => {
64
60
  });
65
61
  if (!parsed.success)
66
62
  return browserCliError(new AnalysisInputError("inspect_web_page"));
67
- const result = await inspectWebPage(context.provider, context.authority, parsed.data);
63
+ const result = await inspectWebPage(context.provider, parsed.data);
68
64
  return result.ok ? result.value : browserCliError(result.error);
69
65
  }),
70
66
  });
71
67
  };
72
68
  const registerBundleAnalysis = (cli, logger) => {
73
69
  cli.command(CLI_COMMANDS.analyzeWebBundle, {
74
- description: "Capture and statically analyze an approved page bundle",
70
+ description: "Capture and statically analyze a page bundle, defaulting to the selected target origin",
75
71
  args: z.object({
76
72
  endpoint: z.string().describe("Configured loopback CDP HTTP endpoint"),
77
73
  targetId: z.string().describe("Target ID from list-browser-targets"),
@@ -85,12 +81,10 @@ const registerBundleAnalysis = (cli, logger) => {
85
81
  .describe("Fetch source maps referenced by captured scripts"),
86
82
  }),
87
83
  run: ({ args, options }) => logCliCommand(logger, "analyze-web-bundle", async () => {
88
- const context = await browserContext("analyze_web_bundle");
89
- if (!context.ok)
90
- return context.error;
84
+ const context = browserContext();
91
85
  const parsed = analyzeWebBundleInputSchema.safeParse({
92
86
  cdp_endpoint: args.endpoint,
93
- allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
87
+ allowed_origins: options.allowedOrigins,
94
88
  target_id: args.targetId,
95
89
  observation_ms: options.observationMs,
96
90
  include_script_sources: true,
@@ -98,7 +92,7 @@ const registerBundleAnalysis = (cli, logger) => {
98
92
  });
99
93
  if (!parsed.success)
100
94
  return browserCliError(new AnalysisInputError("analyze_web_bundle"));
101
- const result = await analyzeWebBundle(context.provider, context.authority, parsed.data);
95
+ const result = await analyzeWebBundle(context.provider, parsed.data);
102
96
  return result.ok ? result.value : browserCliError(result.error);
103
97
  }),
104
98
  });
@@ -115,18 +109,16 @@ const registerObservationSession = (cli, logger) => {
115
109
  observationMs: observationDuration(10_000, 1),
116
110
  }),
117
111
  run: ({ args, options }) => logCliCommand(logger, "observe-web-session", async () => {
118
- const context = await browserContext("observe_web_session");
119
- if (!context.ok)
120
- return context.error;
112
+ const context = browserContext();
121
113
  const parsed = observeWebSessionInputSchema.safeParse({
122
114
  cdp_endpoint: args.endpoint,
123
- allowed_origins: options.allowedOrigins ?? context.allowedBrowserOrigins,
115
+ allowed_origins: options.allowedOrigins,
124
116
  target_id: args.targetId,
125
117
  observation_ms: options.observationMs,
126
118
  });
127
119
  if (!parsed.success)
128
120
  return browserCliError(new AnalysisInputError("observe_web_session"));
129
- const result = await observeWebSession(context.provider, context.authority, parsed.data);
121
+ const result = await observeWebSession(context.provider, parsed.data);
130
122
  return result.ok ? result.value : browserCliError(result.error);
131
123
  }),
132
124
  });
@@ -1,28 +1,7 @@
1
- import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
2
1
  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
- };
2
+ import { projectAnalysisError } from "./domain/errors.js";
3
+ /** Build the passive browser provider; scope is supplied on each request. */
4
+ export const browserContext = () => ({ provider: new CdpBrowserProvider() });
26
5
  /** Project a browser operation failure consistently across CLI command groups. */
27
6
  export const browserCliError = (error) => ({
28
7
  error: "Browser observation failed",
@@ -1,19 +1,17 @@
1
1
  import { Cli } from "incur";
2
2
  import { z } from "zod";
3
3
  import { captureBrowserScenario } from "./application/BrowserScenarioCaptureService.js";
4
- import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
5
4
  import { PlaywrightBrowserScenarioProvider } from "./browser/PlaywrightBrowserScenarioProvider.js";
6
5
  import { CLI_COMMANDS } from "./cliCommandNames.js";
7
6
  import { parseCliJsonInput } from "./cliJsonInput.js";
8
7
  import { logCliCommand } from "./cliLogging.js";
9
- import { parseConfig } from "./config.js";
10
8
  import { AnalysisInputError, projectAnalysisError } from "./domain/errors.js";
11
9
  import { browserScenarioSchema } from "./domain/browserScenario.js";
12
10
  const OPERATION = "capture_browser_scenario";
13
11
  /** Register the one-shot controlled browser scenario command. */
14
12
  export const registerBrowserScenarioCommands = (cli, logger) => {
15
13
  cli.command(CLI_COMMANDS.captureBrowserScenario, {
16
- description: "Run one approved, bounded Playwright browser scenario and return Evidence",
14
+ description: "Run one bounded Playwright browser scenario and return Evidence",
17
15
  args: z.object({
18
16
  inputJson: z
19
17
  .string()
@@ -26,13 +24,7 @@ export const registerBrowserScenarioCommands = (cli, logger) => {
26
24
  const scenario = browserScenarioSchema.safeParse(input.value);
27
25
  if (!scenario.success)
28
26
  return cliError(new AnalysisInputError(OPERATION));
29
- const config = parseConfig(process.env);
30
- if (!config.ok)
31
- return cliError(config.error);
32
- const authority = await loadConfiguredPermissionAuthority(config.value);
33
- if (!authority.ok)
34
- return cliError(authority.error);
35
- const result = await captureBrowserScenario(new PlaywrightBrowserScenarioProvider(), authority.value, scenario.data);
27
+ const result = await captureBrowserScenario(new PlaywrightBrowserScenarioProvider(), scenario.data);
36
28
  return result.ok ? result.value : cliError(result.error);
37
29
  }),
38
30
  });