rea-agents 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. package/README.md +83 -108
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisContextQueries.js +21 -9
  6. package/dist/application/AnalysisSnapshotCache.js +0 -1
  7. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  8. package/dist/application/AndroidApplicationService.js +1 -1
  9. package/dist/application/AppleApplicationService.js +1 -1
  10. package/dist/application/ArtifactExtraction.js +35 -54
  11. package/dist/application/ArtifactExtractionDestination.js +17 -0
  12. package/dist/application/ArtifactGraphConstruction.js +2 -17
  13. package/dist/application/ArtifactInventory/classify.js +2 -6
  14. package/dist/application/ArtifactInventory/hash.js +2 -20
  15. package/dist/application/ArtifactInventory/policy.js +17 -0
  16. package/dist/application/ArtifactInventory/reader.js +1 -4
  17. package/dist/application/ArtifactInventory/scanCanonical.js +8 -15
  18. package/dist/application/ArtifactInventory/scanReader.js +76 -58
  19. package/dist/application/ArtifactInventory/types.js +1 -5
  20. package/dist/application/ArtifactInventory.js +6 -14
  21. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  22. package/dist/application/BinarySession.js +54 -28
  23. package/dist/application/BinarySessionComposition.js +0 -11
  24. package/dist/application/BinarySessionOpen.js +2 -1
  25. package/dist/application/BinarySessionRecords.js +24 -86
  26. package/dist/application/BinarySessionStatus.js +16 -21
  27. package/dist/application/BinaryTargetResolver.js +216 -0
  28. package/dist/application/BrowserEvidence.js +39 -57
  29. package/dist/application/BrowserObservationService.js +3 -6
  30. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  31. package/dist/application/BrowserScenarioEvidence.js +3 -3
  32. package/dist/application/CallPathTracing.js +2 -36
  33. package/dist/application/CapabilityClientRequirements.js +26 -0
  34. package/dist/application/CapabilityInventory.js +143 -77
  35. package/dist/application/ClientConfigurationDocument.js +27 -0
  36. package/dist/application/ClientRegistrationStatus.js +16 -13
  37. package/dist/application/CommandShimReplay.js +14 -1
  38. package/dist/application/DirectAnalysis.js +22 -46
  39. package/dist/application/DirectAnalysisStatus.js +5 -61
  40. package/dist/application/Doctor.js +11 -32
  41. package/dist/application/DoctorDiagnostics.js +1 -2
  42. package/dist/application/DoctorScope.js +1 -1
  43. package/dist/application/ElectronActiveEvidence.js +50 -0
  44. package/dist/application/ElectronActiveObservationPort.js +1 -0
  45. package/dist/application/ElectronActiveObservationService.js +78 -0
  46. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  47. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  48. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  49. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  50. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  51. package/dist/application/ElectronEvidence.js +4 -7
  52. package/dist/application/ElectronObservationService.js +5 -9
  53. package/dist/application/EnhancedLiteralTracing.js +42 -65
  54. package/dist/application/EnhancedTools.js +98 -64
  55. package/dist/application/EvidenceBundleCommands.js +16 -12
  56. package/dist/application/EvidenceBundleFiles.js +9 -15
  57. package/dist/application/EvidenceLedger.js +14 -42
  58. package/dist/application/FilesystemSnapshot.js +2 -3
  59. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  60. package/dist/application/InventoryProjectionEvidence.js +4 -2
  61. package/dist/application/InvestigationProviders.js +1 -1
  62. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  63. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  64. package/dist/application/JavaScriptApplicationService.js +6 -29
  65. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  66. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  67. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  68. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  69. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  70. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  71. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  72. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  73. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  74. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  75. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  76. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  77. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  78. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  79. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  80. package/dist/application/JavaScriptJsonModules.js +2 -2
  81. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  82. package/dist/application/JavaScriptReplayPermission.js +1 -1
  83. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  84. package/dist/application/JavaScriptReplayService.js +29 -47
  85. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  86. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  87. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  88. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  89. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  90. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  91. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  92. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  93. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  94. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  95. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  96. package/dist/application/JsonFiles.js +79 -0
  97. package/dist/application/LinuxHopper.js +11 -9
  98. package/dist/application/LoopbackReplay.js +26 -23
  99. package/dist/application/LoopbackReplayRecorder.js +29 -1
  100. package/dist/application/ManagedApplicationGraphService.js +1 -2
  101. package/dist/application/ManagedMemberComparisonService.js +11 -41
  102. package/dist/application/ManagedNativeVerificationService.js +1 -2
  103. package/dist/application/ManagedReconstructionService.js +1 -1
  104. package/dist/application/ManagedRuntimeCorrelationService.js +14 -13
  105. package/dist/application/NativeApiInspection.js +2 -7
  106. package/dist/application/NativeUiActionTrace.js +394 -0
  107. package/dist/application/NodeRuntimeCharacterizationService.js +11 -16
  108. package/dist/application/PermissionAuthority.js +15 -7
  109. package/dist/application/PermissionFailure.js +5 -0
  110. package/dist/application/ProcessCaptureAuthority.js +5 -7
  111. package/dist/application/ProcessCaptureJournal.js +3 -2
  112. package/dist/application/ProcessCaptureLifecycle.js +10 -12
  113. package/dist/application/ProcessCheckpoints.js +29 -11
  114. package/dist/application/ProcessCli.js +8 -17
  115. package/dist/application/ProcessEvidence.js +5 -7
  116. package/dist/application/ProcessHarness.js +60 -20
  117. package/dist/application/ProcessNormalization.js +2 -1
  118. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  119. package/dist/application/ProcessReactiveEffects.js +9 -3
  120. package/dist/application/ProcessReactiveHarness.js +13 -7
  121. package/dist/application/ProcessSampling.js +2 -4
  122. package/dist/application/ProcessTimer.js +39 -0
  123. package/dist/application/ProjectPermissionStore.js +39 -95
  124. package/dist/application/RealHopperAssertions.js +20 -66
  125. package/dist/application/ReconstructionCoverageService.js +12 -58
  126. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  127. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  128. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  129. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  130. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  131. package/dist/application/ReferenceSourceImport.js +21 -47
  132. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  133. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  134. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  135. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  136. package/dist/application/SessionProviderRouter.js +2 -2
  137. package/dist/application/Setup.js +1 -3
  138. package/dist/application/SetupClientConfiguration.js +22 -88
  139. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  140. package/dist/application/StoreFileLock.js +119 -0
  141. package/dist/application/TerminalRenderer.js +2 -3
  142. package/dist/application/Uninstall.js +9 -14
  143. package/dist/application/UnknownEvidence.js +1 -1
  144. package/dist/application/WindowsCapabilities.js +5 -4
  145. package/dist/artifacts/ArtifactPaths.js +2 -5
  146. package/dist/artifacts/ArtifactProvider.js +43 -67
  147. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  148. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  149. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  150. package/dist/artifacts/NibArchive.js +269 -0
  151. package/dist/artifacts/SafeOutputTree.js +21 -31
  152. package/dist/browser/BrowserProcessStartup.js +1 -2
  153. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  154. package/dist/browser/CdpBrowserProvider.js +3 -13
  155. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  156. package/dist/browser/CdpCaptureDocuments.js +28 -76
  157. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  158. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  159. package/dist/browser/CdpCaptureEvents.js +2 -8
  160. package/dist/browser/CdpCaptureStorage.js +9 -20
  161. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -95
  162. package/dist/browser/CdpCaptureValues.js +21 -21
  163. package/dist/browser/CdpConnection.js +10 -25
  164. package/dist/browser/CdpElectronInspection.js +29 -51
  165. package/dist/browser/CdpElectronProvider.js +10 -35
  166. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  167. package/dist/browser/CdpElectronScripts.js +6 -35
  168. package/dist/browser/CdpElectronWorkers.js +6 -10
  169. package/dist/browser/CdpEndpoint.js +25 -41
  170. package/dist/browser/CdpObservationSession.js +14 -26
  171. package/dist/browser/CdpPageCapture.js +34 -48
  172. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  173. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  174. package/dist/browser/CdpSafeMetadata.js +19 -22
  175. package/dist/browser/CdpScreenshot.js +3 -5
  176. package/dist/browser/CdpTargetSession.js +1 -2
  177. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  178. package/dist/browser/ElectronFileScope.js +8 -19
  179. package/dist/browser/JavaScriptRuntimeScope.js +10 -10
  180. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  181. package/dist/browser/PlaywrightElectronActiveActions.js +309 -0
  182. package/dist/browser/PlaywrightElectronActiveProvider.js +274 -0
  183. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  184. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  185. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  186. package/dist/browser/PlaywrightScenarioBrowser.js +7 -9
  187. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  188. package/dist/browser/PlaywrightScenarioSession.js +18 -34
  189. package/dist/browser/PngVisualDiff.js +22 -14
  190. package/dist/browser/SensitiveTextCapture.js +1 -18
  191. package/dist/browser/V8InspectorCaptureProjection.js +7 -7
  192. package/dist/browser/V8InspectorEndpoint.js +12 -14
  193. package/dist/browser/V8InspectorProvider.js +20 -61
  194. package/dist/browser/WebSourceMapFetcher.js +56 -176
  195. package/dist/catalogIdentity.js +12 -60
  196. package/dist/cli/artifactCommands.js +49 -77
  197. package/dist/cli/coreAnalysisCommands.js +83 -133
  198. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  199. package/dist/cli/managedCommands.js +6 -271
  200. package/dist/cli/setupCommands.js +3 -12
  201. package/dist/cli/utilityCommands.js +7 -41
  202. package/dist/cli.js +0 -2
  203. package/dist/cliApplicationCommands.js +44 -114
  204. package/dist/cliBrowserAdvancedCommands.js +12 -102
  205. package/dist/cliBrowserCommands.js +19 -124
  206. package/dist/cliBrowserContext.js +30 -0
  207. package/dist/cliCommandNames.js +5 -5
  208. package/dist/cliElectronCommands.js +49 -71
  209. package/dist/cliEvidenceCommands.js +8 -77
  210. package/dist/cliJavaScriptRuntimeCommands.js +18 -92
  211. package/dist/cliJsonInput.js +4 -14
  212. package/dist/cliObservationOptions.js +11 -92
  213. package/dist/cliPolicyCommands.js +2 -16
  214. package/dist/cliProcessCommands.js +3 -3
  215. package/dist/cliSetup.js +0 -13
  216. package/dist/config/browserScenario.js +77 -0
  217. package/dist/config/electronAutomation.js +35 -0
  218. package/dist/config/environment.js +6 -9
  219. package/dist/config/javascriptReplay.js +41 -0
  220. package/dist/config/managedRuntime.js +25 -0
  221. package/dist/config/parseConfig.js +56 -232
  222. package/dist/config/parsers.js +16 -28
  223. package/dist/config/passiveObservation.js +87 -0
  224. package/dist/config/permissions.js +0 -7
  225. package/dist/config/processCapture.js +47 -0
  226. package/dist/contracts/analysisSearchContract.js +2 -5
  227. package/dist/contracts/applicationToolContracts.js +58 -114
  228. package/dist/contracts/applicationWorkflowInputContracts.js +29 -114
  229. package/dist/contracts/artifactComparisonExample.js +58 -60
  230. package/dist/contracts/artifactToolContracts.js +37 -91
  231. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  232. package/dist/contracts/browserToolContracts.js +10 -75
  233. package/dist/contracts/electronToolContracts.js +27 -98
  234. package/dist/contracts/enhancedInputs.js +31 -78
  235. package/dist/contracts/errorSchemas.js +0 -1
  236. package/dist/contracts/functionComparisonExample.js +10 -24
  237. package/dist/contracts/functionInstructionContract.js +1 -3
  238. package/dist/contracts/functionWorkflowToolContracts.js +4 -5
  239. package/dist/contracts/hopperMemoryContracts.js +3 -3
  240. package/dist/contracts/investigationExamples.js +14 -11
  241. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  242. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  243. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  244. package/dist/contracts/managedToolContracts.js +10 -104
  245. package/dist/contracts/managedWorkflowExamples.js +77 -125
  246. package/dist/contracts/managedWorkflowToolContracts.js +51 -74
  247. package/dist/contracts/nativeToolContracts.js +9 -14
  248. package/dist/contracts/processCaptureExample.js +2 -69
  249. package/dist/contracts/promptContracts.js +49 -67
  250. package/dist/contracts/providerSelection.js +0 -1
  251. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  252. package/dist/contracts/sessionStatusContract.js +1 -17
  253. package/dist/contracts/sessionToolSchemas.js +52 -0
  254. package/dist/contracts/toolContractExamples.js +11 -10
  255. package/dist/contracts/toolContractHelpers.js +19 -0
  256. package/dist/contracts/toolContracts.js +60 -143
  257. package/dist/contracts/toolEffects.js +16 -9
  258. package/dist/contracts/toolOutputSchemaGroups.js +47 -86
  259. package/dist/contracts/toolOutputSchemaPrimitives.js +72 -62
  260. package/dist/contracts/toolSchemaMetadata.js +117 -0
  261. package/dist/contracts/unknownContractExamples.js +0 -2
  262. package/dist/doctorRuntime.js +1 -1
  263. package/dist/domain/analysisErrorPresentation.js +46 -54
  264. package/dist/domain/analysisErrorProjection.js +28 -37
  265. package/dist/domain/analysisProfile.js +3 -31
  266. package/dist/domain/analysisSnapshot.js +3 -12
  267. package/dist/domain/androidApplication.js +15 -52
  268. package/dist/domain/appleApplication.js +24 -65
  269. package/dist/domain/artifactComparison.js +11 -29
  270. package/dist/domain/artifactGraph.js +14 -44
  271. package/dist/domain/artifactInspection.js +38 -69
  272. package/dist/domain/artifactInventoryEvidence.js +27 -21
  273. package/dist/domain/binaryTarget.js +2 -219
  274. package/dist/domain/binaryTargetTypes.js +1 -0
  275. package/dist/domain/browserCaptureComparison.js +35 -60
  276. package/dist/domain/browserObservation.js +45 -197
  277. package/dist/domain/browserObservationSchemas.js +5 -23
  278. package/dist/domain/browserScenario.js +11 -14
  279. package/dist/domain/browserScenarioCapture.js +11 -12
  280. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  281. package/dist/domain/browserScenarioDiff.js +2 -59
  282. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  283. package/dist/domain/browserScenarioDiffValues.js +21 -38
  284. package/dist/domain/browserScenarioValues.js +80 -109
  285. package/dist/domain/browserSession.js +4 -7
  286. package/dist/domain/bundleComparison.js +6 -32
  287. package/dist/domain/bytecodeProvider.js +53 -54
  288. package/dist/domain/callPath.js +50 -169
  289. package/dist/domain/callPathSchemas.js +79 -0
  290. package/dist/domain/changedBehavior.js +34 -60
  291. package/dist/domain/completionLedgerGeneration.js +8 -14
  292. package/dist/domain/conformancePackage.js +126 -97
  293. package/dist/domain/conformanceReplay.js +39 -11
  294. package/dist/domain/conformanceTrustGate.js +174 -30
  295. package/dist/domain/customProtocolCapture.js +4 -4
  296. package/dist/domain/electronActiveObservation.js +244 -0
  297. package/dist/domain/electronObservation.js +21 -83
  298. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  299. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  300. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  301. package/dist/domain/electronStaticAnalysisValues.js +14 -18
  302. package/dist/domain/errors.js +33 -54
  303. package/dist/domain/eventProcessTree.js +101 -90
  304. package/dist/domain/evidence.js +2 -10
  305. package/dist/domain/evidenceBundle.js +3 -5
  306. package/dist/domain/evidenceCompletionLedger.js +6 -8
  307. package/dist/domain/functionComparison.js +4 -14
  308. package/dist/domain/functionComparisonNormalization.js +8 -8
  309. package/dist/domain/functionComparisonResults.js +25 -15
  310. package/dist/domain/functionComparisonSchemas.js +49 -33
  311. package/dist/domain/functionDossierEvidence.js +31 -151
  312. package/dist/domain/hopperStartupFailure.js +1 -1
  313. package/dist/domain/hopperValues.js +17 -141
  314. package/dist/domain/inputIssueProjection.js +4 -1
  315. package/dist/domain/interfaceBuilderGraph.js +654 -0
  316. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  317. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  318. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  319. package/dist/domain/javascriptApplicationGraph.js +3 -13
  320. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  321. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  322. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  323. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  324. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  325. package/dist/domain/javascriptAstFingerprint.js +25 -58
  326. package/dist/domain/javascriptAstValues.js +9 -0
  327. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  328. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  329. package/dist/domain/javascriptExportShapeComparisonSchemas.js +70 -77
  330. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  331. package/dist/domain/javascriptFeatureSeed.js +20 -12
  332. package/dist/domain/javascriptFeatureTrace.js +13 -67
  333. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  334. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  335. package/dist/domain/javascriptNativeHandoff.js +1 -1
  336. package/dist/domain/javascriptReplay.js +100 -101
  337. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  338. package/dist/domain/javascriptRuntimeObservation.js +43 -103
  339. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  340. package/dist/domain/javascriptRuntimeReconciliationActive.js +80 -0
  341. package/dist/domain/javascriptRuntimeReconciliationGraph.js +21 -33
  342. package/dist/domain/javascriptRuntimeReconciliationMatching.js +75 -61
  343. package/dist/domain/javascriptRuntimeReconciliationParsing.js +21 -46
  344. package/dist/domain/javascriptRuntimeReconciliationResult.js +25 -19
  345. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  346. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +34 -49
  347. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  348. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  349. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  350. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  351. package/dist/domain/javascriptSemanticCalls.js +5 -32
  352. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  353. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  354. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  355. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  356. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  357. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  358. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  359. package/dist/domain/javascriptSemanticIr.js +1 -29
  360. package/dist/domain/javascriptSemanticObjects.js +1 -5
  361. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  362. package/dist/domain/javascriptSemanticProjection.js +0 -18
  363. package/dist/domain/javascriptSemanticPromises.js +9 -16
  364. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  365. package/dist/domain/javascriptSemanticQuery.js +17 -139
  366. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  367. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  368. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  369. package/dist/domain/javascriptSemanticResources.js +1 -6
  370. package/dist/domain/javascriptSemanticReturns.js +10 -27
  371. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  372. package/dist/domain/javascriptSemanticValues.js +44 -62
  373. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  374. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  375. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  376. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  377. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  378. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  379. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  380. package/dist/domain/jsonShape.js +7 -33
  381. package/dist/domain/localPath.js +7 -0
  382. package/dist/domain/managedApplicationGraph.js +9 -41
  383. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  384. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  385. package/dist/domain/managedArtifact.js +14 -27
  386. package/dist/domain/managedMemberComparison.js +90 -92
  387. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  388. package/dist/domain/managedMemberComparisonItems.js +221 -0
  389. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  390. package/dist/domain/managedNativeVerification.js +3 -6
  391. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  392. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  393. package/dist/domain/managedReconstruction.js +19 -23
  394. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  395. package/dist/domain/nativeApiBoundary.js +17 -14
  396. package/dist/domain/nativeInspection.js +0 -2
  397. package/dist/domain/nativeInvestigationGraph.js +351 -0
  398. package/dist/domain/nativeValueFlow.js +61 -0
  399. package/dist/domain/nodeRuntimeCharacterization.js +15 -18
  400. package/dist/domain/objcSwiftMetadata.js +254 -0
  401. package/dist/domain/peInspection.js +1 -1
  402. package/dist/domain/permissionPolicy.js +13 -0
  403. package/dist/domain/processCapture.js +76 -113
  404. package/dist/domain/processCaptureExample.js +68 -0
  405. package/dist/domain/processCaptureParsing.js +21 -0
  406. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  407. package/dist/domain/processCaptureReactiveValidation.js +8 -3
  408. package/dist/domain/processCaptureValidation.js +8 -10
  409. package/dist/domain/processComparison.js +12 -16
  410. package/dist/domain/processObservation.js +5 -6
  411. package/dist/domain/processReactiveMatching.js +32 -46
  412. package/dist/domain/processReactiveRuntime.js +4 -8
  413. package/dist/domain/processReactiveScenario.js +28 -94
  414. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  415. package/dist/domain/processReactiveTransition.js +42 -21
  416. package/dist/domain/processScenario.js +62 -93
  417. package/dist/domain/processTraceComparison.js +0 -7
  418. package/dist/domain/processTraceEvaluation.js +14 -4
  419. package/dist/domain/processTraceSpecification.js +11 -17
  420. package/dist/domain/protocolCapture.js +11 -9
  421. package/dist/domain/reconstructionCoverage.js +62 -129
  422. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  423. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  424. package/dist/domain/reconstructionReadiness.js +1 -2
  425. package/dist/domain/reconstructionReadinessSchemas.js +66 -40
  426. package/dist/domain/reconstructionUnknowns.js +3 -3
  427. package/dist/domain/reconstructionVerification.js +13 -47
  428. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  429. package/dist/domain/referenceSourceGraph.js +53 -61
  430. package/dist/domain/referenceSourceImportParsing.js +3 -7
  431. package/dist/domain/replayMachine.js +19 -31
  432. package/dist/domain/replayMachineRun.js +15 -63
  433. package/dist/domain/replayMachineRuntime.js +46 -44
  434. package/dist/domain/replayMachineValues.js +84 -0
  435. package/dist/domain/residualUnknown.js +25 -30
  436. package/dist/domain/runtimeCharacterization.js +15 -16
  437. package/dist/domain/runtimeIdentification.js +48 -47
  438. package/dist/domain/sourceToBundleComparison.js +11 -87
  439. package/dist/domain/sourceToBundleComparisonSchemas.js +25 -50
  440. package/dist/domain/sourceToBundleSignals.js +11 -16
  441. package/dist/domain/staticRuntimeCorrelation.js +44 -54
  442. package/dist/domain/symbolAnalysis.js +10 -19
  443. package/dist/domain/unicodeCodePointOrder.js +12 -0
  444. package/dist/domain/webBundleAnalysis.js +70 -99
  445. package/dist/domain/webBundleAnalyzer.js +2 -4
  446. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  447. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  448. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  449. package/dist/domain/webCaptureDiff.js +48 -85
  450. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  451. package/dist/domain/webContentArtifact.js +1 -10
  452. package/dist/domain/webMcpDiscovery.js +3 -14
  453. package/dist/domain/webScreenshot.js +58 -34
  454. package/dist/domain/zipPackageFormat.js +7 -0
  455. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  456. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  457. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  458. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  459. package/dist/dotnet/ManagedMemberRows.js +16 -16
  460. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  461. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  462. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  463. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  464. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  465. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  466. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -42
  467. package/dist/dotnet/ManagedPeReader.js +2 -2
  468. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  469. package/dist/generatedMcpToolCatalog.js +1 -1
  470. package/dist/generatedPackageMetadata.js +1 -1
  471. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  472. package/dist/ghidra/GhidraClient.js +5 -13
  473. package/dist/ghidra/GhidraClientStartup.js +1 -1
  474. package/dist/ghidra/GhidraClientWire.js +9 -5
  475. package/dist/ghidra/GhidraDefaults.js +0 -18
  476. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  477. package/dist/ghidra/GhidraDoctor.js +16 -12
  478. package/dist/ghidra/GhidraFunctionValues.js +67 -108
  479. package/dist/ghidra/GhidraInstallation.js +98 -42
  480. package/dist/ghidra/GhidraInventoryValues.js +18 -77
  481. package/dist/ghidra/GhidraLauncher.js +0 -8
  482. package/dist/ghidra/GhidraProvider.js +32 -31
  483. package/dist/ghidra/GhidraProviderCapabilities.js +11 -48
  484. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  485. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  486. package/dist/ghidra/GhidraSessionValues.js +0 -2
  487. package/dist/ghidra/GhidraSocketConnection.js +1 -1
  488. package/dist/ghidra/GhidraTransport.js +4 -7
  489. package/dist/ghidra/protocol.js +19 -42
  490. package/dist/hopper/BridgeLauncher.js +115 -37
  491. package/dist/hopper/HopperAnalysisProfile.js +3 -5
  492. package/dist/hopper/HopperCleanup.js +11 -9
  493. package/dist/hopper/HopperClient.js +5 -8
  494. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  495. package/dist/hopper/HopperProvider.js +0 -30
  496. package/dist/hopper/HopperRequestQueue.js +21 -40
  497. package/dist/hopper/HopperResponseStream.js +1 -9
  498. package/dist/hopper/HopperSessionValues.js +3 -2
  499. package/dist/hopper/HopperTargetLease.js +119 -0
  500. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  501. package/dist/hopper/LinuxPrivateDisplayProbe.js +21 -26
  502. package/dist/hopper/protocol.js +6 -4
  503. package/dist/main/reload.js +1 -9
  504. package/dist/main/shutdown.js +1 -1
  505. package/dist/main/state.js +0 -23
  506. package/dist/main/transport.js +27 -39
  507. package/dist/main.js +17 -15
  508. package/dist/mcpDoctor.js +27 -69
  509. package/dist/native/CommandRunner.js +18 -25
  510. package/dist/native/NativeMacOSProvider.js +13 -38
  511. package/dist/native/NativeMachoInspection.js +1 -1
  512. package/dist/process/BoundedFileBytes.js +17 -0
  513. package/dist/process/ExecFileOutput.js +11 -0
  514. package/dist/process/PendingOperations.js +8 -6
  515. package/dist/process/PrivateRuntimeRoot.js +17 -0
  516. package/dist/process/ProcessOwnership.js +67 -130
  517. package/dist/process/ProcessOwnershipIdentity.js +13 -0
  518. package/dist/process/ProcessOwnershipObservation.js +87 -0
  519. package/dist/process/ProcessOwnershipProcessTree.js +22 -0
  520. package/dist/process/ProviderDeadline.js +8 -12
  521. package/dist/process/ProviderProcess.js +7 -28
  522. package/dist/process/WindowsAuthority.js +32 -0
  523. package/dist/reference/ReferenceSourceReader.js +8 -24
  524. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  525. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  526. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  527. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  528. package/dist/replay/JavaScriptReplayWorker.js +95 -13
  529. package/dist/replay/JavaScriptReplayWorkerTypes.js +1 -0
  530. package/dist/replay/LinuxJavaScriptReplayRunner.js +42 -43
  531. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  532. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  533. package/dist/replay/ReplayOutcome.js +27 -18
  534. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  535. package/dist/replay/ReplaySeccompFile.js +29 -0
  536. package/dist/replay/ReplayWorkerProtocol.js +33 -30
  537. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  538. package/dist/server/ProcessCaptureElicitation.js +4 -8
  539. package/dist/server/createServer.js +145 -119
  540. package/dist/server/mcpClientMetadata.js +32 -0
  541. package/dist/server/promptCompletion.js +37 -61
  542. package/dist/server/recordDerivedEvidence.js +1 -1
  543. package/dist/server/registerApplicationTools/characterization.js +10 -21
  544. package/dist/server/registerApplicationTools/compareExportShapes.js +6 -16
  545. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -15
  546. package/dist/server/registerApplicationTools/compareVersions.js +6 -16
  547. package/dist/server/registerApplicationTools/controlledReplay.js +8 -15
  548. package/dist/server/registerApplicationTools/coverage.js +7 -78
  549. package/dist/server/registerApplicationTools/helpers.js +1 -13
  550. package/dist/server/registerApplicationTools/obligationLedger.js +4 -8
  551. package/dist/server/registerApplicationTools/traceFeature.js +6 -15
  552. package/dist/server/registerApplicationTools/traceSemantics.js +5 -13
  553. package/dist/server/registerApplicationTools.js +0 -2
  554. package/dist/server/registerArtifactComparisonTool.js +27 -35
  555. package/dist/server/registerBrowserScenarioTool.js +3 -8
  556. package/dist/server/registerBrowserTools.js +36 -81
  557. package/dist/server/registerBundleComparisonTool.js +10 -16
  558. package/dist/server/registerCloseLifecycleTool.js +5 -27
  559. package/dist/server/registerElectronTools.js +29 -65
  560. package/dist/server/registerEnhancedTools.js +118 -127
  561. package/dist/server/registerEvidenceTools.js +19 -30
  562. package/dist/server/registerFunctionComparisonTool.js +35 -34
  563. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  564. package/dist/server/registerInvestigationTools.js +36 -148
  565. package/dist/server/registerJavaScriptRuntimeObservationTools.js +15 -27
  566. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +16 -23
  567. package/dist/server/registerManagedWorkflowTools/contract.js +2 -3
  568. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  569. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -14
  570. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +4 -14
  571. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +11 -20
  572. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +10 -21
  573. package/dist/server/registerOfficialTools.js +8 -51
  574. package/dist/server/registerProcessComparisonTool.js +43 -38
  575. package/dist/server/registerPrompts.js +19 -17
  576. package/dist/server/registerReplayMachineTool.js +4 -10
  577. package/dist/server/registerSessionRecordTools.js +36 -153
  578. package/dist/server/registerSessionStatusTool.js +18 -96
  579. package/dist/server/registerSessionTools.js +34 -91
  580. package/dist/server/sessionAvailabilityPolicy.js +2 -3
  581. package/dist/server/sessionEvidence.js +9 -15
  582. package/dist/server/sessionToolPolicies.js +1 -13
  583. package/dist/server/toolRegistrationOptions.js +4 -192
  584. package/dist/server/toolResult.js +15 -67
  585. package/dist/serverIdentity.js +0 -20
  586. package/install.sh +1 -1
  587. package/package.json +27 -15
  588. package/scripts/electron-active-hook-boundaries.cjs +394 -0
  589. package/scripts/electron-active-hook.cjs +469 -0
  590. package/scripts/hopper-demo-x11.py +13 -32
  591. package/scripts/rea.mjs +1 -11
  592. package/skills/reverse-engineer-anything/SKILL.md +46 -11
  593. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  594. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  595. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  596. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -180
  597. package/dist/application/BoundedJsonFiles.js +0 -86
  598. package/dist/application/CrossVersionInventory.js +0 -128
  599. package/dist/application/CrossVersionInvestigation.js +0 -301
  600. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  601. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  602. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  603. package/dist/application/DeferredFileAuthorization.js +0 -61
  604. package/dist/application/DoctorProjection.js +0 -43
  605. package/dist/application/EnhancedToolPagination.js +0 -22
  606. package/dist/application/EvidenceReferenceResolver.js +0 -26
  607. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  608. package/dist/application/ProcessPairedExperiment.js +0 -72
  609. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  610. package/dist/application/ReconstructionReadinessService.js +0 -48
  611. package/dist/cliInvestigationCommands.js +0 -173
  612. package/dist/domain/boundedCartesianProjection.js +0 -15
  613. package/dist/domain/investigationWorkspace.js +0 -346
  614. package/dist/domain/jsonLimits.js +0 -26
  615. package/dist/domain/knownPageCoverage.js +0 -21
  616. package/dist/domain/processPairedExperiment.js +0 -128
  617. package/dist/server/DynamicToolAvailability.js +0 -70
  618. package/dist/server/LazyToolCatalog.js +0 -134
  619. package/dist/server/hydrateServerTools.js +0 -191
  620. package/dist/server/javascriptApplicationResult.js +0 -106
  621. package/dist/server/permissionFailure.js +0 -12
  622. package/dist/server/registerApplicationTools/readiness.js +0 -55
  623. package/dist/server/registerEvidenceResources.js +0 -315
  624. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  625. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  626. package/dist/server/registerReconstructionReadinessResource.js +0 -32
  627. package/dist/server/toolInputValidation.js +0 -77
  628. package/scripts/package-runner-bootstrap.mjs +0 -72
@@ -1,57 +1,39 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import * as t from "@babel/types";
3
- /** Derive a rename-resistant, bounded syntax fingerprint without code execution. */
4
- export const fingerprintJavaScriptAst = (node, maximumTokens) => {
3
+ import { propertyName } from "./javascriptAstValues.js";
4
+ /** Derive a rename-resistant syntax fingerprint without code execution. */
5
+ export const fingerprintJavaScriptAst = (node) => {
5
6
  const tokens = [];
6
- let truncated = false;
7
7
  t.traverseFast(node, (current) => {
8
- if (tokens.length >= maximumTokens) {
9
- truncated = true;
10
- return t.traverseFast.stop;
11
- }
12
8
  tokens.push(...semanticTokens(current));
13
- if (tokens.length > maximumTokens) {
14
- tokens.length = maximumTokens;
15
- truncated = true;
16
- return t.traverseFast.stop;
17
- }
18
9
  return undefined;
19
10
  });
20
- return {
21
- sha256: createHash("sha256").update(JSON.stringify(tokens)).digest("hex"),
22
- truncated,
23
- };
11
+ return createHash("sha256").update(JSON.stringify(tokens)).digest("hex");
24
12
  };
25
13
  /** Collect statically declared CommonJS/bundler export names from one factory. */
26
- export const collectJavaScriptExports = (node, maximumExports) => {
14
+ export const collectJavaScriptExports = (node) => {
27
15
  const exports = new Set();
28
- let truncated = false;
29
16
  t.traverseFast(node, (current) => {
30
- if (exports.size >= maximumExports) {
31
- truncated = true;
32
- return t.traverseFast.stop;
33
- }
34
17
  if (t.isAssignmentExpression(current))
35
- collectAssignmentExports(current.left, current.right, exports, maximumExports);
18
+ collectAssignmentExports(current.left, current.right, exports);
36
19
  if (t.isCallExpression(current))
37
- collectCallExports(current, exports, maximumExports);
20
+ collectCallExports(current, exports);
38
21
  return undefined;
39
22
  });
40
23
  return {
41
24
  values: [...exports].sort(compareCodePoints),
42
- truncated,
43
25
  };
44
26
  };
45
27
  const semanticTokens = (node) => {
46
28
  const tokens = [`node:${node.type}`];
47
29
  if (t.isStringLiteral(node))
48
- tokens.push(`string:${bounded(node.value)}`);
30
+ tokens.push(`string:${node.value}`);
49
31
  else if (t.isNumericLiteral(node))
50
32
  tokens.push(`number:${String(node.value)}`);
51
33
  else if (t.isBooleanLiteral(node))
52
34
  tokens.push(`boolean:${String(node.value)}`);
53
35
  else if (t.isRegExpLiteral(node))
54
- tokens.push(`regexp:${bounded(node.pattern)}/${node.flags}`);
36
+ tokens.push(`regexp:${node.pattern}/${node.flags}`);
55
37
  else if (t.isBinaryExpression(node) || t.isLogicalExpression(node))
56
38
  tokens.push(`operator:${node.operator}`);
57
39
  else if (t.isUnaryExpression(node) || t.isUpdateExpression(node))
@@ -59,36 +41,36 @@ const semanticTokens = (node) => {
59
41
  if (t.isMemberExpression(node) || t.isOptionalMemberExpression(node)) {
60
42
  const property = propertyName(node.property);
61
43
  if (property !== "")
62
- tokens.push(`property:${bounded(property)}`);
44
+ tokens.push(`property:${property}`);
63
45
  }
64
46
  if ((t.isObjectProperty(node) || t.isObjectMethod(node)) && !node.computed) {
65
47
  const key = propertyName(node.key);
66
48
  if (key !== "")
67
- tokens.push(`key:${bounded(key)}`);
49
+ tokens.push(`key:${key}`);
68
50
  }
69
51
  return tokens;
70
52
  };
71
- const collectAssignmentExports = (left, right, output, maximum) => {
53
+ const collectAssignmentExports = (left, right, output) => {
72
54
  const path = memberPath(left);
73
55
  if (path === "exports" || path === "module.exports") {
74
56
  if (t.isObjectExpression(right))
75
- collectObjectKeys(right, output, maximum);
57
+ collectObjectKeys(right, output);
76
58
  else
77
- addExport(output, "default", maximum);
59
+ addExport(output, "default");
78
60
  return;
79
61
  }
80
62
  if (path.startsWith("exports."))
81
- addExport(output, path.slice("exports.".length), maximum);
63
+ addExport(output, path.slice("exports.".length));
82
64
  if (path.startsWith("module.exports."))
83
- addExport(output, path.slice("module.exports.".length), maximum);
65
+ addExport(output, path.slice("module.exports.".length));
84
66
  };
85
- const collectCallExports = (call, output, maximum) => {
67
+ const collectCallExports = (call, output) => {
86
68
  const callee = memberPath(call.callee);
87
69
  if (callee === "Object.defineProperty") {
88
70
  const target = memberPath(call.arguments[0]);
89
71
  const name = stringValue(call.arguments[1]);
90
72
  if ((target === "exports" || target === "module.exports") && name)
91
- addExport(output, name, maximum);
73
+ addExport(output, name);
92
74
  }
93
75
  if (!callee.endsWith(".d"))
94
76
  return;
@@ -96,26 +78,21 @@ const collectCallExports = (call, output, maximum) => {
96
78
  const declarations = call.arguments[1];
97
79
  if ((target === "exports" || target === "module.exports") &&
98
80
  t.isObjectExpression(declarations))
99
- collectObjectKeys(declarations, output, maximum);
81
+ collectObjectKeys(declarations, output);
100
82
  };
101
- const collectObjectKeys = (object, output, maximum) => {
83
+ const collectObjectKeys = (object, output) => {
102
84
  for (const property of object.properties) {
103
- if (output.size >= maximum)
104
- return;
105
85
  if (!t.isObjectProperty(property) && !t.isObjectMethod(property))
106
86
  continue;
107
87
  const name = propertyName(property.key);
108
88
  if (name !== "")
109
- addExport(output, name, maximum);
89
+ addExport(output, name);
110
90
  }
111
91
  };
112
- const addExport = (output, name, maximum) => {
113
- if (output.size < maximum)
114
- output.add(name.slice(0, 4_096));
92
+ const addExport = (output, name) => {
93
+ output.add(name);
115
94
  };
116
- const memberPath = (node, depth = 0) => {
117
- if (depth >= 128)
118
- return "[deep]";
95
+ const memberPath = (node) => {
119
96
  if (node === undefined || node === null)
120
97
  return "";
121
98
  if (t.isIdentifier(node) || t.isPrivateName(node))
@@ -123,21 +100,11 @@ const memberPath = (node, depth = 0) => {
123
100
  if (t.isThisExpression(node))
124
101
  return "this";
125
102
  if (t.isMemberExpression(node) || t.isOptionalMemberExpression(node)) {
126
- const object = t.isNode(node.object)
127
- ? memberPath(node.object, depth + 1)
128
- : "";
103
+ const object = t.isNode(node.object) ? memberPath(node.object) : "";
129
104
  const property = propertyName(node.property);
130
105
  return object === "" ? property : `${object}.${property}`;
131
106
  }
132
107
  return "";
133
108
  };
134
- const propertyName = (node) => {
135
- if (t.isIdentifier(node))
136
- return node.name;
137
- if (t.isStringLiteral(node) || t.isNumericLiteral(node))
138
- return String(node.value);
139
- return "";
140
- };
141
109
  const stringValue = (node) => t.isStringLiteral(node) ? node.value : undefined;
142
- const bounded = (value) => value.slice(0, 1_024);
143
110
  const compareCodePoints = (left, right) => left < right ? -1 : left > right ? 1 : 0;
@@ -0,0 +1,9 @@
1
+ import * as t from "@babel/types";
2
+ /** Read an identifier or literal property name without evaluating syntax. */
3
+ export const propertyName = (node) => {
4
+ if (t.isIdentifier(node))
5
+ return node.name;
6
+ if (t.isStringLiteral(node) || t.isNumericLiteral(node))
7
+ return String(node.value);
8
+ return "";
9
+ };
@@ -2,7 +2,7 @@ import { createHash } from "node:crypto";
2
2
  import { z } from "zod";
3
3
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
4
4
  export const javascriptExportInstrumentationInputSchema = z.strictObject({
5
- artifact_path: z.string().min(1).max(4_096),
5
+ artifact_path: z.string().min(1),
6
6
  artifact_sha256: digestSchema,
7
7
  selection: z.strictObject({
8
8
  byte_start: z.number().int().min(0),
@@ -12,9 +12,8 @@ export const javascriptExportInstrumentationInputSchema = z.strictObject({
12
12
  }),
13
13
  });
14
14
  export const javascriptExportTransformationManifestSchema = z.strictObject({
15
- schema_version: z.literal(1),
16
15
  kind: z.literal("commonjs-factory-export-v1"),
17
- artifact_path: z.string().min(1).max(4_096),
16
+ artifact_path: z.string().min(1),
18
17
  original_sha256: digestSchema,
19
18
  original_byte_length: z.number().int().min(0),
20
19
  instrumented_sha256: digestSchema,
@@ -55,7 +54,6 @@ export const instrumentJavaScriptExport = (source, rawInput) => {
55
54
  const bindingStart = prefix.byteLength + source.byteLength;
56
55
  const suffixStart = bindingStart + binding.byteLength;
57
56
  const manifest = javascriptExportTransformationManifestSchema.parse({
58
- schema_version: 1,
59
57
  kind: "commonjs-factory-export-v1",
60
58
  artifact_path: input.artifact_path,
61
59
  original_sha256: input.artifact_sha256,
@@ -5,10 +5,10 @@ import { retainJavaScriptExportShapes, selectJavaScriptExport, } from "./javascr
5
5
  import { buildJavaScriptExportShapeChanges, compareJavaScriptExportShapeChanges, hasPartialJavaScriptExportPropertyCoverage, pairJavaScriptExportShapeVariants, } from "./javascriptExportShapeVariants.js";
6
6
  /** Compare exact selected export return shapes without executing JavaScript. */
7
7
  export const compareJavaScriptExportShapes = (input) => {
8
- const left = selectJavaScriptExport(input.left, input.limits.max_candidate_exports);
9
- const right = selectJavaScriptExport(input.right, input.limits.max_candidate_exports);
10
- const leftRetained = retainJavaScriptExportShapes(left, input.limits.max_return_variants);
11
- const rightRetained = retainJavaScriptExportShapes(right, input.limits.max_return_variants);
8
+ const left = selectJavaScriptExport(input.left);
9
+ const right = selectJavaScriptExport(input.right);
10
+ const leftRetained = retainJavaScriptExportShapes(left);
11
+ const rightRetained = retainJavaScriptExportShapes(right);
12
12
  const pairing = pairJavaScriptExportShapeVariants(leftRetained.shapes, rightRetained.shapes);
13
13
  const evidenceLinks = evidencePair(input.left.evidenceId, input.right.evidenceId);
14
14
  const allChanges = buildJavaScriptExportShapeChanges({
@@ -19,8 +19,8 @@ export const compareJavaScriptExportShapes = (input) => {
19
19
  rightShapes: rightRetained.shapes,
20
20
  evidenceLinks,
21
21
  }).sort(compareJavaScriptExportShapeChanges);
22
- const changes = allChanges.slice(0, input.limits.max_changes);
23
- const omittedChanges = allChanges.length - changes.length;
22
+ const changes = allChanges;
23
+ const omittedChanges = 0;
24
24
  const coverage = comparisonCoverage({
25
25
  input,
26
26
  left,
@@ -33,7 +33,6 @@ export const compareJavaScriptExportShapes = (input) => {
33
33
  });
34
34
  const limitations = comparisonLimitations(left, right, coverage.status);
35
35
  const semantic = {
36
- schema_version: 1,
37
36
  left: left.selection,
38
37
  right: right.selection,
39
38
  summary: summarize(allChanges),
@@ -3,10 +3,10 @@ import { evidenceSchema } from "./evidence.js";
3
3
  const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u);
4
4
  const graphIdSchema = z.string().regex(/^jag_[a-f0-9]{64}$/u);
5
5
  const nodeIdSchema = z.string().regex(/^jag_node_[a-f0-9]{64}$/u);
6
- const boundedTextSchema = z.string().min(1).max(4_096);
7
- const selectorTextSchema = z.string().min(1).max(4_096);
6
+ const textSchema = z.string().min(1);
7
+ const selectorTextSchema = textSchema;
8
8
  const semanticPrimitiveSchema = z.union([
9
- z.string().max(4_096),
9
+ z.string(),
10
10
  z.number().finite(),
11
11
  z.boolean(),
12
12
  z.null(),
@@ -28,7 +28,6 @@ function isJsonPointer(value) {
28
28
  }
29
29
  const jsonPointerSchema = z
30
30
  .string()
31
- .max(4_096)
32
31
  .refine(isJsonPointer, "Expected an RFC 6901 JSON Pointer");
33
32
  const sourcePointSchema = z.strictObject({
34
33
  line: z.number().int().min(1),
@@ -49,12 +48,7 @@ const sourceRangeSchema = z
49
48
  message: "Source range end must not precede its start",
50
49
  });
51
50
  });
52
- const comparisonLimitsSchema = z.strictObject({
53
- max_candidate_exports: z.number().int().min(1).max(1_000).default(100),
54
- max_return_variants: z.number().int().min(1).max(1_000).default(128),
55
- max_changes: z.number().int().min(1).max(10_000).default(1_000),
56
- });
57
- /** Two authenticated application graphs, exact export selectors, and bounds. */
51
+ /** Two authenticated application graphs and exact export selectors. */
58
52
  export const compareJavaScriptExportShapesInputSchema = z
59
53
  .strictObject({
60
54
  left: evidenceSchema,
@@ -63,12 +57,6 @@ export const compareJavaScriptExportShapesInputSchema = z
63
57
  left_export_name: selectorTextSchema,
64
58
  right_module_path: selectorTextSchema,
65
59
  right_export_name: selectorTextSchema,
66
- limits: comparisonLimitsSchema.default({
67
- max_candidate_exports: 100,
68
- max_return_variants: 128,
69
- max_changes: 1_000,
70
- }),
71
- unknown_registry_approved: z.literal(true).optional(),
72
60
  })
73
61
  .superRefine((input, context) => {
74
62
  if (input.left.evidence_id === input.right.evidence_id)
@@ -78,47 +66,39 @@ export const compareJavaScriptExportShapesInputSchema = z
78
66
  message: "JavaScript export shape Evidence must be distinct",
79
67
  });
80
68
  });
81
- const projectedReturnFieldSchema = z
82
- .strictObject({
83
- path: jsonPointerSchema,
84
- state: z.enum(["literal", "union", "unknown"]),
85
- value: z.union([
86
- semanticPrimitiveSchema,
87
- z.array(semanticPrimitiveSchema).min(1).max(32),
88
- ]),
89
- reason: boundedTextSchema.nullable(),
90
- })
91
- .superRefine((field, context) => {
92
- if (field.state === "union" && !Array.isArray(field.value))
93
- context.addIssue({
94
- code: "custom",
95
- path: ["value"],
96
- message: "Union return fields require a primitive value array",
97
- });
98
- if (field.state !== "union" && Array.isArray(field.value))
99
- context.addIssue({
100
- code: "custom",
101
- path: ["value"],
102
- message: "Only union return fields may contain a value array",
103
- });
104
- if (field.state === "unknown" && field.reason === null)
105
- context.addIssue({
106
- code: "custom",
107
- path: ["reason"],
108
- message: "Unknown return fields require a reason",
109
- });
110
- if (field.state !== "unknown" && field.reason !== null)
111
- context.addIssue({
112
- code: "custom",
113
- path: ["reason"],
114
- message: "Known return fields cannot carry an unknown reason",
115
- });
116
- });
117
- const projectedPropertyCoverageSchema = z.strictObject({
118
- path: jsonPointerSchema,
119
- status: z.enum(["complete", "partial"]),
120
- omitted: z.number().int().min(0).nullable(),
121
- });
69
+ const projectedReturnFieldShape = { path: jsonPointerSchema };
70
+ const projectedReturnFieldSchema = z.discriminatedUnion("state", [
71
+ z.strictObject({
72
+ ...projectedReturnFieldShape,
73
+ state: z.literal("literal"),
74
+ value: semanticPrimitiveSchema,
75
+ reason: z.null(),
76
+ }),
77
+ z.strictObject({
78
+ ...projectedReturnFieldShape,
79
+ state: z.literal("union"),
80
+ value: z.array(semanticPrimitiveSchema).min(1),
81
+ reason: z.null(),
82
+ }),
83
+ z.strictObject({
84
+ ...projectedReturnFieldShape,
85
+ state: z.literal("unknown"),
86
+ value: z.null(),
87
+ reason: textSchema,
88
+ }),
89
+ ]);
90
+ const projectedPropertyCoverageSchema = z.discriminatedUnion("status", [
91
+ z.strictObject({
92
+ path: jsonPointerSchema,
93
+ status: z.literal("complete"),
94
+ omitted: z.literal(0),
95
+ }),
96
+ z.strictObject({
97
+ path: jsonPointerSchema,
98
+ status: z.literal("partial"),
99
+ omitted: z.union([z.number().int().positive(), z.null()]),
100
+ }),
101
+ ]);
122
102
  const projectedReturnShapeSchema = z
123
103
  .strictObject({
124
104
  source_range: sourceRangeSchema,
@@ -130,10 +110,9 @@ const projectedReturnShapeSchema = z
130
110
  "unknown",
131
111
  "ambiguous",
132
112
  "cycle",
133
- "limit-reached",
134
113
  ]),
135
- fields: z.array(projectedReturnFieldSchema).max(64),
136
- property_coverage: z.array(projectedPropertyCoverageSchema).max(64),
114
+ fields: z.array(projectedReturnFieldSchema),
115
+ property_coverage: z.array(projectedPropertyCoverageSchema),
137
116
  })
138
117
  .superRefine((shape, context) => {
139
118
  const fieldPaths = shape.fields.map(({ path }) => path);
@@ -157,12 +136,12 @@ export const projectedExportReturnShapesSchema = z
157
136
  semantic_role: z.literal("export-return-shapes"),
158
137
  module_path: selectorTextSchema,
159
138
  exported_name: selectorTextSchema,
160
- callable_id: boundedTextSchema,
139
+ callable_id: textSchema,
161
140
  callable_kind: z.enum(["function", "class", "method"]),
162
- static_return_shapes: z.array(projectedReturnShapeSchema).max(32),
141
+ static_return_shapes: z.array(projectedReturnShapeSchema),
163
142
  return_shape_coverage: z.strictObject({
164
143
  status: z.enum(["complete", "partial", "truncated"]),
165
- retained_return_sites: z.number().int().min(0).max(32),
144
+ retained_return_sites: z.number().int().min(0),
166
145
  omitted_return_sites: z.number().int().min(0).nullable(),
167
146
  omitted_fields: z.number().int().min(0),
168
147
  omitted_property_coverage: z.number().int().min(0),
@@ -185,16 +164,31 @@ const exportCandidateSchema = z.strictObject({
185
164
  matches_requested_module: z.boolean(),
186
165
  matches_requested_export: z.boolean(),
187
166
  });
188
- const selectorResultSchema = z.strictObject({
167
+ const selectorResultShape = {
189
168
  evidence_id: evidenceIdSchema,
190
169
  graph_id: graphIdSchema,
191
170
  requested_module_path: selectorTextSchema,
192
171
  requested_export_name: selectorTextSchema,
193
- status: z.enum(["selected", "missing", "ambiguous", "unavailable"]),
194
- selected_node_id: nodeIdSchema.nullable(),
195
- candidates: z.array(exportCandidateSchema).max(1_000),
172
+ candidates: z.array(exportCandidateSchema),
196
173
  omitted_candidates: z.number().int().min(0),
197
- });
174
+ };
175
+ const selectorResultSchema = z.union([
176
+ z.strictObject({
177
+ ...selectorResultShape,
178
+ status: z.literal("selected"),
179
+ selected_node_id: nodeIdSchema,
180
+ }),
181
+ z.strictObject({
182
+ ...selectorResultShape,
183
+ status: z.enum(["missing", "ambiguous"]),
184
+ selected_node_id: z.null(),
185
+ }),
186
+ z.strictObject({
187
+ ...selectorResultShape,
188
+ status: z.literal("unavailable"),
189
+ selected_node_id: nodeIdSchema.nullable(),
190
+ }),
191
+ ]);
198
192
  const valueAvailabilitySchema = z.discriminatedUnion("availability", [
199
193
  z.strictObject({ availability: z.literal("absent") }),
200
194
  z.strictObject({
@@ -203,11 +197,11 @@ const valueAvailabilitySchema = z.discriminatedUnion("availability", [
203
197
  }),
204
198
  z.strictObject({
205
199
  availability: z.literal("union"),
206
- values: z.array(semanticPrimitiveSchema).min(1).max(32),
200
+ values: z.array(semanticPrimitiveSchema).min(1),
207
201
  }),
208
202
  z.strictObject({
209
203
  availability: z.literal("unknown"),
210
- reason: boundedTextSchema,
204
+ reason: textSchema,
211
205
  }),
212
206
  ]);
213
207
  const discriminantSchema = z.strictObject({
@@ -223,12 +217,11 @@ const comparisonChangeSchema = z.strictObject({
223
217
  right: valueAvailabilitySchema,
224
218
  left_source_range: sourceRangeSchema.nullable(),
225
219
  right_source_range: sourceRangeSchema.nullable(),
226
- evidence_links: z.tuple([evidenceIdSchema, evidenceIdSchema]),
227
- limitations: z.array(boundedTextSchema).max(20),
220
+ evidence_links: z.array(evidenceIdSchema).length(2),
221
+ limitations: z.array(textSchema),
228
222
  });
229
- /** Bounded static export-return comparison with explicit unknown semantics. */
223
+ /** Static export-return comparison with explicit unknown semantics. */
230
224
  export const javaScriptExportShapeComparisonResultSchema = z.strictObject({
231
- schema_version: z.literal(1),
232
225
  comparison_id: z.string().regex(/^jesc_[a-f0-9]{64}$/u),
233
226
  left: selectorResultSchema,
234
227
  right: selectorResultSchema,
@@ -238,7 +231,7 @@ export const javaScriptExportShapeComparisonResultSchema = z.strictObject({
238
231
  changed: z.number().int().min(0),
239
232
  unknown: z.number().int().min(0),
240
233
  }),
241
- changes: z.array(comparisonChangeSchema).max(10_000),
234
+ changes: z.array(comparisonChangeSchema),
242
235
  coverage: z.strictObject({
243
236
  status: z.enum(["complete-within-inputs", "partial", "truncated"]),
244
237
  left_graph_status: z.enum([
@@ -267,8 +260,8 @@ export const javaScriptExportShapeComparisonResultSchema = z.strictObject({
267
260
  omitted_candidates: z.number().int().min(0),
268
261
  omitted_changes: z.number().int().min(0),
269
262
  }),
270
- evidence_links: z.tuple([evidenceIdSchema, evidenceIdSchema]),
271
- limitations: z.array(boundedTextSchema).max(1_000),
263
+ evidence_links: z.array(evidenceIdSchema).length(2),
264
+ limitations: z.array(textSchema),
272
265
  runtime_validation: z.strictObject({
273
266
  recommended_tool: z.literal("run_controlled_replay"),
274
267
  automatically_started: z.literal(false),
@@ -1,7 +1,7 @@
1
1
  import { compareCodePoints } from "./javascriptApplicationGraph.js";
2
2
  import { projectedExportReturnShapesSchema, } from "./javascriptExportShapeComparisonSchemas.js";
3
3
  /** Select one exact trusted export and its exact static return-shape observation. */
4
- export const selectJavaScriptExport = (side, maxCandidates) => {
4
+ export const selectJavaScriptExport = (side) => {
5
5
  const candidates = exportCandidates(side.graph);
6
6
  const exact = candidates.filter(({ modulePath, exportName }) => modulePath === side.modulePath && exportName === side.exportName);
7
7
  const matchingOneSelector = candidates.filter(({ modulePath, exportName }) => modulePath === side.modulePath || exportName === side.exportName);
@@ -10,26 +10,26 @@ export const selectJavaScriptExport = (side, maxCandidates) => {
10
10
  : matchingOneSelector.length > 0
11
11
  ? matchingOneSelector
12
12
  : candidates;
13
- const retainedCandidates = diagnosticPool.slice(0, maxCandidates);
14
- const base = selectorBase(side, diagnosticPool, retainedCandidates);
13
+ const base = selectorBase(side, diagnosticPool);
15
14
  if (exact.length === 0)
16
- return unresolvedSelection(base, "missing", null, [
15
+ return unresolvedSelection(base, { status: "missing", selected_node_id: null }, [
17
16
  `No exact export binding matched ${side.modulePath}:${side.exportName}.`,
18
17
  ]);
19
18
  if (exact.length > 1)
20
- return unresolvedSelection(base, "ambiguous", null, [
19
+ return unresolvedSelection(base, { status: "ambiguous", selected_node_id: null }, [
21
20
  `Multiple exact export bindings matched ${side.modulePath}:${side.exportName}; none was selected.`,
22
21
  ]);
23
22
  const selected = exact[0];
24
23
  if (selected === undefined || !selected.trusted)
25
- return unresolvedSelection(base, "unavailable", selected?.node.node_id ?? null, [
24
+ return unresolvedSelection(base, {
25
+ status: "unavailable",
26
+ selected_node_id: selected?.node.node_id ?? null,
27
+ }, [
26
28
  "The exact export binding lacks the expected static-analysis authority.",
27
29
  ]);
28
30
  const returnShape = returnShapeFor(selected.node, side);
29
31
  if (returnShape.projection === null)
30
- return unresolvedSelection(base, "unavailable", selected.node.node_id, [
31
- returnShape.reason,
32
- ]);
32
+ return unresolvedSelection(base, { status: "unavailable", selected_node_id: selected.node.node_id }, [returnShape.reason]);
33
33
  return {
34
34
  selection: {
35
35
  ...base,
@@ -41,28 +41,27 @@ export const selectJavaScriptExport = (side, maxCandidates) => {
41
41
  limitations: [],
42
42
  };
43
43
  };
44
- /** Apply the caller's explicit return-variant limit. */
45
- export const retainJavaScriptExportShapes = (selection, maximum) => {
44
+ /** Retain every projected return variant. */
45
+ export const retainJavaScriptExportShapes = (selection) => {
46
46
  const shapes = selection.projection?.static_return_shapes ?? [];
47
- const retained = shapes.slice(0, maximum);
48
- return { shapes: retained, omitted: shapes.length - retained.length };
47
+ return { shapes, omitted: 0 };
49
48
  };
50
- const selectorBase = (side, candidates, retained) => ({
49
+ const selectorBase = (side, candidates) => ({
51
50
  evidence_id: side.evidenceId,
52
51
  graph_id: side.graph.graph_id,
53
52
  requested_module_path: side.modulePath,
54
53
  requested_export_name: side.exportName,
55
- candidates: retained.map((candidate) => ({
54
+ candidates: candidates.map((candidate) => ({
56
55
  node_id: candidate.node.node_id,
57
56
  module_path: candidate.modulePath,
58
57
  export_name: candidate.exportName,
59
58
  matches_requested_module: candidate.modulePath === side.modulePath,
60
59
  matches_requested_export: candidate.exportName === side.exportName,
61
60
  })),
62
- omitted_candidates: candidates.length - retained.length,
61
+ omitted_candidates: 0,
63
62
  });
64
- const unresolvedSelection = (base, status, nodeId, limitations) => ({
65
- selection: { ...base, status, selected_node_id: nodeId },
63
+ const unresolvedSelection = (base, resolution, limitations) => ({
64
+ selection: { ...base, ...resolution },
66
65
  projection: null,
67
66
  observationComplete: false,
68
67
  limitations,
@@ -122,7 +121,6 @@ const returnShapeFor = (node, side) => {
122
121
  projection: selected.result.data,
123
122
  observationComplete: observation.evidence.coverage.status === "complete" &&
124
123
  !observation.evidence.coverage.truncated,
125
- reason: "",
126
124
  };
127
125
  };
128
126
  const unavailableReturnShape = (reason) => ({
@@ -113,23 +113,31 @@ const identityFields = (node) => {
113
113
  };
114
114
  const propertyFields = (value, prefix) => {
115
115
  const output = [];
116
- const visit = (current, path, depth) => {
117
- if (output.length >= 512 || depth > 6)
118
- return;
116
+ const pending = [
117
+ { current: value, path: prefix },
118
+ ];
119
+ while (pending.length > 0) {
120
+ const next = pending.pop();
121
+ if (next === undefined)
122
+ continue;
123
+ const { current, path } = next;
119
124
  if (typeof current === "string") {
120
125
  output.push({ basis: "property", field: path, value: current });
121
- return;
126
+ continue;
122
127
  }
123
128
  if (Array.isArray(current)) {
124
- for (const [index, item] of current.entries())
125
- visit(item, `${path}[${String(index)}]`, depth + 1);
126
- return;
129
+ for (let index = current.length - 1; index >= 0; index -= 1) {
130
+ const item = current[index];
131
+ if (item !== undefined)
132
+ pending.push({ current: item, path: `${path}[${String(index)}]` });
133
+ }
134
+ continue;
135
+ }
136
+ if (current !== null && typeof current === "object") {
137
+ for (const key of Object.keys(current).sort(compareCodePoints).reverse())
138
+ pending.push({ current: current[key] ?? null, path: `${path}.${key}` });
127
139
  }
128
- if (current !== null && typeof current === "object")
129
- for (const key of Object.keys(current).sort(compareCodePoints))
130
- visit(current[key] ?? null, `${path}.${key}`, depth + 1);
131
- };
132
- visit(value, prefix, 0);
140
+ }
133
141
  return output;
134
142
  };
135
143
  const normalized = (value, caseSensitive) => {