rea-agents 6.0.0 → 6.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 (611) hide show
  1. package/README.md +26 -18
  2. package/bridge/android/ReaJadxBridge.java +14 -5
  3. package/bridge/ghidra/ReaGhidraBridge.java +205 -51
  4. package/bridge/hopper_bridge.py +314 -127
  5. package/bridge/mitmproxy/capture.py +0 -2
  6. package/bridge/native/rea_lldb_tracer.py +630 -94
  7. package/bridge/process/ProcessRunTokenReader.swift +39 -5
  8. package/bridge/pwntools/recorded_crash_impl.py +4 -0
  9. package/dist/android/JadxConfiguration.js +274 -31
  10. package/dist/android/JadxMcpTransport.js +18 -2
  11. package/dist/android/JadxProtocol.js +6 -0
  12. package/dist/android/JadxProvider.js +76 -37
  13. package/dist/android/JadxSession.js +23 -4
  14. package/dist/application/AnalysisContextQueries.js +8 -35
  15. package/dist/application/AnalysisDocument.js +32 -0
  16. package/dist/application/AppBundleExecutable.js +67 -21
  17. package/dist/application/BinaryTargetResolver.js +5 -3
  18. package/dist/application/BrowserEvidence.js +3 -8
  19. package/dist/application/BrowserScenarioEvidence.js +2 -18
  20. package/dist/application/CallPathTracing.js +19 -3
  21. package/dist/application/CapabilityInventory.js +48 -11
  22. package/dist/application/ClientConfigurationDocument.js +917 -8
  23. package/dist/application/ClientRegistrationIdentity.js +26 -5
  24. package/dist/application/ClientRegistrationStatus.js +29 -14
  25. package/dist/application/DirectAnalysis.js +56 -51
  26. package/dist/application/DirectAnalysisCleanup.js +72 -0
  27. package/dist/application/DirectAnalysisStatus.js +4 -5
  28. package/dist/application/Doctor.js +19 -21
  29. package/dist/application/DoctorDiagnostics.js +1 -2
  30. package/dist/application/DoctorScope.js +25 -13
  31. package/dist/application/EnhancedLiteralTracing.js +22 -25
  32. package/dist/application/EnhancedTools.js +64 -17
  33. package/dist/application/EvidenceBundleFiles.js +30 -13
  34. package/dist/application/FunctionAnalysisEvidence.js +2 -3
  35. package/dist/application/InventoryProjectionEvidence.js +4 -3
  36. package/dist/application/InvestigationProviders.js +11 -2
  37. package/dist/application/JsonFiles.js +83 -28
  38. package/dist/application/LinuxHopper.js +9 -6
  39. package/dist/application/MacHopper.js +15 -18
  40. package/dist/application/ProcedureAddressResolution.js +11 -0
  41. package/dist/application/RealHopperAssertions.js +0 -11
  42. package/dist/application/ReconstructionCoverageService.js +7 -4
  43. package/dist/application/ReconstructionObligationCandidates.js +1 -1
  44. package/dist/application/ReconstructionObligationLedgerService.js +4 -3
  45. package/dist/application/ReferenceSourceImportEntries.js +1 -1
  46. package/dist/application/Setup.js +21 -17
  47. package/dist/application/SetupClientConfiguration.js +10 -15
  48. package/dist/application/SetupHost.js +21 -29
  49. package/dist/application/SetupPlan.js +11 -9
  50. package/dist/application/SupportedClients.js +34 -1
  51. package/dist/application/Uninstall.js +82 -29
  52. package/dist/application/Update.js +18 -3
  53. package/dist/application/UpdateMaintenance.js +7 -5
  54. package/dist/application/UpdateRuntime.js +57 -36
  55. package/dist/application/WebModuleTraceService.js +4 -2
  56. package/dist/application/WebNetworkCaptureService.js +4 -2
  57. package/dist/application/WebRuntimeService.js +5 -3
  58. package/dist/application/WebScriptExportService.js +32 -6
  59. package/dist/application/WebSourceLocationService.js +4 -2
  60. package/dist/application/WorkflowEvidence.js +105 -0
  61. package/dist/application/XrefsAddressResolution.js +45 -0
  62. package/dist/application/analysisView/AnalysisViewService.js +76 -0
  63. package/dist/application/binary/AnalysisClientCleanup.js +30 -5
  64. package/dist/application/binary/AnalysisProviderEvaluation.js +22 -7
  65. package/dist/application/binary/AnalysisProviderRegistry.js +4 -6
  66. package/dist/application/binary/AnalysisSnapshotCache.js +13 -14
  67. package/dist/application/binary/BinarySession.js +161 -93
  68. package/dist/application/binary/BinarySessionComposition.js +1 -3
  69. package/dist/application/binary/BinarySessionExecution.js +3 -5
  70. package/dist/application/binary/BinarySessionOpen.js +4 -4
  71. package/dist/application/binary/BinarySessionRecords.js +26 -4
  72. package/dist/application/binary/BinarySessionStatus.js +18 -7
  73. package/dist/application/binary/CompositeProvider.js +16 -17
  74. package/dist/application/binary/LazyAnalysisProvider.js +8 -5
  75. package/dist/application/binary/SessionProviderRouter.js +27 -135
  76. package/dist/application/binaryDiagnostics/BinaryLayoutService.js +4 -2
  77. package/dist/application/binaryDiagnostics/RecordedCrashService.js +4 -2
  78. package/dist/application/evm/EvmInterfaceService.js +4 -2
  79. package/dist/application/homebrew.js +48 -0
  80. package/dist/application/investigation/EvidenceLedger.js +21 -7
  81. package/dist/application/investigation/InvestigationRecords.js +8 -0
  82. package/dist/application/javascript/ElectronActiveEvidence.js +9 -13
  83. package/dist/application/javascript/JavaScriptAnalysisControl.js +34 -0
  84. package/dist/application/javascript/JavaScriptApplicationEvidence.js +21 -4
  85. package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +19 -2
  86. package/dist/application/javascript/JavaScriptApplicationService.js +27 -15
  87. package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +5 -5
  88. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +10 -7
  89. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +44 -10
  90. package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +11 -3
  91. package/dist/application/javascript/JavaScriptArtifactGraphContext.js +9 -0
  92. package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +8 -5
  93. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +12 -3
  94. package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +0 -1
  95. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +49 -19
  96. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +56 -8
  97. package/dist/application/javascript/JavaScriptModuleRelationships.js +38 -9
  98. package/dist/application/javascript/JavaScriptRecoveryService.js +4 -2
  99. package/dist/application/javascript/JavaScriptRuntimeObservationService.js +6 -4
  100. package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +3 -3
  101. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +2 -3
  102. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +63 -61
  103. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +1 -2
  104. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +2 -3
  105. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +1 -5
  106. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +75 -46
  107. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
  108. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +64 -19
  109. package/dist/application/managed/ManagedApplicationGraphService.js +4 -3
  110. package/dist/application/managed/ManagedMemberComparisonService.js +9 -5
  111. package/dist/application/managed/ManagedNativeVerificationService.js +6 -4
  112. package/dist/application/managed/ManagedReconstructionService.js +4 -3
  113. package/dist/application/process/ProcessCli.js +25 -17
  114. package/dist/application/process/ProcessEvidence.js +4 -4
  115. package/dist/application/workflowInputError.js +18 -0
  116. package/dist/artifacts/ArtifactProvider.js +48 -13
  117. package/dist/artifacts/ArtifactReader.js +31 -0
  118. package/dist/artifacts/DirectoryArtifactReader.js +2 -1
  119. package/dist/artifacts/MachOSliceArtifactReader.js +106 -15
  120. package/dist/artifacts/NativeDmgArtifactReader.js +73 -21
  121. package/dist/artifacts/SafeOutputTree.js +16 -2
  122. package/dist/artifacts/ZipArtifactReader.js +11 -4
  123. package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +26 -5
  124. package/dist/artifacts/apple/DylibResolutionReader.js +17 -7
  125. package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +176 -56
  126. package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +195 -0
  127. package/dist/artifacts/apple/KeyedArchiveReader.js +55 -23
  128. package/dist/artifacts/apple/MachoLoadCommandReader.js +92 -31
  129. package/dist/artifacts/apple/NibArchive.js +81 -14
  130. package/dist/artifacts/apple/NibViewHierarchy.js +10 -3
  131. package/dist/artifacts/apple/PlistNumberLiterals.js +164 -0
  132. package/dist/artifacts/extraction/ArtifactExtraction.js +78 -21
  133. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +79 -68
  134. package/dist/artifacts/inventory/ArtifactInventory.js +0 -1
  135. package/dist/artifacts/inventory/reader.js +3 -3
  136. package/dist/artifacts/inventory/scanCanonical.js +59 -38
  137. package/dist/artifacts/inventory/scanReader.js +5 -9
  138. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +6 -2
  139. package/dist/browser/BrowserScenarioPartialObservation.js +106 -0
  140. package/dist/browser/CdpBrowserProvider.js +2 -3
  141. package/dist/browser/CdpCaptureCompleteness.js +2 -0
  142. package/dist/browser/CdpCaptureEventHandlers.js +78 -15
  143. package/dist/browser/CdpCaptureEventTypes.js +5 -1
  144. package/dist/browser/CdpCaptureEvents.js +25 -1
  145. package/dist/browser/CdpCaptureValues.js +20 -0
  146. package/dist/browser/CdpConnection.js +30 -11
  147. package/dist/browser/CdpElectronProvider.js +0 -2
  148. package/dist/browser/CdpElectronScriptEvents.js +2 -8
  149. package/dist/browser/CdpElectronScripts.js +2 -3
  150. package/dist/browser/CdpOptionalCommand.js +2 -3
  151. package/dist/browser/CdpPageCapture.js +23 -1
  152. package/dist/browser/CdpPageCaptureScripts.js +2 -3
  153. package/dist/browser/CdpSafeMetadata.js +10 -10
  154. package/dist/browser/PlaywrightBrowserScenarioProvider.js +59 -44
  155. package/dist/browser/PlaywrightElectronActiveActions.js +34 -79
  156. package/dist/browser/PlaywrightElectronActiveProjection.js +141 -0
  157. package/dist/browser/PlaywrightElectronActiveProvider.js +133 -130
  158. package/dist/browser/PlaywrightScenarioArtifacts.js +1 -1
  159. package/dist/browser/PlaywrightScenarioBrowser.js +139 -39
  160. package/dist/browser/PlaywrightScenarioEvents.js +1 -1
  161. package/dist/browser/PlaywrightScenarioSession.js +39 -22
  162. package/dist/browser/WebSourceMapFetcher.js +426 -72
  163. package/dist/browser/assets/LocalWebScriptArtifacts.js +2 -2
  164. package/dist/browser/assets/ScriptCaptureAdapters.js +1 -1
  165. package/dist/browser/history/CaptureFailures.js +41 -1
  166. package/dist/browser/history/CaptureRelease.js +5 -0
  167. package/dist/browser/history/HarCaptureAdapter.js +3 -3
  168. package/dist/browser/history/HarJson.js +3 -2
  169. package/dist/browser/history/HistoricalCaptureDecoder.js +4 -2
  170. package/dist/browser/history/MitmproxyCaptureAdapter.js +4 -2
  171. package/dist/catalogIdentity.js +0 -1
  172. package/dist/cli/analysisSelector.js +23 -0
  173. package/dist/cli/analysisViewCommands.js +36 -0
  174. package/dist/cli/applicationCommands.js +2 -3
  175. package/dist/cli/artifactCommands.js +11 -12
  176. package/dist/cli/coreAnalysisCommands.js +3 -3
  177. package/dist/cli/coreBinaryCommands.js +100 -37
  178. package/dist/cli/coreNativeCommands.js +9 -10
  179. package/dist/cli/electronCommands.js +10 -9
  180. package/dist/cli/interactiveSetup.js +6 -6
  181. package/dist/cli/javascriptApplicationAnalysis.js +7 -3
  182. package/dist/cli/jsonOutput.js +4 -99
  183. package/dist/cli/managedCommands.js +7 -8
  184. package/dist/cli/nativeCallCommands.js +3 -5
  185. package/dist/cli/omittableDefaults.js +50 -0
  186. package/dist/cli/processCommands.js +3 -2
  187. package/dist/cli/setupCommands.js +16 -15
  188. package/dist/cli/utilityCommands.js +9 -9
  189. package/dist/cli/webRuntimeCommands.js +8 -8
  190. package/dist/cli.js +18 -9
  191. package/dist/cliBrowserScenarioCommands.js +2 -2
  192. package/dist/cliCommandNames.js +1 -1
  193. package/dist/cliJsonInput.js +24 -5
  194. package/dist/cliOutput.js +0 -38
  195. package/dist/composition/auxiliaryAnalysisProviders.js +27 -23
  196. package/dist/composition/binary.js +9 -9
  197. package/dist/composition/browserScenario.js +2 -1
  198. package/dist/composition/directAnalysis.js +20 -13
  199. package/dist/composition/electronScenario.js +1 -1
  200. package/dist/composition/optionalObservationProviders.js +12 -7
  201. package/dist/config/environment.js +10 -0
  202. package/dist/config/ghidraStartupTimeout.js +12 -0
  203. package/dist/config/homeDirectory.js +12 -0
  204. package/dist/config/mcpResponseBudget.js +30 -0
  205. package/dist/config/parseConfig.js +8 -3
  206. package/dist/config/parsers.js +19 -22
  207. package/dist/contracts/analysisViewToolContracts.js +56 -0
  208. package/dist/contracts/applicationToolContracts.js +5 -4
  209. package/dist/contracts/artifactComparisonExample.js +2 -2
  210. package/dist/contracts/artifactToolContracts.js +1 -1
  211. package/dist/contracts/browserScenarioToolContracts.js +1 -1
  212. package/dist/contracts/browserToolContracts.js +19 -15
  213. package/dist/contracts/enhancedInputs.js +7 -5
  214. package/dist/contracts/enhancedToolContracts.js +7 -6
  215. package/dist/contracts/evm/evmToolContracts.js +1 -1
  216. package/dist/contracts/functionWorkflowToolContracts.js +1 -1
  217. package/dist/contracts/hopperMemoryContracts.js +2 -5
  218. package/dist/contracts/inputSchemaPresentation.js +90 -0
  219. package/dist/contracts/investigationExamples.js +4 -3
  220. package/dist/contracts/javascript/electronToolContracts.js +2 -2
  221. package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +0 -20
  222. package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +245 -0
  223. package/dist/contracts/javascript/javascriptRuntimeObservationToolContracts.js +1 -1
  224. package/dist/contracts/managed/managedToolContracts.js +7 -14
  225. package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
  226. package/dist/contracts/mobileApplicationGraphExamples.js +3 -3
  227. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +1 -1
  228. package/dist/contracts/native/nativeToolContracts.js +5 -3
  229. package/dist/contracts/officialToolContracts.js +16 -16
  230. package/dist/contracts/promptContracts.js +5 -5
  231. package/dist/contracts/providerSelection.js +1 -1
  232. package/dist/contracts/sessionLifecycleInputs.js +3 -7
  233. package/dist/contracts/sessionStatusContract.js +2 -4
  234. package/dist/contracts/sessionToolContracts.js +18 -8
  235. package/dist/contracts/sessionToolSchemas.js +3 -19
  236. package/dist/contracts/toolContractExamples.js +0 -1
  237. package/dist/contracts/toolContractHelpers.js +4 -1
  238. package/dist/contracts/toolContracts.js +2 -0
  239. package/dist/contracts/toolEffects.js +1 -1
  240. package/dist/contracts/toolOutputSchemaGroups.js +160 -115
  241. package/dist/contracts/toolOutputSchemaPrimitives.js +28 -20
  242. package/dist/contracts/toolSchemaMetadata.js +41 -33
  243. package/dist/contracts/webNetworkCaptureToolContracts.js +2 -2
  244. package/dist/contracts/webRuntimeToolContracts.js +1 -1
  245. package/dist/contracts/webScriptToolContracts.js +1 -1
  246. package/dist/doctorRuntime.js +7 -5
  247. package/dist/domain/analysisErrorBase.js +8 -3
  248. package/dist/domain/analysisErrorCore.js +6 -1
  249. package/dist/domain/analysisErrorPresentation.js +90 -20
  250. package/dist/domain/analysisErrorProjection.js +130 -32
  251. package/dist/domain/analysisSnapshot.js +29 -31
  252. package/dist/domain/analysisView/analysisView.js +243 -0
  253. package/dist/domain/analysisView/analysisViewCoverage.js +19 -0
  254. package/dist/domain/analysisView/binaryLayoutView.js +159 -0
  255. package/dist/domain/analysisView/javascriptApplicationView.js +238 -0
  256. package/dist/domain/android/androidAnalysis.js +2 -4
  257. package/dist/domain/android/androidApplication.js +18 -10
  258. package/dist/domain/apple/appleApplication.js +42 -15
  259. package/dist/domain/apple/dyldEnvironment.js +73 -0
  260. package/dist/domain/apple/dylibResolution.js +130 -12
  261. package/dist/domain/apple/dylibResolutionFindings.js +9 -7
  262. package/dist/domain/apple/interfaceBuilderGraph.js +25 -14
  263. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +13 -3
  264. package/dist/domain/apple/keyedArchive.js +35 -3
  265. package/dist/domain/apple/machoContainer.js +54 -0
  266. package/dist/domain/apple/plistNumbers.js +76 -0
  267. package/dist/domain/artifactComparison.js +15 -6
  268. package/dist/domain/artifactGraph.js +16 -3
  269. package/dist/domain/artifactIdentity.js +29 -0
  270. package/dist/domain/artifactInventoryEvidence.js +28 -40
  271. package/dist/domain/artifactOperationError.js +3 -3
  272. package/dist/domain/artifactPartialObservation.js +1 -0
  273. package/dist/domain/artifactPathSyntax.js +49 -0
  274. package/dist/domain/binaryTarget.js +39 -13
  275. package/dist/domain/bridgeCandidateProjection.js +71 -0
  276. package/dist/domain/browserCaptureComparison.js +13 -49
  277. package/dist/domain/browserCompleteness.js +1 -0
  278. package/dist/domain/browserNetworkEvidence.js +10 -4
  279. package/dist/domain/browserObservation.js +0 -1
  280. package/dist/domain/browserObservationError.js +24 -5
  281. package/dist/domain/browserObservationSchemas.js +14 -3
  282. package/dist/domain/browserScenario.js +0 -1
  283. package/dist/domain/browserScenarioCapture.js +1 -2
  284. package/dist/domain/browserScenarioDiff.js +0 -2
  285. package/dist/domain/browserScenarioDiffEvidence.js +0 -12
  286. package/dist/domain/browserScenarioDiffValues.js +2 -2
  287. package/dist/domain/browserScenarioValues.js +5 -10
  288. package/dist/domain/bundleComparison.js +3 -2
  289. package/dist/domain/callPath.js +8 -9
  290. package/dist/domain/callPathSchemas.js +2 -2
  291. package/dist/domain/canonicalJsonDigestSteps.js +133 -0
  292. package/dist/domain/canonicalOrdering.js +9 -5
  293. package/dist/domain/changedBehavior.js +9 -9
  294. package/dist/domain/comparisonSourceEvidence.js +40 -0
  295. package/dist/domain/completionLedgerGeneration.js +2 -1
  296. package/dist/domain/configurationErrors.js +13 -1
  297. package/dist/domain/conformancePackage.js +4 -3
  298. package/dist/domain/evidence.js +65 -36
  299. package/dist/domain/evidenceBundle.js +47 -8
  300. package/dist/domain/evidenceCompletionLedger.js +2 -1
  301. package/dist/domain/evidenceErrors.js +12 -1
  302. package/dist/domain/explicitSensitiveFailure.js +17 -1
  303. package/dist/domain/firmware/firmwareAnalysis.js +6 -7
  304. package/dist/domain/functionComparison.js +4 -5
  305. package/dist/domain/functionComparisonDimensions.js +120 -87
  306. package/dist/domain/functionComparisonNormalization.js +23 -34
  307. package/dist/domain/functionComparisonResults.js +1 -4
  308. package/dist/domain/functionComparisonSchemas.js +2 -8
  309. package/dist/domain/functionDossierEvidence.js +2 -37
  310. package/dist/domain/hopperErrors.js +23 -2
  311. package/dist/domain/hopperValues.js +51 -8
  312. package/dist/domain/immutableJson.js +114 -0
  313. package/dist/domain/inputIssueProjection.js +3 -0
  314. package/dist/domain/javascript/electronActiveObservation.js +47 -64
  315. package/dist/domain/javascript/electronObservation.js +14 -3
  316. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +10 -9
  317. package/dist/domain/javascript/electronStaticAnalysisIpc.js +2 -1
  318. package/dist/domain/javascript/electronStaticAnalysisNative.js +2 -1
  319. package/dist/domain/javascript/electronStaticAnalysisValues.js +6 -12
  320. package/dist/domain/javascript/javascriptApplicationAnalysis.js +71 -23
  321. package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +2 -0
  322. package/dist/domain/javascript/javascriptApplicationGraph.js +39 -3
  323. package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +9 -2
  324. package/dist/domain/javascript/javascriptApplicationVersionItems.js +5 -2
  325. package/dist/domain/javascript/javascriptApplicationVersionKeys.js +2 -1
  326. package/dist/domain/javascript/javascriptAstValues.js +20 -0
  327. package/dist/{application/javascript/JavaScriptReturnShapeProjection.js → domain/javascript/javascriptExportReturnShapeProjection.js} +4 -4
  328. package/dist/domain/javascript/javascriptExportShapeComparison.js +7 -1
  329. package/dist/domain/javascript/javascriptExportShapeComparisonIdentity.js +6 -1
  330. package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +29 -1
  331. package/dist/domain/javascript/javascriptExportShapeSelection.js +5 -5
  332. package/dist/domain/javascript/javascriptExportShapeVariants.js +67 -14
  333. package/dist/domain/javascript/javascriptFeatureSeed.js +20 -0
  334. package/dist/domain/javascript/javascriptFeatureTraversal.js +0 -1
  335. package/dist/domain/javascript/javascriptNativeHandoff.js +1 -1
  336. package/dist/domain/javascript/javascriptRecovery.js +3 -8
  337. package/dist/domain/javascript/javascriptRuntimeLoadState.js +0 -1
  338. package/dist/domain/javascript/javascriptRuntimeObservation.js +10 -2
  339. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +1 -1
  340. package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +3 -2
  341. package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +0 -1
  342. package/dist/domain/javascript/javascriptSemanticAnalysis.js +106 -5
  343. package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +2 -1
  344. package/dist/domain/javascript/javascriptSemanticCalls.js +2 -1
  345. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +2 -1
  346. package/dist/domain/javascript/javascriptSemanticCoverage.js +6 -5
  347. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +9 -17
  348. package/dist/domain/javascript/javascriptSemanticDataEffects.js +23 -6
  349. package/dist/domain/javascript/javascriptSemanticGraph.js +98 -43
  350. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +1 -0
  351. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +77 -20
  352. package/dist/domain/javascript/javascriptSemanticMutationValues.js +21 -27
  353. package/dist/domain/javascript/javascriptSemanticObjects.js +83 -42
  354. package/dist/domain/javascript/javascriptSemanticPrimitives.js +18 -21
  355. package/dist/domain/javascript/javascriptSemanticProjection.js +2 -3
  356. package/dist/domain/javascript/javascriptSemanticPromises.js +2 -1
  357. package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -4
  358. package/dist/domain/javascript/javascriptSemanticResourceLimits.js +77 -0
  359. package/dist/domain/javascript/javascriptSemanticResources.js +1 -1
  360. package/dist/domain/javascript/javascriptSemanticReturns.js +32 -17
  361. package/dist/domain/javascript/javascriptSemanticSlots.js +72 -0
  362. package/dist/domain/javascript/javascriptSemanticValues.js +126 -61
  363. package/dist/domain/javascript/javascriptSourceMapPaths.js +104 -0
  364. package/dist/domain/javascript/javascriptSourceParser.js +6 -2
  365. package/dist/domain/javascript/javascriptStaticAnalysis.js +22 -17
  366. package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +5 -3
  367. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +16 -5
  368. package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +66 -7
  369. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +28 -17
  370. package/dist/domain/javascript/javascriptStaticAnalysisState.js +3 -2
  371. package/dist/domain/javascript/sourceToBundleComparison.js +12 -3
  372. package/dist/domain/javascript/sourceToBundleSignals.js +47 -19
  373. package/dist/domain/jsonSerialization.js +109 -0
  374. package/dist/domain/jsonValue.js +90 -6
  375. package/dist/domain/localPath.js +6 -0
  376. package/dist/domain/managed/managedApplicationGraph.js +10 -10
  377. package/dist/domain/managed/managedArtifact.js +6 -4
  378. package/dist/domain/managed/managedInspectionEvidence.js +16 -0
  379. package/dist/domain/managed/managedMemberComparison.js +2 -9
  380. package/dist/domain/managed/managedMemberComparisonMatch.js +5 -9
  381. package/dist/domain/managed/managedNativeVerification.js +3 -11
  382. package/dist/domain/managed/managedNativeVerificationMatch.js +9 -3
  383. package/dist/domain/native/binaryLayout.js +2 -3
  384. package/dist/domain/native/fileOffsetPartialObservation.js +1 -0
  385. package/dist/domain/native/nativeApiBoundary.js +1 -1
  386. package/dist/domain/native/nativeCallObservation.js +37 -13
  387. package/dist/domain/native/nativeCallPartialObservation.js +33 -0
  388. package/dist/domain/native/nativeInstruction.js +7 -0
  389. package/dist/domain/native/recordedCrash.js +2 -3
  390. package/dist/domain/offsetDateTime.js +17 -0
  391. package/dist/domain/process/processCapture.js +21 -16
  392. package/dist/domain/process/processCaptureCoverage.js +67 -0
  393. package/dist/domain/process/processCaptureExample.js +2 -1
  394. package/dist/domain/process/processCaptureParsing.js +1 -34
  395. package/dist/domain/process/processCaptureValidation.js +81 -13
  396. package/dist/domain/process/processComparison.js +79 -26
  397. package/dist/domain/process/processObservation.js +10 -2
  398. package/dist/domain/process/processScenario.js +35 -12
  399. package/dist/domain/process/processTraceComparison.js +0 -2
  400. package/dist/domain/process/processTraceDimensionProjection.js +1 -1
  401. package/dist/domain/process/processTraceEvaluation.js +15 -11
  402. package/dist/domain/process/processTraceSpecification.js +3 -4
  403. package/dist/domain/propertyListKeys.js +1 -1
  404. package/dist/domain/propertyListXmlText.js +19 -0
  405. package/dist/domain/providerAdapterError.js +3 -1
  406. package/dist/domain/providerOperationHealth.js +54 -0
  407. package/dist/domain/reconstructionCoverage.js +5 -2
  408. package/dist/domain/reconstructionObligationLedgerSchemas.js +2 -1
  409. package/dist/domain/reconstructionReadinessSchemas.js +2 -1
  410. package/dist/domain/reconstructionVerification.js +9 -46
  411. package/dist/domain/reconstructionVerificationSchemas.js +4 -3
  412. package/dist/domain/referenceSourceGraph.js +20 -21
  413. package/dist/domain/staticRuntimeCorrelation.js +8 -45
  414. package/dist/domain/stringPatterns.js +6 -0
  415. package/dist/domain/swiftSymbolClassification.js +61 -0
  416. package/dist/domain/symbolAnalysis.js +66 -18
  417. package/dist/domain/webBundleAnalysis.js +20 -8
  418. package/dist/domain/webBundleAnalyzerInspection.js +13 -8
  419. package/dist/domain/webBundleAnalyzerResult.js +41 -2
  420. package/dist/domain/webCaptureDiff.js +0 -1
  421. package/dist/domain/webCaptureDiffSchemas.js +6 -3
  422. package/dist/domain/webEventListeners.js +3 -2
  423. package/dist/domain/webExecution.js +3 -2
  424. package/dist/domain/webRuntime.js +19 -7
  425. package/dist/domain/webScriptExport.js +1 -1
  426. package/dist/domain/webSourceLocation.js +1 -0
  427. package/dist/dotnet/ManagedArtifactInspector.js +2 -19
  428. package/dist/dotnet/ManagedMemberInspector.js +12 -18
  429. package/dist/dotnet/ManagedMemberInspectorCore.js +47 -44
  430. package/dist/dotnet/ManagedMemberRows.js +75 -62
  431. package/dist/dotnet/ManagedMetadataInventory.js +16 -22
  432. package/dist/dotnet/ManagedMethodBodyReader.js +4 -0
  433. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +109 -94
  434. package/dist/dotnet/ManagedNativeBoundaryInspector.js +12 -21
  435. package/dist/dotnet/ManagedReaderFailure.js +16 -0
  436. package/dist/dotnet/ManagedStaticProvider.js +3 -5
  437. package/dist/evaluation/AgentEvaluationFixtures.js +250 -0
  438. package/dist/evaluation/AgentEvaluationReport.js +28 -0
  439. package/dist/evaluation/CodexAgentEval.js +12 -8
  440. package/dist/evaluation/KnownAnswerEvaluation.js +281 -0
  441. package/dist/evm/EvmoleInterfaceProvider.js +2 -1
  442. package/dist/firmware/FirmwareCommand.js +9 -5
  443. package/dist/firmware/FirmwareFiles.js +1 -1
  444. package/dist/firmware/FirmwareProvider.js +4 -4
  445. package/dist/generatedPackageMetadata.js +2 -2
  446. package/dist/ghidra/GhidraAnalysisProfile.js +7 -5
  447. package/dist/ghidra/GhidraClient.js +126 -34
  448. package/dist/ghidra/GhidraClientStartup.js +0 -2
  449. package/dist/ghidra/GhidraDiagnostics.js +7 -7
  450. package/dist/ghidra/GhidraDoctor.js +6 -5
  451. package/dist/ghidra/GhidraFunctionValues.js +13 -12
  452. package/dist/ghidra/GhidraInstallation.js +58 -33
  453. package/dist/ghidra/GhidraInventoryValues.js +14 -4
  454. package/dist/ghidra/GhidraJavaLaunch.js +66 -0
  455. package/dist/ghidra/GhidraLauncher.js +47 -22
  456. package/dist/ghidra/GhidraProvider.js +6 -2
  457. package/dist/ghidra/GhidraProviderCapabilities.js +20 -2
  458. package/dist/ghidra/GhidraProviderClient.js +36 -15
  459. package/dist/ghidra/GhidraSessionError.js +13 -7
  460. package/dist/ghidra/GhidraSessionRoot.js +39 -0
  461. package/dist/ghidra/GhidraTargetSnapshot.js +47 -12
  462. package/dist/ghidra/GhidraTransport.js +20 -0
  463. package/dist/ghidra/extensions/GhidraExtensions.js +17 -10
  464. package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +8 -2
  465. package/dist/hopper/BridgeLauncher.js +65 -56
  466. package/dist/hopper/HopperAnalysisProfile.js +65 -12
  467. package/dist/hopper/HopperCleanup.js +63 -22
  468. package/dist/hopper/HopperClient.js +288 -59
  469. package/dist/hopper/HopperFileOffset.js +237 -0
  470. package/dist/hopper/HopperMachOImage.js +197 -0
  471. package/dist/hopper/HopperOperationStage.js +6 -0
  472. package/dist/hopper/HopperProvider.js +71 -19
  473. package/dist/hopper/HopperProviderCapabilities.js +19 -1
  474. package/dist/hopper/HopperRegexSearch.js +134 -0
  475. package/dist/hopper/HopperRegexWorker.js +27 -0
  476. package/dist/hopper/HopperRequestQueue.js +68 -19
  477. package/dist/hopper/HopperTargetLease.js +133 -49
  478. package/dist/hopper/LinuxPrivateDisplayProbe.js +6 -0
  479. package/dist/ida/IdaConfiguration.js +8 -3
  480. package/dist/ida/IdaInput.js +1 -7
  481. package/dist/ida/IdaMcpConnection.js +8 -4
  482. package/dist/ida/IdaOperationRunner.js +3 -3
  483. package/dist/ida/IdaProvider.js +8 -12
  484. package/dist/ida/IdaSessionClient.js +20 -18
  485. package/dist/ida/IdaWorkspace.js +12 -13
  486. package/dist/inspector/JavaScriptRuntimeScope.js +9 -1
  487. package/dist/inspector/V8InspectorCaptureProjection.js +9 -4
  488. package/dist/inspector/V8InspectorProvider.js +82 -36
  489. package/dist/javascript/recovery/WakaruCommand.js +7 -2
  490. package/dist/javascript/recovery/WakaruExecution.js +5 -2
  491. package/dist/javascript/sourceMaps/DecodedSourceMap.js +47 -0
  492. package/dist/javascript/sourceMaps/SourceMapCommand.js +16 -0
  493. package/dist/javascript/sourceMaps/SourceMapFormat.js +79 -31
  494. package/dist/javascript/sourceMaps/TraceSourceMap.js +14 -28
  495. package/dist/main/shutdown.js +11 -3
  496. package/dist/main/startup.js +9 -2
  497. package/dist/main/transport.js +22 -2
  498. package/dist/main.js +11 -18
  499. package/dist/mcpDoctor.js +62 -2
  500. package/dist/native/AppleDispatchCoverage.js +47 -6
  501. package/dist/native/AppleDispatchDecodeFacts.js +6 -0
  502. package/dist/native/AppleDispatchMetadata.js +6 -3
  503. package/dist/native/AppleMachoFixups.js +48 -24
  504. package/dist/native/AppleMachoSelection.js +48 -22
  505. package/dist/native/AppleObjcCategories.js +6 -2
  506. package/dist/native/AppleObjcDispatchFacets.js +5 -2
  507. package/dist/native/AppleObjcProperties.js +2 -1
  508. package/dist/native/AppleSwiftDispatchFacets.js +27 -21
  509. package/dist/native/AppleSwiftVtables.js +21 -15
  510. package/dist/native/CommandRunner.js +87 -88
  511. package/dist/native/LldbCallTracer.js +372 -103
  512. package/dist/native/LldbRetainedObservations.js +178 -0
  513. package/dist/native/NativeCallObservation.js +62 -3
  514. package/dist/native/NativeMacOSProvider.js +122 -31
  515. package/dist/native/NativeUiHelperRuntime.js +11 -2
  516. package/dist/native/NativeUiObservation.js +2 -2
  517. package/dist/native/SignatureTargetBinding.js +155 -0
  518. package/dist/native/parsers/lipo.js +71 -1
  519. package/dist/native/pwndbg/PwndbgCoreContext.js +25 -5
  520. package/dist/native/pwntools/PwntoolsDecoder.js +2 -1
  521. package/dist/native/pwntools/RecordedCrashStructureBindings.js +2 -0
  522. package/dist/process/DarwinProcessRunTokenReader.js +23 -10
  523. package/dist/process/ExecFileOutput.js +108 -6
  524. package/dist/process/OwnedCommand.js +7 -2
  525. package/dist/process/PrivateRuntimeRoot.js +10 -5
  526. package/dist/process/ProcessOwnership.js +204 -57
  527. package/dist/process/ProcessOwnershipObservation.js +60 -9
  528. package/dist/process/ProviderProcess.js +39 -10
  529. package/dist/process/capture/FilesystemSnapshot.js +50 -13
  530. package/dist/process/capture/ProcessCaptureError.js +15 -2
  531. package/dist/process/capture/ProcessCaptureLifecycle.js +235 -81
  532. package/dist/process/capture/ProcessFilesystemEffects.js +33 -3
  533. package/dist/process/capture/ProcessHarness.js +21 -25
  534. package/dist/process/capture/ProcessNormalization.js +20 -2
  535. package/dist/process/capture/ProcessSampling.js +25 -2
  536. package/dist/process/capture/TerminalRenderer.js +14 -0
  537. package/dist/process/snapshotEnvironment.js +14 -0
  538. package/dist/server/EvidenceMcpServer.js +157 -0
  539. package/dist/server/createServer.js +61 -41
  540. package/dist/server/mcpClientMetadata.js +12 -5
  541. package/dist/server/promptCompletion.js +3 -8
  542. package/dist/server/registerAnalysisViewTool.js +15 -0
  543. package/dist/server/registerAndroidTools.js +2 -5
  544. package/dist/server/registerApplicationTools/compareExportShapes.js +4 -5
  545. package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
  546. package/dist/server/registerApplicationTools/compareVersions.js +4 -5
  547. package/dist/server/registerApplicationTools/coverage.js +1 -2
  548. package/dist/server/registerApplicationTools/helpers.js +1 -4
  549. package/dist/server/registerApplicationTools/obligationLedger.js +4 -5
  550. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -4
  551. package/dist/server/registerApplicationTools/traceFeature.js +4 -5
  552. package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
  553. package/dist/server/registerArtifactComparisonTool.js +13 -10
  554. package/dist/server/registerBinaryDiagnosticsTools.js +2 -5
  555. package/dist/server/registerBrowserScenarioTool.js +3 -6
  556. package/dist/server/registerBrowserTools.js +13 -18
  557. package/dist/server/registerBundleComparisonTool.js +5 -7
  558. package/dist/server/registerCloseLifecycleTool.js +9 -20
  559. package/dist/server/registerElectronTools.js +10 -15
  560. package/dist/server/registerEnhancedTools.js +36 -77
  561. package/dist/server/registerEvidenceTools.js +3 -6
  562. package/dist/server/registerEvmTools.js +2 -5
  563. package/dist/server/registerFirmwareTools.js +2 -5
  564. package/dist/server/registerFunctionComparisonTool.js +15 -12
  565. package/dist/server/registerInvestigationTools.js +16 -17
  566. package/dist/server/registerJavaScriptRecoveryTool.js +2 -5
  567. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -8
  568. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +5 -8
  569. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -7
  570. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +6 -9
  571. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +6 -9
  572. package/dist/server/registerOfficialTools.js +4 -21
  573. package/dist/server/registerProcessComparisonTool.js +74 -48
  574. package/dist/server/registerRecordedCrashTools.js +2 -5
  575. package/dist/server/registerSessionRecordTools.js +19 -24
  576. package/dist/server/registerSessionStatusTool.js +19 -6
  577. package/dist/server/registerSessionTools.js +20 -18
  578. package/dist/server/registerWebModuleTool.js +2 -5
  579. package/dist/server/registerWebNetworkCaptureTool.js +2 -5
  580. package/dist/server/registerWebRuntimeTools.js +4 -9
  581. package/dist/server/registerWebScriptTool.js +2 -5
  582. package/dist/server/registerWebSourceLocationTool.js +2 -5
  583. package/dist/server/runDerivedOperation.js +15 -3
  584. package/dist/server/sessionAvailabilityPolicy.js +0 -1
  585. package/dist/server/toolRegistrationOptions.js +2 -2
  586. package/dist/server/toolResult.js +75 -51
  587. package/dist/server/toolResultEncoding.js +34 -0
  588. package/dist/windows/WindowsNativeLoader.js +1 -0
  589. package/dist/windows/WindowsOwnedProcess.js +60 -15
  590. package/dist/windows/WindowsPrivateRuntime.js +7 -8
  591. package/install.sh +1 -1
  592. package/native/windows/README.md +3 -1
  593. package/native/windows/build/manifest.json +2 -2
  594. package/native/windows/build/rea-windows-x64.node +0 -0
  595. package/package.json +44 -30
  596. package/scripts/electron-active-hook-boundaries.cjs +18 -20
  597. package/scripts/electron-active-hook.cjs +241 -37
  598. package/scripts/rea.mjs +3 -6
  599. package/skills/reverse-engineer-anything/SKILL.md +12 -3
  600. package/skills/reverse-engineer-anything/references/android-applications.md +6 -3
  601. package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -4
  602. package/skills/reverse-engineer-anything/references/javascript-applications.md +20 -3
  603. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +9 -0
  604. package/dist/config.js +0 -1
  605. package/dist/contracts/browserCaptureToolInputSchema.js +0 -43
  606. package/dist/contracts/process/processCaptureExample.js +0 -2
  607. package/dist/contracts/toolOutputSchemas.js +0 -2
  608. package/dist/ghidra/GhidraDefaults.js +0 -2
  609. package/dist/main/reload.js +0 -12
  610. package/dist/main/state.js +0 -3
  611. package/dist/server/sessionToolPolicies.js +0 -2
@@ -1,7 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { browserNetworkContentSelectionValuesSchema } from "./browserNetworkEvidence.js";
3
3
  import { browserScenarioCompletenessSchema, browserScenarioEventSchema, browserScenarioStepSchema, } from "./browserScenarioCaptureValues.js";
4
- export { classifyBrowserScenarioCompleteness, browserScenarioEventSchema, browserScenarioStepSchema, browserStepArtifactsSchema, } from "./browserScenarioCaptureValues.js";
5
4
  /** Step-indexed browser scenario observation. */
6
5
  export const browserScenarioCaptureSchema = z
7
6
  .strictObject({
@@ -16,7 +15,7 @@ export const browserScenarioCaptureSchema = z
16
15
  start_origin: z.string().min(1),
17
16
  action_count: z.number().int().min(1),
18
17
  secret_references: z.array(z.string().min(1)),
19
- network_content: browserNetworkContentSelectionValuesSchema.optional(),
18
+ network_content: browserNetworkContentSelectionValuesSchema,
20
19
  }),
21
20
  duration_ms: z.number().int().min(0),
22
21
  steps: z.array(browserScenarioStepSchema).min(1),
@@ -1,8 +1,6 @@
1
- import {} from "./browserScenarioCapture.js";
2
1
  import { actionState, artifactEvidenceState, captured, eventEvidenceState, eventsFor, networkContentCoverageReason, screenshotProjection, } from "./browserScenarioDiffEvidence.js";
3
2
  import { browserScenarioDiffSchema, } from "./browserScenarioDiffValues.js";
4
3
  import { commitBrowserScenarioNormalization, digestNormalizedScenarioValue, } from "./browserScenarioNormalization.js";
5
- export { browserScenarioDiffSchema, compareBrowserScenariosInputSchema, } from "./browserScenarioDiffValues.js";
6
4
  /** Compare scenario steps by stable step ID and apply only committed literal rules. */
7
5
  export const compareBrowserScenarios = (input) => {
8
6
  const normalization = commitBrowserScenarioNormalization(input.normalization);
@@ -54,18 +54,6 @@ export const eventsFor = (capture, stepIndex) => {
54
54
  export const networkContentCoverageReason = (before, after) => {
55
55
  const left = before.scenario.network_content;
56
56
  const right = after.scenario.network_content;
57
- if (left === undefined || right === undefined) {
58
- const events = [...before.events.items, ...after.events.items];
59
- if (events.some((event) => event.kind === "network-content") ||
60
- ((left === undefined) !== (right === undefined) &&
61
- events.some((event) => event.kind === "request" ||
62
- event.kind === "response" ||
63
- event.kind === "request-failed" ||
64
- event.kind === "request-finished" ||
65
- event.kind === "request-unfinished")))
66
- return "Network content selection is unknown in a legacy capture; capture both sides with matching content selection.";
67
- return undefined;
68
- }
69
57
  return left.request_body !== right.request_body ||
70
58
  left.response_body !== right.response_body ||
71
59
  left.header_values !== right.header_values
@@ -62,8 +62,8 @@ const normalizationInputSchema = z
62
62
  });
63
63
  /** Input for step-aligned comparison of two browser scenario captures. */
64
64
  export const compareBrowserScenariosInputSchema = z.strictObject({
65
- before_scenario: browserScenarioCaptureSchema.describe("Earlier complete capture_browser_scenario result."),
66
- after_scenario: browserScenarioCaptureSchema.describe("Later complete capture_browser_scenario result."),
65
+ before_scenario: browserScenarioCaptureSchema.describe("Earlier complete normalized_result from capture_browser_scenario."),
66
+ after_scenario: browserScenarioCaptureSchema.describe("Later complete normalized_result from capture_browser_scenario."),
67
67
  normalization: normalizationInputSchema
68
68
  .default({ rules: [] })
69
69
  .describe("Exact-literal rules committed in the comparison result."),
@@ -1,15 +1,10 @@
1
1
  import { z } from "zod";
2
- import { isAbsoluteLocalPath } from "./localPath.js";
2
+ import { IDENTIFIER_PATTERN } from "./stringPatterns.js";
3
+ import { isAbsoluteLocalPath, localPathStringSchema } from "./localPath.js";
3
4
  import { browserNetworkContentSelectionSchema } from "./browserNetworkEvidence.js";
4
5
  import { browserEndpointSchema, browserOriginSchema, } from "./browserObservation.js";
5
- export const scenarioIdentifierSchema = z
6
- .string()
7
- .regex(/^[A-Za-z][A-Za-z0-9._-]*$/u);
8
- const browserExecutablePathSchema = z
9
- .string()
10
- .trim()
11
- .min(1)
12
- .refine(isAbsoluteLocalPath, {
6
+ export const scenarioIdentifierSchema = z.string().regex(IDENTIFIER_PATTERN);
7
+ const browserExecutablePathSchema = localPathStringSchema.refine(isAbsoluteLocalPath, {
13
8
  message: "executable_path must be an absolute local filesystem path (for example /opt/chromium/chrome or C:\\chromium\\chrome.exe)",
14
9
  });
15
10
  const browserScenarioBaseUrlSchema = z
@@ -88,7 +83,7 @@ export const browserScenarioEnvironmentSchema = z
88
83
  timezone: z
89
84
  .string()
90
85
  .min(1)
91
- .regex(/^[A-Za-z0-9_+-]+(?:\/[A-Za-z0-9_+-]+)*$/u)
86
+ .regex(/^[A-Za-z0-9_+\x2d]+(?:\x2f[A-Za-z0-9_+\x2d]+)*$/u)
92
87
  .default("UTC"),
93
88
  color_scheme: z.enum(["light", "dark", "no-preference"]).default("light"),
94
89
  reduced_motion: z.enum(["reduce", "no-preference"]).default("reduce"),
@@ -4,6 +4,7 @@ import { parseEvidenceBundle, serializeEvidenceBundle, } from "./evidenceBundle.
4
4
  import { digestSchema } from "./../domain/digests.js";
5
5
  import { prefixedDigestSchema } from "./../domain/digests.js";
6
6
  import { comparisonStatusSchema } from "./comparisonStatus.js";
7
+ import { localPathStringSchema } from "./localPath.js";
7
8
  const evidenceIdSchema = prefixedDigestSchema("ev");
8
9
  const classificationSchema = z.enum([
9
10
  "added",
@@ -15,8 +16,8 @@ const classificationSchema = z.enum([
15
16
  ]);
16
17
  /** Strict input for canonical Evidence bundle comparison. */
17
18
  export const bundleComparisonInputSchema = z.strictObject({
18
- left_bundle_path: z.string().min(1),
19
- right_bundle_path: z.string().min(1),
19
+ left_bundle_path: localPathStringSchema,
20
+ right_bundle_path: localPathStringSchema,
20
21
  record_pairs: z
21
22
  .array(z.object({
22
23
  left_evidence_id: evidenceIdSchema,
@@ -1,6 +1,5 @@
1
1
  import { callPathInputSchema, callPathResultSchema, parseCallPathAddress, } from "./callPathSchemas.js";
2
2
  import { parseFunctionEvidence, } from "./functionDossierEvidence.js";
3
- export { callPathInputSchema, callPathResultSchema };
4
3
  /** Minimal directed caller-to-callee adjacency for call-path search. */
5
4
  class CallGraph {
6
5
  successors = new Map();
@@ -112,8 +111,8 @@ const parseSnapshots = (groups) => {
112
111
  const snapshots = new Map();
113
112
  for (const group of groups) {
114
113
  const snapshot = parseFunctionEvidence(group);
115
- const address = normalizeAddress(snapshot.procedure.address);
116
- for (const callee of snapshot.collections.callees.items)
114
+ const address = normalizeAddress(snapshot.dossier.procedure.address);
115
+ for (const callee of snapshot.dossier.callees)
117
116
  normalizeAddress(callee.address);
118
117
  if (snapshots.has(address))
119
118
  throw new TypeError(`Duplicate function Evidence for ${address}`);
@@ -131,9 +130,9 @@ const assertCompatible = (snapshots) => {
131
130
  snapshot.subject.format !== first.subject.format ||
132
131
  snapshot.subject.architecture !== first.subject.architecture)
133
132
  throw new TypeError("Call-path Evidence mixes artifact subjects");
134
- if (snapshot.provider.id !== first.provider.id ||
135
- snapshot.provider.name !== first.provider.name ||
136
- snapshot.provider.version !== first.provider.version)
133
+ if (snapshot.evidence.provider.id !== first.evidence.provider.id ||
134
+ snapshot.evidence.provider.name !== first.evidence.provider.name ||
135
+ snapshot.evidence.provider.version !== first.evidence.provider.version)
137
136
  throw new TypeError("Call-path Evidence mixes providers");
138
137
  }
139
138
  };
@@ -141,7 +140,7 @@ const createGraph = (snapshots) => {
141
140
  const graph = new CallGraph();
142
141
  for (const [address, snapshot] of snapshots) {
143
142
  graph.mergeNode(address);
144
- for (const callee of snapshot.collections.callees.items) {
143
+ for (const callee of snapshot.dossier.callees) {
145
144
  const calleeAddress = normalizeAddress(callee.address);
146
145
  graph.mergeNode(calleeAddress);
147
146
  graph.mergeDirectedEdge(address, calleeAddress);
@@ -249,7 +248,7 @@ const citePath = (addresses, snapshots) => {
249
248
  (index > 0 ? snapshots.get(addresses[index - 1] ?? "") : undefined);
250
249
  return {
251
250
  address,
252
- name: snapshot?.procedure.name ?? null,
251
+ name: snapshot?.dossier.procedure.name ?? null,
253
252
  evidence_links: snapshotLinks(supporting),
254
253
  };
255
254
  });
@@ -267,7 +266,7 @@ const citePath = (addresses, snapshots) => {
267
266
  const snapshotLinks = (snapshot) => {
268
267
  if (snapshot === undefined)
269
268
  throw new TypeError("Every call-path claim requires supporting Evidence");
270
- return snapshot.evidence.map(({ evidence_id }) => evidence_id);
269
+ return [snapshot.evidence.evidence_id];
271
270
  };
272
271
  const uniqueEvidence = (snapshots) => [
273
272
  ...new Set([...snapshots].flatMap((snapshot) => snapshotLinks(snapshot))),
@@ -4,10 +4,10 @@ import { evidenceSchema } from "./evidence.js";
4
4
  import { prefixedDigestSchema } from "./../domain/digests.js";
5
5
  const addressSchema = z
6
6
  .string()
7
- .regex(/^(?:(?:[A-Za-z0-9._~-]|%[0-9A-F]{2})+:)?0x(?:0|[1-9a-f][0-9a-f]*)$/u);
7
+ .regex(/^(?:(?:[A-Za-z0-9._~\x2d]|%[0-9A-F]{2})+:)?0x(?:0|[1-9a-f][0-9a-f]*)$/u);
8
8
  const inputAddressSchema = z
9
9
  .string()
10
- .regex(/^(?:(?:[A-Za-z0-9._~-]|%[0-9a-fA-F]{2})+:)?0[xX][0-9a-fA-F]+$/u)
10
+ .regex(/^(?:(?:[A-Za-z0-9._~\x2d]|%[0-9a-fA-F]{2})+:)?0[xX][0-9a-fA-F]+$/u)
11
11
  .transform((address) => {
12
12
  const separator = address.lastIndexOf(":") + 1;
13
13
  const space = address
@@ -0,0 +1,133 @@
1
+ import { createHash } from "node:crypto";
2
+ /** Hash owned, validated JSON in bounded steps without a document-sized string. */
3
+ export function* canonicalJsonDigestSteps(value) {
4
+ const hash = createHash("sha256");
5
+ const ancestors = new Set();
6
+ const stack = [{ kind: "value", value }];
7
+ let buffered = "";
8
+ let flushed = false;
9
+ const emit = (part) => {
10
+ buffered += part;
11
+ if (buffered.length >= 8192) {
12
+ hash.update(buffered);
13
+ buffered = "";
14
+ flushed = true;
15
+ }
16
+ };
17
+ try {
18
+ while (stack.length > 0) {
19
+ if (flushed) {
20
+ flushed = false;
21
+ yield;
22
+ }
23
+ const frame = stack.pop();
24
+ if (frame === undefined)
25
+ break;
26
+ if (frame.kind === "separator") {
27
+ emit(":");
28
+ continue;
29
+ }
30
+ if (frame.kind === "string") {
31
+ if (frame.index === frame.value.length) {
32
+ emit('"');
33
+ continue;
34
+ }
35
+ let end = Math.min(frame.index + 8192, frame.value.length);
36
+ const last = frame.value.charCodeAt(end - 1);
37
+ const next = frame.value.charCodeAt(end);
38
+ if (end < frame.value.length &&
39
+ last >= 0xd800 &&
40
+ last <= 0xdbff &&
41
+ next >= 0xdc00 &&
42
+ next <= 0xdfff)
43
+ end -= 1;
44
+ emit(JSON.stringify(frame.value.slice(frame.index, end)).slice(1, -1));
45
+ frame.index = end;
46
+ stack.push(frame);
47
+ continue;
48
+ }
49
+ if (frame.kind === "array") {
50
+ if (frame.index === frame.length) {
51
+ emit("]");
52
+ ancestors.delete(frame.value);
53
+ continue;
54
+ }
55
+ const item = frame.value[frame.index];
56
+ if (item === undefined)
57
+ throw new TypeError("Canonical JSON digest requires dense JSON arrays");
58
+ if (frame.index++ > 0)
59
+ emit(",");
60
+ stack.push(frame, { kind: "value", value: item });
61
+ continue;
62
+ }
63
+ if (frame.kind === "object") {
64
+ if (frame.index === frame.keys.length) {
65
+ emit("}");
66
+ ancestors.delete(frame.value);
67
+ continue;
68
+ }
69
+ const key = frame.keys[frame.index++];
70
+ if (key === undefined)
71
+ throw new TypeError("Canonical JSON object changed during hashing");
72
+ const item = frame.value[key];
73
+ if (item === undefined)
74
+ continue;
75
+ if (frame.written++ > 0)
76
+ emit(",");
77
+ if (key.length > 8192) {
78
+ emit('"');
79
+ stack.push(frame, { kind: "value", value: item }, { kind: "separator" }, { kind: "string", value: key, index: 0 });
80
+ continue;
81
+ }
82
+ emit(JSON.stringify(key));
83
+ emit(":");
84
+ stack.push(frame, { kind: "value", value: item });
85
+ continue;
86
+ }
87
+ const item = frame.value;
88
+ if (typeof item === "string" && item.length > 8192) {
89
+ emit('"');
90
+ stack.push({ kind: "string", value: item, index: 0 });
91
+ }
92
+ else if (item === null || typeof item !== "object") {
93
+ if (typeof item === "number" && !Number.isFinite(item))
94
+ throw new Error(Number.isNaN(item)
95
+ ? "NaN is not allowed"
96
+ : "Infinity is not allowed");
97
+ emit(JSON.stringify(item));
98
+ }
99
+ else {
100
+ if (ancestors.has(item))
101
+ throw new Error("Circular reference detected");
102
+ ancestors.add(item);
103
+ if (Array.isArray(item)) {
104
+ emit("[");
105
+ stack.push({
106
+ kind: "array",
107
+ value: item,
108
+ length: item.length,
109
+ index: 0,
110
+ });
111
+ }
112
+ else {
113
+ emit("{");
114
+ stack.push({
115
+ kind: "object",
116
+ value: item,
117
+ keys: Object.keys(item).sort(),
118
+ index: 0,
119
+ written: 0,
120
+ });
121
+ }
122
+ }
123
+ }
124
+ if (buffered !== "")
125
+ hash.update(buffered);
126
+ return hash.digest("hex");
127
+ }
128
+ finally {
129
+ stack.length = 0;
130
+ ancestors.clear();
131
+ buffered = "";
132
+ }
133
+ }
@@ -1,11 +1,15 @@
1
+ import { compareUnicodeCodePoints } from "./unicodeCodePointOrder.js";
1
2
  /**
2
3
  * Canonical code-point ordering shared across domain and application layers.
3
4
  *
4
- * Compares strings by Unicode code point (`<`/`>`) so graph ordering,
5
- * fingerprints, and deterministic tie-breaks stay stable regardless of
6
- * locale. Prefer this over `String.prototype.localeCompare`, which is
7
- * locale-dependent.
5
+ * Compares strings by Unicode code point so graph ordering, fingerprints, and
6
+ * deterministic tie-breaks stay stable regardless of locale. Prefer this over
7
+ * `String.prototype.localeCompare`, which is locale-dependent.
8
+ *
9
+ * Ordering by code point differs from ordering by UTF-16 code unit for astral
10
+ * code points (above U+FFFF), whose lead surrogate is numerically below the
11
+ * BMP tail U+E000-U+FFFF.
8
12
  */
9
- export const compareCodePoints = (left, right) => left < right ? -1 : left > right ? 1 : 0;
13
+ export const compareCodePoints = (left, right) => compareUnicodeCodePoints(left, right);
10
14
  /** Deduplicate and sort strings with canonical code-point ordering. */
11
15
  export const uniqueSorted = (values) => [...new Set(values)].sort(compareCodePoints);
@@ -1,15 +1,16 @@
1
1
  import { z } from "zod";
2
2
  import { artifactComparisonResultSchema } from "./artifactComparison.js";
3
3
  import { uniqueSorted } from "./canonicalOrdering.js";
4
+ import { comparisonSourceEvidenceIds } from "./comparisonSourceEvidence.js";
4
5
  import { evidenceSchema, parseEvidence } from "./evidence.js";
5
- import { functionComparisonResultSchema } from "./functionComparison.js";
6
+ import { functionComparisonResultSchema } from "./functionComparisonSchemas.js";
6
7
  import { PROCESS_PROVIDER, isProcessEvidenceProvider, } from "./process/processEvidenceProvider.js";
7
- import { comparisonStatusSchema, deriveProcessComparisonStatus, PROCESS_COMPARISON_DIMENSIONS, processCaptureComparisonSchema, } from "./process/processCapture.js";
8
+ import { comparisonStatusSchema, deriveProcessComparisonStatus, PROCESS_COMPARISON_DIMENSIONS, processCaptureComparisonSchema, } from "./process/processComparison.js";
8
9
  import { prefixedDigestSchema } from "./../domain/digests.js";
9
10
  const evidenceIdSchema = prefixedDigestSchema("ev");
10
11
  /** Input for aggregating existing comparison Evidence. */
11
12
  export const changedBehaviorInputSchema = z.strictObject({
12
- comparisons: z.array(evidenceSchema).default([]),
13
+ comparisons: z.array(evidenceSchema).min(1),
13
14
  });
14
15
  const findingSchema = z.object({
15
16
  scope: z.enum(["runtime", "protocol", "resource", "static_candidate"]),
@@ -22,7 +23,7 @@ const findingSchema = z.object({
22
23
  ]),
23
24
  status: comparisonStatusSchema,
24
25
  source_comparison_id: evidenceIdSchema,
25
- evidence_links: z.array(evidenceIdSchema).min(3),
26
+ evidence_links: z.array(evidenceIdSchema).min(2),
26
27
  limitations: z.array(z.string()),
27
28
  });
28
29
  /** Truthful aggregate: runtime observations remain separate from static candidates. */
@@ -43,7 +44,7 @@ export const changedBehaviorResultSchema = z
43
44
  findings: z.object({
44
45
  items: z.array(findingSchema),
45
46
  }),
46
- evidence_links: z.array(evidenceIdSchema).min(3),
47
+ evidence_links: z.array(evidenceIdSchema).min(2),
47
48
  limitations: z.array(z.string()),
48
49
  })
49
50
  .superRefine((result, context) => {
@@ -141,9 +142,8 @@ const parseComparisonEvidence = (input) => {
141
142
  evidence.authority !== "analyst-inference" ||
142
143
  evidence.subject !== null)
143
144
  throw new TypeError("Comparison Evidence operation, predicate, and provider disagree");
144
- if (evidence.evidence_links.length < 2)
145
- throw new TypeError("Comparison Evidence must cite both source observations");
146
- assertUnique(evidence.evidence_links, "source Evidence links");
145
+ if (!comparisonSourceEvidenceIds(evidence).every((id) => evidence.evidence_links.includes(id)))
146
+ throw new TypeError("Comparison Evidence must cite both selected source observations");
147
147
  parseResult(evidence);
148
148
  return evidence;
149
149
  };
@@ -209,7 +209,7 @@ const functionFindings = (evidence) => {
209
209
  dimension: dimension.dimension,
210
210
  scope: "static_candidate",
211
211
  status: dimension.status,
212
- classification: dimension.status === "unknown" || dimension.status === "truncated"
212
+ classification: dimension.status === "unknown"
213
213
  ? "unresolved_branch"
214
214
  : dimension.conclusion_kind,
215
215
  limitations: dimension.limitations,
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ import { uniqueSorted } from "./canonicalOrdering.js";
3
+ import { prefixedDigestSchema } from "./digests.js";
4
+ const evidenceIdSchema = prefixedDigestSchema("ev");
5
+ const sideParametersSchema = z.object({
6
+ left_evidence_id: evidenceIdSchema.optional(),
7
+ right_evidence_id: evidenceIdSchema.optional(),
8
+ left_evidence_ids: z.array(evidenceIdSchema).min(1).optional(),
9
+ right_evidence_ids: z.array(evidenceIdSchema).min(1).optional(),
10
+ });
11
+ /** Resolve each selected side and validate aliases and duplicates within that role. */
12
+ export const comparisonSourceEvidenceSides = (evidence) => {
13
+ const parameters = sideParametersSchema.parse(evidence.parameters);
14
+ if ((parameters.left_evidence_id === undefined) !==
15
+ (parameters.right_evidence_id === undefined) ||
16
+ (parameters.left_evidence_ids === undefined) !==
17
+ (parameters.right_evidence_ids === undefined))
18
+ throw new TypeError("Comparison Evidence source representation omitted one side");
19
+ const side = (single, multiple) => {
20
+ if (single !== undefined &&
21
+ multiple !== undefined &&
22
+ (multiple.length !== 1 || multiple[0] !== single))
23
+ throw new TypeError("Comparison Evidence source representations disagree");
24
+ const selected = single === undefined ? (multiple ?? []) : [single];
25
+ if (selected.length === 0)
26
+ throw new TypeError("Comparison Evidence omitted its source parameters");
27
+ if (new Set(selected).size !== selected.length)
28
+ throw new TypeError("Comparison Evidence repeats a source within one side");
29
+ return selected;
30
+ };
31
+ return {
32
+ left: side(parameters.left_evidence_id, parameters.left_evidence_ids),
33
+ right: side(parameters.right_evidence_id, parameters.right_evidence_ids),
34
+ };
35
+ };
36
+ /** Resolve the source closure without counting observations shared by both roles twice. */
37
+ export const comparisonSourceEvidenceIds = (evidence) => {
38
+ const sides = comparisonSourceEvidenceSides(evidence);
39
+ return uniqueSorted([...sides.left, ...sides.right]);
40
+ };
@@ -1,10 +1,11 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import canonicalize from "canonicalize";
3
3
  import { z } from "zod";
4
+ import { IDENTIFIER_PATTERN } from "./stringPatterns.js";
4
5
  import { createEvidenceCompletionLedger, evidenceCompletionRecordSchema, } from "./evidenceCompletionLedger.js";
5
6
  import { digestSchema } from "./../domain/digests.js";
6
7
  import { prefixedDigestSchema } from "./../domain/digests.js";
7
- const identifierSchema = z.string().regex(/^[A-Za-z][A-Za-z0-9._-]*$/u);
8
+ const identifierSchema = z.string().regex(IDENTIFIER_PATTERN);
8
9
  const identitySchema = z.strictObject({
9
10
  id: identifierSchema,
10
11
  version: z.string().min(1),
@@ -1,7 +1,12 @@
1
- import { AnalysisError } from "./analysisErrorBase.js";
1
+ import { AnalysisError, } from "./analysisErrorBase.js";
2
2
  /** Runtime configuration could not be parsed safely. */
3
3
  export class ConfigurationError extends AnalysisError {
4
4
  _tag = "ConfigurationError";
5
+ settings;
6
+ constructor(message, options) {
7
+ super(message, options);
8
+ this.settings = (options?.settings ?? []).map(({ setting, constraint }) => ({ setting, constraint }));
9
+ }
5
10
  }
6
11
  /** No app or binary session exists for an analysis request. */
7
12
  export class NoBinaryOpenError extends AnalysisError {
@@ -16,10 +21,17 @@ export class BinaryTargetError extends AnalysisError {
16
21
  reason;
17
22
  _tag = "BinaryTargetError";
18
23
  constraint;
24
+ /** The OS read-permission code of the cause, when the host denied access. */
25
+ systemCode;
19
26
  constructor(path, reason, options) {
20
27
  super(`Cannot open artifact: ${reason}`, options);
21
28
  this.path = path;
22
29
  this.reason = reason;
23
30
  this.constraint = options?.constraint;
31
+ this.systemCode = readPermissionCode(options?.cause);
24
32
  }
25
33
  }
34
+ const readPermissionCode = (cause) => {
35
+ const code = cause instanceof Error ? Reflect.get(cause, "code") : undefined;
36
+ return code === "EACCES" || code === "EPERM" ? code : undefined;
37
+ };
@@ -1,12 +1,13 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import canonicalize from "canonicalize";
3
3
  import { z } from "zod";
4
- import { evidenceEnvelopeSchema } from "./evidence.js";
4
+ import { IDENTIFIER_PATTERN } from "./stringPatterns.js";
5
+ import { evidenceSchema } from "./evidence.js";
5
6
  import { evidenceBundleSchema } from "./evidenceBundle.js";
6
7
  import { err, ok } from "./result.js";
7
8
  import { prefixedDigestSchema } from "./../domain/digests.js";
8
9
  const conformancePackageIdSchema = prefixedDigestSchema("cp");
9
- const scenarioIdSchema = z.string().regex(/^[A-Za-z][A-Za-z0-9._-]*$/u);
10
+ const scenarioIdSchema = z.string().regex(IDENTIFIER_PATTERN);
10
11
  const scenarioManifestSchema = z.strictObject({
11
12
  scenario_id: scenarioIdSchema,
12
13
  name: z.string().min(1),
@@ -45,7 +46,7 @@ const shimPlanSchema = z.strictObject({
45
46
  const expectedEvidenceSchema = z.strictObject({
46
47
  scenario_id: scenarioIdSchema,
47
48
  /** Expected evidence envelopes. */
48
- envelopes: z.array(evidenceEnvelopeSchema),
49
+ envelopes: z.array(evidenceSchema),
49
50
  /** Expected evidence bundle. */
50
51
  bundle: evidenceBundleSchema.nullable(),
51
52
  /** Required dimensions that must be present in the evidence. */