rea-agents 6.0.0 → 6.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 (611) hide show
  1. package/README.md +26 -18
  2. package/bridge/android/ReaJadxBridge.java +14 -5
  3. package/bridge/ghidra/ReaGhidraBridge.java +205 -51
  4. package/bridge/hopper_bridge.py +314 -127
  5. package/bridge/mitmproxy/capture.py +0 -2
  6. package/bridge/native/rea_lldb_tracer.py +630 -94
  7. package/bridge/process/ProcessRunTokenReader.swift +39 -5
  8. package/bridge/pwntools/recorded_crash_impl.py +4 -0
  9. package/dist/android/JadxConfiguration.js +274 -31
  10. package/dist/android/JadxMcpTransport.js +18 -2
  11. package/dist/android/JadxProtocol.js +6 -0
  12. package/dist/android/JadxProvider.js +76 -37
  13. package/dist/android/JadxSession.js +23 -4
  14. package/dist/application/AnalysisContextQueries.js +8 -35
  15. package/dist/application/AnalysisDocument.js +32 -0
  16. package/dist/application/AppBundleExecutable.js +67 -21
  17. package/dist/application/BinaryTargetResolver.js +5 -3
  18. package/dist/application/BrowserEvidence.js +3 -8
  19. package/dist/application/BrowserScenarioEvidence.js +2 -18
  20. package/dist/application/CallPathTracing.js +19 -3
  21. package/dist/application/CapabilityInventory.js +48 -11
  22. package/dist/application/ClientConfigurationDocument.js +917 -8
  23. package/dist/application/ClientRegistrationIdentity.js +26 -5
  24. package/dist/application/ClientRegistrationStatus.js +29 -14
  25. package/dist/application/DirectAnalysis.js +56 -51
  26. package/dist/application/DirectAnalysisCleanup.js +72 -0
  27. package/dist/application/DirectAnalysisStatus.js +4 -5
  28. package/dist/application/Doctor.js +19 -21
  29. package/dist/application/DoctorDiagnostics.js +1 -2
  30. package/dist/application/DoctorScope.js +25 -13
  31. package/dist/application/EnhancedLiteralTracing.js +22 -25
  32. package/dist/application/EnhancedTools.js +64 -17
  33. package/dist/application/EvidenceBundleFiles.js +30 -13
  34. package/dist/application/FunctionAnalysisEvidence.js +2 -3
  35. package/dist/application/InventoryProjectionEvidence.js +4 -3
  36. package/dist/application/InvestigationProviders.js +11 -2
  37. package/dist/application/JsonFiles.js +83 -28
  38. package/dist/application/LinuxHopper.js +9 -6
  39. package/dist/application/MacHopper.js +15 -18
  40. package/dist/application/ProcedureAddressResolution.js +11 -0
  41. package/dist/application/RealHopperAssertions.js +0 -11
  42. package/dist/application/ReconstructionCoverageService.js +7 -4
  43. package/dist/application/ReconstructionObligationCandidates.js +1 -1
  44. package/dist/application/ReconstructionObligationLedgerService.js +4 -3
  45. package/dist/application/ReferenceSourceImportEntries.js +1 -1
  46. package/dist/application/Setup.js +21 -17
  47. package/dist/application/SetupClientConfiguration.js +10 -15
  48. package/dist/application/SetupHost.js +21 -29
  49. package/dist/application/SetupPlan.js +11 -9
  50. package/dist/application/SupportedClients.js +34 -1
  51. package/dist/application/Uninstall.js +82 -29
  52. package/dist/application/Update.js +18 -3
  53. package/dist/application/UpdateMaintenance.js +7 -5
  54. package/dist/application/UpdateRuntime.js +57 -36
  55. package/dist/application/WebModuleTraceService.js +4 -2
  56. package/dist/application/WebNetworkCaptureService.js +4 -2
  57. package/dist/application/WebRuntimeService.js +5 -3
  58. package/dist/application/WebScriptExportService.js +32 -6
  59. package/dist/application/WebSourceLocationService.js +4 -2
  60. package/dist/application/WorkflowEvidence.js +105 -0
  61. package/dist/application/XrefsAddressResolution.js +45 -0
  62. package/dist/application/analysisView/AnalysisViewService.js +76 -0
  63. package/dist/application/binary/AnalysisClientCleanup.js +30 -5
  64. package/dist/application/binary/AnalysisProviderEvaluation.js +22 -7
  65. package/dist/application/binary/AnalysisProviderRegistry.js +4 -6
  66. package/dist/application/binary/AnalysisSnapshotCache.js +13 -14
  67. package/dist/application/binary/BinarySession.js +161 -93
  68. package/dist/application/binary/BinarySessionComposition.js +1 -3
  69. package/dist/application/binary/BinarySessionExecution.js +3 -5
  70. package/dist/application/binary/BinarySessionOpen.js +4 -4
  71. package/dist/application/binary/BinarySessionRecords.js +26 -4
  72. package/dist/application/binary/BinarySessionStatus.js +18 -7
  73. package/dist/application/binary/CompositeProvider.js +16 -17
  74. package/dist/application/binary/LazyAnalysisProvider.js +8 -5
  75. package/dist/application/binary/SessionProviderRouter.js +27 -135
  76. package/dist/application/binaryDiagnostics/BinaryLayoutService.js +4 -2
  77. package/dist/application/binaryDiagnostics/RecordedCrashService.js +4 -2
  78. package/dist/application/evm/EvmInterfaceService.js +4 -2
  79. package/dist/application/homebrew.js +48 -0
  80. package/dist/application/investigation/EvidenceLedger.js +21 -7
  81. package/dist/application/investigation/InvestigationRecords.js +8 -0
  82. package/dist/application/javascript/ElectronActiveEvidence.js +9 -13
  83. package/dist/application/javascript/JavaScriptAnalysisControl.js +34 -0
  84. package/dist/application/javascript/JavaScriptApplicationEvidence.js +21 -4
  85. package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +19 -2
  86. package/dist/application/javascript/JavaScriptApplicationService.js +27 -15
  87. package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +5 -5
  88. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +10 -7
  89. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +44 -10
  90. package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +11 -3
  91. package/dist/application/javascript/JavaScriptArtifactGraphContext.js +9 -0
  92. package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +8 -5
  93. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +12 -3
  94. package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +0 -1
  95. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +49 -19
  96. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +56 -8
  97. package/dist/application/javascript/JavaScriptModuleRelationships.js +38 -9
  98. package/dist/application/javascript/JavaScriptRecoveryService.js +4 -2
  99. package/dist/application/javascript/JavaScriptRuntimeObservationService.js +6 -4
  100. package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +3 -3
  101. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +2 -3
  102. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +63 -61
  103. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +1 -2
  104. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +2 -3
  105. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +1 -5
  106. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +75 -46
  107. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
  108. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +64 -19
  109. package/dist/application/managed/ManagedApplicationGraphService.js +4 -3
  110. package/dist/application/managed/ManagedMemberComparisonService.js +9 -5
  111. package/dist/application/managed/ManagedNativeVerificationService.js +6 -4
  112. package/dist/application/managed/ManagedReconstructionService.js +4 -3
  113. package/dist/application/process/ProcessCli.js +25 -17
  114. package/dist/application/process/ProcessEvidence.js +4 -4
  115. package/dist/application/workflowInputError.js +18 -0
  116. package/dist/artifacts/ArtifactProvider.js +48 -13
  117. package/dist/artifacts/ArtifactReader.js +31 -0
  118. package/dist/artifacts/DirectoryArtifactReader.js +2 -1
  119. package/dist/artifacts/MachOSliceArtifactReader.js +106 -15
  120. package/dist/artifacts/NativeDmgArtifactReader.js +73 -21
  121. package/dist/artifacts/SafeOutputTree.js +16 -2
  122. package/dist/artifacts/ZipArtifactReader.js +11 -4
  123. package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +26 -5
  124. package/dist/artifacts/apple/DylibResolutionReader.js +17 -7
  125. package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +176 -56
  126. package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +195 -0
  127. package/dist/artifacts/apple/KeyedArchiveReader.js +55 -23
  128. package/dist/artifacts/apple/MachoLoadCommandReader.js +92 -31
  129. package/dist/artifacts/apple/NibArchive.js +81 -14
  130. package/dist/artifacts/apple/NibViewHierarchy.js +10 -3
  131. package/dist/artifacts/apple/PlistNumberLiterals.js +164 -0
  132. package/dist/artifacts/extraction/ArtifactExtraction.js +78 -21
  133. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +79 -68
  134. package/dist/artifacts/inventory/ArtifactInventory.js +0 -1
  135. package/dist/artifacts/inventory/reader.js +3 -3
  136. package/dist/artifacts/inventory/scanCanonical.js +59 -38
  137. package/dist/artifacts/inventory/scanReader.js +5 -9
  138. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +6 -2
  139. package/dist/browser/BrowserScenarioPartialObservation.js +106 -0
  140. package/dist/browser/CdpBrowserProvider.js +2 -3
  141. package/dist/browser/CdpCaptureCompleteness.js +2 -0
  142. package/dist/browser/CdpCaptureEventHandlers.js +78 -15
  143. package/dist/browser/CdpCaptureEventTypes.js +5 -1
  144. package/dist/browser/CdpCaptureEvents.js +25 -1
  145. package/dist/browser/CdpCaptureValues.js +20 -0
  146. package/dist/browser/CdpConnection.js +30 -11
  147. package/dist/browser/CdpElectronProvider.js +0 -2
  148. package/dist/browser/CdpElectronScriptEvents.js +2 -8
  149. package/dist/browser/CdpElectronScripts.js +2 -3
  150. package/dist/browser/CdpOptionalCommand.js +2 -3
  151. package/dist/browser/CdpPageCapture.js +23 -1
  152. package/dist/browser/CdpPageCaptureScripts.js +2 -3
  153. package/dist/browser/CdpSafeMetadata.js +10 -10
  154. package/dist/browser/PlaywrightBrowserScenarioProvider.js +59 -44
  155. package/dist/browser/PlaywrightElectronActiveActions.js +34 -79
  156. package/dist/browser/PlaywrightElectronActiveProjection.js +141 -0
  157. package/dist/browser/PlaywrightElectronActiveProvider.js +133 -130
  158. package/dist/browser/PlaywrightScenarioArtifacts.js +1 -1
  159. package/dist/browser/PlaywrightScenarioBrowser.js +139 -39
  160. package/dist/browser/PlaywrightScenarioEvents.js +1 -1
  161. package/dist/browser/PlaywrightScenarioSession.js +39 -22
  162. package/dist/browser/WebSourceMapFetcher.js +426 -72
  163. package/dist/browser/assets/LocalWebScriptArtifacts.js +2 -2
  164. package/dist/browser/assets/ScriptCaptureAdapters.js +1 -1
  165. package/dist/browser/history/CaptureFailures.js +41 -1
  166. package/dist/browser/history/CaptureRelease.js +5 -0
  167. package/dist/browser/history/HarCaptureAdapter.js +3 -3
  168. package/dist/browser/history/HarJson.js +3 -2
  169. package/dist/browser/history/HistoricalCaptureDecoder.js +4 -2
  170. package/dist/browser/history/MitmproxyCaptureAdapter.js +4 -2
  171. package/dist/catalogIdentity.js +0 -1
  172. package/dist/cli/analysisSelector.js +23 -0
  173. package/dist/cli/analysisViewCommands.js +36 -0
  174. package/dist/cli/applicationCommands.js +2 -3
  175. package/dist/cli/artifactCommands.js +11 -12
  176. package/dist/cli/coreAnalysisCommands.js +3 -3
  177. package/dist/cli/coreBinaryCommands.js +100 -37
  178. package/dist/cli/coreNativeCommands.js +9 -10
  179. package/dist/cli/electronCommands.js +10 -9
  180. package/dist/cli/interactiveSetup.js +6 -6
  181. package/dist/cli/javascriptApplicationAnalysis.js +7 -3
  182. package/dist/cli/jsonOutput.js +4 -99
  183. package/dist/cli/managedCommands.js +7 -8
  184. package/dist/cli/nativeCallCommands.js +3 -5
  185. package/dist/cli/omittableDefaults.js +50 -0
  186. package/dist/cli/processCommands.js +3 -2
  187. package/dist/cli/setupCommands.js +16 -15
  188. package/dist/cli/utilityCommands.js +9 -9
  189. package/dist/cli/webRuntimeCommands.js +8 -8
  190. package/dist/cli.js +18 -9
  191. package/dist/cliBrowserScenarioCommands.js +2 -2
  192. package/dist/cliCommandNames.js +1 -1
  193. package/dist/cliJsonInput.js +24 -5
  194. package/dist/cliOutput.js +0 -38
  195. package/dist/composition/auxiliaryAnalysisProviders.js +27 -23
  196. package/dist/composition/binary.js +9 -9
  197. package/dist/composition/browserScenario.js +2 -1
  198. package/dist/composition/directAnalysis.js +20 -13
  199. package/dist/composition/electronScenario.js +1 -1
  200. package/dist/composition/optionalObservationProviders.js +12 -7
  201. package/dist/config/environment.js +10 -0
  202. package/dist/config/ghidraStartupTimeout.js +12 -0
  203. package/dist/config/homeDirectory.js +12 -0
  204. package/dist/config/mcpResponseBudget.js +30 -0
  205. package/dist/config/parseConfig.js +8 -3
  206. package/dist/config/parsers.js +19 -22
  207. package/dist/contracts/analysisViewToolContracts.js +56 -0
  208. package/dist/contracts/applicationToolContracts.js +5 -4
  209. package/dist/contracts/artifactComparisonExample.js +2 -2
  210. package/dist/contracts/artifactToolContracts.js +1 -1
  211. package/dist/contracts/browserScenarioToolContracts.js +1 -1
  212. package/dist/contracts/browserToolContracts.js +19 -15
  213. package/dist/contracts/enhancedInputs.js +7 -5
  214. package/dist/contracts/enhancedToolContracts.js +7 -6
  215. package/dist/contracts/evm/evmToolContracts.js +1 -1
  216. package/dist/contracts/functionWorkflowToolContracts.js +1 -1
  217. package/dist/contracts/hopperMemoryContracts.js +2 -5
  218. package/dist/contracts/inputSchemaPresentation.js +90 -0
  219. package/dist/contracts/investigationExamples.js +4 -3
  220. package/dist/contracts/javascript/electronToolContracts.js +2 -2
  221. package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +0 -20
  222. package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +245 -0
  223. package/dist/contracts/javascript/javascriptRuntimeObservationToolContracts.js +1 -1
  224. package/dist/contracts/managed/managedToolContracts.js +7 -14
  225. package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
  226. package/dist/contracts/mobileApplicationGraphExamples.js +3 -3
  227. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +1 -1
  228. package/dist/contracts/native/nativeToolContracts.js +5 -3
  229. package/dist/contracts/officialToolContracts.js +16 -16
  230. package/dist/contracts/promptContracts.js +5 -5
  231. package/dist/contracts/providerSelection.js +1 -1
  232. package/dist/contracts/sessionLifecycleInputs.js +3 -7
  233. package/dist/contracts/sessionStatusContract.js +2 -4
  234. package/dist/contracts/sessionToolContracts.js +18 -8
  235. package/dist/contracts/sessionToolSchemas.js +3 -19
  236. package/dist/contracts/toolContractExamples.js +0 -1
  237. package/dist/contracts/toolContractHelpers.js +4 -1
  238. package/dist/contracts/toolContracts.js +2 -0
  239. package/dist/contracts/toolEffects.js +1 -1
  240. package/dist/contracts/toolOutputSchemaGroups.js +160 -115
  241. package/dist/contracts/toolOutputSchemaPrimitives.js +28 -20
  242. package/dist/contracts/toolSchemaMetadata.js +41 -33
  243. package/dist/contracts/webNetworkCaptureToolContracts.js +2 -2
  244. package/dist/contracts/webRuntimeToolContracts.js +1 -1
  245. package/dist/contracts/webScriptToolContracts.js +1 -1
  246. package/dist/doctorRuntime.js +7 -5
  247. package/dist/domain/analysisErrorBase.js +8 -3
  248. package/dist/domain/analysisErrorCore.js +6 -1
  249. package/dist/domain/analysisErrorPresentation.js +90 -20
  250. package/dist/domain/analysisErrorProjection.js +130 -32
  251. package/dist/domain/analysisSnapshot.js +29 -31
  252. package/dist/domain/analysisView/analysisView.js +243 -0
  253. package/dist/domain/analysisView/analysisViewCoverage.js +19 -0
  254. package/dist/domain/analysisView/binaryLayoutView.js +159 -0
  255. package/dist/domain/analysisView/javascriptApplicationView.js +238 -0
  256. package/dist/domain/android/androidAnalysis.js +2 -4
  257. package/dist/domain/android/androidApplication.js +18 -10
  258. package/dist/domain/apple/appleApplication.js +42 -15
  259. package/dist/domain/apple/dyldEnvironment.js +73 -0
  260. package/dist/domain/apple/dylibResolution.js +130 -12
  261. package/dist/domain/apple/dylibResolutionFindings.js +9 -7
  262. package/dist/domain/apple/interfaceBuilderGraph.js +25 -14
  263. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +13 -3
  264. package/dist/domain/apple/keyedArchive.js +35 -3
  265. package/dist/domain/apple/machoContainer.js +54 -0
  266. package/dist/domain/apple/plistNumbers.js +76 -0
  267. package/dist/domain/artifactComparison.js +15 -6
  268. package/dist/domain/artifactGraph.js +16 -3
  269. package/dist/domain/artifactIdentity.js +29 -0
  270. package/dist/domain/artifactInventoryEvidence.js +28 -40
  271. package/dist/domain/artifactOperationError.js +3 -3
  272. package/dist/domain/artifactPartialObservation.js +1 -0
  273. package/dist/domain/artifactPathSyntax.js +49 -0
  274. package/dist/domain/binaryTarget.js +39 -13
  275. package/dist/domain/bridgeCandidateProjection.js +71 -0
  276. package/dist/domain/browserCaptureComparison.js +13 -49
  277. package/dist/domain/browserCompleteness.js +1 -0
  278. package/dist/domain/browserNetworkEvidence.js +10 -4
  279. package/dist/domain/browserObservation.js +0 -1
  280. package/dist/domain/browserObservationError.js +24 -5
  281. package/dist/domain/browserObservationSchemas.js +14 -3
  282. package/dist/domain/browserScenario.js +0 -1
  283. package/dist/domain/browserScenarioCapture.js +1 -2
  284. package/dist/domain/browserScenarioDiff.js +0 -2
  285. package/dist/domain/browserScenarioDiffEvidence.js +0 -12
  286. package/dist/domain/browserScenarioDiffValues.js +2 -2
  287. package/dist/domain/browserScenarioValues.js +5 -10
  288. package/dist/domain/bundleComparison.js +3 -2
  289. package/dist/domain/callPath.js +8 -9
  290. package/dist/domain/callPathSchemas.js +2 -2
  291. package/dist/domain/canonicalJsonDigestSteps.js +133 -0
  292. package/dist/domain/canonicalOrdering.js +9 -5
  293. package/dist/domain/changedBehavior.js +9 -9
  294. package/dist/domain/comparisonSourceEvidence.js +40 -0
  295. package/dist/domain/completionLedgerGeneration.js +2 -1
  296. package/dist/domain/configurationErrors.js +13 -1
  297. package/dist/domain/conformancePackage.js +4 -3
  298. package/dist/domain/evidence.js +65 -36
  299. package/dist/domain/evidenceBundle.js +47 -8
  300. package/dist/domain/evidenceCompletionLedger.js +2 -1
  301. package/dist/domain/evidenceErrors.js +12 -1
  302. package/dist/domain/explicitSensitiveFailure.js +17 -1
  303. package/dist/domain/firmware/firmwareAnalysis.js +6 -7
  304. package/dist/domain/functionComparison.js +4 -5
  305. package/dist/domain/functionComparisonDimensions.js +120 -87
  306. package/dist/domain/functionComparisonNormalization.js +23 -34
  307. package/dist/domain/functionComparisonResults.js +1 -4
  308. package/dist/domain/functionComparisonSchemas.js +2 -8
  309. package/dist/domain/functionDossierEvidence.js +2 -37
  310. package/dist/domain/hopperErrors.js +23 -2
  311. package/dist/domain/hopperValues.js +51 -8
  312. package/dist/domain/immutableJson.js +114 -0
  313. package/dist/domain/inputIssueProjection.js +3 -0
  314. package/dist/domain/javascript/electronActiveObservation.js +47 -64
  315. package/dist/domain/javascript/electronObservation.js +14 -3
  316. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +10 -9
  317. package/dist/domain/javascript/electronStaticAnalysisIpc.js +2 -1
  318. package/dist/domain/javascript/electronStaticAnalysisNative.js +2 -1
  319. package/dist/domain/javascript/electronStaticAnalysisValues.js +6 -12
  320. package/dist/domain/javascript/javascriptApplicationAnalysis.js +71 -23
  321. package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +2 -0
  322. package/dist/domain/javascript/javascriptApplicationGraph.js +39 -3
  323. package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +9 -2
  324. package/dist/domain/javascript/javascriptApplicationVersionItems.js +5 -2
  325. package/dist/domain/javascript/javascriptApplicationVersionKeys.js +2 -1
  326. package/dist/domain/javascript/javascriptAstValues.js +20 -0
  327. package/dist/{application/javascript/JavaScriptReturnShapeProjection.js → domain/javascript/javascriptExportReturnShapeProjection.js} +4 -4
  328. package/dist/domain/javascript/javascriptExportShapeComparison.js +7 -1
  329. package/dist/domain/javascript/javascriptExportShapeComparisonIdentity.js +6 -1
  330. package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +29 -1
  331. package/dist/domain/javascript/javascriptExportShapeSelection.js +5 -5
  332. package/dist/domain/javascript/javascriptExportShapeVariants.js +67 -14
  333. package/dist/domain/javascript/javascriptFeatureSeed.js +20 -0
  334. package/dist/domain/javascript/javascriptFeatureTraversal.js +0 -1
  335. package/dist/domain/javascript/javascriptNativeHandoff.js +1 -1
  336. package/dist/domain/javascript/javascriptRecovery.js +3 -8
  337. package/dist/domain/javascript/javascriptRuntimeLoadState.js +0 -1
  338. package/dist/domain/javascript/javascriptRuntimeObservation.js +10 -2
  339. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +1 -1
  340. package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +3 -2
  341. package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +0 -1
  342. package/dist/domain/javascript/javascriptSemanticAnalysis.js +106 -5
  343. package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +2 -1
  344. package/dist/domain/javascript/javascriptSemanticCalls.js +2 -1
  345. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +2 -1
  346. package/dist/domain/javascript/javascriptSemanticCoverage.js +6 -5
  347. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +9 -17
  348. package/dist/domain/javascript/javascriptSemanticDataEffects.js +23 -6
  349. package/dist/domain/javascript/javascriptSemanticGraph.js +98 -43
  350. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +1 -0
  351. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +77 -20
  352. package/dist/domain/javascript/javascriptSemanticMutationValues.js +21 -27
  353. package/dist/domain/javascript/javascriptSemanticObjects.js +83 -42
  354. package/dist/domain/javascript/javascriptSemanticPrimitives.js +18 -21
  355. package/dist/domain/javascript/javascriptSemanticProjection.js +2 -3
  356. package/dist/domain/javascript/javascriptSemanticPromises.js +2 -1
  357. package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -4
  358. package/dist/domain/javascript/javascriptSemanticResourceLimits.js +77 -0
  359. package/dist/domain/javascript/javascriptSemanticResources.js +1 -1
  360. package/dist/domain/javascript/javascriptSemanticReturns.js +32 -17
  361. package/dist/domain/javascript/javascriptSemanticSlots.js +72 -0
  362. package/dist/domain/javascript/javascriptSemanticValues.js +126 -61
  363. package/dist/domain/javascript/javascriptSourceMapPaths.js +104 -0
  364. package/dist/domain/javascript/javascriptSourceParser.js +6 -2
  365. package/dist/domain/javascript/javascriptStaticAnalysis.js +22 -17
  366. package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +5 -3
  367. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +16 -5
  368. package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +66 -7
  369. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +28 -17
  370. package/dist/domain/javascript/javascriptStaticAnalysisState.js +3 -2
  371. package/dist/domain/javascript/sourceToBundleComparison.js +12 -3
  372. package/dist/domain/javascript/sourceToBundleSignals.js +47 -19
  373. package/dist/domain/jsonSerialization.js +109 -0
  374. package/dist/domain/jsonValue.js +90 -6
  375. package/dist/domain/localPath.js +6 -0
  376. package/dist/domain/managed/managedApplicationGraph.js +10 -10
  377. package/dist/domain/managed/managedArtifact.js +6 -4
  378. package/dist/domain/managed/managedInspectionEvidence.js +16 -0
  379. package/dist/domain/managed/managedMemberComparison.js +2 -9
  380. package/dist/domain/managed/managedMemberComparisonMatch.js +5 -9
  381. package/dist/domain/managed/managedNativeVerification.js +3 -11
  382. package/dist/domain/managed/managedNativeVerificationMatch.js +9 -3
  383. package/dist/domain/native/binaryLayout.js +2 -3
  384. package/dist/domain/native/fileOffsetPartialObservation.js +1 -0
  385. package/dist/domain/native/nativeApiBoundary.js +1 -1
  386. package/dist/domain/native/nativeCallObservation.js +37 -13
  387. package/dist/domain/native/nativeCallPartialObservation.js +33 -0
  388. package/dist/domain/native/nativeInstruction.js +7 -0
  389. package/dist/domain/native/recordedCrash.js +2 -3
  390. package/dist/domain/offsetDateTime.js +17 -0
  391. package/dist/domain/process/processCapture.js +21 -16
  392. package/dist/domain/process/processCaptureCoverage.js +67 -0
  393. package/dist/domain/process/processCaptureExample.js +2 -1
  394. package/dist/domain/process/processCaptureParsing.js +1 -34
  395. package/dist/domain/process/processCaptureValidation.js +81 -13
  396. package/dist/domain/process/processComparison.js +79 -26
  397. package/dist/domain/process/processObservation.js +10 -2
  398. package/dist/domain/process/processScenario.js +35 -12
  399. package/dist/domain/process/processTraceComparison.js +0 -2
  400. package/dist/domain/process/processTraceDimensionProjection.js +1 -1
  401. package/dist/domain/process/processTraceEvaluation.js +15 -11
  402. package/dist/domain/process/processTraceSpecification.js +3 -4
  403. package/dist/domain/propertyListKeys.js +1 -1
  404. package/dist/domain/propertyListXmlText.js +19 -0
  405. package/dist/domain/providerAdapterError.js +3 -1
  406. package/dist/domain/providerOperationHealth.js +54 -0
  407. package/dist/domain/reconstructionCoverage.js +5 -2
  408. package/dist/domain/reconstructionObligationLedgerSchemas.js +2 -1
  409. package/dist/domain/reconstructionReadinessSchemas.js +2 -1
  410. package/dist/domain/reconstructionVerification.js +9 -46
  411. package/dist/domain/reconstructionVerificationSchemas.js +4 -3
  412. package/dist/domain/referenceSourceGraph.js +20 -21
  413. package/dist/domain/staticRuntimeCorrelation.js +8 -45
  414. package/dist/domain/stringPatterns.js +6 -0
  415. package/dist/domain/swiftSymbolClassification.js +61 -0
  416. package/dist/domain/symbolAnalysis.js +66 -18
  417. package/dist/domain/webBundleAnalysis.js +20 -8
  418. package/dist/domain/webBundleAnalyzerInspection.js +13 -8
  419. package/dist/domain/webBundleAnalyzerResult.js +41 -2
  420. package/dist/domain/webCaptureDiff.js +0 -1
  421. package/dist/domain/webCaptureDiffSchemas.js +6 -3
  422. package/dist/domain/webEventListeners.js +3 -2
  423. package/dist/domain/webExecution.js +3 -2
  424. package/dist/domain/webRuntime.js +19 -7
  425. package/dist/domain/webScriptExport.js +1 -1
  426. package/dist/domain/webSourceLocation.js +1 -0
  427. package/dist/dotnet/ManagedArtifactInspector.js +2 -19
  428. package/dist/dotnet/ManagedMemberInspector.js +12 -18
  429. package/dist/dotnet/ManagedMemberInspectorCore.js +47 -44
  430. package/dist/dotnet/ManagedMemberRows.js +75 -62
  431. package/dist/dotnet/ManagedMetadataInventory.js +16 -22
  432. package/dist/dotnet/ManagedMethodBodyReader.js +4 -0
  433. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +109 -94
  434. package/dist/dotnet/ManagedNativeBoundaryInspector.js +12 -21
  435. package/dist/dotnet/ManagedReaderFailure.js +16 -0
  436. package/dist/dotnet/ManagedStaticProvider.js +3 -5
  437. package/dist/evaluation/AgentEvaluationFixtures.js +250 -0
  438. package/dist/evaluation/AgentEvaluationReport.js +28 -0
  439. package/dist/evaluation/CodexAgentEval.js +12 -8
  440. package/dist/evaluation/KnownAnswerEvaluation.js +281 -0
  441. package/dist/evm/EvmoleInterfaceProvider.js +2 -1
  442. package/dist/firmware/FirmwareCommand.js +9 -5
  443. package/dist/firmware/FirmwareFiles.js +1 -1
  444. package/dist/firmware/FirmwareProvider.js +4 -4
  445. package/dist/generatedPackageMetadata.js +2 -2
  446. package/dist/ghidra/GhidraAnalysisProfile.js +7 -5
  447. package/dist/ghidra/GhidraClient.js +126 -34
  448. package/dist/ghidra/GhidraClientStartup.js +0 -2
  449. package/dist/ghidra/GhidraDiagnostics.js +7 -7
  450. package/dist/ghidra/GhidraDoctor.js +6 -5
  451. package/dist/ghidra/GhidraFunctionValues.js +13 -12
  452. package/dist/ghidra/GhidraInstallation.js +58 -33
  453. package/dist/ghidra/GhidraInventoryValues.js +14 -4
  454. package/dist/ghidra/GhidraJavaLaunch.js +66 -0
  455. package/dist/ghidra/GhidraLauncher.js +47 -22
  456. package/dist/ghidra/GhidraProvider.js +6 -2
  457. package/dist/ghidra/GhidraProviderCapabilities.js +20 -2
  458. package/dist/ghidra/GhidraProviderClient.js +36 -15
  459. package/dist/ghidra/GhidraSessionError.js +13 -7
  460. package/dist/ghidra/GhidraSessionRoot.js +39 -0
  461. package/dist/ghidra/GhidraTargetSnapshot.js +47 -12
  462. package/dist/ghidra/GhidraTransport.js +20 -0
  463. package/dist/ghidra/extensions/GhidraExtensions.js +17 -10
  464. package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +8 -2
  465. package/dist/hopper/BridgeLauncher.js +65 -56
  466. package/dist/hopper/HopperAnalysisProfile.js +65 -12
  467. package/dist/hopper/HopperCleanup.js +63 -22
  468. package/dist/hopper/HopperClient.js +288 -59
  469. package/dist/hopper/HopperFileOffset.js +237 -0
  470. package/dist/hopper/HopperMachOImage.js +197 -0
  471. package/dist/hopper/HopperOperationStage.js +6 -0
  472. package/dist/hopper/HopperProvider.js +71 -19
  473. package/dist/hopper/HopperProviderCapabilities.js +19 -1
  474. package/dist/hopper/HopperRegexSearch.js +134 -0
  475. package/dist/hopper/HopperRegexWorker.js +27 -0
  476. package/dist/hopper/HopperRequestQueue.js +68 -19
  477. package/dist/hopper/HopperTargetLease.js +133 -49
  478. package/dist/hopper/LinuxPrivateDisplayProbe.js +6 -0
  479. package/dist/ida/IdaConfiguration.js +8 -3
  480. package/dist/ida/IdaInput.js +1 -7
  481. package/dist/ida/IdaMcpConnection.js +8 -4
  482. package/dist/ida/IdaOperationRunner.js +3 -3
  483. package/dist/ida/IdaProvider.js +8 -12
  484. package/dist/ida/IdaSessionClient.js +20 -18
  485. package/dist/ida/IdaWorkspace.js +12 -13
  486. package/dist/inspector/JavaScriptRuntimeScope.js +9 -1
  487. package/dist/inspector/V8InspectorCaptureProjection.js +9 -4
  488. package/dist/inspector/V8InspectorProvider.js +82 -36
  489. package/dist/javascript/recovery/WakaruCommand.js +7 -2
  490. package/dist/javascript/recovery/WakaruExecution.js +5 -2
  491. package/dist/javascript/sourceMaps/DecodedSourceMap.js +47 -0
  492. package/dist/javascript/sourceMaps/SourceMapCommand.js +16 -0
  493. package/dist/javascript/sourceMaps/SourceMapFormat.js +79 -31
  494. package/dist/javascript/sourceMaps/TraceSourceMap.js +14 -28
  495. package/dist/main/shutdown.js +11 -3
  496. package/dist/main/startup.js +9 -2
  497. package/dist/main/transport.js +22 -2
  498. package/dist/main.js +11 -18
  499. package/dist/mcpDoctor.js +62 -2
  500. package/dist/native/AppleDispatchCoverage.js +47 -6
  501. package/dist/native/AppleDispatchDecodeFacts.js +6 -0
  502. package/dist/native/AppleDispatchMetadata.js +6 -3
  503. package/dist/native/AppleMachoFixups.js +48 -24
  504. package/dist/native/AppleMachoSelection.js +48 -22
  505. package/dist/native/AppleObjcCategories.js +6 -2
  506. package/dist/native/AppleObjcDispatchFacets.js +5 -2
  507. package/dist/native/AppleObjcProperties.js +2 -1
  508. package/dist/native/AppleSwiftDispatchFacets.js +27 -21
  509. package/dist/native/AppleSwiftVtables.js +21 -15
  510. package/dist/native/CommandRunner.js +87 -88
  511. package/dist/native/LldbCallTracer.js +372 -103
  512. package/dist/native/LldbRetainedObservations.js +178 -0
  513. package/dist/native/NativeCallObservation.js +62 -3
  514. package/dist/native/NativeMacOSProvider.js +122 -31
  515. package/dist/native/NativeUiHelperRuntime.js +11 -2
  516. package/dist/native/NativeUiObservation.js +2 -2
  517. package/dist/native/SignatureTargetBinding.js +155 -0
  518. package/dist/native/parsers/lipo.js +71 -1
  519. package/dist/native/pwndbg/PwndbgCoreContext.js +25 -5
  520. package/dist/native/pwntools/PwntoolsDecoder.js +2 -1
  521. package/dist/native/pwntools/RecordedCrashStructureBindings.js +2 -0
  522. package/dist/process/DarwinProcessRunTokenReader.js +23 -10
  523. package/dist/process/ExecFileOutput.js +108 -6
  524. package/dist/process/OwnedCommand.js +7 -2
  525. package/dist/process/PrivateRuntimeRoot.js +10 -5
  526. package/dist/process/ProcessOwnership.js +204 -57
  527. package/dist/process/ProcessOwnershipObservation.js +60 -9
  528. package/dist/process/ProviderProcess.js +39 -10
  529. package/dist/process/capture/FilesystemSnapshot.js +50 -13
  530. package/dist/process/capture/ProcessCaptureError.js +15 -2
  531. package/dist/process/capture/ProcessCaptureLifecycle.js +235 -81
  532. package/dist/process/capture/ProcessFilesystemEffects.js +33 -3
  533. package/dist/process/capture/ProcessHarness.js +21 -25
  534. package/dist/process/capture/ProcessNormalization.js +20 -2
  535. package/dist/process/capture/ProcessSampling.js +25 -2
  536. package/dist/process/capture/TerminalRenderer.js +14 -0
  537. package/dist/process/snapshotEnvironment.js +14 -0
  538. package/dist/server/EvidenceMcpServer.js +157 -0
  539. package/dist/server/createServer.js +61 -41
  540. package/dist/server/mcpClientMetadata.js +12 -5
  541. package/dist/server/promptCompletion.js +3 -8
  542. package/dist/server/registerAnalysisViewTool.js +15 -0
  543. package/dist/server/registerAndroidTools.js +2 -5
  544. package/dist/server/registerApplicationTools/compareExportShapes.js +4 -5
  545. package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
  546. package/dist/server/registerApplicationTools/compareVersions.js +4 -5
  547. package/dist/server/registerApplicationTools/coverage.js +1 -2
  548. package/dist/server/registerApplicationTools/helpers.js +1 -4
  549. package/dist/server/registerApplicationTools/obligationLedger.js +4 -5
  550. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -4
  551. package/dist/server/registerApplicationTools/traceFeature.js +4 -5
  552. package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
  553. package/dist/server/registerArtifactComparisonTool.js +13 -10
  554. package/dist/server/registerBinaryDiagnosticsTools.js +2 -5
  555. package/dist/server/registerBrowserScenarioTool.js +3 -6
  556. package/dist/server/registerBrowserTools.js +13 -18
  557. package/dist/server/registerBundleComparisonTool.js +5 -7
  558. package/dist/server/registerCloseLifecycleTool.js +9 -20
  559. package/dist/server/registerElectronTools.js +10 -15
  560. package/dist/server/registerEnhancedTools.js +36 -77
  561. package/dist/server/registerEvidenceTools.js +3 -6
  562. package/dist/server/registerEvmTools.js +2 -5
  563. package/dist/server/registerFirmwareTools.js +2 -5
  564. package/dist/server/registerFunctionComparisonTool.js +15 -12
  565. package/dist/server/registerInvestigationTools.js +16 -17
  566. package/dist/server/registerJavaScriptRecoveryTool.js +2 -5
  567. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -8
  568. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +5 -8
  569. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -7
  570. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +6 -9
  571. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +6 -9
  572. package/dist/server/registerOfficialTools.js +4 -21
  573. package/dist/server/registerProcessComparisonTool.js +74 -48
  574. package/dist/server/registerRecordedCrashTools.js +2 -5
  575. package/dist/server/registerSessionRecordTools.js +19 -24
  576. package/dist/server/registerSessionStatusTool.js +19 -6
  577. package/dist/server/registerSessionTools.js +20 -18
  578. package/dist/server/registerWebModuleTool.js +2 -5
  579. package/dist/server/registerWebNetworkCaptureTool.js +2 -5
  580. package/dist/server/registerWebRuntimeTools.js +4 -9
  581. package/dist/server/registerWebScriptTool.js +2 -5
  582. package/dist/server/registerWebSourceLocationTool.js +2 -5
  583. package/dist/server/runDerivedOperation.js +15 -3
  584. package/dist/server/sessionAvailabilityPolicy.js +0 -1
  585. package/dist/server/toolRegistrationOptions.js +2 -2
  586. package/dist/server/toolResult.js +75 -51
  587. package/dist/server/toolResultEncoding.js +34 -0
  588. package/dist/windows/WindowsNativeLoader.js +1 -0
  589. package/dist/windows/WindowsOwnedProcess.js +60 -15
  590. package/dist/windows/WindowsPrivateRuntime.js +7 -8
  591. package/install.sh +1 -1
  592. package/native/windows/README.md +3 -1
  593. package/native/windows/build/manifest.json +2 -2
  594. package/native/windows/build/rea-windows-x64.node +0 -0
  595. package/package.json +44 -30
  596. package/scripts/electron-active-hook-boundaries.cjs +18 -20
  597. package/scripts/electron-active-hook.cjs +241 -37
  598. package/scripts/rea.mjs +3 -6
  599. package/skills/reverse-engineer-anything/SKILL.md +12 -3
  600. package/skills/reverse-engineer-anything/references/android-applications.md +6 -3
  601. package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -4
  602. package/skills/reverse-engineer-anything/references/javascript-applications.md +20 -3
  603. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +9 -0
  604. package/dist/config.js +0 -1
  605. package/dist/contracts/browserCaptureToolInputSchema.js +0 -43
  606. package/dist/contracts/process/processCaptureExample.js +0 -2
  607. package/dist/contracts/toolOutputSchemas.js +0 -2
  608. package/dist/ghidra/GhidraDefaults.js +0 -2
  609. package/dist/main/reload.js +0 -12
  610. package/dist/main/state.js +0 -3
  611. package/dist/server/sessionToolPolicies.js +0 -2
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { canonicalDigest, canonicalJson } from "../comparisonSemantics.js";
3
3
  import { compareCodePoints, uniqueSorted } from "../canonicalOrdering.js";
4
+ import { freezeOwnedJsonSnapshotSteps } from "../immutableJson.js";
4
5
  import { applicationEdgeInputSchema, applicationEdgeSchema, applicationNodeInputSchema, applicationNodeObservationSchema, applicationNodeSchema, javascriptApplicationGraphInputSchema, javascriptApplicationGraphRecordSchema, } from "./javascriptApplicationGraphSchemas.js";
5
6
  const OBSERVATION_IDENTIFIER_STRATEGY = {
6
7
  strategy: "semantic-content-sha256",
@@ -62,6 +63,18 @@ const checkEvidenceNormalization = (evidence, path, context) => {
62
63
  path: [...path, "location"],
63
64
  });
64
65
  };
66
+ const sourceMapObservationMatchesIdentity = (identity, observation) => {
67
+ const { evidence, source_map_reference: reference } = observation;
68
+ return (reference !== null &&
69
+ evidence.state === "observed" &&
70
+ evidence.artifact.available &&
71
+ evidence.artifact.sha256 === identity.source_map_sha256 &&
72
+ reference.source_name === identity.original_source &&
73
+ reference.source_root === identity.source_root &&
74
+ evidence.location.available &&
75
+ evidence.location.value.kind === "artifact-path" &&
76
+ reference.map_path === evidence.location.value.path);
77
+ };
65
78
  const observationMatchesIdentity = (node, observation) => {
66
79
  const { identity } = node;
67
80
  const { evidence } = observation;
@@ -70,9 +83,7 @@ const observationMatchesIdentity = (node, observation) => {
70
83
  evidence.artifact.available &&
71
84
  evidence.artifact.sha256 === identity.sha256);
72
85
  if (identity.strategy === "source-map-original")
73
- return (evidence.state === "observed" &&
74
- evidence.artifact.available &&
75
- evidence.artifact.sha256 === identity.source_map_sha256);
86
+ return sourceMapObservationMatchesIdentity(identity, observation);
76
87
  if (identity.strategy === "canonical-path")
77
88
  return (evidence.artifact.available &&
78
89
  evidence.artifact.sha256 === identity.artifact_sha256 &&
@@ -125,6 +136,19 @@ const checkNode = (node, index, context) => {
125
136
  "observation_id",
126
137
  ],
127
138
  });
139
+ if (node.identity.strategy === "source-map-original" &&
140
+ !observationMatchesIdentity(node, observation))
141
+ context.addIssue({
142
+ code: "custom",
143
+ message: "Source-map observation must retain its exact declaration and map location",
144
+ path: [
145
+ "nodes",
146
+ index,
147
+ "observations",
148
+ observationIndex,
149
+ "source_map_reference",
150
+ ],
151
+ });
128
152
  checkEvidenceNormalization(observation.evidence, ["nodes", index, "observations", observationIndex, "evidence"], context);
129
153
  }
130
154
  if (!node.observations.some((observation) => observationMatchesIdentity(node, observation)))
@@ -255,6 +279,18 @@ export const createJavaScriptApplicationGraph = (input) => {
255
279
  graph_id: `jag_${canonicalDigest(semantic, "JavaScript Application Graph")}`,
256
280
  });
257
281
  };
282
+ const validatedImmutableApplicationGraphs = new WeakSet();
283
+ /** Clone and validate synchronously, then return steps to seal the owned graph. */
284
+ export const createImmutableJavaScriptApplicationGraphSteps = (input) => sealValidatedApplicationGraphSteps(createJavaScriptApplicationGraph(input));
285
+ function* sealValidatedApplicationGraphSteps(graph) {
286
+ yield* freezeOwnedJsonSnapshotSteps(graph);
287
+ validatedImmutableApplicationGraphs.add(graph);
288
+ return graph;
289
+ }
290
+ /** Recognize the exact completely sealed graph produced by the owned factory. */
291
+ export const isValidatedImmutableJavaScriptApplicationGraph = (value) => typeof value === "object" &&
292
+ value !== null &&
293
+ validatedImmutableApplicationGraphs.has(value);
258
294
  /** Parse a stored graph and reject stale IDs. */
259
295
  export const parseJavaScriptApplicationGraph = (input) => javascriptApplicationGraphSchema.parse(input);
260
296
  /** Compute the byte-stable SHA-256 commitment of a verified graph. */
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import { javascriptSourceMapReferenceSchema } from "./javascriptSourceMapPaths.js";
2
3
  import { applicationCoverageSchema, applicationGraphEvidenceSchema, applicationNodeIdentitySchema, } from "./javascriptApplicationEvidenceSchemas.js";
3
4
  import { jsonValueSchema } from "../jsonValue.js";
4
5
  import { prefixedDigestSchema } from "../digests.js";
@@ -61,13 +62,19 @@ export const JAVASCRIPT_APPLICATION_RELATIONS = [
61
62
  const applicationRelationSchema = z.enum(JAVASCRIPT_APPLICATION_RELATIONS);
62
63
  const applicationPropertiesSchema = z.record(z.string().min(1), jsonValueSchema);
63
64
  /** One node observation before its semantic identifier is derived. */
64
- const applicationNodeObservationInputSchema = z.strictObject({
65
+ const applicationNodeObservationBaseSchema = z.strictObject({
65
66
  label: z.string().min(1).nullable(),
67
+ source_map_reference: javascriptSourceMapReferenceSchema.nullable(),
66
68
  properties: applicationPropertiesSchema,
67
69
  evidence: applicationGraphEvidenceSchema,
68
70
  });
71
+ const applicationNodeObservationInputSchema = applicationNodeObservationBaseSchema.extend({
72
+ source_map_reference: javascriptSourceMapReferenceSchema
73
+ .nullable()
74
+ .default(null),
75
+ });
69
76
  /** One immutable, evidence-bearing observation attached to an entity. */
70
- export const applicationNodeObservationSchema = applicationNodeObservationInputSchema.extend({
77
+ export const applicationNodeObservationSchema = applicationNodeObservationBaseSchema.extend({
71
78
  observation_id: prefixedDigestSchema("jag_observation"),
72
79
  identifier_strategy: z.strictObject({
73
80
  strategy: z.literal("semantic-content-sha256"),
@@ -1,6 +1,5 @@
1
1
  import { absenceClaimable, canonicalDigest, canonicalJson, } from "../comparisonSemantics.js";
2
2
  import { compareCodePoints } from "../canonicalOrdering.js";
3
- import {} from "./javascriptApplicationGraph.js";
4
3
  /** Classify matched, unmatched, and ambiguous nodes without inventing absence. */
5
4
  export const classifyJavaScriptApplicationVersions = (matching, context) => {
6
5
  const pairByLeft = new Map(matching.pairs.map(({ left, right }) => [
@@ -204,7 +203,11 @@ const locations = (node) => node.observations
204
203
  .map(({ evidence }) => evidence.location.available ? evidence.location.value : evidence.location)
205
204
  .sort((left, right) => compareCodePoints(canonicalJson(left), canonicalJson(right)));
206
205
  const properties = (node) => node.observations
207
- .map(({ label, properties: values }) => ({ label, properties: values }))
206
+ .map(({ label, properties: values, source_map_reference }) => ({
207
+ label,
208
+ properties: values,
209
+ source_map_reference,
210
+ }))
208
211
  .sort((left, right) => compareCodePoints(canonicalJson(left), canonicalJson(right)));
209
212
  const relationshipSignature = (node, side, context) => {
210
213
  const graph = side === "left" ? context.leftGraph : context.rightGraph;
@@ -1,3 +1,4 @@
1
+ import { canonicalJson } from "../comparisonSemantics.js";
1
2
  import { compareCodePoints } from "../canonicalOrdering.js";
2
3
  const matchTiers = () => [
3
4
  {
@@ -112,7 +113,7 @@ const moduleSourceDigestKey = (node) => {
112
113
  };
113
114
  const sourceMapKey = (node) => node.kind === "source-module" &&
114
115
  node.identity.strategy === "source-map-original"
115
- ? `source-map\0${node.identity.original_source}`
116
+ ? `source-map\0${canonicalJson([node.identity.source_root, node.identity.original_source])}`
116
117
  : null;
117
118
  const structuralFingerprintKey = (node) => {
118
119
  if (node.kind !== "javascript-module")
@@ -1,4 +1,24 @@
1
1
  import * as t from "@babel/types";
2
+ /** Read one syntax-level primitive only when its value is exact. */
3
+ export const readExactJavaScriptLiteral = (node) => {
4
+ if (t.isStringLiteral(node))
5
+ return { found: true, value: node.value };
6
+ if (t.isNumericLiteral(node) && Number.isFinite(node.value))
7
+ return { found: true, value: node.value };
8
+ if (t.isBooleanLiteral(node))
9
+ return { found: true, value: node.value };
10
+ if (t.isNullLiteral(node))
11
+ return { found: true, value: null };
12
+ if (t.isTemplateLiteral(node) &&
13
+ node.expressions.length === 0 &&
14
+ node.quasis.length === 1) {
15
+ const cooked = node.quasis[0]?.value.cooked;
16
+ return cooked === null || cooked === undefined
17
+ ? { found: false }
18
+ : { found: true, value: cooked };
19
+ }
20
+ return { found: false };
21
+ };
2
22
  /** Read an identifier or literal property name without evaluating syntax. */
3
23
  export const propertyName = (node) => {
4
24
  if (t.isIdentifier(node))
@@ -1,7 +1,7 @@
1
- import { jsonObjectSchema, jsonValueSchema } from "../../domain/jsonValue.js";
2
- import { partialApplicationCoverage, truncatedApplicationCoverage, } from "../../domain/javascript/javascriptApplicationEvidenceSchemas.js";
3
- import { flattenSemanticReturnValue } from "../../domain/javascript/javascriptSemanticReturns.js";
4
- /** Project one exact export/callable link into shallow bounded graph values. */
1
+ import { jsonObjectSchema, jsonValueSchema } from "../jsonValue.js";
2
+ import { partialApplicationCoverage, truncatedApplicationCoverage, } from "./javascriptApplicationEvidenceSchemas.js";
3
+ import { flattenSemanticReturnValue } from "./javascriptSemanticReturns.js";
4
+ /** Project one exact export/callable link into inert return-shape observations. */
5
5
  export const projectJavaScriptExportReturnShapes = (input) => {
6
6
  if (input.link.callableId === null || input.link.exportedName === null)
7
7
  return null;
@@ -2,7 +2,7 @@ import { compareCodePoints, uniqueSorted } from "../canonicalOrdering.js";
2
2
  import { canonicalExportShapeValue, digestExportShapeValue, } from "./javascriptExportShapeComparisonIdentity.js";
3
3
  import { javaScriptExportShapeComparisonResultSchema, } from "./javascriptExportShapeComparisonSchemas.js";
4
4
  import { retainJavaScriptExportShapes, selectJavaScriptExport, } from "./javascriptExportShapeSelection.js";
5
- import { buildJavaScriptExportShapeChanges, hasPartialJavaScriptExportPropertyCoverage, pairJavaScriptExportShapeVariants, } from "./javascriptExportShapeVariants.js";
5
+ import { buildJavaScriptExportShapeChanges, buildJavaScriptExportShapeInventories, hasPartialJavaScriptExportPropertyCoverage, pairJavaScriptExportShapeVariants, } from "./javascriptExportShapeVariants.js";
6
6
  /** Compare exact selected export return shapes without executing JavaScript. */
7
7
  export const compareJavaScriptExportShapes = (input) => {
8
8
  const left = selectJavaScriptExport(input.left);
@@ -21,6 +21,11 @@ export const compareJavaScriptExportShapes = (input) => {
21
21
  }));
22
22
  const changes = allChanges;
23
23
  const omittedChanges = 0;
24
+ const propertyInventories = buildJavaScriptExportShapeInventories({
25
+ pairing,
26
+ leftShapes: leftRetained.shapes,
27
+ rightShapes: rightRetained.shapes,
28
+ });
24
29
  const coverage = comparisonCoverage({
25
30
  input,
26
31
  left,
@@ -35,6 +40,7 @@ export const compareJavaScriptExportShapes = (input) => {
35
40
  const semantic = {
36
41
  left: left.selection,
37
42
  right: right.selection,
43
+ property_inventories: propertyInventories,
38
44
  summary: summarize(allChanges),
39
45
  changes,
40
46
  coverage,
@@ -1,6 +1,11 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import canonicalize from "canonicalize";
3
- /** Canonically encode one export-shape comparison value. */
3
+ /**
4
+ * Canonically encode one export-shape comparison value.
5
+ *
6
+ * Comparison identifiers hash the full result semantics, including each
7
+ * change's presence object and the per-variant property inventories.
8
+ */
4
9
  export const canonicalExportShapeValue = (value) => {
5
10
  const encoded = canonicalize(value);
6
11
  if (encoded === undefined)
@@ -67,7 +67,10 @@ export const compareJavaScriptExportShapesInputSchema = z
67
67
  message: "JavaScript export shape Evidence must be distinct",
68
68
  });
69
69
  });
70
- const projectedReturnFieldShape = { path: jsonPointerSchema };
70
+ const projectedReturnFieldShape = {
71
+ path: jsonPointerSchema,
72
+ presence: z.enum(["present", "absent", "unknown-coverage"]),
73
+ };
71
74
  const projectedReturnFieldSchema = z.discriminatedUnion("state", [
72
75
  z.strictObject({
73
76
  ...projectedReturnFieldShape,
@@ -209,11 +212,20 @@ const discriminantSchema = z.strictObject({
209
212
  path: jsonPointerSchema,
210
213
  value: semanticPrimitiveSchema,
211
214
  });
215
+ const propertyPresenceSchema = z.enum([
216
+ "present",
217
+ "absent",
218
+ "unknown-coverage",
219
+ ]);
212
220
  const comparisonChangeSchema = z.strictObject({
213
221
  change_id: prefixedDigestSchema("jesc_change"),
214
222
  status: z.enum(["added", "removed", "changed", "unknown"]),
215
223
  path: jsonPointerSchema,
216
224
  discriminant: discriminantSchema.nullable(),
225
+ presence: z.strictObject({
226
+ left: propertyPresenceSchema,
227
+ right: propertyPresenceSchema,
228
+ }),
217
229
  left: valueAvailabilitySchema,
218
230
  right: valueAvailabilitySchema,
219
231
  left_source_range: sourceRangeSchema.nullable(),
@@ -221,11 +233,27 @@ const comparisonChangeSchema = z.strictObject({
221
233
  evidence_links: z.array(evidenceIdSchema).length(2),
222
234
  limitations: z.array(textSchema),
223
235
  });
236
+ /** One change row; presence is required even when values stay unknown. */
237
+ export const javaScriptExportShapeComparisonChangeSchema = comparisonChangeSchema;
238
+ const inventoryPropertyCoverageSchema = z.strictObject({
239
+ path: jsonPointerSchema,
240
+ status: z.enum(["complete", "partial"]),
241
+ });
242
+ const propertyInventorySchema = z.strictObject({
243
+ side: z.enum(["left", "right"]),
244
+ variant_index: z.number().int().nonnegative(),
245
+ discriminant: discriminantSchema.nullable(),
246
+ paired: z.boolean(),
247
+ source_range: sourceRangeSchema,
248
+ properties: z.array(jsonPointerSchema),
249
+ property_coverage: z.array(inventoryPropertyCoverageSchema),
250
+ });
224
251
  /** Static export-return comparison with explicit unknown semantics. */
225
252
  export const javaScriptExportShapeComparisonResultSchema = z.strictObject({
226
253
  comparison_id: prefixedDigestSchema("jesc"),
227
254
  left: selectorResultSchema,
228
255
  right: selectorResultSchema,
256
+ property_inventories: z.array(propertyInventorySchema),
229
257
  summary: z.strictObject({
230
258
  added: z.number().int().min(0),
231
259
  removed: z.number().int().min(0),
@@ -41,11 +41,11 @@ export const selectJavaScriptExport = (side) => {
41
41
  limitations: [],
42
42
  };
43
43
  };
44
- /** Retain every projected return variant. */
45
- export const retainJavaScriptExportShapes = (selection) => {
46
- const shapes = selection.projection?.static_return_shapes ?? [];
47
- return { shapes, omitted: 0 };
48
- };
44
+ /** Retain every authenticated variant with its explicit slot presence. */
45
+ export const retainJavaScriptExportShapes = (selection) => ({
46
+ shapes: selection.projection?.static_return_shapes ?? [],
47
+ omitted: 0,
48
+ });
49
49
  const selectorBase = (side, candidates) => ({
50
50
  evidence_id: side.evidenceId,
51
51
  graph_id: side.graph.graph_id,
@@ -1,5 +1,9 @@
1
1
  import { canonicalExportShapeValue, digestExportShapeValue, } from "./javascriptExportShapeComparisonIdentity.js";
2
2
  import { compareCodePoints, uniqueSorted } from "../canonicalOrdering.js";
3
+ const UNKNOWN_COVERAGE_PRESENCE = {
4
+ left: "unknown-coverage",
5
+ right: "unknown-coverage",
6
+ };
3
7
  /** Pair variants only through reciprocal unique exact literal discriminants. */
4
8
  export const pairJavaScriptExportShapeVariants = (left, right) => {
5
9
  const leftKeys = discriminantOccurrences(left);
@@ -61,12 +65,41 @@ export const buildJavaScriptExportShapeChanges = (input) => {
61
65
  });
62
66
  return [...paired, ...unpairedLeft, ...unpairedRight];
63
67
  };
68
+ /** List observed property names per retained variant, including unknown values. */
69
+ export const buildJavaScriptExportShapeInventories = (input) => {
70
+ const leftPairs = new Map(input.pairing.pairs.map((pair) => [pair.leftIndex, pair]));
71
+ const rightPairs = new Map(input.pairing.pairs.map((pair) => [pair.rightIndex, pair]));
72
+ return [
73
+ ...input.leftShapes.map((shape, index) => inventoryFor("left", index, shape, leftPairs.get(index))),
74
+ ...input.rightShapes.map((shape, index) => inventoryFor("right", index, shape, rightPairs.get(index))),
75
+ ];
76
+ };
77
+ const inventoryFor = (side, variantIndex, shape, pair) => ({
78
+ side,
79
+ variant_index: variantIndex,
80
+ discriminant: pair?.discriminant ?? null,
81
+ paired: pair !== undefined,
82
+ source_range: shape.source_range,
83
+ properties: uniqueSorted([
84
+ ...shape.fields
85
+ .filter((field) => fieldPresence(shape, field, field.path) === "present")
86
+ .map(({ path }) => path),
87
+ ...shape.property_coverage.map(({ path }) => path),
88
+ ]).filter((path) => path !== ""),
89
+ property_coverage: shape.property_coverage.map(({ path, status }) => ({
90
+ path,
91
+ status,
92
+ })),
93
+ });
64
94
  /** Report whether any retained shape lacks complete property coverage. */
65
- export const hasPartialJavaScriptExportPropertyCoverage = (shapes) => shapes.some((shape) => shape.property_coverage.some(({ status }) => status === "partial"));
95
+ export const hasPartialJavaScriptExportPropertyCoverage = (shapes) => shapes.some((shape) => shape.property_coverage.some(({ status }) => status === "partial") ||
96
+ shape.fields.some((field) => fieldPresence(shape, field, field.path) === "unknown-coverage"));
66
97
  const discriminantOccurrences = (shapes) => {
67
98
  const output = new Map();
68
99
  shapes.forEach((shape, index) => {
69
100
  for (const field of shape.fields) {
101
+ if (fieldPresence(shape, field, field.path) !== "present")
102
+ continue;
70
103
  const value = literalValue(field);
71
104
  if (!value.found)
72
105
  continue;
@@ -111,6 +144,7 @@ const selectionUnknownChange = (input) => changeWithId({
111
144
  status: "unknown",
112
145
  path: "",
113
146
  discriminant: null,
147
+ presence: UNKNOWN_COVERAGE_PRESENCE,
114
148
  left: selectionAvailability(input.leftSelection.selection, "left"),
115
149
  right: selectionAvailability(input.rightSelection.selection, "right"),
116
150
  left_source_range: null,
@@ -124,6 +158,7 @@ const emptyShapeUnknownChange = (input) => changeWithId({
124
158
  status: "unknown",
125
159
  path: "",
126
160
  discriminant: null,
161
+ presence: UNKNOWN_COVERAGE_PRESENCE,
127
162
  left: emptyShapeAvailability(input.leftShapes, "left"),
128
163
  right: emptyShapeAvailability(input.rightShapes, "right"),
129
164
  left_source_range: null,
@@ -159,6 +194,10 @@ const diffPair = (left, right, discriminant, evidenceLinks) => {
159
194
  status,
160
195
  path,
161
196
  discriminant,
197
+ presence: {
198
+ left: fieldPresence(left, leftField, path),
199
+ right: fieldPresence(right, rightField, path),
200
+ },
162
201
  left: fieldAvailability(leftField),
163
202
  right: fieldAvailability(rightField),
164
203
  left_source_range: left.source_range,
@@ -181,29 +220,42 @@ const fieldAtPath = (shape, fields, path) => {
181
220
  return undefined;
182
221
  return {
183
222
  path,
223
+ presence: "present",
184
224
  state: "unknown",
185
225
  value: null,
186
226
  reason: "A static container is retained at this path, but no primitive field value is projected.",
187
227
  };
188
228
  };
189
229
  const fieldChangeStatus = ({ leftShape, rightShape, path, leftField, rightField, }) => {
190
- if (leftField !== undefined && rightField !== undefined) {
191
- if (canonicalExportShapeValue(leftField) ===
230
+ const leftPresence = fieldPresence(leftShape, leftField, path);
231
+ const rightPresence = fieldPresence(rightShape, rightField, path);
232
+ if (leftField !== undefined &&
233
+ rightField !== undefined &&
234
+ canonicalExportShapeValue(leftField) ===
192
235
  canonicalExportShapeValue(rightField))
193
- return null;
236
+ return null;
237
+ if (leftPresence === "absent" && rightPresence === "absent")
238
+ return null;
239
+ if (leftPresence === "unknown-coverage" ||
240
+ rightPresence === "unknown-coverage")
241
+ return "unknown";
242
+ if (leftPresence === "absent")
243
+ return "added";
244
+ if (rightPresence === "absent")
245
+ return "removed";
246
+ if (leftField !== undefined && rightField !== undefined) {
194
247
  return leftField.state === "unknown" || rightField.state === "unknown"
195
248
  ? "unknown"
196
249
  : "changed";
197
250
  }
198
- const present = leftField ?? rightField;
199
- if (present === undefined)
200
- return null;
201
- const parent = parentPointer(path);
202
- const parentsComplete = propertyCoverageComplete(leftShape, parent) &&
203
- propertyCoverageComplete(rightShape, parent);
204
- if (present.state === "unknown" || !parentsComplete)
205
- return "unknown";
206
- return leftField === undefined ? "added" : "removed";
251
+ return null;
252
+ };
253
+ const fieldPresence = (shape, field, path) => {
254
+ if (field !== undefined)
255
+ return field.presence;
256
+ return propertyCoverageComplete(shape, parentPointer(path))
257
+ ? "absent"
258
+ : "unknown-coverage";
207
259
  };
208
260
  const propertyCoverageComplete = (shape, path) => path !== null &&
209
261
  shape.property_coverage.some((coverage) => coverage.path === path && coverage.status === "complete");
@@ -214,7 +266,7 @@ const parentPointer = (path) => {
214
266
  return separator < 0 ? null : path.slice(0, separator);
215
267
  };
216
268
  const fieldAvailability = (field) => {
217
- if (field === undefined)
269
+ if (field === undefined || field.presence === "absent")
218
270
  return { availability: "absent" };
219
271
  if (field.state === "unknown")
220
272
  return {
@@ -245,6 +297,7 @@ const unpairedChange = (side, shape, evidenceLinks) => changeWithId({
245
297
  status: "unknown",
246
298
  path: "",
247
299
  discriminant: null,
300
+ presence: UNKNOWN_COVERAGE_PRESENCE,
248
301
  left: {
249
302
  availability: "unknown",
250
303
  reason: side === "left"
@@ -62,6 +62,16 @@ const candidateFields = (node, seedKind) => {
62
62
  value: observation.label,
63
63
  },
64
64
  ]),
65
+ ...(observation.source_map_reference !== null &&
66
+ observation.source_map_reference.resolution.kind !== "unresolved"
67
+ ? [
68
+ {
69
+ basis: "property",
70
+ field: `observations[${String(index)}].source_map_reference.resolution.path`,
71
+ value: observation.source_map_reference.resolution.path,
72
+ },
73
+ ]
74
+ : []),
65
75
  ...propertyFields(observation.properties, `observations[${String(index)}].properties`),
66
76
  ]),
67
77
  ];
@@ -89,6 +99,7 @@ const relevantFields = {
89
99
  ".path",
90
100
  ".source",
91
101
  ".original_source",
102
+ ".source_root",
92
103
  ".exports",
93
104
  ],
94
105
  "native-export": [".label", ".key", ".requested_members", ".members"],
@@ -104,6 +115,15 @@ const identityFields = (node) => {
104
115
  field: "identity.original_source",
105
116
  value: identity.original_source,
106
117
  },
118
+ ...(identity.source_root === null
119
+ ? []
120
+ : [
121
+ {
122
+ basis: "identity",
123
+ field: "identity.source_root",
124
+ value: identity.source_root,
125
+ },
126
+ ]),
107
127
  ];
108
128
  if (identity.strategy === "canonical-path")
109
129
  return [
@@ -1,4 +1,3 @@
1
- import {} from "./javascriptApplicationGraph.js";
2
1
  import { compareCodePoints } from "../canonicalOrdering.js";
3
2
  /** Traverse a JAG without treating edge inference as observed reachability. */
4
3
  export const traverseApplicationFeature = (graph, seedNodeIds, direction) => {
@@ -1,5 +1,5 @@
1
1
  import { compareCodePoints } from "../canonicalOrdering.js";
2
- import {} from "./javascriptApplicationGraph.js";
2
+ import {} from "./javascriptApplicationGraphSchemas.js";
3
3
  /** Build provider-neutral addon targets and link exact-subject native Evidence. */
4
4
  export const buildJavaScriptNativeHandoffs = (nodes, edges, nativeEvidence) => {
5
5
  const nodeById = new Map(nodes.map((node) => [node.node_id, node]));
@@ -1,16 +1,11 @@
1
1
  import { z } from "zod";
2
2
  import { digestSchema } from "../digests.js";
3
3
  import { analyzeJavaScriptApplicationInputSchema } from "./javascriptApplicationAnalysis.js";
4
+ import { localPathStringSchema } from "../localPath.js";
4
5
  /** Recover derived readable modules from one explicitly selected local script. */
5
6
  export const javascriptRecoveryInputSchema = z.strictObject({
6
- path: z
7
- .string()
8
- .min(1)
9
- .describe("Absolute path to a UTF-8 JavaScript file; never executed"),
10
- output_directory: z
11
- .string()
12
- .min(1)
13
- .describe("Absolute absent output directory; parent must exist"),
7
+ path: localPathStringSchema.describe("Absolute path to a UTF-8 JavaScript file; never executed"),
8
+ output_directory: localPathStringSchema.describe("Absolute absent output directory; parent must exist"),
14
9
  extraction_mode: z
15
10
  .enum(["structural", "heuristic", "inspection"])
16
11
  .default("structural")
@@ -1,4 +1,3 @@
1
- import {} from "./javascriptApplicationGraph.js";
2
1
  import { uniqueSorted } from "../canonicalOrdering.js";
3
2
  import { createStaticRuntimeScope, mappedRuntimePaths, staticNodeWithinRuntimeScope, } from "./javascriptRuntimeStaticCandidates.js";
4
3
  /** Classify static code presence without claiming bundled module execution. */
@@ -77,8 +77,16 @@ const javascriptRuntimeScriptSchema = z.strictObject({
77
77
  location: javascriptRuntimeLocationSchema,
78
78
  execution_context_key: z.string().nullable(),
79
79
  cdp_hash: z.string().nullable(),
80
- length: z.number().int().min(0),
81
- is_module: z.boolean(),
80
+ length: z
81
+ .number()
82
+ .int()
83
+ .min(0)
84
+ .nullable()
85
+ .describe("Producer-reported script length; null when unavailable."),
86
+ is_module: z
87
+ .boolean()
88
+ .nullable()
89
+ .describe("Producer-reported module classification; null when unavailable."),
82
90
  status: z.literal("observed-loaded"),
83
91
  });
84
92
  const javascriptRuntimeContextSchema = z.strictObject({
@@ -1,4 +1,4 @@
1
- import { createJavaScriptApplicationEdge, } from "./javascriptApplicationGraph.js";
1
+ import { createJavaScriptApplicationEdge } from "./javascriptApplicationGraph.js";
2
2
  import { canonicalDigest } from "../comparisonSemantics.js";
3
3
  import { compareCodePoints } from "../canonicalOrdering.js";
4
4
  import { mappedRuntimePaths, } from "./javascriptRuntimeStaticCandidates.js";
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
- import { browserAllowedOriginsSchema, browserEndpointSchema, webPageInspectionSchema, } from "../browserObservation.js";
2
+ import { browserAllowedOriginsSchema, browserEndpointSchema, } from "../browserObservation.js";
3
+ import { webPageInspectionSchema, } from "../browserObservationSchemas.js";
3
4
  import { classifyBrowserCompleteness, } from "../browserCompleteness.js";
4
5
  import { electronPageInspectionSchema, } from "./electronObservation.js";
5
6
  import { javascriptRuntimeObservationSchema, javascriptRuntimeKindSchema, } from "./javascriptRuntimeObservation.js";
@@ -160,7 +161,7 @@ const normalizeV8Inspection = (result) => ({
160
161
  script_key: script.script_key,
161
162
  frame_id: script.execution_context_key,
162
163
  ...runtimeLocation(script.location),
163
- cdp_hash: script.cdp_hash ?? "",
164
+ cdp_hash: script.cdp_hash,
164
165
  length: script.length,
165
166
  is_module: script.is_module,
166
167
  language: null,
@@ -1,5 +1,4 @@
1
1
  import { posix, relative, win32 } from "node:path";
2
- import {} from "./javascriptApplicationGraph.js";
3
2
  import { compareCodePoints, uniqueSorted } from "../canonicalOrdering.js";
4
3
  /** Index statically reconstructed entities that can receive runtime matches. */
5
4
  export const collectStaticRuntimeCandidates = (layers) => layers