rea-agents 3.1.0 → 3.2.1

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 (590) hide show
  1. package/README.md +72 -95
  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/AnalysisSnapshotCache.js +0 -1
  6. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  7. package/dist/application/AndroidApplicationService.js +1 -1
  8. package/dist/application/AppleApplicationService.js +1 -1
  9. package/dist/application/ArtifactExtraction.js +35 -54
  10. package/dist/application/ArtifactExtractionDestination.js +17 -0
  11. package/dist/application/ArtifactGraphConstruction.js +2 -17
  12. package/dist/application/ArtifactInventory/classify.js +2 -6
  13. package/dist/application/ArtifactInventory/hash.js +2 -20
  14. package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
  15. package/dist/application/ArtifactInventory/scanReader.js +69 -51
  16. package/dist/application/ArtifactInventory.js +6 -14
  17. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  18. package/dist/application/BinarySession.js +41 -13
  19. package/dist/application/BinarySessionComposition.js +0 -11
  20. package/dist/application/BinarySessionOpen.js +2 -1
  21. package/dist/application/BinarySessionRecords.js +5 -93
  22. package/dist/application/BinarySessionStatus.js +5 -16
  23. package/dist/application/BinaryTargetResolver.js +216 -0
  24. package/dist/application/BrowserEvidence.js +42 -58
  25. package/dist/application/BrowserObservationService.js +3 -6
  26. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  27. package/dist/application/BrowserScenarioEvidence.js +3 -3
  28. package/dist/application/CallPathTracing.js +2 -36
  29. package/dist/application/CapabilityInventory.js +10 -15
  30. package/dist/application/ClientConfigurationDocument.js +27 -0
  31. package/dist/application/ClientRegistrationStatus.js +16 -13
  32. package/dist/application/CommandShimReplay.js +14 -1
  33. package/dist/application/DirectAnalysis.js +22 -46
  34. package/dist/application/DirectAnalysisStatus.js +5 -61
  35. package/dist/application/Doctor.js +11 -32
  36. package/dist/application/DoctorDiagnostics.js +1 -2
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/ElectronActiveEvidence.js +3 -8
  39. package/dist/application/ElectronActiveObservationService.js +3 -6
  40. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  41. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  42. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  43. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  44. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  45. package/dist/application/ElectronEvidence.js +4 -7
  46. package/dist/application/ElectronObservationService.js +5 -9
  47. package/dist/application/EnhancedLiteralTracing.js +42 -65
  48. package/dist/application/EnhancedTools.js +76 -44
  49. package/dist/application/EvidenceBundleCommands.js +11 -11
  50. package/dist/application/EvidenceBundleFiles.js +9 -15
  51. package/dist/application/EvidenceLedger.js +6 -41
  52. package/dist/application/FilesystemSnapshot.js +2 -3
  53. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  54. package/dist/application/InventoryProjectionEvidence.js +4 -2
  55. package/dist/application/InvestigationProviders.js +1 -1
  56. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  57. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  58. package/dist/application/JavaScriptApplicationService.js +6 -29
  59. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  60. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  61. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  62. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  63. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  64. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  65. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  66. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  67. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  68. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  69. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  70. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  71. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  72. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  73. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  74. package/dist/application/JavaScriptJsonModules.js +2 -2
  75. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  76. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  77. package/dist/application/JavaScriptReplayService.js +6 -32
  78. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  79. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  80. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  81. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  82. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  83. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  84. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  85. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  86. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  87. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  88. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  89. package/dist/application/JsonFiles.js +79 -0
  90. package/dist/application/LinuxHopper.js +11 -9
  91. package/dist/application/LoopbackReplay.js +26 -23
  92. package/dist/application/LoopbackReplayRecorder.js +29 -1
  93. package/dist/application/ManagedApplicationGraphService.js +1 -2
  94. package/dist/application/ManagedMemberComparisonService.js +11 -41
  95. package/dist/application/ManagedNativeVerificationService.js +1 -2
  96. package/dist/application/ManagedReconstructionService.js +1 -1
  97. package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
  98. package/dist/application/NativeApiInspection.js +2 -7
  99. package/dist/application/NativeUiActionTrace.js +394 -0
  100. package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
  101. package/dist/application/PermissionAuthority.js +15 -7
  102. package/dist/application/PermissionFailure.js +5 -0
  103. package/dist/application/ProcessCaptureAuthority.js +5 -7
  104. package/dist/application/ProcessCaptureJournal.js +3 -2
  105. package/dist/application/ProcessCaptureLifecycle.js +5 -12
  106. package/dist/application/ProcessCheckpoints.js +29 -11
  107. package/dist/application/ProcessCli.js +6 -16
  108. package/dist/application/ProcessEvidence.js +5 -7
  109. package/dist/application/ProcessHarness.js +52 -17
  110. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  111. package/dist/application/ProcessReactiveEffects.js +9 -3
  112. package/dist/application/ProcessReactiveHarness.js +13 -7
  113. package/dist/application/ProcessSampling.js +2 -4
  114. package/dist/application/ProcessTimer.js +39 -0
  115. package/dist/application/ProjectPermissionStore.js +39 -96
  116. package/dist/application/RealHopperAssertions.js +20 -66
  117. package/dist/application/ReconstructionCoverageService.js +12 -58
  118. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  119. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  120. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  121. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  122. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  123. package/dist/application/ReferenceSourceImport.js +19 -45
  124. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  125. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  126. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  127. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  128. package/dist/application/SessionProviderRouter.js +2 -2
  129. package/dist/application/Setup.js +1 -3
  130. package/dist/application/SetupClientConfiguration.js +22 -93
  131. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  132. package/dist/application/StoreFileLock.js +119 -0
  133. package/dist/application/TerminalRenderer.js +2 -3
  134. package/dist/application/Uninstall.js +9 -14
  135. package/dist/application/UnknownEvidence.js +1 -1
  136. package/dist/artifacts/ArtifactPaths.js +2 -5
  137. package/dist/artifacts/ArtifactProvider.js +36 -58
  138. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  139. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  140. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  141. package/dist/artifacts/NibArchive.js +269 -0
  142. package/dist/artifacts/SafeOutputTree.js +15 -24
  143. package/dist/browser/BrowserProcessStartup.js +1 -2
  144. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  145. package/dist/browser/CdpBrowserProvider.js +3 -13
  146. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  147. package/dist/browser/CdpCaptureDocuments.js +28 -76
  148. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  149. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  150. package/dist/browser/CdpCaptureEvents.js +2 -8
  151. package/dist/browser/CdpCaptureStorage.js +9 -20
  152. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
  153. package/dist/browser/CdpCaptureValues.js +21 -21
  154. package/dist/browser/CdpConnection.js +10 -25
  155. package/dist/browser/CdpElectronInspection.js +26 -50
  156. package/dist/browser/CdpElectronProvider.js +10 -35
  157. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  158. package/dist/browser/CdpElectronScripts.js +6 -35
  159. package/dist/browser/CdpElectronWorkers.js +6 -10
  160. package/dist/browser/CdpEndpoint.js +25 -41
  161. package/dist/browser/CdpObservationSession.js +14 -26
  162. package/dist/browser/CdpPageCapture.js +34 -48
  163. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  164. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  165. package/dist/browser/CdpSafeMetadata.js +19 -22
  166. package/dist/browser/CdpScreenshot.js +3 -5
  167. package/dist/browser/CdpTargetSession.js +1 -2
  168. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  169. package/dist/browser/ElectronFileScope.js +8 -19
  170. package/dist/browser/JavaScriptRuntimeScope.js +9 -14
  171. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  172. package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
  174. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  175. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  176. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  177. package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
  178. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  179. package/dist/browser/PlaywrightScenarioSession.js +14 -30
  180. package/dist/browser/PngVisualDiff.js +22 -14
  181. package/dist/browser/SensitiveTextCapture.js +0 -17
  182. package/dist/browser/V8InspectorCaptureProjection.js +7 -8
  183. package/dist/browser/V8InspectorEndpoint.js +12 -14
  184. package/dist/browser/V8InspectorProvider.js +20 -61
  185. package/dist/browser/WebSourceMapFetcher.js +56 -176
  186. package/dist/catalogIdentity.js +0 -54
  187. package/dist/cli/artifactCommands.js +49 -77
  188. package/dist/cli/coreAnalysisCommands.js +83 -133
  189. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  190. package/dist/cli/managedCommands.js +5 -270
  191. package/dist/cli/setupCommands.js +3 -12
  192. package/dist/cli/utilityCommands.js +7 -41
  193. package/dist/cli.js +0 -2
  194. package/dist/cliApplicationCommands.js +42 -112
  195. package/dist/cliBrowserAdvancedCommands.js +10 -106
  196. package/dist/cliBrowserCommands.js +15 -127
  197. package/dist/cliBrowserContext.js +30 -0
  198. package/dist/cliCommandNames.js +4 -5
  199. package/dist/cliElectronCommands.js +8 -72
  200. package/dist/cliEvidenceCommands.js +8 -77
  201. package/dist/cliJavaScriptRuntimeCommands.js +9 -91
  202. package/dist/cliJsonInput.js +4 -14
  203. package/dist/cliObservationOptions.js +11 -96
  204. package/dist/cliPolicyCommands.js +2 -17
  205. package/dist/cliProcessCommands.js +3 -3
  206. package/dist/cliSetup.js +0 -13
  207. package/dist/config/browserScenario.js +2 -2
  208. package/dist/config/environment.js +0 -9
  209. package/dist/config/parseConfig.js +1 -33
  210. package/dist/config/parsers.js +6 -27
  211. package/dist/config/passiveObservation.js +7 -77
  212. package/dist/config/permissions.js +0 -7
  213. package/dist/contracts/analysisSearchContract.js +2 -5
  214. package/dist/contracts/applicationToolContracts.js +56 -109
  215. package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
  216. package/dist/contracts/artifactComparisonExample.js +58 -60
  217. package/dist/contracts/artifactToolContracts.js +20 -67
  218. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  219. package/dist/contracts/browserToolContracts.js +8 -73
  220. package/dist/contracts/electronToolContracts.js +8 -108
  221. package/dist/contracts/enhancedInputs.js +23 -54
  222. package/dist/contracts/errorSchemas.js +0 -1
  223. package/dist/contracts/functionComparisonExample.js +10 -24
  224. package/dist/contracts/functionInstructionContract.js +1 -3
  225. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  226. package/dist/contracts/hopperMemoryContracts.js +3 -3
  227. package/dist/contracts/investigationExamples.js +14 -11
  228. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  229. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  230. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  231. package/dist/contracts/managedToolContracts.js +6 -95
  232. package/dist/contracts/managedWorkflowExamples.js +77 -128
  233. package/dist/contracts/managedWorkflowToolContracts.js +51 -77
  234. package/dist/contracts/nativeToolContracts.js +7 -11
  235. package/dist/contracts/processCaptureExample.js +2 -69
  236. package/dist/contracts/promptContracts.js +49 -67
  237. package/dist/contracts/providerSelection.js +0 -1
  238. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  239. package/dist/contracts/sessionStatusContract.js +1 -17
  240. package/dist/contracts/sessionToolSchemas.js +6 -15
  241. package/dist/contracts/toolContractExamples.js +11 -11
  242. package/dist/contracts/toolContractHelpers.js +0 -4
  243. package/dist/contracts/toolContracts.js +60 -71
  244. package/dist/contracts/toolEffects.js +5 -13
  245. package/dist/contracts/toolOutputSchemaGroups.js +37 -91
  246. package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
  247. package/dist/contracts/toolSchemaMetadata.js +8 -19
  248. package/dist/contracts/unknownContractExamples.js +0 -2
  249. package/dist/domain/analysisErrorPresentation.js +46 -54
  250. package/dist/domain/analysisErrorProjection.js +28 -37
  251. package/dist/domain/analysisProfile.js +3 -31
  252. package/dist/domain/analysisSnapshot.js +3 -12
  253. package/dist/domain/androidApplication.js +15 -54
  254. package/dist/domain/appleApplication.js +24 -67
  255. package/dist/domain/artifactComparison.js +11 -29
  256. package/dist/domain/artifactGraph.js +14 -44
  257. package/dist/domain/artifactInspection.js +38 -69
  258. package/dist/domain/artifactInventoryEvidence.js +27 -21
  259. package/dist/domain/binaryTarget.js +2 -221
  260. package/dist/domain/browserCaptureComparison.js +47 -24
  261. package/dist/domain/browserObservation.js +28 -193
  262. package/dist/domain/browserObservationSchemas.js +5 -23
  263. package/dist/domain/browserScenario.js +11 -14
  264. package/dist/domain/browserScenarioCapture.js +11 -12
  265. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  266. package/dist/domain/browserScenarioDiff.js +2 -59
  267. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  268. package/dist/domain/browserScenarioDiffValues.js +21 -38
  269. package/dist/domain/browserScenarioValues.js +80 -109
  270. package/dist/domain/browserSession.js +4 -7
  271. package/dist/domain/bundleComparison.js +6 -32
  272. package/dist/domain/bytecodeProvider.js +20 -19
  273. package/dist/domain/callPath.js +47 -167
  274. package/dist/domain/callPathSchemas.js +79 -0
  275. package/dist/domain/changedBehavior.js +34 -60
  276. package/dist/domain/completionLedgerGeneration.js +8 -14
  277. package/dist/domain/conformancePackage.js +126 -97
  278. package/dist/domain/conformanceReplay.js +36 -8
  279. package/dist/domain/conformanceTrustGate.js +23 -14
  280. package/dist/domain/customProtocolCapture.js +1 -1
  281. package/dist/domain/electronActiveObservation.js +70 -103
  282. package/dist/domain/electronObservation.js +14 -80
  283. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  284. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  285. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  286. package/dist/domain/electronStaticAnalysisValues.js +10 -17
  287. package/dist/domain/errors.js +33 -54
  288. package/dist/domain/eventProcessTree.js +20 -12
  289. package/dist/domain/evidence.js +2 -10
  290. package/dist/domain/evidenceBundle.js +3 -5
  291. package/dist/domain/evidenceCompletionLedger.js +6 -8
  292. package/dist/domain/functionComparison.js +4 -14
  293. package/dist/domain/functionComparisonNormalization.js +4 -11
  294. package/dist/domain/functionComparisonResults.js +25 -15
  295. package/dist/domain/functionComparisonSchemas.js +49 -33
  296. package/dist/domain/functionDossierEvidence.js +31 -156
  297. package/dist/domain/hopperStartupFailure.js +1 -1
  298. package/dist/domain/hopperValues.js +15 -136
  299. package/dist/domain/interfaceBuilderGraph.js +654 -0
  300. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  301. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  302. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  303. package/dist/domain/javascriptApplicationGraph.js +3 -13
  304. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  305. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  306. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  307. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  308. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  309. package/dist/domain/javascriptAstFingerprint.js +25 -58
  310. package/dist/domain/javascriptAstValues.js +9 -0
  311. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  312. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  313. package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
  314. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  315. package/dist/domain/javascriptFeatureSeed.js +20 -12
  316. package/dist/domain/javascriptFeatureTrace.js +13 -67
  317. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  318. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  319. package/dist/domain/javascriptNativeHandoff.js +1 -1
  320. package/dist/domain/javascriptReplay.js +24 -41
  321. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  322. package/dist/domain/javascriptRuntimeObservation.js +42 -103
  323. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  324. package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
  325. package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
  326. package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
  327. package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
  328. package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
  329. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  330. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
  331. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  332. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  333. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  334. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  335. package/dist/domain/javascriptSemanticCalls.js +5 -32
  336. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  337. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  338. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  339. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  340. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  341. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  342. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  343. package/dist/domain/javascriptSemanticIr.js +1 -29
  344. package/dist/domain/javascriptSemanticObjects.js +1 -5
  345. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  346. package/dist/domain/javascriptSemanticProjection.js +0 -18
  347. package/dist/domain/javascriptSemanticPromises.js +9 -16
  348. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  349. package/dist/domain/javascriptSemanticQuery.js +17 -139
  350. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  351. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  352. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  353. package/dist/domain/javascriptSemanticResources.js +1 -6
  354. package/dist/domain/javascriptSemanticReturns.js +10 -27
  355. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  356. package/dist/domain/javascriptSemanticValues.js +44 -62
  357. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  358. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  359. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  360. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  361. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  362. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  363. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  364. package/dist/domain/jsonShape.js +7 -33
  365. package/dist/domain/localPath.js +7 -0
  366. package/dist/domain/managedApplicationGraph.js +9 -41
  367. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  368. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  369. package/dist/domain/managedArtifact.js +14 -27
  370. package/dist/domain/managedMemberComparison.js +90 -92
  371. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  372. package/dist/domain/managedMemberComparisonItems.js +221 -0
  373. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  374. package/dist/domain/managedNativeVerification.js +3 -6
  375. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  376. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  377. package/dist/domain/managedReconstruction.js +19 -23
  378. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  379. package/dist/domain/nativeApiBoundary.js +2 -7
  380. package/dist/domain/nativeInspection.js +0 -2
  381. package/dist/domain/nativeInvestigationGraph.js +351 -0
  382. package/dist/domain/nativeValueFlow.js +61 -0
  383. package/dist/domain/nodeRuntimeCharacterization.js +1 -5
  384. package/dist/domain/objcSwiftMetadata.js +254 -0
  385. package/dist/domain/peInspection.js +1 -1
  386. package/dist/domain/permissionPolicy.js +13 -0
  387. package/dist/domain/processCapture.js +76 -113
  388. package/dist/domain/processCaptureExample.js +68 -0
  389. package/dist/domain/processCaptureParsing.js +21 -0
  390. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  391. package/dist/domain/processCaptureValidation.js +1 -7
  392. package/dist/domain/processComparison.js +3 -12
  393. package/dist/domain/processReactiveMatching.js +29 -50
  394. package/dist/domain/processReactiveRuntime.js +4 -8
  395. package/dist/domain/processReactiveScenario.js +28 -94
  396. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  397. package/dist/domain/processReactiveTransition.js +33 -18
  398. package/dist/domain/processScenario.js +56 -90
  399. package/dist/domain/processTraceComparison.js +0 -8
  400. package/dist/domain/processTraceEvaluation.js +14 -4
  401. package/dist/domain/processTraceSpecification.js +11 -17
  402. package/dist/domain/protocolCapture.js +3 -3
  403. package/dist/domain/reconstructionCoverage.js +62 -129
  404. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  405. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  406. package/dist/domain/reconstructionReadiness.js +1 -2
  407. package/dist/domain/reconstructionReadinessSchemas.js +36 -38
  408. package/dist/domain/reconstructionUnknowns.js +3 -3
  409. package/dist/domain/reconstructionVerification.js +13 -47
  410. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  411. package/dist/domain/referenceSourceGraph.js +53 -61
  412. package/dist/domain/referenceSourceImportParsing.js +1 -5
  413. package/dist/domain/replayMachine.js +19 -31
  414. package/dist/domain/replayMachineRun.js +15 -63
  415. package/dist/domain/replayMachineRuntime.js +41 -41
  416. package/dist/domain/replayMachineValues.js +84 -0
  417. package/dist/domain/residualUnknown.js +25 -30
  418. package/dist/domain/runtimeCharacterization.js +15 -16
  419. package/dist/domain/runtimeIdentification.js +48 -47
  420. package/dist/domain/sourceToBundleComparison.js +9 -85
  421. package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
  422. package/dist/domain/sourceToBundleSignals.js +4 -15
  423. package/dist/domain/staticRuntimeCorrelation.js +37 -49
  424. package/dist/domain/symbolAnalysis.js +10 -19
  425. package/dist/domain/unicodeCodePointOrder.js +12 -0
  426. package/dist/domain/webBundleAnalysis.js +70 -99
  427. package/dist/domain/webBundleAnalyzer.js +2 -4
  428. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  429. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  430. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  431. package/dist/domain/webCaptureDiff.js +33 -73
  432. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  433. package/dist/domain/webContentArtifact.js +1 -10
  434. package/dist/domain/webMcpDiscovery.js +3 -14
  435. package/dist/domain/webScreenshot.js +58 -34
  436. package/dist/domain/zipPackageFormat.js +7 -0
  437. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  438. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  439. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  440. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  441. package/dist/dotnet/ManagedMemberRows.js +16 -16
  442. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  443. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  444. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  445. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  446. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  447. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  448. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
  449. package/dist/dotnet/ManagedPeReader.js +2 -2
  450. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  451. package/dist/generatedMcpToolCatalog.js +1 -1
  452. package/dist/generatedPackageMetadata.js +1 -1
  453. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  454. package/dist/ghidra/GhidraClient.js +4 -12
  455. package/dist/ghidra/GhidraClientWire.js +9 -5
  456. package/dist/ghidra/GhidraDefaults.js +0 -18
  457. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  458. package/dist/ghidra/GhidraDoctor.js +16 -12
  459. package/dist/ghidra/GhidraFunctionValues.js +65 -108
  460. package/dist/ghidra/GhidraInstallation.js +98 -42
  461. package/dist/ghidra/GhidraInventoryValues.js +16 -85
  462. package/dist/ghidra/GhidraLauncher.js +0 -8
  463. package/dist/ghidra/GhidraProvider.js +15 -22
  464. package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
  465. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  466. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  467. package/dist/ghidra/GhidraSessionValues.js +0 -2
  468. package/dist/ghidra/GhidraTransport.js +4 -7
  469. package/dist/ghidra/protocol.js +2 -2
  470. package/dist/hopper/BridgeLauncher.js +112 -36
  471. package/dist/hopper/HopperAnalysisProfile.js +1 -1
  472. package/dist/hopper/HopperCleanup.js +6 -3
  473. package/dist/hopper/HopperClient.js +4 -7
  474. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  475. package/dist/hopper/HopperProvider.js +0 -16
  476. package/dist/hopper/HopperRequestQueue.js +21 -40
  477. package/dist/hopper/HopperResponseStream.js +1 -9
  478. package/dist/hopper/HopperSessionValues.js +3 -2
  479. package/dist/hopper/HopperTargetLease.js +119 -0
  480. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  481. package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
  482. package/dist/hopper/protocol.js +6 -4
  483. package/dist/main/reload.js +0 -3
  484. package/dist/main/shutdown.js +1 -1
  485. package/dist/main/state.js +0 -9
  486. package/dist/main/transport.js +0 -5
  487. package/dist/mcpDoctor.js +25 -45
  488. package/dist/native/CommandRunner.js +18 -25
  489. package/dist/native/NativeMacOSProvider.js +13 -38
  490. package/dist/native/NativeMachoInspection.js +1 -1
  491. package/dist/process/BoundedFileBytes.js +17 -0
  492. package/dist/process/ExecFileOutput.js +11 -0
  493. package/dist/process/PendingOperations.js +8 -6
  494. package/dist/process/ProcessOwnership.js +3 -2
  495. package/dist/process/ProcessOwnershipObservation.js +0 -1
  496. package/dist/process/ProviderProcess.js +7 -28
  497. package/dist/reference/ReferenceSourceReader.js +8 -24
  498. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  499. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  500. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  501. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  502. package/dist/replay/JavaScriptReplayWorker.js +3 -5
  503. package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
  504. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  505. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  506. package/dist/replay/ReplayOutcome.js +1 -3
  507. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  508. package/dist/replay/ReplaySeccompFile.js +29 -0
  509. package/dist/replay/ReplayWorkerProtocol.js +0 -2
  510. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  511. package/dist/server/ProcessCaptureElicitation.js +4 -8
  512. package/dist/server/createServer.js +6 -44
  513. package/dist/server/promptCompletion.js +37 -61
  514. package/dist/server/recordDerivedEvidence.js +1 -1
  515. package/dist/server/registerApplicationTools/characterization.js +4 -8
  516. package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
  517. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
  518. package/dist/server/registerApplicationTools/compareVersions.js +5 -10
  519. package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
  520. package/dist/server/registerApplicationTools/coverage.js +6 -71
  521. package/dist/server/registerApplicationTools/helpers.js +1 -13
  522. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  523. package/dist/server/registerApplicationTools/traceFeature.js +5 -9
  524. package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
  525. package/dist/server/registerApplicationTools.js +0 -2
  526. package/dist/server/registerArtifactComparisonTool.js +23 -27
  527. package/dist/server/registerBrowserScenarioTool.js +4 -4
  528. package/dist/server/registerBrowserTools.js +5 -8
  529. package/dist/server/registerBundleComparisonTool.js +5 -7
  530. package/dist/server/registerCloseLifecycleTool.js +2 -16
  531. package/dist/server/registerElectronTools.js +10 -29
  532. package/dist/server/registerEnhancedTools.js +10 -11
  533. package/dist/server/registerEvidenceTools.js +15 -22
  534. package/dist/server/registerFunctionComparisonTool.js +30 -25
  535. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  536. package/dist/server/registerInvestigationTools.js +20 -116
  537. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
  538. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
  539. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  540. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
  541. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
  542. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
  543. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
  544. package/dist/server/registerOfficialTools.js +1 -43
  545. package/dist/server/registerProcessComparisonTool.js +33 -23
  546. package/dist/server/registerPrompts.js +19 -17
  547. package/dist/server/registerSessionRecordTools.js +10 -156
  548. package/dist/server/registerSessionStatusTool.js +6 -69
  549. package/dist/server/registerSessionTools.js +10 -51
  550. package/dist/server/sessionAvailabilityPolicy.js +0 -2
  551. package/dist/server/sessionEvidence.js +9 -15
  552. package/dist/server/sessionToolPolicies.js +0 -8
  553. package/dist/server/toolResult.js +14 -50
  554. package/dist/serverIdentity.js +0 -20
  555. package/install.sh +1 -1
  556. package/package.json +11 -7
  557. package/scripts/electron-active-hook.cjs +23 -55
  558. package/scripts/hopper-demo-x11.py +13 -32
  559. package/skills/reverse-engineer-anything/SKILL.md +47 -12
  560. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  561. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  562. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  563. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
  564. package/dist/application/BoundedJsonFiles.js +0 -86
  565. package/dist/application/CrossVersionInventory.js +0 -129
  566. package/dist/application/CrossVersionInvestigation.js +0 -301
  567. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  568. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  569. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  570. package/dist/application/DeferredFileAuthorization.js +0 -61
  571. package/dist/application/DoctorProjection.js +0 -43
  572. package/dist/application/EnhancedToolPagination.js +0 -22
  573. package/dist/application/EvidenceReferenceResolver.js +0 -26
  574. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  575. package/dist/application/ProcessPairedExperiment.js +0 -72
  576. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  577. package/dist/application/ReconstructionReadinessService.js +0 -48
  578. package/dist/cliInvestigationCommands.js +0 -173
  579. package/dist/domain/boundedCartesianProjection.js +0 -15
  580. package/dist/domain/investigationWorkspace.js +0 -347
  581. package/dist/domain/jsonLimits.js +0 -26
  582. package/dist/domain/knownPageCoverage.js +0 -29
  583. package/dist/domain/processPairedExperiment.js +0 -128
  584. package/dist/server/javascriptApplicationResult.js +0 -106
  585. package/dist/server/permissionFailure.js +0 -12
  586. package/dist/server/registerApplicationTools/readiness.js +0 -50
  587. package/dist/server/registerEvidenceResources.js +0 -315
  588. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  589. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  590. package/dist/server/registerReconstructionReadinessResource.js +0 -32
@@ -5,7 +5,7 @@ import { historicalSourceGraphSchema } from "./referenceSourceGraph.js";
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 textSchema = z.string().min(1);
9
9
  export const SOURCE_TO_BUNDLE_SIGNAL_WEIGHTS = [
10
10
  ["exact-source-digest", 100],
11
11
  ["source-map-original-path", 70],
@@ -22,47 +22,29 @@ const sourceToBundleSignalKindSchema = z.enum([
22
22
  "basename-match",
23
23
  "language-extension",
24
24
  ]);
25
- const sourceToBundleLimitsSchema = z.strictObject({
26
- max_source_files: z.number().int().min(1).max(100_000).default(10_000),
27
- max_application_nodes: z.number().int().min(1).max(100_000).default(20_000),
28
- max_candidate_nodes: z.number().int().min(1).max(1_000).default(100),
29
- max_candidate_evaluations: z
30
- .number()
31
- .int()
32
- .min(1)
33
- .max(10_000_000)
34
- .default(1_000_000),
35
- });
36
- /** Historical source inventory, authenticated application Evidence, and bounds. */
25
+ /** Historical source inventory and authenticated application Evidence. */
37
26
  export const compareSourceToBundleInputSchema = z.strictObject({
38
27
  reference: historicalSourceGraphSchema,
39
28
  application: evidenceSchema,
40
- limits: sourceToBundleLimitsSchema.default({
41
- max_source_files: 10_000,
42
- max_application_nodes: 20_000,
43
- max_candidate_nodes: 100,
44
- max_candidate_evaluations: 1_000_000,
45
- }),
46
- unknown_registry_approved: z.literal(true).optional(),
47
29
  });
48
30
  const sourceToBundleSignalSchema = z.strictObject({
49
31
  kind: sourceToBundleSignalKindSchema,
50
32
  weight: z.number().int().min(1).max(100),
51
- source_value: boundedTextSchema,
52
- current_values: z.array(boundedTextSchema).min(1).max(64),
33
+ source_value: textSchema,
34
+ current_values: z.array(textSchema).min(1),
53
35
  });
54
36
  const sourceToBundleCandidateSchema = z.strictObject({
55
37
  current_node_id: nodeIdSchema,
56
38
  current_node_kind: z.enum(JAVASCRIPT_APPLICATION_NODE_KINDS),
57
- score: z.number().int().min(1).max(300),
39
+ score: z.number().int().min(1),
58
40
  confidence: z.enum(["exact", "high", "medium", "low"]),
59
- signals: z.array(sourceToBundleSignalSchema).min(1).max(6),
41
+ signals: z.array(sourceToBundleSignalSchema).min(1),
60
42
  });
61
43
  const sourceToBundleItemSchema = z.strictObject({
62
44
  mapping_id: z.string().regex(/^stbc_item_[a-f0-9]{64}$/u),
63
- source_path: boundedTextSchema,
45
+ source_path: textSchema,
64
46
  source_sha256: digestSchema.nullable(),
65
- source_language: z.string().min(1).max(100).nullable(),
47
+ source_language: textSchema.nullable(),
66
48
  status: z.enum([
67
49
  "unchanged",
68
50
  "modified",
@@ -73,14 +55,12 @@ const sourceToBundleItemSchema = z.strictObject({
73
55
  "unknown",
74
56
  ]),
75
57
  confidence: z.enum(["exact", "high", "medium", "unknown"]),
76
- current_node_ids: z.array(nodeIdSchema).max(1_000),
77
- candidates: z.array(sourceToBundleCandidateSchema).max(1_000),
78
- omitted_candidates: z.number().int().min(0),
79
- limitations: z.array(boundedTextSchema).max(100),
58
+ current_node_ids: z.array(nodeIdSchema),
59
+ candidates: z.array(sourceToBundleCandidateSchema),
60
+ limitations: z.array(textSchema),
80
61
  });
81
62
  /** Deterministic, evidence-bearing historical-source to shipped-bundle comparison. */
82
63
  export const sourceToBundleComparisonResultSchema = z.strictObject({
83
- schema_version: z.literal(1),
84
64
  comparison_id: z.string().regex(/^stbc_[a-f0-9]{64}$/u),
85
65
  reference: z.strictObject({
86
66
  root_sha256: digestSchema,
@@ -92,7 +72,7 @@ export const sourceToBundleComparisonResultSchema = z.strictObject({
92
72
  root_artifact_sha256: digestSchema,
93
73
  }),
94
74
  scoring: z.strictObject({
95
- algorithm: z.literal("rea-source-to-bundle-signals/v1"),
75
+ algorithm: z.literal("rea-source-to-bundle-signals"),
96
76
  minimum_candidate_score: z.literal(20),
97
77
  weights: z.array(z.strictObject({
98
78
  signal: sourceToBundleSignalKindSchema,
@@ -108,10 +88,10 @@ export const sourceToBundleComparisonResultSchema = z.strictObject({
108
88
  duplicated: z.number().int().min(0),
109
89
  unknown: z.number().int().min(0),
110
90
  }),
111
- items: z.array(sourceToBundleItemSchema).max(100_000),
112
- unmapped_current_node_ids: z.array(nodeIdSchema).max(100_000),
91
+ items: z.array(sourceToBundleItemSchema),
92
+ unmapped_current_node_ids: z.array(nodeIdSchema),
113
93
  coverage: z.strictObject({
114
- status: z.enum(["complete-within-inputs", "partial", "truncated"]),
94
+ status: z.enum(["complete-within-inputs", "partial"]),
115
95
  reference_inventory_state: z.enum(["complete", "partial", "unknown"]),
116
96
  application_graph_status: z.enum([
117
97
  "complete",
@@ -120,14 +100,9 @@ export const sourceToBundleComparisonResultSchema = z.strictObject({
120
100
  "unavailable",
121
101
  ]),
122
102
  retained_source_files: z.number().int().min(0),
123
- omitted_source_files: z.number().int().min(0),
124
103
  retained_application_nodes: z.number().int().min(0),
125
- omitted_application_nodes: z.number().int().min(0),
126
104
  candidate_evaluations: z.number().int().min(0),
127
- omitted_candidate_evaluations: z.number().int().min(0),
128
- omitted_candidate_references: z.number().int().min(0),
129
- omitted_unmapped_current_nodes: z.number().int().min(0),
130
105
  }),
131
- evidence_links: z.array(evidenceIdSchema).min(1).max(1),
132
- limitations: z.array(boundedTextSchema).max(1_000),
106
+ evidence_links: z.array(evidenceIdSchema).length(1),
107
+ limitations: z.array(textSchema),
133
108
  });
@@ -13,7 +13,6 @@ const PATH_PROPERTIES = [
13
13
  "resolved_path",
14
14
  "declared_path",
15
15
  ];
16
- const MAX_PATH_SUFFIXES = 128;
17
16
  const signalWeight = (kind) => {
18
17
  const entry = SOURCE_TO_BUNDLE_SIGNAL_WEIGHTS.find(([signal]) => signal === kind);
19
18
  if (entry === undefined)
@@ -28,20 +27,17 @@ export const sourceBearingNodes = (nodes) => nodes
28
27
  export const historicalSourceFiles = (graph) => graph.entries
29
28
  .filter((entry) => entry.kind === "file" && entry.classifications.includes("source"))
30
29
  .sort((left, right) => compareText(left.path, right.path));
31
- /** Build bounded-key indices without assigning fuzzy matches. */
30
+ /** Build deterministic candidate indices without assigning fuzzy matches. */
32
31
  export const buildSourceToBundleCandidateIndex = (nodes) => {
33
32
  const projections = nodes.map(projectCurrentNode);
34
33
  const byDigest = new Map();
35
34
  const byPathSuffix = new Map();
36
35
  const byBasename = new Map();
37
- let pathIndexTruncated = false;
38
36
  for (const projection of projections) {
39
37
  for (const digest of projection.digests)
40
38
  addIndexValue(byDigest, digest, projection.node.node_id);
41
39
  for (const path of projection.paths) {
42
- const suffixes = pathSuffixes(path.value);
43
- pathIndexTruncated ||= suffixes.truncated;
44
- for (const suffix of suffixes.values)
40
+ for (const suffix of pathSuffixes(path.value))
45
41
  addIndexValue(byPathSuffix, suffix, projection.node.node_id);
46
42
  addIndexValue(byBasename, posix.basename(path.value), projection.node.node_id);
47
43
  }
@@ -51,7 +47,6 @@ export const buildSourceToBundleCandidateIndex = (nodes) => {
51
47
  byDigest,
52
48
  byPathSuffix,
53
49
  byBasename,
54
- pathIndexTruncated,
55
50
  };
56
51
  };
57
52
  /** Candidate identifiers ordered by strongest available signal, then ID. */
@@ -153,7 +148,7 @@ const signal = (kind, sourceValue, currentValues) => ({
153
148
  kind,
154
149
  weight: signalWeight(kind),
155
150
  source_value: sourceValue,
156
- current_values: [...new Set(currentValues)].sort(compareText).slice(0, 64),
151
+ current_values: [...new Set(currentValues)].sort(compareText),
157
152
  });
158
153
  const candidateConfidence = (signals) => {
159
154
  const kinds = new Set(signals.map(({ kind }) => kind));
@@ -191,13 +186,7 @@ const uniquePaths = (paths) => [
191
186
  ].sort((left, right) => compareText(`${left.kind}\0${left.value}`, `${right.kind}\0${right.value}`));
192
187
  const pathSuffixes = (path) => {
193
188
  const parts = path.split("/");
194
- const start = Math.max(0, parts.length - MAX_PATH_SUFFIXES);
195
- return {
196
- values: parts
197
- .slice(start)
198
- .map((_, index) => parts.slice(start + index).join("/")),
199
- truncated: start > 0,
200
- };
189
+ return parts.map((_, index) => parts.slice(index).join("/"));
201
190
  };
202
191
  const addIndexValue = (index, key, nodeId) => {
203
192
  const values = index.get(key) ?? new Set();
@@ -39,7 +39,7 @@ const observedPatternSchema = z.enum([
39
39
  const artifactSelectorSchema = z
40
40
  .object({
41
41
  kind: z.literal("artifact"),
42
- logical_path: z.string().min(1).max(4_096),
42
+ logical_path: z.string().min(1),
43
43
  })
44
44
  .strict();
45
45
  const functionSelectorSchema = z
@@ -66,21 +66,18 @@ const mappingSchema = z
66
66
  side_alignment: z.enum(["left_to_left", "left_to_right"]),
67
67
  hypothesis: z
68
68
  .object({
69
- statement: z.string().trim().min(1).max(500),
69
+ statement: z.string().trim().min(1),
70
70
  expected_pattern: expectedPatternSchema,
71
71
  })
72
72
  .strict(),
73
73
  })
74
74
  .strict();
75
- /** Strict bounded input for explicit static/runtime hypothesis correlation. */
75
+ /** Strict input for explicit static/runtime hypothesis correlation. */
76
76
  export const staticRuntimeCorrelationInputSchema = z
77
77
  .object({
78
- static_comparisons: z.array(evidenceSchema).min(1).max(100),
79
- runtime_comparisons: z.array(evidenceSchema).min(1).max(100),
80
- mappings: z.array(mappingSchema).min(1).max(500),
81
- offset: z.number().int().min(0).default(0),
82
- limit: z.number().int().min(1).max(100).default(100),
83
- unknown_registry_approved: z.literal(true).optional(),
78
+ static_comparisons: z.array(evidenceSchema).min(1),
79
+ runtime_comparisons: z.array(evidenceSchema).min(1),
80
+ mappings: z.array(mappingSchema).min(1),
84
81
  })
85
82
  .strict();
86
83
  const correlationItemSchema = z.object({
@@ -102,15 +99,15 @@ const correlationItemSchema = z.object({
102
99
  }),
103
100
  side_alignment: z.enum(["left_to_left", "left_to_right"]),
104
101
  hypothesis: z.object({
105
- statement: z.string().min(1).max(500),
102
+ statement: z.string().min(1),
106
103
  expected_pattern: expectedPatternSchema,
107
104
  }),
108
105
  observed_pattern: observedPatternSchema,
109
106
  classification: z.enum(["hypothesis", "contradiction", "unresolved_branch"]),
110
- evidence_links: z.array(evidenceIdSchema).min(2).max(20_100),
107
+ evidence_links: z.array(evidenceIdSchema).min(2),
111
108
  limitations: z.array(z.string()),
112
109
  });
113
- /** Deterministic, paginated static/runtime correlation payload. */
110
+ /** Deterministic static/runtime correlation payload. */
114
111
  export const staticRuntimeCorrelationResultSchema = z.object({
115
112
  status: z.enum(["correlated", "contradicted", "unknown", "truncated"]),
116
113
  summary: z.object({
@@ -119,28 +116,24 @@ export const staticRuntimeCorrelationResultSchema = z.object({
119
116
  unresolved: z.number().int().min(0),
120
117
  }),
121
118
  correlations: z.object({
122
- items: z.array(correlationItemSchema).max(100),
123
- offset: z.number().int().min(0),
124
- limit: z.number().int().min(1).max(100),
125
- total: z.number().int().min(0),
126
- next_offset: z.number().int().min(0).nullable(),
119
+ items: z.array(correlationItemSchema),
127
120
  }),
128
- evidence_links: z.array(evidenceIdSchema).min(2).max(20_100),
121
+ evidence_links: z.array(evidenceIdSchema).min(2),
129
122
  limitations: z.array(z.string()),
130
123
  });
131
124
  const EXPECTED = {
132
125
  compare_artifacts: [
133
- "rea.artifact-comparison/v1",
126
+ "rea.artifact-comparison",
134
127
  "rea-artifact-comparison",
135
128
  "REA artifact comparison",
136
129
  ],
137
130
  compare_functions: [
138
- "rea.function-comparison/v1",
131
+ "rea.function-comparison",
139
132
  "rea-function-comparison",
140
133
  "REA function comparison",
141
134
  ],
142
135
  compare_process_captures: [
143
- ["rea.process-comparison/v3", "rea.process-comparison/v4"],
136
+ "rea.process-comparison",
144
137
  "rea-process",
145
138
  "REA deterministic process harness",
146
139
  ],
@@ -160,10 +153,7 @@ export const correlateStaticAndRuntime = (input) => {
160
153
  if (new Set(correlations.map(({ correlation_id: id }) => id)).size !==
161
154
  correlations.length)
162
155
  throw new TypeError("Static/runtime correlation rejects duplicate mappings");
163
- const page = correlations.slice(parsed.offset, parsed.offset + parsed.limit);
164
156
  const links = uniqueSorted(correlations.flatMap(({ evidence_links: evidenceLinks }) => evidenceLinks));
165
- if (links.length > 20_100)
166
- throw new TypeError("Static/runtime Evidence closure exceeds limit");
167
157
  const unresolved = correlations.filter(({ classification }) => classification === "unresolved_branch");
168
158
  const contradictions = correlations.filter(({ classification }) => classification === "contradiction");
169
159
  return staticRuntimeCorrelationResultSchema.parse({
@@ -180,13 +170,7 @@ export const correlateStaticAndRuntime = (input) => {
180
170
  unresolved: unresolved.length,
181
171
  },
182
172
  correlations: {
183
- items: page,
184
- offset: parsed.offset,
185
- limit: parsed.limit,
186
- total: correlations.length,
187
- next_offset: parsed.offset + page.length < correlations.length
188
- ? parsed.offset + page.length
189
- : null,
173
+ items: correlations,
190
174
  },
191
175
  evidence_links: links,
192
176
  limitations: [
@@ -253,11 +237,7 @@ const selectStatic = (evidence, selector) => {
253
237
  if (evidence.operation !== "compare_artifacts")
254
238
  throw new TypeError("Artifact selector requires artifact comparison Evidence");
255
239
  const result = artifactComparisonResultSchema.parse(evidence.normalized_result);
256
- if (result.changes.offset !== 0 ||
257
- result.changes.next_offset !== null ||
258
- result.changes.items.length !== result.changes.total)
259
- throw new TypeError("Static/runtime correlation requires complete artifact comparison pagination");
260
- const matches = result.changes.items.filter(({ logical_path: path }) => path === selector.logical_path);
240
+ const matches = result.changes.filter(({ logical_path: path }) => path === selector.logical_path);
261
241
  const match = matches.at(0);
262
242
  if (matches.length !== 1 || match === undefined)
263
243
  throw new TypeError("Artifact selector must resolve exactly one reported delta");
@@ -279,8 +259,7 @@ const parseStatic = (input) => {
279
259
  assertComparisonIdentity(evidence);
280
260
  if (evidence.operation === "compare_artifacts") {
281
261
  const result = artifactComparisonResultSchema.parse(evidence.normalized_result);
282
- assertCompleteArtifactResult(result);
283
- assertNestedLinks(evidence, result.changes.items.flatMap(({ evidence_links: links }) => links));
262
+ assertNestedLinks(evidence, result.changes.flatMap(({ evidence_links: links }) => links));
284
263
  }
285
264
  else {
286
265
  const result = functionComparisonResultSchema.parse(evidence.normalized_result);
@@ -334,21 +313,30 @@ const comparisonParameterLinks = (evidence) => {
334
313
  }
335
314
  const parameters = z
336
315
  .object({
337
- left_evidence_ids: z.array(evidenceIdSchema).min(1).max(100),
338
- right_evidence_ids: z.array(evidenceIdSchema).min(1).max(100),
316
+ left_evidence_id: evidenceIdSchema.optional(),
317
+ right_evidence_id: evidenceIdSchema.optional(),
318
+ left_evidence_ids: z.array(evidenceIdSchema).min(1).optional(),
319
+ right_evidence_ids: z.array(evidenceIdSchema).min(1).optional(),
339
320
  })
340
321
  .passthrough()
341
322
  .parse(evidence.parameters);
342
- return [...parameters.left_evidence_ids, ...parameters.right_evidence_ids];
323
+ const left = parameters.left_evidence_id === undefined
324
+ ? (parameters.left_evidence_ids ?? [])
325
+ : [parameters.left_evidence_id];
326
+ const right = parameters.right_evidence_id === undefined
327
+ ? (parameters.right_evidence_ids ?? [])
328
+ : [parameters.right_evidence_id];
329
+ if (left.length === 0 || right.length === 0)
330
+ throw new TypeError("Comparison Evidence omitted its source parameters");
331
+ return [...left, ...right];
343
332
  };
344
- const sameSet = (left, right) => left.length === right.length &&
345
- new Set(left).size === left.length &&
346
- left.every((item) => right.includes(item));
347
- const assertCompleteArtifactResult = (result) => {
348
- if (result.changes.offset !== 0 ||
349
- result.changes.next_offset !== null ||
350
- result.changes.items.length !== result.changes.total)
351
- throw new TypeError("Static/runtime correlation requires complete artifact comparison pagination");
333
+ const sameSet = (left, right) => {
334
+ if (left.length !== right.length)
335
+ return false;
336
+ const rightSet = new Set(right);
337
+ return (rightSet.size === right.length &&
338
+ new Set(left).size === left.length &&
339
+ left.every((item) => rightSet.has(item)));
352
340
  };
353
341
  const observedPattern = (staticStatus, runtimeStatus) => {
354
342
  if (staticStatus === "truncated" || runtimeStatus === "truncated")
@@ -1,16 +1,3 @@
1
- const MAX_SCANNED_SYMBOLS = 5_000;
2
- const MAX_RETURNED_SYMBOLS = 100;
3
- /** Select Swift class symbols using the legacy `_TtC` convention. */
4
- export const discoverSwiftClasses = (procedures, pattern) => {
5
- const classes = procedures
6
- .slice(0, MAX_SCANNED_SYMBOLS)
7
- .filter(({ name }) => name.includes("_TtC"))
8
- .filter(({ name }) => pattern.length === 0 || name.includes(pattern));
9
- return {
10
- count: classes.length,
11
- classes: classes.slice(0, MAX_RETURNED_SYMBOLS).map(toJsonEntry),
12
- };
13
- };
14
1
  /** Select and deduplicate Objective-C class labels. */
15
2
  export const discoverObjcClasses = (names, pattern) => {
16
3
  const classes = uniqueByName(names
@@ -18,7 +5,7 @@ export const discoverObjcClasses = (names, pattern) => {
18
5
  .filter(({ name }) => pattern.length === 0 || name.includes(pattern)));
19
6
  return {
20
7
  count: classes.length,
21
- classes: classes.slice(0, MAX_RETURNED_SYMBOLS).map(toJsonEntry),
8
+ classes: classes.map(toJsonEntry),
22
9
  };
23
10
  };
24
11
  /** Select and deduplicate Objective-C and Swift protocol labels. */
@@ -26,7 +13,7 @@ export const discoverObjcProtocols = (names) => {
26
13
  const protocols = uniqueByName(names.filter(({ name }) => name.includes("OBJC_PROTOCOL") || name.includes("_TtP")));
27
14
  return {
28
15
  count: protocols.length,
29
- protocols: protocols.slice(0, MAX_RETURNED_SYMBOLS).map(toJsonEntry),
16
+ protocols: protocols.map(toJsonEntry),
30
17
  };
31
18
  };
32
19
  const SWIFT_CATEGORIES = [
@@ -37,19 +24,23 @@ const SWIFT_CATEGORIES = [
37
24
  ["extensions", "_TtE"],
38
25
  ];
39
26
  /** Categorize deduplicated Swift mangled symbols. */
40
- export const categorizeSwiftTypes = (procedures) => {
27
+ export const categorizeSwiftTypes = (procedures, filter = {}) => {
41
28
  const groups = Object.fromEntries([...SWIFT_CATEGORIES.map(([category]) => category), "other"].map((category) => [category, []]));
42
29
  const seen = new Set();
43
- for (const entry of procedures.slice(0, MAX_SCANNED_SYMBOLS)) {
30
+ for (const entry of procedures) {
44
31
  if (!entry.name.includes("_Tt") || seen.has(entry.name))
45
32
  continue;
46
- seen.add(entry.name);
47
33
  const category = SWIFT_CATEGORIES.find(([, prefix]) => entry.name.startsWith(prefix))?.[0] ?? "other";
34
+ if (filter.category !== undefined && filter.category !== category)
35
+ continue;
36
+ if (filter.pattern !== undefined && !entry.name.includes(filter.pattern))
37
+ continue;
38
+ seen.add(entry.name);
48
39
  groups[category]?.push(entry);
49
40
  }
50
41
  const categories = Object.fromEntries(Object.entries(groups).map(([category, items]) => [
51
42
  category,
52
- { count: items.length, items: items.slice(0, 50).map(toJsonEntry) },
43
+ { count: items.length, items: items.map(toJsonEntry) },
53
44
  ]));
54
45
  return { total: seen.size, categories };
55
46
  };
@@ -0,0 +1,12 @@
1
+ /** Compare strings lexicographically by Unicode code point, independent of locale. */
2
+ export const compareUnicodeCodePoints = (left, right) => {
3
+ const leftPoints = [...left].map((value) => value.codePointAt(0) ?? 0);
4
+ const rightPoints = [...right].map((value) => value.codePointAt(0) ?? 0);
5
+ const length = Math.min(leftPoints.length, rightPoints.length);
6
+ for (let index = 0; index < length; index += 1) {
7
+ const difference = (leftPoints[index] ?? 0) - (rightPoints[index] ?? 0);
8
+ if (difference !== 0)
9
+ return difference;
10
+ }
11
+ return leftPoints.length - rightPoints.length;
12
+ };
@@ -1,56 +1,9 @@
1
1
  import { z } from "zod";
2
2
  import { inspectWebPageWithSourceInputSchema } from "./browserObservation.js";
3
3
  import { webTextArtifactSchema } from "./webContentArtifact.js";
4
- const webBundleLimitsSchema = z.object({
5
- max_findings: z.number().int().min(1).max(10_000).default(1_000),
6
- max_ast_nodes: z.number().int().min(1).max(2_000_000).default(250_000),
7
- max_source_maps: z.number().int().min(1).max(1_000).default(100),
8
- max_source_map_bytes: z
9
- .number()
10
- .int()
11
- .min(1)
12
- .max(16 * 1_024 * 1_024)
13
- .default(4 * 1_024 * 1_024),
14
- max_total_source_map_bytes: z
15
- .number()
16
- .int()
17
- .min(1)
18
- .max(64 * 1_024 * 1_024)
19
- .default(16 * 1_024 * 1_024),
20
- max_source_map_mappings: z.number().int().min(1).max(100_000).default(10_000),
21
- max_original_sources: z.number().int().min(1).max(20_000).default(2_000),
22
- });
23
- /** Capture-and-analyze input with separate source and source-map approvals. */
24
- const analyzeWebBundleFactsSchema = inspectWebPageWithSourceInputSchema.safeExtend({
25
- analysis_limits: webBundleLimitsSchema.default({
26
- max_findings: 1_000,
27
- max_ast_nodes: 250_000,
28
- max_source_maps: 100,
29
- max_source_map_bytes: 4 * 1_024 * 1_024,
30
- max_total_source_map_bytes: 16 * 1_024 * 1_024,
31
- max_source_map_mappings: 10_000,
32
- max_original_sources: 2_000,
33
- }),
34
- });
35
- export const analyzeWebBundleInputSchema = z
36
- .union([
37
- analyzeWebBundleFactsSchema.safeExtend({
38
- fetch_source_maps: z.literal(false).default(false),
39
- source_map_fetch_approved: z.literal(false).default(false),
40
- }),
41
- analyzeWebBundleFactsSchema.safeExtend({
42
- fetch_source_maps: z.literal(true),
43
- source_map_fetch_approved: z.literal(true),
44
- }),
45
- ])
46
- .superRefine((input, context) => {
47
- if (input.analysis_limits.max_source_map_bytes >
48
- input.analysis_limits.max_total_source_map_bytes)
49
- context.addIssue({
50
- code: "custom",
51
- path: ["analysis_limits", "max_source_map_bytes"],
52
- message: "Per-map source-map byte limit cannot exceed the aggregate limit",
53
- });
4
+ /** Capture-and-analyze input with optional source-map fetching. */
5
+ export const analyzeWebBundleInputSchema = inspectWebPageWithSourceInputSchema.safeExtend({
6
+ fetch_source_maps: z.boolean().default(false),
54
7
  });
55
8
  const sourceLocationSchema = z.object({
56
9
  script_key: z.string(),
@@ -69,72 +22,91 @@ const findingSchema = z.object({
69
22
  mechanism: z.string(),
70
23
  location: sourceLocationSchema,
71
24
  });
72
- const sourceMapSchema = z.object({
73
- script_key: z.string(),
74
- declared_url: z.string(),
75
- status: z.enum([
76
- "included",
77
- "fetch_failed",
78
- "invalid",
79
- "policy_filtered",
80
- "truncated",
81
- ]),
25
+ const originalSourceSchema = z.object({
26
+ source: z.string(),
82
27
  artifact: webTextArtifactSchema.nullable(),
83
- original_sources: z.array(z.object({
84
- source: z.string(),
85
- artifact: webTextArtifactSchema.nullable(),
86
- })),
87
- original_module_edges: z.array(z.object({
88
- from_source: z.string(),
89
- kind: z.enum(["static_import", "dynamic_import", "require"]),
90
- specifier: z.string(),
91
- resolved_source: z.string().nullable(),
92
- })),
93
- mappings: z.array(z.object({
94
- generated_line: z.number().int().min(1),
95
- generated_column: z.number().int().min(0),
96
- source: z.string(),
97
- original_line: z.number().int().min(1),
98
- original_column: z.number().int().min(0),
99
- name: z.string().nullable(),
100
- })),
101
- limitation: z.string().nullable(),
102
28
  });
29
+ const originalModuleEdgeSchema = z.object({
30
+ from_source: z.string(),
31
+ kind: z.enum(["static_import", "dynamic_import", "require"]),
32
+ specifier: z.string(),
33
+ resolved_source: z.string().nullable(),
34
+ });
35
+ const sourceMapMappingSchema = z.object({
36
+ generated_line: z.number().int().min(1),
37
+ generated_column: z.number().int().min(0),
38
+ source: z.string(),
39
+ original_line: z.number().int().min(1),
40
+ original_column: z.number().int().min(0),
41
+ name: z.string().nullable(),
42
+ });
43
+ const sourceMapContextShape = {
44
+ script_key: z.string(),
45
+ declared_url: z.string(),
46
+ };
47
+ const parsedSourceMapShape = {
48
+ artifact: webTextArtifactSchema,
49
+ original_sources: z.array(originalSourceSchema),
50
+ original_module_edges: z.array(originalModuleEdgeSchema),
51
+ mappings: z.array(sourceMapMappingSchema),
52
+ };
53
+ const sourceMapSchema = z.union([
54
+ z.object({
55
+ ...sourceMapContextShape,
56
+ ...parsedSourceMapShape,
57
+ status: z.literal("included"),
58
+ limitation: z.null(),
59
+ }),
60
+ z.object({
61
+ ...sourceMapContextShape,
62
+ ...parsedSourceMapShape,
63
+ status: z.enum(["fetch_failed", "invalid", "policy_filtered"]),
64
+ artifact: z.null(),
65
+ original_sources: z.tuple([]),
66
+ original_module_edges: z.tuple([]),
67
+ mappings: z.tuple([]),
68
+ limitation: z.string(),
69
+ }),
70
+ ]);
103
71
  const webTextArtifactSummarySchema = z.object({
104
- uri: z.string().regex(/^rea:\/\/web-content\/sha256\/[a-f0-9]{64}$/u),
105
72
  sha256: z.string().regex(/^[a-f0-9]{64}$/u),
106
73
  bytes: z.number().int().min(0),
107
- media_type: z.string().min(1).max(256),
74
+ media_type: z.string().min(1),
108
75
  charset: z.literal("utf-8"),
109
76
  text_available: z.literal(true),
110
77
  });
111
- const sourceMapsSchema = z
78
+ export const webSourceMapsSchema = z
112
79
  .object({
113
- status: z.enum([
114
- "not_requested",
115
- "included",
116
- "partial",
117
- "unavailable",
118
- "truncated",
119
- ]),
80
+ status: z.enum(["not_requested", "included", "partial", "unavailable"]),
120
81
  requested: z.number().int().min(0),
121
82
  processed: z.number().int().min(0),
122
- dropped: z.number().int().min(0),
123
- dropped_script_keys: z.array(z.string()),
124
83
  items: z.array(sourceMapSchema),
125
84
  })
126
85
  .superRefine((sourceMaps, context) => {
127
- if (sourceMaps.requested !== sourceMaps.processed + sourceMaps.dropped ||
128
- sourceMaps.processed !== sourceMaps.items.length ||
129
- sourceMaps.dropped !== sourceMaps.dropped_script_keys.length)
86
+ if (sourceMaps.requested !== sourceMaps.processed ||
87
+ sourceMaps.processed !== sourceMaps.items.length)
130
88
  context.addIssue({
131
89
  code: "custom",
132
90
  message: "Source-map coverage counts are inconsistent",
133
91
  });
92
+ const statuses = sourceMaps.items.map(({ status }) => status);
93
+ const included = statuses.filter((status) => status === "included").length;
94
+ const allowedStatuses = sourceMaps.items.length === 0
95
+ ? ["not_requested", "unavailable"]
96
+ : included === sourceMaps.items.length
97
+ ? ["included"]
98
+ : included > 0
99
+ ? ["partial"]
100
+ : ["unavailable"];
101
+ if (!allowedStatuses.includes(sourceMaps.status))
102
+ context.addIssue({
103
+ code: "custom",
104
+ message: "Source-map status contradicts retained coverage",
105
+ path: ["status"],
106
+ });
134
107
  });
135
- /** Provider-neutral result of bounded JavaScript bundle reverse engineering. */
108
+ /** Provider-neutral result of JavaScript bundle reverse engineering. */
136
109
  export const webBundleAnalysisSchema = z.object({
137
- schema_version: z.literal(1),
138
110
  capture: z.object({
139
111
  target_url: z.string(),
140
112
  scripts_observed: z.number().int().min(0),
@@ -171,7 +143,7 @@ export const webBundleAnalysisSchema = z.object({
171
143
  trust: z.literal("page-declared-untrusted"),
172
144
  location: sourceLocationSchema,
173
145
  })),
174
- source_maps: sourceMapsSchema,
146
+ source_maps: webSourceMapsSchema,
175
147
  }),
176
148
  inferences: z.array(z.object({
177
149
  kind: z.enum(["vendor_fingerprint", "route_framework", "bundle_runtime"]),
@@ -185,11 +157,10 @@ export const webBundleAnalysisSchema = z.object({
185
157
  affected_script_keys: z.array(z.string()),
186
158
  })),
187
159
  completeness: z.object({
188
- status: z.enum(["complete_within_limits", "truncated", "partial"]),
160
+ status: z.enum(["complete", "partial"]),
189
161
  parsed_scripts: z.number().int().min(0),
190
162
  parse_failures: z.number().int().min(0),
191
163
  visited_ast_nodes: z.number().int().min(0),
192
- dropped_findings: z.number().int().min(0),
193
164
  }),
194
165
  limitations: z.array(z.string()),
195
166
  });