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
@@ -6,7 +6,7 @@ export const CLI_COMMANDS = Object.freeze({
6
6
  setup: "setup",
7
7
  doctor: "doctor",
8
8
  uninstall: "uninstall",
9
- upgrade: "upgrade",
9
+ update: "update",
10
10
  xrefs: "xrefs",
11
11
  trace: "trace",
12
12
  traceNativeUiAction: "trace-native-ui-action",
@@ -21,14 +21,21 @@ export const CLI_COMMANDS = Object.freeze({
21
21
  inspectArtifact: "inspect-artifact",
22
22
  extractArtifact: "extract-artifact",
23
23
  decodeInterfaceBuilder: "decode-interface-builder",
24
+ inspectKeyedArchive: "inspect-keyed-archive",
25
+ inspectNativeDataType: "inspect-native-data-type",
26
+ traceNativeValues: "trace-native-values",
27
+ inspectNativeInstruction: "inspect-native-instruction",
28
+ resolveNativeCallTargets: "resolve-native-call-targets",
29
+ inspectAssetCatalog: "inspect-asset-catalog",
24
30
  inspectManagedArtifact: "inspect-managed-artifact",
25
31
  inspectManagedMembers: "inspect-managed-members",
26
32
  inspectManagedNativeBoundaries: "inspect-managed-native-boundaries",
27
33
  compareManagedMembers: "compare-managed-members",
28
34
  verifyManagedNativeBoundaries: "verify-managed-native-boundaries",
29
35
  importManagedReconstruction: "import-managed-reconstruction",
30
- planManagedRuntimeCorrelation: "plan-managed-runtime-correlation",
31
36
  projectManagedApplicationGraph: "project-managed-application-graph",
37
+ observeNativeUi: "observe-native-ui",
38
+ captureNativeUiScenario: "capture-native-ui-scenario",
32
39
  inspectMacho: "inspect-macho",
33
40
  inspectSignature: "inspect-signature",
34
41
  listArchitectures: "list-architectures",
@@ -39,7 +46,6 @@ export const CLI_COMMANDS = Object.freeze({
39
46
  compare: "compare",
40
47
  captureProcess: "capture-process",
41
48
  compareProcessCaptures: "compare-process-captures",
42
- policy: "policy",
43
49
  listBrowserTargets: "list-browser-targets",
44
50
  inspectWebPage: "inspect-web-page",
45
51
  analyzeWebBundle: "analyze-web-bundle",
@@ -61,12 +67,81 @@ export const CLI_COMMANDS = Object.freeze({
61
67
  compareApplicationVersions: "compare-application-versions",
62
68
  compareSourceToBundle: "compare-source-to-bundle",
63
69
  compareJavaScriptExportShapes: "compare-javascript-export-shapes",
64
- runReplayMachine: "run-replay-machine",
65
- runControlledReplay: "run-controlled-replay",
66
- prepareNodeCharacterization: "prepare-node-characterization",
67
- executeNodeCharacterization: "execute-node-characterization",
68
70
  buildReconstructionObligationLedger: "build-reconstruction-obligation-ledger",
69
71
  evaluateReconstructionCoverage: "evaluate-reconstruction-coverage",
70
72
  });
71
73
  /** Ordered primary CLI inventory; aliases are intentionally excluded. */
72
74
  export const CLI_COMMAND_NAMES = Object.freeze(Object.values(CLI_COMMANDS));
75
+ /** Command aliases registered on top of the primary CLI command inventory. */
76
+ export const CLI_COMMAND_ALIASES = Object.freeze(["compare-bundles"]);
77
+ /** Canonical MCP operations reached by CLI commands with different names. */
78
+ export const CLI_COMMAND_TOOL_ALIASES = Object.freeze({
79
+ analyze: ["binary_overview"],
80
+ inspect: ["binary_overview"],
81
+ decompile: ["procedure_pseudo_code"],
82
+ function: ["analyze_function"],
83
+ instructions: ["read_function_instructions"],
84
+ trace: ["trace_feature"],
85
+ search: ["search_strings", "search_procedures"],
86
+ "capture-process": ["capture_process_scenario"],
87
+ "compare-bundles": ["compare_bundles"],
88
+ });
89
+ /** MCP operations without a dedicated CLI command or direct command alias. */
90
+ export const MCP_TOOLS_WITHOUT_DEDICATED_CLI = Object.freeze([
91
+ "address_name",
92
+ "comment",
93
+ "current_address",
94
+ "current_procedure",
95
+ "current_document",
96
+ "goto_address",
97
+ "inline_comment",
98
+ "list_bookmarks",
99
+ "list_documents",
100
+ "list_names",
101
+ "list_procedures",
102
+ "list_segments",
103
+ "list_strings",
104
+ "next_address",
105
+ "prev_address",
106
+ "procedure_address",
107
+ "procedure_assembly",
108
+ "procedure_callees",
109
+ "procedure_callers",
110
+ "procedure_info",
111
+ "read_bytes",
112
+ "address_to_file_offset",
113
+ "procedure_references",
114
+ "resolve_containing_procedure",
115
+ "set_address_name",
116
+ "set_addresses_names",
117
+ "set_bookmark",
118
+ "set_comment",
119
+ "set_current_document",
120
+ "set_inline_comment",
121
+ "unset_bookmark",
122
+ "get_objc_classes",
123
+ "get_objc_protocols",
124
+ "batch_decompile",
125
+ "get_call_graph",
126
+ "analyze_swift_types",
127
+ "find_xrefs_to_name",
128
+ "trace_call_path",
129
+ "open_binary",
130
+ "close_binary",
131
+ "binary_session",
132
+ "export_evidence_bundle",
133
+ "import_evidence_bundle",
134
+ "compare_artifacts",
135
+ "compare_functions",
136
+ "find_changed_behavior",
137
+ "build_call_path",
138
+ "correlate_static_and_runtime",
139
+ "verify_reconstruction",
140
+ "list_unknowns",
141
+ "record_unknown",
142
+ "update_unknown",
143
+ "verify_unknown_resolution",
144
+ "get_evidence_bundle",
145
+ "get_navigation_context",
146
+ "inspect_address_context",
147
+ ]);
@@ -2,14 +2,12 @@ import { Cli, z } from "incur";
2
2
  import { inspectElectronPage, listElectronTargets, } from "./application/ElectronObservationService.js";
3
3
  import { captureElectronScenario } from "./application/ElectronActiveObservationService.js";
4
4
  import { reconcileJavaScriptRuntimeEvidence } from "./application/JavaScriptRuntimeReconciliationService.js";
5
- import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
6
5
  import { CdpElectronProvider } from "./browser/CdpElectronProvider.js";
7
6
  import { PlaywrightElectronActiveProvider } from "./browser/PlaywrightElectronActiveProvider.js";
8
7
  import { logCliCommand } from "./cliLogging.js";
9
- import { parseConfig } from "./config.js";
10
8
  import { inspectElectronPageInputSchema, listElectronTargetsInputSchema, } from "./domain/electronObservation.js";
11
9
  import { electronActiveObservationInputSchema } from "./domain/electronActiveObservation.js";
12
- import { AnalysisCapabilityUnavailableError, AnalysisInputError, projectAnalysisError, } from "./domain/errors.js";
10
+ import { AnalysisInputError, projectAnalysisError } from "./domain/errors.js";
13
11
  import { CLI_COMMANDS } from "./cliCommandNames.js";
14
12
  import { parseCliJsonInput } from "./cliJsonInput.js";
15
13
  import { electronPageInspectionOptions, javascriptApplicationOptions, } from "./cliObservationOptions.js";
@@ -23,7 +21,7 @@ export const registerElectronCommands = (cli, logger) => {
23
21
  };
24
22
  const registerElectronActiveCommand = (cli, logger) => {
25
23
  cli.command(CLI_COMMANDS.captureElectronScenario, {
26
- description: "Run one approved, bounded owned Electron scenario",
24
+ description: "Run one bounded owned Electron scenario",
27
25
  args: z.object({
28
26
  inputJson: z
29
27
  .string()
@@ -37,9 +35,7 @@ const registerElectronActiveCommand = (cli, logger) => {
37
35
  if (!parsed.success)
38
36
  return inputError("capture_electron_scenario");
39
37
  const context = await electronContext();
40
- if (!context.ok)
41
- return context.error;
42
- const result = await captureElectronScenario(context.activeProvider, context.authority, parsed.data);
38
+ const result = await captureElectronScenario(context.activeProvider, parsed.data);
43
39
  return result.ok ? result.value : cliError(result.error);
44
40
  }),
45
41
  });
@@ -67,20 +63,18 @@ const registerElectronObservationCommands = (cli, logger) => {
67
63
  };
68
64
  const registerElectronTargetList = (cli, logger) => {
69
65
  cli.command(CLI_COMMANDS.listElectronTargets, {
70
- description: "List local file pages exposed by Electron CDP",
66
+ description: "List local file pages exposed by the selected Electron CDP endpoint",
71
67
  args: z.object({
72
68
  endpoint: z.string().describe("Literal-loopback Electron CDP endpoint"),
73
69
  }),
74
70
  run: ({ args }) => logCliCommand(logger, "list-electron-targets", async () => {
75
- const context = await electronObservationContext("list_electron_targets");
76
- if (!context.ok)
77
- return context.error;
71
+ const context = await electronObservationContext();
78
72
  const parsed = listElectronTargetsInputSchema.safeParse({
79
73
  cdp_endpoint: args.endpoint,
80
74
  });
81
75
  if (!parsed.success)
82
76
  return inputError("list_electron_targets");
83
- const result = await listElectronTargets(context.provider, context.authority, parsed.data);
77
+ const result = await listElectronTargets(context.provider, parsed.data);
84
78
  return result.ok ? result.value : cliError(result.error);
85
79
  }),
86
80
  });
@@ -94,9 +88,7 @@ const registerElectronPageInspection = (cli, logger) => {
94
88
  }),
95
89
  options: electronPageInspectionOptions,
96
90
  run: ({ args, options }) => logCliCommand(logger, "inspect-electron-page", async () => {
97
- const context = await electronObservationContext("inspect_electron_page");
98
- if (!context.ok)
99
- return context.error;
91
+ const context = await electronObservationContext();
100
92
  const parsed = inspectElectronPageInputSchema.safeParse({
101
93
  cdp_endpoint: args.endpoint,
102
94
  target_id: args.targetId,
@@ -105,7 +97,7 @@ const registerElectronPageInspection = (cli, logger) => {
105
97
  });
106
98
  if (!parsed.success)
107
99
  return inputError("inspect_electron_page");
108
- const result = await inspectElectronPage(context.provider, context.authority, parsed.data);
100
+ const result = await inspectElectronPage(context.provider, parsed.data);
109
101
  return result.ok ? result.value : cliError(result.error);
110
102
  }),
111
103
  });
@@ -114,7 +106,7 @@ const registerJavaScriptApplicationCommand = (cli, logger) => {
114
106
  cli.command(CLI_COMMANDS.analyzeJavaScriptApplication, {
115
107
  description: "Statically reconstruct a local JavaScript/Electron application",
116
108
  args: z.object({
117
- path: z.string().describe("Absolute ASAR or extracted application path"),
109
+ path: z.string().describe("ASAR or extracted application path"),
118
110
  }),
119
111
  options: javascriptApplicationOptions,
120
112
  run: ({ args, options }) => logCliCommand(logger, CLI_COMMANDS.analyzeJavaScriptApplication, () => runCliJavaScriptApplicationAnalysis({
@@ -124,31 +116,13 @@ const registerJavaScriptApplicationCommand = (cli, logger) => {
124
116
  });
125
117
  };
126
118
  const electronContext = async () => {
127
- const config = parseConfig(process.env);
128
- if (!config.ok)
129
- return { ok: false, error: cliError(config.error) };
130
- const authority = await loadConfiguredPermissionAuthority(config.value);
131
- if (!authority.ok)
132
- return { ok: false, error: cliError(authority.error) };
133
119
  return {
134
120
  ok: true,
135
- authority: authority.value,
136
121
  provider: new CdpElectronProvider(),
137
122
  activeProvider: new PlaywrightElectronActiveProvider(),
138
- observationPolicy: config.value.electronObservationPolicy,
139
123
  };
140
124
  };
141
- const electronObservationContext = async (operation) => {
142
- const context = await electronContext();
143
- if (!context.ok)
144
- return context;
145
- if (context.observationPolicy.status === "disabled")
146
- return {
147
- ok: false,
148
- error: cliError(new AnalysisCapabilityUnavailableError("rea-cdp-electron", operation, "Electron observation is disabled; enable REA_ELECTRON_OBSERVE_ENABLED to authorize loopback endpoints")),
149
- };
150
- return context;
151
- };
125
+ const electronObservationContext = electronContext;
152
126
  const inputError = (operation) => cliError(new AnalysisInputError(operation));
153
127
  const cliError = (error) => ({
154
128
  error: "Electron analysis failed",
@@ -1,12 +1,10 @@
1
1
  import { Cli, z } from "incur";
2
2
  import { listJavaScriptRuntimeTargets, observeJavaScriptRuntime, } from "./application/JavaScriptRuntimeObservationService.js";
3
- import { loadConfiguredPermissionAuthority } from "./application/PermissionConfiguration.js";
4
3
  import { V8InspectorProvider } from "./browser/V8InspectorProvider.js";
5
4
  import { CLI_COMMANDS } from "./cliCommandNames.js";
6
5
  import { logCliCommand } from "./cliLogging.js";
7
- import { parseConfig } from "./config.js";
8
6
  import { javascriptRuntimeKindSchema, listJavaScriptRuntimeTargetsInputSchema, observeJavaScriptRuntimeInputSchema, } from "./domain/javascriptRuntimeObservation.js";
9
- import { AnalysisCapabilityUnavailableError, AnalysisInputError, projectAnalysisError, } from "./domain/errors.js";
7
+ import { AnalysisInputError, projectAnalysisError } from "./domain/errors.js";
10
8
  const observeOptionsSchema = z.object({
11
9
  runtimeKind: javascriptRuntimeKindSchema
12
10
  .optional()
@@ -26,15 +24,13 @@ export const registerJavaScriptRuntimeObservationCommands = (cli, logger) => {
26
24
  endpoint: z.string().describe("Literal-loopback Inspector endpoint"),
27
25
  }),
28
26
  run: ({ args }) => logCliCommand(logger, CLI_COMMANDS.listJavaScriptRuntimeTargets, async () => {
29
- const context = await runtimeContext("list_javascript_runtime_targets");
30
- if (!context.ok)
31
- return context.error;
27
+ const context = runtimeContext();
32
28
  const parsed = listJavaScriptRuntimeTargetsInputSchema.safeParse({
33
29
  inspector_endpoint: args.endpoint,
34
30
  });
35
31
  if (!parsed.success)
36
32
  return inputError("list_javascript_runtime_targets");
37
- const result = await listJavaScriptRuntimeTargets(context.provider, context.authority, parsed.data);
33
+ const result = await listJavaScriptRuntimeTargets(context.provider, parsed.data);
38
34
  return result.ok ? result.value : cliError(result.error);
39
35
  }),
40
36
  });
@@ -48,9 +44,7 @@ export const registerJavaScriptRuntimeObservationCommands = (cli, logger) => {
48
44
  }),
49
45
  options: observeOptionsSchema,
50
46
  run: ({ args, options }) => logCliCommand(logger, CLI_COMMANDS.observeJavaScriptRuntime, async () => {
51
- const context = await runtimeContext("observe_javascript_runtime");
52
- if (!context.ok)
53
- return context.error;
47
+ const context = runtimeContext();
54
48
  const parsed = observeJavaScriptRuntimeInputSchema.safeParse({
55
49
  inspector_endpoint: args.endpoint,
56
50
  target_id: args.targetId,
@@ -59,30 +53,12 @@ export const registerJavaScriptRuntimeObservationCommands = (cli, logger) => {
59
53
  });
60
54
  if (!parsed.success)
61
55
  return inputError("observe_javascript_runtime");
62
- const result = await observeJavaScriptRuntime(context.provider, context.authority, parsed.data);
56
+ const result = await observeJavaScriptRuntime(context.provider, parsed.data);
63
57
  return result.ok ? result.value : cliError(result.error);
64
58
  }),
65
59
  });
66
60
  };
67
- const runtimeContext = async (operation) => {
68
- const config = parseConfig(process.env);
69
- if (!config.ok)
70
- return { ok: false, error: cliError(config.error) };
71
- const policy = config.value.v8InspectorObservationPolicy;
72
- if (policy.status === "disabled")
73
- return {
74
- ok: false,
75
- error: cliError(new AnalysisCapabilityUnavailableError("rea-v8-inspector", operation, "V8 Inspector observation is disabled; enable REA_V8_INSPECTOR_OBSERVE_ENABLED to authorize loopback endpoints")),
76
- };
77
- const authority = await loadConfiguredPermissionAuthority(config.value);
78
- if (!authority.ok)
79
- return { ok: false, error: cliError(authority.error) };
80
- return {
81
- ok: true,
82
- authority: authority.value,
83
- provider: new V8InspectorProvider(),
84
- };
85
- };
61
+ const runtimeContext = () => ({ provider: new V8InspectorProvider() });
86
62
  const inputError = (operation) => cliError(new AnalysisInputError(operation));
87
63
  const cliError = (error) => ({
88
64
  error: "JavaScript runtime observation failed",
@@ -8,7 +8,7 @@ export const parseCliJsonInput = async (value, operation) => {
8
8
  if (["{", "["].includes(value.trimStart()[0] ?? ""))
9
9
  return { ok: false, error: inputError(operation) };
10
10
  try {
11
- const parsed = parseJson(await readFile(value, "utf8"));
11
+ const parsed = parseJson(await readFile(value));
12
12
  return parsed === undefined
13
13
  ? jsonFileError(value, operation, "invalid-json")
14
14
  : { ok: true, value: parsed };
@@ -19,7 +19,9 @@ export const parseCliJsonInput = async (value, operation) => {
19
19
  };
20
20
  const parseJson = (value) => {
21
21
  try {
22
- return JSON.parse(value);
22
+ return JSON.parse(typeof value === "string"
23
+ ? value
24
+ : new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(value));
23
25
  }
24
26
  catch {
25
27
  return undefined;
@@ -1,23 +1,27 @@
1
+ import { analysisCliErrorEnvelopeSchema, analysisErrorProjectionSchema, } from "./contracts/errorSchemas.js";
2
+ import { AnalysisError, projectAnalysisError, } from "./domain/errors.js";
1
3
  const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
2
4
  /** Identify caller-visible CLI outcomes that mean the requested operation failed. */
3
5
  export const isCliOperationFailure = (value) => {
4
6
  if (!isRecord(value))
5
7
  return false;
6
- if (typeof value.error === "string")
8
+ if (isRecord(value.error) &&
9
+ analysisErrorProjectionSchema.safeParse(value.error).success)
10
+ return true;
11
+ if (analysisCliErrorEnvelopeSchema.safeParse(value).success)
12
+ return true;
13
+ if (analysisErrorProjectionSchema.safeParse(value).success)
7
14
  return true;
8
15
  if (value.healthy === false)
9
16
  return true;
10
- return (value.status === "failed" ||
11
- value.status === "needs_confirmation" ||
12
- value.status === "needs_human" ||
13
- value.status === "planned");
17
+ return false;
14
18
  };
15
19
  /** Log one CLI command with duration and a stable success or failure status. */
16
- export const logCliCommand = async (logger, command, execute) => {
20
+ export const logCliCommand = async (logger, command, execute, isCommandFailure) => {
17
21
  const startedAt = performance.now();
18
22
  try {
19
23
  const value = await execute();
20
- const failed = isCliOperationFailure(value);
24
+ const failed = isCommandFailure?.(value) ?? isCliOperationFailure(value);
21
25
  logger[failed ? "error" : "info"]({
22
26
  command,
23
27
  durationMs: Math.round((performance.now() - startedAt) * 100) / 100,
@@ -28,11 +32,16 @@ export const logCliCommand = async (logger, command, execute) => {
28
32
  return value;
29
33
  }
30
34
  catch (cause) {
35
+ process.exitCode = 1;
31
36
  logger.error({
32
37
  command,
33
38
  durationMs: Math.round((performance.now() - startedAt) * 100) / 100,
34
39
  status: "error",
35
40
  }, "CLI command failed");
41
+ if (cause instanceof AnalysisError) {
42
+ process.exitCode = 1;
43
+ return projectAnalysisError(cause);
44
+ }
36
45
  throw cause;
37
46
  }
38
47
  };
@@ -11,7 +11,7 @@ export const browserScopeOptions = {
11
11
  allowedOrigins: z
12
12
  .array(z.string().min(1))
13
13
  .optional()
14
- .describe("Exact origins to observe; defaults to REA_BROWSER_ALLOWED_ORIGINS_JSON"),
14
+ .describe("Optional exact-origin filter"),
15
15
  };
16
16
  export const browserPageInspectionOptions = z.object({
17
17
  ...browserScopeOptions,
package/dist/cliOutput.js CHANGED
@@ -2,8 +2,6 @@ const SAFE_VALIDATION_MESSAGE = "REA could not read the command arguments. Run `
2
2
  const UNSUPPORTED_OUTPUT_COMBINATION_MESSAGE = "Token windows cannot preserve structured output. Remove --token-limit/--token-offset and use --filter-output or command pagination.";
3
3
  const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
4
4
  const validationError = (value) => {
5
- if (!isRecord(value))
6
- return undefined;
7
5
  if (value.code === "VALIDATION_ERROR")
8
6
  return value;
9
7
  if (value.ok === false && isRecord(value.error))
@@ -71,6 +69,8 @@ export const sanitizeCliOutput = (output) => {
71
69
  if (trimmed.startsWith("{")) {
72
70
  try {
73
71
  const parsed = JSON.parse(trimmed);
72
+ if (!isRecord(parsed))
73
+ return output;
74
74
  const error = validationError(parsed);
75
75
  if (error !== undefined) {
76
76
  const safeError = {
@@ -79,8 +79,6 @@ export const sanitizeCliOutput = (output) => {
79
79
  };
80
80
  if (error === parsed)
81
81
  return `${JSON.stringify(safeError)}\n`;
82
- if (!isRecord(parsed))
83
- return output;
84
82
  return `${JSON.stringify({ ...parsed, error: safeError })}\n`;
85
83
  }
86
84
  }
@@ -1,18 +1,13 @@
1
1
  import { Cli, z } from "incur";
2
- import { captureProcessScenarioFile, compareProcessEvidenceFiles, } from "./application/ProcessCli.js";
2
+ import { captureProcessScenarioFile, compareProcessEvidenceFiles, isProcessCliFailure, } from "./application/ProcessCli.js";
3
3
  import { logCliCommand } from "./cliLogging.js";
4
4
  import { CLI_COMMANDS } from "./cliCommandNames.js";
5
- import { parseCliJsonInput } from "./cliJsonInput.js";
6
- import { replayMachineRunInputSchema, runReplayMachine, } from "./domain/replayMachineRun.js";
7
- import { AnalysisInputError, projectAnalysisError } from "./domain/errors.js";
8
- import { projectInputIssues } from "./domain/inputIssueProjection.js";
9
- /** Register process capture one-shot commands through shared application services. */
10
- export const registerProcessCommands = (cli, logger) => {
11
- registerReplayMachineCommand(cli, logger);
5
+ /** Register direct process capture and comparison commands. */
6
+ export const registerProcessCommands = (cli, logger, environment = process.env) => {
12
7
  cli.command(CLI_COMMANDS.captureProcess, {
13
- description: "Capture one approved process capture JSON scenario",
8
+ description: "Capture one caller-selected process scenario",
14
9
  args: z.object({ scenario: z.string().describe("Scenario JSON path") }),
15
- run: ({ args }) => logCliCommand(logger, "capture-process", () => captureProcessScenarioFile(args.scenario)),
10
+ run: ({ args }) => logCliCommand(logger, "capture-process", () => captureProcessScenarioFile(args.scenario, environment), isProcessCliFailure),
16
11
  });
17
12
  cli.command(CLI_COMMANDS.compareProcessCaptures, {
18
13
  description: "Compare two process capture Evidence JSON files",
@@ -24,28 +19,6 @@ export const registerProcessCommands = (cli, logger) => {
24
19
  .optional()
25
20
  .describe("Optional partial-order or finite-trace specification path"),
26
21
  }),
27
- run: ({ args }) => logCliCommand(logger, "compare-process-captures", () => compareProcessEvidenceFiles(args.left, args.right, args.traceSpec)),
28
- });
29
- };
30
- const registerReplayMachineCommand = (cli, logger) => {
31
- cli.command(CLI_COMMANDS.runReplayMachine, {
32
- description: "Run ordered protocol events directly through a finite replay machine",
33
- args: z.object({
34
- inputJson: z.string().describe("Inline replay JSON or JSON file path"),
35
- }),
36
- run: ({ args }) => logCliCommand(logger, CLI_COMMANDS.runReplayMachine, async () => {
37
- const input = await parseCliJsonInput(args.inputJson, CLI_COMMANDS.runReplayMachine);
38
- if (!input.ok)
39
- return input.error;
40
- const parsed = replayMachineRunInputSchema.safeParse(input.value);
41
- return parsed.success
42
- ? runReplayMachine(parsed.data)
43
- : {
44
- error: "Process command failed",
45
- ...projectAnalysisError(new AnalysisInputError(CLI_COMMANDS.runReplayMachine, {
46
- cause: parsed.error,
47
- }, projectInputIssues(parsed.error.issues, input.value))),
48
- };
49
- }),
22
+ run: ({ args }) => logCliCommand(logger, "compare-process-captures", () => compareProcessEvidenceFiles(args.left, args.right, args.traceSpec), isProcessCliFailure),
50
23
  });
51
24
  };