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,5 +1,5 @@
1
1
  import * as t from "@babel/types";
2
- import { reachSemanticLimit, semanticCallableIdForNode, semanticStaticPropertyName, } from "./javascriptSemanticProjection.js";
2
+ import { semanticCallableIdForNode, semanticStaticPropertyName, } from "./javascriptSemanticProjection.js";
3
3
  import { resolveSemanticBindingState, semanticResolutionBlocked, } from "./javascriptSemanticState.js";
4
4
  import { traverseJavaScriptAst } from "./javascriptSemanticTraversal.js";
5
5
  /** Resolve a direct or namespace-imported built-in method. */
@@ -116,10 +116,3 @@ export const containsSemanticNode = (outer, inner) => outer.start !== null &&
116
116
  inner.end !== undefined &&
117
117
  outer.start <= inner.start &&
118
118
  outer.end >= inner.end;
119
- /** Record one bounded data-effect frontier. */
120
- export const dataEffectLimitReached = (retained, limit, name, state) => {
121
- if (retained < limit)
122
- return false;
123
- reachSemanticLimit(state, name);
124
- return true;
125
- };
@@ -1,7 +1,7 @@
1
1
  import * as t from "@babel/types";
2
2
  import { semanticStaticPropertyName } from "./javascriptSemanticProjection.js";
3
3
  import { resolveSemanticBindingState, semanticResolutionBlocked, } from "./javascriptSemanticState.js";
4
- import { builtinDataEffectMethod as builtinMethod, containsSemanticNode as containsNode, dataEffectArgumentBindingId as argumentBindingId, dataEffectLimitReached as limitReached, dataEffectLiteralString as literalString, dataEffectMemberCallee as memberCallee, dataEffectMemberObject as memberObject, dataEffectPrimitive as primitiveValue, isSemanticProcessObject as isProcessObject, outerDataEffectBinding as outerAssignedBinding, traverseDataEffects as traverseWithContext, } from "./javascriptSemanticDataEffectHelpers.js";
4
+ import { builtinDataEffectMethod as builtinMethod, containsSemanticNode as containsNode, dataEffectArgumentBindingId as argumentBindingId, dataEffectLiteralString as literalString, dataEffectMemberCallee as memberCallee, dataEffectMemberObject as memberObject, dataEffectPrimitive as primitiveValue, isSemanticProcessObject as isProcessObject, outerDataEffectBinding as outerAssignedBinding, traverseDataEffects as traverseWithContext, } from "./javascriptSemanticDataEffectHelpers.js";
5
5
  import { compareCodePoints, propertyName, range, } from "./javascriptStaticAnalysisHelpers.js";
6
6
  /** Recover configuration, request, and boundary candidates from inert syntax. */
7
7
  export const collectJavaScriptSemanticDataEffects = (program, state, callables) => {
@@ -31,8 +31,6 @@ const collectConfigurations = (program, context) => {
31
31
  const details = configurationDetails(node, parent, context);
32
32
  if (details === null)
33
33
  return;
34
- if (limitReached(output.length, context.state.limits.maxConfigurationOperations, "maxConfigurationOperations", context.state))
35
- return;
36
34
  const operation = {
37
35
  configId: `config:${details.kind}:${String(node.start ?? -1)}:${String(node.end ?? -1)}`,
38
36
  kind: details.kind,
@@ -94,8 +92,6 @@ const collectDefaults = (program, context, configurations) => {
94
92
  const sources = configurations.filter(({ node: source }) => containsNode(node.left, source));
95
93
  if (sources.length !== 1 || sources[0] === undefined)
96
94
  return;
97
- if (limitReached(configurations.length + output.length, context.state.limits.maxConfigurationOperations, "maxConfigurationOperations", context.state))
98
- return;
99
95
  output.push({
100
96
  configId: `config:default:${String(node.start ?? -1)}:${String(node.end ?? -1)}`,
101
97
  kind: "default",
@@ -120,8 +116,6 @@ const collectRequests = (program, context) => {
120
116
  const method = requestMethod(node, context.state);
121
117
  if (method === null)
122
118
  return;
123
- if (limitReached(output.length, context.state.limits.maxRequestOperations, "maxRequestOperations", context.state))
124
- return;
125
119
  const endpoint = requestEndpoint(node);
126
120
  output.push({
127
121
  node,
@@ -167,8 +161,6 @@ const collectResponseConsumers = (program, context, requests) => {
167
161
  : (requestsByBinding.get(binding.bindingId) ?? []);
168
162
  if (linked.length === 0)
169
163
  return;
170
- if (limitReached(requests.length + output.length, context.state.limits.maxRequestOperations, "maxRequestOperations", context.state))
171
- return;
172
164
  output.push({
173
165
  requestId: `response:${String(node.start ?? -1)}:${String(node.end ?? -1)}`,
174
166
  kind: "response-consumer",
@@ -194,8 +186,6 @@ const collectBoundaries = (program, context) => {
194
186
  const details = boundaryDetails(node, context.state);
195
187
  if (details === null)
196
188
  return;
197
- if (limitReached(output.length, context.state.limits.maxBoundaryOperations, "maxBoundaryOperations", context.state))
198
- return;
199
189
  output.push({
200
190
  boundaryId: `boundary:${details.kind}:${String(node.start ?? -1)}:${String(node.end ?? -1)}`,
201
191
  kind: details.kind,
@@ -25,9 +25,7 @@ export const collectJavaScriptSemanticFingerprints = (input) => {
25
25
  return [
26
26
  {
27
27
  callableId: callable.callableId,
28
- status: parserPartial ||
29
- state.limitsReached.size > 0 ||
30
- callable.returnCoverage.status !== "complete"
28
+ status: parserPartial || callable.returnCoverage.status !== "complete"
31
29
  ? "partial"
32
30
  : "complete",
33
31
  components: {
@@ -49,8 +47,8 @@ export const collectJavaScriptSemanticFingerprints = (input) => {
49
47
  ],
50
48
  },
51
49
  limitations: [
52
- "The fingerprint is a bounded static candidate and does not prove behavioral equivalence.",
53
- ...(parserPartial || state.limitsReached.size > 0
50
+ "The fingerprint is a static candidate and does not prove behavioral equivalence.",
51
+ ...(parserPartial
54
52
  ? ["Incomplete semantic recovery makes this fingerprint partial."]
55
53
  : []),
56
54
  ],
@@ -1,9 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import { applicationGraphEvidenceSchema } from "./javascriptApplicationEvidenceSchemas.js";
3
- import { isJsonWithinLimits } from "./jsonLimits.js";
4
3
  import { jsonValueSchema } from "./jsonValue.js";
5
4
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
6
- const boundedTextSchema = z.string().min(1).max(4_096);
5
+ const boundedTextSchema = z.string().min(1);
7
6
  const semanticNodeIdSchema = z.string().regex(/^jsrg_node_[a-f0-9]{64}$/u);
8
7
  const semanticRelationIdSchema = z
9
8
  .string()
@@ -11,7 +10,7 @@ const semanticRelationIdSchema = z
11
10
  const semanticUnknownIdSchema = z
12
11
  .string()
13
12
  .regex(/^jsrg_unknown_[a-f0-9]{64}$/u);
14
- /** Semantic entity kinds admitted by JavaScript Semantic Relation Graph v1. */
13
+ /** Semantic entity kinds admitted by JavaScript Semantic Relation Graph. */
15
14
  export const JAVASCRIPT_SEMANTIC_NODE_KINDS = [
16
15
  "module",
17
16
  "function",
@@ -53,7 +52,7 @@ export const JAVASCRIPT_SEMANTIC_RELATION_FAMILIES = [
53
52
  "resource-lifecycle",
54
53
  "timer",
55
54
  ];
56
- /** Directed semantic relations admitted by graph v1. */
55
+ /** Directed semantic relations admitted by the graph. */
57
56
  export const JAVASCRIPT_SEMANTIC_RELATIONS = [
58
57
  "acquires",
59
58
  "aggregates",
@@ -150,7 +149,6 @@ export const JAVASCRIPT_SEMANTIC_RELATION_FAMILY = {
150
149
  const relativePathSchema = z
151
150
  .string()
152
151
  .min(1)
153
- .max(4_096)
154
152
  .refine((path) => !path.startsWith("/") &&
155
153
  !path.includes("\\") &&
156
154
  path.split("/").every((part) => !["", ".", ".."].includes(part)), "Expected a normalized relative POSIX path without traversal");
@@ -170,39 +168,20 @@ const sourceRangeSchema = z
170
168
  message: "Source range end must not precede its start",
171
169
  });
172
170
  });
173
- const semanticPropertiesSchema = z
174
- .record(z.string().min(1).max(128), jsonValueSchema)
175
- .superRefine((properties, context) => {
176
- if (Object.keys(properties).length > 64)
177
- context.addIssue({
178
- code: "custom",
179
- message: "Semantic properties exceed 64 keys",
180
- });
181
- if (!isJsonWithinLimits(properties, {
182
- maxDepth: 6,
183
- maxNodes: 512,
184
- maxStringLength: 4_096,
185
- }))
186
- context.addIssue({
187
- code: "custom",
188
- message: "Semantic properties exceed structural limits",
189
- });
190
- });
171
+ const semanticPropertiesSchema = z.record(z.string().min(1), jsonValueSchema);
191
172
  const semanticNodeIdentitySchema = z.strictObject({
192
173
  artifact_sha256: digestSchema,
193
174
  module_path: relativePathSchema,
194
175
  source_range: sourceRangeSchema.nullable(),
195
- role_key: z.string().min(1).max(1_024),
176
+ role_key: z.string().min(1),
196
177
  });
197
178
  /** One semantic entity before its canonical identifier is derived. */
198
179
  export const javaScriptSemanticNodeInputSchema = z.strictObject({
199
180
  kind: z.enum(JAVASCRIPT_SEMANTIC_NODE_KINDS),
200
181
  identity: semanticNodeIdentitySchema,
201
182
  function_node_id: semanticNodeIdSchema.nullable(),
202
- application_node_ids: z
203
- .array(z.string().regex(/^jag_node_[a-f0-9]{64}$/u))
204
- .max(64),
205
- label: z.string().min(1).max(1_024).nullable(),
183
+ application_node_ids: z.array(z.string().regex(/^jag_node_[a-f0-9]{64}$/u)),
184
+ label: z.string().min(1).nullable(),
206
185
  properties: semanticPropertiesSchema,
207
186
  evidence: applicationGraphEvidenceSchema,
208
187
  });
@@ -246,10 +225,10 @@ export const JAVASCRIPT_SEMANTIC_UNKNOWN_REASONS = [
246
225
  export const javaScriptSemanticUnknownInputSchema = z.strictObject({
247
226
  node_id: semanticNodeIdSchema.nullable(),
248
227
  family: z.enum(JAVASCRIPT_SEMANTIC_RELATION_FAMILIES),
249
- relation_kinds: z.array(z.enum(JAVASCRIPT_SEMANTIC_RELATIONS)).min(1).max(45),
228
+ relation_kinds: z.array(z.enum(JAVASCRIPT_SEMANTIC_RELATIONS)).min(1),
250
229
  reason: z.enum(JAVASCRIPT_SEMANTIC_UNKNOWN_REASONS),
251
230
  detail: boundedTextSchema,
252
- candidate_node_ids: z.array(semanticNodeIdSchema).max(1_000),
231
+ candidate_node_ids: z.array(semanticNodeIdSchema),
253
232
  evidence: applicationGraphEvidenceSchema,
254
233
  });
255
234
  /** One canonical unresolved semantic frontier. */
@@ -257,13 +236,12 @@ export const javaScriptSemanticUnknownSchema = javaScriptSemanticUnknownInputSch
257
236
  unknown_id: semanticUnknownIdSchema,
258
237
  });
259
238
  const fingerprintComponentsSchema = z.strictObject({
260
- parameter_arity: z.number().int().min(0).max(10_000),
239
+ parameter_arity: z.number().int().min(0),
261
240
  normalized_ast_sha256: digestSchema,
262
241
  control_flow_sha256: digestSchema,
263
242
  relation_shape_sha256: digestSchema,
264
243
  literal_set_sha256: digestSchema,
265
- effects: z
266
- .array(z.enum([
244
+ effects: z.array(z.enum([
267
245
  "async",
268
246
  "child-process",
269
247
  "event",
@@ -271,16 +249,15 @@ const fingerprintComponentsSchema = z.strictObject({
271
249
  "promise",
272
250
  "resource",
273
251
  "timer",
274
- ]))
275
- .max(7),
252
+ ])),
276
253
  });
277
254
  /** One bounded rename-resistant function fingerprint. */
278
255
  export const javaScriptSemanticFingerprintInputSchema = z.strictObject({
279
256
  function_node_id: semanticNodeIdSchema,
280
- algorithm: z.literal("rea.javascript-semantic-function/v1"),
257
+ algorithm: z.literal("rea.javascript-semantic-function"),
281
258
  status: z.enum(["complete", "partial", "unavailable"]),
282
259
  components: fingerprintComponentsSchema,
283
- limitations: z.array(boundedTextSchema).max(100),
260
+ limitations: z.array(boundedTextSchema),
284
261
  evidence: applicationGraphEvidenceSchema,
285
262
  });
286
263
  /** One canonical function fingerprint record. */
@@ -293,37 +270,34 @@ const familyCoverageSchema = z.strictObject({
293
270
  status: z.enum(["complete", "partial", "unknown", "unsupported"]),
294
271
  retained_relations: z.number().int().min(0),
295
272
  omitted_relations: z.number().int().min(0).nullable(),
296
- unknown_ids: z.array(semanticUnknownIdSchema).max(100_000),
273
+ unknown_ids: z.array(semanticUnknownIdSchema),
297
274
  });
298
275
  const graphCoverageSchema = z.strictObject({
299
276
  status: z.enum(["complete", "partial", "unknown", "unavailable"]),
300
277
  truncated: z.boolean(),
301
278
  omitted_nodes: z.number().int().min(0).nullable(),
302
279
  omitted_relations: z.number().int().min(0).nullable(),
303
- limits: z
304
- .array(z.strictObject({
305
- name: z.string().min(1).max(128),
280
+ limits: z.array(z.strictObject({
281
+ name: z.string().min(1),
306
282
  value: z.number().int().min(0),
307
283
  unit: z.enum(["items", "bytes", "milliseconds", "depth", "other"]),
308
- }))
309
- .max(32),
284
+ })),
310
285
  families: z.array(familyCoverageSchema).length(12),
311
286
  });
312
287
  /** Graph content before its top-level commitment is derived. */
313
288
  export const javaScriptSemanticGraphInputSchema = z.strictObject({
314
289
  schema: z.literal("JavaScriptSemanticRelationGraph"),
315
- schema_version: z.literal(1),
316
290
  root_artifact_sha256: digestSchema,
317
291
  application_graph_id: z.string().regex(/^jag_[a-f0-9]{64}$/u),
318
- root_node_ids: z.array(semanticNodeIdSchema).min(1).max(10_000),
319
- nodes: z.array(javaScriptSemanticNodeSchema).min(1).max(100_000),
320
- relations: z.array(javaScriptSemanticRelationSchema).max(200_000),
321
- fingerprints: z.array(javaScriptSemanticFingerprintSchema).max(20_000),
322
- unknowns: z.array(javaScriptSemanticUnknownSchema).max(100_000),
292
+ root_node_ids: z.array(semanticNodeIdSchema).min(1),
293
+ nodes: z.array(javaScriptSemanticNodeSchema).min(1),
294
+ relations: z.array(javaScriptSemanticRelationSchema),
295
+ fingerprints: z.array(javaScriptSemanticFingerprintSchema),
296
+ unknowns: z.array(javaScriptSemanticUnknownSchema),
323
297
  coverage: graphCoverageSchema,
324
- limitations: z.array(boundedTextSchema).max(1_000),
298
+ limitations: z.array(boundedTextSchema),
325
299
  });
326
- /** Stored JavaScript Semantic Relation Graph v1. */
300
+ /** Stored JavaScript Semantic Relation Graph. */
327
301
  export const javaScriptSemanticGraphRecordSchema = javaScriptSemanticGraphInputSchema.extend({
328
302
  graph_id: z.string().regex(/^jsrg_[a-f0-9]{64}$/u),
329
303
  });
@@ -1,5 +1,4 @@
1
1
  import canonicalize from "canonicalize";
2
- import { z } from "zod";
3
2
  import { javaScriptSemanticGraphSchema, } from "./javascriptSemanticGraph.js";
4
3
  const canonicalJson = (value) => {
5
4
  const encoded = canonicalize(value);
@@ -7,17 +6,7 @@ const canonicalJson = (value) => {
7
6
  throw new TypeError("JavaScript semantic graph could not canonicalize data");
8
7
  return encoded;
9
8
  };
10
- /** Parse a stored semantic graph and reject unsupported versions or stale IDs. */
11
- export const parseJavaScriptSemanticGraph = (input) => {
12
- const envelope = z
13
- .object({ schema: z.string(), schema_version: z.number() })
14
- .passthrough()
15
- .safeParse(input);
16
- if (envelope.success &&
17
- envelope.data.schema === "JavaScriptSemanticRelationGraph" &&
18
- envelope.data.schema_version !== 1)
19
- throw new TypeError(`Unsupported JavaScript Semantic Relation Graph schema version: ${String(envelope.data.schema_version)}`);
20
- return javaScriptSemanticGraphSchema.parse(input);
21
- };
9
+ /** Parse a stored semantic graph and reject stale IDs. */
10
+ export const parseJavaScriptSemanticGraph = (input) => javaScriptSemanticGraphSchema.parse(input);
22
11
  /** Serialize a verified semantic graph as canonical JSON. */
23
12
  export const serializeJavaScriptSemanticGraph = (input) => canonicalJson(parseJavaScriptSemanticGraph(input));
@@ -1,30 +1,3 @@
1
- /** Conservative defaults for one source file. */
2
- export const DEFAULT_JAVASCRIPT_SEMANTIC_LIMITS = {
3
- maxScopes: 4_096,
4
- maxBindings: 20_000,
5
- maxCallables: 20_000,
6
- maxReferences: 100_000,
7
- maxModuleLinks: 20_000,
8
- maxReturnSites: 20_000,
9
- maxCallSites: 20_000,
10
- maxCallArguments: 100_000,
11
- maxArgumentFlows: 100_000,
12
- maxCallReturnFlows: 100_000,
13
- maxClosureCaptures: 100_000,
14
- maxPromiseOperations: 100_000,
15
- maxEventOperations: 100_000,
16
- maxTimerOperations: 100_000,
17
- maxChildProcessOperations: 100_000,
18
- maxConfigurationOperations: 100_000,
19
- maxRequestOperations: 100_000,
20
- maxBoundaryOperations: 100_000,
21
- maxResourceOperations: 100_000,
22
- maxObjectOperations: 100_000,
23
- maxFrontiers: 20_000,
24
- maxValueDepth: 16,
25
- maxUnionValues: 32,
26
- maxObjectProperties: 256,
27
- };
28
1
  /** Find the innermost resolved reference at one source coordinate. */
29
2
  export const semanticReferenceAt = (ir, line, column) => ir.references.find(({ location }) => location.start.line === line && location.start.column === column);
30
3
  /** Read one binding by its deterministic semantic identifier. */
@@ -32,7 +5,6 @@ export const semanticBinding = (ir, bindingId) => ir.bindings.find(({ bindingId:
32
5
  /** Fail-closed result when Babel cannot produce an inert syntax tree. */
33
6
  export const failedJavaScriptSemanticIr = () => ({
34
7
  schema: "JavaScriptSemanticIR",
35
- schemaVersion: 4,
36
8
  scopes: [],
37
9
  bindings: [],
38
10
  callables: [],
@@ -55,7 +27,7 @@ export const failedJavaScriptSemanticIr = () => ({
55
27
  objectOperations: [],
56
28
  functionFingerprints: [],
57
29
  frontiers: [],
58
- coverage: { status: "failed", omittedCount: null, limitsReached: [] },
30
+ coverage: { status: "failed", omittedCount: null },
59
31
  limitations: [
60
32
  "JavaScript parsing failed; no semantic absence claim is available.",
61
33
  "No JavaScript was executed.",
@@ -1,5 +1,5 @@
1
1
  import * as t from "@babel/types";
2
- import { reachSemanticLimit, semanticCallableIdForNode, semanticStaticPropertyName, } from "./javascriptSemanticProjection.js";
2
+ import { semanticCallableIdForNode, semanticStaticPropertyName, } from "./javascriptSemanticProjection.js";
3
3
  import { resolveSemanticBindingState, } from "./javascriptSemanticState.js";
4
4
  import { traverseJavaScriptAst } from "./javascriptSemanticTraversal.js";
5
5
  import { propertyName, range } from "./javascriptStaticAnalysisHelpers.js";
@@ -80,10 +80,6 @@ const collectDestructuring = (node, ownerCallableId, state, output) => {
80
80
  }
81
81
  };
82
82
  const addObjectOperation = (input, state, output) => {
83
- if (output.length >= state.limits.maxObjectOperations) {
84
- reachSemanticLimit(state, "maxObjectOperations");
85
- return;
86
- }
87
83
  output.push({
88
84
  objectOperationId: `object:${input.kind}:${String(input.node.start ?? -1)}:${String(input.node.end ?? -1)}`,
89
85
  kind: input.kind,
@@ -1,18 +1,11 @@
1
1
  import * as t from "@babel/types";
2
- import { reachSemanticValueLimit, semanticPrimitiveKey, } from "./javascriptSemanticProvenance.js";
2
+ import { semanticPrimitiveKey } from "./javascriptSemanticProvenance.js";
3
3
  import { compareCodePoints } from "./javascriptStaticAnalysisHelpers.js";
4
4
  /** Normalize one bounded collection of possible primitive values. */
5
- export const semanticPrimitiveSet = (values, state) => {
5
+ export const semanticPrimitiveSet = (values) => {
6
6
  const unique = [
7
7
  ...new Map(values.map((value) => [semanticPrimitiveKey(value), value])).values(),
8
8
  ].sort((left, right) => compareCodePoints(semanticPrimitiveKey(left), semanticPrimitiveKey(right)));
9
- if (unique.length > state.limits.maxUnionValues) {
10
- reachSemanticValueLimit(state, "maxUnionValues");
11
- return {
12
- status: "limit-reached",
13
- reason: "maxUnionValues reached.",
14
- };
15
- }
16
9
  const only = unique[0];
17
10
  return unique.length === 1 && only !== undefined
18
11
  ? { status: "literal", value: only }
@@ -9,10 +9,6 @@ export const collectSemanticCallable = (input) => {
9
9
  const kind = callableKind(node);
10
10
  if (kind === undefined)
11
11
  return;
12
- if (state.callables.length >= state.limits.maxCallables) {
13
- reachSemanticLimit(state, "maxCallables");
14
- return;
15
- }
16
12
  const callableId = semanticCallableIdForNode(node) ?? "callable:unknown:-1:-1";
17
13
  state.callables.push({
18
14
  callableId,
@@ -28,7 +24,6 @@ export const collectSemanticCallable = (input) => {
28
24
  status: "partial",
29
25
  retainedCount: 0,
30
26
  omittedCount: null,
31
- limitsReached: [],
32
27
  },
33
28
  });
34
29
  state.callableNodesById.set(callableId, node);
@@ -78,10 +73,6 @@ export const collectSemanticReferences = (program, state) => {
78
73
  if (seen.has(key))
79
74
  return;
80
75
  seen.add(key);
81
- if (output.length >= state.limits.maxReferences) {
82
- reachSemanticLimit(state, "maxReferences");
83
- return;
84
- }
85
76
  const binding = resolveSemanticBindingState(state, node, node.name);
86
77
  const blocked = binding === undefined &&
87
78
  semanticResolutionBlocked(state, node, node.name);
@@ -146,11 +137,6 @@ export const semanticModuleOrigin = (node, projection) => {
146
137
  export const semanticStaticPropertyName = (property, computed) => computed && !t.isStringLiteral(property) && !t.isNumericLiteral(property)
147
138
  ? ""
148
139
  : propertyName(property);
149
- /** Record one exact limit hit without inventing the total omitted population. */
150
- export const reachSemanticLimit = (state, limit) => {
151
- state.limitsReached.add(limit);
152
- state.omittedCount += 1;
153
- };
154
140
  const callableKind = (node) => {
155
141
  if (t.isClassMethod(node) ||
156
142
  t.isClassPrivateMethod(node) ||
@@ -281,10 +267,6 @@ const collectCommonJsExport = (node, state) => {
281
267
  });
282
268
  };
283
269
  const addModuleLink = (state, link) => {
284
- if (state.moduleLinks.length >= state.limits.maxModuleLinks) {
285
- reachSemanticLimit(state, "maxModuleLinks");
286
- return;
287
- }
288
270
  state.moduleLinks.push({ ...link, callableId: link.callableId ?? null });
289
271
  };
290
272
  /** Deterministic callable identity shared by collection and return recovery. */
@@ -1,5 +1,5 @@
1
1
  import * as t from "@babel/types";
2
- import { reachSemanticLimit, semanticCallableIdForNode, semanticStaticPropertyName, } from "./javascriptSemanticProjection.js";
2
+ import { semanticCallableIdForNode, semanticStaticPropertyName, } from "./javascriptSemanticProjection.js";
3
3
  import { resolveSemanticBindingState, semanticResolutionBlocked, } from "./javascriptSemanticState.js";
4
4
  import { traverseJavaScriptAst } from "./javascriptSemanticTraversal.js";
5
5
  import { compareCodePoints, range, sourceRangesEqual, } from "./javascriptStaticAnalysisHelpers.js";
@@ -36,16 +36,13 @@ const collectCandidates = (program, state, callables) => {
36
36
  callableStack.push(callableId);
37
37
  const details = promiseCandidateDetails(node, state);
38
38
  if (details !== null) {
39
- if (output.length >= state.limits.maxPromiseOperations)
40
- reachSemanticLimit(state, "maxPromiseOperations");
41
- else
42
- output.push({
43
- node,
44
- ...details,
45
- promiseId: semanticPromiseId(details.kind, node),
46
- ownerCallableId: callableStack.at(-1) ?? null,
47
- ancestors: [...ancestors],
48
- });
39
+ output.push({
40
+ node,
41
+ ...details,
42
+ promiseId: semanticPromiseId(details.kind, node),
43
+ ownerCallableId: callableStack.at(-1) ?? null,
44
+ ancestors: [...ancestors],
45
+ });
49
46
  }
50
47
  ancestors.push(node);
51
48
  },
@@ -224,9 +221,7 @@ const aggregateSources = (candidate, candidateByNode, state) => {
224
221
  return combinePromiseResolutions(resolutions);
225
222
  };
226
223
  const resolvePromiseExpression = (rawNode, context) => {
227
- const { current, candidateByNode, state, seenBindings, depth } = context;
228
- if (depth >= state.limits.maxValueDepth)
229
- return unresolvedPromise();
224
+ const { current, candidateByNode, state, seenBindings } = context;
230
225
  const node = unwrapExpression(rawNode);
231
226
  const direct = candidateByNode.get(node);
232
227
  if (direct !== undefined && direct.promiseId !== current.promiseId)
@@ -247,7 +242,6 @@ const resolvePromiseExpression = (rawNode, context) => {
247
242
  return resolvePromiseExpression(initializer.node, {
248
243
  ...context,
249
244
  seenBindings: nestedSeen,
250
- depth: depth + 1,
251
245
  });
252
246
  };
253
247
  const promiseResolutionContext = (current, candidateByNode, state) => ({
@@ -255,7 +249,6 @@ const promiseResolutionContext = (current, candidateByNode, state) => ({
255
249
  candidateByNode,
256
250
  state,
257
251
  seenBindings: new Set(),
258
- depth: 0,
259
252
  });
260
253
  const unwrapExpression = (node) => {
261
254
  if (t.isParenthesizedExpression(node) ||
@@ -1,29 +1,26 @@
1
1
  import { compareCodePoints } from "./javascriptStaticAnalysisHelpers.js";
2
- /** Construct one immutable semantic provenance value. */
3
- export const semanticProvenance = (status, origins, reason) => ({ status, origins, reason });
4
- /** Normalize bounded exact module origins into one provenance classification. */
5
- export const semanticOriginsProvenance = (origins, state) => {
2
+ /** Construct exact local provenance without inventing module origins. */
3
+ export const semanticLocalProvenance = () => ({
4
+ status: "local",
5
+ origins: [],
6
+ reason: null,
7
+ });
8
+ /** Construct an unresolved provenance outcome with an actionable reason. */
9
+ export const semanticUnresolvedProvenance = (status, reason) => ({ status, origins: [], reason });
10
+ /** Construct ambiguous provenance while retaining every origin. */
11
+ export const semanticAmbiguousProvenance = (origins, reason) => ({ status: "ambiguous", origins, reason });
12
+ /** Normalize exact module origins into one provenance classification. */
13
+ export const semanticOriginsProvenance = (origins) => {
6
14
  const unique = uniqueSemanticOrigins(origins);
7
- if (unique.length > state.limits.maxUnionValues)
8
- return semanticLimitProvenance(state, "maxUnionValues");
9
- return unique.length === 1
10
- ? semanticProvenance("module", unique, null)
11
- : semanticProvenance("ambiguous", unique, "Multiple module origins.");
15
+ const origin = unique[0];
16
+ return unique.length === 1 && origin !== undefined
17
+ ? { status: "module", origins: [origin], reason: null }
18
+ : semanticAmbiguousProvenance(unique, "Multiple module origins.");
12
19
  };
13
20
  /** Deduplicate and canonically order module origins. */
14
21
  export const uniqueSemanticOrigins = (origins) => [
15
22
  ...new Map(origins.map((origin) => [semanticOriginKey(origin), origin])).values(),
16
23
  ].sort((left, right) => compareCodePoints(semanticOriginKey(left), semanticOriginKey(right)));
17
- /** Mark and return an explicit provenance-limit value. */
18
- export const semanticLimitProvenance = (state, limit) => {
19
- reachSemanticValueLimit(state, limit);
20
- return semanticProvenance("limit-reached", [], `${limit} reached.`);
21
- };
22
- /** Record one value-lattice limit against the shared semantic analysis state. */
23
- export const reachSemanticValueLimit = (state, limit) => {
24
- state.limitsReached.add(limit);
25
- state.omittedCount += 1;
26
- };
27
24
  const semanticOriginKey = (origin) => `${origin.specifier}\0${origin.importedPath.join("\0")}`;
28
25
  /** Canonically distinguish primitive values across type boundaries. */
29
26
  export const semanticPrimitiveKey = (value) => `${value === null ? "null" : typeof value}:${JSON.stringify(value)}`;