rea-agents 3.0.0 → 3.2.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 (628) hide show
  1. package/README.md +83 -108
  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/AnalysisContextQueries.js +21 -9
  6. package/dist/application/AnalysisSnapshotCache.js +0 -1
  7. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  8. package/dist/application/AndroidApplicationService.js +1 -1
  9. package/dist/application/AppleApplicationService.js +1 -1
  10. package/dist/application/ArtifactExtraction.js +35 -54
  11. package/dist/application/ArtifactExtractionDestination.js +17 -0
  12. package/dist/application/ArtifactGraphConstruction.js +2 -17
  13. package/dist/application/ArtifactInventory/classify.js +2 -6
  14. package/dist/application/ArtifactInventory/hash.js +2 -20
  15. package/dist/application/ArtifactInventory/policy.js +17 -0
  16. package/dist/application/ArtifactInventory/reader.js +1 -4
  17. package/dist/application/ArtifactInventory/scanCanonical.js +8 -15
  18. package/dist/application/ArtifactInventory/scanReader.js +76 -58
  19. package/dist/application/ArtifactInventory/types.js +1 -5
  20. package/dist/application/ArtifactInventory.js +6 -14
  21. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  22. package/dist/application/BinarySession.js +54 -28
  23. package/dist/application/BinarySessionComposition.js +0 -11
  24. package/dist/application/BinarySessionOpen.js +2 -1
  25. package/dist/application/BinarySessionRecords.js +24 -86
  26. package/dist/application/BinarySessionStatus.js +16 -21
  27. package/dist/application/BinaryTargetResolver.js +216 -0
  28. package/dist/application/BrowserEvidence.js +39 -57
  29. package/dist/application/BrowserObservationService.js +3 -6
  30. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  31. package/dist/application/BrowserScenarioEvidence.js +3 -3
  32. package/dist/application/CallPathTracing.js +2 -36
  33. package/dist/application/CapabilityClientRequirements.js +26 -0
  34. package/dist/application/CapabilityInventory.js +143 -77
  35. package/dist/application/ClientConfigurationDocument.js +27 -0
  36. package/dist/application/ClientRegistrationStatus.js +16 -13
  37. package/dist/application/CommandShimReplay.js +14 -1
  38. package/dist/application/DirectAnalysis.js +22 -46
  39. package/dist/application/DirectAnalysisStatus.js +5 -61
  40. package/dist/application/Doctor.js +11 -32
  41. package/dist/application/DoctorDiagnostics.js +1 -2
  42. package/dist/application/DoctorScope.js +1 -1
  43. package/dist/application/ElectronActiveEvidence.js +50 -0
  44. package/dist/application/ElectronActiveObservationPort.js +1 -0
  45. package/dist/application/ElectronActiveObservationService.js +78 -0
  46. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  47. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  48. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  49. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  50. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  51. package/dist/application/ElectronEvidence.js +4 -7
  52. package/dist/application/ElectronObservationService.js +5 -9
  53. package/dist/application/EnhancedLiteralTracing.js +42 -65
  54. package/dist/application/EnhancedTools.js +98 -64
  55. package/dist/application/EvidenceBundleCommands.js +16 -12
  56. package/dist/application/EvidenceBundleFiles.js +9 -15
  57. package/dist/application/EvidenceLedger.js +14 -42
  58. package/dist/application/FilesystemSnapshot.js +2 -3
  59. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  60. package/dist/application/InventoryProjectionEvidence.js +4 -2
  61. package/dist/application/InvestigationProviders.js +1 -1
  62. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  63. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  64. package/dist/application/JavaScriptApplicationService.js +6 -29
  65. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  66. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  67. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  68. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  69. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  70. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  71. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  72. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  73. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  74. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  75. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  76. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  77. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  78. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  79. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  80. package/dist/application/JavaScriptJsonModules.js +2 -2
  81. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  82. package/dist/application/JavaScriptReplayPermission.js +1 -1
  83. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  84. package/dist/application/JavaScriptReplayService.js +29 -47
  85. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  86. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  87. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  88. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  89. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  90. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  91. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  92. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  93. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  94. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  95. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  96. package/dist/application/JsonFiles.js +79 -0
  97. package/dist/application/LinuxHopper.js +11 -9
  98. package/dist/application/LoopbackReplay.js +26 -23
  99. package/dist/application/LoopbackReplayRecorder.js +29 -1
  100. package/dist/application/ManagedApplicationGraphService.js +1 -2
  101. package/dist/application/ManagedMemberComparisonService.js +11 -41
  102. package/dist/application/ManagedNativeVerificationService.js +1 -2
  103. package/dist/application/ManagedReconstructionService.js +1 -1
  104. package/dist/application/ManagedRuntimeCorrelationService.js +14 -13
  105. package/dist/application/NativeApiInspection.js +2 -7
  106. package/dist/application/NativeUiActionTrace.js +394 -0
  107. package/dist/application/NodeRuntimeCharacterizationService.js +11 -16
  108. package/dist/application/PermissionAuthority.js +15 -7
  109. package/dist/application/PermissionFailure.js +5 -0
  110. package/dist/application/ProcessCaptureAuthority.js +5 -7
  111. package/dist/application/ProcessCaptureJournal.js +3 -2
  112. package/dist/application/ProcessCaptureLifecycle.js +10 -12
  113. package/dist/application/ProcessCheckpoints.js +29 -11
  114. package/dist/application/ProcessCli.js +8 -17
  115. package/dist/application/ProcessEvidence.js +5 -7
  116. package/dist/application/ProcessHarness.js +60 -20
  117. package/dist/application/ProcessNormalization.js +2 -1
  118. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  119. package/dist/application/ProcessReactiveEffects.js +9 -3
  120. package/dist/application/ProcessReactiveHarness.js +13 -7
  121. package/dist/application/ProcessSampling.js +2 -4
  122. package/dist/application/ProcessTimer.js +39 -0
  123. package/dist/application/ProjectPermissionStore.js +39 -95
  124. package/dist/application/RealHopperAssertions.js +20 -66
  125. package/dist/application/ReconstructionCoverageService.js +12 -58
  126. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  127. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  128. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  129. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  130. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  131. package/dist/application/ReferenceSourceImport.js +21 -47
  132. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  133. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  134. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  135. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  136. package/dist/application/SessionProviderRouter.js +2 -2
  137. package/dist/application/Setup.js +1 -3
  138. package/dist/application/SetupClientConfiguration.js +22 -88
  139. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  140. package/dist/application/StoreFileLock.js +119 -0
  141. package/dist/application/TerminalRenderer.js +2 -3
  142. package/dist/application/Uninstall.js +9 -14
  143. package/dist/application/UnknownEvidence.js +1 -1
  144. package/dist/application/WindowsCapabilities.js +5 -4
  145. package/dist/artifacts/ArtifactPaths.js +2 -5
  146. package/dist/artifacts/ArtifactProvider.js +43 -67
  147. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  148. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  149. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  150. package/dist/artifacts/NibArchive.js +269 -0
  151. package/dist/artifacts/SafeOutputTree.js +21 -31
  152. package/dist/browser/BrowserProcessStartup.js +1 -2
  153. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  154. package/dist/browser/CdpBrowserProvider.js +3 -13
  155. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  156. package/dist/browser/CdpCaptureDocuments.js +28 -76
  157. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  158. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  159. package/dist/browser/CdpCaptureEvents.js +2 -8
  160. package/dist/browser/CdpCaptureStorage.js +9 -20
  161. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -95
  162. package/dist/browser/CdpCaptureValues.js +21 -21
  163. package/dist/browser/CdpConnection.js +10 -25
  164. package/dist/browser/CdpElectronInspection.js +29 -51
  165. package/dist/browser/CdpElectronProvider.js +10 -35
  166. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  167. package/dist/browser/CdpElectronScripts.js +6 -35
  168. package/dist/browser/CdpElectronWorkers.js +6 -10
  169. package/dist/browser/CdpEndpoint.js +25 -41
  170. package/dist/browser/CdpObservationSession.js +14 -26
  171. package/dist/browser/CdpPageCapture.js +34 -48
  172. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  173. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  174. package/dist/browser/CdpSafeMetadata.js +19 -22
  175. package/dist/browser/CdpScreenshot.js +3 -5
  176. package/dist/browser/CdpTargetSession.js +1 -2
  177. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  178. package/dist/browser/ElectronFileScope.js +8 -19
  179. package/dist/browser/JavaScriptRuntimeScope.js +10 -10
  180. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  181. package/dist/browser/PlaywrightElectronActiveActions.js +309 -0
  182. package/dist/browser/PlaywrightElectronActiveProvider.js +274 -0
  183. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  184. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  185. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  186. package/dist/browser/PlaywrightScenarioBrowser.js +7 -9
  187. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  188. package/dist/browser/PlaywrightScenarioSession.js +18 -34
  189. package/dist/browser/PngVisualDiff.js +22 -14
  190. package/dist/browser/SensitiveTextCapture.js +1 -18
  191. package/dist/browser/V8InspectorCaptureProjection.js +7 -7
  192. package/dist/browser/V8InspectorEndpoint.js +12 -14
  193. package/dist/browser/V8InspectorProvider.js +20 -61
  194. package/dist/browser/WebSourceMapFetcher.js +56 -176
  195. package/dist/catalogIdentity.js +12 -60
  196. package/dist/cli/artifactCommands.js +49 -77
  197. package/dist/cli/coreAnalysisCommands.js +83 -133
  198. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  199. package/dist/cli/managedCommands.js +6 -271
  200. package/dist/cli/setupCommands.js +3 -12
  201. package/dist/cli/utilityCommands.js +7 -41
  202. package/dist/cli.js +0 -2
  203. package/dist/cliApplicationCommands.js +44 -114
  204. package/dist/cliBrowserAdvancedCommands.js +12 -102
  205. package/dist/cliBrowserCommands.js +19 -124
  206. package/dist/cliBrowserContext.js +30 -0
  207. package/dist/cliCommandNames.js +5 -5
  208. package/dist/cliElectronCommands.js +49 -71
  209. package/dist/cliEvidenceCommands.js +8 -77
  210. package/dist/cliJavaScriptRuntimeCommands.js +18 -92
  211. package/dist/cliJsonInput.js +4 -14
  212. package/dist/cliObservationOptions.js +11 -92
  213. package/dist/cliPolicyCommands.js +2 -16
  214. package/dist/cliProcessCommands.js +3 -3
  215. package/dist/cliSetup.js +0 -13
  216. package/dist/config/browserScenario.js +77 -0
  217. package/dist/config/electronAutomation.js +35 -0
  218. package/dist/config/environment.js +6 -9
  219. package/dist/config/javascriptReplay.js +41 -0
  220. package/dist/config/managedRuntime.js +25 -0
  221. package/dist/config/parseConfig.js +56 -232
  222. package/dist/config/parsers.js +16 -28
  223. package/dist/config/passiveObservation.js +87 -0
  224. package/dist/config/permissions.js +0 -7
  225. package/dist/config/processCapture.js +47 -0
  226. package/dist/contracts/analysisSearchContract.js +2 -5
  227. package/dist/contracts/applicationToolContracts.js +58 -114
  228. package/dist/contracts/applicationWorkflowInputContracts.js +29 -114
  229. package/dist/contracts/artifactComparisonExample.js +58 -60
  230. package/dist/contracts/artifactToolContracts.js +37 -91
  231. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  232. package/dist/contracts/browserToolContracts.js +10 -75
  233. package/dist/contracts/electronToolContracts.js +27 -98
  234. package/dist/contracts/enhancedInputs.js +31 -78
  235. package/dist/contracts/errorSchemas.js +0 -1
  236. package/dist/contracts/functionComparisonExample.js +10 -24
  237. package/dist/contracts/functionInstructionContract.js +1 -3
  238. package/dist/contracts/functionWorkflowToolContracts.js +4 -5
  239. package/dist/contracts/hopperMemoryContracts.js +3 -3
  240. package/dist/contracts/investigationExamples.js +14 -11
  241. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  242. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  243. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  244. package/dist/contracts/managedToolContracts.js +10 -104
  245. package/dist/contracts/managedWorkflowExamples.js +77 -125
  246. package/dist/contracts/managedWorkflowToolContracts.js +51 -74
  247. package/dist/contracts/nativeToolContracts.js +9 -14
  248. package/dist/contracts/processCaptureExample.js +2 -69
  249. package/dist/contracts/promptContracts.js +49 -67
  250. package/dist/contracts/providerSelection.js +0 -1
  251. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  252. package/dist/contracts/sessionStatusContract.js +1 -17
  253. package/dist/contracts/sessionToolSchemas.js +52 -0
  254. package/dist/contracts/toolContractExamples.js +11 -10
  255. package/dist/contracts/toolContractHelpers.js +19 -0
  256. package/dist/contracts/toolContracts.js +60 -143
  257. package/dist/contracts/toolEffects.js +16 -9
  258. package/dist/contracts/toolOutputSchemaGroups.js +47 -86
  259. package/dist/contracts/toolOutputSchemaPrimitives.js +72 -62
  260. package/dist/contracts/toolSchemaMetadata.js +117 -0
  261. package/dist/contracts/unknownContractExamples.js +0 -2
  262. package/dist/doctorRuntime.js +1 -1
  263. package/dist/domain/analysisErrorPresentation.js +46 -54
  264. package/dist/domain/analysisErrorProjection.js +28 -37
  265. package/dist/domain/analysisProfile.js +3 -31
  266. package/dist/domain/analysisSnapshot.js +3 -12
  267. package/dist/domain/androidApplication.js +15 -52
  268. package/dist/domain/appleApplication.js +24 -65
  269. package/dist/domain/artifactComparison.js +11 -29
  270. package/dist/domain/artifactGraph.js +14 -44
  271. package/dist/domain/artifactInspection.js +38 -69
  272. package/dist/domain/artifactInventoryEvidence.js +27 -21
  273. package/dist/domain/binaryTarget.js +2 -219
  274. package/dist/domain/binaryTargetTypes.js +1 -0
  275. package/dist/domain/browserCaptureComparison.js +35 -60
  276. package/dist/domain/browserObservation.js +45 -197
  277. package/dist/domain/browserObservationSchemas.js +5 -23
  278. package/dist/domain/browserScenario.js +11 -14
  279. package/dist/domain/browserScenarioCapture.js +11 -12
  280. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  281. package/dist/domain/browserScenarioDiff.js +2 -59
  282. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  283. package/dist/domain/browserScenarioDiffValues.js +21 -38
  284. package/dist/domain/browserScenarioValues.js +80 -109
  285. package/dist/domain/browserSession.js +4 -7
  286. package/dist/domain/bundleComparison.js +6 -32
  287. package/dist/domain/bytecodeProvider.js +53 -54
  288. package/dist/domain/callPath.js +50 -169
  289. package/dist/domain/callPathSchemas.js +79 -0
  290. package/dist/domain/changedBehavior.js +34 -60
  291. package/dist/domain/completionLedgerGeneration.js +8 -14
  292. package/dist/domain/conformancePackage.js +126 -97
  293. package/dist/domain/conformanceReplay.js +39 -11
  294. package/dist/domain/conformanceTrustGate.js +174 -30
  295. package/dist/domain/customProtocolCapture.js +4 -4
  296. package/dist/domain/electronActiveObservation.js +244 -0
  297. package/dist/domain/electronObservation.js +21 -83
  298. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  299. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  300. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  301. package/dist/domain/electronStaticAnalysisValues.js +14 -18
  302. package/dist/domain/errors.js +33 -54
  303. package/dist/domain/eventProcessTree.js +101 -90
  304. package/dist/domain/evidence.js +2 -10
  305. package/dist/domain/evidenceBundle.js +3 -5
  306. package/dist/domain/evidenceCompletionLedger.js +6 -8
  307. package/dist/domain/functionComparison.js +4 -14
  308. package/dist/domain/functionComparisonNormalization.js +8 -8
  309. package/dist/domain/functionComparisonResults.js +25 -15
  310. package/dist/domain/functionComparisonSchemas.js +49 -33
  311. package/dist/domain/functionDossierEvidence.js +31 -151
  312. package/dist/domain/hopperStartupFailure.js +1 -1
  313. package/dist/domain/hopperValues.js +17 -141
  314. package/dist/domain/inputIssueProjection.js +4 -1
  315. package/dist/domain/interfaceBuilderGraph.js +654 -0
  316. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  317. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  318. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  319. package/dist/domain/javascriptApplicationGraph.js +3 -13
  320. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  321. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  322. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  323. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  324. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  325. package/dist/domain/javascriptAstFingerprint.js +25 -58
  326. package/dist/domain/javascriptAstValues.js +9 -0
  327. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  328. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  329. package/dist/domain/javascriptExportShapeComparisonSchemas.js +70 -77
  330. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  331. package/dist/domain/javascriptFeatureSeed.js +20 -12
  332. package/dist/domain/javascriptFeatureTrace.js +13 -67
  333. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  334. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  335. package/dist/domain/javascriptNativeHandoff.js +1 -1
  336. package/dist/domain/javascriptReplay.js +100 -101
  337. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  338. package/dist/domain/javascriptRuntimeObservation.js +43 -103
  339. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  340. package/dist/domain/javascriptRuntimeReconciliationActive.js +80 -0
  341. package/dist/domain/javascriptRuntimeReconciliationGraph.js +21 -33
  342. package/dist/domain/javascriptRuntimeReconciliationMatching.js +75 -61
  343. package/dist/domain/javascriptRuntimeReconciliationParsing.js +21 -46
  344. package/dist/domain/javascriptRuntimeReconciliationResult.js +25 -19
  345. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  346. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +34 -49
  347. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  348. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  349. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  350. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  351. package/dist/domain/javascriptSemanticCalls.js +5 -32
  352. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  353. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  354. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  355. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  356. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  357. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  358. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  359. package/dist/domain/javascriptSemanticIr.js +1 -29
  360. package/dist/domain/javascriptSemanticObjects.js +1 -5
  361. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  362. package/dist/domain/javascriptSemanticProjection.js +0 -18
  363. package/dist/domain/javascriptSemanticPromises.js +9 -16
  364. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  365. package/dist/domain/javascriptSemanticQuery.js +17 -139
  366. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  367. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  368. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  369. package/dist/domain/javascriptSemanticResources.js +1 -6
  370. package/dist/domain/javascriptSemanticReturns.js +10 -27
  371. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  372. package/dist/domain/javascriptSemanticValues.js +44 -62
  373. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  374. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  375. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  376. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  377. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  378. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  379. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  380. package/dist/domain/jsonShape.js +7 -33
  381. package/dist/domain/localPath.js +7 -0
  382. package/dist/domain/managedApplicationGraph.js +9 -41
  383. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  384. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  385. package/dist/domain/managedArtifact.js +14 -27
  386. package/dist/domain/managedMemberComparison.js +90 -92
  387. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  388. package/dist/domain/managedMemberComparisonItems.js +221 -0
  389. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  390. package/dist/domain/managedNativeVerification.js +3 -6
  391. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  392. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  393. package/dist/domain/managedReconstruction.js +19 -23
  394. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  395. package/dist/domain/nativeApiBoundary.js +17 -14
  396. package/dist/domain/nativeInspection.js +0 -2
  397. package/dist/domain/nativeInvestigationGraph.js +351 -0
  398. package/dist/domain/nativeValueFlow.js +61 -0
  399. package/dist/domain/nodeRuntimeCharacterization.js +15 -18
  400. package/dist/domain/objcSwiftMetadata.js +254 -0
  401. package/dist/domain/peInspection.js +1 -1
  402. package/dist/domain/permissionPolicy.js +13 -0
  403. package/dist/domain/processCapture.js +76 -113
  404. package/dist/domain/processCaptureExample.js +68 -0
  405. package/dist/domain/processCaptureParsing.js +21 -0
  406. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  407. package/dist/domain/processCaptureReactiveValidation.js +8 -3
  408. package/dist/domain/processCaptureValidation.js +8 -10
  409. package/dist/domain/processComparison.js +12 -16
  410. package/dist/domain/processObservation.js +5 -6
  411. package/dist/domain/processReactiveMatching.js +32 -46
  412. package/dist/domain/processReactiveRuntime.js +4 -8
  413. package/dist/domain/processReactiveScenario.js +28 -94
  414. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  415. package/dist/domain/processReactiveTransition.js +42 -21
  416. package/dist/domain/processScenario.js +62 -93
  417. package/dist/domain/processTraceComparison.js +0 -7
  418. package/dist/domain/processTraceEvaluation.js +14 -4
  419. package/dist/domain/processTraceSpecification.js +11 -17
  420. package/dist/domain/protocolCapture.js +11 -9
  421. package/dist/domain/reconstructionCoverage.js +62 -129
  422. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  423. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  424. package/dist/domain/reconstructionReadiness.js +1 -2
  425. package/dist/domain/reconstructionReadinessSchemas.js +66 -40
  426. package/dist/domain/reconstructionUnknowns.js +3 -3
  427. package/dist/domain/reconstructionVerification.js +13 -47
  428. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  429. package/dist/domain/referenceSourceGraph.js +53 -61
  430. package/dist/domain/referenceSourceImportParsing.js +3 -7
  431. package/dist/domain/replayMachine.js +19 -31
  432. package/dist/domain/replayMachineRun.js +15 -63
  433. package/dist/domain/replayMachineRuntime.js +46 -44
  434. package/dist/domain/replayMachineValues.js +84 -0
  435. package/dist/domain/residualUnknown.js +25 -30
  436. package/dist/domain/runtimeCharacterization.js +15 -16
  437. package/dist/domain/runtimeIdentification.js +48 -47
  438. package/dist/domain/sourceToBundleComparison.js +11 -87
  439. package/dist/domain/sourceToBundleComparisonSchemas.js +25 -50
  440. package/dist/domain/sourceToBundleSignals.js +11 -16
  441. package/dist/domain/staticRuntimeCorrelation.js +44 -54
  442. package/dist/domain/symbolAnalysis.js +10 -19
  443. package/dist/domain/unicodeCodePointOrder.js +12 -0
  444. package/dist/domain/webBundleAnalysis.js +70 -99
  445. package/dist/domain/webBundleAnalyzer.js +2 -4
  446. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  447. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  448. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  449. package/dist/domain/webCaptureDiff.js +48 -85
  450. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  451. package/dist/domain/webContentArtifact.js +1 -10
  452. package/dist/domain/webMcpDiscovery.js +3 -14
  453. package/dist/domain/webScreenshot.js +58 -34
  454. package/dist/domain/zipPackageFormat.js +7 -0
  455. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  456. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  457. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  458. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  459. package/dist/dotnet/ManagedMemberRows.js +16 -16
  460. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  461. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  462. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  463. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  464. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  465. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  466. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -42
  467. package/dist/dotnet/ManagedPeReader.js +2 -2
  468. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  469. package/dist/generatedMcpToolCatalog.js +1 -1
  470. package/dist/generatedPackageMetadata.js +1 -1
  471. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  472. package/dist/ghidra/GhidraClient.js +5 -13
  473. package/dist/ghidra/GhidraClientStartup.js +1 -1
  474. package/dist/ghidra/GhidraClientWire.js +9 -5
  475. package/dist/ghidra/GhidraDefaults.js +0 -18
  476. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  477. package/dist/ghidra/GhidraDoctor.js +16 -12
  478. package/dist/ghidra/GhidraFunctionValues.js +67 -108
  479. package/dist/ghidra/GhidraInstallation.js +98 -42
  480. package/dist/ghidra/GhidraInventoryValues.js +18 -77
  481. package/dist/ghidra/GhidraLauncher.js +0 -8
  482. package/dist/ghidra/GhidraProvider.js +32 -31
  483. package/dist/ghidra/GhidraProviderCapabilities.js +11 -48
  484. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  485. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  486. package/dist/ghidra/GhidraSessionValues.js +0 -2
  487. package/dist/ghidra/GhidraSocketConnection.js +1 -1
  488. package/dist/ghidra/GhidraTransport.js +4 -7
  489. package/dist/ghidra/protocol.js +19 -42
  490. package/dist/hopper/BridgeLauncher.js +115 -37
  491. package/dist/hopper/HopperAnalysisProfile.js +3 -5
  492. package/dist/hopper/HopperCleanup.js +11 -9
  493. package/dist/hopper/HopperClient.js +5 -8
  494. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  495. package/dist/hopper/HopperProvider.js +0 -30
  496. package/dist/hopper/HopperRequestQueue.js +21 -40
  497. package/dist/hopper/HopperResponseStream.js +1 -9
  498. package/dist/hopper/HopperSessionValues.js +3 -2
  499. package/dist/hopper/HopperTargetLease.js +119 -0
  500. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  501. package/dist/hopper/LinuxPrivateDisplayProbe.js +21 -26
  502. package/dist/hopper/protocol.js +6 -4
  503. package/dist/main/reload.js +1 -9
  504. package/dist/main/shutdown.js +1 -1
  505. package/dist/main/state.js +0 -23
  506. package/dist/main/transport.js +27 -39
  507. package/dist/main.js +17 -15
  508. package/dist/mcpDoctor.js +27 -69
  509. package/dist/native/CommandRunner.js +18 -25
  510. package/dist/native/NativeMacOSProvider.js +13 -38
  511. package/dist/native/NativeMachoInspection.js +1 -1
  512. package/dist/process/BoundedFileBytes.js +17 -0
  513. package/dist/process/ExecFileOutput.js +11 -0
  514. package/dist/process/PendingOperations.js +8 -6
  515. package/dist/process/PrivateRuntimeRoot.js +17 -0
  516. package/dist/process/ProcessOwnership.js +67 -130
  517. package/dist/process/ProcessOwnershipIdentity.js +13 -0
  518. package/dist/process/ProcessOwnershipObservation.js +87 -0
  519. package/dist/process/ProcessOwnershipProcessTree.js +22 -0
  520. package/dist/process/ProviderDeadline.js +8 -12
  521. package/dist/process/ProviderProcess.js +7 -28
  522. package/dist/process/WindowsAuthority.js +32 -0
  523. package/dist/reference/ReferenceSourceReader.js +8 -24
  524. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  525. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  526. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  527. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  528. package/dist/replay/JavaScriptReplayWorker.js +95 -13
  529. package/dist/replay/JavaScriptReplayWorkerTypes.js +1 -0
  530. package/dist/replay/LinuxJavaScriptReplayRunner.js +42 -43
  531. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  532. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  533. package/dist/replay/ReplayOutcome.js +27 -18
  534. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  535. package/dist/replay/ReplaySeccompFile.js +29 -0
  536. package/dist/replay/ReplayWorkerProtocol.js +33 -30
  537. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  538. package/dist/server/ProcessCaptureElicitation.js +4 -8
  539. package/dist/server/createServer.js +145 -119
  540. package/dist/server/mcpClientMetadata.js +32 -0
  541. package/dist/server/promptCompletion.js +37 -61
  542. package/dist/server/recordDerivedEvidence.js +1 -1
  543. package/dist/server/registerApplicationTools/characterization.js +10 -21
  544. package/dist/server/registerApplicationTools/compareExportShapes.js +6 -16
  545. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -15
  546. package/dist/server/registerApplicationTools/compareVersions.js +6 -16
  547. package/dist/server/registerApplicationTools/controlledReplay.js +8 -15
  548. package/dist/server/registerApplicationTools/coverage.js +7 -78
  549. package/dist/server/registerApplicationTools/helpers.js +1 -13
  550. package/dist/server/registerApplicationTools/obligationLedger.js +4 -8
  551. package/dist/server/registerApplicationTools/traceFeature.js +6 -15
  552. package/dist/server/registerApplicationTools/traceSemantics.js +5 -13
  553. package/dist/server/registerApplicationTools.js +0 -2
  554. package/dist/server/registerArtifactComparisonTool.js +27 -35
  555. package/dist/server/registerBrowserScenarioTool.js +3 -8
  556. package/dist/server/registerBrowserTools.js +36 -81
  557. package/dist/server/registerBundleComparisonTool.js +10 -16
  558. package/dist/server/registerCloseLifecycleTool.js +5 -27
  559. package/dist/server/registerElectronTools.js +29 -65
  560. package/dist/server/registerEnhancedTools.js +118 -127
  561. package/dist/server/registerEvidenceTools.js +19 -30
  562. package/dist/server/registerFunctionComparisonTool.js +35 -34
  563. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  564. package/dist/server/registerInvestigationTools.js +36 -148
  565. package/dist/server/registerJavaScriptRuntimeObservationTools.js +15 -27
  566. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +16 -23
  567. package/dist/server/registerManagedWorkflowTools/contract.js +2 -3
  568. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  569. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -14
  570. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +4 -14
  571. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +11 -20
  572. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +10 -21
  573. package/dist/server/registerOfficialTools.js +8 -51
  574. package/dist/server/registerProcessComparisonTool.js +43 -38
  575. package/dist/server/registerPrompts.js +19 -17
  576. package/dist/server/registerReplayMachineTool.js +4 -10
  577. package/dist/server/registerSessionRecordTools.js +36 -153
  578. package/dist/server/registerSessionStatusTool.js +18 -96
  579. package/dist/server/registerSessionTools.js +34 -91
  580. package/dist/server/sessionAvailabilityPolicy.js +2 -3
  581. package/dist/server/sessionEvidence.js +9 -15
  582. package/dist/server/sessionToolPolicies.js +1 -13
  583. package/dist/server/toolRegistrationOptions.js +4 -192
  584. package/dist/server/toolResult.js +15 -67
  585. package/dist/serverIdentity.js +0 -20
  586. package/install.sh +1 -1
  587. package/package.json +27 -15
  588. package/scripts/electron-active-hook-boundaries.cjs +394 -0
  589. package/scripts/electron-active-hook.cjs +469 -0
  590. package/scripts/hopper-demo-x11.py +13 -32
  591. package/scripts/rea.mjs +1 -11
  592. package/skills/reverse-engineer-anything/SKILL.md +46 -11
  593. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  594. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  595. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  596. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -180
  597. package/dist/application/BoundedJsonFiles.js +0 -86
  598. package/dist/application/CrossVersionInventory.js +0 -128
  599. package/dist/application/CrossVersionInvestigation.js +0 -301
  600. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  601. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  602. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  603. package/dist/application/DeferredFileAuthorization.js +0 -61
  604. package/dist/application/DoctorProjection.js +0 -43
  605. package/dist/application/EnhancedToolPagination.js +0 -22
  606. package/dist/application/EvidenceReferenceResolver.js +0 -26
  607. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  608. package/dist/application/ProcessPairedExperiment.js +0 -72
  609. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  610. package/dist/application/ReconstructionReadinessService.js +0 -48
  611. package/dist/cliInvestigationCommands.js +0 -173
  612. package/dist/domain/boundedCartesianProjection.js +0 -15
  613. package/dist/domain/investigationWorkspace.js +0 -346
  614. package/dist/domain/jsonLimits.js +0 -26
  615. package/dist/domain/knownPageCoverage.js +0 -21
  616. package/dist/domain/processPairedExperiment.js +0 -128
  617. package/dist/server/DynamicToolAvailability.js +0 -70
  618. package/dist/server/LazyToolCatalog.js +0 -134
  619. package/dist/server/hydrateServerTools.js +0 -191
  620. package/dist/server/javascriptApplicationResult.js +0 -106
  621. package/dist/server/permissionFailure.js +0 -12
  622. package/dist/server/registerApplicationTools/readiness.js +0 -55
  623. package/dist/server/registerEvidenceResources.js +0 -315
  624. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  625. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  626. package/dist/server/registerReconstructionReadinessResource.js +0 -32
  627. package/dist/server/toolInputValidation.js +0 -77
  628. package/scripts/package-runner-bootstrap.mjs +0 -72
@@ -51,6 +51,102 @@ export const objcClassSchema = z.strictObject({
51
51
  ivar_count: z.number().int().nonnegative().default(0),
52
52
  instance_size: z.number().int().nonnegative().nullable(),
53
53
  });
54
+ /** Exact location of a decoded native metadata value when the provider knows it. */
55
+ export const nativeMetadataLocationSchema = z.strictObject({
56
+ address: z.string().nullable(),
57
+ file_offset: z.number().int().nonnegative().nullable(),
58
+ });
59
+ /** Provider-neutral decode state; absence never silently means unsupported. */
60
+ export const nativeMetadataDecodeSchema = z.strictObject({
61
+ status: z.enum(["decoded", "partial", "unsupported", "invalid"]),
62
+ reason: z.string().nullable(),
63
+ });
64
+ /** Evidence attached to one dispatch edge or metadata record. */
65
+ export const nativeMetadataEvidenceSchema = z.strictObject({
66
+ kind: z.enum([
67
+ "binary_metadata",
68
+ "interface_builder_resource",
69
+ "symbol",
70
+ "reference",
71
+ "decompiler",
72
+ ]),
73
+ description: z.string().min(1),
74
+ location: nativeMetadataLocationSchema,
75
+ artifact_path: z.string().min(1).nullable().default(null),
76
+ artifact_sha256: z
77
+ .string()
78
+ .regex(/^[a-f0-9]{64}$/u)
79
+ .nullable()
80
+ .default(null),
81
+ });
82
+ /** Objective-C ivar layout, retaining encoded type and exact storage offset. */
83
+ export const objcIvarSchema = z.strictObject({
84
+ class_name: z.string().min(1),
85
+ name: z.string().min(1),
86
+ type_encoding: z.string().nullable(),
87
+ offset: z.number().int().nonnegative().nullable(),
88
+ location: nativeMetadataLocationSchema,
89
+ decode: nativeMetadataDecodeSchema,
90
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1),
91
+ });
92
+ /** Selector implementation resolved from a class or metaclass method list. */
93
+ export const objcDispatchImplementationSchema = z.strictObject({
94
+ class_name: z.string().min(1),
95
+ selector: z.string().min(1),
96
+ method_type: z.enum(["instance", "class"]),
97
+ implementation_address: z.string().nullable(),
98
+ location: nativeMetadataLocationSchema,
99
+ decode: nativeMetadataDecodeSchema,
100
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1),
101
+ });
102
+ /** Swift protocol conformance and its associated witness-table location. */
103
+ export const swiftConformanceSchema = z.strictObject({
104
+ type_name: z.string().min(1),
105
+ protocol_name: z.string().min(1),
106
+ module: z.string().nullable(),
107
+ witness_table: nativeMetadataLocationSchema,
108
+ location: nativeMetadataLocationSchema,
109
+ decode: nativeMetadataDecodeSchema,
110
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1),
111
+ });
112
+ /** A typed slot in a Swift protocol witness table or class vtable. */
113
+ export const swiftDispatchSlotSchema = z.strictObject({
114
+ owner: z.string().min(1),
115
+ table_kind: z.enum(["witness_table", "class_vtable"]),
116
+ slot_index: z.number().int().nonnegative(),
117
+ requirement: z.string().nullable(),
118
+ implementation: z.string().nullable(),
119
+ implementation_address: z.string().nullable(),
120
+ thunk_address: z.string().nullable(),
121
+ location: nativeMetadataLocationSchema,
122
+ decode: nativeMetadataDecodeSchema,
123
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1),
124
+ });
125
+ /** Signed-relative pointer as stored in an Apple binary metadata structure. */
126
+ export const relativePointerSchema = z.strictObject({
127
+ field: nativeMetadataLocationSchema,
128
+ target: nativeMetadataLocationSchema,
129
+ displacement: z.number().int(),
130
+ indirectable: z.boolean(),
131
+ indirect: z.boolean().nullable(),
132
+ decode: nativeMetadataDecodeSchema,
133
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1),
134
+ });
135
+ /** A raw Swift-mangled symbol when a provider has not decoded its metadata. */
136
+ export const swiftSymbolSchema = z.strictObject({
137
+ mangled_name: z.string().min(1),
138
+ address: z.string().min(1),
139
+ decode: nativeMetadataDecodeSchema,
140
+ evidence: z.array(nativeMetadataEvidenceSchema).min(1),
141
+ });
142
+ /** Per-facet coverage; empty arrays are meaningful only with this record. */
143
+ export const nativeMetadataCoverageSchema = z.strictObject({
144
+ facet: z.string().min(1),
145
+ status: z.enum(["complete", "partial", "unsupported", "not_requested"]),
146
+ reason: z.string().nullable(),
147
+ examined: z.number().int().nonnegative(),
148
+ decoded: z.number().int().nonnegative(),
149
+ });
54
150
  /** Swift declaration kind. */
55
151
  export const swiftDeclKindSchema = z.enum([
56
152
  "class",
@@ -107,8 +203,166 @@ export const objcSwiftMetadataSchema = z.strictObject({
107
203
  objc_classes: z.array(objcClassSchema).default([]),
108
204
  objc_protocols: z.array(objcProtocolSchema).default([]),
109
205
  swift_decls: z.array(swiftDeclSchema).default([]),
206
+ objc_ivars: z.array(objcIvarSchema).default([]),
207
+ objc_dispatch_implementations: z
208
+ .array(objcDispatchImplementationSchema)
209
+ .default([]),
210
+ swift_conformances: z.array(swiftConformanceSchema).default([]),
211
+ swift_dispatch_slots: z.array(swiftDispatchSlotSchema).default([]),
212
+ swift_symbols: z.array(swiftSymbolSchema).default([]),
213
+ relative_pointers: z.array(relativePointerSchema).default([]),
214
+ coverage: z.array(nativeMetadataCoverageSchema).default([]),
110
215
  db_save_result: dbSaveResultSchema.nullable(),
111
216
  });
217
+ /** Provider and target identity for one normalized dispatch-metadata result. */
218
+ export const nativeDispatchMetadataResultSchema = z.strictObject({
219
+ target_sha256: z
220
+ .string()
221
+ .regex(/^[a-f0-9]{64}$/u)
222
+ .nullable(),
223
+ provider: z.strictObject({
224
+ id: z.string().min(1),
225
+ name: z.string().min(1),
226
+ version: z.string().nullable(),
227
+ }),
228
+ analysis_profile_digest: z.string().min(1).nullable(),
229
+ result: objcSwiftMetadataSchema,
230
+ });
231
+ /** Decode only facts visible in a provider's existing name inventory. */
232
+ export const inspectNativeDispatchMetadata = (names, maxRecords = 5_000) => {
233
+ const symbolEvidence = (name, address) => [
234
+ {
235
+ kind: "symbol",
236
+ description: `Provider symbol ${name}`,
237
+ location: { address, file_offset: null },
238
+ artifact_path: null,
239
+ artifact_sha256: null,
240
+ },
241
+ ];
242
+ const classNames = new Set();
243
+ const implementations = new Map();
244
+ const swiftSymbols = [];
245
+ const examinedNames = names.slice(0, maxRecords);
246
+ for (const entry of examinedNames) {
247
+ const classMatch = /(?:OBJC_CLASS_|OBJC_METACLASS_)\$_([^\s]+)/u.exec(entry.name);
248
+ if (classMatch?.[1] !== undefined)
249
+ classNames.add(classMatch[1]);
250
+ const methodMatch = /^([+-])\[([^\s\]]+)\s+([^\]]+)\]$/u.exec(entry.name);
251
+ if (methodMatch?.[1] !== undefined && methodMatch[2] && methodMatch[3]) {
252
+ const methodType = methodMatch[1] === "+" ? "class" : "instance";
253
+ const selector = methodMatch[3];
254
+ implementations.set(`${methodMatch[2]}:${selector}:${methodType}`, {
255
+ class_name: methodMatch[2],
256
+ selector,
257
+ method_type: methodType,
258
+ implementation_address: entry.address,
259
+ location: { address: entry.address, file_offset: null },
260
+ decode: { status: "partial", reason: "symbol_name_only" },
261
+ evidence: symbolEvidence(entry.name, entry.address),
262
+ });
263
+ classNames.add(methodMatch[2]);
264
+ }
265
+ if (/^(?:_?\$s|_Tt)/u.test(entry.name))
266
+ swiftSymbols.push({
267
+ mangled_name: entry.name,
268
+ address: entry.address,
269
+ decode: { status: "partial", reason: "mangled_symbol_not_demangled" },
270
+ evidence: symbolEvidence(entry.name, entry.address),
271
+ });
272
+ }
273
+ const methodsByClass = new Map();
274
+ for (const implementation of implementations.values()) {
275
+ const methods = methodsByClass.get(implementation.class_name) ?? [];
276
+ methods.push({
277
+ selector: implementation.selector,
278
+ method_type: implementation.method_type,
279
+ address: parseMetadataAddress(implementation.implementation_address),
280
+ is_required: false,
281
+ is_optional: false,
282
+ });
283
+ methodsByClass.set(implementation.class_name, methods);
284
+ }
285
+ const classes = [...classNames].sort().map((name) => ({
286
+ name,
287
+ super_class: null,
288
+ is_meta_class: false,
289
+ is_root_class: false,
290
+ methods: methodsByClass.get(name) ?? [],
291
+ properties: [],
292
+ protocols: [],
293
+ ivar_count: 0,
294
+ instance_size: null,
295
+ }));
296
+ const decodedImplementations = [...implementations.values()].sort((left, right) => `${left.class_name}:${left.selector}`.localeCompare(`${right.class_name}:${right.selector}`));
297
+ const swift = swiftSymbols.length > 0;
298
+ return objcSwiftMetadataSchema.parse({
299
+ objc_classes: classes,
300
+ objc_dispatch_implementations: decodedImplementations,
301
+ swift_symbols: swiftSymbols,
302
+ coverage: [
303
+ {
304
+ facet: "objc_class_symbols",
305
+ status: "partial",
306
+ reason: names.length > examinedNames.length
307
+ ? "record_limit_reached_and_symbol_names_are_not_runtime_class_metadata"
308
+ : "symbol_names_do_not_recover_all_runtime_class_metadata",
309
+ examined: examinedNames.length,
310
+ decoded: classes.length,
311
+ },
312
+ {
313
+ facet: "objc_dispatch_implementations",
314
+ status: decodedImplementations.length > 0 ? "partial" : "unsupported",
315
+ reason: names.length > examinedNames.length
316
+ ? "record_limit_reached_and_only_symbolized_methods_are_resolved"
317
+ : decodedImplementations.length > 0
318
+ ? "only_symbolized_methods_are_resolved"
319
+ : "provider_name_inventory_has_no_objc_method_symbols",
320
+ examined: examinedNames.length,
321
+ decoded: decodedImplementations.length,
322
+ },
323
+ {
324
+ facet: "objc_ivar_layouts",
325
+ status: "unsupported",
326
+ reason: "symbol_inventory_does_not_expose_runtime_ivar_layouts",
327
+ examined: 0,
328
+ decoded: 0,
329
+ },
330
+ {
331
+ facet: "swift_declarations",
332
+ status: swift ? "partial" : "unsupported",
333
+ reason: swift
334
+ ? "symbols_are_not_demangled_declarations"
335
+ : "no_swift_symbols_observed",
336
+ examined: swiftSymbols.length,
337
+ decoded: 0,
338
+ },
339
+ {
340
+ facet: "swift_dispatch_tables",
341
+ status: "unsupported",
342
+ reason: "provider_name_inventory_does_not_decode_witness_or_class_vtables",
343
+ examined: 0,
344
+ decoded: 0,
345
+ },
346
+ {
347
+ facet: "relative_pointers",
348
+ status: "unsupported",
349
+ reason: "provider_name_inventory_does_not_decode_binary_relative_pointers",
350
+ examined: 0,
351
+ decoded: 0,
352
+ },
353
+ ],
354
+ db_save_result: null,
355
+ });
356
+ };
357
+ const parseMetadataAddress = (address) => {
358
+ if (address === null)
359
+ return null;
360
+ const match = /(?:^|:)0x([0-9a-f]+)$/iu.exec(address);
361
+ if (match?.[1] === undefined)
362
+ return null;
363
+ const value = Number.parseInt(match[1], 16);
364
+ return Number.isSafeInteger(value) ? value : null;
365
+ };
112
366
  /** Check if a selector name looks like a getter. */
113
367
  export function isGetterSelector(selector) {
114
368
  return /^[a-z][a-zA-Z0-9_]*$/u.test(selector) && !selector.includes(":");
@@ -96,7 +96,7 @@ export const peManifestSchema = z.strictObject({
96
96
  /** Subsystem version. */
97
97
  subsystem_version: z.string().nullable(),
98
98
  /** Sections. */
99
- sections: z.array(peSectionSchema).min(0).max(96),
99
+ sections: z.array(peSectionSchema),
100
100
  /** Imports. */
101
101
  imports: z.array(peImportSchema).default([]),
102
102
  /** Exports. */
@@ -1,5 +1,18 @@
1
1
  import { isAbsolute, relative, resolve, sep } from "node:path";
2
2
  import { err, ok } from "./result.js";
3
+ /** Canonical local capabilities governed by the shared REA permission policy. */
4
+ export const PERMISSION_CAPABILITIES = [
5
+ "process_capture",
6
+ "browser_observe",
7
+ "browser_automate",
8
+ "electron_observe",
9
+ "electron_automate",
10
+ "v8_inspector_observe",
11
+ "artifact_extract",
12
+ "native_mount",
13
+ "javascript_replay",
14
+ "managed_runtime",
15
+ ];
3
16
  /** A proposed grant exceeds the administrator-owned maximum authority. */
4
17
  export class PermissionGrantError extends Error {
5
18
  reason;
@@ -1,7 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import { jsonValueSchema } from "./jsonValue.js";
3
- import { LEGACY_PROCESS_CAPTURE_MESSAGE, normalizationSchema, } from "./processScenario.js";
4
- import { PROCESS_REACTIVE_LIMITS } from "./processReactiveScenario.js";
3
+ import { normalizationSchema } from "./processScenario.js";
4
+ import { processReactiveRunSchema } from "./processCaptureReactiveSchema.js";
5
+ import { collectProcessCaptureIssues } from "./processCaptureValidation.js";
5
6
  export * from "./processScenario.js";
6
7
  /** Capture collection whose members participate in global observation order. */
7
8
  export const PROCESS_CAPTURE_EVENT_COLLECTIONS = [
@@ -15,28 +16,56 @@ export const PROCESS_CAPTURE_EVENT_COLLECTIONS = [
15
16
  "protocol_events",
16
17
  "replay_transitions",
17
18
  ];
18
- const fileStateSchema = z.object({
19
+ const fileStateShape = {
19
20
  path: z.string(),
20
- type: z.enum(["file", "directory", "symlink", "other"]),
21
21
  mode: z.number().int().nonnegative(),
22
22
  size: z.number().int().nonnegative(),
23
- sha256: z
24
- .string()
25
- .regex(/^[a-f0-9]{64}$/u)
26
- .nullable(),
27
- symlink_target: z.string().nullable(),
28
- });
29
- const fileEffectSchema = z.object({
30
- path: z.string(),
31
- status: z.enum(["created", "modified", "deleted", "unchanged"]),
32
- before: fileStateSchema.nullable(),
33
- after: fileStateSchema.nullable(),
34
- });
35
- /** Exact serialized shape of a bounded process capture. */
36
- export const processCaptureSchema = z.object({
37
- schema_version: z.literal(4, {
38
- error: LEGACY_PROCESS_CAPTURE_MESSAGE,
23
+ };
24
+ const fileStateSchema = z.discriminatedUnion("type", [
25
+ z.object({
26
+ ...fileStateShape,
27
+ type: z.literal("file"),
28
+ sha256: z
29
+ .string()
30
+ .regex(/^[a-f0-9]{64}$/u)
31
+ .nullable(),
32
+ symlink_target: z.null(),
33
+ }),
34
+ z.object({
35
+ ...fileStateShape,
36
+ type: z.literal("symlink"),
37
+ sha256: z.null(),
38
+ symlink_target: z.string(),
39
+ }),
40
+ z.object({
41
+ ...fileStateShape,
42
+ type: z.enum(["directory", "other"]),
43
+ sha256: z.null(),
44
+ symlink_target: z.null(),
39
45
  }),
46
+ ]);
47
+ const fileEffectSchema = z.discriminatedUnion("status", [
48
+ z.object({
49
+ path: z.string(),
50
+ status: z.literal("created"),
51
+ before: z.null(),
52
+ after: fileStateSchema,
53
+ }),
54
+ z.object({
55
+ path: z.string(),
56
+ status: z.literal("deleted"),
57
+ before: fileStateSchema,
58
+ after: z.null(),
59
+ }),
60
+ z.object({
61
+ path: z.string(),
62
+ status: z.enum(["modified", "unchanged"]),
63
+ before: fileStateSchema,
64
+ after: fileStateSchema,
65
+ }),
66
+ ]);
67
+ /** Exact serialized shape of a process capture. */
68
+ const processCaptureShapeSchema = z.object({
40
69
  manifest: z.object({
41
70
  rea_version: z.string().min(1),
42
71
  provider_version: z.string().min(1),
@@ -86,11 +115,18 @@ export const processCaptureSchema = z.object({
86
115
  signal: z.number().int().nullable(),
87
116
  reason: z.enum(["exited", "timeout", "idle_timeout"]),
88
117
  }),
89
- settlement: z.object({
90
- state: z.enum(["quiesced", "alive_at_deadline", "unverifiable"]),
91
- elapsed_ms: z.number().int().nonnegative(),
92
- cleanup_outcome: z.enum(["not_required", "cleaned", "failed"]),
93
- }),
118
+ settlement: z.discriminatedUnion("state", [
119
+ z.object({
120
+ state: z.literal("quiesced"),
121
+ elapsed_ms: z.number().int().nonnegative(),
122
+ cleanup_outcome: z.literal("not_required"),
123
+ }),
124
+ z.object({
125
+ state: z.enum(["alive_at_deadline", "unverifiable"]),
126
+ elapsed_ms: z.number().int().nonnegative(),
127
+ cleanup_outcome: z.enum(["cleaned", "failed"]),
128
+ }),
129
+ ]),
94
130
  process_samples: z.array(z.object({
95
131
  at_ms: z.number().int().nonnegative(),
96
132
  pid: z.number().int().positive(),
@@ -140,81 +176,13 @@ export const processCaptureSchema = z.object({
140
176
  .array(z.object({
141
177
  sequence: z.number().int().nonnegative(),
142
178
  at_ms: z.number().int().nonnegative(),
143
- transition_id: z.string().min(1).max(64),
144
- state_before: z.string().min(1).max(64),
145
- state_after: z.string().min(1).max(64),
146
- sensitive_aliases: z.array(z.string().min(1).max(64)).max(32),
179
+ transition_id: z.string().min(1),
180
+ state_before: z.string().min(1),
181
+ state_after: z.string().min(1),
182
+ sensitive_aliases: z.array(z.string().min(1)),
147
183
  }))
148
184
  .default([]),
149
- reactive_run: z
150
- .object({
151
- status: z.enum(["running", "finished"]),
152
- outcome: z
153
- .enum([
154
- "passed",
155
- "predicate_timeout",
156
- "scenario_deadline",
157
- "ambiguous_match",
158
- "action_rejected",
159
- "target_lost",
160
- "capture_incomplete",
161
- "cancelled",
162
- "cleanup_failed",
163
- ])
164
- .nullable(),
165
- active_state: z.string().min(1).max(64),
166
- controls: z
167
- .array(z.object({
168
- sequence: z.number().int().nonnegative(),
169
- kind: z.enum([
170
- "state_deadline",
171
- "scenario_deadline",
172
- "target_lost",
173
- "cancelled",
174
- "cleanup_failed",
175
- ]),
176
- after_capture_order: z.number().int().min(-1),
177
- }))
178
- .default([]),
179
- transitions: z
180
- .array(z.object({
181
- sequence: z.number().int().nonnegative(),
182
- transition_id: z.string().min(1).max(64),
183
- state_before: z.string().min(1).max(64),
184
- state_after: z.string().min(1).max(64).nullable(),
185
- outcome: z
186
- .enum([
187
- "passed",
188
- "predicate_timeout",
189
- "scenario_deadline",
190
- "ambiguous_match",
191
- "action_rejected",
192
- "target_lost",
193
- "capture_incomplete",
194
- "cancelled",
195
- "cleanup_failed",
196
- ])
197
- .nullable(),
198
- trigger_event_ids: z
199
- .array(z.string().min(1))
200
- .max(PROCESS_REACTIVE_LIMITS.predicates),
201
- action_event_ids: z
202
- .array(z.string().min(1))
203
- .max(PROCESS_REACTIVE_LIMITS.actionsPerTransition),
204
- action_types: z
205
- .array(z.enum([
206
- "send_input",
207
- "resize",
208
- "close_stdin",
209
- "send_signal",
210
- "checkpoint",
211
- ]))
212
- .max(PROCESS_REACTIVE_LIMITS.actionsPerTransition),
213
- }))
214
- .max(PROCESS_REACTIVE_LIMITS.transitions),
215
- })
216
- .nullable()
217
- .default(null),
185
+ reactive_run: processReactiveRunSchema.nullable().default(null),
218
186
  event_journal: z
219
187
  .array(z.object({
220
188
  capture_order: z.number().int().nonnegative(),
@@ -246,20 +214,15 @@ export const processCaptureSchema = z.object({
246
214
  temporary_root: z.literal("removed"),
247
215
  }),
248
216
  });
249
- export { validateProcessCapture } from "./processCaptureValidation.js";
250
- import { validateProcessCapture } from "./processCaptureValidation.js";
251
- /** Parse unknown input as v4 and reject invalid commitments or semantics. */
252
- export const parseProcessCapture = (input) => {
253
- if (typeof input === "object" &&
254
- input !== null &&
255
- "schema_version" in input &&
256
- input.schema_version === 3)
257
- throw new TypeError(LEGACY_PROCESS_CAPTURE_MESSAGE);
258
- const capture = processCaptureSchema.parse(input);
259
- const issues = validateProcessCapture(capture);
260
- if (issues.length > 0)
261
- throw new TypeError(`Invalid Process Capture v4: ${issues.map(({ path, message }) => `${path}: ${message}`).join("; ")}`);
262
- return capture;
263
- };
217
+ /** Exact serialized shape plus all process-capture semantic invariants. */
218
+ export const processCaptureSchema = processCaptureShapeSchema.superRefine((capture, context) => {
219
+ for (const issue of collectProcessCaptureIssues(capture))
220
+ context.addIssue({
221
+ code: "custom",
222
+ path: issue.path.split("."),
223
+ message: issue.message,
224
+ });
225
+ });
226
+ export { parseProcessCapture } from "./processCaptureParsing.js";
264
227
  export { compareProcessCaptures, comparisonStatusSchema, deriveProcessComparisonStatus, PROCESS_COMPARISON_DIMENSIONS, processCaptureComparisonSchema, } from "./processComparison.js";
265
228
  export { compareProcessTraces, processTraceComparisonResultSchema, processTraceSourceSchema, processTraceSpecificationSchema, } from "./processTraceComparison.js";
@@ -0,0 +1,68 @@
1
+ import { digestProcessCommitment } from "./processCapture.js";
2
+ const normalization = {
3
+ paths: true,
4
+ pids: true,
5
+ ports: true,
6
+ time_bucket_ms: 10,
7
+ patterns: [],
8
+ };
9
+ const scenario = { executable_sha256: "0".repeat(64) };
10
+ const comparisonContract = {};
11
+ const shimPlan = [];
12
+ const replayPlan = {};
13
+ /** Minimal valid process capture retained as a public contract example. */
14
+ export const EMPTY_PROCESS_CAPTURE_EXAMPLE = {
15
+ manifest: {
16
+ rea_version: "1.1.0",
17
+ provider_version: "3",
18
+ platform: "fixture",
19
+ architecture: "fixture",
20
+ pty_backend: "node-pty",
21
+ started_at: "2026-01-01T00:00:00.000Z",
22
+ completed_at: "2026-01-01T00:00:00.001Z",
23
+ scenario,
24
+ comparison_contract: comparisonContract,
25
+ shim_plan: shimPlan,
26
+ replay_plan: replayPlan,
27
+ full_scenario_sha256: digestProcessCommitment(scenario),
28
+ comparison_contract_sha256: digestProcessCommitment(comparisonContract),
29
+ executable_sha256: "0".repeat(64),
30
+ normalization_sha256: digestProcessCommitment(normalization),
31
+ shim_plan_sha256: digestProcessCommitment(shimPlan),
32
+ replay_plan_sha256: digestProcessCommitment(replayPlan),
33
+ },
34
+ normalization,
35
+ frames: [],
36
+ rendered_frames: [],
37
+ interaction_events: [],
38
+ exit: { code: 0, signal: null, reason: "exited" },
39
+ settlement: {
40
+ state: "quiesced",
41
+ elapsed_ms: 50,
42
+ cleanup_outcome: "not_required",
43
+ },
44
+ process_samples: [],
45
+ filesystem_checkpoints: [
46
+ { name: "before", at_ms: 0, files: [], effects: [], truncated: false },
47
+ {
48
+ name: "after_settlement",
49
+ at_ms: 50,
50
+ files: [],
51
+ effects: [],
52
+ truncated: false,
53
+ },
54
+ ],
55
+ shim_events: [],
56
+ protocol_events: [],
57
+ replay_transitions: [],
58
+ files_before: [],
59
+ files_after: [],
60
+ filesystem_effects: [],
61
+ truncated: false,
62
+ limitations: [],
63
+ residual_unknowns: [],
64
+ cleanup: {
65
+ owned_process_group: "verified",
66
+ temporary_root: "removed",
67
+ },
68
+ };
@@ -0,0 +1,21 @@
1
+ import { processCaptureSchema, } from "./processCapture.js";
2
+ const verifiedCaptures = new WeakSet();
3
+ const isVerifiedCapture = (capture) => verifiedCaptures.has(capture);
4
+ const attachProof = (capture) => {
5
+ verifiedCaptures.add(capture);
6
+ if (isVerifiedCapture(capture))
7
+ return capture;
8
+ throw new TypeError("Process Capture proof ownership failed");
9
+ };
10
+ /** Parse unknown input and reject invalid commitments or semantics. */
11
+ export const parseProcessCapture = (input) => {
12
+ const parsed = processCaptureSchema.safeParse(input);
13
+ if (parsed.success)
14
+ return attachProof(parsed.data);
15
+ const issues = parsed.error.issues.flatMap((issue) => issue.code === "custom"
16
+ ? [{ path: issue.path.join("."), message: issue.message }]
17
+ : []);
18
+ if (issues.length > 0)
19
+ throw new TypeError(`Invalid process capture: ${issues.map(({ path, message }) => `${path}: ${message}`).join("; ")}`);
20
+ throw parsed.error;
21
+ };
@@ -0,0 +1,68 @@
1
+ import { z } from "zod";
2
+ const processReactiveOutcomeSchema = z.enum([
3
+ "passed",
4
+ "predicate_timeout",
5
+ "scenario_deadline",
6
+ "ambiguous_match",
7
+ "action_rejected",
8
+ "target_lost",
9
+ "capture_incomplete",
10
+ "cancelled",
11
+ "cleanup_failed",
12
+ ]);
13
+ const processReactiveTransitionShape = {
14
+ sequence: z.number().int().nonnegative(),
15
+ transition_id: z.string().min(1),
16
+ state_before: z.string().min(1),
17
+ trigger_event_ids: z.array(z.string().min(1)),
18
+ action_event_ids: z.array(z.string().min(1)),
19
+ action_types: z.array(z.enum([
20
+ "send_input",
21
+ "resize",
22
+ "close_stdin",
23
+ "send_signal",
24
+ "checkpoint",
25
+ ])),
26
+ };
27
+ const processReactiveTransitionSchema = z.union([
28
+ z.object({
29
+ ...processReactiveTransitionShape,
30
+ state_after: z.string().min(1),
31
+ outcome: z.null(),
32
+ }),
33
+ z.object({
34
+ ...processReactiveTransitionShape,
35
+ state_after: z.null(),
36
+ outcome: z.literal("passed"),
37
+ }),
38
+ ]);
39
+ const processReactiveRunShape = {
40
+ active_state: z.string().min(1),
41
+ controls: z
42
+ .array(z.object({
43
+ sequence: z.number().int().nonnegative(),
44
+ kind: z.enum([
45
+ "state_deadline",
46
+ "scenario_deadline",
47
+ "target_lost",
48
+ "cancelled",
49
+ "cleanup_failed",
50
+ ]),
51
+ after_capture_order: z.number().int().min(-1),
52
+ }))
53
+ .default([]),
54
+ transitions: z.array(processReactiveTransitionSchema),
55
+ };
56
+ /** Serialized reactive reducer state admitted by process capture. */
57
+ export const processReactiveRunSchema = z.discriminatedUnion("status", [
58
+ z.object({
59
+ status: z.literal("running"),
60
+ outcome: z.null(),
61
+ ...processReactiveRunShape,
62
+ }),
63
+ z.object({
64
+ status: z.literal("finished"),
65
+ outcome: processReactiveOutcomeSchema,
66
+ ...processReactiveRunShape,
67
+ }),
68
+ ]);