rea-agents 3.1.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) hide show
  1. package/README.md +72 -95
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisSnapshotCache.js +0 -1
  6. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  7. package/dist/application/AndroidApplicationService.js +1 -1
  8. package/dist/application/AppleApplicationService.js +1 -1
  9. package/dist/application/ArtifactExtraction.js +35 -54
  10. package/dist/application/ArtifactExtractionDestination.js +17 -0
  11. package/dist/application/ArtifactGraphConstruction.js +2 -17
  12. package/dist/application/ArtifactInventory/classify.js +2 -6
  13. package/dist/application/ArtifactInventory/hash.js +2 -20
  14. package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
  15. package/dist/application/ArtifactInventory/scanReader.js +69 -51
  16. package/dist/application/ArtifactInventory.js +6 -14
  17. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  18. package/dist/application/BinarySession.js +41 -13
  19. package/dist/application/BinarySessionComposition.js +0 -11
  20. package/dist/application/BinarySessionOpen.js +2 -1
  21. package/dist/application/BinarySessionRecords.js +5 -93
  22. package/dist/application/BinarySessionStatus.js +5 -16
  23. package/dist/application/BinaryTargetResolver.js +216 -0
  24. package/dist/application/BrowserEvidence.js +42 -58
  25. package/dist/application/BrowserObservationService.js +3 -6
  26. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  27. package/dist/application/BrowserScenarioEvidence.js +3 -3
  28. package/dist/application/CallPathTracing.js +2 -36
  29. package/dist/application/CapabilityInventory.js +10 -15
  30. package/dist/application/ClientConfigurationDocument.js +27 -0
  31. package/dist/application/ClientRegistrationStatus.js +16 -13
  32. package/dist/application/CommandShimReplay.js +14 -1
  33. package/dist/application/DirectAnalysis.js +22 -46
  34. package/dist/application/DirectAnalysisStatus.js +5 -61
  35. package/dist/application/Doctor.js +11 -32
  36. package/dist/application/DoctorDiagnostics.js +1 -2
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/ElectronActiveEvidence.js +3 -8
  39. package/dist/application/ElectronActiveObservationService.js +3 -6
  40. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  41. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  42. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  43. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  44. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  45. package/dist/application/ElectronEvidence.js +4 -7
  46. package/dist/application/ElectronObservationService.js +5 -9
  47. package/dist/application/EnhancedLiteralTracing.js +42 -65
  48. package/dist/application/EnhancedTools.js +76 -44
  49. package/dist/application/EvidenceBundleCommands.js +11 -11
  50. package/dist/application/EvidenceBundleFiles.js +9 -15
  51. package/dist/application/EvidenceLedger.js +6 -41
  52. package/dist/application/FilesystemSnapshot.js +2 -3
  53. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  54. package/dist/application/InventoryProjectionEvidence.js +4 -2
  55. package/dist/application/InvestigationProviders.js +1 -1
  56. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  57. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  58. package/dist/application/JavaScriptApplicationService.js +6 -29
  59. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  60. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  61. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  62. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  63. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  64. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  65. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  66. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  67. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  68. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  69. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  70. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  71. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  72. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  73. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  74. package/dist/application/JavaScriptJsonModules.js +2 -2
  75. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  76. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  77. package/dist/application/JavaScriptReplayService.js +6 -32
  78. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  79. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  80. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  81. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  82. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  83. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  84. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  85. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  86. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  87. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  88. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  89. package/dist/application/JsonFiles.js +79 -0
  90. package/dist/application/LinuxHopper.js +11 -9
  91. package/dist/application/LoopbackReplay.js +26 -23
  92. package/dist/application/LoopbackReplayRecorder.js +29 -1
  93. package/dist/application/ManagedApplicationGraphService.js +1 -2
  94. package/dist/application/ManagedMemberComparisonService.js +11 -41
  95. package/dist/application/ManagedNativeVerificationService.js +1 -2
  96. package/dist/application/ManagedReconstructionService.js +1 -1
  97. package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
  98. package/dist/application/NativeApiInspection.js +2 -7
  99. package/dist/application/NativeUiActionTrace.js +394 -0
  100. package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
  101. package/dist/application/PermissionAuthority.js +15 -7
  102. package/dist/application/PermissionFailure.js +5 -0
  103. package/dist/application/ProcessCaptureAuthority.js +5 -7
  104. package/dist/application/ProcessCaptureJournal.js +3 -2
  105. package/dist/application/ProcessCaptureLifecycle.js +5 -12
  106. package/dist/application/ProcessCheckpoints.js +29 -11
  107. package/dist/application/ProcessCli.js +6 -16
  108. package/dist/application/ProcessEvidence.js +5 -7
  109. package/dist/application/ProcessHarness.js +52 -17
  110. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  111. package/dist/application/ProcessReactiveEffects.js +9 -3
  112. package/dist/application/ProcessReactiveHarness.js +13 -7
  113. package/dist/application/ProcessSampling.js +2 -4
  114. package/dist/application/ProcessTimer.js +39 -0
  115. package/dist/application/ProjectPermissionStore.js +39 -96
  116. package/dist/application/RealHopperAssertions.js +20 -66
  117. package/dist/application/ReconstructionCoverageService.js +12 -58
  118. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  119. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  120. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  121. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  122. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  123. package/dist/application/ReferenceSourceImport.js +19 -45
  124. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  125. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  126. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  127. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  128. package/dist/application/SessionProviderRouter.js +2 -2
  129. package/dist/application/Setup.js +1 -3
  130. package/dist/application/SetupClientConfiguration.js +22 -93
  131. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  132. package/dist/application/StoreFileLock.js +119 -0
  133. package/dist/application/TerminalRenderer.js +2 -3
  134. package/dist/application/Uninstall.js +9 -14
  135. package/dist/application/UnknownEvidence.js +1 -1
  136. package/dist/artifacts/ArtifactPaths.js +2 -5
  137. package/dist/artifacts/ArtifactProvider.js +36 -58
  138. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  139. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  140. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  141. package/dist/artifacts/NibArchive.js +269 -0
  142. package/dist/artifacts/SafeOutputTree.js +15 -24
  143. package/dist/browser/BrowserProcessStartup.js +1 -2
  144. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  145. package/dist/browser/CdpBrowserProvider.js +3 -13
  146. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  147. package/dist/browser/CdpCaptureDocuments.js +28 -76
  148. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  149. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  150. package/dist/browser/CdpCaptureEvents.js +2 -8
  151. package/dist/browser/CdpCaptureStorage.js +9 -20
  152. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
  153. package/dist/browser/CdpCaptureValues.js +21 -21
  154. package/dist/browser/CdpConnection.js +10 -25
  155. package/dist/browser/CdpElectronInspection.js +26 -50
  156. package/dist/browser/CdpElectronProvider.js +10 -35
  157. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  158. package/dist/browser/CdpElectronScripts.js +6 -35
  159. package/dist/browser/CdpElectronWorkers.js +6 -10
  160. package/dist/browser/CdpEndpoint.js +25 -41
  161. package/dist/browser/CdpObservationSession.js +14 -26
  162. package/dist/browser/CdpPageCapture.js +34 -48
  163. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  164. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  165. package/dist/browser/CdpSafeMetadata.js +19 -22
  166. package/dist/browser/CdpScreenshot.js +3 -5
  167. package/dist/browser/CdpTargetSession.js +1 -2
  168. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  169. package/dist/browser/ElectronFileScope.js +8 -19
  170. package/dist/browser/JavaScriptRuntimeScope.js +9 -14
  171. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  172. package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
  174. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  175. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  176. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  177. package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
  178. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  179. package/dist/browser/PlaywrightScenarioSession.js +14 -30
  180. package/dist/browser/PngVisualDiff.js +22 -14
  181. package/dist/browser/SensitiveTextCapture.js +0 -17
  182. package/dist/browser/V8InspectorCaptureProjection.js +7 -8
  183. package/dist/browser/V8InspectorEndpoint.js +12 -14
  184. package/dist/browser/V8InspectorProvider.js +20 -61
  185. package/dist/browser/WebSourceMapFetcher.js +56 -176
  186. package/dist/catalogIdentity.js +0 -54
  187. package/dist/cli/artifactCommands.js +49 -77
  188. package/dist/cli/coreAnalysisCommands.js +83 -133
  189. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  190. package/dist/cli/managedCommands.js +5 -270
  191. package/dist/cli/setupCommands.js +3 -12
  192. package/dist/cli/utilityCommands.js +7 -41
  193. package/dist/cli.js +0 -2
  194. package/dist/cliApplicationCommands.js +42 -112
  195. package/dist/cliBrowserAdvancedCommands.js +10 -106
  196. package/dist/cliBrowserCommands.js +15 -127
  197. package/dist/cliBrowserContext.js +30 -0
  198. package/dist/cliCommandNames.js +4 -5
  199. package/dist/cliElectronCommands.js +8 -72
  200. package/dist/cliEvidenceCommands.js +8 -77
  201. package/dist/cliJavaScriptRuntimeCommands.js +9 -91
  202. package/dist/cliJsonInput.js +4 -14
  203. package/dist/cliObservationOptions.js +11 -96
  204. package/dist/cliPolicyCommands.js +2 -17
  205. package/dist/cliProcessCommands.js +3 -3
  206. package/dist/cliSetup.js +0 -13
  207. package/dist/config/browserScenario.js +2 -2
  208. package/dist/config/environment.js +0 -9
  209. package/dist/config/parseConfig.js +1 -33
  210. package/dist/config/parsers.js +6 -27
  211. package/dist/config/passiveObservation.js +7 -77
  212. package/dist/config/permissions.js +0 -7
  213. package/dist/contracts/analysisSearchContract.js +2 -5
  214. package/dist/contracts/applicationToolContracts.js +56 -109
  215. package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
  216. package/dist/contracts/artifactComparisonExample.js +58 -60
  217. package/dist/contracts/artifactToolContracts.js +20 -67
  218. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  219. package/dist/contracts/browserToolContracts.js +8 -73
  220. package/dist/contracts/electronToolContracts.js +8 -108
  221. package/dist/contracts/enhancedInputs.js +23 -54
  222. package/dist/contracts/errorSchemas.js +0 -1
  223. package/dist/contracts/functionComparisonExample.js +10 -24
  224. package/dist/contracts/functionInstructionContract.js +1 -3
  225. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  226. package/dist/contracts/hopperMemoryContracts.js +3 -3
  227. package/dist/contracts/investigationExamples.js +14 -11
  228. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  229. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  230. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  231. package/dist/contracts/managedToolContracts.js +6 -95
  232. package/dist/contracts/managedWorkflowExamples.js +77 -128
  233. package/dist/contracts/managedWorkflowToolContracts.js +51 -77
  234. package/dist/contracts/nativeToolContracts.js +7 -11
  235. package/dist/contracts/processCaptureExample.js +2 -69
  236. package/dist/contracts/promptContracts.js +49 -67
  237. package/dist/contracts/providerSelection.js +0 -1
  238. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  239. package/dist/contracts/sessionStatusContract.js +1 -17
  240. package/dist/contracts/sessionToolSchemas.js +6 -15
  241. package/dist/contracts/toolContractExamples.js +11 -11
  242. package/dist/contracts/toolContractHelpers.js +0 -4
  243. package/dist/contracts/toolContracts.js +60 -71
  244. package/dist/contracts/toolEffects.js +5 -13
  245. package/dist/contracts/toolOutputSchemaGroups.js +37 -91
  246. package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
  247. package/dist/contracts/toolSchemaMetadata.js +8 -19
  248. package/dist/contracts/unknownContractExamples.js +0 -2
  249. package/dist/domain/analysisErrorPresentation.js +46 -54
  250. package/dist/domain/analysisErrorProjection.js +28 -37
  251. package/dist/domain/analysisProfile.js +3 -31
  252. package/dist/domain/analysisSnapshot.js +3 -12
  253. package/dist/domain/androidApplication.js +15 -54
  254. package/dist/domain/appleApplication.js +24 -67
  255. package/dist/domain/artifactComparison.js +11 -29
  256. package/dist/domain/artifactGraph.js +14 -44
  257. package/dist/domain/artifactInspection.js +38 -69
  258. package/dist/domain/artifactInventoryEvidence.js +27 -21
  259. package/dist/domain/binaryTarget.js +2 -221
  260. package/dist/domain/browserCaptureComparison.js +47 -24
  261. package/dist/domain/browserObservation.js +28 -193
  262. package/dist/domain/browserObservationSchemas.js +5 -23
  263. package/dist/domain/browserScenario.js +11 -14
  264. package/dist/domain/browserScenarioCapture.js +11 -12
  265. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  266. package/dist/domain/browserScenarioDiff.js +2 -59
  267. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  268. package/dist/domain/browserScenarioDiffValues.js +21 -38
  269. package/dist/domain/browserScenarioValues.js +80 -109
  270. package/dist/domain/browserSession.js +4 -7
  271. package/dist/domain/bundleComparison.js +6 -32
  272. package/dist/domain/bytecodeProvider.js +20 -19
  273. package/dist/domain/callPath.js +47 -167
  274. package/dist/domain/callPathSchemas.js +79 -0
  275. package/dist/domain/changedBehavior.js +34 -60
  276. package/dist/domain/completionLedgerGeneration.js +8 -14
  277. package/dist/domain/conformancePackage.js +126 -97
  278. package/dist/domain/conformanceReplay.js +36 -8
  279. package/dist/domain/conformanceTrustGate.js +23 -14
  280. package/dist/domain/customProtocolCapture.js +1 -1
  281. package/dist/domain/electronActiveObservation.js +70 -103
  282. package/dist/domain/electronObservation.js +14 -80
  283. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  284. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  285. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  286. package/dist/domain/electronStaticAnalysisValues.js +10 -17
  287. package/dist/domain/errors.js +33 -54
  288. package/dist/domain/eventProcessTree.js +20 -12
  289. package/dist/domain/evidence.js +2 -10
  290. package/dist/domain/evidenceBundle.js +3 -5
  291. package/dist/domain/evidenceCompletionLedger.js +6 -8
  292. package/dist/domain/functionComparison.js +4 -14
  293. package/dist/domain/functionComparisonNormalization.js +4 -11
  294. package/dist/domain/functionComparisonResults.js +25 -15
  295. package/dist/domain/functionComparisonSchemas.js +49 -33
  296. package/dist/domain/functionDossierEvidence.js +31 -156
  297. package/dist/domain/hopperStartupFailure.js +1 -1
  298. package/dist/domain/hopperValues.js +15 -136
  299. package/dist/domain/interfaceBuilderGraph.js +654 -0
  300. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  301. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  302. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  303. package/dist/domain/javascriptApplicationGraph.js +3 -13
  304. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  305. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  306. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  307. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  308. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  309. package/dist/domain/javascriptAstFingerprint.js +25 -58
  310. package/dist/domain/javascriptAstValues.js +9 -0
  311. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  312. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  313. package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
  314. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  315. package/dist/domain/javascriptFeatureSeed.js +20 -12
  316. package/dist/domain/javascriptFeatureTrace.js +13 -67
  317. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  318. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  319. package/dist/domain/javascriptNativeHandoff.js +1 -1
  320. package/dist/domain/javascriptReplay.js +24 -41
  321. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  322. package/dist/domain/javascriptRuntimeObservation.js +42 -103
  323. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  324. package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
  325. package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
  326. package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
  327. package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
  328. package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
  329. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  330. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
  331. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  332. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  333. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  334. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  335. package/dist/domain/javascriptSemanticCalls.js +5 -32
  336. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  337. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  338. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  339. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  340. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  341. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  342. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  343. package/dist/domain/javascriptSemanticIr.js +1 -29
  344. package/dist/domain/javascriptSemanticObjects.js +1 -5
  345. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  346. package/dist/domain/javascriptSemanticProjection.js +0 -18
  347. package/dist/domain/javascriptSemanticPromises.js +9 -16
  348. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  349. package/dist/domain/javascriptSemanticQuery.js +17 -139
  350. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  351. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  352. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  353. package/dist/domain/javascriptSemanticResources.js +1 -6
  354. package/dist/domain/javascriptSemanticReturns.js +10 -27
  355. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  356. package/dist/domain/javascriptSemanticValues.js +44 -62
  357. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  358. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  359. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  360. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  361. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  362. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  363. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  364. package/dist/domain/jsonShape.js +7 -33
  365. package/dist/domain/localPath.js +7 -0
  366. package/dist/domain/managedApplicationGraph.js +9 -41
  367. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  368. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  369. package/dist/domain/managedArtifact.js +14 -27
  370. package/dist/domain/managedMemberComparison.js +90 -92
  371. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  372. package/dist/domain/managedMemberComparisonItems.js +221 -0
  373. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  374. package/dist/domain/managedNativeVerification.js +3 -6
  375. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  376. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  377. package/dist/domain/managedReconstruction.js +19 -23
  378. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  379. package/dist/domain/nativeApiBoundary.js +2 -7
  380. package/dist/domain/nativeInspection.js +0 -2
  381. package/dist/domain/nativeInvestigationGraph.js +351 -0
  382. package/dist/domain/nativeValueFlow.js +61 -0
  383. package/dist/domain/nodeRuntimeCharacterization.js +1 -5
  384. package/dist/domain/objcSwiftMetadata.js +254 -0
  385. package/dist/domain/peInspection.js +1 -1
  386. package/dist/domain/permissionPolicy.js +13 -0
  387. package/dist/domain/processCapture.js +76 -113
  388. package/dist/domain/processCaptureExample.js +68 -0
  389. package/dist/domain/processCaptureParsing.js +21 -0
  390. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  391. package/dist/domain/processCaptureValidation.js +1 -7
  392. package/dist/domain/processComparison.js +3 -12
  393. package/dist/domain/processReactiveMatching.js +29 -50
  394. package/dist/domain/processReactiveRuntime.js +4 -8
  395. package/dist/domain/processReactiveScenario.js +28 -94
  396. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  397. package/dist/domain/processReactiveTransition.js +33 -18
  398. package/dist/domain/processScenario.js +56 -90
  399. package/dist/domain/processTraceComparison.js +0 -8
  400. package/dist/domain/processTraceEvaluation.js +14 -4
  401. package/dist/domain/processTraceSpecification.js +11 -17
  402. package/dist/domain/protocolCapture.js +3 -3
  403. package/dist/domain/reconstructionCoverage.js +62 -129
  404. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  405. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  406. package/dist/domain/reconstructionReadiness.js +1 -2
  407. package/dist/domain/reconstructionReadinessSchemas.js +36 -38
  408. package/dist/domain/reconstructionUnknowns.js +3 -3
  409. package/dist/domain/reconstructionVerification.js +13 -47
  410. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  411. package/dist/domain/referenceSourceGraph.js +53 -61
  412. package/dist/domain/referenceSourceImportParsing.js +1 -5
  413. package/dist/domain/replayMachine.js +19 -31
  414. package/dist/domain/replayMachineRun.js +15 -63
  415. package/dist/domain/replayMachineRuntime.js +41 -41
  416. package/dist/domain/replayMachineValues.js +84 -0
  417. package/dist/domain/residualUnknown.js +25 -30
  418. package/dist/domain/runtimeCharacterization.js +15 -16
  419. package/dist/domain/runtimeIdentification.js +48 -47
  420. package/dist/domain/sourceToBundleComparison.js +9 -85
  421. package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
  422. package/dist/domain/sourceToBundleSignals.js +4 -15
  423. package/dist/domain/staticRuntimeCorrelation.js +37 -49
  424. package/dist/domain/symbolAnalysis.js +10 -19
  425. package/dist/domain/unicodeCodePointOrder.js +12 -0
  426. package/dist/domain/webBundleAnalysis.js +70 -99
  427. package/dist/domain/webBundleAnalyzer.js +2 -4
  428. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  429. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  430. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  431. package/dist/domain/webCaptureDiff.js +33 -73
  432. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  433. package/dist/domain/webContentArtifact.js +1 -10
  434. package/dist/domain/webMcpDiscovery.js +3 -14
  435. package/dist/domain/webScreenshot.js +58 -34
  436. package/dist/domain/zipPackageFormat.js +7 -0
  437. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  438. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  439. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  440. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  441. package/dist/dotnet/ManagedMemberRows.js +16 -16
  442. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  443. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  444. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  445. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  446. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  447. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  448. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
  449. package/dist/dotnet/ManagedPeReader.js +2 -2
  450. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  451. package/dist/generatedMcpToolCatalog.js +1 -1
  452. package/dist/generatedPackageMetadata.js +1 -1
  453. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  454. package/dist/ghidra/GhidraClient.js +4 -12
  455. package/dist/ghidra/GhidraClientWire.js +9 -5
  456. package/dist/ghidra/GhidraDefaults.js +0 -18
  457. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  458. package/dist/ghidra/GhidraDoctor.js +16 -12
  459. package/dist/ghidra/GhidraFunctionValues.js +65 -108
  460. package/dist/ghidra/GhidraInstallation.js +98 -42
  461. package/dist/ghidra/GhidraInventoryValues.js +16 -85
  462. package/dist/ghidra/GhidraLauncher.js +0 -8
  463. package/dist/ghidra/GhidraProvider.js +15 -22
  464. package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
  465. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  466. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  467. package/dist/ghidra/GhidraSessionValues.js +0 -2
  468. package/dist/ghidra/GhidraTransport.js +4 -7
  469. package/dist/ghidra/protocol.js +2 -2
  470. package/dist/hopper/BridgeLauncher.js +112 -36
  471. package/dist/hopper/HopperAnalysisProfile.js +1 -1
  472. package/dist/hopper/HopperCleanup.js +6 -3
  473. package/dist/hopper/HopperClient.js +4 -7
  474. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  475. package/dist/hopper/HopperProvider.js +0 -16
  476. package/dist/hopper/HopperRequestQueue.js +21 -40
  477. package/dist/hopper/HopperResponseStream.js +1 -9
  478. package/dist/hopper/HopperSessionValues.js +3 -2
  479. package/dist/hopper/HopperTargetLease.js +119 -0
  480. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  481. package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
  482. package/dist/hopper/protocol.js +6 -4
  483. package/dist/main/reload.js +0 -3
  484. package/dist/main/shutdown.js +1 -1
  485. package/dist/main/state.js +0 -9
  486. package/dist/main/transport.js +0 -5
  487. package/dist/mcpDoctor.js +25 -45
  488. package/dist/native/CommandRunner.js +18 -25
  489. package/dist/native/NativeMacOSProvider.js +13 -38
  490. package/dist/native/NativeMachoInspection.js +1 -1
  491. package/dist/process/BoundedFileBytes.js +17 -0
  492. package/dist/process/ExecFileOutput.js +11 -0
  493. package/dist/process/PendingOperations.js +8 -6
  494. package/dist/process/ProcessOwnership.js +3 -2
  495. package/dist/process/ProcessOwnershipObservation.js +0 -1
  496. package/dist/process/ProviderProcess.js +7 -28
  497. package/dist/reference/ReferenceSourceReader.js +8 -24
  498. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  499. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  500. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  501. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  502. package/dist/replay/JavaScriptReplayWorker.js +3 -5
  503. package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
  504. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  505. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  506. package/dist/replay/ReplayOutcome.js +1 -3
  507. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  508. package/dist/replay/ReplaySeccompFile.js +29 -0
  509. package/dist/replay/ReplayWorkerProtocol.js +0 -2
  510. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  511. package/dist/server/ProcessCaptureElicitation.js +4 -8
  512. package/dist/server/createServer.js +6 -44
  513. package/dist/server/promptCompletion.js +37 -61
  514. package/dist/server/recordDerivedEvidence.js +1 -1
  515. package/dist/server/registerApplicationTools/characterization.js +4 -8
  516. package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
  517. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
  518. package/dist/server/registerApplicationTools/compareVersions.js +5 -10
  519. package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
  520. package/dist/server/registerApplicationTools/coverage.js +6 -71
  521. package/dist/server/registerApplicationTools/helpers.js +1 -13
  522. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  523. package/dist/server/registerApplicationTools/traceFeature.js +5 -9
  524. package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
  525. package/dist/server/registerApplicationTools.js +0 -2
  526. package/dist/server/registerArtifactComparisonTool.js +23 -27
  527. package/dist/server/registerBrowserScenarioTool.js +4 -4
  528. package/dist/server/registerBrowserTools.js +5 -8
  529. package/dist/server/registerBundleComparisonTool.js +5 -7
  530. package/dist/server/registerCloseLifecycleTool.js +2 -16
  531. package/dist/server/registerElectronTools.js +10 -29
  532. package/dist/server/registerEnhancedTools.js +10 -11
  533. package/dist/server/registerEvidenceTools.js +15 -22
  534. package/dist/server/registerFunctionComparisonTool.js +30 -25
  535. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  536. package/dist/server/registerInvestigationTools.js +20 -116
  537. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
  538. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
  539. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  540. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
  541. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
  542. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
  543. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
  544. package/dist/server/registerOfficialTools.js +1 -43
  545. package/dist/server/registerProcessComparisonTool.js +33 -23
  546. package/dist/server/registerPrompts.js +19 -17
  547. package/dist/server/registerSessionRecordTools.js +10 -156
  548. package/dist/server/registerSessionStatusTool.js +6 -69
  549. package/dist/server/registerSessionTools.js +10 -51
  550. package/dist/server/sessionAvailabilityPolicy.js +0 -2
  551. package/dist/server/sessionEvidence.js +9 -15
  552. package/dist/server/sessionToolPolicies.js +0 -8
  553. package/dist/server/toolResult.js +14 -50
  554. package/dist/serverIdentity.js +0 -20
  555. package/install.sh +1 -1
  556. package/package.json +11 -7
  557. package/scripts/electron-active-hook.cjs +23 -55
  558. package/scripts/hopper-demo-x11.py +13 -32
  559. package/skills/reverse-engineer-anything/SKILL.md +47 -12
  560. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  561. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  562. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  563. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
  564. package/dist/application/BoundedJsonFiles.js +0 -86
  565. package/dist/application/CrossVersionInventory.js +0 -129
  566. package/dist/application/CrossVersionInvestigation.js +0 -301
  567. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  568. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  569. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  570. package/dist/application/DeferredFileAuthorization.js +0 -61
  571. package/dist/application/DoctorProjection.js +0 -43
  572. package/dist/application/EnhancedToolPagination.js +0 -22
  573. package/dist/application/EvidenceReferenceResolver.js +0 -26
  574. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  575. package/dist/application/ProcessPairedExperiment.js +0 -72
  576. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  577. package/dist/application/ReconstructionReadinessService.js +0 -48
  578. package/dist/cliInvestigationCommands.js +0 -173
  579. package/dist/domain/boundedCartesianProjection.js +0 -15
  580. package/dist/domain/investigationWorkspace.js +0 -347
  581. package/dist/domain/jsonLimits.js +0 -26
  582. package/dist/domain/knownPageCoverage.js +0 -29
  583. package/dist/domain/processPairedExperiment.js +0 -128
  584. package/dist/server/javascriptApplicationResult.js +0 -106
  585. package/dist/server/permissionFailure.js +0 -12
  586. package/dist/server/registerApplicationTools/readiness.js +0 -50
  587. package/dist/server/registerEvidenceResources.js +0 -315
  588. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  589. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  590. package/dist/server/registerReconstructionReadinessResource.js +0 -32
@@ -1,76 +1,74 @@
1
+ import { createHash } from "node:crypto";
2
+ import canonicalize from "canonicalize";
1
3
  import { createEvidence } from "../domain/evidence.js";
2
4
  import { jsonValueSchema } from "../domain/jsonValue.js";
3
5
  const inventory = (digit) => {
4
6
  const sha = digit.repeat(64);
5
- const artifactId = `art_${sha}`;
6
- const occurrenceId = `occ_${sha}`;
7
+ const artifactId = `art_${digestCanonical({ sha256: sha })}`;
8
+ const occurrenceId = `occ_${digestCanonical({ root: artifactId })}`;
9
+ const nodes = [
10
+ {
11
+ artifact_id: artifactId,
12
+ kind: "resource",
13
+ format: "file",
14
+ sha256: sha,
15
+ size: 1,
16
+ media_type: null,
17
+ architecture: null,
18
+ executable: false,
19
+ content_state: "materialized",
20
+ limitations: [],
21
+ },
22
+ ];
23
+ const occurrences = [
24
+ {
25
+ occurrence_id: occurrenceId,
26
+ artifact_id: artifactId,
27
+ parent_occurrence_id: null,
28
+ logical_path: ".",
29
+ entry_kind: "file",
30
+ declared_size: 1,
31
+ compressed_size: null,
32
+ executable: false,
33
+ encrypted: false,
34
+ hash_status: "verified",
35
+ source_location: null,
36
+ limitations: [],
37
+ },
38
+ ];
39
+ const graphSha256 = digestCanonical({
40
+ nodes,
41
+ occurrences,
42
+ edges: [],
43
+ integrity_contradictions: [],
44
+ });
7
45
  return jsonValueSchema.parse({
8
46
  manifest: {
9
- schema_version: 1,
10
- manifest_id: `agm_${sha}`,
47
+ manifest_id: `agm_${digestCanonical({
48
+ root_artifact_id: artifactId,
49
+ graph_sha256: graphSha256,
50
+ })}`,
11
51
  root_artifact_id: artifactId,
12
52
  root_sha256: sha,
13
53
  root_format: "file",
14
- graph_sha256: sha,
15
- node_count: 1,
16
- occurrence_count: 1,
54
+ graph_sha256: graphSha256,
55
+ node_count: nodes.length,
56
+ occurrence_count: occurrences.length,
17
57
  edge_count: 0,
18
58
  },
19
- nodes: {
20
- items: [
21
- {
22
- artifact_id: artifactId,
23
- kind: "resource",
24
- format: "file",
25
- sha256: sha,
26
- size: 1,
27
- media_type: null,
28
- architecture: null,
29
- executable: false,
30
- content_state: "materialized",
31
- limitations: [],
32
- },
33
- ],
34
- offset: 0,
35
- limit: 100,
36
- total: 1,
37
- next_offset: null,
38
- },
39
- occurrences: {
40
- items: [
41
- {
42
- occurrence_id: occurrenceId,
43
- artifact_id: artifactId,
44
- parent_occurrence_id: null,
45
- logical_path: ".",
46
- entry_kind: "file",
47
- declared_size: 1,
48
- compressed_size: null,
49
- executable: false,
50
- encrypted: false,
51
- hash_status: "verified",
52
- source_location: null,
53
- limitations: [],
54
- },
55
- ],
56
- offset: 0,
57
- limit: 100,
58
- total: 1,
59
- next_offset: null,
60
- },
61
- edges: { items: [], offset: 0, limit: 100, total: 0, next_offset: null },
62
- limits: {
63
- max_entries: 100,
64
- max_total_bytes: 1024,
65
- max_entry_bytes: 1024,
66
- max_compression_ratio: 10,
67
- max_depth: 10,
68
- max_path_bytes: 256,
69
- },
59
+ nodes,
60
+ occurrences,
61
+ edges: [],
70
62
  provenance: [],
71
63
  limitations: [],
72
64
  });
73
65
  };
66
+ const digestCanonical = (value) => {
67
+ const encoded = canonicalize(value);
68
+ if (encoded === undefined)
69
+ throw new TypeError("Artifact example is not canonical JSON");
70
+ return createHash("sha256").update(encoded).digest("hex");
71
+ };
74
72
  const provider = {
75
73
  id: "rea-artifact",
76
74
  name: "REA artifact graph",
@@ -78,14 +76,14 @@ const provider = {
78
76
  };
79
77
  /** Canonical complete inputs used to advertise artifact comparison. */
80
78
  export const ARTIFACT_COMPARISON_EXAMPLE = {
81
- left: createEvidence(undefined, provider, {
79
+ left: createEvidence({ path: "fixture-left", sha256: "0".repeat(64), format: "file" }, provider, {
82
80
  operation: "inventory_artifact",
83
81
  parameters: {},
84
82
  result: inventory("0"),
85
83
  confidence: "observed",
86
84
  authority: "shipped-artifact",
87
85
  }),
88
- right: createEvidence(undefined, provider, {
86
+ right: createEvidence({ path: "fixture-right", sha256: "1".repeat(64), format: "file" }, provider, {
89
87
  operation: "inventory_artifact",
90
88
  parameters: {},
91
89
  result: inventory("1"),
@@ -1,93 +1,37 @@
1
- import { isAbsolute } from "node:path";
2
1
  import { z } from "zod";
3
2
  import { artifactOutputSchemas } from "./toolOutputSchemas.js";
4
3
  import { jsonValueSchema } from "../domain/jsonValue.js";
5
4
  import { toolContractMetadata } from "./toolEffects.js";
6
5
  import { requireOutputSchema } from "./toolOutputSchemaPrimitives.js";
7
- import { artifactInspectionLimitsSchema } from "../domain/artifactInspection.js";
8
- const pageInput = {
9
- node_offset: z.number().int().min(0).default(0),
10
- node_limit: z.number().int().min(1).max(500).default(100),
11
- occurrence_offset: z.number().int().min(0).default(0),
12
- occurrence_limit: z.number().int().min(1).max(500).default(100),
13
- edge_offset: z.number().int().min(0).default(0),
14
- edge_limit: z.number().int().min(1).max(500).default(100),
15
- };
16
- const traversalLimitsInput = {
17
- max_entries: z.number().int().min(1).max(1_000_000).default(10_000),
18
- max_total_bytes: z
19
- .number()
20
- .int()
21
- .min(1)
22
- .max(Number.MAX_SAFE_INTEGER)
23
- .default(1_073_741_824),
24
- max_entry_bytes: z
25
- .number()
26
- .int()
27
- .min(1)
28
- .max(Number.MAX_SAFE_INTEGER)
29
- .default(268_435_456),
30
- max_compression_ratio: z.number().min(1).max(100_000).default(1_000),
31
- max_depth: z.number().int().min(0).max(100).default(20),
32
- max_path_bytes: z.number().int().min(1).max(65_535).default(4_096),
33
- };
34
6
  const integrityInput = {
35
7
  fail: {
36
8
  integrity_policy: z.literal("fail").default("fail"),
37
9
  integrity_continue_approved: z.literal(false).default(false),
38
- max_integrity_mismatches: z.number().int().min(1).max(100).default(10),
39
10
  },
40
11
  continue: {
41
12
  integrity_policy: z.literal("record-and-continue"),
42
13
  integrity_continue_approved: z.literal(true),
43
- max_integrity_mismatches: z.number().int().min(1).max(100).default(10),
44
14
  },
45
15
  };
46
16
  const artifactInventoryFacts = {
47
17
  native_mount_approved: z.boolean().default(false),
48
- ...pageInput,
49
- ...traversalLimitsInput,
50
18
  };
51
19
  /** Exact caller boundary for deterministic artifact inventory. */
52
20
  export const artifactInventoryInputSchema = z.union([
53
21
  z.object({ ...artifactInventoryFacts, ...integrityInput.fail }),
54
22
  z.object({ ...artifactInventoryFacts, ...integrityInput.continue }),
55
23
  ]);
56
- /** Exact caller boundary for approved artifact extraction. */
57
- export const artifactExtractionInputSchema = z.object({
58
- approved: z.literal(true),
59
- output_root: z
60
- .string()
61
- .min(1)
62
- .max(4_096)
63
- .refine(isAbsolute, "Extraction output root must be absolute"),
64
- occurrence_ids: z
65
- .array(z.string().regex(/^occ_[a-f0-9]{64}$/u))
66
- .min(1)
67
- .max(500),
68
- offset: z.number().int().min(0).default(0),
69
- limit: z.number().int().min(1).max(500).default(100),
70
- ...traversalLimitsInput,
24
+ /** Extraction needs no selector: it materializes every regular child file. */
25
+ export const artifactExtractionInputSchema = z.strictObject({});
26
+ /** Provider input after the local permission boundary chooses its destination. */
27
+ export const artifactExtractionExecutionSchema = z.strictObject({
28
+ output_root: z.string().min(1),
71
29
  });
72
- /** Bounded provider-neutral inspection using one atomic inventory substep. */
73
- const artifactInspectionFacts = {
74
- native_mount_approved: z.boolean().default(false),
75
- ...artifactInspectionLimitsSchema.shape,
76
- ...traversalLimitsInput,
77
- };
78
- export const artifactInspectionInputSchema = z.union([
79
- z.object({ ...artifactInspectionFacts, ...integrityInput.fail }),
80
- z.object({ ...artifactInspectionFacts, ...integrityInput.continue }),
81
- ]);
82
30
  const exampleInputSchema = z.record(z.string(), jsonValueSchema);
83
31
  const examples = {
84
- inventory_artifact: {},
85
32
  inspect_artifact: {},
86
- extract_artifact: {
87
- approved: true,
88
- output_root: "/tmp/rea-extracted",
89
- occurrence_ids: [`occ_${"0".repeat(64)}`],
90
- },
33
+ extract_artifact: {},
34
+ decode_interface_builder: {},
91
35
  };
92
36
  const artifact = (name, description, inputSchema) => {
93
37
  const outputSchema = requireOutputSchema(artifactOutputSchemas, name);
@@ -106,9 +50,18 @@ const artifact = (name, description, inputSchema) => {
106
50
  ],
107
51
  };
108
52
  };
109
- /** Artifact-graph inventory and explicitly approved safe extraction contracts. */
53
+ /** Artifact-graph inventory and safe extraction contracts. */
110
54
  export const ARTIFACT_TOOL_CONTRACTS = [
111
- artifact("inventory_artifact", "After open_binary binds a local archive, application package, or other artifact—or when one is already active—inventory it as a deterministic, content-addressed artifact graph. This tool accepts no path; in a target-free session open the target first. Returns bounded node and edge pages without extracting or mounting by default.", artifactInventoryInputSchema),
112
- artifact("inspect_artifact", "After open_binary binds a local archive, application package, or other artifact—or when one is already active—inspect it through one bounded, cancellable inventory substep. This tool accepts no path; in a target-free session open the target first. Returns the full substep Evidence and its ID, observations, derived relationships, hypotheses, contradictions, unexplored branches, limitations, and format-specific next probes. Any substep failure fails the whole call.", artifactInspectionInputSchema),
113
- artifact("extract_artifact", "Extract selected graph artifacts beneath an explicit output root. Requires approval, rejects traversal and symlink escapes, never overwrites, enforces bomb limits, and verifies cleanup.", artifactExtractionInputSchema),
55
+ artifact("inspect_artifact", "Inspect an active archive or application package in one call. Returns the complete content-addressed artifact graph, source Evidence, observations, relationships, integrity contradictions, hypotheses, unexplored branches, limitations, and next probes inline. It does not extract files; use extract_artifact to materialize its regular contents.", artifactInventoryInputSchema),
56
+ artifact("extract_artifact", "Extract all regular files from the active archive or application package into a fresh temporary directory chosen by REA. The result includes its location. Rejects traversal and symlink escapes, never overwrites, enforces archive integrity checks, and verifies cleanup.", artifactExtractionInputSchema),
57
+ artifact("decode_interface_builder", "Decode compiled storyboard and nib archives inside the active Apple app bundle, including keyed property lists and NIBArchive object tables, into a bounded object, hierarchy, and connection graph. This is static archive parsing; unrecognized archive classes and unresolved code handlers remain explicit unknowns.", z.strictObject({
58
+ max_documents: z.number().int().min(1).max(64).default(64),
59
+ max_objects: z.number().int().min(1).max(20_000).default(20_000),
60
+ max_connections: z.number().int().min(1).max(40_000).default(40_000),
61
+ })),
62
+ ];
63
+ /** Provider operations; inventory remains an internal primitive of inspection. */
64
+ export const ARTIFACT_ANALYSIS_OPERATIONS = [
65
+ "inventory_artifact",
66
+ ...ARTIFACT_TOOL_CONTRACTS.map(({ name }) => name),
114
67
  ];
@@ -1,9 +1,8 @@
1
1
  import { toolContractMetadata } from "./toolEffects.js";
2
2
  import { evidenceResultOf } from "./toolOutputSchemas.js";
3
- import { browserScenarioSchema } from "../domain/browserScenario.js";
3
+ import { browserScenarioInputSchema } from "../domain/browserScenario.js";
4
4
  import { browserScenarioCaptureSchema } from "../domain/browserScenarioCapture.js";
5
5
  const example = {
6
- schema_version: 1,
7
6
  browser: {
8
7
  mode: "launch",
9
8
  executable_path: "/opt/chromium/chrome",
@@ -13,66 +12,22 @@ const example = {
13
12
  },
14
13
  start_url: { url: "https://app.example.test/", query: [] },
15
14
  allowed_origins: ["https://app.example.test"],
16
- environment: {
17
- viewport: { width: 1_280, height: 720, device_scale_factor: 1 },
18
- locale: "en-US",
19
- timezone: "UTC",
20
- color_scheme: "light",
21
- reduced_motion: "reduce",
22
- service_workers: "block",
23
- },
24
15
  actions: [
25
16
  {
26
- step_id: "ready",
27
- action: "wait_for",
28
- locator: { kind: "test_id", value: "application-ready" },
29
- state: "visible",
17
+ step_id: "settle",
18
+ action: "wait_for_timeout",
19
+ duration_ms: 250,
30
20
  },
31
21
  ],
32
- storage: { cookies: [], local_storage: [], session_storage: [] },
33
- request_replay: { mode: "disabled" },
34
- secrets: [],
35
- redaction: {
36
- secret_values: "replace-with-secret-reference",
37
- query_parameter_names: [],
38
- header_names: [
39
- "authorization",
40
- "cookie",
41
- "proxy-authorization",
42
- "set-cookie",
43
- ],
44
- },
45
- capture: {
46
- after_each_step: ["screenshot", "url", "accessibility"],
47
- at_end: ["dom", "history", "storage"],
48
- events: ["console", "page-errors", "network", "websockets"],
49
- },
50
- limits: {
51
- max_duration_ms: 60_000,
52
- action_timeout_ms: 5_000,
53
- navigation_timeout_ms: 10_000,
54
- max_events: 2_000,
55
- max_frames: 100,
56
- max_workers: 20,
57
- max_popups: 10,
58
- max_websockets: 100,
59
- max_dom_nodes: 10_000,
60
- max_accessibility_nodes: 10_000,
61
- max_screenshots: 16,
62
- max_screenshot_bytes: 4_194_304,
63
- max_storage_entries: 256,
64
- max_total_metadata_bytes: 4_194_304,
65
- },
66
- approved: true,
67
22
  };
68
23
  /** Controlled browser scenario contract shared by MCP and catalog generation. */
69
24
  export const BROWSER_SCENARIO_TOOL_CONTRACTS = [
70
25
  {
71
26
  name: "capture_browser_scenario",
72
27
  ...toolContractMetadata("capture_browser_scenario"),
73
- description: "Run one approved, bounded browser scenario through Playwright. Launch mode owns and terminates a temporary browser profile; connect mode attaches to one exact loopback CDP target and disconnects without terminating the external browser. Only the fixed action vocabulary is accepted. Navigation, storage, requests, redirects, secrets, redaction, captures, and limits must be declared before execution. Returns step-indexed Evidence with screenshots, DOM, accessibility, URL/history/storage state, runtime events, explicit missing/truncated sections, and equality eligibility.",
28
+ description: "Run a controlled browser scenario when passive observation cannot exercise the application. Launch an approved executable or connect to an approved loopback CDP target, declare the allowed origins, and provide actions. Environment, empty storage, disabled request replay, redaction, and a URL-only final capture are defaults; provide secrets, initial storage, request replay, or additional artifacts when needed. Actions run until completion or cancellation unless timeout_ms is set. Results are returned inline.",
74
29
  kind: "browser-provider",
75
- inputSchema: browserScenarioSchema,
30
+ inputSchema: browserScenarioInputSchema,
76
31
  outputSchema: evidenceResultOf(browserScenarioCaptureSchema),
77
32
  examples: [
78
33
  { title: "Capture a deterministic browser scenario", input: example },
@@ -38,7 +38,6 @@ const scenarioArtifacts = {
38
38
  storage: { state: "not_requested" },
39
39
  };
40
40
  const exampleScenarioCapture = () => ({
41
- schema_version: 1,
42
41
  browser: {
43
42
  mode: "connect",
44
43
  process_ownership: "external",
@@ -92,7 +91,7 @@ export const BROWSER_TOOL_CONTRACTS = [
92
91
  {
93
92
  name: "list_browser_targets",
94
93
  ...toolContractMetadata("list_browser_targets"),
95
- description: "List bounded page targets from an approved user-owned loopback Chrome DevTools Protocol endpoint. Only targets whose current URL matches an approved exact origin are returned; URL credentials, query values, and fragments are redacted.",
94
+ description: "List every page target from an approved user-owned loopback Chrome DevTools Protocol endpoint whose current URL matches an approved exact origin. URL credentials, query values, and fragments are redacted.",
96
95
  kind: "browser-provider",
97
96
  inputSchema: listBrowserTargetsInputSchema,
98
97
  outputSchema: listOutputSchema,
@@ -102,9 +101,6 @@ export const BROWSER_TOOL_CONTRACTS = [
102
101
  input: {
103
102
  cdp_endpoint: endpoint,
104
103
  allowed_origins: [origin],
105
- approved: true,
106
- offset: 0,
107
- limit: 100,
108
104
  },
109
105
  },
110
106
  ],
@@ -112,7 +108,7 @@ export const BROWSER_TOOL_CONTRACTS = [
112
108
  {
113
109
  name: "inspect_web_page",
114
110
  ...toolContractMetadata("inspect_web_page"),
115
- description: "Passively inspect one approved page target through CDP without evaluating JavaScript, navigating, clicking, closing, or mutating the page. Returns bounded DOM structure, accessibility, scripts, resources, attach-window network and console metadata, workers, and redacted storage inventory as Evidence v2.",
111
+ description: "Passively inspect one approved page target through CDP without evaluating JavaScript, navigating, clicking, closing, or mutating the page. Returns DOM structure, accessibility, scripts, resources, attach-window network and console metadata, workers, and redacted storage inventory as Evidence.",
116
112
  kind: "browser-provider",
117
113
  inputSchema: inspectWebPageInputSchema,
118
114
  outputSchema: inspectionOutputSchema,
@@ -122,43 +118,7 @@ export const BROWSER_TOOL_CONTRACTS = [
122
118
  input: {
123
119
  cdp_endpoint: endpoint,
124
120
  allowed_origins: [origin],
125
- approved: true,
126
121
  target_id: "TARGET_ID_FROM_LIST_BROWSER_TARGETS",
127
- observation_ms: 500,
128
- include_accessibility_text: false,
129
- include_console_text: false,
130
- console_text_approved: false,
131
- include_json_body_shapes: false,
132
- json_body_schema_approved: false,
133
- include_websocket_shapes: false,
134
- websocket_shape_approved: false,
135
- include_script_sources: false,
136
- include_storage_keys: false,
137
- include_storage_fingerprints: false,
138
- limits: {
139
- max_frames: 200,
140
- max_dom_nodes: 2_000,
141
- max_ax_nodes: 2_000,
142
- max_ax_text_field_bytes: 1_024,
143
- max_total_ax_text_bytes: 65_536,
144
- max_scripts: 200,
145
- max_resources: 2_000,
146
- max_workers: 500,
147
- max_storage_keys: 1_000,
148
- max_script_source_bytes: 1_048_576,
149
- max_total_script_source_bytes: 4_194_304,
150
- max_network_events: 1_000,
151
- max_console_events: 200,
152
- max_console_text_field_bytes: 1_024,
153
- max_total_console_text_bytes: 65_536,
154
- max_json_body_bytes: 1_048_576,
155
- max_total_json_body_bytes: 4_194_304,
156
- max_json_shape_nodes: 5_000,
157
- max_json_shape_depth: 20,
158
- max_websocket_events: 500,
159
- max_websocket_shape_bytes: 65_536,
160
- max_total_websocket_shape_bytes: 1_048_576,
161
- },
162
122
  },
163
123
  },
164
124
  ],
@@ -166,7 +126,7 @@ export const BROWSER_TOOL_CONTRACTS = [
166
126
  {
167
127
  name: "analyze_web_bundle",
168
128
  ...toolContractMetadata("analyze_web_bundle"),
169
- description: "Capture explicitly approved JavaScript source from one approved CDP page and statically derive a bounded chunk graph, route and endpoint candidates, vendor fingerprints, page-declared WebMCP metadata, and optional separately approved source-map evidence. JavaScript is parsed but never executed.",
129
+ description: "Capture JavaScript source from one configured CDP page and statically derive a chunk graph, route and endpoint candidates, vendor fingerprints, page-declared WebMCP metadata, and optionally fetch source maps from allowed origins. JavaScript is parsed but never executed.",
170
130
  kind: "browser-provider",
171
131
  inputSchema: analyzeWebBundleInputSchema,
172
132
  outputSchema: bundleOutputSchema,
@@ -176,24 +136,12 @@ export const BROWSER_TOOL_CONTRACTS = [
176
136
  input: {
177
137
  cdp_endpoint: endpoint,
178
138
  allowed_origins: [origin],
179
- approved: true,
180
139
  target_id: "TARGET_ID_FROM_LIST_BROWSER_TARGETS",
181
140
  observation_ms: 500,
182
141
  include_accessibility_text: false,
183
142
  include_script_sources: true,
184
143
  include_storage_keys: false,
185
- source_capture_approved: true,
186
144
  fetch_source_maps: false,
187
- source_map_fetch_approved: false,
188
- analysis_limits: {
189
- max_findings: 1_000,
190
- max_ast_nodes: 250_000,
191
- max_source_maps: 100,
192
- max_source_map_bytes: 4_194_304,
193
- max_total_source_map_bytes: 16_777_216,
194
- max_source_map_mappings: 10_000,
195
- max_original_sources: 2_000,
196
- },
197
145
  },
198
146
  },
199
147
  ],
@@ -201,7 +149,7 @@ export const BROWSER_TOOL_CONTRACTS = [
201
149
  {
202
150
  name: "observe_web_session",
203
151
  ...toolContractMetadata("observe_web_session"),
204
- description: "Arm a bounded CDP observation window while the user operates the page. Allows approved same-origin reload and SPA navigation, records ordered navigation, redirect, lifecycle, and failure metadata, and stops before retaining an out-of-policy destination.",
152
+ description: "Arm a CDP observation window of the requested duration while the user operates the page. Allows approved same-origin reload and SPA navigation, records every observed navigation, redirect, lifecycle, and failure event, and stops before retaining an out-of-policy destination.",
205
153
  kind: "browser-provider",
206
154
  inputSchema: observeWebSessionInputSchema,
207
155
  outputSchema: observationSessionOutputSchema,
@@ -212,9 +160,7 @@ export const BROWSER_TOOL_CONTRACTS = [
212
160
  cdp_endpoint: endpoint,
213
161
  allowed_origins: [origin],
214
162
  target_id: "TARGET_ID_FROM_LIST_BROWSER_TARGETS",
215
- approved: true,
216
163
  observation_ms: 10_000,
217
- max_timeline_events: 2_000,
218
164
  },
219
165
  },
220
166
  ],
@@ -222,7 +168,7 @@ export const BROWSER_TOOL_CONTRACTS = [
222
168
  {
223
169
  name: "discover_webmcp_tools",
224
170
  ...toolContractMetadata("discover_webmcp_tools"),
225
- description: "Passively inventory page-registered WebMCP tools using the experimental CDP WebMCP domain. Metadata is bounded and page-declared-untrusted; REA never registers or invokes discovered tools.",
171
+ description: "Passively inventory every page-registered WebMCP tool and its complete structural input-schema summary using the experimental CDP WebMCP domain. Metadata is page-declared-untrusted; REA never registers or invokes discovered tools.",
226
172
  kind: "browser-provider",
227
173
  inputSchema: discoverWebMcpToolsInputSchema,
228
174
  outputSchema: webMcpOutputSchema,
@@ -233,12 +179,7 @@ export const BROWSER_TOOL_CONTRACTS = [
233
179
  cdp_endpoint: endpoint,
234
180
  allowed_origins: [origin],
235
181
  target_id: "TARGET_ID_FROM_LIST_BROWSER_TARGETS",
236
- approved: true,
237
182
  observation_ms: 100,
238
- max_tools: 500,
239
- max_schema_bytes: 262_144,
240
- max_schema_nodes: 5_000,
241
- max_schema_depth: 20,
242
183
  },
243
184
  },
244
185
  ],
@@ -246,7 +187,7 @@ export const BROWSER_TOOL_CONTRACTS = [
246
187
  {
247
188
  name: "compare_web_captures",
248
189
  ...toolContractMetadata("compare_web_captures"),
249
- description: "Compare either passive web captures or step-indexed browser scenarios. Scenario comparison aligns exact step IDs, records deterministic literal normalization, and exposes bounded artifact-level changes plus alignment failures. Missing or truncated evidence never proves equality.",
190
+ description: "Compare passive web captures by providing before and after, or compare recorded scenarios by providing before_scenario and after_scenario with an optional normalization policy. Use exactly one input group. Scenario comparison aligns exact step IDs, records deterministic literal normalization, and returns every artifact-level difference plus alignment failures inline. Missing or truncated evidence never proves equality.",
250
191
  kind: "browser-provider",
251
192
  inputSchema: browserCaptureComparisonInputSchema,
252
193
  outputSchema: captureDiffOutputSchema,
@@ -266,7 +207,6 @@ export const BROWSER_TOOL_CONTRACTS = [
266
207
  },
267
208
  ],
268
209
  },
269
- max_changes: 2_000,
270
210
  },
271
211
  },
272
212
  ],
@@ -274,7 +214,7 @@ export const BROWSER_TOOL_CONTRACTS = [
274
214
  {
275
215
  name: "capture_web_screenshot",
276
216
  ...toolContractMetadata("capture_web_screenshot"),
277
- description: "Capture the current visible viewport of one approved page as a bounded, content-addressed PNG artifact. Screenshot capture requires separate explicit approval and never scrolls, navigates, or evaluates page JavaScript.",
217
+ description: "Capture the current visible viewport of one configured page as an inline, content-addressed PNG artifact. The operation never scrolls, navigates, or evaluates page JavaScript.",
278
218
  kind: "browser-provider",
279
219
  inputSchema: captureWebScreenshotInputSchema,
280
220
  outputSchema: screenshotOutputSchema,
@@ -285,9 +225,6 @@ export const BROWSER_TOOL_CONTRACTS = [
285
225
  cdp_endpoint: endpoint,
286
226
  allowed_origins: [origin],
287
227
  target_id: "TARGET_ID_FROM_LIST_BROWSER_TARGETS",
288
- approved: true,
289
- screenshot_approved: true,
290
- maximum_image_bytes: 4_194_304,
291
228
  },
292
229
  },
293
230
  ],
@@ -295,7 +232,7 @@ export const BROWSER_TOOL_CONTRACTS = [
295
232
  {
296
233
  name: "compare_web_screenshots",
297
234
  ...toolContractMetadata("compare_web_screenshots"),
298
- description: "Compare two self-verifying PNG screenshot artifacts with bounded local pixel metrics. Returns exact changed-pixel ratios and channel deltas without OCR or external services.",
235
+ description: "Compare two self-verifying PNG screenshot artifacts with local pixel metrics. Returns exact changed-pixel ratios and channel deltas without OCR or external services.",
299
236
  kind: "browser-provider",
300
237
  inputSchema: compareWebScreenshotsInputSchema,
301
238
  outputSchema: screenshotDiffOutputSchema,
@@ -306,7 +243,6 @@ export const BROWSER_TOOL_CONTRACTS = [
306
243
  before: exampleScreenshot(),
307
244
  after: exampleScreenshot(),
308
245
  channel_threshold: 0,
309
- maximum_pixels: 16_000_000,
310
246
  },
311
247
  },
312
248
  ],
@@ -314,7 +250,6 @@ export const BROWSER_TOOL_CONTRACTS = [
314
250
  ];
315
251
  function exampleScreenshot() {
316
252
  return {
317
- uri: "rea://web-screenshot/sha256/153cf6c9a526a63053a37b10234c2fd85df38887c2dc0a800d90abfa6631d01c",
318
253
  sha256: "153cf6c9a526a63053a37b10234c2fd85df38887c2dc0a800d90abfa6631d01c",
319
254
  bytes: 70,
320
255
  media_type: "image/png",