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,27 +1,17 @@
1
1
  import { z } from "zod";
2
2
  import { browserAllowedOriginsSchema, browserEndpointSchema, browserOriginSchema, } from "./browserObservation.js";
3
- export const BROWSER_SCENARIO_LIMITS = {
4
- actions: 128,
5
- secrets: 64,
6
- storageEntries: 512,
7
- replayRoutes: 256,
8
- durationMs: 300_000,
9
- actionTimeoutMs: 60_000,
10
- };
11
3
  export const scenarioIdentifierSchema = z
12
4
  .string()
13
- .regex(/^[A-Za-z][A-Za-z0-9._-]{0,63}$/u);
5
+ .regex(/^[A-Za-z][A-Za-z0-9._-]*$/u);
14
6
  const absoluteExecutablePathSchema = z
15
7
  .string()
16
8
  .min(1)
17
- .max(4_096)
18
9
  .refine((value) => value.startsWith("/") ||
19
10
  /^[A-Za-z]:[\\/]/u.test(value) ||
20
11
  value.startsWith("\\\\"), "Expected an absolute browser executable path");
21
12
  const browserScenarioBaseUrlSchema = z
22
13
  .string()
23
14
  .min(1)
24
- .max(65_536)
25
15
  .transform((value, context) => {
26
16
  let url;
27
17
  try {
@@ -47,7 +37,7 @@ const browserScenarioBaseUrlSchema = z
47
37
  export const browserScenarioValueSchema = z.discriminatedUnion("source", [
48
38
  z.strictObject({
49
39
  source: z.literal("literal"),
50
- value: z.string().max(65_536),
40
+ value: z.string(),
51
41
  classification: z.literal("public"),
52
42
  }),
53
43
  z.strictObject({
@@ -56,13 +46,13 @@ export const browserScenarioValueSchema = z.discriminatedUnion("source", [
56
46
  }),
57
47
  ]);
58
48
  const queryEntrySchema = z.strictObject({
59
- name: z.string().min(1).max(256),
49
+ name: z.string().min(1),
60
50
  value: browserScenarioValueSchema,
61
51
  });
62
52
  /** URL whose values remain explicit public literals or declared secret references. */
63
53
  export const browserScenarioUrlSchema = z.strictObject({
64
54
  url: browserScenarioBaseUrlSchema,
65
- query: z.array(queryEntrySchema).max(64).default([]),
55
+ query: z.array(queryEntrySchema).default([]),
66
56
  });
67
57
  export const browserScenarioBrowserSchema = z.discriminatedUnion("mode", [
68
58
  z.strictObject({
@@ -75,35 +65,47 @@ export const browserScenarioBrowserSchema = z.discriminatedUnion("mode", [
75
65
  z.strictObject({
76
66
  mode: z.literal("connect"),
77
67
  cdp_endpoint: browserEndpointSchema,
78
- target_id: z.string().trim().min(1).max(256),
68
+ target_id: z.string().trim().min(1),
79
69
  ownership: z.literal("external"),
80
70
  cleanup: z.literal("disconnect-only"),
81
71
  }),
82
72
  ]);
83
- export const browserScenarioEnvironmentSchema = z.strictObject({
84
- viewport: z.strictObject({
85
- width: z.number().int().min(320).max(7_680),
86
- height: z.number().int().min(240).max(4_320),
87
- device_scale_factor: z.number().min(0.5).max(4).default(1),
88
- }),
73
+ export const browserScenarioEnvironmentSchema = z
74
+ .strictObject({
75
+ viewport: z
76
+ .strictObject({
77
+ width: z.number().int().positive().default(1_280),
78
+ height: z.number().int().positive().default(720),
79
+ device_scale_factor: z.number().positive().default(1),
80
+ })
81
+ .default({ width: 1_280, height: 720, device_scale_factor: 1 }),
89
82
  locale: z
90
83
  .string()
91
84
  .min(2)
92
- .max(64)
93
- .regex(/^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$/u),
85
+ .regex(/^[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*$/u)
86
+ .default("en-US"),
94
87
  timezone: z
95
88
  .string()
96
89
  .min(1)
97
- .max(128)
98
- .regex(/^[A-Za-z0-9_+-]+(?:\/[A-Za-z0-9_+-]+)*$/u),
99
- color_scheme: z.enum(["light", "dark", "no-preference"]),
100
- reduced_motion: z.enum(["reduce", "no-preference"]),
101
- service_workers: z.literal("block"),
102
- });
90
+ .regex(/^[A-Za-z0-9_+-]+(?:\/[A-Za-z0-9_+-]+)*$/u)
91
+ .default("UTC"),
92
+ color_scheme: z.enum(["light", "dark", "no-preference"]).default("light"),
93
+ reduced_motion: z.enum(["reduce", "no-preference"]).default("reduce"),
94
+ service_workers: z.literal("block").default("block"),
95
+ })
96
+ .default({
97
+ viewport: { width: 1_280, height: 720, device_scale_factor: 1 },
98
+ locale: "en-US",
99
+ timezone: "UTC",
100
+ color_scheme: "light",
101
+ reduced_motion: "reduce",
102
+ service_workers: "block",
103
+ })
104
+ .describe("Optional deterministic browser settings. Defaults to 1280x720, en-US, UTC, light mode, reduced motion, and blocked service workers.");
103
105
  const locatorSchema = z.discriminatedUnion("kind", [
104
106
  z.strictObject({
105
107
  kind: z.literal("test_id"),
106
- value: z.string().min(1).max(512),
108
+ value: z.string().min(1),
107
109
  }),
108
110
  z.strictObject({
109
111
  kind: z.literal("role"),
@@ -123,13 +125,12 @@ const locatorSchema = z.discriminatedUnion("kind", [
123
125
  "tab",
124
126
  "textbox",
125
127
  ]),
126
- name: z.string().min(1).max(1_024),
128
+ name: z.string().min(1),
127
129
  exact: z.literal(true),
128
130
  }),
129
131
  z.strictObject({
130
132
  kind: z.literal("css"),
131
- selector: z.string().min(1).max(4_096),
132
- approved: z.literal(true),
133
+ selector: z.string().min(1),
133
134
  }),
134
135
  ]);
135
136
  const stepBase = {
@@ -138,8 +139,8 @@ const stepBase = {
138
139
  .number()
139
140
  .int()
140
141
  .min(1)
141
- .max(BROWSER_SCENARIO_LIMITS.actionTimeoutMs)
142
- .optional(),
142
+ .optional()
143
+ .describe("Optional action deadline in milliseconds; omitted means wait until completion or request cancellation."),
143
144
  };
144
145
  export const browserScenarioActionSchema = z.discriminatedUnion("action", [
145
146
  z.strictObject({
@@ -153,7 +154,7 @@ export const browserScenarioActionSchema = z.discriminatedUnion("action", [
153
154
  action: z.literal("click"),
154
155
  locator: locatorSchema,
155
156
  button: z.enum(["left", "middle", "right"]).default("left"),
156
- click_count: z.number().int().min(1).max(3).default(1),
157
+ click_count: z.number().int().positive().default(1),
157
158
  }),
158
159
  z.strictObject({
159
160
  ...stepBase,
@@ -165,7 +166,7 @@ export const browserScenarioActionSchema = z.discriminatedUnion("action", [
165
166
  ...stepBase,
166
167
  action: z.literal("press"),
167
168
  locator: locatorSchema,
168
- key: z.string().min(1).max(64),
169
+ key: z.string().min(1),
169
170
  }),
170
171
  z.strictObject({
171
172
  ...stepBase,
@@ -191,44 +192,43 @@ export const browserScenarioActionSchema = z.discriminatedUnion("action", [
191
192
  .number()
192
193
  .int()
193
194
  .min(1)
194
- .max(BROWSER_SCENARIO_LIMITS.actionTimeoutMs),
195
+ .describe("Wait this many milliseconds; the wait ends early on cancellation."),
195
196
  }),
196
197
  ]);
197
198
  const storageEntrySchema = z.strictObject({
198
- name: z.string().min(1).max(1_024),
199
+ name: z.string().min(1),
199
200
  value: browserScenarioValueSchema,
200
201
  });
201
- export const browserScenarioStorageSchema = z.strictObject({
202
+ export const browserScenarioStorageSchema = z
203
+ .strictObject({
202
204
  cookies: z
203
205
  .array(z.strictObject({
204
- name: z.string().min(1).max(1_024),
206
+ name: z.string().min(1),
205
207
  value: browserScenarioValueSchema,
206
208
  destination: browserScenarioUrlSchema,
207
209
  http_only: z.boolean(),
208
210
  secure: z.boolean(),
209
211
  same_site: z.enum(["Strict", "Lax", "None"]),
210
212
  }))
211
- .max(128)
212
213
  .default([]),
213
214
  local_storage: z
214
215
  .array(z.strictObject({
215
216
  origin: browserOriginSchema,
216
- entries: z.array(storageEntrySchema).max(128),
217
+ entries: z.array(storageEntrySchema),
217
218
  }))
218
- .max(32)
219
219
  .default([]),
220
220
  session_storage: z
221
221
  .array(z.strictObject({
222
222
  origin: browserOriginSchema,
223
- entries: z.array(storageEntrySchema).max(128),
223
+ entries: z.array(storageEntrySchema),
224
224
  }))
225
- .max(32)
226
225
  .default([]),
227
- });
226
+ })
227
+ .default({ cookies: [], local_storage: [], session_storage: [] })
228
+ .describe("Optional initial cookies, local storage, or session storage. Defaults to empty; every supplied value and origin must be explicitly declared and approved.");
228
229
  const headerNameSchema = z
229
230
  .string()
230
231
  .min(1)
231
- .max(256)
232
232
  .regex(/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/u)
233
233
  .transform((value) => value.toLowerCase());
234
234
  const replayHeaderSchema = z.strictObject({
@@ -239,7 +239,7 @@ const replayResponseSchema = z.discriminatedUnion("kind", [
239
239
  z.strictObject({
240
240
  kind: z.literal("response"),
241
241
  status: z.number().int().min(100).max(599),
242
- headers: z.array(replayHeaderSchema).max(64).default([]),
242
+ headers: z.array(replayHeaderSchema).default([]),
243
243
  body: browserScenarioValueSchema.optional(),
244
244
  }),
245
245
  z.strictObject({
@@ -260,20 +260,20 @@ const replayRouteSchema = z.strictObject({
260
260
  request: browserScenarioUrlSchema,
261
261
  response: replayResponseSchema,
262
262
  });
263
- export const browserScenarioRequestReplaySchema = z.discriminatedUnion("mode", [
263
+ export const browserScenarioRequestReplaySchema = z
264
+ .discriminatedUnion("mode", [
264
265
  z.strictObject({ mode: z.literal("disabled") }),
265
266
  z.strictObject({
266
267
  mode: z.literal("exact"),
267
268
  unmatched: z.enum(["abort", "passthrough-approved-origins"]),
268
- routes: z
269
- .array(replayRouteSchema)
270
- .min(1)
271
- .max(BROWSER_SCENARIO_LIMITS.replayRoutes),
269
+ routes: z.array(replayRouteSchema).min(1),
272
270
  }),
273
- ]);
271
+ ])
272
+ .default({ mode: "disabled" })
273
+ .describe("Optional exact request replay. Defaults to disabled; replay routes and unmatched-request behavior must be explicitly declared when enabled.");
274
274
  export const browserScenarioSecretSchema = z.strictObject({
275
275
  secret_id: scenarioIdentifierSchema,
276
- environment_variable: z.string().regex(/^[A-Z_][A-Z0-9_]{0,127}$/u),
276
+ environment_variable: z.string().regex(/^[A-Z_][A-Z0-9_]*$/u),
277
277
  purpose: z.enum(["input", "storage", "request-replay"]),
278
278
  redaction: z.literal("replace-with-secret-reference"),
279
279
  });
@@ -283,20 +283,20 @@ const REQUIRED_REDACTED_HEADERS = [
283
283
  "proxy-authorization",
284
284
  "set-cookie",
285
285
  ];
286
- const normalizedNames = (maximum) => z
286
+ const normalizedNames = () => z
287
287
  .array(z
288
288
  .string()
289
289
  .trim()
290
290
  .min(1)
291
- .max(256)
292
291
  .transform((value) => value.toLowerCase()))
293
- .max(maximum)
294
292
  .transform((values) => [...new Set(values)].sort());
295
293
  export const browserScenarioRedactionSchema = z
296
294
  .strictObject({
297
- secret_values: z.literal("replace-with-secret-reference"),
298
- query_parameter_names: normalizedNames(128).default([]),
299
- header_names: normalizedNames(128).default([...REQUIRED_REDACTED_HEADERS]),
295
+ secret_values: z
296
+ .literal("replace-with-secret-reference")
297
+ .default("replace-with-secret-reference"),
298
+ query_parameter_names: normalizedNames().default([]),
299
+ header_names: normalizedNames().default([...REQUIRED_REDACTED_HEADERS]),
300
300
  })
301
301
  .superRefine(({ header_names: names }, context) => {
302
302
  for (const required of REQUIRED_REDACTED_HEADERS)
@@ -306,7 +306,13 @@ export const browserScenarioRedactionSchema = z
306
306
  path: ["header_names"],
307
307
  message: `Required credential header ${required} must be redacted`,
308
308
  });
309
- });
309
+ })
310
+ .default({
311
+ secret_values: "replace-with-secret-reference",
312
+ query_parameter_names: [],
313
+ header_names: [...REQUIRED_REDACTED_HEADERS],
314
+ })
315
+ .describe("Redaction policy. Secret values and credential headers are always redacted; list query parameter names when a secret is used in a URL.");
310
316
  const snapshotKindSchema = z.enum([
311
317
  "screenshot",
312
318
  "dom",
@@ -315,10 +321,12 @@ const snapshotKindSchema = z.enum([
315
321
  "history",
316
322
  "storage",
317
323
  ]);
318
- export const browserScenarioCaptureSchema = z.strictObject({
319
- after_each_step: z.array(snapshotKindSchema).max(6),
320
- at_end: z.array(snapshotKindSchema).max(6),
321
- events: z.array(z.enum([
324
+ export const browserScenarioCaptureSchema = z
325
+ .strictObject({
326
+ after_each_step: z.array(snapshotKindSchema).default([]),
327
+ at_end: z.array(snapshotKindSchema).default(["url"]),
328
+ events: z
329
+ .array(z.enum([
322
330
  "console",
323
331
  "page-errors",
324
332
  "network",
@@ -327,46 +335,9 @@ export const browserScenarioCaptureSchema = z.strictObject({
327
335
  "workers",
328
336
  "popups",
329
337
  "downloads",
330
- ])),
331
- });
332
- export const browserScenarioCaptureLimitsSchema = z.strictObject({
333
- max_duration_ms: z
334
- .number()
335
- .int()
336
- .min(100)
337
- .max(BROWSER_SCENARIO_LIMITS.durationMs),
338
- action_timeout_ms: z
339
- .number()
340
- .int()
341
- .min(1)
342
- .max(BROWSER_SCENARIO_LIMITS.actionTimeoutMs),
343
- navigation_timeout_ms: z
344
- .number()
345
- .int()
346
- .min(1)
347
- .max(BROWSER_SCENARIO_LIMITS.actionTimeoutMs),
348
- max_events: z.number().int().min(1).max(100_000),
349
- max_frames: z.number().int().min(1).max(1_000),
350
- max_workers: z.number().int().min(0).max(1_000),
351
- max_popups: z.number().int().min(0).max(100),
352
- max_websockets: z.number().int().min(0).max(10_000),
353
- max_dom_nodes: z.number().int().min(1).max(100_000),
354
- max_accessibility_nodes: z.number().int().min(1).max(100_000),
355
- max_screenshots: z.number().int().min(0).max(256),
356
- max_screenshot_bytes: z
357
- .number()
358
- .int()
359
- .min(1)
360
- .max(8 * 1_024 * 1_024),
361
- max_storage_entries: z
362
- .number()
363
- .int()
364
- .min(0)
365
- .max(BROWSER_SCENARIO_LIMITS.storageEntries),
366
- max_total_metadata_bytes: z
367
- .number()
368
- .int()
369
- .min(1_024)
370
- .max(64 * 1_024 * 1_024),
371
- });
338
+ ]))
339
+ .default([]),
340
+ })
341
+ .default({ after_each_step: [], at_end: ["url"], events: [] })
342
+ .describe("Optional retained artifacts and event families. Defaults to only a final sanitized URL; request screenshots, DOM, accessibility, history, storage, and event capture explicitly.");
372
343
  export const browserScenarioAllowedOriginsSchema = browserAllowedOriginsSchema;
@@ -1,14 +1,12 @@
1
1
  import { z } from "zod";
2
2
  import { browserAllowedOriginsSchema, browserEndpointSchema, } from "./browserObservation.js";
3
3
  import { browserCompletenessSchema } from "./browserCompleteness.js";
4
- /** Input for a bounded, navigation-aware browser observation window. */
5
- export const observeWebSessionInputSchema = z.object({
4
+ /** Input for a navigation-aware browser observation window. */
5
+ export const observeWebSessionInputSchema = z.strictObject({
6
6
  cdp_endpoint: browserEndpointSchema,
7
7
  allowed_origins: browserAllowedOriginsSchema,
8
- target_id: z.string().trim().min(1).max(256),
9
- approved: z.literal(true),
10
- observation_ms: z.number().int().min(1).max(60_000).default(10_000),
11
- max_timeline_events: z.number().int().min(1).max(20_000).default(2_000),
8
+ target_id: z.string().trim().min(1),
9
+ observation_ms: z.number().int().min(1).default(10_000),
12
10
  });
13
11
  const timelineEventSchema = z.object({
14
12
  sequence: z.number().int().min(1),
@@ -34,7 +32,6 @@ const timelineEventSchema = z.object({
34
32
  });
35
33
  /** Navigation-aware session result for external user actions. */
36
34
  export const webObservationSessionSchema = z.object({
37
- schema_version: z.literal(1),
38
35
  browser: z.object({
39
36
  product: z.string(),
40
37
  protocol_version: z.string(),
@@ -11,19 +11,16 @@ const classificationSchema = z.enum([
11
11
  "history_advanced",
12
12
  "history_diverged",
13
13
  ]);
14
- /** Strict bounded input for canonical Evidence bundle comparison. */
14
+ /** Strict input for canonical Evidence bundle comparison. */
15
15
  export const bundleComparisonInputSchema = z.strictObject({
16
- left_bundle_path: z.string().min(1).max(4_096),
17
- right_bundle_path: z.string().min(1).max(4_096),
16
+ left_bundle_path: z.string().min(1),
17
+ right_bundle_path: z.string().min(1),
18
18
  record_pairs: z
19
19
  .array(z.object({
20
20
  left_evidence_id: evidenceIdSchema,
21
21
  right_evidence_id: evidenceIdSchema,
22
22
  }))
23
- .max(500)
24
23
  .default([]),
25
- offset: z.number().int().min(0).default(0),
26
- limit: z.number().int().min(1).max(500).default(100),
27
24
  });
28
25
  const bundleChangeSchema = z.object({
29
26
  entity: z.enum(["evidence", "residual_unknown"]),
@@ -57,27 +54,18 @@ export const bundleComparisonResultSchema = z.object({
57
54
  unknowns_diverged: z.number().int().min(0),
58
55
  unresolved: z.number().int().min(0),
59
56
  }),
60
- changes: z.object({
61
- items: z.array(bundleChangeSchema).max(500),
62
- offset: z.number().int().min(0),
63
- limit: z.number().int().min(1).max(500),
64
- total: z.number().int().min(0),
65
- next_offset: z.number().int().min(0).nullable(),
66
- }),
57
+ changes: z.array(bundleChangeSchema),
67
58
  limitations: z.array(z.string()),
68
59
  });
69
- const MAX_ENTITIES = 100_000;
70
60
  /** Compare canonical bundle membership and only explicitly paired observations. */
71
- export const compareBundles = (...[leftInput, rightInput, recordPairs, offset, limit]) => {
61
+ export const compareBundles = (leftInput, rightInput, recordPairs = []) => {
72
62
  const left = parseEvidenceBundle(leftInput);
73
63
  const right = parseEvidenceBundle(rightInput);
74
- enforceBounds(left, right);
75
64
  const leftDigest = bundleDigest(left);
76
65
  const rightDigest = bundleDigest(right);
77
66
  const recordResult = compareRecords(left, right, recordPairs);
78
67
  const unknownResult = compareUnknowns(left, right);
79
68
  const changes = [...recordResult.changes, ...unknownResult.changes].sort(compareChanges);
80
- const page = changes.slice(offset, offset + limit);
81
69
  const unresolved = changes.filter(({ conclusion_kind: kind }) => kind !== "observed_change").length;
82
70
  return bundleComparisonResultSchema.parse({
83
71
  status: leftDigest === rightDigest && changes.length === 0
@@ -92,13 +80,7 @@ export const compareBundles = (...[leftInput, rightInput, recordPairs, offset, l
92
80
  ...unknownResult.summary,
93
81
  unresolved,
94
82
  },
95
- changes: {
96
- items: page,
97
- offset,
98
- limit,
99
- total: changes.length,
100
- next_offset: offset + page.length < changes.length ? offset + page.length : null,
101
- },
83
+ changes,
102
84
  limitations: changes.some(({ limitations }) => limitations.length > 0)
103
85
  ? [
104
86
  "One-sided membership proves only bundle inclusion or omission, not behavioral absence.",
@@ -237,14 +219,6 @@ const historyEvidenceIds = (history) => [
237
219
  ...(item.resolution?.evidence_ids ?? []),
238
220
  ])),
239
221
  ].sort(ascii);
240
- const enforceBounds = (left, right) => {
241
- const total = left.records.length +
242
- right.records.length +
243
- left.unknowns.length +
244
- right.unknowns.length;
245
- if (total > MAX_ENTITIES)
246
- throw new TypeError(`Bundle comparison exceeds ${MAX_ENTITIES} entities`);
247
- };
248
222
  const bundleDigest = (bundle) => createHash("sha256").update(serializeEvidenceBundle(bundle)).digest("hex");
249
223
  const same = (left, right) => left.length === right.length &&
250
224
  left.every((value, index) => value === right[index]);
@@ -58,7 +58,7 @@ export const bytecodeAnalysisSchema = z.strictObject({
58
58
  /** Bytecode family. */
59
59
  family: bytecodeFamilySchema,
60
60
  /** All discovered artifacts. */
61
- artifacts: z.array(bytecodeArtifactSchema).min(0).max(10_000),
61
+ artifacts: z.array(bytecodeArtifactSchema),
62
62
  /** Total symbols across all artifacts. */
63
63
  total_symbols: z.number().int().nonnegative(),
64
64
  /** Symbols classified as application code. */
@@ -109,71 +109,70 @@ export function detectArtifactFormat(path) {
109
109
  return "zipapp";
110
110
  return null;
111
111
  }
112
+ const STANDARD_LIBRARY_PATH_MARKERS = [
113
+ "/stdlib/",
114
+ "/site-packages/",
115
+ "java/",
116
+ "javax/",
117
+ "sun/",
118
+ ];
119
+ const STANDARD_LIBRARY_SYMBOL_MARKERS = ["java.", "javax.", "sun.", "__"];
120
+ const GENERATED_PATH_MARKERS = [
121
+ "/generated/",
122
+ "_generated",
123
+ "/build/",
124
+ "/target/",
125
+ "/dist-packages/",
126
+ "/__pycache__/",
127
+ ];
128
+ const GENERATED_SYMBOL_MARKERS = ["Generated", "_generated"];
129
+ const VENDORED_PATH_MARKERS = [
130
+ "/vendor/",
131
+ "/vendored/",
132
+ "/third_party/",
133
+ "/3rdparty/",
134
+ "/node_modules/",
135
+ ];
136
+ const BUNDLED_PATH_MARKERS = ["/bundle/", "/bundled/", ".jar!", ".war!"];
137
+ const includesAny = (value, markers) => markers.some((marker) => value.includes(marker));
138
+ const startsWithAny = (value, markers) => markers.some((marker) => value.startsWith(marker));
112
139
  /** Classify bytecode symbol provenance. */
113
140
  export function classifyProvenance(path, symbolName) {
114
141
  const lower = path.toLowerCase();
115
- // Standard library paths
116
- if (lower.includes("/stdlib/") ||
117
- lower.includes("/site-packages/") ||
118
- lower.includes("java/") ||
119
- lower.includes("javax/") ||
120
- lower.includes("sun/") ||
121
- symbolName.startsWith("java.") ||
122
- symbolName.startsWith("javax.") ||
123
- symbolName.startsWith("sun.") ||
124
- symbolName.startsWith("__")) {
142
+ if (includesAny(lower, STANDARD_LIBRARY_PATH_MARKERS) ||
143
+ startsWithAny(symbolName, STANDARD_LIBRARY_SYMBOL_MARKERS))
125
144
  return "standard_library";
126
- }
127
- // Generated code
128
- if (lower.includes("/generated/") ||
129
- lower.includes("_generated") ||
130
- lower.includes("/build/") ||
131
- lower.includes("/target/") ||
132
- lower.includes("/dist-packages/") ||
133
- lower.includes("/__pycache__/") ||
134
- symbolName.includes("Generated") ||
135
- symbolName.includes("_generated")) {
145
+ if (includesAny(lower, GENERATED_PATH_MARKERS) ||
146
+ includesAny(symbolName, GENERATED_SYMBOL_MARKERS))
136
147
  return "generated";
137
- }
138
- // Vendored code
139
- if (lower.includes("/vendor/") ||
140
- lower.includes("/vendored/") ||
141
- lower.includes("/third_party/") ||
142
- lower.includes("/3rdparty/") ||
143
- lower.includes("/node_modules/") ||
144
- lower.includes("/vendor/")) {
148
+ if (includesAny(lower, VENDORED_PATH_MARKERS))
145
149
  return "vendored";
146
- }
147
- // Bundled code
148
- if (lower.includes("/bundle/") ||
149
- lower.includes("/bundled/") ||
150
- lower.includes(".jar!") ||
151
- lower.includes(".war!")) {
150
+ if (includesAny(lower, BUNDLED_PATH_MARKERS))
152
151
  return "bundled";
153
- }
154
152
  return "application";
155
153
  }
156
154
  /** Analyze a set of bytecode artifacts and produce a summary. */
157
155
  export function analyzeBytecodeArtifacts(artifacts, family) {
158
- const applicationSymbols = artifacts
159
- .flatMap((a) => a.symbols)
160
- .filter((s) => s.provenance === "application").length;
161
- const generatedSymbols = artifacts
162
- .flatMap((a) => a.symbols)
163
- .filter((s) => s.provenance === "generated").length;
164
- const vendoredSymbols = artifacts
165
- .flatMap((a) => a.symbols)
166
- .filter((s) => s.provenance === "vendored").length;
167
- const standardLibrarySymbols = artifacts
168
- .flatMap((a) => a.symbols)
169
- .filter((s) => s.provenance === "standard_library").length;
156
+ const totals = artifacts.reduce((counts, artifact) => {
157
+ counts.total += artifact.symbols.length;
158
+ for (const symbol of artifact.symbols)
159
+ counts[symbol.provenance] += 1;
160
+ return counts;
161
+ }, {
162
+ total: 0,
163
+ application: 0,
164
+ generated: 0,
165
+ vendored: 0,
166
+ standard_library: 0,
167
+ bundled: 0,
168
+ });
170
169
  return {
171
170
  family,
172
- artifacts: artifacts.slice(0, 10_000),
173
- total_symbols: artifacts.reduce((sum, a) => sum + a.symbols.length, 0),
174
- application_symbols: applicationSymbols,
175
- generated_symbols: generatedSymbols,
176
- vendored_symbols: vendoredSymbols,
177
- standard_library_symbols: standardLibrarySymbols,
171
+ artifacts: [...artifacts],
172
+ total_symbols: totals.total,
173
+ application_symbols: totals.application,
174
+ generated_symbols: totals.generated,
175
+ vendored_symbols: totals.vendored,
176
+ standard_library_symbols: totals.standard_library,
178
177
  };
179
178
  }