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,12 +1,8 @@
1
1
  import { createJavaScriptApplicationEdge, createJavaScriptApplicationNode, } from "./javascriptApplicationGraph.js";
2
2
  /** Project authorized passive capture metadata into capture-scoped JAG nodes. */
3
- export const projectRuntimeCaptures = (captures, maximumEntities) => {
4
- if (maximumEntities < captures.length)
5
- throw new TypeError("Runtime entity limit must admit one target for every capture");
3
+ export const projectRuntimeCaptures = (captures) => {
6
4
  const all = captures.flatMap(projectCapture);
7
- const targets = all.filter(({ kind }) => kind === "target");
8
- const nonTargets = all.filter(({ kind }) => kind !== "target");
9
- const retained = [...targets, ...nonTargets].slice(0, maximumEntities);
5
+ const retained = all;
10
6
  const retainedIds = new Set(retained.map(({ node }) => node.node_id));
11
7
  const nodes = retained.map(({ node }) => node);
12
8
  const edges = captures
@@ -20,7 +16,7 @@ export const projectRuntimeCaptures = (captures, maximumEntities) => {
20
16
  nodes,
21
17
  edges,
22
18
  targetNodeByEvidenceId,
23
- omittedEntities: all.length - retained.length,
19
+ omittedEntities: 0,
24
20
  };
25
21
  };
26
22
  const projectCapture = (capture) => {
@@ -50,7 +46,7 @@ const targetEntity = (capture) => {
50
46
  label: target.title,
51
47
  properties: {
52
48
  runtime_type: target.type,
53
- location: location.value.slice(0, 4_096),
49
+ location: location.value,
54
50
  attached: target.attached,
55
51
  },
56
52
  section: "target",
@@ -73,7 +69,7 @@ const frameEntities = (capture) => capture.inspection.frames.map((frame) => {
73
69
  label: location.value,
74
70
  properties: {
75
71
  parent_frame_id: frame.parent_frame_id,
76
- location: location.value.slice(0, 4_096),
72
+ location: location.value,
77
73
  },
78
74
  section: "frames",
79
75
  });
@@ -96,7 +92,7 @@ const scriptEntities = (capture) => capture.inspection.scripts.items.map((script
96
92
  : null,
97
93
  label: location.value,
98
94
  properties: {
99
- location: location.value.slice(0, 4_096),
95
+ location: location.value,
100
96
  cdp_hash: script.cdp_hash,
101
97
  length: script.length,
102
98
  is_module: script.is_module,
@@ -132,7 +128,7 @@ const workerEntities = (capture) => capture.inspection.workers.map((worker) => {
132
128
  label: location.value,
133
129
  properties: {
134
130
  runtime_type: worker.type,
135
- location: location.value.slice(0, 4_096),
131
+ location: location.value,
136
132
  attached: worker.attached,
137
133
  opener_target_id: worker.opener_target_id,
138
134
  parent_frame_id: worker.parent_frame_id,
@@ -159,7 +155,7 @@ const runtimeEntity = (capture, input) => ({
159
155
  },
160
156
  observations: [
161
157
  {
162
- label: input.label.slice(0, 1_024) || null,
158
+ label: input.label || null,
163
159
  properties: input.properties,
164
160
  evidence: runtimeEvidence(capture, input),
165
161
  },
@@ -5,10 +5,9 @@ import { compareCodePoints, javascriptApplicationGraphSchema, } from "./javascri
5
5
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
6
6
  const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u);
7
7
  const nodeIdSchema = z.string().regex(/^jag_node_[a-f0-9]{64}$/u);
8
- const boundedTextSchema = z.string().min(1).max(4_096);
8
+ const boundedTextSchema = z.string().min(1);
9
9
  const safePrefixSchema = z
10
10
  .string()
11
- .max(4_096)
12
11
  .refine((value) => value === "" ||
13
12
  (!value.startsWith("/") &&
14
13
  !value.includes("\\") &&
@@ -18,7 +17,6 @@ const runtimeFileMappingSchema = z.strictObject({
18
17
  root: z
19
18
  .string()
20
19
  .min(1)
21
- .max(16_384)
22
20
  .refine(isAbsolute, "Runtime file mapping root must be absolute")
23
21
  .overwrite((value) => resolve(value)),
24
22
  artifact_prefix: safePrefixSchema.default(""),
@@ -28,7 +26,6 @@ const runtimeUrlMappingSchema = z.strictObject({
28
26
  prefix: z
29
27
  .string()
30
28
  .min(1)
31
- .max(16_384)
32
29
  .refine((value) => normalizeRuntimeUrlPrefix(value) !== null, "Runtime URL prefix must be HTTP(S) without credentials, query, or fragment")
33
30
  .overwrite((value) => normalizeRuntimeUrlPrefix(value) ?? value),
34
31
  artifact_prefix: safePrefixSchema.default(""),
@@ -61,7 +58,6 @@ const staticLayerSchema = z.strictObject({
61
58
  analysis: evidenceSchema,
62
59
  runtime_mappings: z
63
60
  .array(runtimeLocationMappingSchema)
64
- .max(32)
65
61
  .overwrite(normalizeRuntimeMappings)
66
62
  .default([]),
67
63
  });
@@ -75,21 +71,11 @@ function runtimeMappingKey(mapping) {
75
71
  ? `file-root\0${mapping.root}\0${mapping.artifact_prefix}`
76
72
  : `url-prefix\0${mapping.prefix}\0${mapping.artifact_prefix}`;
77
73
  }
78
- const reconciliationLimitsSchema = z.strictObject({
79
- max_runtime_entities: z.number().int().min(1).max(50_000).default(10_000),
80
- max_reconciliation_items: z.number().int().min(1).max(50_000).default(20_000),
81
- max_static_load_states: z.number().int().min(1).max(50_000).default(20_000),
82
- });
83
74
  /** Evidence-backed static layers and passive captures to reconcile. */
84
75
  export const reconcileJavaScriptRuntimeInputSchema = z
85
76
  .strictObject({
86
- static_layers: z.array(staticLayerSchema).min(1).max(8),
87
- runtime_observations: z.array(evidenceSchema).min(1).max(32),
88
- limits: reconciliationLimitsSchema.default({
89
- max_runtime_entities: 10_000,
90
- max_reconciliation_items: 20_000,
91
- max_static_load_states: 20_000,
92
- }),
77
+ static_layers: z.array(staticLayerSchema).min(1),
78
+ runtime_observations: z.array(evidenceSchema).min(1),
93
79
  })
94
80
  .superRefine((input, context) => {
95
81
  if (input.static_layers.filter(({ role }) => role === "application")
@@ -113,12 +99,6 @@ export const reconcileJavaScriptRuntimeInputSchema = z
113
99
  path: ["runtime_observations"],
114
100
  message: "Runtime observation Evidence must be unique",
115
101
  });
116
- if (input.limits.max_runtime_entities < input.runtime_observations.length)
117
- context.addIssue({
118
- code: "custom",
119
- path: ["limits", "max_runtime_entities"],
120
- message: "Runtime entity limit must retain one target per observation",
121
- });
122
102
  });
123
103
  const layerSummarySchema = z.strictObject({
124
104
  layer_id: z.string().regex(/^jrl_[a-f0-9]{64}$/u),
@@ -126,17 +106,17 @@ const layerSummarySchema = z.strictObject({
126
106
  evidence_id: evidenceIdSchema,
127
107
  graph_id: z.string().regex(/^jag_[a-f0-9]{64}$/u),
128
108
  root_artifact_sha256: digestSchema,
129
- input_path: z.string().min(1).max(16_384),
109
+ input_path: z.string().min(1),
130
110
  format: z.enum(["asar", "directory"]),
131
- runtime_mappings: z.array(runtimeLocationMappingSchema).max(32),
111
+ runtime_mappings: z.array(runtimeLocationMappingSchema),
132
112
  });
133
113
  const captureSummarySchema = z.strictObject({
134
114
  evidence_id: evidenceIdSchema,
135
115
  capture_sha256: digestSchema,
136
- kind: z.enum(["browser", "electron", "v8-inspector"]),
116
+ kind: z.enum(["browser", "electron", "v8-inspector", "electron-active"]),
137
117
  target_node_id: nodeIdSchema,
138
118
  target_key: boundedTextSchema,
139
- target_location: boundedTextSchema,
119
+ target_location: z.string().min(1),
140
120
  frames: z.number().int().min(0),
141
121
  scripts: z.number().int().min(0),
142
122
  workers: z.number().int().min(0),
@@ -154,17 +134,11 @@ const reconciliationReasonSchema = z.enum([
154
134
  "static-or-runtime-coverage-incomplete",
155
135
  "reconciliation-limit-reached",
156
136
  ]);
157
- const reconciliationItemSchema = z.strictObject({
137
+ const reconciliationItemShape = {
158
138
  reconciliation_id: z.string().regex(/^jrr_item_[a-f0-9]{64}$/u),
159
139
  entity_kind: z.enum(["target", "frame", "script", "worker"]),
160
140
  runtime_evidence_id: evidenceIdSchema,
161
141
  runtime_node_id: nodeIdSchema,
162
- static_layer_id: z
163
- .string()
164
- .regex(/^jrl_[a-f0-9]{64}$/u)
165
- .nullable(),
166
- static_node_id: nodeIdSchema.nullable(),
167
- status: z.enum(["matched", "ambiguous", "unmatched", "unknown"]),
168
142
  basis: z.enum([
169
143
  "content-and-location",
170
144
  "content-sha256",
@@ -176,14 +150,26 @@ const reconciliationItemSchema = z.strictObject({
176
150
  ]),
177
151
  confidence: z.enum(["exact", "high", "medium", "low", "unknown"]),
178
152
  reason: reconciliationReasonSchema,
179
- candidate_static_count: z.number().int().min(0).max(800_000),
180
- candidate_static_nodes: z
181
- .array(z.strictObject({
153
+ candidate_static_count: z.number().int().min(0),
154
+ candidate_static_nodes: z.array(z.strictObject({
182
155
  static_layer_id: z.string().regex(/^jrl_[a-f0-9]{64}$/u),
183
156
  static_node_id: nodeIdSchema,
184
- }))
185
- .max(1_000),
186
- });
157
+ })),
158
+ };
159
+ const reconciliationItemSchema = z.union([
160
+ z.strictObject({
161
+ ...reconciliationItemShape,
162
+ static_layer_id: z.string().regex(/^jrl_[a-f0-9]{64}$/u),
163
+ static_node_id: nodeIdSchema,
164
+ status: z.literal("matched"),
165
+ }),
166
+ z.strictObject({
167
+ ...reconciliationItemShape,
168
+ static_layer_id: z.null(),
169
+ static_node_id: z.null(),
170
+ status: z.enum(["ambiguous", "unmatched", "unknown"]),
171
+ }),
172
+ ]);
187
173
  const staticLoadStateSchema = z.strictObject({
188
174
  static_layer_id: z.string().regex(/^jrl_[a-f0-9]{64}$/u),
189
175
  static_node_id: nodeIdSchema,
@@ -194,7 +180,7 @@ const staticLoadStateSchema = z.strictObject({
194
180
  "not-observed-in-capture",
195
181
  "unknown",
196
182
  ]),
197
- runtime_node_ids: z.array(nodeIdSchema).max(10_000),
183
+ runtime_node_ids: z.array(nodeIdSchema),
198
184
  reason: z.enum([
199
185
  "runtime-script-correspondence",
200
186
  "containing-asset-was-loaded",
@@ -205,10 +191,9 @@ const staticLoadStateSchema = z.strictObject({
205
191
  });
206
192
  /** Deterministic static/passive-runtime reconciliation with a combined JAG. */
207
193
  export const javascriptRuntimeReconciliationResultSchema = z.strictObject({
208
- schema_version: z.literal(1),
209
194
  reconciliation_id: z.string().regex(/^jrr_[a-f0-9]{64}$/u),
210
- static_layers: z.array(layerSummarySchema).min(1).max(8),
211
- runtime_captures: z.array(captureSummarySchema).min(1).max(32),
195
+ static_layers: z.array(layerSummarySchema).min(1),
196
+ runtime_captures: z.array(captureSummarySchema).min(1),
212
197
  graph: javascriptApplicationGraphSchema,
213
198
  summary: z.strictObject({
214
199
  runtime_targets: z.number().int().min(0),
@@ -224,11 +209,11 @@ export const javascriptRuntimeReconciliationResultSchema = z.strictObject({
224
209
  static_not_observed: z.number().int().min(0),
225
210
  static_unknown: z.number().int().min(0),
226
211
  }),
227
- reconciliations: z.array(reconciliationItemSchema).max(50_000),
228
- static_load_states: z.array(staticLoadStateSchema).max(50_000),
212
+ reconciliations: z.array(reconciliationItemSchema),
213
+ static_load_states: z.array(staticLoadStateSchema),
229
214
  source_map_authority: z.strictObject({
230
215
  used_for_primary_matching: z.literal(false),
231
- static_layers_with_read_approval: z.number().int().min(0),
216
+ static_layer_count: z.number().int().min(0),
232
217
  runtime_script_declarations: z.number().int().min(0),
233
218
  limitation: boundedTextSchema,
234
219
  }),
@@ -240,6 +225,6 @@ export const javascriptRuntimeReconciliationResultSchema = z.strictObject({
240
225
  omitted_static_load_states: z.number().int().min(0),
241
226
  omitted_graph_items: z.number().int().min(0),
242
227
  }),
243
- evidence_links: z.array(evidenceIdSchema).min(2).max(40),
244
- limitations: z.array(boundedTextSchema).max(1_000),
228
+ evidence_links: z.array(evidenceIdSchema).min(2),
229
+ limitations: z.array(boundedTextSchema),
245
230
  });
@@ -1,4 +1,5 @@
1
- import { isAbsolute, posix, relative } from "node:path";
1
+ import { posix, relative } from "node:path";
2
+ import { isPathWithinRoot } from "./localPath.js";
2
3
  import { compareCodePoints, } from "./javascriptApplicationGraph.js";
3
4
  /** Index statically reconstructed entities that can receive runtime matches. */
4
5
  export const collectStaticRuntimeCandidates = (layers) => layers
@@ -131,8 +132,7 @@ const candidateDigests = (node) => {
131
132
  const pathBelowRoot = (root, value) => {
132
133
  const remainder = relative(root, value);
133
134
  if (remainder === "" ||
134
- remainder.startsWith("..") ||
135
- isAbsolute(remainder) ||
135
+ !isPathWithinRoot(root, value) ||
136
136
  remainder.includes("\\"))
137
137
  return null;
138
138
  return normalizeArtifactPath(remainder);
@@ -1,23 +1,23 @@
1
1
  import * as t from "@babel/types";
2
- import { DEFAULT_JAVASCRIPT_SEMANTIC_LIMITS, failedJavaScriptSemanticIr, } from "./javascriptSemanticIr.js";
3
- import { collectSemanticModuleLink, collectSemanticCallable, collectSemanticReferences, immutableSemanticBindings, immutableSemanticScopes, reachSemanticLimit, semanticModuleOrigin, semanticStaticPropertyName, } from "./javascriptSemanticProjection.js";
2
+ import { failedJavaScriptSemanticIr, } from "./javascriptSemanticIr.js";
3
+ import { collectSemanticModuleLink, collectSemanticCallable, collectSemanticReferences, immutableSemanticBindings, immutableSemanticScopes, semanticModuleOrigin, semanticStaticPropertyName, } from "./javascriptSemanticProjection.js";
4
4
  import { currentSemanticScope, resolveSemanticBindingFromScope, semanticScopeId, semanticVariableScope, } from "./javascriptSemanticState.js";
5
5
  import { traverseJavaScriptAst } from "./javascriptSemanticTraversal.js";
6
6
  import { collectSemanticReturns, resolveSemanticModuleCallables, } from "./javascriptSemanticReturns.js";
7
7
  import { collectJavaScriptDerivedSemantics } from "./javascriptSemanticDerivedAnalysis.js";
8
- import { compareCodePoints, propertyName, range, } from "./javascriptStaticAnalysisHelpers.js";
8
+ import { propertyName, range } from "./javascriptStaticAnalysisHelpers.js";
9
+ import { semanticCoverage } from "./javascriptSemanticCoverage.js";
9
10
  import { parseJavaScriptSource, } from "./javascriptSourceParser.js";
10
- /** Recover bounded lexical bindings, aliases, constants, and module links. */
11
- export const analyzeJavaScriptSemantics = (source, inputLimits = {}) => {
11
+ /** Recover lexical bindings, aliases, constants, and module links. */
12
+ export const analyzeJavaScriptSemantics = (source) => {
12
13
  const file = parseJavaScriptSource(source);
13
14
  return file === null
14
15
  ? failedJavaScriptSemanticIr()
15
- : analyzeParsedJavaScriptSemantics(file, inputLimits);
16
+ : analyzeParsedJavaScriptSemantics(file);
16
17
  };
17
18
  /** Recover semantics from an already parsed JavaScript artifact. */
18
- export const analyzeParsedJavaScriptSemantics = (file, inputLimits = {}) => {
19
- const limits = { ...DEFAULT_JAVASCRIPT_SEMANTIC_LIMITS, ...inputLimits };
20
- const state = createState(file.program, limits);
19
+ export const analyzeParsedJavaScriptSemantics = (file) => {
20
+ const state = createState(file.program);
21
21
  collectDefinitions(file.program, state);
22
22
  const references = collectSemanticReferences(file.program, state);
23
23
  const parserPartial = file.errors.length > 0;
@@ -27,31 +27,19 @@ export const analyzeParsedJavaScriptSemantics = (file, inputLimits = {}) => {
27
27
  const derived = collectJavaScriptDerivedSemantics(file.program, state, callables, parserPartial);
28
28
  return {
29
29
  schema: "JavaScriptSemanticIR",
30
- schemaVersion: 4,
31
30
  scopes: immutableSemanticScopes(state),
32
31
  bindings,
33
32
  callables,
34
33
  references,
35
34
  moduleLinks,
36
35
  ...derived,
37
- coverage: {
38
- status: state.limitsReached.size > 0
39
- ? "truncated"
40
- : parserPartial
41
- ? "partial"
42
- : "complete",
43
- omittedCount: state.limitsReached.size > 0 ? state.omittedCount : 0,
44
- limitsReached: [...state.limitsReached].sort(compareCodePoints),
45
- },
36
+ coverage: semanticCoverage(parserPartial),
46
37
  limitations: [
47
38
  ...(parserPartial
48
39
  ? [
49
40
  "The parser recovered from syntax errors; affected bindings are partial.",
50
41
  ]
51
42
  : []),
52
- ...(state.limitsReached.size === 0
53
- ? []
54
- : ["Semantic recovery stopped retaining facts at explicit limits."]),
55
43
  "Values and aliases were recovered from inert syntax only; no JavaScript was executed.",
56
44
  "Return sites include only direct callable returns; nested callable returns remain separate.",
57
45
  "Local call, argument, return, and closure relations are static candidates and do not prove runtime invocation.",
@@ -60,7 +48,7 @@ export const analyzeParsedJavaScriptSemantics = (file, inputLimits = {}) => {
60
48
  ],
61
49
  };
62
50
  };
63
- const createState = (program, limits) => {
51
+ const createState = (program) => {
64
52
  const root = {
65
53
  scopeId: semanticScopeId("program", program),
66
54
  parentScopeId: null,
@@ -70,7 +58,6 @@ const createState = (program, limits) => {
70
58
  bindings: new Map(),
71
59
  };
72
60
  return {
73
- limits,
74
61
  scopes: [root],
75
62
  scopesById: new Map([[root.scopeId, root]]),
76
63
  scopeByNode: new WeakMap([[program, root]]),
@@ -78,8 +65,6 @@ const createState = (program, limits) => {
78
65
  callables: [],
79
66
  callableNodesById: new Map(),
80
67
  moduleLinks: [],
81
- limitsReached: new Set(),
82
- omittedCount: 0,
83
68
  };
84
69
  };
85
70
  const collectDefinitions = (program, state) => {
@@ -167,17 +152,6 @@ const nestedScope = (node, parent, parentScope, state) => {
167
152
  const kind = scopeKind(node, parent);
168
153
  if (kind === undefined)
169
154
  return undefined;
170
- if (state.scopes.length >= state.limits.maxScopes) {
171
- reachSemanticLimit(state, "maxScopes");
172
- return {
173
- scopeId: `${semanticScopeId(kind, node)}:omitted`,
174
- parentScopeId: parentScope.scopeId,
175
- kind,
176
- location: range(node),
177
- bindingsComplete: false,
178
- bindings: new Map(),
179
- };
180
- }
181
155
  const scope = {
182
156
  scopeId: semanticScopeId(kind, node),
183
157
  parentScopeId: parentScope.scopeId,
@@ -324,15 +298,8 @@ const addBinding = (input) => {
324
298
  const { state, scope, name, kind, mutable, definitionNode, initializer, directOrigin, projection = [], } = input;
325
299
  let binding = scope.bindings.get(name);
326
300
  if (binding === undefined) {
327
- if (!scope.bindingsComplete) {
328
- state.omittedCount += 1;
301
+ if (!scope.bindingsComplete)
329
302
  return;
330
- }
331
- if (state.bindingsById.size >= state.limits.maxBindings) {
332
- scope.bindingsComplete = false;
333
- reachSemanticLimit(state, "maxBindings");
334
- return;
335
- }
336
303
  binding = createBinding(scope, name, kind, mutable);
337
304
  scope.bindings.set(name, binding);
338
305
  state.bindingsById.set(binding.bindingId, binding);
@@ -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 { range } from "./javascriptStaticAnalysisHelpers.js";
@@ -67,10 +67,6 @@ const collectEvent = (node, ownerCallableId, state, output) => {
67
67
  if (method === undefined)
68
68
  return;
69
69
  const kind = eventKind(method);
70
- if (output.length >= state.limits.maxEventOperations) {
71
- reachSemanticLimit(state, "maxEventOperations");
72
- return;
73
- }
74
70
  const eventArgument = node.arguments[0];
75
71
  const listenerArgument = node.arguments[1];
76
72
  const emitter = emitterIdentity(member.object, state);
@@ -130,10 +126,6 @@ const collectTimer = (input) => {
130
126
  const method = timerMethod(node.callee, state);
131
127
  if (method === null)
132
128
  return;
133
- if (output.length >= state.limits.maxTimerOperations) {
134
- reachSemanticLimit(state, "maxTimerOperations");
135
- return;
136
- }
137
129
  const kind = TIMER_SCHEDULE_METHODS.some((candidate) => candidate === method)
138
130
  ? "schedule"
139
131
  : "cancel";
@@ -1,24 +1,15 @@
1
1
  import * as t from "@babel/types";
2
- import { reachSemanticLimit, semanticCallableIdForNode, } from "./javascriptSemanticProjection.js";
2
+ import { semanticCallableIdForNode } from "./javascriptSemanticProjection.js";
3
3
  import { resolveSemanticBindingState, } from "./javascriptSemanticState.js";
4
4
  import { compareCodePoints, range } from "./javascriptStaticAnalysisHelpers.js";
5
- /** Resolve bounded local callable candidates without following dynamic properties. */
5
+ /** Resolve local callable candidates without following dynamic properties. */
6
6
  export const resolveLocalCallables = (input) => resolveCallables(input.node, {
7
7
  state: input.state,
8
8
  callableById: input.callableById,
9
9
  seenBindings: input.seenBindings,
10
- depth: input.depth,
11
10
  bindingCache: input.bindingCache,
12
11
  });
13
12
  const resolveCallables = (node, context) => {
14
- if (context.depth >= context.state.limits.maxValueDepth) {
15
- reachSemanticLimit(context.state, "maxValueDepth");
16
- return {
17
- callableIds: [],
18
- complete: false,
19
- reason: "Call target depth limit reached.",
20
- };
21
- }
22
13
  const direct = semanticCallableIdForNode(node);
23
14
  if (direct !== null && context.callableById.has(direct))
24
15
  return {
@@ -31,7 +22,7 @@ const resolveCallables = (node, context) => {
31
22
  if (t.isTSAsExpression(node) ||
32
23
  t.isTSTypeAssertion(node) ||
33
24
  t.isTSNonNullExpression(node))
34
- return resolveCallables(node.expression, nestedContext(context));
25
+ return resolveCallables(node.expression, context);
35
26
  if (t.isConditionalExpression(node) || t.isLogicalExpression(node))
36
27
  return resolveAlternatives(t.isConditionalExpression(node) ? node.consequent : node.left, t.isConditionalExpression(node) ? node.alternate : node.right, context);
37
28
  return {
@@ -48,10 +39,10 @@ const resolveIdentifier = (node, context) => {
48
39
  complete: false,
49
40
  reason: `Unresolved call target ${node.name}.`,
50
41
  }
51
- : resolveBindingCallables(binding, nestedContext(context));
42
+ : resolveBindingCallables(binding, context);
52
43
  };
53
44
  const resolveAlternatives = (left, right, context) => {
54
- const candidates = [left, right].map((candidate) => resolveCallables(candidate, nestedContext(context)));
45
+ const candidates = [left, right].map((candidate) => resolveCallables(candidate, context));
55
46
  return {
56
47
  callableIds: uniqueCallableIds(candidates.flatMap(({ callableIds }) => callableIds)),
57
48
  complete: candidates.every(({ complete }) => complete),
@@ -71,7 +62,7 @@ const resolveBindingCallables = (binding, context) => {
71
62
  if (binding.initializers.length === 0)
72
63
  return missingBindingInitializer(binding);
73
64
  const candidateContext = {
74
- ...nestedContext(context),
65
+ ...context,
75
66
  seenBindings: new Set([...context.seenBindings, binding.bindingId]),
76
67
  };
77
68
  const candidates = binding.initializers.map(({ node, projection }) => projection.length === 0
@@ -125,5 +116,4 @@ const rangeContains = (outer, inner) => (outer.start.line < inner.start.line ||
125
116
  (outer.end.line > inner.end.line ||
126
117
  (outer.end.line === inner.end.line &&
127
118
  outer.end.column >= inner.end.column));
128
- const nestedContext = (context) => ({ ...context, depth: context.depth + 1 });
129
119
  const uniqueCallableIds = (values) => [...new Set(values)].sort(compareCodePoints);
@@ -1,10 +1,10 @@
1
1
  import * as t from "@babel/types";
2
- import { reachSemanticLimit, semanticCallableIdForNode, semanticReferenceRole, semanticStaticPropertyName, } from "./javascriptSemanticProjection.js";
2
+ import { semanticCallableIdForNode, semanticReferenceRole, semanticStaticPropertyName, } from "./javascriptSemanticProjection.js";
3
3
  import { resolveSemanticBindingState, } from "./javascriptSemanticState.js";
4
4
  import { parameterBindings, resolveLocalCallables, } from "./javascriptSemanticCallResolution.js";
5
5
  import { traverseJavaScriptAst } from "./javascriptSemanticTraversal.js";
6
6
  import { range } from "./javascriptStaticAnalysisHelpers.js";
7
- /** Recover bounded direct-call and lexical-capture candidates from inert syntax. */
7
+ /** Recover direct-call and lexical-capture candidates from inert syntax. */
8
8
  export const collectJavaScriptSemanticCalls = (program, state, callables) => {
9
9
  const output = {
10
10
  callSites: [],
@@ -13,7 +13,6 @@ export const collectJavaScriptSemanticCalls = (program, state, callables) => {
13
13
  callResultFlows: [],
14
14
  closureCaptures: [],
15
15
  frontiers: [],
16
- retainedArguments: 0,
17
16
  };
18
17
  const callableById = new Map(callables.map((callable) => [callable.callableId, callable]));
19
18
  const context = {
@@ -56,20 +55,15 @@ export const collectJavaScriptSemanticCalls = (program, state, callables) => {
56
55
  };
57
56
  const collectCallSite = (node, parent, owner, context) => {
58
57
  const { state, callableById, output } = context;
59
- if (output.callSites.length >= state.limits.maxCallSites) {
60
- reachSemanticLimit(state, "maxCallSites");
61
- return;
62
- }
63
58
  const resolution = resolveLocalCallables({
64
59
  node: node.callee,
65
60
  state,
66
61
  callableById,
67
62
  seenBindings: new Set(),
68
- depth: 0,
69
63
  bindingCache: context.bindingResolutionCache,
70
64
  });
71
65
  const callSiteId = semanticCallSiteId(node);
72
- const argumentsValue = retainedArguments(node.arguments, state, output);
66
+ const argumentsValue = retainedArguments(node.arguments);
73
67
  const site = {
74
68
  callSiteId,
75
69
  kind: t.isNewExpression(node) ? "construct" : "call",
@@ -123,14 +117,9 @@ const collectCallResultFlow = (site, node, parent, context) => {
123
117
  definitionLocation: definition.location,
124
118
  });
125
119
  };
126
- const retainedArguments = (nodes, state, output) => {
120
+ const retainedArguments = (nodes) => {
127
121
  const retained = [];
128
122
  for (const [index, node] of nodes.entries()) {
129
- if (output.retainedArguments >= state.limits.maxCallArguments) {
130
- reachSemanticLimit(state, "maxCallArguments");
131
- break;
132
- }
133
- output.retainedArguments += 1;
134
123
  retained.push({
135
124
  index,
136
125
  location: range(node),
@@ -140,7 +129,7 @@ const retainedArguments = (nodes, state, output) => {
140
129
  return retained;
141
130
  };
142
131
  const collectArgumentFlows = (site, node, context) => {
143
- const { state, callableById, output } = context;
132
+ const { callableById, output } = context;
144
133
  const retainedIndexes = new Set(site.arguments.map(({ index }) => index));
145
134
  let positionIsExact = true;
146
135
  for (const [index, argument] of node.arguments.entries()) {
@@ -157,10 +146,6 @@ const collectArgumentFlows = (site, node, context) => {
157
146
  if (callable === undefined)
158
147
  continue;
159
148
  for (const parameter of cachedParameterBindings(callable, index, context)) {
160
- if (output.argumentFlows.length >= state.limits.maxArgumentFlows) {
161
- reachSemanticLimit(state, "maxArgumentFlows");
162
- return;
163
- }
164
149
  const definition = parameter.definitions.find(({ kind }) => kind === "parameter");
165
150
  if (definition === undefined)
166
151
  continue;
@@ -191,10 +176,6 @@ const collectReturnFlows = (site, callableById, state, output) => {
191
176
  if (callable === undefined)
192
177
  continue;
193
178
  for (const returnSite of callable.returnSites) {
194
- if (output.callReturnFlows.length >= state.limits.maxCallReturnFlows) {
195
- reachSemanticLimit(state, "maxCallReturnFlows");
196
- return;
197
- }
198
179
  output.callReturnFlows.push({
199
180
  callSiteId: site.callSiteId,
200
181
  callableId,
@@ -217,10 +198,6 @@ const collectCapture = (node, parent, owner, context) => {
217
198
  if (binding === undefined ||
218
199
  bindingIsWithinCallable(binding, owner.bodyScopeId, state))
219
200
  return;
220
- if (output.closureCaptures.length >= state.limits.maxClosureCaptures) {
221
- reachSemanticLimit(state, "maxClosureCaptures");
222
- return;
223
- }
224
201
  output.closureCaptures.push({
225
202
  callableId: owner.callableId,
226
203
  bindingId: binding.bindingId,
@@ -247,10 +224,6 @@ const collectDynamicProperty = (node, owner, state, output) => {
247
224
  }, state, output);
248
225
  };
249
226
  const addFrontier = (frontier, state, output) => {
250
- if (output.frontiers.length >= state.limits.maxFrontiers) {
251
- reachSemanticLimit(state, "maxFrontiers");
252
- return;
253
- }
254
227
  output.frontiers.push(frontier);
255
228
  };
256
229
  const bindingIsWithinCallable = (binding, bodyScopeId, state) => {
@@ -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 { compareCodePoints, propertyName, range, } from "./javascriptStaticAnalysisHelpers.js";
@@ -28,8 +28,6 @@ const collectSpawns = (program, state, callables) => {
28
28
  const method = childProcessMethod(node.callee, state);
29
29
  if (method === null)
30
30
  return;
31
- if (operationLimitReached(output.length, state))
32
- return;
33
31
  output.push({
34
32
  node,
35
33
  method,
@@ -86,8 +84,6 @@ const collectInteractions = (program, state, callables, spawns) => {
86
84
  const interaction = childInteraction(node, callableStack.at(-1) ?? null, context);
87
85
  if (interaction === null)
88
86
  return;
89
- if (operationLimitReached(spawns.length + output.length, state))
90
- return;
91
87
  output.push(interaction);
92
88
  },
93
89
  exit: (node) => popCallable(node, callableStack),
@@ -220,12 +216,6 @@ const literalString = (node) => {
220
216
  return node.quasis[0]?.value.cooked ?? node.quasis[0]?.value.raw ?? null;
221
217
  return null;
222
218
  };
223
- const operationLimitReached = (retained, state) => {
224
- if (retained < state.limits.maxChildProcessOperations)
225
- return false;
226
- reachSemanticLimit(state, "maxChildProcessOperations");
227
- return true;
228
- };
229
219
  const popCallable = (node, stack) => {
230
220
  const callableId = semanticCallableIdForNode(node);
231
221
  if (callableId !== null && stack.at(-1) === callableId)
@@ -0,0 +1,11 @@
1
+ /** Classify whole-file semantic coverage from parser recovery. */
2
+ export const semanticCoverage = (parserPartial) => ({
3
+ status: parserPartial ? "partial" : "complete",
4
+ omittedCount: 0,
5
+ });
6
+ /** Classify one callable's direct-return coverage. */
7
+ export const semanticReturnCoverage = (retainedCount, parserPartial) => ({
8
+ status: parserPartial ? "partial" : "complete",
9
+ retainedCount,
10
+ omittedCount: 0,
11
+ });