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,17 +1,16 @@
1
- import { allowedSanitizedUrl, boundedText, numberValue, recordValue, recordsValue, requiredRecord, stringValue, } from "./CdpCaptureValues.js";
1
+ import { allowedSanitizedUrl, numberValue, recordValue, recordsValue, requiredRecord, stringValue, } from "./CdpCaptureValues.js";
2
2
  import { exclusionReasonForUrl } from "./CdpCaptureEventHelpers.js";
3
- /** Normalize allowed frames while retaining a bounded prefix and total count. */
3
+ /** Normalize every allowed frame, optionally selecting a leading frame. */
4
4
  export const captureFrames = (result, allowedOrigins, maximum, completeness) => {
5
5
  const root = recordValue(requiredRecord(result).frameTree);
6
6
  if (root === undefined)
7
- return { total: 0, items: [] };
7
+ return { items: [] };
8
8
  const items = [];
9
- let total = 0;
10
9
  for (const tree of walkFrameTrees(root)) {
11
10
  const frame = recordValue(tree.frame);
12
11
  const frameId = stringValue(frame?.id);
13
12
  const sanitized = allowedSanitizedUrl(frame?.url, allowedOrigins);
14
- if (frame === undefined || frameId === undefined || frameId.length > 256) {
13
+ if (frame === undefined || frameId === undefined) {
15
14
  completeness?.exclude("frames", "invalid_protocol_value");
16
15
  continue;
17
16
  }
@@ -19,27 +18,25 @@ export const captureFrames = (result, allowedOrigins, maximum, completeness) =>
19
18
  completeness?.exclude("frames", exclusionReasonForUrl(stringValue(frame.url)));
20
19
  continue;
21
20
  }
22
- total += 1;
23
- if (items.length >= maximum)
21
+ if (maximum !== undefined && items.length >= maximum)
24
22
  continue;
25
23
  items.push({
26
24
  frame_id: frameId,
27
- parent_frame_id: (stringValue(frame.parentId) ?? "").slice(0, 256) || null,
25
+ parent_frame_id: stringValue(frame.parentId) ?? null,
28
26
  url: sanitized.url,
29
27
  origin: sanitized.origin,
30
28
  });
31
29
  }
32
- return { total, items };
30
+ return { items };
33
31
  };
34
32
  /** Read the current main-frame URL from an untrusted Page.getFrameTree result. */
35
33
  export const mainFrameUrl = (result) => stringValue(recordValue(recordValue(requiredRecord(result).frameTree)?.frame)?.url);
36
- /** Normalize allowed resources while retaining a bounded prefix and total count. */
37
- export const captureResources = (result, allowedOrigins, maximum, completeness) => {
34
+ /** Normalize every allowed resource. */
35
+ export const captureResources = (result, allowedOrigins, completeness) => {
38
36
  const root = recordValue(requiredRecord(result).frameTree);
39
37
  if (root === undefined)
40
- return { total: 0, items: [] };
38
+ return { items: [] };
41
39
  const items = [];
42
- let total = 0;
43
40
  for (const tree of walkFrameTrees(root)) {
44
41
  for (const resource of recordsValue(tree.resources)) {
45
42
  const url = allowedSanitizedUrl(resource.url, allowedOrigins);
@@ -47,21 +44,18 @@ export const captureResources = (result, allowedOrigins, maximum, completeness)
47
44
  completeness?.exclude("resources", exclusionReasonForUrl(stringValue(resource.url)));
48
45
  continue;
49
46
  }
50
- total += 1;
51
- if (items.length >= maximum)
52
- continue;
53
47
  const contentSize = numberValue(resource.contentSize);
54
48
  items.push({
55
49
  rawUrl: stringValue(resource.url) ?? "",
56
50
  url: url.url,
57
51
  origin: url.origin,
58
- type: (stringValue(resource.type) ?? "Other").slice(0, 100),
59
- mime_type: (stringValue(resource.mimeType) ?? "").slice(0, 256),
52
+ type: stringValue(resource.type) ?? "Other",
53
+ mime_type: stringValue(resource.mimeType) ?? "",
60
54
  content_size: contentSize === undefined ? null : Math.max(0, contentSize),
61
55
  });
62
56
  }
63
57
  }
64
- return { total, items };
58
+ return { items };
65
59
  };
66
60
  const walkFrameTrees = function* (root) {
67
61
  const pending = [root];
@@ -106,11 +100,11 @@ export const captureDom = (result, allowedOrigins, input, completeness) => {
106
100
  : [];
107
101
  const baseIndex = nodes.length;
108
102
  total += nodeTypes.length;
109
- for (let index = 0; index < nodeTypes.length && nodes.length < input.limits.max_dom_nodes; index += 1) {
103
+ for (let index = 0; index < nodeTypes.length; index += 1) {
110
104
  const attributeIndexes = numberArray(attributes[index]);
111
105
  const parent = Math.trunc(parents[index] ?? -1);
112
106
  const nodeIndex = nodes.length;
113
- const nodeName = indexedString(strings, nodeNames[index]).slice(0, 256);
107
+ const nodeName = indexedString(strings, nodeNames[index]);
114
108
  nodes.push({
115
109
  index: nodeIndex,
116
110
  parent_index: parent < 0 ? -1 : baseIndex + parent,
@@ -119,8 +113,7 @@ export const captureDom = (result, allowedOrigins, input, completeness) => {
119
113
  node_value_length: indexedString(strings, nodeValues[index]).length,
120
114
  attribute_names: attributeIndexes
121
115
  .filter((_value, attributeIndex) => attributeIndex % 2 === 0)
122
- .map((value) => indexedString(strings, value).slice(0, 256))
123
- .slice(0, 200),
116
+ .map((value) => indexedString(strings, value)),
124
117
  });
125
118
  const metadata = domMetadata({
126
119
  strings,
@@ -131,10 +124,6 @@ export const captureDom = (result, allowedOrigins, input, completeness) => {
131
124
  allowedOrigins,
132
125
  });
133
126
  for (const url of metadata.urls) {
134
- if (urls.length >= input.limits.max_resources) {
135
- completeness?.truncate("metadata");
136
- continue;
137
- }
138
127
  urls.push(url);
139
128
  if (url.destination_scope !== "approved") {
140
129
  excludedUrls += 1;
@@ -150,20 +139,18 @@ export const captureDom = (result, allowedOrigins, input, completeness) => {
150
139
  total,
151
140
  nodes,
152
141
  urls,
153
- agentHints: agentHints.slice(0, input.limits.max_resources),
142
+ agentHints,
154
143
  excludedUrls,
155
144
  };
156
145
  };
157
- export const captureAccessibility = (results, maximum, options) => {
146
+ export const captureAccessibility = (results, options) => {
158
147
  const all = results.flatMap((result) => recordsValue(requiredRecord(result).nodes));
159
148
  const nodeIds = new Set(all.flatMap((node) => {
160
149
  const nodeId = stringValue(node.nodeId);
161
150
  return nodeId === undefined ? [] : [nodeId];
162
151
  }));
163
- let retainedBytes = 0;
164
152
  let excludedFields = 0;
165
- let truncatedFields = 0;
166
- const nodes = all.slice(0, maximum).map((node) => {
153
+ const nodes = all.map((node) => {
167
154
  const captureText = (value) => {
168
155
  const raw = stringValue(recordValue(value)?.value);
169
156
  if (raw === undefined)
@@ -172,21 +159,11 @@ export const captureAccessibility = (results, maximum, options) => {
172
159
  excludedFields += 1;
173
160
  return null;
174
161
  }
175
- const available = Math.max(0, options.maximumTotalBytes - retainedBytes);
176
- const captured = boundedUtf8(raw, Math.min(options.maximumFieldBytes, available));
177
- retainedBytes += captured.bytes;
178
- if (captured.truncated) {
179
- truncatedFields += 1;
180
- if (captured.text === "" && raw !== "") {
181
- excludedFields += 1;
182
- return null;
183
- }
184
- }
185
- return captured.text;
162
+ return raw;
186
163
  };
187
164
  return {
188
- node_id: (stringValue(node.nodeId) ?? "").slice(0, 256),
189
- parent_id: (stringValue(node.parentId) ?? "").slice(0, 256) || null,
165
+ node_id: stringValue(node.nodeId) ?? "",
166
+ parent_id: stringValue(node.parentId) ?? null,
190
167
  role: axText(node.role),
191
168
  name: captureText(node.name),
192
169
  description: captureText(node.description),
@@ -194,15 +171,6 @@ export const captureAccessibility = (results, maximum, options) => {
194
171
  states: accessibilityStates(node.properties),
195
172
  };
196
173
  });
197
- for (const node of all.slice(maximum)) {
198
- for (const value of [node.name, node.description]) {
199
- if (stringValue(recordValue(value)?.value) === undefined)
200
- continue;
201
- excludedFields += 1;
202
- if (options.includeText)
203
- truncatedFields += 1;
204
- }
205
- }
206
174
  return {
207
175
  total: all.length,
208
176
  nodes,
@@ -216,12 +184,11 @@ export const captureAccessibility = (results, maximum, options) => {
216
184
  ? "unavailable"
217
185
  : !options.includeText
218
186
  ? "not_approved"
219
- : truncatedFields > 0
220
- ? "truncated"
221
- : "included",
222
- retained_bytes: retainedBytes,
187
+ : "included",
188
+ retained_bytes: nodes.reduce((total, node) => total +
189
+ Buffer.byteLength(node.name ?? "") +
190
+ Buffer.byteLength(node.description ?? ""), 0),
223
191
  excluded_fields: excludedFields,
224
- truncated_fields: truncatedFields,
225
192
  },
226
193
  };
227
194
  };
@@ -263,7 +230,7 @@ const accessibilityStates = (value) => {
263
230
  : typeof raw === "number"
264
231
  ? numberValue(raw)
265
232
  : typeof raw === "string"
266
- ? raw.slice(0, 256)
233
+ ? raw
267
234
  : undefined;
268
235
  if (state !== undefined)
269
236
  states.set(name, state);
@@ -272,7 +239,7 @@ const accessibilityStates = (value) => {
272
239
  .sort(([left], [right]) => left.localeCompare(right))
273
240
  .map(([name, state]) => ({ name, value: state }));
274
241
  };
275
- const axText = (value) => boundedText(recordValue(value)?.value, 1_024);
242
+ const axText = (value) => stringValue(recordValue(value)?.value) ?? null;
276
243
  const indexedString = (strings, index) => {
277
244
  const integer = numberValue(index);
278
245
  return integer === undefined ? "" : (strings[Math.trunc(integer)] ?? "");
@@ -335,21 +302,6 @@ const domDestination = (value, documentUrl, allowedOrigins) => {
335
302
  return { url: null, scope: "unsupported" };
336
303
  }
337
304
  };
338
- const boundedUtf8 = (value, maximumBytes) => {
339
- const total = Buffer.byteLength(value);
340
- if (total <= maximumBytes)
341
- return { text: value, bytes: total, truncated: false };
342
- let text = "";
343
- let bytes = 0;
344
- for (const character of value) {
345
- const characterBytes = Buffer.byteLength(character);
346
- if (bytes + characterBytes > maximumBytes)
347
- break;
348
- text += character;
349
- bytes += characterBytes;
350
- }
351
- return { text, bytes, truncated: true };
352
- };
353
305
  const domUrlAttributes = [
354
306
  "href",
355
307
  "src",
@@ -15,8 +15,8 @@ export const ingestResponseBodyShape = (state, requestId, value) => {
15
15
  invalidResponseBodyShape(state, requestId);
16
16
  return;
17
17
  }
18
- const inferred = inferBodyShape(state, decoded);
19
- updateResponseBodyShape(state, requestId, inferred.shape, inferred.truncated);
18
+ const inferred = inferBodyShape(decoded);
19
+ updateResponseBodyShape(state, requestId, inferred.shape);
20
20
  };
21
21
  export const requestBodyShape = (state, request) => {
22
22
  if (!state.input.include_json_body_shapes)
@@ -24,52 +24,32 @@ export const requestBodyShape = (state, request) => {
24
24
  const body = stringValue(request.postData);
25
25
  if (!isJsonContentType(recordValue(request.headers)) || body === undefined)
26
26
  return { status: "unavailable", request: null, response: null };
27
- const inferred = inferBodyShape(state, body);
27
+ const inferred = inferBodyShape(body);
28
28
  return {
29
- status: inferred.truncated
30
- ? "truncated"
31
- : inferred.shape === null
32
- ? "unavailable"
33
- : "included",
29
+ status: inferred.shape === null ? "unavailable" : "included",
34
30
  request: inferred.shape,
35
31
  response: null,
36
32
  };
37
33
  };
38
- export const updateResponseBodyShape = (state, requestId, response, truncated) => {
34
+ export const updateResponseBodyShape = (state, requestId, response) => {
39
35
  const current = state.network.get(requestId);
40
36
  if (current === undefined)
41
37
  return;
42
38
  const request = current.body_shapes.request;
43
- const status = truncated || current.body_shapes.status === "truncated"
44
- ? "truncated"
45
- : response !== null
46
- ? "included"
47
- : request !== null
48
- ? "partial"
49
- : "unavailable";
39
+ const status = response !== null
40
+ ? "included"
41
+ : request !== null
42
+ ? "partial"
43
+ : "unavailable";
50
44
  state.network.set(requestId, {
51
45
  ...current,
52
46
  body_shapes: { status, request, response },
53
47
  });
54
48
  };
55
- const inferBodyShape = (state, text) => {
56
- const bytes = Buffer.byteLength(text);
57
- const remaining = state.input.limits.max_total_json_body_bytes - state.jsonBodyBytes;
58
- if (bytes > state.input.limits.max_json_body_bytes || bytes > remaining) {
59
- state.completeness.truncate("json_body_shapes");
60
- return { shape: null, truncated: true };
61
- }
62
- state.jsonBodyBytes += bytes;
63
- const shape = inferJsonShape(text, {
64
- maximumBytes: state.input.limits.max_json_body_bytes,
65
- maximumNodes: state.input.limits.max_json_shape_nodes,
66
- maximumDepth: state.input.limits.max_json_shape_depth,
67
- });
68
- if (shape?.truncated === true)
69
- state.completeness.truncate("json_body_shapes");
70
- return { shape, truncated: shape?.truncated === true };
49
+ const inferBodyShape = (text) => {
50
+ return { shape: inferJsonShape(text) };
71
51
  };
72
52
  const invalidResponseBodyShape = (state, requestId) => {
73
- updateResponseBodyShape(state, requestId, null, false);
53
+ updateResponseBodyShape(state, requestId, null);
74
54
  state.completeness.exclude("json_body_shapes", "invalid_protocol_value");
75
55
  };
@@ -1,7 +1,7 @@
1
1
  import { inferJsonShape } from "../domain/jsonShape.js";
2
2
  import { safeResponseMetadata } from "./CdpSafeMetadata.js";
3
- import { boundedSensitiveText } from "./SensitiveTextCapture.js";
4
- import { allowedSanitizedUrl, boundedText, isHttpUrl, numberValue, recordValue, recordsValue, stringValue, } from "./CdpCaptureValues.js";
3
+ import { redactSensitiveText } from "./SensitiveTextCapture.js";
4
+ import { allowedSanitizedUrl, isHttpUrl, numberValue, recordValue, recordsValue, stringValue, } from "./CdpCaptureValues.js";
5
5
  import { requestBodyShape } from "./CdpCaptureEventBodyShapes.js";
6
6
  import { consolePrimitive, decodeBase64, exclusionReasonForUrl, executionContextKey, firstCallFrame, initiatorLocation, integerOrNull, } from "./CdpCaptureEventHelpers.js";
7
7
  export const handleExecutionContextCreated = (state, params) => {
@@ -10,15 +10,9 @@ export const handleExecutionContextCreated = (state, params) => {
10
10
  const frameId = stringValue(recordValue(context?.auxData)?.frameId);
11
11
  if (identifier === undefined ||
12
12
  !Number.isSafeInteger(identifier) ||
13
- frameId === undefined ||
14
- frameId.length > 256)
13
+ frameId === undefined)
15
14
  return;
16
15
  const key = String(identifier);
17
- if (state.executionContextFrames.size >= state.input.limits.max_scripts &&
18
- !state.executionContextFrames.has(key)) {
19
- state.completeness.truncate("scripts");
20
- return;
21
- }
22
16
  state.executionContextFrames.set(key, frameId);
23
17
  };
24
18
  export const handleExecutionContextDestroyed = (state, params) => {
@@ -30,7 +24,7 @@ export const handleScriptParsed = (state, params) => {
30
24
  const scriptId = stringValue(params.scriptId);
31
25
  const rawUrl = stringValue(params.url) ?? "";
32
26
  const sanitized = allowedSanitizedUrl(rawUrl, state.allowedOrigins);
33
- if (scriptId === undefined || scriptId.length > 256) {
27
+ if (scriptId === undefined) {
34
28
  state.completeness.exclude("scripts", "invalid_protocol_value");
35
29
  return;
36
30
  }
@@ -38,21 +32,16 @@ export const handleScriptParsed = (state, params) => {
38
32
  state.completeness.exclude("scripts", exclusionReasonForUrl(rawUrl));
39
33
  return;
40
34
  }
41
- if (state.scripts.size >= state.input.limits.max_scripts &&
42
- !state.scripts.has(scriptId)) {
43
- state.completeness.drop("scripts");
44
- return;
45
- }
46
35
  const sourceMap = sourceMapForScript(params.sourceMapURL, rawUrl, state);
47
36
  const script = {
48
37
  scriptId,
49
38
  rawUrl,
50
39
  url: sanitized.url,
51
40
  origin: sanitized.origin,
52
- hash: (stringValue(params.hash) ?? "").slice(0, 512),
41
+ hash: stringValue(params.hash) ?? "",
53
42
  length: Math.max(0, Math.min(Number.MAX_SAFE_INTEGER, Math.trunc(numberValue(params.length) ?? 0))),
54
43
  isModule: params.isModule === true,
55
- language: boundedText(params.scriptLanguage, 100),
44
+ language: stringValue(params.scriptLanguage) ?? null,
56
45
  sourceMapUrl: sourceMap.sanitized,
57
46
  sourceMapRawUrl: sourceMap.raw,
58
47
  executionContextKey: executionContextKey(params.executionContextId),
@@ -80,7 +69,7 @@ const sourceMapForScript = (value, scriptUrl, state) => {
80
69
  export const handleRequestWillBeSent = (state, params) => {
81
70
  const requestId = stringValue(params.requestId);
82
71
  const request = recordValue(params.request);
83
- if (requestId === undefined || requestId.length > 256) {
72
+ if (requestId === undefined) {
84
73
  state.completeness.exclude("network_requests", "invalid_protocol_value");
85
74
  return;
86
75
  }
@@ -95,11 +84,6 @@ export const handleRequestWillBeSent = (state, params) => {
95
84
  state.network.delete(requestId);
96
85
  return;
97
86
  }
98
- if (state.network.size >= state.input.limits.max_network_events &&
99
- !state.network.has(requestId)) {
100
- state.completeness.drop("network_requests");
101
- return;
102
- }
103
87
  const initiator = recordValue(params.initiator);
104
88
  const initiatorFrame = initiatorLocation(initiator);
105
89
  const rawInitiatorUrl = stringValue(initiatorFrame?.url);
@@ -110,13 +94,13 @@ export const handleRequestWillBeSent = (state, params) => {
110
94
  request_id: requestId,
111
95
  url: sanitized.url,
112
96
  origin: sanitized.origin ?? "",
113
- method: (stringValue(request.method) ?? "GET").slice(0, 32),
114
- resource_type: boundedText(params.type, 100),
97
+ method: stringValue(request.method) ?? "GET",
98
+ resource_type: stringValue(params.type) ?? null,
115
99
  status: null,
116
100
  mime_type: null,
117
101
  encoded_data_length: null,
118
102
  initiator: {
119
- type: (stringValue(initiator?.type) ?? "other").slice(0, 100),
103
+ type: stringValue(initiator?.type) ?? "other",
120
104
  url: initiatorUrl?.url ?? null,
121
105
  line: integerOrNull(initiatorFrame?.lineNumber),
122
106
  column: integerOrNull(initiatorFrame?.columnNumber),
@@ -126,7 +110,7 @@ export const handleRequestWillBeSent = (state, params) => {
126
110
  };
127
111
  export const handleResponseReceived = (state, params) => {
128
112
  const requestId = stringValue(params.requestId);
129
- if (requestId === undefined || requestId.length > 256) {
113
+ if (requestId === undefined) {
130
114
  state.completeness.exclude("network_requests", "invalid_protocol_value");
131
115
  return;
132
116
  }
@@ -145,19 +129,15 @@ export const handleResponseReceived = (state, params) => {
145
129
  state.network.set(requestId, {
146
130
  ...current,
147
131
  status: numberValue(response.status) ?? null,
148
- mime_type: boundedText(response.mimeType, 256),
132
+ mime_type: stringValue(response.mimeType) ?? null,
149
133
  });
150
- if (state.responseMetadata.length >= state.input.limits.max_network_events) {
151
- state.completeness.truncate("metadata");
152
- return;
153
- }
154
134
  const metadata = safeResponseMetadata(requestId, sanitized.url, response, state.allowedOrigins);
155
135
  state.responseMetadata.push(metadata.response);
156
136
  state.agentHints.push(...metadata.agentHints);
157
137
  };
158
138
  export const handleLoadingFinished = (state, params) => {
159
139
  const requestId = stringValue(params.requestId);
160
- if (requestId === undefined || requestId.length > 256)
140
+ if (requestId === undefined)
161
141
  return;
162
142
  const current = state.network.get(requestId);
163
143
  if (current === undefined)
@@ -178,17 +158,11 @@ export const handleConsoleAPICalled = (state, params) => {
178
158
  state.completeness.exclude("console_events", exclusionReasonForUrl(stringValue(frame.url)));
179
159
  return;
180
160
  }
181
- if (state.console.length >= state.input.limits.max_console_events) {
182
- state.completeness.drop("console_events");
183
- return;
184
- }
185
161
  const arguments_ = recordsValue(params.args);
186
162
  state.console.push({
187
- type: (stringValue(params.type) ?? "unknown").slice(0, 100),
163
+ type: stringValue(params.type) ?? "unknown",
188
164
  timestamp: numberValue(params.timestamp) ?? 0,
189
- argument_types: arguments_
190
- .map((argument) => (stringValue(argument.type) ?? "unknown").slice(0, 100))
191
- .slice(0, 100),
165
+ argument_types: arguments_.map((argument) => stringValue(argument.type) ?? "unknown"),
192
166
  url: source.url,
193
167
  line: integerOrNull(frame.lineNumber),
194
168
  column: integerOrNull(frame.columnNumber),
@@ -201,50 +175,32 @@ const captureConsoleText = (state, arguments_) => {
201
175
  status: "not_approved",
202
176
  values: [],
203
177
  retained_bytes: 0,
204
- truncated_values: 0,
205
178
  };
206
179
  const values = [];
207
180
  let retainedBytes = 0;
208
- let truncatedValues = 0;
209
181
  for (const [argumentIndex, argument] of arguments_.entries()) {
210
182
  const primitive = consolePrimitive(argument);
211
183
  if (primitive === undefined)
212
184
  continue;
213
- const remaining = state.input.limits.max_total_console_text_bytes - state.consoleTextBytes;
214
- if (remaining <= 0) {
215
- truncatedValues += 1;
216
- continue;
217
- }
218
- const bounded = boundedSensitiveText(primitive.text, Math.min(state.input.limits.max_console_text_field_bytes, remaining));
185
+ const text = redactSensitiveText(primitive.text);
219
186
  values.push({
220
187
  argument_index: argumentIndex,
221
188
  type: primitive.type,
222
- text: bounded.text,
189
+ text,
223
190
  });
224
- retainedBytes += bounded.bytes;
225
- state.consoleTextBytes += bounded.bytes;
226
- if (bounded.truncated)
227
- truncatedValues += 1;
191
+ retainedBytes += Buffer.byteLength(text);
228
192
  }
229
- if (truncatedValues > 0)
230
- state.completeness.truncate("console_text");
231
193
  return {
232
- status: truncatedValues > 0 ? "truncated" : "included",
194
+ status: "included",
233
195
  values,
234
196
  retained_bytes: retainedBytes,
235
- truncated_values: truncatedValues,
236
197
  };
237
198
  };
238
199
  export const handleWebSocketFrame = (state, params, direction) => {
239
200
  const requestId = stringValue(params.requestId);
240
201
  if (requestId === undefined ||
241
- requestId.length > 256 ||
242
202
  (!state.network.has(requestId) && !state.allowedWebSockets.has(requestId)))
243
203
  return;
244
- if (state.websockets.length >= state.input.limits.max_websocket_events) {
245
- state.completeness.drop("websocket_frames");
246
- return;
247
- }
248
204
  const response = recordValue(params.response);
249
205
  const payload = stringValue(response?.payloadData) ?? "";
250
206
  const opcode = Math.max(0, Math.trunc(numberValue(response?.opcode) ?? 0));
@@ -263,33 +219,17 @@ const captureWebSocketShape = (state, payload, opcode) => {
263
219
  if (!state.input.include_websocket_shapes)
264
220
  return null;
265
221
  if (opcode !== 1)
266
- return { format: "binary", json_shape: null, truncated: false };
267
- const bytes = Buffer.byteLength(payload);
268
- const remaining = state.input.limits.max_total_websocket_shape_bytes -
269
- state.websocketShapeBytes;
270
- if (bytes > state.input.limits.max_websocket_shape_bytes ||
271
- bytes > remaining) {
272
- state.completeness.truncate("websocket_shapes");
273
- return { format: "text", json_shape: null, truncated: true };
274
- }
275
- state.websocketShapeBytes += bytes;
276
- const shape = inferJsonShape(payload, {
277
- maximumBytes: state.input.limits.max_websocket_shape_bytes,
278
- maximumNodes: state.input.limits.max_json_shape_nodes,
279
- maximumDepth: state.input.limits.max_json_shape_depth,
280
- });
281
- if (shape?.truncated === true)
282
- state.completeness.truncate("websocket_shapes");
222
+ return { format: "binary", json_shape: null };
223
+ const shape = inferJsonShape(payload);
283
224
  return {
284
225
  format: shape === null ? "text" : "json",
285
226
  json_shape: shape,
286
- truncated: shape?.truncated === true,
287
227
  };
288
228
  };
289
229
  export const handleWebSocketCreated = (state, params) => {
290
230
  const requestId = stringValue(params.requestId);
291
231
  const rawUrl = stringValue(params.url);
292
- if (requestId === undefined || requestId.length > 256) {
232
+ if (requestId === undefined) {
293
233
  state.completeness.exclude("websocket_connections", "invalid_protocol_value");
294
234
  return;
295
235
  }
@@ -317,11 +257,6 @@ export const handleWebSocketCreated = (state, params) => {
317
257
  state.completeness.exclude("websocket_connections", "disallowed_origin");
318
258
  return;
319
259
  }
320
- if (!state.allowedWebSockets.has(requestId) &&
321
- state.allowedWebSockets.size >= state.input.limits.max_websocket_events) {
322
- state.completeness.drop("websocket_connections");
323
- return;
324
- }
325
260
  state.allowedWebSockets.add(requestId);
326
261
  };
327
262
  export const handleFrameNavigated = (state, params) => {
@@ -4,7 +4,7 @@ import * as handlers from "./CdpCaptureEventHandlers.js";
4
4
  import { isJsonMediaType } from "./CdpCaptureEventHelpers.js";
5
5
  import { recordValue } from "./CdpCaptureValues.js";
6
6
  export {} from "./CdpCaptureEventTypes.js";
7
- /** Bounded event accumulator that drops payload values at ingestion time. */
7
+ /** Event accumulator that validates and normalizes payloads at ingestion. */
8
8
  export class CdpCaptureEvents {
9
9
  scripts = new Map();
10
10
  executionContextFrames = new Map();
@@ -24,9 +24,6 @@ export class CdpCaptureEvents {
24
24
  originViolation = false;
25
25
  navigationDuringCapture = false;
26
26
  mainFrameId = undefined;
27
- consoleTextBytes = 0;
28
- jsonBodyBytes = 0;
29
- websocketShapeBytes = 0;
30
27
  input;
31
28
  allowedOrigins;
32
29
  constructor(input, allowedOrigins) {
@@ -45,9 +42,6 @@ export class CdpCaptureEvents {
45
42
  this.websockets.length = 0;
46
43
  this.responseMetadata.length = 0;
47
44
  this.agentHints.length = 0;
48
- this.consoleTextBytes = 0;
49
- this.jsonBodyBytes = 0;
50
- this.websocketShapeBytes = 0;
51
45
  this.completeness.reset();
52
46
  if (!this.input.include_console_text)
53
47
  this.completeness.exclude("console_text", "not_approved", null);
@@ -120,7 +114,7 @@ export class CdpCaptureEvents {
120
114
  .map((request) => request.request_id);
121
115
  }
122
116
  responseBodyUnavailable(requestId) {
123
- bodyShapes.updateResponseBodyShape(this, requestId, null, false);
117
+ bodyShapes.updateResponseBodyShape(this, requestId, null);
124
118
  this.completeness.unavailable("json_body_shapes");
125
119
  }
126
120
  ingestResponseBody(requestId, value) {
@@ -2,7 +2,7 @@ import { CdpConnection } from "./CdpConnection.js";
2
2
  import { optionalCdpCommand } from "./CdpOptionalCommand.js";
3
3
  import { captureStorageFingerprints, } from "./CdpCaptureStorageFingerprints.js";
4
4
  import { numberValue, recordValue, recordsValue, stringValue, } from "./CdpCaptureValues.js";
5
- /** Capture redacted, bounded storage metadata for one authorized origin. */
5
+ /** Capture redacted storage metadata for one authorized origin. */
6
6
  export const captureStorage = async (context, origin, limitations) => {
7
7
  const quota = recordValue(await optionalCdpCommand(context, "Storage.getUsageAndQuota", { origin }, limitations));
8
8
  const local = context.input.include_storage_keys
@@ -21,19 +21,17 @@ export const captureStorage = async (context, origin, limitations) => {
21
21
  : undefined;
22
22
  const cacheValues = recordsValue(recordValue(cacheRaw)?.caches);
23
23
  const caches = capturedCaches(cacheValues);
24
- const maximum = context.input.limits.max_storage_keys;
25
24
  const fingerprints = context.input.include_storage_fingerprints
26
25
  ? await captureStorageFingerprints({
27
26
  context,
28
27
  origin,
29
28
  local,
30
29
  session,
31
- indexedDbNames: indexed.slice(0, maximum),
32
- caches: caches.slice(0, maximum),
30
+ indexedDbNames: indexed,
31
+ caches,
33
32
  limitations,
34
33
  })
35
- : { items: [], complete: false, truncated: false };
36
- const truncated = [local.items, session.items, indexed, caches].some((items) => items.length > maximum) || fingerprints.truncated;
34
+ : { items: [], complete: false };
37
35
  const structuredStorageComplete = indexedRaw !== undefined &&
38
36
  Array.isArray(indexedValues) &&
39
37
  indexed.length === indexedValues.length &&
@@ -44,24 +42,15 @@ export const captureStorage = async (context, origin, limitations) => {
44
42
  origin,
45
43
  usage_bytes: numberValue(quota?.usage) ?? null,
46
44
  quota_bytes: numberValue(quota?.quota) ?? null,
47
- local_storage_keys: local.items
48
- .map(({ key }) => key.slice(0, 1_024))
49
- .slice(0, maximum),
50
- session_storage_keys: session.items
51
- .map(({ key }) => key.slice(0, 1_024))
52
- .slice(0, maximum),
53
- indexed_db_names: indexed
54
- .map((name) => name.slice(0, 1_024))
55
- .slice(0, maximum),
56
- cache_names: caches
57
- .map(({ name }) => name.slice(0, 1_024))
58
- .slice(0, maximum),
45
+ local_storage_keys: local.items.map(({ key }) => key),
46
+ session_storage_keys: session.items.map(({ key }) => key),
47
+ indexed_db_names: [...indexed],
48
+ cache_names: caches.map(({ name }) => name),
59
49
  content_fingerprints: [...fingerprints.items],
60
50
  fingerprint_algorithm: "sha256",
61
- fingerprints_complete: fingerprints.complete && structuredStorageComplete && !truncated,
51
+ fingerprints_complete: fingerprints.complete && structuredStorageComplete,
62
52
  values_redacted: true,
63
53
  },
64
- truncated,
65
54
  };
66
55
  };
67
56
  const emptyStorageItems = {