rea-agents 4.1.0 → 5.0.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 (577) hide show
  1. package/README.md +184 -86
  2. package/bridge/android/ReaJadxBridge.java +247 -0
  3. package/bridge/native/NativeUIChildren.swift +27 -0
  4. package/bridge/native/ReaNativeUI.swift +30 -16
  5. package/dist/android/AndroidTargetSnapshot.js +5 -3
  6. package/dist/android/JadxAnalysis.js +8 -6
  7. package/dist/android/JadxConfiguration.js +19 -3
  8. package/dist/android/JadxMcpTransport.js +43 -16
  9. package/dist/android/JadxProtocol.js +8 -0
  10. package/dist/android/JadxProvider.js +117 -28
  11. package/dist/android/JadxRelease.js +8 -0
  12. package/dist/android/JadxSession.js +32 -18
  13. package/dist/application/AppBundleExecutable.js +141 -0
  14. package/dist/application/ArtifactInventory/classify.js +1 -1
  15. package/dist/application/ArtifactInventory/scanCanonical.js +1 -1
  16. package/dist/application/ArtifactInventory/scanReader.js +1 -1
  17. package/dist/application/ArtifactInventory.js +1 -1
  18. package/dist/application/BinaryTargetResolver.js +9 -64
  19. package/dist/application/CapabilityInventory.js +61 -3
  20. package/dist/application/ClientConfigurationDocument.js +72 -12
  21. package/dist/application/ClientRegistrationStatus.js +7 -8
  22. package/dist/application/DirectAnalysis.js +12 -14
  23. package/dist/application/DirectAnalysisStatus.js +4 -5
  24. package/dist/application/DoctorDiagnostics.js +3 -3
  25. package/dist/application/EnhancedTools.js +4 -4
  26. package/dist/application/EvidenceBundleCommands.js +1 -1
  27. package/dist/application/FilesystemSnapshot.js +20 -5
  28. package/dist/application/InvestigationProviders.js +6 -0
  29. package/dist/application/LinuxHopper.js +8 -2
  30. package/dist/application/OptionalObservationProviders.js +3 -0
  31. package/dist/application/ProcessCaptureCapability.js +1 -1
  32. package/dist/application/ProcessCaptureLifecycle.js +2 -2
  33. package/dist/application/ProcessCli.js +5 -1
  34. package/dist/application/ProcessHarness.js +20 -9
  35. package/dist/application/ReconstructionCoverageService.js +2 -6
  36. package/dist/application/ReconstructionObligationCandidates.js +5 -2
  37. package/dist/application/ReferenceSourceImport.js +2 -0
  38. package/dist/application/ReferenceSourceImportEntries.js +20 -3
  39. package/dist/application/ReferenceSourceImportTypes.js +5 -0
  40. package/dist/application/Setup.js +10 -2
  41. package/dist/application/SetupClientConfiguration.js +19 -16
  42. package/dist/application/SetupHost.js +18 -3
  43. package/dist/application/SetupPlan.js +1 -1
  44. package/dist/application/Uninstall.js +23 -17
  45. package/dist/application/UpdateMaintenance.js +3 -3
  46. package/dist/application/ValidateSelectedWebScript.js +27 -0
  47. package/dist/application/WebModuleTraceService.js +209 -0
  48. package/dist/application/WebRuntimeService.js +73 -0
  49. package/dist/application/WebScriptExportService.js +115 -0
  50. package/dist/application/WebSourceLocationService.js +160 -0
  51. package/dist/application/{AndroidAnalysisService.js → android/AndroidAnalysisService.js} +6 -6
  52. package/dist/application/{AndroidApplicationService.js → android/AndroidApplicationService.js} +3 -3
  53. package/dist/application/{AppleApplicationService.js → apple/AppleApplicationService.js} +5 -5
  54. package/dist/application/{AnalysisClientCleanup.js → binary/AnalysisClientCleanup.js} +2 -2
  55. package/dist/application/{AnalysisProviderEvaluation.js → binary/AnalysisProviderEvaluation.js} +4 -4
  56. package/dist/application/{AnalysisProviderRegistry.js → binary/AnalysisProviderRegistry.js} +5 -5
  57. package/dist/application/{AnalysisSnapshotCache.js → binary/AnalysisSnapshotCache.js} +7 -9
  58. package/dist/application/{AnalysisSnapshotFiles.js → binary/AnalysisSnapshotFiles.js} +4 -4
  59. package/dist/application/{BinarySession.js → binary/BinarySession.js} +12 -10
  60. package/dist/application/{BinarySessionComposition.js → binary/BinarySessionComposition.js} +2 -1
  61. package/dist/application/{BinarySessionExecution.js → binary/BinarySessionExecution.js} +9 -7
  62. package/dist/application/{BinarySessionOpen.js → binary/BinarySessionOpen.js} +6 -6
  63. package/dist/application/{BinarySessionRecords.js → binary/BinarySessionRecords.js} +28 -40
  64. package/dist/application/{CompositeProvider.js → binary/CompositeProvider.js} +2 -2
  65. package/dist/application/{LazyAnalysisProvider.js → binary/LazyAnalysisProvider.js} +6 -6
  66. package/dist/application/{SessionProviderRouter.js → binary/SessionProviderRouter.js} +7 -7
  67. package/dist/application/{FirmwareAnalysisService.js → firmware/FirmwareAnalysisService.js} +5 -5
  68. package/dist/application/{EvidenceLedger.js → investigation/EvidenceLedger.js} +44 -7
  69. package/dist/application/investigation/InvestigationRecords.js +69 -0
  70. package/dist/application/{UnknownEvidence.js → investigation/UnknownEvidence.js} +1 -1
  71. package/dist/application/{ElectronActiveEvidence.js → javascript/ElectronActiveEvidence.js} +3 -3
  72. package/dist/application/javascript/ElectronActiveObservationPort.js +1 -0
  73. package/dist/application/{ElectronActiveObservationService.js → javascript/ElectronActiveObservationService.js} +3 -3
  74. package/dist/application/{ElectronBoundaryAnalysis.js → javascript/ElectronBoundaryAnalysis.js} +1 -1
  75. package/dist/application/{ElectronBoundaryGraphContext.js → javascript/ElectronBoundaryGraphContext.js} +1 -1
  76. package/dist/application/{ElectronEvidence.js → javascript/ElectronEvidence.js} +2 -2
  77. package/dist/application/javascript/ElectronObservationPort.js +1 -0
  78. package/dist/application/{ElectronObservationService.js → javascript/ElectronObservationService.js} +3 -3
  79. package/dist/application/{JavaScriptApplicationEvidence.js → javascript/JavaScriptApplicationEvidence.js} +3 -3
  80. package/dist/application/{JavaScriptApplicationEvidenceGraph.js → javascript/JavaScriptApplicationEvidenceGraph.js} +5 -5
  81. package/dist/application/{JavaScriptApplicationService.js → javascript/JavaScriptApplicationService.js} +10 -10
  82. package/dist/application/{JavaScriptApplicationWorkflowEvidence.js → javascript/JavaScriptApplicationWorkflowEvidence.js} +3 -3
  83. package/dist/application/{JavaScriptApplicationWorkflowService.js → javascript/JavaScriptApplicationWorkflowService.js} +12 -12
  84. package/dist/application/{JavaScriptArtifactAnalysis.js → javascript/JavaScriptArtifactAnalysis.js} +8 -24
  85. package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +1 -0
  86. package/dist/application/{JavaScriptArtifactGraphAccumulator.js → javascript/JavaScriptArtifactGraphAccumulator.js} +16 -2
  87. package/dist/application/{JavaScriptArtifactGraphBuilder.js → javascript/JavaScriptArtifactGraphBuilder.js} +2 -2
  88. package/dist/application/{JavaScriptArtifactGraphContext.js → javascript/JavaScriptArtifactGraphContext.js} +1 -1
  89. package/dist/application/{JavaScriptArtifactGraphDocuments.js → javascript/JavaScriptArtifactGraphDocuments.js} +1 -1
  90. package/dist/application/{JavaScriptArtifactGraphFindings.js → javascript/JavaScriptArtifactGraphFindings.js} +20 -7
  91. package/dist/application/{JavaScriptArtifactGraphStructure.js → javascript/JavaScriptArtifactGraphStructure.js} +1 -1
  92. package/dist/application/{JavaScriptArtifactPathResolution.js → javascript/JavaScriptArtifactPathResolution.js} +6 -12
  93. package/dist/application/{JavaScriptArtifactReconstruction.js → javascript/JavaScriptArtifactReconstruction.js} +4 -8
  94. package/dist/application/{JavaScriptJsonModules.js → javascript/JavaScriptJsonModules.js} +1 -1
  95. package/dist/application/{JavaScriptModuleRelationships.js → javascript/JavaScriptModuleRelationships.js} +2 -2
  96. package/dist/application/javascript/JavaScriptRecoveryPort.js +1 -0
  97. package/dist/application/javascript/JavaScriptRecoveryService.js +52 -0
  98. package/dist/application/{JavaScriptReturnShapeProjection.js → javascript/JavaScriptReturnShapeProjection.js} +3 -3
  99. package/dist/application/{JavaScriptRuntimeObservationEvidence.js → javascript/JavaScriptRuntimeObservationEvidence.js} +2 -2
  100. package/dist/application/javascript/JavaScriptRuntimeObservationPort.js +1 -0
  101. package/dist/application/{JavaScriptRuntimeObservationService.js → javascript/JavaScriptRuntimeObservationService.js} +3 -3
  102. package/dist/application/{JavaScriptRuntimeReconciliationEvidence.js → javascript/JavaScriptRuntimeReconciliationEvidence.js} +3 -3
  103. package/dist/application/{JavaScriptRuntimeReconciliationService.js → javascript/JavaScriptRuntimeReconciliationService.js} +6 -6
  104. package/dist/application/{JavaScriptSemanticGraphAsyncProjection.js → javascript/JavaScriptSemanticGraphAsyncProjection.js} +1 -1
  105. package/dist/application/{JavaScriptSemanticGraphBuilder.js → javascript/JavaScriptSemanticGraphBuilder.js} +5 -3
  106. package/dist/application/{JavaScriptSemanticGraphChildProcessProjection.js → javascript/JavaScriptSemanticGraphChildProcessProjection.js} +1 -1
  107. package/dist/application/{JavaScriptSemanticGraphConstruction.js → javascript/JavaScriptSemanticGraphConstruction.js} +3 -2
  108. package/dist/application/{JavaScriptSemanticGraphDataProjection.js → javascript/JavaScriptSemanticGraphDataProjection.js} +1 -1
  109. package/dist/application/{JavaScriptSemanticGraphFingerprintProjection.js → javascript/JavaScriptSemanticGraphFingerprintProjection.js} +1 -1
  110. package/dist/application/{JavaScriptSemanticGraphFlowProjection.js → javascript/JavaScriptSemanticGraphFlowProjection.js} +2 -2
  111. package/dist/application/{JavaScriptSemanticGraphObjectProjection.js → javascript/JavaScriptSemanticGraphObjectProjection.js} +1 -1
  112. package/dist/application/{JavaScriptSemanticGraphProjection.js → javascript/JavaScriptSemanticGraphProjection.js} +2 -2
  113. package/dist/application/{JavaScriptSemanticGraphResourceProjection.js → javascript/JavaScriptSemanticGraphResourceProjection.js} +1 -1
  114. package/dist/application/{JavaScriptSemanticTraceService.js → javascript/JavaScriptSemanticTraceService.js} +6 -6
  115. package/dist/application/{ManagedApplicationGraphService.js → managed/ManagedApplicationGraphService.js} +7 -7
  116. package/dist/application/{ManagedMemberComparisonService.js → managed/ManagedMemberComparisonService.js} +10 -10
  117. package/dist/application/{ManagedNativeVerificationService.js → managed/ManagedNativeVerificationService.js} +7 -7
  118. package/dist/application/{ManagedReconstructionService.js → managed/ManagedReconstructionService.js} +7 -7
  119. package/dist/application/{NativeApiInspection.js → native/NativeApiInspection.js} +1 -1
  120. package/dist/application/{NativeCallRoutes.js → native/NativeCallRoutes.js} +3 -3
  121. package/dist/application/{NativeDispatchMetadataInspection.js → native/NativeDispatchMetadataInspection.js} +4 -4
  122. package/dist/application/{NativeUiActionTrace.js → native/NativeUiActionTrace.js} +7 -7
  123. package/dist/application/{NativeValueTrace.js → native/NativeValueTrace.js} +6 -6
  124. package/dist/{application/ArtifactInventory/hash.js → artifacts/ArtifactHash.js} +4 -2
  125. package/dist/artifacts/ArtifactPaths.js +3 -3
  126. package/dist/artifacts/ArtifactProvider.js +7 -37
  127. package/dist/artifacts/ArtifactProviderMetadata.js +36 -0
  128. package/dist/artifacts/AsarArtifactReader.js +195 -23
  129. package/dist/artifacts/AsarEntryStream.js +76 -0
  130. package/dist/artifacts/DirectoryArtifactReader.js +41 -7
  131. package/dist/artifacts/NativeDmgArtifactReader.js +161 -9
  132. package/dist/{application → artifacts/apple}/AppleAssetCatalogAnalysis.js +4 -4
  133. package/dist/{application → artifacts/apple}/InterfaceBuilderAnalysis.js +125 -51
  134. package/dist/artifacts/{KeyedArchiveReader.js → apple/KeyedArchiveReader.js} +21 -27
  135. package/dist/artifacts/apple/NibViewHierarchy.js +150 -0
  136. package/dist/{application → artifacts/javascript}/JavaScriptArtifactFiles.js +27 -6
  137. package/dist/artifacts/javascript/JavaScriptArtifactReader.js +6 -0
  138. package/dist/artifacts/readStableArtifact.js +52 -0
  139. package/dist/browser/BrowserScenarioSecrets.js +50 -8
  140. package/dist/browser/CdpAuthorizedMainFrame.js +4 -4
  141. package/dist/browser/CdpAuthorizedTarget.js +22 -0
  142. package/dist/browser/CdpBrowserProvider.js +4 -15
  143. package/dist/browser/CdpCaptureDocuments.js +33 -21
  144. package/dist/browser/CdpCaptureEventBodyShapes.js +3 -3
  145. package/dist/browser/CdpCaptureEventHandlers.js +26 -26
  146. package/dist/browser/CdpCaptureEventHelpers.js +6 -6
  147. package/dist/browser/CdpCaptureStorage.js +10 -8
  148. package/dist/browser/CdpCaptureStorageFingerprints.js +24 -22
  149. package/dist/browser/CdpCaptureValues.js +2 -2
  150. package/dist/browser/CdpCommandRejection.js +17 -0
  151. package/dist/browser/CdpConnection.js +51 -11
  152. package/dist/browser/CdpElectronInspection.js +10 -10
  153. package/dist/browser/CdpElectronProvider.js +3 -6
  154. package/dist/browser/CdpElectronScriptEvents.js +6 -6
  155. package/dist/browser/CdpElectronScripts.js +2 -2
  156. package/dist/browser/CdpElectronWorkers.js +4 -4
  157. package/dist/browser/CdpObservationSession.js +18 -23
  158. package/dist/browser/CdpPageCapture.js +4 -4
  159. package/dist/browser/CdpPageCaptureScripts.js +2 -2
  160. package/dist/browser/CdpPageCaptureWorkers.js +9 -9
  161. package/dist/browser/CdpSafeMetadata.js +48 -10
  162. package/dist/browser/CdpScreenshot.js +5 -5
  163. package/dist/browser/CdpTargetEvents.js +8 -0
  164. package/dist/browser/CdpTargetSession.js +2 -2
  165. package/dist/browser/CdpWebMcpDiscovery.js +22 -16
  166. package/dist/browser/PlaywrightBrowserScenarioProvider.js +7 -6
  167. package/dist/browser/PlaywrightElectronActiveProvider.js +3 -6
  168. package/dist/browser/PlaywrightScenarioEvents.js +59 -51
  169. package/dist/browser/PlaywrightScenarioSession.js +8 -1
  170. package/dist/browser/WebSourceMapFetcher.js +37 -53
  171. package/dist/browser/assets/LocalWebScriptArtifacts.js +87 -0
  172. package/dist/browser/assets/PageScriptCapture.js +32 -0
  173. package/dist/browser/assets/PublishWebScripts.js +74 -0
  174. package/dist/browser/assets/ScenarioScriptCapture.js +76 -0
  175. package/dist/browser/assets/ScriptCaptureAdapters.js +57 -0
  176. package/dist/browser/assets/WebArtifactReads.js +56 -0
  177. package/dist/browser/assets/WebSourceLocationArtifacts.js +40 -0
  178. package/dist/browser/execution/CdpEventListeners.js +79 -0
  179. package/dist/browser/execution/CdpExecutionCapture.js +135 -0
  180. package/dist/browser/execution/CdpExecutionCollection.js +57 -0
  181. package/dist/browser/execution/CdpExecutionWindow.js +100 -0
  182. package/dist/browser/execution/CdpListenerSelector.js +22 -0
  183. package/dist/browser/execution/CdpPreciseCoverage.js +48 -0
  184. package/dist/browser/execution/CdpRuntimeInitiator.js +18 -0
  185. package/dist/browser/execution/CdpRuntimeProtocol.js +106 -0
  186. package/dist/browser/execution/CdpRuntimeRequests.js +81 -0
  187. package/dist/browser/execution/CdpRuntimeSession.js +163 -0
  188. package/dist/browser/execution/CdpRuntimeSources.js +223 -0
  189. package/dist/browser/execution/CdpWebRuntimeProvider.js +51 -0
  190. package/dist/browser/modules/NativeModuleResolver.js +210 -0
  191. package/dist/browser/modules/WebModuleArtifacts.js +40 -0
  192. package/dist/browser/network/PlaywrightNetworkContent.js +71 -0
  193. package/dist/browser/network/PlaywrightScenarioNetwork.js +180 -0
  194. package/dist/browser/providerIdentities.js +24 -0
  195. package/dist/catalogIdentity.js +23 -15
  196. package/dist/cli/androidCommands.js +13 -3
  197. package/dist/cli/applicationCommands.js +39 -8
  198. package/dist/cli/artifactCommands.js +1 -1
  199. package/dist/cli/browserAdvancedCommands.js +27 -9
  200. package/dist/cli/coreAnalysisCommands.js +5 -493
  201. package/dist/cli/coreBinaryCommands.js +211 -0
  202. package/dist/cli/coreNativeCommands.js +293 -0
  203. package/dist/cli/electronCommands.js +13 -18
  204. package/dist/cli/firmwareCommands.js +3 -3
  205. package/dist/cli/javascriptApplicationAnalysis.js +1 -1
  206. package/dist/cli/javascriptRecoveryCommands.js +45 -0
  207. package/dist/cli/managedCommands.js +4 -4
  208. package/dist/cli/managedProjectGraphCommand.js +1 -1
  209. package/dist/cli/referenceSourceImportStatus.js +6 -1
  210. package/dist/cli/utilityCommands.js +47 -23
  211. package/dist/cli/webModuleCommands.js +56 -0
  212. package/dist/cli/webRuntimeCommands.js +60 -0
  213. package/dist/cli/webScriptCommands.js +31 -0
  214. package/dist/cli/webSourceLocationCommands.js +42 -0
  215. package/dist/cli.js +10 -0
  216. package/dist/cliBrowserContext.js +4 -2
  217. package/dist/cliBrowserScenarioCommands.js +4 -3
  218. package/dist/cliCommandNames.js +8 -0
  219. package/dist/cliJavaScriptRuntimeCommands.js +6 -4
  220. package/dist/cliJsonInput.js +9 -2
  221. package/dist/cliOutput.js +37 -11
  222. package/dist/composition/android.js +3 -0
  223. package/dist/composition/auxiliaryAnalysisProviders.js +30 -0
  224. package/dist/composition/binary.js +25 -0
  225. package/dist/composition/browserObservation.js +3 -0
  226. package/dist/composition/browserScenario.js +3 -0
  227. package/dist/composition/directAnalysis.js +17 -0
  228. package/dist/composition/electronObservation.js +3 -0
  229. package/dist/composition/electronScenario.js +3 -0
  230. package/dist/composition/firmware.js +3 -0
  231. package/dist/composition/javascriptRecovery.js +3 -0
  232. package/dist/composition/javascriptRuntimeObservation.js +3 -0
  233. package/dist/composition/optionalObservationProviders.js +49 -0
  234. package/dist/composition/webModules.js +5 -0
  235. package/dist/composition/webRuntime.js +4 -0
  236. package/dist/composition/webSourceLocations.js +5 -0
  237. package/dist/config/parseConfig.js +22 -3
  238. package/dist/contracts/{androidToolContracts.js → android/androidToolContracts.js} +5 -5
  239. package/dist/contracts/applicationToolContracts.js +43 -8
  240. package/dist/contracts/artifactToolContracts.js +2 -2
  241. package/dist/contracts/browserScenarioToolContracts.js +1 -1
  242. package/dist/contracts/enhancedInputs.js +1 -1
  243. package/dist/contracts/{firmwareToolContracts.js → firmware/firmwareToolContracts.js} +5 -5
  244. package/dist/contracts/{applicationWorkflowInputContracts.js → javascript/applicationWorkflowInputContracts.js} +6 -6
  245. package/dist/contracts/{electronToolContracts.js → javascript/electronToolContracts.js} +6 -6
  246. package/dist/contracts/{javascriptApplicationWorkflowExamples.js → javascript/javascriptApplicationWorkflowExamples.js} +3 -3
  247. package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +23 -0
  248. package/dist/contracts/{javascriptRuntimeObservationToolContracts.js → javascript/javascriptRuntimeObservationToolContracts.js} +3 -3
  249. package/dist/contracts/{javascriptRuntimeReconciliationExample.js → javascript/javascriptRuntimeReconciliationExample.js} +5 -5
  250. package/dist/contracts/{managedToolContracts.js → managed/managedToolContracts.js} +3 -3
  251. package/dist/contracts/{managedWorkflowExamples.js → managed/managedWorkflowExamples.js} +1 -1
  252. package/dist/contracts/{managedWorkflowToolContracts.js → managed/managedWorkflowToolContracts.js} +6 -6
  253. package/dist/contracts/mobileApplicationGraphExamples.js +105 -0
  254. package/dist/contracts/{nativeToolContracts.js → native/nativeToolContracts.js} +14 -7
  255. package/dist/contracts/officialToolContracts.js +3 -3
  256. package/dist/contracts/sessionToolContracts.js +1 -1
  257. package/dist/contracts/toolContracts.js +13 -7
  258. package/dist/contracts/toolEffects.js +32 -0
  259. package/dist/contracts/toolOutputSchemaGroups.js +18 -18
  260. package/dist/contracts/webRuntimeToolContracts.js +43 -0
  261. package/dist/contracts/webScriptToolContracts.js +68 -0
  262. package/dist/domain/analysisErrorCore.js +4 -2
  263. package/dist/domain/analysisErrorProjection.js +1 -0
  264. package/dist/domain/{androidApplication.js → android/androidApplication.js} +7 -6
  265. package/dist/domain/apple/appleApplication.js +277 -0
  266. package/dist/domain/{appleAssetCatalog.js → apple/appleAssetCatalog.js} +2 -2
  267. package/dist/domain/apple/appleBundleAnatomy.js +236 -0
  268. package/dist/domain/{interfaceBuilderGraph.js → apple/interfaceBuilderGraph.js} +47 -314
  269. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +411 -0
  270. package/dist/domain/{keyedArchive.js → apple/keyedArchive.js} +10 -9
  271. package/dist/domain/apple/plistValue.js +35 -0
  272. package/dist/domain/artifactInventoryEvidence.js +12 -2
  273. package/dist/domain/artifactInventorySnapshot.js +1 -0
  274. package/dist/domain/artifactOperationError.js +5 -1
  275. package/dist/domain/artifactPathSyntax.js +26 -0
  276. package/dist/domain/browserNetworkEvidence.js +82 -0
  277. package/dist/domain/browserObservationError.js +2 -0
  278. package/dist/domain/browserObservationSchemas.js +2 -1
  279. package/dist/domain/browserScenarioCapture.js +22 -0
  280. package/dist/domain/browserScenarioCaptureValues.js +25 -0
  281. package/dist/domain/browserScenarioDiff.js +6 -3
  282. package/dist/domain/browserScenarioDiffEvidence.js +35 -1
  283. package/dist/domain/browserScenarioValues.js +12 -1
  284. package/dist/domain/browserSession.js +2 -7
  285. package/dist/domain/bundleComparison.js +2 -1
  286. package/dist/domain/callPath.js +52 -44
  287. package/dist/domain/comparisonStatus.js +39 -0
  288. package/dist/domain/evidenceBundle.js +98 -35
  289. package/dist/domain/{firmwareAnalysis.js → firmware/firmwareAnalysis.js} +2 -2
  290. package/dist/domain/functionComparisonNormalization.js +11 -13
  291. package/dist/domain/hopperValues.js +2 -2
  292. package/dist/domain/inputIssueProjection.js +17 -2
  293. package/dist/domain/{electronObservation.js → javascript/electronObservation.js} +5 -11
  294. package/dist/domain/{electronStaticAnalysisBrowser.js → javascript/electronStaticAnalysisBrowser.js} +4 -3
  295. package/dist/domain/{electronStaticAnalysisIpc.js → javascript/electronStaticAnalysisIpc.js} +2 -2
  296. package/dist/domain/{electronStaticAnalysisNative.js → javascript/electronStaticAnalysisNative.js} +12 -13
  297. package/dist/domain/javascript/electronStaticAnalysisTypes.js +1 -0
  298. package/dist/domain/{electronStaticAnalysisValues.js → javascript/electronStaticAnalysisValues.js} +3 -3
  299. package/dist/domain/{javascriptApplicationAnalysis.js → javascript/javascriptApplicationAnalysis.js} +2 -2
  300. package/dist/domain/{javascriptApplicationChangeGraph.js → javascript/javascriptApplicationChangeGraph.js} +1 -1
  301. package/dist/domain/{javascriptApplicationEvidenceSchemas.js → javascript/javascriptApplicationEvidenceSchemas.js} +6 -4
  302. package/dist/domain/{javascriptApplicationGraph.js → javascript/javascriptApplicationGraph.js} +2 -2
  303. package/dist/domain/{javascriptApplicationGraphSchemas.js → javascript/javascriptApplicationGraphSchemas.js} +2 -2
  304. package/dist/domain/{javascriptApplicationVersionComparison.js → javascript/javascriptApplicationVersionComparison.js} +2 -2
  305. package/dist/domain/{javascriptApplicationVersionComparisonSchemas.js → javascript/javascriptApplicationVersionComparisonSchemas.js} +3 -3
  306. package/dist/domain/{javascriptApplicationVersionItems.js → javascript/javascriptApplicationVersionItems.js} +2 -2
  307. package/dist/domain/{javascriptApplicationVersionKeys.js → javascript/javascriptApplicationVersionKeys.js} +16 -9
  308. package/dist/domain/javascript/javascriptArtifactFiles.js +1 -0
  309. package/dist/domain/{javascriptAstFingerprint.js → javascript/javascriptAstFingerprint.js} +38 -22
  310. package/dist/domain/javascript/javascriptAstValues.js +23 -0
  311. package/dist/domain/{javascriptExportShapeComparison.js → javascript/javascriptExportShapeComparison.js} +1 -1
  312. package/dist/domain/{javascriptExportShapeComparisonSchemas.js → javascript/javascriptExportShapeComparisonSchemas.js} +2 -2
  313. package/dist/domain/{javascriptExportShapeSelection.js → javascript/javascriptExportShapeSelection.js} +1 -1
  314. package/dist/domain/{javascriptExportShapeVariants.js → javascript/javascriptExportShapeVariants.js} +1 -1
  315. package/dist/domain/{javascriptFeatureSeed.js → javascript/javascriptFeatureSeed.js} +4 -3
  316. package/dist/domain/{javascriptFeatureTrace.js → javascript/javascriptFeatureTrace.js} +2 -2
  317. package/dist/domain/{javascriptFeatureTraceSchemas.js → javascript/javascriptFeatureTraceSchemas.js} +32 -18
  318. package/dist/domain/{javascriptFeatureTraversal.js → javascript/javascriptFeatureTraversal.js} +6 -2
  319. package/dist/domain/{javascriptNativeHandoff.js → javascript/javascriptNativeHandoff.js} +1 -1
  320. package/dist/domain/javascript/javascriptRecovery.js +88 -0
  321. package/dist/domain/{javascriptRuntimeLoadState.js → javascript/javascriptRuntimeLoadState.js} +1 -1
  322. package/dist/domain/{javascriptRuntimeObservation.js → javascript/javascriptRuntimeObservation.js} +2 -2
  323. package/dist/domain/{javascriptRuntimeReconciliationActive.js → javascript/javascriptRuntimeReconciliationActive.js} +3 -3
  324. package/dist/domain/{javascriptRuntimeReconciliationGraph.js → javascript/javascriptRuntimeReconciliationGraph.js} +1 -1
  325. package/dist/domain/{javascriptRuntimeReconciliationMatching.js → javascript/javascriptRuntimeReconciliationMatching.js} +2 -2
  326. package/dist/domain/{javascriptRuntimeReconciliationParsing.js → javascript/javascriptRuntimeReconciliationParsing.js} +5 -5
  327. package/dist/domain/{javascriptRuntimeReconciliationResult.js → javascript/javascriptRuntimeReconciliationResult.js} +2 -2
  328. package/dist/domain/{javascriptRuntimeReconciliationSchemas.js → javascript/javascriptRuntimeReconciliationSchemas.js} +4 -4
  329. package/dist/domain/{javascriptRuntimeStaticCandidates.js → javascript/javascriptRuntimeStaticCandidates.js} +1 -1
  330. package/dist/domain/{javascriptSemanticAnalysis.js → javascript/javascriptSemanticAnalysis.js} +40 -14
  331. package/dist/domain/{javascriptSemanticAsyncEffects.js → javascript/javascriptSemanticAsyncEffects.js} +2 -1
  332. package/dist/domain/{javascriptSemanticCallResolution.js → javascript/javascriptSemanticCallResolution.js} +10 -5
  333. package/dist/domain/{javascriptSemanticCalls.js → javascript/javascriptSemanticCalls.js} +7 -4
  334. package/dist/domain/{javascriptSemanticChildProcesses.js → javascript/javascriptSemanticChildProcesses.js} +4 -2
  335. package/dist/domain/{javascriptSemanticDataEffectHelpers.js → javascript/javascriptSemanticDataEffectHelpers.js} +7 -6
  336. package/dist/domain/{javascriptSemanticDataEffects.js → javascript/javascriptSemanticDataEffects.js} +8 -6
  337. package/dist/domain/{javascriptSemanticFingerprints.js → javascript/javascriptSemanticFingerprints.js} +40 -16
  338. package/dist/domain/{javascriptSemanticGraph.js → javascript/javascriptSemanticGraph.js} +2 -2
  339. package/dist/domain/{javascriptSemanticGraphSchemas.js → javascript/javascriptSemanticGraphSchemas.js} +3 -3
  340. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +116 -0
  341. package/dist/domain/javascript/javascriptSemanticMutationValues.js +53 -0
  342. package/dist/domain/{javascriptSemanticObjects.js → javascript/javascriptSemanticObjects.js} +5 -5
  343. package/dist/domain/{javascriptSemanticPrimitives.js → javascript/javascriptSemanticPrimitives.js} +1 -1
  344. package/dist/domain/{javascriptSemanticProjection.js → javascript/javascriptSemanticProjection.js} +31 -44
  345. package/dist/domain/{javascriptSemanticPromises.js → javascript/javascriptSemanticPromises.js} +77 -22
  346. package/dist/domain/{javascriptSemanticProvenance.js → javascript/javascriptSemanticProvenance.js} +4 -1
  347. package/dist/domain/{javascriptSemanticQuery.js → javascript/javascriptSemanticQuery.js} +1 -1
  348. package/dist/domain/{javascriptSemanticQueryAssessment.js → javascript/javascriptSemanticQueryAssessment.js} +1 -1
  349. package/dist/domain/{javascriptSemanticQueryIdentity.js → javascript/javascriptSemanticQueryIdentity.js} +1 -1
  350. package/dist/domain/{javascriptSemanticQuerySchemas.js → javascript/javascriptSemanticQuerySchemas.js} +3 -3
  351. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +25 -0
  352. package/dist/domain/{javascriptSemanticResources.js → javascript/javascriptSemanticResources.js} +2 -1
  353. package/dist/domain/{javascriptSemanticReturns.js → javascript/javascriptSemanticReturns.js} +1 -1
  354. package/dist/domain/{javascriptSemanticTraceSchemas.js → javascript/javascriptSemanticTraceSchemas.js} +2 -2
  355. package/dist/domain/javascript/javascriptSemanticTraversal.js +55 -0
  356. package/dist/domain/javascript/javascriptSemanticValueTypes.js +1 -0
  357. package/dist/domain/{javascriptSemanticValues.js → javascript/javascriptSemanticValues.js} +72 -48
  358. package/dist/domain/{javascriptStaticAnalysis.js → javascript/javascriptStaticAnalysis.js} +7 -4
  359. package/dist/domain/{javascriptStaticAnalysisBundler.js → javascript/javascriptStaticAnalysisBundler.js} +14 -11
  360. package/dist/domain/{javascriptStaticAnalysisCalls.js → javascript/javascriptStaticAnalysisCalls.js} +2 -2
  361. package/dist/domain/{javascriptStaticAnalysisHelpers.js → javascript/javascriptStaticAnalysisHelpers.js} +231 -40
  362. package/dist/domain/{sourceToBundleComparison.js → javascript/sourceToBundleComparison.js} +2 -2
  363. package/dist/domain/{sourceToBundleComparisonSchemas.js → javascript/sourceToBundleComparisonSchemas.js} +4 -4
  364. package/dist/domain/{sourceToBundleSignals.js → javascript/sourceToBundleSignals.js} +2 -2
  365. package/dist/domain/{managedApplicationGraph.js → managed/managedApplicationGraph.js} +4 -4
  366. package/dist/domain/{managedApplicationGraphNodes.js → managed/managedApplicationGraphNodes.js} +1 -1
  367. package/dist/domain/{managedArtifact.js → managed/managedArtifact.js} +1 -1
  368. package/dist/domain/{managedMemberComparison.js → managed/managedMemberComparison.js} +4 -4
  369. package/dist/domain/{managedMemberComparisonCoverage.js → managed/managedMemberComparisonCoverage.js} +2 -1
  370. package/dist/domain/{managedMemberComparisonItems.js → managed/managedMemberComparisonItems.js} +97 -40
  371. package/dist/domain/{managedMemberComparisonMatch.js → managed/managedMemberComparisonMatch.js} +22 -11
  372. package/dist/domain/{managedNativeVerification.js → managed/managedNativeVerification.js} +1 -1
  373. package/dist/domain/{managedNativeVerificationMatch.js → managed/managedNativeVerificationMatch.js} +3 -3
  374. package/dist/domain/{managedNativeVerificationSchemas.js → managed/managedNativeVerificationSchemas.js} +6 -5
  375. package/dist/domain/{managedReconstruction.js → managed/managedReconstruction.js} +3 -3
  376. package/dist/domain/{nativeFunctionAnnotations.js → native/nativeFunctionAnnotations.js} +1 -1
  377. package/dist/domain/{nativeInspection.js → native/nativeInspection.js} +1 -1
  378. package/dist/domain/{nativeInvestigationGraph.js → native/nativeInvestigationGraph.js} +13 -4
  379. package/dist/domain/{nativeLoadImage.js → native/nativeLoadImage.js} +1 -1
  380. package/dist/domain/{nativeUiObservation.js → native/nativeUiObservation.js} +20 -6
  381. package/dist/domain/{objcSwiftMetadata.js → native/objcSwiftMetadata.js} +17 -0
  382. package/dist/domain/processCapture.js +4 -2
  383. package/dist/domain/processScenario.js +17 -17
  384. package/dist/domain/propertyListKeys.js +69 -0
  385. package/dist/domain/providerCleanupError.js +5 -2
  386. package/dist/domain/reconstructionCoverageEvaluation.js +46 -24
  387. package/dist/domain/reconstructionCoverageInput.js +7 -0
  388. package/dist/domain/runtimeVersion.js +2 -0
  389. package/dist/domain/sourceMapEnvelope.js +38 -0
  390. package/dist/domain/unicodeCodePointOrder.js +11 -6
  391. package/dist/domain/webBundleAnalyzerAst.js +2 -34
  392. package/dist/domain/webBundleAnalyzerInspection.js +12 -9
  393. package/dist/domain/webEventListeners.js +28 -0
  394. package/dist/domain/webExecution.js +74 -0
  395. package/dist/domain/webMcpDiscovery.js +1 -7
  396. package/dist/domain/webModuleImports.js +104 -0
  397. package/dist/domain/webModuleTrace.js +106 -0
  398. package/dist/domain/webRuntime.js +69 -0
  399. package/dist/domain/webScreenshot.js +1 -7
  400. package/dist/domain/webScriptArtifacts.js +39 -0
  401. package/dist/domain/webScriptExport.js +86 -0
  402. package/dist/domain/webScriptExportError.js +13 -0
  403. package/dist/domain/webScriptExportPlan.js +108 -0
  404. package/dist/domain/webSourceLocation.js +106 -0
  405. package/dist/domain/webSourcePosition.js +21 -0
  406. package/dist/dotnet/ManagedArtifactInspector.js +1 -1
  407. package/dist/dotnet/ManagedMemberInspector.js +1 -1
  408. package/dist/dotnet/ManagedMemberInspectorCore.js +34 -0
  409. package/dist/dotnet/ManagedMemberRows.js +5 -3
  410. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +22 -16
  411. package/dist/dotnet/ManagedNativeBoundaryInspector.js +56 -50
  412. package/dist/dotnet/ManagedStaticProvider.js +3 -33
  413. package/dist/dotnet/ManagedStaticProviderMetadata.js +36 -0
  414. package/dist/evaluation/CodexAgentEval.js +2 -1
  415. package/dist/firmware/FirmwareProvider.js +18 -12
  416. package/dist/firmware/FirmwarePublication.js +1 -1
  417. package/dist/firmware/FirmwareRelease.js +1 -1
  418. package/dist/firmware/FirmwareReports.js +12 -0
  419. package/dist/firmware/FirmwareVersion.js +80 -0
  420. package/dist/generatedMcpToolCatalog.js +1 -1
  421. package/dist/generatedPackageMetadata.js +2 -2
  422. package/dist/ghidra/GhidraFunctionValues.js +5 -5
  423. package/dist/ghidra/GhidraInstallation.js +38 -34
  424. package/dist/ghidra/GhidraInstallationPolicy.js +140 -0
  425. package/dist/ghidra/GhidraInventoryValues.js +1 -1
  426. package/dist/ghidra/GhidraLauncher.js +12 -4
  427. package/dist/ghidra/GhidraLoadImageAttest.js +36 -0
  428. package/dist/ghidra/GhidraLoadImageValues.js +1 -1
  429. package/dist/ghidra/GhidraProvider.js +15 -233
  430. package/dist/ghidra/GhidraProviderCapabilities.js +7 -14
  431. package/dist/ghidra/GhidraProviderClient.js +209 -0
  432. package/dist/ghidra/GhidraResponseBuffer.js +7 -1
  433. package/dist/ghidra/extensions/nativeaot/NativeAotReport.js +17 -1
  434. package/dist/hopper/HopperProvider.js +2 -48
  435. package/dist/hopper/HopperProviderCapabilities.js +73 -0
  436. package/dist/hopper/HopperResponseStream.js +7 -1
  437. package/dist/hopper/LinuxPrivateDisplayProbe.js +4 -4
  438. package/dist/ida/IdaProviderCapabilities.js +3 -11
  439. package/dist/ida/IdaSessionClient.js +12 -0
  440. package/dist/{browser → inspector}/JavaScriptRuntimeScope.js +16 -5
  441. package/dist/{browser → inspector}/V8InspectorCaptureProjection.js +46 -8
  442. package/dist/{browser → inspector}/V8InspectorEndpoint.js +1 -1
  443. package/dist/{browser → inspector}/V8InspectorProvider.js +10 -13
  444. package/dist/inspector/providerIdentity.js +6 -0
  445. package/dist/javascript/recovery/RecoveryFiles.js +122 -0
  446. package/dist/javascript/recovery/WakaruCommand.js +116 -0
  447. package/dist/javascript/recovery/WakaruExecution.js +100 -0
  448. package/dist/javascript/recovery/WakaruProvider.js +96 -0
  449. package/dist/javascript/recovery/WakaruPublication.js +102 -0
  450. package/dist/javascript/recovery/WakaruRelease.js +29 -0
  451. package/dist/javascript/recovery/WakaruReport.js +134 -0
  452. package/dist/javascript/sourceMaps/SourceMapCodecProcess.js +37 -0
  453. package/dist/javascript/sourceMaps/SourceMapCodecProtocol.js +20 -0
  454. package/dist/javascript/sourceMaps/SourceMapCommand.js +176 -0
  455. package/dist/javascript/sourceMaps/SourceMapDecoder.js +61 -0
  456. package/dist/javascript/sourceMaps/SourceMapFormat.js +185 -0
  457. package/dist/javascript/sourceMaps/TraceSourceMap.js +138 -0
  458. package/dist/main/shutdown.js +8 -2
  459. package/dist/main/transport.js +24 -7
  460. package/dist/main.js +4 -18
  461. package/dist/native/AppleDispatchCoverage.js +58 -0
  462. package/dist/native/AppleDispatchMetadata.js +71 -509
  463. package/dist/native/AppleMachoFixups.js +292 -0
  464. package/dist/native/AppleMachoSelection.js +188 -0
  465. package/dist/native/AppleObjcCategories.js +59 -0
  466. package/dist/native/AppleObjcDispatchFacets.js +257 -0
  467. package/dist/native/AppleObjcProperties.js +68 -0
  468. package/dist/native/AppleObjcProtocols.js +2 -1
  469. package/dist/native/AppleSwiftDispatchFacets.js +150 -0
  470. package/dist/native/NativeMacOSProvider.js +132 -72
  471. package/dist/native/NativeMacOSProviderMetadata.js +42 -0
  472. package/dist/native/NativeMachoInspection.js +45 -14
  473. package/dist/native/NativeUiHelperRuntime.js +7 -3
  474. package/dist/native/NativeUiObservation.js +8 -4
  475. package/dist/native/NativeUiOutputBudget.js +8 -0
  476. package/dist/native/parsers/codesign.js +40 -5
  477. package/dist/native/parsers/demangle.js +6 -2
  478. package/dist/native/parsers/dyldInfo.js +13 -4
  479. package/dist/native/parsers/echoedPath.js +14 -0
  480. package/dist/native/parsers/lipo.js +14 -0
  481. package/dist/native/parsers/otool.js +1 -1
  482. package/dist/native/parsers/plist.js +174 -19
  483. package/dist/process/ExecFileOutput.js +2 -0
  484. package/dist/process/ProviderProcess.js +38 -17
  485. package/dist/reference/ReferenceSourceReaderEntries.js +6 -1
  486. package/dist/server/createServer.js +48 -6
  487. package/dist/server/mcpClientMetadata.js +6 -3
  488. package/dist/server/registerAndroidTools.js +1 -1
  489. package/dist/server/registerApplicationTools/compareExportShapes.js +2 -2
  490. package/dist/server/registerApplicationTools/compareSourceToBundle.js +2 -2
  491. package/dist/server/registerApplicationTools/compareVersions.js +2 -2
  492. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +43 -0
  493. package/dist/server/registerApplicationTools/traceFeature.js +1 -1
  494. package/dist/server/registerApplicationTools/traceSemantics.js +1 -1
  495. package/dist/server/registerApplicationTools.js +2 -0
  496. package/dist/server/registerBrowserScenarioTool.js +6 -2
  497. package/dist/server/registerBrowserTools.js +13 -2
  498. package/dist/server/registerCloseLifecycleTool.js +1 -1
  499. package/dist/server/registerElectronTools.js +21 -7
  500. package/dist/server/registerJavaScriptRecoveryTool.js +17 -0
  501. package/dist/server/registerJavaScriptRuntimeObservationTools.js +9 -4
  502. package/dist/server/registerManagedTools.js +3 -3
  503. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +2 -2
  504. package/dist/server/registerManagedWorkflowTools/contract.js +1 -1
  505. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +1 -1
  506. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +1 -1
  507. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +2 -2
  508. package/dist/server/registerNativeTools.js +1 -1
  509. package/dist/server/registerPrompts.js +5 -1
  510. package/dist/server/registerSessionTools.js +1 -1
  511. package/dist/server/registerWebModuleTool.js +17 -0
  512. package/dist/server/registerWebRuntimeTools.js +31 -0
  513. package/dist/server/registerWebScriptTool.js +18 -0
  514. package/dist/server/registerWebSourceLocationTool.js +17 -0
  515. package/dist/server/sessionAvailabilityPolicy.js +24 -12
  516. package/dist/windows/WindowsOwnedProcess.js +3 -1
  517. package/install.sh +12 -2
  518. package/native/windows/README.md +5 -0
  519. package/native/windows/build/manifest.json +2 -2
  520. package/native/windows/build/rea-windows-x64.node +0 -0
  521. package/package.json +40 -19
  522. package/scripts/hopper-demo-x11.py +67 -8
  523. package/scripts/rea.mjs +9 -1
  524. package/skills/reverse-engineer-anything/SKILL.md +3 -3
  525. package/skills/reverse-engineer-anything/references/android-applications.md +2 -2
  526. package/skills/reverse-engineer-anything/references/javascript-applications.md +1 -1
  527. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +32 -23
  528. package/dist/application/runtime.js +0 -53
  529. package/dist/domain/appleApplication.js +0 -181
  530. package/dist/domain/javascriptAstValues.js +0 -13
  531. package/dist/domain/javascriptSemanticTraversal.js +0 -30
  532. package/dist/native/NativeHostCapabilities.js +0 -23
  533. /package/dist/application/{AndroidAnalysisPort.js → DirectAnalysisDependencies.js} +0 -0
  534. /package/dist/application/{BinarySessionPort.js → WebModulePorts.js} +0 -0
  535. /package/dist/application/{ElectronActiveObservationPort.js → WebRuntimePort.js} +0 -0
  536. /package/dist/application/{ElectronObservationPort.js → WebScriptArtifactPort.js} +0 -0
  537. /package/dist/application/{FirmwareAnalysisPort.js → WebSourceLocationPorts.js} +0 -0
  538. /package/dist/application/{JavaScriptArtifactAnalysisTypes.js → android/AndroidAnalysisPort.js} +0 -0
  539. /package/dist/application/{AbortablePromise.js → binary/AbortablePromise.js} +0 -0
  540. /package/dist/application/{JavaScriptRuntimeObservationPort.js → binary/BinarySessionPort.js} +0 -0
  541. /package/dist/application/{BinarySessionStatus.js → binary/BinarySessionStatus.js} +0 -0
  542. /package/dist/{domain/electronStaticAnalysisTypes.js → application/firmware/FirmwareAnalysisPort.js} +0 -0
  543. /package/dist/{domain/javascriptSemanticValueTypes.js → application/investigation/InvestigationRecordPort.js} +0 -0
  544. /package/dist/application/{ElectronBoundaryGraph.js → javascript/ElectronBoundaryGraph.js} +0 -0
  545. /package/dist/application/{ElectronBoundaryGraphIpc.js → javascript/ElectronBoundaryGraphIpc.js} +0 -0
  546. /package/dist/application/{ElectronBoundaryGraphNative.js → javascript/ElectronBoundaryGraphNative.js} +0 -0
  547. /package/dist/application/{ElectronBoundaryGraphWindows.js → javascript/ElectronBoundaryGraphWindows.js} +0 -0
  548. /package/dist/application/{JavaScriptArtifactGraphBundlers.js → javascript/JavaScriptArtifactGraphBundlers.js} +0 -0
  549. /package/dist/application/{JavaScriptArtifactGraphEvidence.js → javascript/JavaScriptArtifactGraphEvidence.js} +0 -0
  550. /package/dist/application/{JavaScriptArtifactReconstructionInput.js → javascript/JavaScriptArtifactReconstructionInput.js} +0 -0
  551. /package/dist/application/{JavaScriptSemanticGraphEvidence.js → javascript/JavaScriptSemanticGraphEvidence.js} +0 -0
  552. /package/dist/application/{JavaScriptSemanticGraphValueProjection.js → javascript/JavaScriptSemanticGraphValueProjection.js} +0 -0
  553. /package/dist/artifacts/{NibArchive.js → apple/NibArchive.js} +0 -0
  554. /package/dist/domain/{androidAnalysis.js → android/androidAnalysis.js} +0 -0
  555. /package/dist/domain/{electronActiveObservation.js → javascript/electronActiveObservation.js} +0 -0
  556. /package/dist/domain/{electronStaticAnalysis.js → javascript/electronStaticAnalysis.js} +0 -0
  557. /package/dist/domain/{javascriptExportShapeComparisonIdentity.js → javascript/javascriptExportShapeComparisonIdentity.js} +0 -0
  558. /package/dist/domain/{javascriptRuntimeReconciliation.js → javascript/javascriptRuntimeReconciliation.js} +0 -0
  559. /package/dist/domain/{javascriptRuntimeReconciliationRuntime.js → javascript/javascriptRuntimeReconciliationRuntime.js} +0 -0
  560. /package/dist/domain/{javascriptSemanticCoverage.js → javascript/javascriptSemanticCoverage.js} +0 -0
  561. /package/dist/domain/{javascriptSemanticDerivedAnalysis.js → javascript/javascriptSemanticDerivedAnalysis.js} +0 -0
  562. /package/dist/domain/{javascriptSemanticGraphSerialization.js → javascript/javascriptSemanticGraphSerialization.js} +0 -0
  563. /package/dist/domain/{javascriptSemanticIr.js → javascript/javascriptSemanticIr.js} +0 -0
  564. /package/dist/domain/{javascriptSemanticQueryRelations.js → javascript/javascriptSemanticQueryRelations.js} +0 -0
  565. /package/dist/domain/{javascriptSemanticState.js → javascript/javascriptSemanticState.js} +0 -0
  566. /package/dist/domain/{javascriptSourceParser.js → javascript/javascriptSourceParser.js} +0 -0
  567. /package/dist/domain/{javascriptStaticAnalysisFindings.js → javascript/javascriptStaticAnalysisFindings.js} +0 -0
  568. /package/dist/domain/{javascriptStaticAnalysisState.js → javascript/javascriptStaticAnalysisState.js} +0 -0
  569. /package/dist/domain/{javascriptStaticAnalysisTypes.js → javascript/javascriptStaticAnalysisTypes.js} +0 -0
  570. /package/dist/domain/{managedApplicationGraphCoverage.js → managed/managedApplicationGraphCoverage.js} +0 -0
  571. /package/dist/domain/{managedApplicationGraphNodeCoverage.js → managed/managedApplicationGraphNodeCoverage.js} +0 -0
  572. /package/dist/domain/{nativeApiBoundary.js → native/nativeApiBoundary.js} +0 -0
  573. /package/dist/domain/{nativeDataType.js → native/nativeDataType.js} +0 -0
  574. /package/dist/domain/{nativeInstruction.js → native/nativeInstruction.js} +0 -0
  575. /package/dist/domain/{nativeMetadataRecovery.js → native/nativeMetadataRecovery.js} +0 -0
  576. /package/dist/domain/{nativeValueFlow.js → native/nativeValueFlow.js} +0 -0
  577. /package/dist/domain/{nativeValueTrace.js → native/nativeValueTrace.js} +0 -0
@@ -1,13 +1,16 @@
1
- import { NATIVE_TOOL_CONTRACTS } from "./nativeToolContracts.js";
1
+ import { NATIVE_TOOL_CONTRACTS } from "./native/nativeToolContracts.js";
2
2
  import { ARTIFACT_TOOL_CONTRACTS } from "./artifactToolContracts.js";
3
- import { MANAGED_TOOL_CONTRACTS } from "./managedToolContracts.js";
4
- import { FIRMWARE_TOOL_CONTRACTS } from "./firmwareToolContracts.js";
5
- import { ANDROID_TOOL_CONTRACTS } from "./androidToolContracts.js";
6
- import { MANAGED_WORKFLOW_TOOL_CONTRACTS } from "./managedWorkflowToolContracts.js";
3
+ import { MANAGED_TOOL_CONTRACTS } from "./managed/managedToolContracts.js";
4
+ import { FIRMWARE_TOOL_CONTRACTS } from "./firmware/firmwareToolContracts.js";
5
+ import { ANDROID_TOOL_CONTRACTS } from "./android/androidToolContracts.js";
6
+ import { MANAGED_WORKFLOW_TOOL_CONTRACTS } from "./managed/managedWorkflowToolContracts.js";
7
7
  import { BROWSER_PROVIDER_TOOL_CONTRACTS } from "./browserProviderToolContracts.js";
8
- import { ELECTRON_TOOL_CONTRACTS } from "./electronToolContracts.js";
9
- import { JAVASCRIPT_RUNTIME_OBSERVATION_TOOL_CONTRACTS } from "./javascriptRuntimeObservationToolContracts.js";
8
+ import { ELECTRON_TOOL_CONTRACTS } from "./javascript/electronToolContracts.js";
9
+ import { JAVASCRIPT_RUNTIME_OBSERVATION_TOOL_CONTRACTS } from "./javascript/javascriptRuntimeObservationToolContracts.js";
10
10
  import { APPLICATION_TOOL_CONTRACTS } from "./applicationToolContracts.js";
11
+ import { WEB_SCRIPT_TOOL_CONTRACTS } from "./webScriptToolContracts.js";
12
+ import { WEB_RUNTIME_TOOL_CONTRACTS } from "./webRuntimeToolContracts.js";
13
+ import { JAVASCRIPT_RECOVERY_TOOL_CONTRACTS } from "./javascript/javascriptRecoveryToolContracts.js";
11
14
  import { OFFICIAL_TOOL_CONTRACTS } from "./officialToolContracts.js";
12
15
  import { ENHANCED_TOOL_CONTRACTS } from "./enhancedToolContracts.js";
13
16
  import { SESSION_TOOL_CONTRACTS } from "./sessionToolContracts.js";
@@ -25,6 +28,9 @@ export const TOOL_CONTRACTS = [
25
28
  ...ELECTRON_TOOL_CONTRACTS,
26
29
  ...JAVASCRIPT_RUNTIME_OBSERVATION_TOOL_CONTRACTS,
27
30
  ...APPLICATION_TOOL_CONTRACTS,
31
+ ...WEB_SCRIPT_TOOL_CONTRACTS,
32
+ ...WEB_RUNTIME_TOOL_CONTRACTS,
33
+ ...JAVASCRIPT_RECOVERY_TOOL_CONTRACTS,
28
34
  ...SESSION_TOOL_CONTRACTS,
29
35
  ];
30
36
  /** Resolve a public contract by name while retaining its exact schema types. */
@@ -18,6 +18,25 @@ const browserEvidence = effects({
18
18
  const sessionEvidence = effects({ mutatesSession: true });
19
19
  /** Explicit effect audit for every public tool. */
20
20
  export const TOOL_EFFECTS = {
21
+ observe_web_execution: effects({
22
+ mutatesTarget: true,
23
+ mutatesSession: true,
24
+ accessesNetwork: true,
25
+ mayDiscardData: true,
26
+ idempotent: false,
27
+ }),
28
+ inspect_web_event_listeners: browserEvidence,
29
+ trace_web_source_location: effects({
30
+ mutatesSession: true,
31
+ writesFilesystem: true,
32
+ launchesProcess: true,
33
+ }),
34
+ trace_web_module_imports: effects({
35
+ mutatesSession: true,
36
+ writesFilesystem: true,
37
+ launchesProcess: true,
38
+ accessesNetwork: true,
39
+ }),
21
40
  inspect_firmware_regions: effects({
22
41
  mutatesSession: true,
23
42
  launchesProcess: true,
@@ -192,7 +211,18 @@ export const TOOL_EFFECTS = {
192
211
  list_javascript_runtime_targets: browserEvidence,
193
212
  observe_javascript_runtime: browserEvidence,
194
213
  analyze_javascript_application: evidence,
214
+ export_web_scripts: effects({
215
+ mutatesSession: true,
216
+ writesFilesystem: true,
217
+ idempotent: false,
218
+ }),
195
219
  reconcile_javascript_runtime: evidence,
220
+ recover_javascript_sources: effects({
221
+ mutatesSession: true,
222
+ writesFilesystem: true,
223
+ launchesProcess: true,
224
+ idempotent: false,
225
+ }),
196
226
  trace_application_feature: evidence,
197
227
  trace_javascript_semantics: evidence,
198
228
  compare_application_versions: evidence,
@@ -200,6 +230,8 @@ export const TOOL_EFFECTS = {
200
230
  compare_javascript_export_shapes: evidence,
201
231
  build_reconstruction_obligation_ledger: evidence,
202
232
  evaluate_reconstruction_coverage: effects(),
233
+ project_android_application_graph: evidence,
234
+ project_apple_application_graph: evidence,
203
235
  open_binary: effects({ mutatesSession: true, launchesProcess: true }),
204
236
  close_binary: effects({
205
237
  mutatesSession: true,
@@ -1,27 +1,27 @@
1
1
  import { z } from "zod";
2
- import { nativeFunctionAnnotationsSchema } from "../domain/nativeFunctionAnnotations.js";
3
- import { nativeLoadImageSchema } from "../domain/nativeLoadImage.js";
4
- import { nativeUiResultSchema } from "../domain/nativeUiObservation.js";
5
- import { nativeValueTraceSchema } from "../domain/nativeValueTrace.js";
6
- import { nativeDataTypeSchema } from "../domain/nativeDataType.js";
7
- import { nativeInstructionSchema, nativeCallTargetsSchema, } from "../domain/nativeInstruction.js";
2
+ import { nativeFunctionAnnotationsSchema } from "../domain/native/nativeFunctionAnnotations.js";
3
+ import { nativeLoadImageSchema } from "../domain/native/nativeLoadImage.js";
4
+ import { nativeUiResultSchema } from "../domain/native/nativeUiObservation.js";
5
+ import { nativeValueTraceSchema } from "../domain/native/nativeValueTrace.js";
6
+ import { nativeDataTypeSchema } from "../domain/native/nativeDataType.js";
7
+ import { nativeInstructionSchema, nativeCallTargetsSchema, } from "../domain/native/nativeInstruction.js";
8
8
  import { jsonValueSchema } from "../domain/jsonValue.js";
9
9
  import { residualUnknownSchema } from "../domain/residualUnknown.js";
10
10
  import { evidenceBundleSchema } from "../domain/evidenceBundle.js";
11
11
  import { processCaptureComparisonSchema, processCaptureSchema, } from "../domain/processCapture.js";
12
12
  import { functionInstructionWindowSchema, referenceKindSchema, } from "../domain/hopperValues.js";
13
- import { nativeApiInspectionResultSchema } from "../domain/nativeApiBoundary.js";
14
- import { demangleSwiftSchema, inspectMachoSchema, inspectPlistSchema, inspectSignatureSchema, listArchitecturesSchema, } from "../domain/nativeInspection.js";
13
+ import { nativeApiInspectionResultSchema } from "../domain/native/nativeApiBoundary.js";
14
+ import { demangleSwiftSchema, inspectMachoSchema, inspectPlistSchema, inspectSignatureSchema, listArchitecturesSchema, } from "../domain/native/nativeInspection.js";
15
15
  import { artifactExtractionResultSchema } from "../domain/artifactGraph.js";
16
16
  import { artifactInspectionResultSchema } from "../domain/artifactInspection.js";
17
- import { interfaceBuilderAnalysisSchema } from "../domain/interfaceBuilderGraph.js";
18
- import { keyedArchiveResultSchema } from "../domain/keyedArchive.js";
19
- import { appleAssetCatalogResultSchema } from "../domain/appleAssetCatalog.js";
20
- import { managedArtifactInspectionSchema, managedMemberInspectionSchema, managedNativeBoundaryInspectionSchema, } from "../domain/managedArtifact.js";
21
- import { managedMemberComparisonResultSchema } from "../domain/managedMemberComparison.js";
22
- import { managedNativeVerificationResultSchema } from "../domain/managedNativeVerification.js";
23
- import { managedReconstructionImportResultSchema } from "../domain/managedReconstruction.js";
24
- import { managedApplicationGraphResultSchema } from "../domain/managedApplicationGraph.js";
17
+ import { interfaceBuilderAnalysisSchema } from "../domain/apple/interfaceBuilderGraph.js";
18
+ import { keyedArchiveResultSchema } from "../domain/apple/keyedArchive.js";
19
+ import { appleAssetCatalogResultSchema } from "../domain/apple/appleAssetCatalog.js";
20
+ import { managedArtifactInspectionSchema, managedMemberInspectionSchema, managedNativeBoundaryInspectionSchema, } from "../domain/managed/managedArtifact.js";
21
+ import { managedMemberComparisonResultSchema } from "../domain/managed/managedMemberComparison.js";
22
+ import { managedNativeVerificationResultSchema } from "../domain/managed/managedNativeVerification.js";
23
+ import { managedReconstructionImportResultSchema } from "../domain/managed/managedReconstruction.js";
24
+ import { managedApplicationGraphResultSchema } from "../domain/managed/managedApplicationGraph.js";
25
25
  import { artifactComparisonResultSchema } from "../domain/artifactComparison.js";
26
26
  import { functionComparisonResultSchema } from "../domain/functionComparison.js";
27
27
  import { bundleComparisonResultSchema } from "../domain/bundleComparison.js";
@@ -30,8 +30,8 @@ import { callPathResultSchema } from "../domain/callPath.js";
30
30
  import { staticRuntimeCorrelationResultSchema } from "../domain/staticRuntimeCorrelation.js";
31
31
  import { reconstructionVerificationResultSchema } from "../domain/reconstructionVerification.js";
32
32
  import { analysisErrorProjectionSchema } from "./errorSchemas.js";
33
- import { nativeDispatchMetadataResultSchema } from "../domain/objcSwiftMetadata.js";
34
- import { nativeInvestigationTraceSchema } from "../domain/nativeInvestigationGraph.js";
33
+ import { nativeDispatchMetadataResultSchema } from "../domain/native/objcSwiftMetadata.js";
34
+ import { nativeInvestigationTraceSchema } from "../domain/native/nativeInvestigationGraph.js";
35
35
  import { addressList, addressedValue, addressedEntry, containingProcedureResolution, functionDossierOutput, graphNode, lifecycleResultOf, nullableText, procedureIdentity, procedureInfoOutput, evidenceResultOf as resultOf, segmentOutput, sessionProvider, symbolDiscoveryOutput, targetFormatSchema, targetKindSchema, } from "./toolOutputSchemaPrimitives.js";
36
36
  const contextFacetSchema = z.discriminatedUnion("state", [
37
37
  z.object({ state: z.literal("available"), value: jsonValueSchema }),
@@ -0,0 +1,43 @@
1
+ import { toolContractMetadata } from "./toolEffects.js";
2
+ import { evidenceResultOf } from "./toolOutputSchemas.js";
3
+ import { observeWebExecutionInputSchema, webExecutionSchema, } from "../domain/webExecution.js";
4
+ import { inspectWebEventListenersInputSchema, webEventListenersSchema, } from "../domain/webEventListeners.js";
5
+ /** Native website runtime primitives distinguish instrumentation from listener inspection. */
6
+ export const WEB_RUNTIME_TOOL_CONTRACTS = [
7
+ {
8
+ name: "observe_web_execution",
9
+ ...toolContractMetadata("observe_web_execution"),
10
+ description: "Instrument one selected CDP page for a finite, externally driven precise coverage window. Resets execution counters and prevents optimized execution until stopped. Returns complete nested UTF-16 ranges/counts, independently hashed script text and request initiator associations by session script ID. Does not navigate, click, evaluate selected code or close the externally owned page. Navigation ends document-scoped collection; workers and UI causality remain outside this claim. Emits an actual armed progress notification before external actions.",
11
+ kind: "browser-provider",
12
+ inputSchema: observeWebExecutionInputSchema,
13
+ outputSchema: evidenceResultOf(webExecutionSchema),
14
+ examples: [
15
+ {
16
+ title: "Attribute externally triggered page execution",
17
+ input: {
18
+ cdp_endpoint: "http://127.0.0.1:9222",
19
+ target_id: "TARGET_ID_FROM_LIST_BROWSER_TARGETS",
20
+ observation_ms: 10_000,
21
+ },
22
+ },
23
+ ],
24
+ },
25
+ {
26
+ name: "inspect_web_event_listeners",
27
+ ...toolContractMetadata("inspect_web_event_listeners"),
28
+ description: "Inspect listeners registered directly on the first main-document CSS match in one selected CDP page. Returns event flags, native callback locations, source ownership and exact script text/digests inline. Does not dispatch events, evaluate JavaScript or invoke handlers. Delegated ancestor/framework listeners and execution history remain unknown. Releases REA's object group and transport, preserving the external page.",
29
+ kind: "browser-provider",
30
+ inputSchema: inspectWebEventListenersInputSchema,
31
+ outputSchema: evidenceResultOf(webEventListenersSchema),
32
+ examples: [
33
+ {
34
+ title: "Find a selected button's callback source",
35
+ input: {
36
+ cdp_endpoint: "http://127.0.0.1:9222",
37
+ target_id: "TARGET_ID_FROM_LIST_BROWSER_TARGETS",
38
+ selector: "#submit",
39
+ },
40
+ },
41
+ ],
42
+ },
43
+ ];
@@ -0,0 +1,68 @@
1
+ import { exportWebScriptsInputSchema, webScriptExportResultSchema, } from "../domain/webScriptExport.js";
2
+ import { webModuleTraceInputSchema, webModuleTraceResultSchema, } from "../domain/webModuleTrace.js";
3
+ import { toolContractMetadata } from "./toolEffects.js";
4
+ import { evidenceResultOf } from "./toolOutputSchemas.js";
5
+ import { webSourceLocationInputSchema, webSourceLocationResultSchema, } from "../domain/webSourceLocation.js";
6
+ /** Local captured-script publication contracts shared by CLI and MCP. */
7
+ export const WEB_SCRIPT_TOOL_CONTRACTS = [
8
+ {
9
+ name: "trace_web_source_location",
10
+ ...toolContractMetadata("trace_web_source_location"),
11
+ description: "Trace one generated position in an exported website script through an explicitly paired local source map. Verifies manifest, selected script and map SHA-256/byte identities; returns every equal-position mapping, reported source/root, resolved source URL, embedded sourcesContent and original position inline. One-based lines and zero-based UTF-16 columns; greatest generated position <= requested across lines. Duplicate sources and generated-only mappings remain distinct. Caller-selected pairing does not establish deployment authenticity or execution. Regular maps and inline indexed sections only; external section URLs are unsupported. No network access or application execution; uses the pinned upstream codec in an owned Node process with private temporary files, independent 192 MiB old-generation heap and 20-second deadline. 4 MiB map, 32 MiB reply; complete evidence or actionable resource failure. Cleanup may extend the deadline.",
12
+ kind: "application",
13
+ inputSchema: webSourceLocationInputSchema,
14
+ outputSchema: evidenceResultOf(webSourceLocationResultSchema),
15
+ examples: [
16
+ {
17
+ title: "Trace a selected captured JavaScript point to embedded original source",
18
+ input: {
19
+ manifest_path: "/analysis/scripts/manifest.json",
20
+ script_index: 0,
21
+ source_map: {
22
+ path: "/analysis/app.js.map",
23
+ url: "https://example.test/app.js.map",
24
+ },
25
+ generated_position: { line: 1, column: 25 },
26
+ },
27
+ },
28
+ ],
29
+ },
30
+ {
31
+ name: "trace_web_module_imports",
32
+ ...toolContractMetadata("trace_web_module_imports"),
33
+ description: "Trace one exported website script's outgoing native ES imports/re-exports, using exact URL and optional selected import-map context. Reads a local export_web_scripts manifest and verifies the selected source's SHA-256/size; returns source positions, native resolved URLs or exact errors, every matching captured candidate and explicit unknown execution. Query/fragment identities are preserved. Computed imports and bundler IDs remain unknown. Select importer_url for unknown inline/document-base context. Caller-supplied Chromium executes only a trusted REA resolver stub in an owned context with page requests locally fulfilled/blocked; no captured application execution or asset refetch. Requires absolute REA_BROWSER_EXECUTABLE for literal imports. 32 MiB manifest, 16 MiB source, 4 MiB map and 20-second native deadline; cleanup may extend the deadline.",
34
+ kind: "application",
35
+ inputSchema: webModuleTraceInputSchema,
36
+ outputSchema: evidenceResultOf(webModuleTraceResultSchema),
37
+ examples: [
38
+ {
39
+ title: "Trace an exported module under a selected import map",
40
+ input: {
41
+ manifest_path: "/analysis/exported-scripts/manifest.json",
42
+ script_index: 0,
43
+ import_map: {
44
+ path: "/analysis/import-map.json",
45
+ base_url: "https://example.test/app/",
46
+ },
47
+ },
48
+ },
49
+ ],
50
+ },
51
+ {
52
+ name: "export_web_scripts",
53
+ ...toolContractMetadata("export_web_scripts"),
54
+ description: "Export JavaScript bytes already retained in one local inspect_web_page or capture_browser_scenario JSON capture (normalized result or complete Evidence). Writes scripts and a digest-verified manifest into an absent absolute output_directory. Returns all source URLs, script or transaction/event references, unavailable states, and an analysis_input for analyze_javascript_application when any bytes were exported. Include script sources in inspect_web_page or select capture.network.response_body in scenarios. No refetch or execution. Safe unambiguous URL layouts preserve relative module paths; versions, query variants, inline scripts, and path collisions are isolated with explicit resolution limitations.",
55
+ kind: "application",
56
+ inputSchema: exportWebScriptsInputSchema,
57
+ outputSchema: evidenceResultOf(webScriptExportResultSchema),
58
+ examples: [
59
+ {
60
+ title: "Export a saved website capture for static JavaScript analysis",
61
+ input: {
62
+ capture_path: "/analysis/capture.json",
63
+ output_directory: "/analysis/exported-scripts",
64
+ },
65
+ },
66
+ ],
67
+ },
68
+ ];
@@ -31,11 +31,13 @@ export class AnalysisCapabilityUnavailableError extends AnalysisError {
31
31
  operation;
32
32
  reason;
33
33
  _tag = "AnalysisCapabilityUnavailableError";
34
- constructor(providerId, operation, reason) {
35
- super(`Provider ${providerId} cannot execute ${operation}: ${reason}`);
34
+ userMessage;
35
+ constructor(providerId, operation, reason, options) {
36
+ super(`Provider ${providerId} cannot execute ${operation}: ${reason}`, options);
36
37
  this.providerId = providerId;
37
38
  this.operation = operation;
38
39
  this.reason = reason;
40
+ this.userMessage = options?.userMessage;
39
41
  }
40
42
  }
41
43
  /** Caller cancellation won before provider-neutral work completed. */
@@ -156,6 +156,7 @@ const artifactStateErrorDetails = (error) => {
156
156
  operation: error.operation,
157
157
  reason: error.reason,
158
158
  ...(error.reason === "limit" ? { truncated: true } : {}),
159
+ ...(error.detail === undefined ? {} : { detail: error.detail }),
159
160
  };
160
161
  if (error instanceof UnknownRegistryError)
161
162
  return { reason: error.reason };
@@ -1,10 +1,10 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import canonicalize from "canonicalize";
3
3
  import { z } from "zod";
4
- import { parseArtifactInventoryEvidence } from "./artifactInventoryEvidence.js";
5
- import { evidenceSchema } from "./evidence.js";
6
- import { digestSchema } from "./../domain/digests.js";
7
- import { prefixedDigestSchema } from "./../domain/digests.js";
4
+ import { parseArtifactInventoryEvidence } from "../artifactInventoryEvidence.js";
5
+ import { evidenceSchema } from "../evidence.js";
6
+ import { digestSchema } from "../digests.js";
7
+ import { prefixedDigestSchema } from "../digests.js";
8
8
  const evidenceIdSchema = prefixedDigestSchema("ev");
9
9
  const pathSchema = z.string().min(1);
10
10
  const componentSchema = z.strictObject({
@@ -86,6 +86,7 @@ export const projectAndroidApplication = (input) => {
86
86
  ? ["Source inventory pages are incomplete; absence is unknown."]
87
87
  : []),
88
88
  "Manifest, resource, signing, and bytecode semantics require a dedicated Android provider; this projection reports exact inventory paths and hashes only.",
89
+ "Runtime families are inferred from inventory formats and paths; filename suffixes do not establish valid DEX or JVM class bytes.",
89
90
  "Bridge candidates are path-based hypotheses, not decoded JNI declarations or observed runtime calls.",
90
91
  ];
91
92
  const withoutId = {
@@ -123,9 +124,9 @@ const classify = (all) => ({
123
124
  const runtimeFamilies = (all) => {
124
125
  const paths = all.map(({ path }) => path.toLowerCase());
125
126
  const families = new Set();
126
- if (all.some(({ path, format }) => format === "dex" || path.endsWith(".dex")))
127
+ if (all.some(({ path, format }) => format === "dex" || path.toLowerCase().endsWith(".dex")))
127
128
  families.add("dalvik-art");
128
- if (all.some(({ path, format }) => format === "jvm-class" || path.endsWith(".class")))
129
+ if (all.some(({ path, format }) => format === "jvm-class" || path.toLowerCase().endsWith(".class")))
129
130
  families.add("java-kotlin");
130
131
  if (all.some(({ format }) => format === "elf"))
131
132
  families.add("native");
@@ -0,0 +1,277 @@
1
+ import { createHash } from "node:crypto";
2
+ import canonicalize from "canonicalize";
3
+ import { z } from "zod";
4
+ import { appleBundleSchema, appleComponentSchema, applicationRoots, detectBundles, isMachOFormat, isSidecar, isWithin, platformsOf, } from "./appleBundleAnatomy.js";
5
+ import { parseArtifactInventoryEvidence } from "../artifactInventoryEvidence.js";
6
+ import { evidenceSchema } from "../evidence.js";
7
+ import { digestSchema } from "../digests.js";
8
+ import { prefixedDigestSchema } from "../digests.js";
9
+ const evidenceIdSchema = prefixedDigestSchema("ev");
10
+ const pathSchema = z.string().min(1);
11
+ const APPLE_ROOT_FORMATS = ["ipa", "directory", "zip", "dmg"];
12
+ /** Authenticated artifact inventory pages projected as one Apple application. */
13
+ export const appleApplicationProjectionInputSchema = z.strictObject({
14
+ inventory_evidence: z.array(evidenceSchema).min(1),
15
+ });
16
+ /** Deterministic, execution-free Apple application inventory projection. */
17
+ export const appleApplicationProjectionResultSchema = z.strictObject({
18
+ projection_id: prefixedDigestSchema("aap"),
19
+ root_sha256: digestSchema,
20
+ root_format: z.enum(APPLE_ROOT_FORMATS),
21
+ platforms: z.array(z.enum(["ios", "macos"])),
22
+ source_evidence_ids: z.array(evidenceIdSchema).min(1),
23
+ application_roots: z.array(pathSchema),
24
+ bundles: z.array(appleBundleSchema),
25
+ components: z.strictObject({
26
+ bundle_metadata: z.array(appleComponentSchema),
27
+ executables: z.array(appleComponentSchema),
28
+ frameworks: z.array(appleComponentSchema),
29
+ native_libraries: z.array(appleComponentSchema),
30
+ javascript: z.array(appleComponentSchema),
31
+ signing: z.array(appleComponentSchema),
32
+ privileged_helpers: z.array(appleComponentSchema),
33
+ launchd_plists: z.array(appleComponentSchema.extend({ domain: z.enum(["agent", "daemon"]) })),
34
+ helpers: z.array(appleComponentSchema),
35
+ }),
36
+ symlinks: z.array(pathSchema),
37
+ runtime_families: z.array(z.enum([
38
+ "native",
39
+ "swift-objective-c",
40
+ "javascript",
41
+ "react-native",
42
+ "flutter",
43
+ "unity",
44
+ ])),
45
+ bridge_candidates: z.array(z.strictObject({
46
+ source_path: pathSchema,
47
+ native_path: pathSchema,
48
+ basis: z.enum([
49
+ "javascript-and-native-content",
50
+ "react-native-convention",
51
+ "flutter-convention",
52
+ "unity-convention",
53
+ ]),
54
+ })),
55
+ coverage: z.strictObject({
56
+ status: z.enum(["complete-within-inventory", "partial"]),
57
+ inventory_complete: z.boolean(),
58
+ }),
59
+ limitations: z.array(z.string().min(1)),
60
+ });
61
+ /** Project exact Apple application paths and hashes without parsing or executing target code. */
62
+ export const projectAppleApplication = (input) => {
63
+ const parsed = appleApplicationProjectionInputSchema.parse(input);
64
+ const { evidence, inventory } = parseArtifactInventoryEvidence(parsed.inventory_evidence);
65
+ const rootFormat = appleRootFormat(inventory.manifest.root_format);
66
+ const nodes = new Map(inventory.nodes.map((node) => [node.artifact_id, node]));
67
+ const entries = inventory.occurrences
68
+ .filter(({ logical_path: path }) => path !== ".")
69
+ .map((occurrence) => {
70
+ if (occurrence.artifact_id === null)
71
+ return {
72
+ path: occurrence.logical_path,
73
+ kind: occurrence.entry_kind,
74
+ component: undefined,
75
+ };
76
+ const node = nodes.get(occurrence.artifact_id);
77
+ if (node === undefined)
78
+ throw new TypeError("Apple application occurrence has no artifact node");
79
+ return {
80
+ path: occurrence.logical_path,
81
+ kind: occurrence.entry_kind,
82
+ component: {
83
+ path: occurrence.logical_path,
84
+ artifact_id: node.artifact_id,
85
+ sha256: node.sha256,
86
+ format: node.format,
87
+ },
88
+ };
89
+ });
90
+ const inventoried = entries.flatMap(({ component }) => component === undefined ? [] : [component]);
91
+ const roots = applicationRoots(entries, {
92
+ name: evidence[0]?.subject?.name ?? "",
93
+ format: rootFormat,
94
+ });
95
+ const { all, unattributed } = attributeComponents(inventoried, roots, rootFormat);
96
+ const bundles = detectBundles(entries, roots);
97
+ const classified = classifyComponents(entries, all, roots);
98
+ const runtimeFamilies = identifyRuntimeFamilies(all);
99
+ const bridgeProjection = identifyBridgeCandidates(classified.javascript, deduplicateComponents([
100
+ ...classified.executables,
101
+ ...classified.native_libraries,
102
+ ]), roots);
103
+ const uninventoriedImage = rootFormat === "dmg" && inventory.occurrences.length === 1;
104
+ const complete = inventory.complete && !uninventoriedImage;
105
+ const limitations = projectionLimitations({
106
+ complete: inventory.complete,
107
+ uninventoriedImage,
108
+ roots,
109
+ bundles,
110
+ sidecars: entries.some(({ path }) => isSidecar(path)),
111
+ symlinks: entries.some(({ kind }) => kind === "symlink"),
112
+ unattributed,
113
+ });
114
+ const withoutId = {
115
+ root_sha256: inventory.manifest.root_sha256,
116
+ root_format: rootFormat,
117
+ platforms: platformsOf(bundles),
118
+ source_evidence_ids: evidence
119
+ .map(({ evidence_id: id }) => id)
120
+ .sort(compare),
121
+ application_roots: roots,
122
+ bundles,
123
+ components: classified,
124
+ symlinks: entries
125
+ .filter(({ kind }) => kind === "symlink")
126
+ .map(({ path }) => path)
127
+ .sort(compare),
128
+ runtime_families: runtimeFamilies,
129
+ bridge_candidates: bridgeProjection.candidates,
130
+ coverage: {
131
+ status: complete
132
+ ? "complete-within-inventory"
133
+ : "partial",
134
+ inventory_complete: inventory.complete,
135
+ },
136
+ limitations,
137
+ };
138
+ return appleApplicationProjectionResultSchema.parse({
139
+ ...withoutId,
140
+ projection_id: `aap_${digest(withoutId)}`,
141
+ });
142
+ };
143
+ /**
144
+ * IPA projection keeps every archive component, as before. Directory, ZIP,
145
+ * and DMG inventories can hold installers and other siblings, so only
146
+ * components inside an application root are attributed to it.
147
+ */
148
+ const attributeComponents = (inventoried, roots, rootFormat) => {
149
+ if (rootFormat === "ipa")
150
+ return { all: [...inventoried], unattributed: 0 };
151
+ const visible = inventoried.filter(({ path }) => !isSidecar(path));
152
+ const all = visible.filter(({ path }) => roots.some((root) => isWithin(path, root)));
153
+ return { all, unattributed: visible.length - all.length };
154
+ };
155
+ const appleRootFormat = (format) => {
156
+ const root = APPLE_ROOT_FORMATS.find((candidate) => candidate === format);
157
+ if (root === undefined)
158
+ throw new TypeError(`Apple application projection requires IPA, directory, ZIP, or DMG inventory Evidence (got ${format})`);
159
+ return root;
160
+ };
161
+ const classifyComponents = (entries, all, roots) => {
162
+ const withinApp = (path) => roots.some((root) => isWithin(path, root));
163
+ const anatomy = (pattern) => entries.flatMap(({ path, kind, component }) => kind === "file" &&
164
+ component !== undefined &&
165
+ !isSidecar(path) &&
166
+ withinApp(path) &&
167
+ pattern.test(path)
168
+ ? [component]
169
+ : []);
170
+ return {
171
+ bundle_metadata: all.filter(({ path }) => /(?:^|\/)Info\.plist$/u.test(path)),
172
+ executables: all.filter(({ path, format }) => withinApp(path) && isMachOFormat(format)),
173
+ frameworks: all.filter(({ path }) => /\.framework\//u.test(path)),
174
+ native_libraries: all.filter(({ path }) => /\.(?:dylib|so)$/iu.test(path)),
175
+ javascript: all.filter(({ format }) => format === "javascript-bundle"),
176
+ signing: all.filter(({ path }) => /(?:^|\/)(?:embedded\.(?:mobileprovision|provisionprofile)|_CodeSignature\/CodeResources)$/u.test(path)),
177
+ privileged_helpers: anatomy(/(?:^|\/)Contents\/Library\/LaunchServices\/[^/]+$/u),
178
+ launchd_plists: anatomy(/(?:^|\/)Contents\/Library\/Launch(?:Agents|Daemons)\/[^/]+\.plist$/u).map((component) => ({
179
+ ...component,
180
+ domain: component.path.includes("/LaunchDaemons/")
181
+ ? "daemon"
182
+ : "agent",
183
+ })),
184
+ helpers: anatomy(/(?:^|\/)Contents\/Helpers\/[^/]+$/u),
185
+ };
186
+ };
187
+ const deduplicateComponents = (values) => [...new Map(values.map((value) => [value.path, value])).values()].sort((left, right) => compare(left.path, right.path));
188
+ const identifyRuntimeFamilies = (all) => {
189
+ const paths = all.map(({ path }) => path.toLowerCase());
190
+ const families = new Set();
191
+ if (all.some(({ format }) => ["mach-o", "mach-o-universal"].includes(format)))
192
+ families.add("native");
193
+ if (paths.some((path) => /\.(?:dylib|framework\/[^/]+)$/u.test(path)))
194
+ families.add("swift-objective-c");
195
+ if (all.some(({ format }) => format === "javascript-bundle"))
196
+ families.add("javascript");
197
+ if (paths.some((path) => path.includes("reactnative") ||
198
+ path.includes("react.framework") ||
199
+ path.includes("hermes")))
200
+ families.add("react-native");
201
+ if (paths.some((path) => path.includes("flutter.framework") || path.includes("app.framework")))
202
+ families.add("flutter");
203
+ if (paths.some((path) => path.includes("unityframework.framework")))
204
+ families.add("unity");
205
+ return [...families].sort(compare);
206
+ };
207
+ /** Pair scripts and native code only within the same application root. */
208
+ const identifyBridgeCandidates = (scripts, native, roots) => {
209
+ const owner = (path) => roots.find((root) => isWithin(path, root)) ?? null;
210
+ return {
211
+ candidates: scripts.flatMap((script) => {
212
+ const root = owner(script.path);
213
+ return native
214
+ .filter(({ path }) => owner(path) === root)
215
+ .map((item) => ({
216
+ source_path: script.path,
217
+ native_path: item.path,
218
+ basis: bridgeBasis(item.path),
219
+ }));
220
+ }),
221
+ };
222
+ };
223
+ const bridgeBasis = (path) => {
224
+ const lower = path.toLowerCase();
225
+ if (lower.includes("react"))
226
+ return "react-native-convention";
227
+ if (lower.includes("flutter") || lower.includes("app.framework"))
228
+ return "flutter-convention";
229
+ if (lower.includes("unity"))
230
+ return "unity-convention";
231
+ return "javascript-and-native-content";
232
+ };
233
+ const projectionLimitations = (facts) => [
234
+ ...(!facts.complete
235
+ ? ["Source inventory pages are incomplete; absence is unknown."]
236
+ : []),
237
+ ...(facts.uninventoriedImage
238
+ ? [
239
+ "The DMG's contents were not inventoried on this host; bundle absence is unknown.",
240
+ ]
241
+ : []),
242
+ ...(facts.roots.length === 0
243
+ ? [
244
+ "No application bundle (Payload/*.app or *.app/Contents) was present in the supplied inventory pages.",
245
+ ]
246
+ : []),
247
+ ...(facts.bundles.some(({ layout, info_plist_path: plist }) => layout === "versioned-framework" && plist === null)
248
+ ? [
249
+ "A versioned framework has several version directories or no Versions/*/Resources/Info.plist; the Info.plist that Versions/Current selects is unknown because symlink targets are not inventoried.",
250
+ ]
251
+ : []),
252
+ ...(facts.symlinks
253
+ ? [
254
+ "Symlinks are reported by path only; their targets are not inventoried, so bundles are reported at their real paths.",
255
+ ]
256
+ : []),
257
+ ...(facts.unattributed > 0
258
+ ? [
259
+ `${facts.unattributed} inventoried entries outside every application root are not attributed to the application.`,
260
+ ]
261
+ : []),
262
+ ...(facts.sidecars
263
+ ? [
264
+ "AppleDouble sidecar entries (._* files and __MACOSX/) describe neighbouring files and are excluded from bundle roles.",
265
+ ]
266
+ : []),
267
+ "Bundle roles follow path conventions. Read each info_plist_path with inspect_plist for CFBundleExecutable, identifiers, and declared services.",
268
+ "Bundle identifiers and signing claims require dedicated plist and CMS parsing; this projection reports only exact paths and hashes.",
269
+ "Bridge candidates are path-based hypotheses, not observed runtime calls.",
270
+ ];
271
+ const compare = (left, right) => left < right ? -1 : left > right ? 1 : 0;
272
+ const digest = (value) => {
273
+ const encoded = canonicalize(value);
274
+ if (encoded === undefined)
275
+ throw new TypeError("Apple application projection is not canonical JSON");
276
+ return createHash("sha256").update(encoded).digest("hex");
277
+ };
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
- import { jsonValueSchema } from "./jsonValue.js";
3
- import { AnalysisOutputError } from "./analysisErrorCore.js";
2
+ import { jsonValueSchema } from "../jsonValue.js";
3
+ import { AnalysisOutputError } from "../analysisErrorCore.js";
4
4
  /** Caller-controlled page bounds for compiled Apple asset metadata. */
5
5
  export const appleAssetCatalogInputSchema = z.strictObject({
6
6
  offset: z.number().int().min(0).default(0),