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,148 +1,89 @@
1
- import { isAbsolute, resolve } from "node:path";
2
1
  import { z } from "zod";
3
- import { browserEndpointSchema, browserOriginSchema, } from "./browserObservation.js";
4
- const boundedTextSchema = z.string().min(1).max(4_096);
5
- const runtimeFileRootsSchema = z
6
- .array(z
7
- .string()
8
- .min(1)
9
- .max(16_384)
10
- .refine(isAbsolute, "Runtime file roots must be absolute paths")
11
- .overwrite(resolve))
12
- .max(32)
13
- .overwrite((roots) => [...new Set(roots)].sort())
14
- .default([]);
15
- const runtimeOriginsSchema = z
16
- .array(browserOriginSchema)
17
- .max(32)
18
- .overwrite((origins) => [...new Set(origins)].sort())
19
- .default([]);
20
- const approvedRuntimeScope = {
2
+ import { browserEndpointSchema } from "./browserObservation.js";
3
+ const observationTextSchema = z.string().min(1);
4
+ const runtimeEndpoint = {
21
5
  inspector_endpoint: browserEndpointSchema,
22
- allowed_file_roots: runtimeFileRootsSchema,
23
- allowed_origins: runtimeOriginsSchema,
24
- approved: z.literal(true),
25
6
  };
26
- const requireRuntimeScope = (input, context) => {
27
- if (input.allowed_file_roots.length === 0 &&
28
- input.allowed_origins.length === 0)
29
- context.addIssue({
30
- code: "custom",
31
- path: ["allowed_file_roots"],
32
- message: "At least one exact file root or HTTP(S) origin is required",
33
- });
34
- };
35
- /** Input for listing approved Node/Electron V8 Inspector targets. */
36
- export const listJavaScriptRuntimeTargetsInputSchema = z
37
- .strictObject({
38
- ...approvedRuntimeScope,
39
- offset: z.number().int().min(0).default(0),
40
- limit: z.number().int().min(1).max(200).default(100),
41
- })
42
- .superRefine(requireRuntimeScope);
7
+ /** Input for listing targets exposed by an explicit Node/Electron Inspector endpoint. */
8
+ export const listJavaScriptRuntimeTargetsInputSchema = z.strictObject({
9
+ ...runtimeEndpoint,
10
+ });
43
11
  export const javascriptRuntimeKindSchema = z.enum([
44
12
  "node",
45
13
  "electron-main",
46
14
  "electron-preload",
47
15
  "electron-renderer",
48
16
  ]);
49
- export const javascriptRuntimeObservationLimitsSchema = z.strictObject({
50
- max_events: z.number().int().min(1).max(50_000).default(10_000),
51
- max_scripts: z.number().int().min(1).max(10_000).default(2_000),
52
- max_execution_contexts: z.number().int().min(1).max(5_000).default(1_000),
53
- max_location_bytes: z.number().int().min(64).max(65_536).default(16_384),
54
- max_total_metadata_bytes: z
55
- .number()
56
- .int()
57
- .min(1_024)
58
- .max(32 * 1_024 * 1_024)
59
- .default(4 * 1_024 * 1_024),
60
- });
17
+ const observedJavaScriptRuntimeKindSchema = javascriptRuntimeKindSchema.or(z.literal("unknown"));
61
18
  /** Input for one bounded, attach-only V8 Inspector observation. */
62
- export const observeJavaScriptRuntimeInputSchema = z
63
- .strictObject({
64
- ...approvedRuntimeScope,
65
- target_id: z.string().trim().min(1).max(256),
66
- runtime_kind: javascriptRuntimeKindSchema,
67
- observation_ms: z.number().int().min(0).max(10_000).default(100),
68
- limits: javascriptRuntimeObservationLimitsSchema.default({
69
- max_events: 10_000,
70
- max_scripts: 2_000,
71
- max_execution_contexts: 1_000,
72
- max_location_bytes: 16_384,
73
- max_total_metadata_bytes: 4 * 1_024 * 1_024,
74
- }),
75
- })
76
- .superRefine(requireRuntimeScope);
19
+ /** Input for one passive attach-only V8 Inspector observation. */
20
+ export const observeJavaScriptRuntimeInputSchema = z.strictObject({
21
+ ...runtimeEndpoint,
22
+ target_id: z.string().trim().min(1),
23
+ runtime_kind: javascriptRuntimeKindSchema.optional(),
24
+ observation_ms: z.number().int().min(0).default(100),
25
+ });
77
26
  export const javascriptRuntimeVersionSchema = z.strictObject({
78
- product: z.string().min(1).max(1_024),
79
- protocol_version: z.string().min(1).max(100),
80
- v8_version: z.string().max(1_024).nullable(),
27
+ product: z.string().min(1),
28
+ protocol_version: z.string().min(1),
29
+ v8_version: z.string().nullable(),
81
30
  });
82
31
  export const javascriptRuntimeLocationSchema = z.discriminatedUnion("kind", [
83
32
  z.strictObject({
84
33
  kind: z.literal("file"),
85
- file_path: z.string().min(1).max(16_384),
34
+ file_path: z.string().min(1),
86
35
  authority: z.literal("scope-fallback").optional(),
87
36
  }),
88
37
  z.strictObject({
89
38
  kind: z.literal("url"),
90
- origin: z.string().min(1).max(2_048),
91
- sanitized_url: z.string().min(1).max(65_536),
39
+ origin: z.string().min(1),
40
+ sanitized_url: z.string().min(1),
92
41
  }),
93
42
  z.strictObject({
94
43
  kind: z.literal("builtin"),
95
- specifier: z.string().min(1).max(4_096),
44
+ specifier: z.string().min(1),
96
45
  }),
97
46
  ]);
98
47
  const javascriptRuntimeTargetSchema = z.strictObject({
99
- target_id: z.string().min(1).max(256),
100
- protocol_type: z.string().min(1).max(100),
48
+ target_id: z.string().min(1),
49
+ protocol_type: z.string().min(1),
101
50
  attached: z.boolean(),
102
51
  location: javascriptRuntimeLocationSchema,
103
52
  });
104
- /** Root/origin-filtered V8 Inspector target inventory. */
53
+ /** Complete V8 Inspector target inventory exposed by the selected endpoint. */
105
54
  export const javascriptRuntimeTargetListSchema = z.strictObject({
106
- schema_version: z.literal(1),
107
55
  runtime: javascriptRuntimeVersionSchema,
108
- targets: z.strictObject({
109
- items: z.array(javascriptRuntimeTargetSchema),
110
- offset: z.number().int().min(0),
111
- limit: z.number().int().min(1),
112
- total: z.number().int().min(0),
113
- next_offset: z.number().int().min(0).nullable(),
114
- has_more: z.boolean(),
115
- }),
56
+ targets: z.array(javascriptRuntimeTargetSchema),
116
57
  excluded: z.strictObject({
117
- outside_file_roots: z.number().int().min(0),
118
- outside_origins: z.number().int().min(0),
119
58
  unsupported_location: z.number().int().min(0),
120
59
  unconnectable: z.number().int().min(0),
121
60
  }),
122
- limitations: z.array(boundedTextSchema).max(100),
61
+ limitations: z.array(observationTextSchema),
123
62
  });
124
63
  const javascriptRuntimeScriptSchema = z.strictObject({
125
64
  script_key: z.string().regex(/^v8_script_[a-f0-9]{64}$/u),
126
65
  location: javascriptRuntimeLocationSchema,
127
- execution_context_key: z.string().max(64).nullable(),
128
- cdp_hash: z.string().max(512).nullable(),
66
+ execution_context_key: z.string().nullable(),
67
+ cdp_hash: z.string().nullable(),
129
68
  length: z.number().int().min(0),
130
69
  is_module: z.boolean(),
131
70
  status: z.literal("observed-loaded"),
132
71
  });
133
72
  const javascriptRuntimeContextSchema = z.strictObject({
134
- context_key: z.string().min(1).max(64),
73
+ context_key: z.string().min(1),
135
74
  state: z.enum(["created", "destroyed", "cleared"]),
136
- name: z.string().max(1_024).nullable(),
137
- origin: z.string().max(4_096).nullable(),
75
+ name: z.string().nullable(),
76
+ origin: z.string().nullable(),
138
77
  });
139
78
  /** Deterministic passive script/context snapshot from one bounded window. */
140
79
  export const javascriptRuntimeObservationSchema = z.strictObject({
141
- schema_version: z.literal(1),
142
80
  runtime: javascriptRuntimeVersionSchema,
143
81
  target: javascriptRuntimeTargetSchema.extend({
144
- runtime_kind: javascriptRuntimeKindSchema,
145
- runtime_kind_authority: z.literal("caller-declared-unverified"),
82
+ runtime_kind: observedJavaScriptRuntimeKindSchema,
83
+ runtime_kind_authority: z.enum([
84
+ "caller-declared-unverified",
85
+ "not-declared",
86
+ ]),
146
87
  }),
147
88
  capture: z.strictObject({
148
89
  observation_ms: z.number().int().min(0),
@@ -151,21 +92,19 @@ export const javascriptRuntimeObservationSchema = z.strictObject({
151
92
  events_dropped: z.number().int().min(0),
152
93
  metadata_bytes_retained: z.number().int().min(0),
153
94
  truncated: z.boolean(),
154
- truncation_reasons: z.array(boundedTextSchema).max(20),
95
+ truncation_reasons: z.array(observationTextSchema),
155
96
  }),
156
97
  scripts: z.strictObject({
157
98
  items: z.array(javascriptRuntimeScriptSchema),
158
99
  observed_total: z.number().int().min(0),
159
100
  excluded: z.strictObject({
160
- outside_file_roots: z.number().int().min(0),
161
- outside_origins: z.number().int().min(0),
162
101
  unsupported_location: z.number().int().min(0),
163
102
  invalid_protocol_value: z.number().int().min(0),
164
103
  }),
165
104
  }),
166
105
  execution_contexts: z.array(javascriptRuntimeContextSchema),
167
- directly_observed: z.array(boundedTextSchema).max(20),
168
- unavailable_without_instrumentation: z.array(boundedTextSchema).max(20),
169
- unknowns: z.array(boundedTextSchema).max(100),
170
- limitations: z.array(boundedTextSchema).max(100),
106
+ directly_observed: z.array(observationTextSchema),
107
+ unavailable_without_instrumentation: z.array(observationTextSchema),
108
+ unknowns: z.array(observationTextSchema),
109
+ limitations: z.array(observationTextSchema),
171
110
  });
@@ -11,16 +11,14 @@ export const reconcileJavaScriptRuntime = (input) => {
11
11
  const parsed = reconcileJavaScriptRuntimeInputSchema.parse(input);
12
12
  const layers = parseStaticLayers(parsed.static_layers);
13
13
  const captures = parseRuntimeCaptures(parsed.runtime_observations);
14
- const runtime = projectRuntimeCaptures(captures, parsed.limits.max_runtime_entities);
14
+ const runtime = projectRuntimeCaptures(captures);
15
15
  const candidates = collectStaticRuntimeCandidates(layers);
16
16
  const matching = reconcileRuntimeEntities({
17
17
  entities: runtime.entities,
18
18
  candidates,
19
19
  layers,
20
- maximumItems: parsed.limits.max_reconciliation_items,
21
20
  });
22
21
  const loadStates = classifyStaticLoadStates(layers, runtime.entities, matching.items, {
23
- maximumStates: parsed.limits.max_static_load_states,
24
22
  reconciliationComplete: runtime.omittedEntities === 0 && matching.omittedItems === 0,
25
23
  });
26
24
  const graph = buildReconciledApplicationGraph({
@@ -1,5 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
- import { isAbsolute, relative } from "node:path";
2
+ import { isAbsolute } from "node:path";
3
+ import { isPathWithinRoot } from "./localPath.js";
3
4
  import canonicalize from "canonicalize";
4
5
  import { z } from "zod";
5
6
  import { classifyBrowserCompleteness, } from "./browserCompleteness.js";
@@ -10,15 +11,14 @@ export const parseActiveElectronCapture = (evidence) => {
10
11
  const result = electronActiveObservationResultSchema.parse(evidence.normalized_result);
11
12
  const parameters = z
12
13
  .object({
13
- approved: z.literal(true),
14
14
  application_path: absolutePathSchema,
15
15
  application_root: absolutePathSchema,
16
16
  })
17
17
  .passthrough()
18
18
  .parse(evidence.parameters);
19
19
  if (result.application.application_path !== parameters.application_path ||
20
- !isWithinRoot(parameters.application_root, result.application.application_path))
21
- throw new TypeError("Active Electron Evidence application path disagrees with its approved root");
20
+ !isPathWithinRoot(parameters.application_root, result.application.application_path))
21
+ throw new TypeError("Active Electron Evidence application path disagrees with its configured root");
22
22
  return {
23
23
  kind: "electron-active",
24
24
  evidence,
@@ -27,10 +27,10 @@ export const parseActiveElectronCapture = (evidence) => {
27
27
  scriptsCompleteWithinScope: false,
28
28
  };
29
29
  };
30
- const absolutePathSchema = z.string().min(1).max(16_384).refine(isAbsolute);
30
+ const absolutePathSchema = z.string().min(1).refine(isAbsolute);
31
31
  const assertIdentity = (evidence) => {
32
32
  if (evidence.operation !== "capture_electron_scenario" ||
33
- evidence.predicate_type !== "rea.electron-active-scenario/v1" ||
33
+ evidence.predicate_type !== "rea.electron-active-scenario" ||
34
34
  evidence.provider.id !== "rea-playwright-electron-active" ||
35
35
  evidence.provider.name !==
36
36
  "REA Playwright active Electron observation provider" ||
@@ -53,12 +53,7 @@ const normalizeInspection = (result) => ({
53
53
  completeness: classifyBrowserCompleteness({
54
54
  policyFilteredSections: new Set(),
55
55
  attachLimitedSections: new Set(),
56
- truncatedSections: new Set(result.windows_truncated ||
57
- result.processes.truncated ||
58
- result.ipc.truncated ||
59
- result.timeline.truncated
60
- ? ["timeline"]
61
- : []),
56
+ truncatedSections: new Set(),
62
57
  unavailableSections: new Set([
63
58
  "frames",
64
59
  "scripts",
@@ -73,7 +68,7 @@ const normalizeInspection = (result) => ({
73
68
  websocket_connections: 0,
74
69
  websocket_frames: 0,
75
70
  webmcp_tools: 0,
76
- timeline_events: result.timeline.truncated ? result.timeline.observed : 0,
71
+ timeline_events: 0,
77
72
  },
78
73
  }),
79
74
  });
@@ -83,7 +78,3 @@ const digestCanonical = (value) => {
83
78
  throw new TypeError("Runtime reconciliation could not canonicalize input");
84
79
  return createHash("sha256").update(encoded).digest("hex");
85
80
  };
86
- const isWithinRoot = (root, path) => {
87
- const remainder = relative(root, path);
88
- return (remainder === "" || (!remainder.startsWith("..") && !isAbsolute(remainder)));
89
- };
@@ -10,11 +10,10 @@ export const buildReconciledApplicationGraph = (input) => {
10
10
  ...input.runtime.edges,
11
11
  ...input.reconciliationEdges,
12
12
  ]);
13
- const bounded = boundGraphContent(input, merged.nodes, allEdges);
14
- const facts = graphCoverageFacts(input, merged.omittedObservations + bounded.omittedItems);
13
+ const bounded = boundGraphContent(input, merged, allEdges);
14
+ const facts = graphCoverageFacts(input, bounded.omittedItems);
15
15
  const graph = createJavaScriptApplicationGraph({
16
16
  schema: "JavaScriptApplicationGraph",
17
- schema_version: 1,
18
17
  root_node_ids: bounded.rootNodeIds,
19
18
  nodes: bounded.nodes,
20
19
  edges: bounded.edges,
@@ -31,38 +30,30 @@ export const buildReconciledApplicationGraph = (input) => {
31
30
  : []),
32
31
  ...(facts.outputTruncated
33
32
  ? [
34
- "The reconciled graph omitted entities or classifications at caller limits.",
33
+ "The reconciled graph omitted entities or classifications during projection.",
35
34
  ]
36
35
  : []),
37
36
  ]),
38
37
  });
39
38
  return {
40
39
  graph,
41
- omittedGraphItems: merged.omittedObservations + bounded.omittedItems,
40
+ omittedGraphItems: bounded.omittedItems,
42
41
  };
43
42
  };
44
43
  const boundGraphContent = (input, nodes, edges) => {
45
44
  const allRoots = preferredRootIds(input);
46
- const rootNodeIds = allRoots.slice(0, 1_000);
47
- const roots = new Set(rootNodeIds);
45
+ const rootNodeIds = allRoots;
48
46
  const sortedNodes = [...nodes].sort((left, right) => compareCodePoints(left.node_id, right.node_id));
49
- const retainedNodes = [
50
- ...sortedNodes.filter(({ node_id: id }) => roots.has(id)),
51
- ...sortedNodes.filter(({ node_id: id }) => !roots.has(id)),
52
- ].slice(0, 100_000);
47
+ const retainedNodes = sortedNodes;
53
48
  const retainedIds = new Set(retainedNodes.map(({ node_id: id }) => id));
54
49
  const retainedEdges = [...edges]
55
50
  .sort((left, right) => compareCodePoints(left.edge_id, right.edge_id))
56
- .filter(({ source_node_id: source, target_node_id: target }) => retainedIds.has(source) && retainedIds.has(target))
57
- .slice(0, 200_000);
51
+ .filter(({ source_node_id: source, target_node_id: target }) => retainedIds.has(source) && retainedIds.has(target));
58
52
  return {
59
53
  rootNodeIds,
60
54
  nodes: retainedNodes,
61
55
  edges: retainedEdges,
62
- omittedItems: allRoots.length -
63
- rootNodeIds.length +
64
- (nodes.length - retainedNodes.length) +
65
- (edges.length - retainedEdges.length),
56
+ omittedItems: 0,
66
57
  };
67
58
  };
68
59
  const preferredRootIds = (input) => {
@@ -140,7 +131,6 @@ const mergeNodes = (nodes) => {
140
131
  const grouped = new Map();
141
132
  for (const node of nodes)
142
133
  grouped.set(node.node_id, [...(grouped.get(node.node_id) ?? []), node]);
143
- let omittedObservations = 0;
144
134
  const merged = [...grouped.values()].map((group) => {
145
135
  const first = group[0];
146
136
  if (first === undefined)
@@ -153,16 +143,13 @@ const mergeNodes = (nodes) => {
153
143
  .flatMap(({ observations: values }) => values)
154
144
  .map((observation) => [observation.observation_id, observation])).values(),
155
145
  ].sort((left, right) => compareCodePoints(left.observation_id, right.observation_id));
156
- omittedObservations += Math.max(0, observations.length - 64);
157
146
  return createJavaScriptApplicationNode({
158
147
  kind: first.kind,
159
148
  identity: first.identity,
160
- observations: observations
161
- .slice(0, 64)
162
- .map(({ observation_id: _id, identifier_strategy: _strategy, ...value }) => value),
149
+ observations: observations.map(({ observation_id: _id, identifier_strategy: _strategy, ...value }) => value),
163
150
  });
164
151
  });
165
- return { nodes: merged, omittedObservations };
152
+ return merged;
166
153
  };
167
154
  const uniqueEdges = (edges) => [
168
155
  ...new Map(edges.map((edge) => [edge.edge_id, edge])).values(),
@@ -5,13 +5,11 @@ import { mappedRuntimePaths, } from "./javascriptRuntimeStaticCandidates.js";
5
5
  export const reconcileRuntimeEntities = (input) => {
6
6
  const index = indexCandidates(input.candidates);
7
7
  const evaluated = input.entities.map((entity) => reconcileEntity(entity, index, input.layers));
8
- const retained = evaluated
9
- .sort((left, right) => compareCodePoints(left.item.reconciliation_id, right.item.reconciliation_id))
10
- .slice(0, input.maximumItems);
8
+ const retained = evaluated.sort((left, right) => compareCodePoints(left.item.reconciliation_id, right.item.reconciliation_id));
11
9
  return {
12
10
  items: retained.map(({ item }) => item),
13
11
  edges: retained.flatMap(({ edge }) => (edge === null ? [] : [edge])),
14
- omittedItems: evaluated.length - retained.length,
12
+ omittedItems: 0,
15
13
  };
16
14
  };
17
15
  const reconcileEntity = (entity, index, layers) => {
@@ -159,13 +157,22 @@ const unresolved = (entity, input) => ({
159
157
  });
160
158
  const createItem = (entity, input) => {
161
159
  const candidateReferences = uniqueCandidateReferences(input.candidates);
160
+ const staticMatch = input.status === "matched"
161
+ ? {
162
+ static_layer_id: input.layer.layerId,
163
+ static_node_id: input.staticNodeId,
164
+ status: input.status,
165
+ }
166
+ : {
167
+ static_layer_id: null,
168
+ static_node_id: null,
169
+ status: input.status,
170
+ };
162
171
  const semantic = {
163
172
  entity_kind: entity.kind,
164
173
  runtime_evidence_id: entity.capture.evidence.evidence_id,
165
174
  runtime_node_id: entity.node.node_id,
166
- static_layer_id: input.layer?.layerId ?? null,
167
- static_node_id: input.staticNodeId,
168
- status: input.status,
175
+ ...staticMatch,
169
176
  basis: input.basis,
170
177
  confidence: input.confidence,
171
178
  reason: input.reason,
@@ -245,11 +252,10 @@ const uniqueCandidateReferences = (candidates) => {
245
252
  continue;
246
253
  seen.add(key);
247
254
  count += 1;
248
- if (items.length < 1_000)
249
- items.push({
250
- static_layer_id: layer.layerId,
251
- static_node_id: node.node_id,
252
- });
255
+ items.push({
256
+ static_layer_id: layer.layerId,
257
+ static_node_id: node.node_id,
258
+ });
253
259
  }
254
260
  return { count, items };
255
261
  };
@@ -1,10 +1,9 @@
1
1
  import { createHash } from "node:crypto";
2
- import { isAbsolute, relative } from "node:path";
3
2
  import canonicalize from "canonicalize";
4
3
  import { z } from "zod";
5
- import { browserAllowedOriginsSchema, browserEndpointSchema, browserOriginSchema, webPageInspectionSchema, } from "./browserObservation.js";
4
+ import { browserAllowedOriginsSchema, browserEndpointSchema, webPageInspectionSchema, } from "./browserObservation.js";
6
5
  import { classifyBrowserCompleteness, } from "./browserCompleteness.js";
7
- import { electronFileRootsSchema, electronPageInspectionSchema, } from "./electronObservation.js";
6
+ import { electronPageInspectionSchema, } from "./electronObservation.js";
8
7
  import { javascriptRuntimeObservationSchema, javascriptRuntimeKindSchema, } from "./javascriptRuntimeObservation.js";
9
8
  import { parseEvidence } from "./evidence.js";
10
9
  import { javascriptApplicationAnalysisResultSchema, } from "./javascriptApplicationAnalysis.js";
@@ -29,7 +28,7 @@ const parseStaticLayer = (layer) => {
29
28
  const result = javascriptApplicationAnalysisResultSchema.parse(evidence.normalized_result);
30
29
  assertEvidenceIdentity(evidence, {
31
30
  operation: "analyze_javascript_application",
32
- predicate: `rea.javascript-application-analysis/v${String(result.schema_version)}`,
31
+ predicate: "rea.javascript-application-analysis",
33
32
  providerId: "rea-javascript-application",
34
33
  providerName: "REA JavaScript application analyzer",
35
34
  providerVersion: "1",
@@ -41,13 +40,6 @@ const parseStaticLayer = (layer) => {
41
40
  evidence.subject.format !== result.format ||
42
41
  evidence.subject.local_path !== result.input_path)
43
42
  throw new TypeError("JavaScript application Evidence subject disagrees with its result");
44
- const parameters = z
45
- .object({
46
- approved: z.literal(true),
47
- source_map_read_approved: z.boolean(),
48
- })
49
- .passthrough()
50
- .parse(evidence.parameters);
51
43
  return {
52
44
  layerId: `jrl_${digestCanonical({
53
45
  role: layer.role,
@@ -59,7 +51,6 @@ const parseStaticLayer = (layer) => {
59
51
  result,
60
52
  graph: result.graph,
61
53
  runtimeMappings: layer.runtime_mappings,
62
- sourceMapReadApproved: parameters.source_map_read_approved,
63
54
  };
64
55
  };
65
56
  const parseRuntimeCapture = (input) => {
@@ -67,7 +58,7 @@ const parseRuntimeCapture = (input) => {
67
58
  if (evidence.operation === "inspect_web_page") {
68
59
  assertEvidenceIdentity(evidence, {
69
60
  operation: "inspect_web_page",
70
- predicate: "rea.web-page-inspection/v2",
61
+ predicate: "rea.web-page-inspection",
71
62
  providerId: "rea-cdp-browser",
72
63
  providerName: "REA Chrome DevTools Protocol observation provider",
73
64
  providerVersion: "2",
@@ -92,7 +83,7 @@ const parseRuntimeCapture = (input) => {
92
83
  if (evidence.operation === "inspect_electron_page") {
93
84
  assertEvidenceIdentity(evidence, {
94
85
  operation: "inspect_electron_page",
95
- predicate: "rea.electron-page-inspection/v1",
86
+ predicate: "rea.electron-page-inspection",
96
87
  providerId: "rea-cdp-electron",
97
88
  providerName: "REA Electron file-page CDP observation provider",
98
89
  providerVersion: "1",
@@ -116,7 +107,7 @@ const parseRuntimeCapture = (input) => {
116
107
  if (evidence.operation === "observe_javascript_runtime") {
117
108
  assertEvidenceIdentity(evidence, {
118
109
  operation: "observe_javascript_runtime",
119
- predicate: "rea.javascript-runtime-observation/v1",
110
+ predicate: "rea.javascript-runtime-observation",
120
111
  providerId: "rea-v8-inspector",
121
112
  providerName: "REA passive Node/Electron V8 Inspector provider",
122
113
  providerVersion: "1",
@@ -143,32 +134,21 @@ const assertV8RuntimeParameters = (evidence, result) => {
143
134
  const parameters = z
144
135
  .object({
145
136
  inspector_endpoint: browserEndpointSchema,
146
- allowed_file_roots: z
147
- .array(z.string().min(1).max(16_384).refine(isAbsolute))
148
- .max(32),
149
- allowed_origins: z.array(browserOriginSchema).max(32),
150
- target_id: z.string().trim().min(1).max(256),
151
- runtime_kind: javascriptRuntimeKindSchema,
137
+ target_id: z.string().trim().min(1),
138
+ runtime_kind: javascriptRuntimeKindSchema.optional(),
152
139
  })
153
140
  .passthrough()
154
141
  .parse(evidence.parameters);
155
142
  if (parameters.target_id !== result.target.target_id ||
156
- parameters.runtime_kind !== result.target.runtime_kind)
143
+ (parameters.runtime_kind !== undefined &&
144
+ parameters.runtime_kind !== result.target.runtime_kind))
157
145
  throw new TypeError("Runtime Evidence target or declared role disagrees with its result");
158
146
  for (const location of [
159
147
  result.target.location,
160
148
  ...result.scripts.items.map(({ location }) => location),
161
149
  ])
162
- if ((location.kind === "file" &&
163
- !parameters.allowed_file_roots.some((root) => isWithinRoot(root, location.file_path))) ||
164
- (location.kind === "url" &&
165
- !parameters.allowed_origins.includes(location.origin)) ||
166
- (location.kind === "builtin" && !location.specifier.startsWith("node:")))
167
- throw new TypeError("Runtime Evidence contains a location outside its recorded scope");
168
- };
169
- const isWithinRoot = (root, path) => {
170
- const remainder = relative(root, path);
171
- return (remainder === "" || (!remainder.startsWith("..") && !isAbsolute(remainder)));
150
+ if (location.kind === "builtin" && !location.specifier.startsWith("node:"))
151
+ throw new TypeError("Runtime Evidence contains an invalid builtin location");
172
152
  };
173
153
  const normalizeV8Inspection = (result) => ({
174
154
  target: {
@@ -235,7 +215,7 @@ const runtimeLocation = (location) => {
235
215
  const excludedV8Scripts = (result) => Object.values(result.scripts.excluded).reduce((total, count) => total + count, 0);
236
216
  const assertRuntimeParameters = (evidence, expected) => {
237
217
  const common = {
238
- target_id: z.string().trim().min(1).max(256),
218
+ target_id: z.string().trim().min(1),
239
219
  cdp_endpoint: browserEndpointSchema,
240
220
  include_script_sources: z.boolean(),
241
221
  };
@@ -252,20 +232,11 @@ const assertRuntimeParameters = (evidence, expected) => {
252
232
  throw new TypeError("Runtime Evidence contains source without source-capture approval");
253
233
  return;
254
234
  }
255
- const parameters = z
256
- .object({
257
- ...common,
258
- allowed_file_roots: electronFileRootsSchema,
259
- source_capture_approved: z.boolean(),
260
- })
261
- .passthrough()
262
- .parse(evidence.parameters);
235
+ const parameters = z.object(common).passthrough().parse(evidence.parameters);
263
236
  if (parameters.target_id !== expected.targetId)
264
237
  throw new TypeError("Runtime Evidence target disagrees with its captured result");
265
- if (expected.sourceIncluded &&
266
- (!parameters.include_script_sources ||
267
- parameters.source_capture_approved !== true))
268
- throw new TypeError("Runtime Evidence contains source without source-capture approval");
238
+ if (expected.sourceIncluded && !parameters.include_script_sources)
239
+ throw new TypeError("Runtime Evidence contains source without source-capture selection");
269
240
  };
270
241
  const scriptsComplete = (completeness) => !completeness.truncated_sections.includes("scripts") &&
271
242
  !completeness.unavailable_sections.includes("scripts") &&
@@ -5,7 +5,6 @@ import { javascriptRuntimeReconciliationResultSchema, } from "./javascriptRuntim
5
5
  export const createJavaScriptRuntimeReconciliationResult = (input) => {
6
6
  const completion = completionFlags(input);
7
7
  const semantic = {
8
- schema_version: 1,
9
8
  static_layers: staticLayerSummaries(input.layers),
10
9
  runtime_captures: captureSummaries(input.captures, input.runtime),
11
10
  graph: input.graph,
@@ -45,9 +44,9 @@ const captureSummaries = (captures, runtime) => captures.map((capture) => {
45
44
  kind: capture.kind,
46
45
  target_node_id: targetNode.node_id,
47
46
  target_key: capture.inspection.target.target_id,
48
- target_location: ("url" in capture.inspection.target
47
+ target_location: "url" in capture.inspection.target
49
48
  ? capture.inspection.target.url
50
- : capture.inspection.target.file_path).slice(0, 4_096),
49
+ : capture.inspection.target.file_path,
51
50
  frames: capture.inspection.frames.length,
52
51
  scripts: capture.inspection.scripts.items.length,
53
52
  workers: capture.inspection.workers.length,
@@ -70,7 +69,7 @@ const reconciliationSummary = (input) => ({
70
69
  });
71
70
  const sourceMapAuthority = (input) => ({
72
71
  used_for_primary_matching: false,
73
- static_layers_with_read_approval: input.layers.filter(({ sourceMapReadApproved }) => sourceMapReadApproved).length,
72
+ static_layer_count: input.layers.length,
74
73
  runtime_script_declarations: input.captures.reduce((total, capture) => total +
75
74
  (capture.kind === "browser"
76
75
  ? capture.inspection.scripts.items.filter(({ source_map_url: url }) => url !== null).length
@@ -118,7 +117,7 @@ const reconciliationLimitations = (completion) => uniqueSorted([
118
117
  : []),
119
118
  ...(completion.outputTruncated
120
119
  ? [
121
- "Caller limits omitted runtime entities or reconciliation classifications.",
120
+ "Runtime reconciliation omitted entities or classifications during projection.",
122
121
  ]
123
122
  : []),
124
123
  ]);