rea-agents 3.2.0 → 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
@@ -1,7 +1,8 @@
1
+ import { createHash } from "node:crypto";
1
2
  import { readFile } from "node:fs/promises";
2
3
  import { z } from "zod";
3
4
  import { compareManagedMembers, managedMemberComparisonResultSchema, parseManagedMemberEvidence, } from "../domain/managedMemberComparison.js";
4
- import { AnalysisInputError, AnalysisProtocolError, } from "../domain/errors.js";
5
+ import { AnalysisInputError, AnalysisProtocolError, EvidenceIntegrityError, } from "../domain/errors.js";
5
6
  import { createEvidence } from "../domain/evidence.js";
6
7
  import { jsonValueSchema } from "../domain/jsonValue.js";
7
8
  import { parseBinaryTarget } from "./BinaryTargetResolver.js";
@@ -21,22 +22,34 @@ export const compareManagedMembersEvidenceValidated = (input) => {
21
22
  return workflowFailure(operation, cause);
22
23
  }
23
24
  };
25
+ const DEFAULT_PATH_DEPENDENCIES = {
26
+ resolveTarget: parseBinaryTarget,
27
+ readBytes: readFile,
28
+ };
24
29
  /** Inspect two local PE artifacts and return one derived comparison Evidence. */
25
- export const compareManagedMemberPaths = async (input) => {
30
+ export const compareManagedMemberPaths = async (input, dependencies = DEFAULT_PATH_DEPENDENCIES) => {
26
31
  const operation = "compare_managed_members";
27
32
  try {
28
33
  const [leftTarget, rightTarget] = await Promise.all([
29
- parseBinaryTarget(input.leftPath),
30
- parseBinaryTarget(input.rightPath),
34
+ dependencies.resolveTarget(input.leftPath),
35
+ dependencies.resolveTarget(input.rightPath),
31
36
  ]);
32
37
  if (!leftTarget.ok)
33
38
  return err(new AnalysisInputError(operation, { cause: leftTarget.error }));
34
39
  if (!rightTarget.ok)
35
40
  return err(new AnalysisInputError(operation, { cause: rightTarget.error }));
36
41
  const [leftBytes, rightBytes] = await Promise.all([
37
- readFile(leftTarget.value.path),
38
- readFile(rightTarget.value.path),
42
+ dependencies.readBytes(leftTarget.value.path),
43
+ dependencies.readBytes(rightTarget.value.path),
39
44
  ]);
45
+ for (const [target, bytes] of [
46
+ [leftTarget.value, leftBytes],
47
+ [rightTarget.value, rightBytes],
48
+ ]) {
49
+ const observedSha256 = createHash("sha256").update(bytes).digest("hex");
50
+ if (observedSha256 !== target.sha256)
51
+ return err(new EvidenceIntegrityError(`Managed artifact digest changed after open: expected ${target.sha256}, observed ${observedSha256} at ${target.path}`));
52
+ }
40
53
  const leftInspection = inspectManagedMembersBytes(leftBytes, leftTarget.value);
41
54
  const rightInspection = inspectManagedMembersBytes(rightBytes, rightTarget.value);
42
55
  const leftEvidence = createEvidence(leftTarget.value, MANAGED_STATIC_PROVIDER, {
@@ -58,6 +58,8 @@ export const projectNativeApiInspection = (dossier) => {
58
58
  const availableResidualUnknowns = (boundary) => {
59
59
  const unknowns = [];
60
60
  for (const table of boundary.jump_tables) {
61
+ if (table.default_targets.length === 0)
62
+ unknowns.push(`Which default or out-of-range path, if any, belongs to the dispatch at ${table.dispatch_address}?`);
61
63
  if (table.mappings.length === 0)
62
64
  unknowns.push(`Which case values and targets belong to the dispatch at ${table.dispatch_address}?`);
63
65
  if (table.data_sources.length === 0)
@@ -0,0 +1,72 @@
1
+ import { z } from "zod";
2
+ import { parseRelatedAddresses, referenceKindSchema, } from "../domain/hopperValues.js";
3
+ import { err, ok } from "../domain/result.js";
4
+ import { AnalysisOutputError } from "../domain/errors.js";
5
+ const referencesSchema = z.object({
6
+ reference_kinds_available: z.boolean().optional(),
7
+ references: z.array(z.object({
8
+ source_address: z.string(),
9
+ target_address: z.string(),
10
+ target_procedure: z.object({ address: z.string() }).nullable(),
11
+ kind: referenceKindSchema,
12
+ })),
13
+ unresolved_calls: z
14
+ .array(z.object({ address: z.string(), reason: z.string() }))
15
+ .default([]),
16
+ });
17
+ /** Prefer typed static call references, preserving computed targets and targetless sites. */
18
+ export const readNativeCallRoutes = async (analysis, procedure, signal) => {
19
+ const options = signal === undefined ? {} : { signal };
20
+ const execution = await analysis.execute("procedure_references", { procedure, direction: "outgoing" }, options);
21
+ if (execution.ok) {
22
+ const parsed = referencesSchema.safeParse(execution.value.result);
23
+ if (!parsed.success)
24
+ return err(new AnalysisOutputError("procedure_references", "Invalid typed call references"));
25
+ const references = parsed.data.references;
26
+ if (parsed.data.reference_kinds_available === true ||
27
+ (references.length > 0 && references.every(({ kind }) => kind.available))) {
28
+ const calls = references.filter(({ kind }) => kind.available && kind.call);
29
+ const countBySite = new Map();
30
+ for (const call of calls) {
31
+ const targets = countBySite.get(call.source_address) ?? new Set();
32
+ targets.add(call.target_address);
33
+ countBySite.set(call.source_address, targets);
34
+ }
35
+ return ok({
36
+ provider: execution.value.provider,
37
+ routes: calls.map((call) => ({
38
+ address: call.target_procedure?.address ?? call.target_address,
39
+ site: call.source_address,
40
+ relation: call.kind.available && (call.kind.computed || call.kind.indirect)
41
+ ? "indirect_call"
42
+ : "direct_call",
43
+ resolution: (countBySite.get(call.source_address)?.size ?? 0) > 1
44
+ ? "ambiguous"
45
+ : call.kind.available &&
46
+ (call.kind.computed || call.kind.indirect)
47
+ ? "resolved"
48
+ : "observed",
49
+ })),
50
+ unknowns: parsed.data.unresolved_calls,
51
+ });
52
+ }
53
+ }
54
+ else if (execution.error._tag !== "AnalysisCapabilityUnavailableError")
55
+ return err(execution.error);
56
+ const callees = await analysis.execute("procedure_callees", { procedure }, options);
57
+ if (!callees.ok)
58
+ return callees;
59
+ const parsed = parseRelatedAddresses(callees.value.result, "callees");
60
+ return parsed.ok
61
+ ? ok({
62
+ provider: callees.value.provider,
63
+ routes: parsed.value.map((address) => ({
64
+ address,
65
+ site: procedure,
66
+ relation: "provider_call",
67
+ resolution: "inferred",
68
+ })),
69
+ unknowns: [],
70
+ })
71
+ : parsed;
72
+ };
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { nativeDispatchMetadataResultSchema, inspectNativeDispatchMetadata, } from "../domain/objcSwiftMetadata.js";
3
+ import { AnalysisOutputError } from "../domain/errors.js";
4
+ import { jsonValueSchema } from "../domain/jsonValue.js";
5
+ import { err, ok } from "../domain/result.js";
6
+ /** Prefer validated binary metadata, otherwise preserve the bound provider's symbol-only coverage. */
7
+ export const inspectNativeDispatch = async (analysis, maxRecords, signal) => {
8
+ const binaryMetadata = await analysis.execute("inspect_native_dispatch_metadata", { max_records: maxRecords }, signal === undefined ? {} : { signal });
9
+ if (binaryMetadata.ok)
10
+ return ok(jsonValueSchema.parse(nativeDispatchMetadataResultSchema.parse(binaryMetadata.value.result)));
11
+ if (binaryMetadata.error._tag !== "AnalysisCapabilityUnavailableError")
12
+ return err(binaryMetadata.error);
13
+ const execution = await analysis.execute("list_names", {}, signal === undefined ? {} : { signal });
14
+ if (!execution.ok)
15
+ return err(execution.error);
16
+ const names = z
17
+ .array(z.union([
18
+ z.strictObject({ address: z.string(), value: z.string() }),
19
+ z.strictObject({ address: z.string(), name: z.string() }),
20
+ ]))
21
+ .safeParse(execution.value.result);
22
+ if (!names.success)
23
+ return err(new AnalysisOutputError("list_names", "provider returned an invalid inventory"));
24
+ return ok(jsonValueSchema.parse(nativeDispatchMetadataResultSchema.parse({
25
+ target_sha256: execution.value.subject?.sha256 ?? null,
26
+ provider: execution.value.provider,
27
+ analysis_profile_digest: execution.value.analysisProfile?.digest ?? null,
28
+ result: inspectNativeDispatchMetadata(names.data.map((entry) => ({
29
+ address: entry.address,
30
+ name: "value" in entry ? entry.value : entry.name,
31
+ })), maxRecords),
32
+ })));
33
+ };
@@ -1,45 +1,31 @@
1
1
  import { z } from "zod";
2
2
  import { interfaceBuilderAnalysisSchema } from "../domain/interfaceBuilderGraph.js";
3
3
  import { nativeInvestigationGraphSchema, nativeInvestigationTraceSchema, traceNativeInvestigationGraph, joinInterfaceBuilderDispatch, } from "../domain/nativeInvestigationGraph.js";
4
- import { inspectNativeDispatchMetadata, nativeDispatchMetadataResultSchema, } from "../domain/objcSwiftMetadata.js";
4
+ import { nativeDispatchMetadataResultSchema } from "../domain/objcSwiftMetadata.js";
5
+ import { inspectNativeDispatch } from "./NativeDispatchMetadataInspection.js";
5
6
  import { jsonValueSchema } from "../domain/jsonValue.js";
6
- import { parseRelatedAddresses } from "../domain/hopperValues.js";
7
+ import { readNativeCallRoutes } from "./NativeCallRoutes.js";
7
8
  import { err, ok } from "../domain/result.js";
8
- import { AnalysisCancelledError, AnalysisOutputError, projectAnalysisError, } from "../domain/errors.js";
9
- const nativeNameSchema = z.array(z.union([
10
- z.strictObject({ address: z.string(), name: z.string() }),
11
- z.strictObject({ address: z.string(), value: z.string() }),
12
- ]));
9
+ import { AnalysisOutputError, projectAnalysisError } from "../domain/errors.js";
13
10
  /** Build a UI-to-code trace from the active app and selected native provider. */
14
11
  export const traceNativeUiAction = async (analysis, input, signal) => {
15
- const [uiExecution, namesExecution] = await Promise.all([
12
+ const [uiExecution, metadataExecution] = await Promise.all([
16
13
  analysis.execute("decode_interface_builder", {
17
14
  max_documents: 64,
18
15
  max_objects: input.max_nodes,
19
16
  max_connections: input.max_edges,
20
17
  }, signal === undefined ? {} : { signal }),
21
- analysis.execute("list_names", {}, signal === undefined ? {} : { signal }),
18
+ inspectNativeDispatch(analysis, 20_000, signal),
22
19
  ]);
23
20
  if (!uiExecution.ok && uiExecution.error._tag === "AnalysisCancelledError")
24
- return err(new AnalysisCancelledError("decode_interface_builder"));
25
- if (!namesExecution.ok)
26
- return err(namesExecution.error);
27
- const parsedNames = nativeNameSchema.safeParse(namesExecution.value.result);
28
- if (!parsedNames.success)
29
- return err(new AnalysisOutputError("list_names", "provider returned an invalid name inventory"));
30
- const targetSha256 = namesExecution.value.subject?.sha256;
31
- if (targetSha256 === undefined)
32
- return err(new AnalysisOutputError("list_names", "provider did not bind the name inventory to a target SHA-256"));
33
- const metadata = nativeDispatchMetadataResultSchema.parse({
34
- target_sha256: targetSha256,
35
- provider: namesExecution.value.provider,
36
- analysis_profile_digest: namesExecution.value.analysisProfile?.digest ?? null,
37
- result: inspectNativeDispatchMetadata(parsedNames.data.map((entry) => ({
38
- address: entry.address,
39
- name: "name" in entry ? entry.name : entry.value,
40
- })), parsedNames.data.length),
41
- });
42
- let graph = emptyGraph(targetSha256, namesExecution.value.provider);
21
+ return err(uiExecution.error);
22
+ if (!metadataExecution.ok)
23
+ return err(metadataExecution.error);
24
+ const metadata = nativeDispatchMetadataResultSchema.parse(metadataExecution.value);
25
+ const targetSha256 = metadata.target_sha256;
26
+ if (targetSha256 === null)
27
+ return err(new AnalysisOutputError("inspect_native_dispatch_metadata", "Dispatch metadata lacks target identity"));
28
+ let graph = emptyGraph(targetSha256, metadata.provider);
43
29
  const coverage = [];
44
30
  if (uiExecution.ok) {
45
31
  const decoded = interfaceBuilderAnalysisSchema.safeParse(uiExecution.value.result);
@@ -77,7 +63,35 @@ export const traceNativeUiAction = async (analysis, input, signal) => {
77
63
  omitted: 0,
78
64
  });
79
65
  }
80
- const selected = resolveUiAction(graph, input.action);
66
+ let selected = resolveUiAction(graph, input.action);
67
+ if (selected.nodeId === null && selected.candidates.length === 0) {
68
+ const native = await analysis.execute("procedure_address", { procedure: input.action }, signal === undefined ? {} : { signal });
69
+ if (!native.ok && native.error._tag === "AnalysisCancelledError")
70
+ return err(native.error);
71
+ if (native.ok) {
72
+ const address = z.string().safeParse(native.value.result);
73
+ if (!address.success || native.value.subject?.sha256 !== targetSha256)
74
+ return err(new AnalysisOutputError("procedure_address", "Native seed lacks a validated address or matching target identity"));
75
+ const id = `native:function:${address.data}`;
76
+ graph.nodes.push({
77
+ id,
78
+ kind: "function",
79
+ name: input.action,
80
+ location: { address: address.data, file_offset: null },
81
+ attributes: { resolved_by: native.value.provider.id },
82
+ evidence: [
83
+ {
84
+ kind: "reference",
85
+ description: `Provider resolved the explicit native seed ${input.action}`,
86
+ location: { address: address.data, file_offset: null },
87
+ artifact_path: null,
88
+ artifact_sha256: targetSha256,
89
+ },
90
+ ],
91
+ });
92
+ selected = { nodeId: id, candidates: [], reason: null };
93
+ }
94
+ }
81
95
  if (selected.nodeId === null) {
82
96
  coverage.push(...graph.coverage);
83
97
  const trace = {
@@ -93,7 +107,7 @@ export const traceNativeUiAction = async (analysis, input, signal) => {
93
107
  reason: selected.reason,
94
108
  coverage,
95
109
  limitations: [
96
- "The query did not identify one unique authored UI action; no handler path was inferred.",
110
+ "The query did not identify one unique authored UI action or native function; no handler path was inferred.",
97
111
  ],
98
112
  };
99
113
  return ok(jsonValueSchema.parse(nativeInvestigationTraceSchema.parse(trace)));
@@ -118,9 +132,9 @@ export const traceNativeUiAction = async (analysis, input, signal) => {
118
132
  if (expanded.error !== undefined)
119
133
  return err(expanded.error);
120
134
  coverage.push({
121
- facet: "direct_native_calls",
135
+ facet: "static_native_calls",
122
136
  status: "partial",
123
- reason: "resolved_direct_calls_do_not_cover_all_indirect_dispatch",
137
+ reason: "typed_direct_and_indirect_references_do_not_cover_all_runtime_dispatch; untyped_provider_callees_remain_inferred",
124
138
  examined: expanded.examined,
125
139
  omitted: expanded.omitted,
126
140
  });
@@ -266,7 +280,7 @@ const addDirectCallees = async (input) => {
266
280
  omitted += queue.length - queueIndex + 1;
267
281
  break;
268
282
  }
269
- const execution = await input.analysis.execute("procedure_callees", { procedure: current.address }, input.signal === undefined ? {} : { signal: input.signal });
283
+ const execution = await readNativeCallRoutes(input.analysis, current.address, input.signal);
270
284
  examined += 1;
271
285
  if (!execution.ok) {
272
286
  if (execution.error._tag === "AnalysisCancelledError")
@@ -286,35 +300,45 @@ const addDirectCallees = async (input) => {
286
300
  });
287
301
  continue;
288
302
  }
289
- const related = parseRelatedAddresses(execution.value.result, "callees");
290
- if (!related.ok) {
291
- const id = `unknown-callees:${current.address}`;
303
+ for (const unknown of execution.value.unknowns) {
304
+ if (edges.size >= input.input.max_edges) {
305
+ truncated = true;
306
+ omitted++;
307
+ break;
308
+ }
309
+ const id = `unknown-dispatch:${current.address}:${unknown.address}`;
292
310
  edges.set(id, {
293
311
  id,
294
312
  from: current.node.id,
295
313
  to: null,
296
- relation: "direct_call",
314
+ relation: "indirect_call",
297
315
  resolution: "unresolved",
298
- reason: "provider_returned_unreadable_callee_relationships",
299
- evidence: [],
300
- limitations: [
301
- "The provider result could not be normalized into callee addresses.",
316
+ reason: unknown.reason,
317
+ evidence: [
318
+ {
319
+ kind: "reference",
320
+ description: unknown.reason,
321
+ location: { address: unknown.address, file_offset: null },
322
+ artifact_path: null,
323
+ artifact_sha256: input.targetSha256,
324
+ },
302
325
  ],
326
+ limitations: [],
303
327
  });
304
- continue;
305
328
  }
306
- for (const [index, address] of related.value.entries()) {
329
+ for (const [index, route] of execution.value.routes.entries()) {
330
+ const address = route.address;
307
331
  if (edges.size >= input.input.max_edges) {
308
332
  truncated = true;
309
- omitted += related.value.length - index;
333
+ omitted += execution.value.routes.length - index;
310
334
  break;
311
335
  }
312
336
  const targetId = `native:function:${address}`;
313
337
  const evidence = [
314
338
  {
315
339
  kind: "reference",
316
- description: `${execution.value.provider.name} resolved a direct callee from ${current.address} to ${address}`,
317
- location: { address: current.address, file_offset: null },
340
+ description: `${execution.value.provider.name} reported ${route.relation} from ${current.address} to ${address}`,
341
+ location: { address: route.site, file_offset: null },
318
342
  artifact_path: null,
319
343
  artifact_sha256: input.targetSha256,
320
344
  },
@@ -348,13 +372,13 @@ const addDirectCallees = async (input) => {
348
372
  nodes.set(targetId, node);
349
373
  queue.push({ node, address, depth: current.depth + 1 });
350
374
  }
351
- const edgeId = `call:${current.address}:${address}`;
375
+ const edgeId = `call:${current.address}:${route.site}:${address}`;
352
376
  edges.set(edgeId, {
353
377
  id: edgeId,
354
378
  from: current.node.id,
355
379
  to: targetId,
356
- relation: "direct_call",
357
- resolution: "observed",
380
+ relation: route.relation,
381
+ resolution: route.resolution,
358
382
  evidence,
359
383
  limitations: [
360
384
  "A resolved static call edge does not establish runtime reachability.",