rea-agents 4.0.1 → 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 (740) hide show
  1. package/README.md +257 -96
  2. package/bridge/android/ReaJadxBridge.java +247 -0
  3. package/bridge/ghidra/ReaGhidraBridge.java +358 -15
  4. package/bridge/ghidra/ReaGhidraExtensions.java +113 -0
  5. package/bridge/ghidra/ReaGhidraPrepareCom.java +32 -0
  6. package/bridge/native/NativeUIChildren.swift +27 -0
  7. package/bridge/native/ReaNativeUI.swift +30 -16
  8. package/dist/android/AndroidTargetSnapshot.js +36 -0
  9. package/dist/android/JadxAnalysis.js +193 -0
  10. package/dist/android/JadxConfiguration.js +57 -0
  11. package/dist/android/JadxMcpTransport.js +172 -0
  12. package/dist/android/JadxProtocol.js +109 -0
  13. package/dist/android/JadxProvider.js +259 -0
  14. package/dist/android/JadxRelease.js +27 -0
  15. package/dist/android/JadxSession.js +111 -0
  16. package/dist/application/AnalysisContextQueries.js +2 -1
  17. package/dist/application/AppBundleExecutable.js +141 -0
  18. package/dist/application/ArtifactExtraction.js +7 -4
  19. package/dist/application/ArtifactGraphConstruction.js +10 -17
  20. package/dist/application/ArtifactInventory/classify.js +1 -1
  21. package/dist/application/ArtifactInventory/scanCanonical.js +9 -8
  22. package/dist/application/ArtifactInventory/scanReader.js +1 -1
  23. package/dist/application/ArtifactInventory.js +1 -1
  24. package/dist/application/BinaryTargetResolver.js +32 -68
  25. package/dist/application/BrowserObservationService.js +2 -1
  26. package/dist/application/BrowserScenarioCaptureService.js +2 -1
  27. package/dist/application/BrowserScenarioEvidence.js +2 -2
  28. package/dist/application/CallPathTracing.js +2 -1
  29. package/dist/application/CapabilityInventory.js +78 -2
  30. package/dist/application/ClientConfigPath.js +3 -1
  31. package/dist/application/ClientConfigurationDocument.js +83 -13
  32. package/dist/application/ClientRegistrationStatus.js +15 -9
  33. package/dist/application/DirectAnalysis.js +35 -21
  34. package/dist/application/DirectAnalysisStatus.js +7 -8
  35. package/dist/application/Doctor.js +48 -8
  36. package/dist/application/DoctorDiagnostics.js +9 -7
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/EnhancedLiteralTracing.js +2 -1
  39. package/dist/application/EnhancedToolTypes.js +2 -1
  40. package/dist/application/EnhancedTools.js +7 -5
  41. package/dist/application/EvidenceBundleCommands.js +3 -2
  42. package/dist/application/EvidenceBundleFiles.js +1 -1
  43. package/dist/application/EvidenceInputResolver.js +30 -0
  44. package/dist/application/FilesystemSnapshot.js +20 -5
  45. package/dist/application/FunctionAnalysisEvidence.js +32 -0
  46. package/dist/application/InventoryProjectionEvidence.js +2 -1
  47. package/dist/application/InvestigationProviders.js +6 -0
  48. package/dist/application/JsonFiles.js +1 -1
  49. package/dist/application/LinuxHopper.js +20 -6
  50. package/dist/application/MacHopper.js +20 -7
  51. package/dist/application/OptionalObservationProviders.js +3 -0
  52. package/dist/application/ProcessCaptureCapability.js +1 -1
  53. package/dist/application/ProcessCaptureError.js +1 -1
  54. package/dist/application/ProcessCaptureJournal.js +3 -1
  55. package/dist/application/ProcessCaptureLifecycle.js +8 -5
  56. package/dist/application/ProcessCli.js +14 -6
  57. package/dist/application/ProcessEvidence.js +2 -6
  58. package/dist/application/ProcessHarness.js +23 -11
  59. package/dist/application/ProcessNormalization.js +12 -5
  60. package/dist/application/ProcessSampling.js +3 -1
  61. package/dist/application/ReconstructionCoverageService.js +4 -7
  62. package/dist/application/ReconstructionObligationCandidates.js +5 -2
  63. package/dist/application/ReconstructionObligationLedgerService.js +2 -1
  64. package/dist/application/ReferenceSourceImport.js +2 -0
  65. package/dist/application/ReferenceSourceImportEntries.js +22 -3
  66. package/dist/application/ReferenceSourceImportPolicy.js +4 -2
  67. package/dist/application/ReferenceSourceImportTypes.js +5 -0
  68. package/dist/application/ReferenceSourceVcsAdapter.js +35 -4
  69. package/dist/application/Setup.js +11 -130
  70. package/dist/application/SetupClientConfiguration.js +36 -22
  71. package/dist/application/SetupHost.js +126 -0
  72. package/dist/application/SetupPlan.js +1 -1
  73. package/dist/application/SetupRegistrationEnvironment.js +1 -2
  74. package/dist/application/SetupSkill.js +9 -3
  75. package/dist/application/SetupTypes.js +17 -0
  76. package/dist/application/StoreFileLock.js +7 -2
  77. package/dist/application/SupportedClients.js +8 -0
  78. package/dist/application/Uninstall.js +32 -21
  79. package/dist/application/UpdateMaintenance.js +3 -3
  80. package/dist/application/UpdateRuntime.js +5 -2
  81. package/dist/application/ValidateSelectedWebScript.js +27 -0
  82. package/dist/application/WebModuleTraceService.js +209 -0
  83. package/dist/application/WebRuntimeService.js +73 -0
  84. package/dist/application/WebScriptExportService.js +115 -0
  85. package/dist/application/WebSourceLocationService.js +160 -0
  86. package/dist/application/WindowsCapabilities.js +7 -7
  87. package/dist/application/android/AndroidAnalysisService.js +37 -0
  88. package/dist/application/{AndroidApplicationService.js → android/AndroidApplicationService.js} +3 -3
  89. package/dist/application/{AppleApplicationService.js → apple/AppleApplicationService.js} +5 -5
  90. package/dist/application/{AnalysisClientCleanup.js → binary/AnalysisClientCleanup.js} +2 -2
  91. package/dist/application/{AnalysisProviderEvaluation.js → binary/AnalysisProviderEvaluation.js} +8 -6
  92. package/dist/application/{AnalysisProviderRegistry.js → binary/AnalysisProviderRegistry.js} +5 -4
  93. package/dist/application/{AnalysisSnapshotCache.js → binary/AnalysisSnapshotCache.js} +8 -7
  94. package/dist/application/{AnalysisSnapshotFiles.js → binary/AnalysisSnapshotFiles.js} +4 -4
  95. package/dist/application/{BinarySession.js → binary/BinarySession.js} +26 -11
  96. package/dist/application/{BinarySessionComposition.js → binary/BinarySessionComposition.js} +2 -1
  97. package/dist/application/{BinarySessionExecution.js → binary/BinarySessionExecution.js} +9 -4
  98. package/dist/application/{BinarySessionOpen.js → binary/BinarySessionOpen.js} +7 -6
  99. package/dist/application/{BinarySessionRecords.js → binary/BinarySessionRecords.js} +34 -40
  100. package/dist/application/{CompositeProvider.js → binary/CompositeProvider.js} +2 -2
  101. package/dist/application/{LazyAnalysisProvider.js → binary/LazyAnalysisProvider.js} +6 -4
  102. package/dist/application/{SessionProviderRouter.js → binary/SessionProviderRouter.js} +7 -4
  103. package/dist/application/firmware/FirmwareAnalysisPort.js +1 -0
  104. package/dist/application/firmware/FirmwareAnalysisService.js +35 -0
  105. package/dist/application/{EvidenceLedger.js → investigation/EvidenceLedger.js} +44 -6
  106. package/dist/application/investigation/InvestigationRecordPort.js +1 -0
  107. package/dist/application/investigation/InvestigationRecords.js +69 -0
  108. package/dist/application/{UnknownEvidence.js → investigation/UnknownEvidence.js} +1 -1
  109. package/dist/application/{ElectronActiveEvidence.js → javascript/ElectronActiveEvidence.js} +4 -4
  110. package/dist/application/javascript/ElectronActiveObservationPort.js +1 -0
  111. package/dist/application/{ElectronActiveObservationService.js → javascript/ElectronActiveObservationService.js} +3 -2
  112. package/dist/application/{ElectronBoundaryAnalysis.js → javascript/ElectronBoundaryAnalysis.js} +1 -1
  113. package/dist/application/{ElectronBoundaryGraphContext.js → javascript/ElectronBoundaryGraphContext.js} +1 -1
  114. package/dist/application/{ElectronEvidence.js → javascript/ElectronEvidence.js} +2 -2
  115. package/dist/application/javascript/ElectronObservationPort.js +1 -0
  116. package/dist/application/{ElectronObservationService.js → javascript/ElectronObservationService.js} +3 -2
  117. package/dist/application/{JavaScriptApplicationEvidence.js → javascript/JavaScriptApplicationEvidence.js} +3 -3
  118. package/dist/application/{JavaScriptApplicationEvidenceGraph.js → javascript/JavaScriptApplicationEvidenceGraph.js} +5 -5
  119. package/dist/application/javascript/JavaScriptApplicationService.js +99 -0
  120. package/dist/application/{JavaScriptApplicationWorkflowEvidence.js → javascript/JavaScriptApplicationWorkflowEvidence.js} +3 -3
  121. package/dist/application/{JavaScriptApplicationWorkflowService.js → javascript/JavaScriptApplicationWorkflowService.js} +12 -11
  122. package/dist/application/{JavaScriptArtifactAnalysis.js → javascript/JavaScriptArtifactAnalysis.js} +12 -26
  123. package/dist/application/javascript/JavaScriptArtifactAnalysisTypes.js +1 -0
  124. package/dist/application/{JavaScriptArtifactGraphAccumulator.js → javascript/JavaScriptArtifactGraphAccumulator.js} +16 -2
  125. package/dist/application/{JavaScriptArtifactGraphBuilder.js → javascript/JavaScriptArtifactGraphBuilder.js} +2 -2
  126. package/dist/application/{JavaScriptArtifactGraphContext.js → javascript/JavaScriptArtifactGraphContext.js} +1 -1
  127. package/dist/application/{JavaScriptArtifactGraphDocuments.js → javascript/JavaScriptArtifactGraphDocuments.js} +1 -1
  128. package/dist/application/{JavaScriptArtifactGraphFindings.js → javascript/JavaScriptArtifactGraphFindings.js} +20 -7
  129. package/dist/application/{JavaScriptArtifactGraphStructure.js → javascript/JavaScriptArtifactGraphStructure.js} +1 -1
  130. package/dist/application/{JavaScriptArtifactPathResolution.js → javascript/JavaScriptArtifactPathResolution.js} +12 -14
  131. package/dist/application/{JavaScriptArtifactReconstruction.js → javascript/JavaScriptArtifactReconstruction.js} +4 -8
  132. package/dist/application/{JavaScriptJsonModules.js → javascript/JavaScriptJsonModules.js} +3 -2
  133. package/dist/application/{JavaScriptModuleRelationships.js → javascript/JavaScriptModuleRelationships.js} +5 -3
  134. package/dist/application/javascript/JavaScriptRecoveryPort.js +1 -0
  135. package/dist/application/javascript/JavaScriptRecoveryService.js +52 -0
  136. package/dist/application/{JavaScriptReturnShapeProjection.js → javascript/JavaScriptReturnShapeProjection.js} +3 -3
  137. package/dist/application/{JavaScriptRuntimeObservationEvidence.js → javascript/JavaScriptRuntimeObservationEvidence.js} +2 -2
  138. package/dist/application/javascript/JavaScriptRuntimeObservationPort.js +1 -0
  139. package/dist/application/{JavaScriptRuntimeObservationService.js → javascript/JavaScriptRuntimeObservationService.js} +3 -2
  140. package/dist/application/{JavaScriptRuntimeReconciliationEvidence.js → javascript/JavaScriptRuntimeReconciliationEvidence.js} +3 -3
  141. package/dist/application/{JavaScriptRuntimeReconciliationService.js → javascript/JavaScriptRuntimeReconciliationService.js} +6 -5
  142. package/dist/application/{JavaScriptSemanticGraphAsyncProjection.js → javascript/JavaScriptSemanticGraphAsyncProjection.js} +1 -1
  143. package/dist/application/{JavaScriptSemanticGraphBuilder.js → javascript/JavaScriptSemanticGraphBuilder.js} +5 -3
  144. package/dist/application/{JavaScriptSemanticGraphChildProcessProjection.js → javascript/JavaScriptSemanticGraphChildProcessProjection.js} +1 -1
  145. package/dist/application/{JavaScriptSemanticGraphConstruction.js → javascript/JavaScriptSemanticGraphConstruction.js} +3 -2
  146. package/dist/application/{JavaScriptSemanticGraphDataProjection.js → javascript/JavaScriptSemanticGraphDataProjection.js} +1 -1
  147. package/dist/application/{JavaScriptSemanticGraphFingerprintProjection.js → javascript/JavaScriptSemanticGraphFingerprintProjection.js} +1 -1
  148. package/dist/application/{JavaScriptSemanticGraphFlowProjection.js → javascript/JavaScriptSemanticGraphFlowProjection.js} +2 -2
  149. package/dist/application/{JavaScriptSemanticGraphObjectProjection.js → javascript/JavaScriptSemanticGraphObjectProjection.js} +1 -1
  150. package/dist/application/{JavaScriptSemanticGraphProjection.js → javascript/JavaScriptSemanticGraphProjection.js} +2 -2
  151. package/dist/application/{JavaScriptSemanticGraphResourceProjection.js → javascript/JavaScriptSemanticGraphResourceProjection.js} +1 -1
  152. package/dist/application/{JavaScriptSemanticTraceService.js → javascript/JavaScriptSemanticTraceService.js} +6 -5
  153. package/dist/application/{ManagedApplicationGraphService.js → managed/ManagedApplicationGraphService.js} +7 -6
  154. package/dist/application/{ManagedMemberComparisonService.js → managed/ManagedMemberComparisonService.js} +10 -8
  155. package/dist/application/{ManagedNativeVerificationService.js → managed/ManagedNativeVerificationService.js} +7 -6
  156. package/dist/application/{ManagedReconstructionService.js → managed/ManagedReconstructionService.js} +7 -6
  157. package/dist/application/{NativeApiInspection.js → native/NativeApiInspection.js} +1 -1
  158. package/dist/application/{NativeCallRoutes.js → native/NativeCallRoutes.js} +3 -3
  159. package/dist/application/{NativeDispatchMetadataInspection.js → native/NativeDispatchMetadataInspection.js} +4 -4
  160. package/dist/application/{NativeUiActionTrace.js → native/NativeUiActionTrace.js} +7 -6
  161. package/dist/application/{NativeValueTrace.js → native/NativeValueTrace.js} +6 -6
  162. package/dist/{application/ArtifactInventory/hash.js → artifacts/ArtifactHash.js} +4 -2
  163. package/dist/artifacts/ArtifactPaths.js +3 -3
  164. package/dist/artifacts/ArtifactProvider.js +10 -38
  165. package/dist/artifacts/ArtifactProviderMetadata.js +36 -0
  166. package/dist/artifacts/AsarArtifactReader.js +195 -23
  167. package/dist/artifacts/AsarEntryStream.js +76 -0
  168. package/dist/artifacts/DirectoryArtifactReader.js +43 -7
  169. package/dist/artifacts/NativeDmgArtifactReader.js +171 -12
  170. package/dist/artifacts/SafeOutputTree.js +26 -10
  171. package/dist/artifacts/ZipArtifactReader.js +1 -0
  172. package/dist/{application → artifacts/apple}/AppleAssetCatalogAnalysis.js +4 -4
  173. package/dist/{application → artifacts/apple}/InterfaceBuilderAnalysis.js +125 -51
  174. package/dist/artifacts/{KeyedArchiveReader.js → apple/KeyedArchiveReader.js} +21 -27
  175. package/dist/artifacts/{NibArchive.js → apple/NibArchive.js} +4 -2
  176. package/dist/artifacts/apple/NibViewHierarchy.js +150 -0
  177. package/dist/{application → artifacts/javascript}/JavaScriptArtifactFiles.js +30 -7
  178. package/dist/artifacts/javascript/JavaScriptArtifactReader.js +6 -0
  179. package/dist/artifacts/readStableArtifact.js +52 -0
  180. package/dist/browser/BrowserProcessStartup.js +3 -1
  181. package/dist/browser/BrowserScenarioSecrets.js +50 -8
  182. package/dist/browser/CdpAuthorizedMainFrame.js +5 -5
  183. package/dist/browser/CdpAuthorizedTarget.js +22 -0
  184. package/dist/browser/CdpBrowserProvider.js +8 -16
  185. package/dist/browser/CdpCaptureDocuments.js +36 -22
  186. package/dist/browser/CdpCaptureEventBodyShapes.js +3 -3
  187. package/dist/browser/CdpCaptureEventHandlers.js +32 -28
  188. package/dist/browser/CdpCaptureEventHelpers.js +6 -6
  189. package/dist/browser/CdpCaptureStorage.js +10 -8
  190. package/dist/browser/CdpCaptureStorageFingerprints.js +25 -23
  191. package/dist/browser/CdpCaptureValues.js +8 -4
  192. package/dist/browser/CdpCommandRejection.js +17 -0
  193. package/dist/browser/CdpConnection.js +59 -17
  194. package/dist/browser/CdpElectronInspection.js +13 -13
  195. package/dist/browser/CdpElectronProvider.js +7 -7
  196. package/dist/browser/CdpElectronScriptEvents.js +6 -6
  197. package/dist/browser/CdpElectronScripts.js +4 -4
  198. package/dist/browser/CdpElectronWorkers.js +4 -4
  199. package/dist/browser/CdpEndpoint.js +22 -10
  200. package/dist/browser/CdpObservationSession.js +20 -24
  201. package/dist/browser/CdpOptionalCommand.js +1 -1
  202. package/dist/browser/CdpPageCapture.js +6 -5
  203. package/dist/browser/CdpPageCaptureScripts.js +2 -2
  204. package/dist/browser/CdpPageCaptureWorkers.js +9 -9
  205. package/dist/browser/CdpSafeMetadata.js +101 -18
  206. package/dist/browser/CdpScreenshot.js +6 -6
  207. package/dist/browser/CdpTargetEvents.js +8 -0
  208. package/dist/browser/CdpTargetSession.js +10 -7
  209. package/dist/browser/CdpWebMcpDiscovery.js +23 -17
  210. package/dist/browser/ElectronFileScope.js +9 -3
  211. package/dist/browser/PlaywrightBrowserScenarioProvider.js +10 -7
  212. package/dist/browser/PlaywrightElectronActiveActions.js +1 -1
  213. package/dist/browser/PlaywrightElectronActiveProvider.js +9 -8
  214. package/dist/browser/PlaywrightExecutionBoundary.js +1 -1
  215. package/dist/browser/PlaywrightScenarioArtifacts.js +10 -5
  216. package/dist/browser/PlaywrightScenarioBrowser.js +3 -1
  217. package/dist/browser/PlaywrightScenarioEvents.js +65 -53
  218. package/dist/browser/PlaywrightScenarioSession.js +13 -3
  219. package/dist/browser/WebSourceMapFetcher.js +55 -58
  220. package/dist/browser/assets/LocalWebScriptArtifacts.js +87 -0
  221. package/dist/browser/assets/PageScriptCapture.js +32 -0
  222. package/dist/browser/assets/PublishWebScripts.js +74 -0
  223. package/dist/browser/assets/ScenarioScriptCapture.js +76 -0
  224. package/dist/browser/assets/ScriptCaptureAdapters.js +57 -0
  225. package/dist/browser/assets/WebArtifactReads.js +56 -0
  226. package/dist/browser/assets/WebSourceLocationArtifacts.js +40 -0
  227. package/dist/browser/execution/CdpEventListeners.js +79 -0
  228. package/dist/browser/execution/CdpExecutionCapture.js +135 -0
  229. package/dist/browser/execution/CdpExecutionCollection.js +57 -0
  230. package/dist/browser/execution/CdpExecutionWindow.js +100 -0
  231. package/dist/browser/execution/CdpListenerSelector.js +22 -0
  232. package/dist/browser/execution/CdpPreciseCoverage.js +48 -0
  233. package/dist/browser/execution/CdpRuntimeInitiator.js +18 -0
  234. package/dist/browser/execution/CdpRuntimeProtocol.js +106 -0
  235. package/dist/browser/execution/CdpRuntimeRequests.js +81 -0
  236. package/dist/browser/execution/CdpRuntimeSession.js +163 -0
  237. package/dist/browser/execution/CdpRuntimeSources.js +223 -0
  238. package/dist/browser/execution/CdpWebRuntimeProvider.js +51 -0
  239. package/dist/browser/modules/NativeModuleResolver.js +210 -0
  240. package/dist/browser/modules/WebModuleArtifacts.js +40 -0
  241. package/dist/browser/network/PlaywrightNetworkContent.js +71 -0
  242. package/dist/browser/network/PlaywrightScenarioNetwork.js +180 -0
  243. package/dist/browser/providerIdentities.js +24 -0
  244. package/dist/catalogIdentity.js +23 -15
  245. package/dist/cli/androidCommands.js +91 -0
  246. package/dist/{cliApplicationCommands.js → cli/applicationCommands.js} +49 -16
  247. package/dist/cli/artifactCommands.js +1 -1
  248. package/dist/{cliBrowserAdvancedCommands.js → cli/browserAdvancedCommands.js} +39 -24
  249. package/dist/{cliBrowserCommands.js → cli/browserCommands.js} +9 -9
  250. package/dist/cli/commandCancellation.js +24 -0
  251. package/dist/cli/coreAnalysisCommands.js +5 -400
  252. package/dist/cli/coreBinaryCommands.js +211 -0
  253. package/dist/cli/coreNativeCommands.js +293 -0
  254. package/dist/{cliElectronCommands.js → cli/electronCommands.js} +20 -24
  255. package/dist/cli/firmwareCommands.js +75 -0
  256. package/dist/{cliSetup.js → cli/interactiveSetup.js} +1 -1
  257. package/dist/cli/javascriptApplicationAnalysis.js +2 -2
  258. package/dist/cli/javascriptRecoveryCommands.js +45 -0
  259. package/dist/cli/managedCommands.js +5 -5
  260. package/dist/cli/managedProjectGraphCommand.js +2 -2
  261. package/dist/cli/options.js +7 -1
  262. package/dist/{cliProcessCommands.js → cli/processCommands.js} +3 -3
  263. package/dist/cli/referenceSourceImportStatus.js +15 -0
  264. package/dist/cli/setupCommands.js +4 -2
  265. package/dist/cli/utilityCommands.js +50 -25
  266. package/dist/cli/webModuleCommands.js +56 -0
  267. package/dist/cli/webRuntimeCommands.js +60 -0
  268. package/dist/cli/webScriptCommands.js +31 -0
  269. package/dist/cli/webSourceLocationCommands.js +42 -0
  270. package/dist/cli.js +20 -15
  271. package/dist/cliBrowserContext.js +5 -3
  272. package/dist/cliBrowserScenarioCommands.js +6 -4
  273. package/dist/cliCommandNames.js +19 -2
  274. package/dist/cliEvidenceCommands.js +2 -1
  275. package/dist/cliJavaScriptRuntimeCommands.js +8 -5
  276. package/dist/cliJsonInput.js +35 -13
  277. package/dist/cliLogging.js +2 -1
  278. package/dist/cliOutput.js +52 -27
  279. package/dist/composition/android.js +3 -0
  280. package/dist/composition/auxiliaryAnalysisProviders.js +30 -0
  281. package/dist/composition/binary.js +25 -0
  282. package/dist/composition/browserObservation.js +3 -0
  283. package/dist/composition/browserScenario.js +3 -0
  284. package/dist/composition/directAnalysis.js +17 -0
  285. package/dist/composition/electronObservation.js +3 -0
  286. package/dist/composition/electronScenario.js +3 -0
  287. package/dist/composition/firmware.js +3 -0
  288. package/dist/composition/javascriptRecovery.js +3 -0
  289. package/dist/composition/javascriptRuntimeObservation.js +3 -0
  290. package/dist/composition/optionalObservationProviders.js +49 -0
  291. package/dist/composition/webModules.js +5 -0
  292. package/dist/composition/webRuntime.js +4 -0
  293. package/dist/composition/webSourceLocations.js +5 -0
  294. package/dist/config/environment.js +11 -1
  295. package/dist/config/parseConfig.js +29 -4
  296. package/dist/config/parsers.js +1 -1
  297. package/dist/contracts/android/androidToolContracts.js +77 -0
  298. package/dist/contracts/applicationToolContracts.js +75 -13
  299. package/dist/contracts/artifactComparisonExample.js +7 -14
  300. package/dist/contracts/artifactToolContracts.js +2 -2
  301. package/dist/contracts/browserScenarioToolContracts.js +1 -1
  302. package/dist/contracts/enhancedInputs.js +1 -1
  303. package/dist/contracts/enhancedToolContracts.js +31 -0
  304. package/dist/contracts/errorSchemas.js +4 -2
  305. package/dist/contracts/evidenceInputContracts.js +13 -0
  306. package/dist/contracts/firmware/firmwareToolContracts.js +38 -0
  307. package/dist/contracts/{applicationWorkflowInputContracts.js → javascript/applicationWorkflowInputContracts.js} +18 -18
  308. package/dist/contracts/{electronToolContracts.js → javascript/electronToolContracts.js} +6 -6
  309. package/dist/contracts/{javascriptApplicationWorkflowExamples.js → javascript/javascriptApplicationWorkflowExamples.js} +3 -3
  310. package/dist/contracts/javascript/javascriptRecoveryToolContracts.js +23 -0
  311. package/dist/contracts/{javascriptRuntimeObservationToolContracts.js → javascript/javascriptRuntimeObservationToolContracts.js} +3 -3
  312. package/dist/contracts/{javascriptRuntimeReconciliationExample.js → javascript/javascriptRuntimeReconciliationExample.js} +5 -5
  313. package/dist/contracts/{managedToolContracts.js → managed/managedToolContracts.js} +3 -3
  314. package/dist/contracts/{managedWorkflowExamples.js → managed/managedWorkflowExamples.js} +1 -1
  315. package/dist/contracts/{managedWorkflowToolContracts.js → managed/managedWorkflowToolContracts.js} +6 -6
  316. package/dist/contracts/mobileApplicationGraphExamples.js +105 -0
  317. package/dist/contracts/{nativeToolContracts.js → native/nativeToolContracts.js} +14 -7
  318. package/dist/contracts/officialToolContracts.js +66 -0
  319. package/dist/contracts/promptContracts.js +1 -1
  320. package/dist/contracts/sessionLifecycleInputs.js +4 -0
  321. package/dist/contracts/sessionToolContracts.js +43 -0
  322. package/dist/contracts/sessionToolSchemas.js +1 -1
  323. package/dist/contracts/toolContractExamples.js +5 -0
  324. package/dist/contracts/toolContractTypes.js +2 -0
  325. package/dist/contracts/toolContracts.js +18 -135
  326. package/dist/contracts/toolEffects.js +75 -0
  327. package/dist/contracts/toolOutputSchemaGroups.js +20 -16
  328. package/dist/contracts/toolOutputSchemaPrimitives.js +1 -0
  329. package/dist/contracts/webRuntimeToolContracts.js +43 -0
  330. package/dist/contracts/webScriptToolContracts.js +68 -0
  331. package/dist/doctorRuntime.js +5 -1
  332. package/dist/domain/analysisErrorBase.js +33 -0
  333. package/dist/domain/analysisErrorCore.js +62 -0
  334. package/dist/domain/analysisErrorPresentation.js +22 -2
  335. package/dist/domain/analysisErrorProjection.js +25 -3
  336. package/dist/domain/analysisSnapshot.js +1 -0
  337. package/dist/domain/android/androidAnalysis.js +141 -0
  338. package/dist/domain/{androidApplication.js → android/androidApplication.js} +7 -6
  339. package/dist/domain/apple/appleApplication.js +277 -0
  340. package/dist/domain/{appleAssetCatalog.js → apple/appleAssetCatalog.js} +2 -2
  341. package/dist/domain/apple/appleBundleAnatomy.js +236 -0
  342. package/dist/domain/{interfaceBuilderGraph.js → apple/interfaceBuilderGraph.js} +47 -312
  343. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +411 -0
  344. package/dist/domain/{keyedArchive.js → apple/keyedArchive.js} +10 -9
  345. package/dist/domain/apple/plistValue.js +35 -0
  346. package/dist/domain/artifactGraph.js +1 -0
  347. package/dist/domain/artifactInspection.js +19 -17
  348. package/dist/domain/artifactInventoryEvidence.js +32 -27
  349. package/dist/domain/artifactInventorySnapshot.js +1 -0
  350. package/dist/domain/artifactOperationError.js +20 -0
  351. package/dist/domain/artifactPathSyntax.js +26 -0
  352. package/dist/domain/browserNetworkEvidence.js +82 -0
  353. package/dist/domain/browserObservation.js +12 -4
  354. package/dist/domain/browserObservationError.js +25 -0
  355. package/dist/domain/browserObservationSchemas.js +2 -1
  356. package/dist/domain/browserScenario.js +1 -1
  357. package/dist/domain/browserScenarioCapture.js +23 -1
  358. package/dist/domain/browserScenarioCaptureValues.js +25 -0
  359. package/dist/domain/browserScenarioDiff.js +7 -4
  360. package/dist/domain/browserScenarioDiffEvidence.js +35 -1
  361. package/dist/domain/browserScenarioNormalization.js +6 -11
  362. package/dist/domain/browserScenarioValues.js +15 -2
  363. package/dist/domain/browserSession.js +2 -7
  364. package/dist/domain/bundleComparison.js +2 -1
  365. package/dist/domain/callPath.js +86 -38
  366. package/dist/domain/canonicalDigest.js +65 -0
  367. package/dist/domain/canonicalOrdering.js +11 -0
  368. package/dist/domain/changedBehavior.js +8 -7
  369. package/dist/domain/comparisonSemantics.js +2 -4
  370. package/dist/domain/comparisonStatus.js +39 -0
  371. package/dist/domain/configurationErrors.js +25 -0
  372. package/dist/domain/dosCom.js +8 -0
  373. package/dist/domain/evidence.js +3 -11
  374. package/dist/domain/evidenceBundle.js +98 -35
  375. package/dist/domain/evidenceErrors.js +30 -0
  376. package/dist/domain/firmware/firmwareAnalysis.js +121 -0
  377. package/dist/domain/functionComparison.js +4 -2
  378. package/dist/domain/functionComparisonDimensions.js +6 -4
  379. package/dist/domain/functionComparisonNormalization.js +13 -8
  380. package/dist/domain/functionComparisonResults.js +1 -4
  381. package/dist/domain/hopperErrors.js +78 -0
  382. package/dist/domain/hopperValues.js +4 -3
  383. package/dist/domain/inputIssueProjection.js +17 -2
  384. package/dist/domain/{electronActiveObservation.js → javascript/electronActiveObservation.js} +3 -1
  385. package/dist/domain/{electronObservation.js → javascript/electronObservation.js} +5 -11
  386. package/dist/domain/{electronStaticAnalysisBrowser.js → javascript/electronStaticAnalysisBrowser.js} +15 -24
  387. package/dist/domain/{electronStaticAnalysisIpc.js → javascript/electronStaticAnalysisIpc.js} +2 -2
  388. package/dist/domain/{electronStaticAnalysisNative.js → javascript/electronStaticAnalysisNative.js} +12 -12
  389. package/dist/domain/javascript/electronStaticAnalysisTypes.js +1 -0
  390. package/dist/domain/{electronStaticAnalysisValues.js → javascript/electronStaticAnalysisValues.js} +24 -4
  391. package/dist/domain/{javascriptApplicationAnalysis.js → javascript/javascriptApplicationAnalysis.js} +2 -2
  392. package/dist/domain/{javascriptApplicationChangeGraph.js → javascript/javascriptApplicationChangeGraph.js} +2 -2
  393. package/dist/domain/{javascriptApplicationEvidenceSchemas.js → javascript/javascriptApplicationEvidenceSchemas.js} +6 -4
  394. package/dist/domain/{javascriptApplicationGraph.js → javascript/javascriptApplicationGraph.js} +13 -22
  395. package/dist/domain/{javascriptApplicationGraphSchemas.js → javascript/javascriptApplicationGraphSchemas.js} +2 -2
  396. package/dist/domain/{javascriptApplicationVersionComparison.js → javascript/javascriptApplicationVersionComparison.js} +3 -11
  397. package/dist/domain/{javascriptApplicationVersionComparisonSchemas.js → javascript/javascriptApplicationVersionComparisonSchemas.js} +3 -3
  398. package/dist/domain/{javascriptApplicationVersionItems.js → javascript/javascriptApplicationVersionItems.js} +4 -4
  399. package/dist/domain/{javascriptApplicationVersionKeys.js → javascript/javascriptApplicationVersionKeys.js} +16 -9
  400. package/dist/domain/javascript/javascriptArtifactFiles.js +1 -0
  401. package/dist/domain/{javascriptAstFingerprint.js → javascript/javascriptAstFingerprint.js} +38 -22
  402. package/dist/domain/javascript/javascriptAstValues.js +23 -0
  403. package/dist/domain/{javascriptExportShapeComparison.js → javascript/javascriptExportShapeComparison.js} +1 -2
  404. package/dist/domain/{javascriptExportShapeComparisonSchemas.js → javascript/javascriptExportShapeComparisonSchemas.js} +2 -2
  405. package/dist/domain/{javascriptExportShapeSelection.js → javascript/javascriptExportShapeSelection.js} +1 -1
  406. package/dist/domain/{javascriptExportShapeVariants.js → javascript/javascriptExportShapeVariants.js} +7 -3
  407. package/dist/domain/{javascriptFeatureSeed.js → javascript/javascriptFeatureSeed.js} +32 -11
  408. package/dist/domain/{javascriptFeatureTrace.js → javascript/javascriptFeatureTrace.js} +9 -13
  409. package/dist/domain/{javascriptFeatureTraceSchemas.js → javascript/javascriptFeatureTraceSchemas.js} +32 -18
  410. package/dist/domain/{javascriptFeatureTraversal.js → javascript/javascriptFeatureTraversal.js} +7 -2
  411. package/dist/domain/{javascriptNativeHandoff.js → javascript/javascriptNativeHandoff.js} +2 -1
  412. package/dist/domain/javascript/javascriptRecovery.js +88 -0
  413. package/dist/domain/{javascriptRuntimeLoadState.js → javascript/javascriptRuntimeLoadState.js} +2 -2
  414. package/dist/domain/{javascriptRuntimeObservation.js → javascript/javascriptRuntimeObservation.js} +2 -2
  415. package/dist/domain/{javascriptRuntimeReconciliationActive.js → javascript/javascriptRuntimeReconciliationActive.js} +5 -12
  416. package/dist/domain/{javascriptRuntimeReconciliationGraph.js → javascript/javascriptRuntimeReconciliationGraph.js} +2 -2
  417. package/dist/domain/{javascriptRuntimeReconciliationMatching.js → javascript/javascriptRuntimeReconciliationMatching.js} +4 -3
  418. package/dist/domain/{javascriptRuntimeReconciliationParsing.js → javascript/javascriptRuntimeReconciliationParsing.js} +11 -17
  419. package/dist/domain/{javascriptRuntimeReconciliationResult.js → javascript/javascriptRuntimeReconciliationResult.js} +4 -4
  420. package/dist/domain/{javascriptRuntimeReconciliationSchemas.js → javascript/javascriptRuntimeReconciliationSchemas.js} +8 -5
  421. package/dist/domain/{javascriptRuntimeStaticCandidates.js → javascript/javascriptRuntimeStaticCandidates.js} +8 -4
  422. package/dist/domain/{javascriptSemanticAnalysis.js → javascript/javascriptSemanticAnalysis.js} +80 -17
  423. package/dist/domain/{javascriptSemanticAsyncEffects.js → javascript/javascriptSemanticAsyncEffects.js} +2 -1
  424. package/dist/domain/{javascriptSemanticCallResolution.js → javascript/javascriptSemanticCallResolution.js} +11 -5
  425. package/dist/domain/{javascriptSemanticCalls.js → javascript/javascriptSemanticCalls.js} +7 -4
  426. package/dist/domain/{javascriptSemanticChildProcesses.js → javascript/javascriptSemanticChildProcesses.js} +5 -2
  427. package/dist/domain/{javascriptSemanticDataEffectHelpers.js → javascript/javascriptSemanticDataEffectHelpers.js} +7 -6
  428. package/dist/domain/{javascriptSemanticDataEffects.js → javascript/javascriptSemanticDataEffects.js} +9 -6
  429. package/dist/domain/{javascriptSemanticFingerprints.js → javascript/javascriptSemanticFingerprints.js} +40 -16
  430. package/dist/domain/{javascriptSemanticGraph.js → javascript/javascriptSemanticGraph.js} +23 -28
  431. package/dist/domain/{javascriptSemanticGraphSchemas.js → javascript/javascriptSemanticGraphSchemas.js} +3 -3
  432. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +116 -0
  433. package/dist/domain/javascript/javascriptSemanticMutationValues.js +53 -0
  434. package/dist/domain/{javascriptSemanticObjects.js → javascript/javascriptSemanticObjects.js} +5 -5
  435. package/dist/domain/{javascriptSemanticPrimitives.js → javascript/javascriptSemanticPrimitives.js} +9 -2
  436. package/dist/domain/{javascriptSemanticProjection.js → javascript/javascriptSemanticProjection.js} +32 -44
  437. package/dist/domain/{javascriptSemanticPromises.js → javascript/javascriptSemanticPromises.js} +77 -21
  438. package/dist/domain/{javascriptSemanticProvenance.js → javascript/javascriptSemanticProvenance.js} +4 -1
  439. package/dist/domain/{javascriptSemanticQuery.js → javascript/javascriptSemanticQuery.js} +7 -8
  440. package/dist/domain/{javascriptSemanticQueryAssessment.js → javascript/javascriptSemanticQueryAssessment.js} +1 -2
  441. package/dist/domain/{javascriptSemanticQueryIdentity.js → javascript/javascriptSemanticQueryIdentity.js} +1 -2
  442. package/dist/domain/{javascriptSemanticQuerySchemas.js → javascript/javascriptSemanticQuerySchemas.js} +3 -3
  443. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +25 -0
  444. package/dist/domain/{javascriptSemanticResources.js → javascript/javascriptSemanticResources.js} +2 -1
  445. package/dist/domain/{javascriptSemanticReturns.js → javascript/javascriptSemanticReturns.js} +2 -1
  446. package/dist/domain/{javascriptSemanticTraceSchemas.js → javascript/javascriptSemanticTraceSchemas.js} +2 -2
  447. package/dist/domain/javascript/javascriptSemanticTraversal.js +55 -0
  448. package/dist/domain/javascript/javascriptSemanticValueTypes.js +1 -0
  449. package/dist/domain/{javascriptSemanticValues.js → javascript/javascriptSemanticValues.js} +118 -60
  450. package/dist/domain/{javascriptSourceParser.js → javascript/javascriptSourceParser.js} +4 -2
  451. package/dist/domain/{javascriptStaticAnalysis.js → javascript/javascriptStaticAnalysis.js} +8 -5
  452. package/dist/domain/{javascriptStaticAnalysisBundler.js → javascript/javascriptStaticAnalysisBundler.js} +15 -11
  453. package/dist/domain/{javascriptStaticAnalysisCalls.js → javascript/javascriptStaticAnalysisCalls.js} +16 -8
  454. package/dist/domain/{javascriptStaticAnalysisHelpers.js → javascript/javascriptStaticAnalysisHelpers.js} +261 -43
  455. package/dist/domain/{sourceToBundleComparison.js → javascript/sourceToBundleComparison.js} +6 -8
  456. package/dist/domain/{sourceToBundleComparisonSchemas.js → javascript/sourceToBundleComparisonSchemas.js} +4 -4
  457. package/dist/domain/{sourceToBundleSignals.js → javascript/sourceToBundleSignals.js} +7 -7
  458. package/dist/domain/jsonShape.js +6 -2
  459. package/dist/domain/{managedApplicationGraph.js → managed/managedApplicationGraph.js} +4 -4
  460. package/dist/domain/{managedApplicationGraphNodes.js → managed/managedApplicationGraphNodes.js} +1 -1
  461. package/dist/domain/{managedArtifact.js → managed/managedArtifact.js} +1 -1
  462. package/dist/domain/{managedMemberComparison.js → managed/managedMemberComparison.js} +5 -4
  463. package/dist/domain/{managedMemberComparisonCoverage.js → managed/managedMemberComparisonCoverage.js} +2 -1
  464. package/dist/domain/{managedMemberComparisonItems.js → managed/managedMemberComparisonItems.js} +99 -40
  465. package/dist/domain/{managedMemberComparisonMatch.js → managed/managedMemberComparisonMatch.js} +22 -11
  466. package/dist/domain/{managedNativeVerification.js → managed/managedNativeVerification.js} +1 -1
  467. package/dist/domain/{managedNativeVerificationMatch.js → managed/managedNativeVerificationMatch.js} +8 -6
  468. package/dist/domain/{managedNativeVerificationSchemas.js → managed/managedNativeVerificationSchemas.js} +6 -5
  469. package/dist/domain/{managedReconstruction.js → managed/managedReconstruction.js} +3 -3
  470. package/dist/domain/{nativeDataType.js → native/nativeDataType.js} +2 -0
  471. package/dist/domain/native/nativeFunctionAnnotations.js +43 -0
  472. package/dist/domain/{nativeInspection.js → native/nativeInspection.js} +1 -1
  473. package/dist/domain/{nativeInvestigationGraph.js → native/nativeInvestigationGraph.js} +13 -4
  474. package/dist/domain/native/nativeLoadImage.js +95 -0
  475. package/dist/domain/native/nativeMetadataRecovery.js +55 -0
  476. package/dist/domain/{nativeUiObservation.js → native/nativeUiObservation.js} +20 -6
  477. package/dist/domain/{objcSwiftMetadata.js → native/objcSwiftMetadata.js} +17 -0
  478. package/dist/domain/processCapture.js +4 -3
  479. package/dist/domain/processEvidenceProvider.js +11 -0
  480. package/dist/domain/processScenario.js +17 -17
  481. package/dist/domain/processTraceComparison.js +1 -1
  482. package/dist/domain/propertyListKeys.js +69 -0
  483. package/dist/domain/providerAdapterError.js +17 -0
  484. package/dist/domain/providerCleanupError.js +6 -3
  485. package/dist/domain/providerSelectionError.js +44 -0
  486. package/dist/domain/reconstructionCoverageEvaluation.js +46 -24
  487. package/dist/domain/reconstructionCoverageInput.js +7 -0
  488. package/dist/domain/reconstructionUnknowns.js +1 -1
  489. package/dist/domain/reconstructionVerification.js +22 -8
  490. package/dist/domain/referenceSourceClassification.js +5 -6
  491. package/dist/domain/referenceSourceGraph.js +9 -17
  492. package/dist/domain/referenceSourceImportParsing.js +38 -23
  493. package/dist/domain/runtimeIdentification.js +1 -1
  494. package/dist/domain/runtimeVersion.js +6 -7
  495. package/dist/domain/safeJson.js +13 -0
  496. package/dist/domain/sourceMapEnvelope.js +38 -0
  497. package/dist/domain/staticRuntimeCorrelation.js +9 -7
  498. package/dist/domain/unicodeCodePointOrder.js +11 -6
  499. package/dist/domain/unknownRegistryError.js +10 -0
  500. package/dist/domain/webBundleAnalyzerAst.js +23 -38
  501. package/dist/domain/webBundleAnalyzerInspection.js +29 -20
  502. package/dist/domain/webEventListeners.js +28 -0
  503. package/dist/domain/webExecution.js +74 -0
  504. package/dist/domain/webMcpDiscovery.js +1 -7
  505. package/dist/domain/webModuleImports.js +104 -0
  506. package/dist/domain/webModuleTrace.js +106 -0
  507. package/dist/domain/webRuntime.js +69 -0
  508. package/dist/domain/webScreenshot.js +1 -7
  509. package/dist/domain/webScriptArtifacts.js +39 -0
  510. package/dist/domain/webScriptExport.js +86 -0
  511. package/dist/domain/webScriptExportError.js +13 -0
  512. package/dist/domain/webScriptExportPlan.js +108 -0
  513. package/dist/domain/webSourceLocation.js +106 -0
  514. package/dist/domain/webSourcePosition.js +21 -0
  515. package/dist/dotnet/ManagedArtifactInspector.js +1 -1
  516. package/dist/dotnet/ManagedMemberInspector.js +1 -1
  517. package/dist/dotnet/ManagedMemberInspectorCore.js +34 -0
  518. package/dist/dotnet/ManagedMemberRows.js +6 -4
  519. package/dist/dotnet/ManagedMetadataHeaps.js +3 -2
  520. package/dist/dotnet/ManagedMetadataInventoryRows.js +4 -2
  521. package/dist/dotnet/ManagedMethodBodyReader.js +8 -1
  522. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +22 -16
  523. package/dist/dotnet/ManagedNativeBoundaryInspector.js +56 -50
  524. package/dist/dotnet/ManagedStaticProvider.js +6 -34
  525. package/dist/dotnet/ManagedStaticProviderMetadata.js +36 -0
  526. package/dist/evaluation/CodexAgentEval.js +2 -1
  527. package/dist/firmware/FirmwareCommand.js +163 -0
  528. package/dist/firmware/FirmwareFiles.js +190 -0
  529. package/dist/firmware/FirmwareProvider.js +264 -0
  530. package/dist/firmware/FirmwarePublication.js +84 -0
  531. package/dist/firmware/FirmwareRelease.js +32 -0
  532. package/dist/firmware/FirmwareReports.js +235 -0
  533. package/dist/firmware/FirmwareVersion.js +80 -0
  534. package/dist/generatedMcpToolCatalog.js +1 -1
  535. package/dist/generatedPackageMetadata.js +5 -5
  536. package/dist/ghidra/GhidraAnalysisProfile.js +37 -8
  537. package/dist/ghidra/GhidraClient.js +52 -6
  538. package/dist/ghidra/GhidraDiagnostics.js +3 -0
  539. package/dist/ghidra/GhidraDoctor.js +38 -14
  540. package/dist/ghidra/GhidraFunctionValues.js +14 -8
  541. package/dist/ghidra/GhidraInstallation.js +48 -38
  542. package/dist/ghidra/GhidraInstallationPolicy.js +140 -0
  543. package/dist/ghidra/GhidraInventoryValues.js +39 -2
  544. package/dist/ghidra/GhidraLauncher.js +102 -29
  545. package/dist/ghidra/GhidraLoadImageAttest.js +36 -0
  546. package/dist/ghidra/GhidraLoadImageValues.js +199 -0
  547. package/dist/ghidra/GhidraProvider.js +47 -149
  548. package/dist/ghidra/GhidraProviderCapabilities.js +58 -28
  549. package/dist/ghidra/GhidraProviderClient.js +209 -0
  550. package/dist/ghidra/GhidraRequestQueue.js +2 -2
  551. package/dist/ghidra/GhidraResponseBuffer.js +7 -1
  552. package/dist/ghidra/GhidraSessionError.js +31 -4
  553. package/dist/ghidra/GhidraSessionValues.js +10 -7
  554. package/dist/ghidra/GhidraTargetSnapshot.js +16 -2
  555. package/dist/ghidra/GhidraTransport.js +12 -0
  556. package/dist/ghidra/extensions/GhidraExtensionFailures.js +20 -0
  557. package/dist/ghidra/extensions/GhidraExtensions.js +170 -0
  558. package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +21 -0
  559. package/dist/ghidra/extensions/nativeaot/NativeAotReport.js +100 -0
  560. package/dist/hopper/BridgeLauncher.js +4 -2
  561. package/dist/hopper/HopperAnalysisProfile.js +7 -2
  562. package/dist/hopper/HopperCleanup.js +55 -9
  563. package/dist/hopper/HopperClient.js +14 -4
  564. package/dist/hopper/HopperProcessDiagnostic.js +1 -1
  565. package/dist/hopper/HopperProvider.js +8 -50
  566. package/dist/hopper/HopperProviderCapabilities.js +73 -0
  567. package/dist/hopper/HopperRequestQueue.js +7 -3
  568. package/dist/hopper/HopperResponseStream.js +7 -1
  569. package/dist/hopper/HopperSessionValues.js +1 -1
  570. package/dist/hopper/HopperSocketConnection.js +1 -1
  571. package/dist/hopper/HopperTargetLease.js +23 -15
  572. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +7 -8
  573. package/dist/hopper/LinuxPrivateDisplayProbe.js +10 -6
  574. package/dist/hopper/protocol.js +8 -8
  575. package/dist/ida/IdaConfiguration.js +56 -0
  576. package/dist/ida/IdaDoctor.js +53 -0
  577. package/dist/ida/IdaInput.js +62 -0
  578. package/dist/ida/IdaMcpConnection.js +111 -0
  579. package/dist/ida/IdaOperationRunner.js +299 -0
  580. package/dist/ida/IdaProtocolValues.js +178 -0
  581. package/dist/ida/IdaProvider.js +126 -0
  582. package/dist/ida/IdaProviderCapabilities.js +52 -0
  583. package/dist/ida/IdaSessionClient.js +318 -0
  584. package/dist/ida/IdaWorkspace.js +54 -0
  585. package/dist/{browser → inspector}/JavaScriptRuntimeScope.js +19 -6
  586. package/dist/{browser → inspector}/V8InspectorCaptureProjection.js +46 -8
  587. package/dist/{browser → inspector}/V8InspectorEndpoint.js +3 -2
  588. package/dist/{browser → inspector}/V8InspectorProvider.js +16 -14
  589. package/dist/inspector/providerIdentity.js +6 -0
  590. package/dist/javascript/recovery/RecoveryFiles.js +122 -0
  591. package/dist/javascript/recovery/WakaruCommand.js +116 -0
  592. package/dist/javascript/recovery/WakaruExecution.js +100 -0
  593. package/dist/javascript/recovery/WakaruProvider.js +96 -0
  594. package/dist/javascript/recovery/WakaruPublication.js +102 -0
  595. package/dist/javascript/recovery/WakaruRelease.js +29 -0
  596. package/dist/javascript/recovery/WakaruReport.js +134 -0
  597. package/dist/javascript/sourceMaps/SourceMapCodecProcess.js +37 -0
  598. package/dist/javascript/sourceMaps/SourceMapCodecProtocol.js +20 -0
  599. package/dist/javascript/sourceMaps/SourceMapCommand.js +176 -0
  600. package/dist/javascript/sourceMaps/SourceMapDecoder.js +61 -0
  601. package/dist/javascript/sourceMaps/SourceMapFormat.js +185 -0
  602. package/dist/javascript/sourceMaps/TraceSourceMap.js +138 -0
  603. package/dist/main/shutdown.js +29 -3
  604. package/dist/main/startup.js +1 -1
  605. package/dist/main/transport.js +32 -11
  606. package/dist/main.js +9 -20
  607. package/dist/native/AppleDispatchCoverage.js +58 -0
  608. package/dist/native/AppleDispatchMetadata.js +73 -490
  609. package/dist/native/AppleMachoFixups.js +292 -0
  610. package/dist/native/AppleMachoSelection.js +188 -0
  611. package/dist/native/AppleObjcCategories.js +59 -0
  612. package/dist/native/AppleObjcDispatchFacets.js +257 -0
  613. package/dist/native/AppleObjcProperties.js +68 -0
  614. package/dist/native/AppleObjcProtocols.js +2 -1
  615. package/dist/native/AppleSwiftDispatchFacets.js +150 -0
  616. package/dist/native/NativeMacOSProvider.js +204 -72
  617. package/dist/native/NativeMacOSProviderMetadata.js +42 -0
  618. package/dist/native/NativeMachoInspection.js +87 -26
  619. package/dist/native/NativeUiHelperRuntime.js +14 -4
  620. package/dist/native/NativeUiObservation.js +14 -6
  621. package/dist/native/NativeUiOutputBudget.js +8 -0
  622. package/dist/native/parsers/codesign.js +40 -5
  623. package/dist/native/parsers/demangle.js +6 -2
  624. package/dist/native/parsers/dyldInfo.js +16 -7
  625. package/dist/native/parsers/echoedPath.js +14 -0
  626. package/dist/native/parsers/lipo.js +14 -0
  627. package/dist/native/parsers/otool.js +5 -2
  628. package/dist/native/parsers/plist.js +174 -11
  629. package/dist/process/ExecFileOutput.js +2 -0
  630. package/dist/process/PrivateRuntimeRoot.js +13 -3
  631. package/dist/process/ProcessOwnership.js +5 -73
  632. package/dist/process/ProcessOwnershipObservation.js +62 -2
  633. package/dist/process/ProcessOwnershipProcessTree.js +13 -0
  634. package/dist/process/ProviderProcess.js +62 -24
  635. package/dist/process/ProviderRunLineage.js +1 -1
  636. package/dist/process/WindowsAuthority.js +20 -1
  637. package/dist/reference/ReferenceSourceReaderEntries.js +11 -2
  638. package/dist/reference/ReferenceSourceReaderFile.js +1 -0
  639. package/dist/server/createServer.js +67 -2
  640. package/dist/server/mcpClientMetadata.js +6 -3
  641. package/dist/server/mcpProgress.js +2 -1
  642. package/dist/server/promptCompletion.js +3 -3
  643. package/dist/server/registerAndroidTools.js +30 -0
  644. package/dist/server/registerApplicationTools/compareExportShapes.js +7 -3
  645. package/dist/server/registerApplicationTools/compareSourceToBundle.js +9 -4
  646. package/dist/server/registerApplicationTools/compareVersions.js +7 -3
  647. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +43 -0
  648. package/dist/server/registerApplicationTools/traceFeature.js +8 -3
  649. package/dist/server/registerApplicationTools/traceSemantics.js +8 -3
  650. package/dist/server/registerApplicationTools.js +2 -0
  651. package/dist/server/registerBrowserScenarioTool.js +6 -2
  652. package/dist/server/registerBrowserTools.js +13 -2
  653. package/dist/server/registerCloseLifecycleTool.js +1 -1
  654. package/dist/server/registerElectronTools.js +21 -7
  655. package/dist/server/registerEnhancedTools.js +28 -1
  656. package/dist/server/registerFirmwareTools.js +22 -0
  657. package/dist/server/registerFunctionComparisonTool.js +1 -1
  658. package/dist/server/registerInvestigationTools/helpers.js +2 -1
  659. package/dist/server/registerJavaScriptRecoveryTool.js +17 -0
  660. package/dist/server/registerJavaScriptRuntimeObservationTools.js +9 -4
  661. package/dist/server/registerManagedTools.js +4 -4
  662. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +2 -2
  663. package/dist/server/registerManagedWorkflowTools/contract.js +1 -1
  664. package/dist/server/registerManagedWorkflowTools/evidence.js +1 -1
  665. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +1 -1
  666. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +1 -1
  667. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +2 -2
  668. package/dist/server/registerNativeTools.js +1 -1
  669. package/dist/server/registerOfficialTools.js +4 -1
  670. package/dist/server/registerProcessComparisonTool.js +5 -2
  671. package/dist/server/registerPrompts.js +5 -1
  672. package/dist/server/registerSessionTools.js +4 -2
  673. package/dist/server/registerWebModuleTool.js +17 -0
  674. package/dist/server/registerWebRuntimeTools.js +31 -0
  675. package/dist/server/registerWebScriptTool.js +18 -0
  676. package/dist/server/registerWebSourceLocationTool.js +17 -0
  677. package/dist/server/runDerivedOperation.js +1 -1
  678. package/dist/server/sessionAvailabilityPolicy.js +24 -9
  679. package/dist/server/sessionEvidence.js +1 -1
  680. package/dist/server/toolResult.js +2 -1
  681. package/dist/windows/WindowsNativeLoader.js +108 -0
  682. package/dist/windows/WindowsOwnedProcess.js +170 -0
  683. package/dist/windows/WindowsPrivateRuntime.js +137 -0
  684. package/install.sh +16 -8
  685. package/native/windows/README.md +107 -0
  686. package/native/windows/build/manifest.json +9 -0
  687. package/native/windows/build/rea-windows-x64.node +0 -0
  688. package/package.json +70 -35
  689. package/scripts/hopper-demo-x11.py +67 -8
  690. package/scripts/rea.mjs +10 -2
  691. package/scripts/verify-windows-native-artifact.mjs +39 -0
  692. package/skills/reverse-engineer-anything/SKILL.md +92 -24
  693. package/skills/reverse-engineer-anything/references/android-applications.md +31 -0
  694. package/skills/reverse-engineer-anything/references/javascript-applications.md +19 -2
  695. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +61 -4
  696. package/dist/application/JavaScriptApplicationService.js +0 -52
  697. package/dist/application/runtime.js +0 -51
  698. package/dist/browser/CdpCanonicalJsonDigest.js +0 -9
  699. package/dist/domain/appleApplication.js +0 -181
  700. package/dist/domain/errors.js +0 -324
  701. package/dist/domain/javascriptAstValues.js +0 -13
  702. package/dist/domain/javascriptSemanticTraversal.js +0 -30
  703. package/dist/native/NativeHostCapabilities.js +0 -23
  704. /package/dist/application/{BinarySessionPort.js → DirectAnalysisDependencies.js} +0 -0
  705. /package/dist/application/{ElectronActiveObservationPort.js → WebModulePorts.js} +0 -0
  706. /package/dist/application/{ElectronObservationPort.js → WebRuntimePort.js} +0 -0
  707. /package/dist/application/{JavaScriptArtifactAnalysisTypes.js → WebScriptArtifactPort.js} +0 -0
  708. /package/dist/application/{JavaScriptRuntimeObservationPort.js → WebSourceLocationPorts.js} +0 -0
  709. /package/dist/{domain/electronStaticAnalysisTypes.js → application/android/AndroidAnalysisPort.js} +0 -0
  710. /package/dist/application/{AbortablePromise.js → binary/AbortablePromise.js} +0 -0
  711. /package/dist/{domain/javascriptSemanticValueTypes.js → application/binary/BinarySessionPort.js} +0 -0
  712. /package/dist/application/{BinarySessionStatus.js → binary/BinarySessionStatus.js} +0 -0
  713. /package/dist/application/{ElectronBoundaryGraph.js → javascript/ElectronBoundaryGraph.js} +0 -0
  714. /package/dist/application/{ElectronBoundaryGraphIpc.js → javascript/ElectronBoundaryGraphIpc.js} +0 -0
  715. /package/dist/application/{ElectronBoundaryGraphNative.js → javascript/ElectronBoundaryGraphNative.js} +0 -0
  716. /package/dist/application/{ElectronBoundaryGraphWindows.js → javascript/ElectronBoundaryGraphWindows.js} +0 -0
  717. /package/dist/application/{JavaScriptArtifactGraphBundlers.js → javascript/JavaScriptArtifactGraphBundlers.js} +0 -0
  718. /package/dist/application/{JavaScriptArtifactGraphEvidence.js → javascript/JavaScriptArtifactGraphEvidence.js} +0 -0
  719. /package/dist/application/{JavaScriptArtifactReconstructionInput.js → javascript/JavaScriptArtifactReconstructionInput.js} +0 -0
  720. /package/dist/application/{JavaScriptSemanticGraphEvidence.js → javascript/JavaScriptSemanticGraphEvidence.js} +0 -0
  721. /package/dist/application/{JavaScriptSemanticGraphValueProjection.js → javascript/JavaScriptSemanticGraphValueProjection.js} +0 -0
  722. /package/dist/domain/{electronStaticAnalysis.js → javascript/electronStaticAnalysis.js} +0 -0
  723. /package/dist/domain/{javascriptExportShapeComparisonIdentity.js → javascript/javascriptExportShapeComparisonIdentity.js} +0 -0
  724. /package/dist/domain/{javascriptRuntimeReconciliation.js → javascript/javascriptRuntimeReconciliation.js} +0 -0
  725. /package/dist/domain/{javascriptRuntimeReconciliationRuntime.js → javascript/javascriptRuntimeReconciliationRuntime.js} +0 -0
  726. /package/dist/domain/{javascriptSemanticCoverage.js → javascript/javascriptSemanticCoverage.js} +0 -0
  727. /package/dist/domain/{javascriptSemanticDerivedAnalysis.js → javascript/javascriptSemanticDerivedAnalysis.js} +0 -0
  728. /package/dist/domain/{javascriptSemanticGraphSerialization.js → javascript/javascriptSemanticGraphSerialization.js} +0 -0
  729. /package/dist/domain/{javascriptSemanticIr.js → javascript/javascriptSemanticIr.js} +0 -0
  730. /package/dist/domain/{javascriptSemanticQueryRelations.js → javascript/javascriptSemanticQueryRelations.js} +0 -0
  731. /package/dist/domain/{javascriptSemanticState.js → javascript/javascriptSemanticState.js} +0 -0
  732. /package/dist/domain/{javascriptStaticAnalysisFindings.js → javascript/javascriptStaticAnalysisFindings.js} +0 -0
  733. /package/dist/domain/{javascriptStaticAnalysisState.js → javascript/javascriptStaticAnalysisState.js} +0 -0
  734. /package/dist/domain/{javascriptStaticAnalysisTypes.js → javascript/javascriptStaticAnalysisTypes.js} +0 -0
  735. /package/dist/domain/{managedApplicationGraphCoverage.js → managed/managedApplicationGraphCoverage.js} +0 -0
  736. /package/dist/domain/{managedApplicationGraphNodeCoverage.js → managed/managedApplicationGraphNodeCoverage.js} +0 -0
  737. /package/dist/domain/{nativeApiBoundary.js → native/nativeApiBoundary.js} +0 -0
  738. /package/dist/domain/{nativeInstruction.js → native/nativeInstruction.js} +0 -0
  739. /package/dist/domain/{nativeValueFlow.js → native/nativeValueFlow.js} +0 -0
  740. /package/dist/domain/{nativeValueTrace.js → native/nativeValueTrace.js} +0 -0
@@ -1,5 +1,4 @@
1
- import { createHash } from "node:crypto";
2
- import canonicalize from "canonicalize";
1
+ import { canonicalDigest } from "../domain/comparisonSemantics.js";
3
2
  import { zipPackageFormatForPath } from "../domain/zipPackageFormat.js";
4
3
  import { mzWindowsHeaderOffset, parseDosMzHeader } from "../domain/dosMz.js";
5
4
  /** Index the first occurrence for each canonical logical path. */
@@ -11,7 +10,7 @@ export const indexOccurrencesByPath = (occurrences) => {
11
10
  return byPath;
12
11
  };
13
12
  export const createOccurrence = (entry, path, parent) => ({
14
- occurrence_id: `occ_${digestCanonical({ path, kind: entry.kind })}`,
13
+ occurrence_id: `occ_${canonicalDigest({ path, kind: entry.kind }, "Artifact")}`,
15
14
  artifact_id: null,
16
15
  parent_occurrence_id: parent,
17
16
  logical_path: path,
@@ -59,7 +58,7 @@ export const materializeDirectoryNodes = (occurrences, nodes) => {
59
58
  }))
60
59
  .sort((left, right) => compareDirectoryChildNames(left.name, right.name));
61
60
  const node = createArtifactNode({
62
- sha256: digestCanonical({ kind: "directory", children }),
61
+ sha256: canonicalDigest({ kind: "directory", children }, "Artifact"),
63
62
  size: 0,
64
63
  kind: directory.logical_path.toLowerCase().endsWith(".framework")
65
64
  ? "framework"
@@ -76,13 +75,13 @@ export const materializeDirectoryNodes = (occurrences, nodes) => {
76
75
  };
77
76
  export const createRootNode = (input) => createArtifactNode({
78
77
  sha256: input.digest?.sha256 ??
79
- digestCanonical({
78
+ canonicalDigest({
80
79
  kind: "directory-root",
81
80
  children: input.occurrences.map(({ logical_path, artifact_id }) => ({
82
81
  logical_path,
83
82
  artifact_id,
84
83
  })),
85
- }),
84
+ }, "Artifact"),
86
85
  size: input.digest?.bytes ?? 0,
87
86
  kind: input.directory ||
88
87
  ["zip", "ipa", "apk", "msix", "appx", "asar", "dmg", "pkg"].includes(input.format)
@@ -95,7 +94,7 @@ export const createRootNode = (input) => createArtifactNode({
95
94
  contentState: "materialized",
96
95
  });
97
96
  export const createArtifactNode = (input) => ({
98
- artifact_id: `art_${digestCanonical({ sha256: input.sha256 })}`,
97
+ artifact_id: `art_${canonicalDigest({ sha256: input.sha256 }, "Artifact")}`,
99
98
  kind: input.kind,
100
99
  format: input.format,
101
100
  sha256: input.sha256,
@@ -107,7 +106,7 @@ export const createArtifactNode = (input) => ({
107
106
  limitations: [...(input.limitations ?? [])],
108
107
  });
109
108
  export const rootOccurrenceFor = (node, declaredSize) => ({
110
- occurrence_id: `occ_${digestCanonical({ root: node.artifact_id })}`,
109
+ occurrence_id: `occ_${canonicalDigest({ root: node.artifact_id }, "Artifact")}`,
111
110
  artifact_id: node.artifact_id,
112
111
  parent_occurrence_id: null,
113
112
  logical_path: ".",
@@ -123,11 +122,11 @@ export const rootOccurrenceFor = (node, declaredSize) => ({
123
122
  export const rekeyOccurrences = (rootArtifactId, occurrences) => {
124
123
  const replacements = new Map();
125
124
  for (const occurrence of occurrences)
126
- replacements.set(occurrence.occurrence_id, `occ_${digestCanonical({
125
+ replacements.set(occurrence.occurrence_id, `occ_${canonicalDigest({
127
126
  root_artifact_id: rootArtifactId,
128
127
  logical_path: occurrence.logical_path,
129
128
  entry_kind: occurrence.entry_kind,
130
- })}`);
129
+ }, "Artifact")}`);
131
130
  for (const occurrence of occurrences) {
132
131
  occurrence.occurrence_id =
133
132
  replacements.get(occurrence.occurrence_id) ?? occurrence.occurrence_id;
@@ -161,7 +160,7 @@ export const createArtifactEdges = (rootArtifactId, occurrences, producer) => {
161
160
  logical_path: occurrence.logical_path,
162
161
  };
163
162
  edges.push({
164
- edge_id: `edge_${digestCanonical(semantic)}`,
163
+ edge_id: `edge_${canonicalDigest(semantic, "Artifact")}`,
165
164
  ...semantic,
166
165
  producer: occurrence.entry_kind === "slice" ? (producer ?? null) : null,
167
166
  ordinal: edges.length,
@@ -255,12 +254,6 @@ export const classifyArtifactContent = (path, prefix, fileSize = prefix.length)
255
254
  }
256
255
  return byPath;
257
256
  };
258
- export const digestCanonical = (value) => {
259
- const encoded = canonicalize(value);
260
- if (encoded === undefined)
261
- throw new TypeError("Artifact value is not canonical JSON");
262
- return createHash("sha256").update(encoded).digest("hex");
263
- };
264
257
  const relationFor = (path) => {
265
258
  const lower = path.toLowerCase();
266
259
  if (lower.endsWith(".map"))
@@ -1,6 +1,6 @@
1
1
  import { open } from "node:fs/promises";
2
2
  import { classifyArtifactContent } from "../ArtifactGraphConstruction.js";
3
- import { ARTIFACT_CLASSIFICATION_PREFIX_BYTES } from "./hash.js";
3
+ import { ARTIFACT_CLASSIFICATION_PREFIX_BYTES } from "../../artifacts/ArtifactHash.js";
4
4
  import { hasZipSignature, zipPackageFormatForPath, } from "../../domain/zipPackageFormat.js";
5
5
  const classifyContainerExtension = (path) => {
6
6
  const lower = path.toLowerCase();
@@ -2,9 +2,10 @@ import { createReadStream } from "node:fs";
2
2
  import { lstat } from "node:fs/promises";
3
3
  import { ArtifactReaderFailure, } from "../../artifacts/ArtifactReader.js";
4
4
  import { artifactInventoryResultSchema, } from "../../domain/artifactGraph.js";
5
- import { createArtifactEdges, createRootNode, digestCanonical, indexOccurrencesByPath, materializeDirectoryNodes, rekeyOccurrences, rootOccurrenceFor, } from "../ArtifactGraphConstruction.js";
5
+ import { createArtifactEdges, createRootNode, indexOccurrencesByPath, materializeDirectoryNodes, rekeyOccurrences, rootOccurrenceFor, } from "../ArtifactGraphConstruction.js";
6
+ import { canonicalDigest } from "../../domain/comparisonSemantics.js";
6
7
  import { classifyRoot } from "./classify.js";
7
- import { hashReadable } from "./hash.js";
8
+ import { hashReadable } from "../../artifacts/ArtifactHash.js";
8
9
  import { createReader, inventoryLimitations } from "./reader.js";
9
10
  import { scanReader, } from "./scanReader.js";
10
11
  import { STRICT_INTEGRITY_POLICY, } from "./types.js";
@@ -62,12 +63,12 @@ const buildInventorySnapshot = async (input) => {
62
63
  const orderedOccurrences = sortOccurrences(input.occurrences);
63
64
  const orderedEdges = sortEdges(edges);
64
65
  await verifyRootDigest(path, rootDigest, signal);
65
- const graphSha256 = digestCanonical({
66
+ const graphSha256 = canonicalDigest({
66
67
  nodes: orderedNodes,
67
68
  occurrences: orderedOccurrences,
68
69
  edges: orderedEdges,
69
70
  integrity_contradictions: integrityContradictions,
70
- });
71
+ }, "Artifact");
71
72
  const manifest = buildManifest({
72
73
  rootNode,
73
74
  graphSha256,
@@ -94,12 +95,12 @@ const buildIntegrityContradictions = (pending, occurrenceByPath, occurrenceById,
94
95
  : occurrenceById.get(occurrence.parent_occurrence_id);
95
96
  const parentArtifactId = parent?.artifact_id ?? rootNode.artifact_id;
96
97
  return {
97
- contradiction_id: `ic_${digestCanonical({
98
+ contradiction_id: `ic_${canonicalDigest({
98
99
  root_artifact_id: rootNode.artifact_id,
99
100
  logical_path: contradiction.logicalPath,
100
101
  declared_sha256: contradiction.declaredSha256,
101
102
  observed_sha256: contradiction.observedSha256,
102
- })}`,
103
+ }, "Artifact")}`,
103
104
  occurrence_id: occurrence.occurrence_id,
104
105
  parent_artifact_id: parentArtifactId,
105
106
  logical_path: contradiction.logicalPath,
@@ -126,10 +127,10 @@ const sortNodes = (nodes) => nodes.sort((left, right) => left.artifact_id.locale
126
127
  const sortOccurrences = (occurrences) => occurrences.sort((left, right) => left.logical_path.localeCompare(right.logical_path, "en"));
127
128
  const sortEdges = (edges) => edges.sort((left, right) => left.edge_id.localeCompare(right.edge_id));
128
129
  const buildManifest = ({ rootNode, graphSha256, orderedNodes, orderedOccurrences, orderedEdges, }) => artifactInventoryResultSchema.shape.manifest.parse({
129
- manifest_id: `agm_${digestCanonical({
130
+ manifest_id: `agm_${canonicalDigest({
130
131
  root_artifact_id: rootNode.artifact_id,
131
132
  graph_sha256: graphSha256,
132
- })}`,
133
+ }, "Artifact")}`,
133
134
  root_artifact_id: rootNode.artifact_id,
134
135
  root_sha256: rootNode.sha256,
135
136
  root_format: rootNode.format,
@@ -4,7 +4,7 @@ import { ArtifactReaderFailure, } from "../../artifacts/ArtifactReader.js";
4
4
  import { AsarArtifactReader } from "../../artifacts/AsarArtifactReader.js";
5
5
  import { classifyArtifactContent, createArtifactNode, createOccurrence, nearestParent, } from "../ArtifactGraphConstruction.js";
6
6
  import { STRICT_INTEGRITY_POLICY, } from "./types.js";
7
- import { hashReadable } from "./hash.js";
7
+ import { hashReadable } from "../../artifacts/ArtifactHash.js";
8
8
  const UNAVAILABLE_UNPACKED_LIMITATION = "ASAR unpacked companion bytes were unavailable; no content hash or child artifact was produced.";
9
9
  const emptyScan = () => ({ nodes: new Map(), occurrences: [], pendingContradictions: [] });
10
10
  export const scanReader = async (reader, signal, integrity = STRICT_INTEGRITY_POLICY) => {
@@ -1,6 +1,6 @@
1
1
  import { realpath } from "node:fs/promises";
2
2
  import { artifactInventoryResultSchema, } from "../domain/artifactGraph.js";
3
- import { abortIfNeeded } from "./ArtifactInventory/hash.js";
3
+ import { abortIfNeeded } from "../artifacts/ArtifactHash.js";
4
4
  import { scanCanonicalArtifactInventory } from "./ArtifactInventory/scanCanonical.js";
5
5
  export { scanCanonicalArtifactInventory } from "./ArtifactInventory/scanCanonical.js";
6
6
  /** Inventory one local artifact and return every graph collection inline. */
@@ -1,22 +1,20 @@
1
1
  import { constants } from "node:fs";
2
2
  import { createHash } from "node:crypto";
3
- import { access, open, readFile, realpath, stat, } from "node:fs/promises";
4
- import { execFile } from "node:child_process";
5
- import { extname, isAbsolute, join, resolve } from "node:path";
6
- import { promisify } from "node:util";
7
- import { isPathWithinRoot } from "../domain/localPath.js";
8
- import { BinaryTargetError } from "../domain/errors.js";
3
+ import { access, open, realpath, stat, } from "node:fs/promises";
4
+ import { extname, isAbsolute, resolve } from "node:path";
5
+ import { BinaryTargetError } from "../domain/configurationErrors.js";
9
6
  import { err, ok } from "../domain/result.js";
7
+ import { resolveAppBundleExecutable, } from "./AppBundleExecutable.js";
8
+ import { validateDosComLength, } from "../domain/dosCom.js";
10
9
  import { mzWindowsHeaderOffset } from "../domain/dosMz.js";
11
10
  import { hasZipSignature, zipPackageFormatForPath, } from "../domain/zipPackageFormat.js";
12
11
  import { parseExecutableHeader, parsePeRecord, } from "../domain/binaryTarget.js";
13
- const execFileAsync = promisify(execFile);
14
12
  /**
15
13
  * Resolve and classify a readable local target before a provider is selected.
16
14
  * FAT Mach-O inputs select only a host-compatible architecture so setup remains
17
15
  * non-interactive; unsupported or ambiguous inputs are returned as typed errors.
18
16
  */
19
- export const parseBinaryTarget = async (input, cwd = process.cwd(), hostArchitecture = process.arch, targetKind) => {
17
+ export const parseBinaryTarget = async (input, cwd = process.cwd(), hostArchitecture = process.arch, targetKind, formatHint) => {
20
18
  const candidate = isAbsolute(input) ? input : resolve(cwd, input);
21
19
  try {
22
20
  await access(candidate, constants.R_OK);
@@ -24,16 +22,33 @@ export const parseBinaryTarget = async (input, cwd = process.cwd(), hostArchitec
24
22
  const resolved = await resolveAppBundle(canonical);
25
23
  if (!resolved.ok)
26
24
  return err(resolved.error);
27
- const path = resolved.value;
25
+ const { executable: path, infoPlist } = resolved.value;
26
+ const bundle = infoPlist === undefined ? {} : { bundleInfoPlist: infoPlist };
28
27
  const handle = await open(path, "r");
29
28
  try {
30
29
  if (!(await handle.stat()).isFile())
31
30
  return err(new BinaryTargetError(path, "target is not a regular file"));
31
+ if (formatHint === "dos-com") {
32
+ if (targetKind !== undefined && targetKind !== "executable")
33
+ return err(new BinaryTargetError(path, "DOS COM format requires an executable target kind"));
34
+ const length = validateDosComLength((await handle.stat()).size);
35
+ if (!length.ok)
36
+ return err(new BinaryTargetError(path, length.error));
37
+ return ok({
38
+ path,
39
+ sourcePath: canonical,
40
+ sha256: await sha256Handle(handle),
41
+ kind: "executable",
42
+ format: "dos-com",
43
+ architecture: "x86",
44
+ availableArchitectures: ["x86"],
45
+ });
46
+ }
32
47
  if (targetKind === "database" ||
33
48
  (targetKind === undefined && path.toLowerCase().endsWith(".hop")))
34
49
  return ok({
35
50
  path,
36
- sourcePath: canonical,
51
+ sourcePath: process.platform === "win32" ? candidate : canonical,
37
52
  sha256: await sha256Handle(handle),
38
53
  kind: "database",
39
54
  format: "analysis-database",
@@ -42,7 +57,7 @@ export const parseBinaryTarget = async (input, cwd = process.cwd(), hostArchitec
42
57
  if (artifactFormat !== undefined) {
43
58
  const identity = {
44
59
  path,
45
- sourcePath: canonical,
60
+ sourcePath: process.platform === "win32" ? candidate : canonical,
46
61
  sha256: await sha256Handle(handle),
47
62
  };
48
63
  return isArchiveFormat(artifactFormat)
@@ -54,7 +69,8 @@ export const parseBinaryTarget = async (input, cwd = process.cwd(), hostArchitec
54
69
  return err(new BinaryTargetError(path, detected.error));
55
70
  return ok({
56
71
  path,
57
- sourcePath: canonical,
72
+ sourcePath: process.platform === "win32" ? candidate : canonical,
73
+ ...bundle,
58
74
  sha256: await sha256Handle(handle),
59
75
  kind: "executable",
60
76
  ...detected.value,
@@ -142,65 +158,13 @@ const sha256Handle = async (handle) => {
142
158
  const resolveAppBundle = async (path) => {
143
159
  const metadata = await stat(path);
144
160
  if (!metadata.isDirectory())
145
- return ok(path);
161
+ return ok({ executable: path });
146
162
  if (extname(path).toLowerCase() !== ".app")
147
- return err(new BinaryTargetError(path, "target is not an app or file"));
148
- const plistPath = join(path, "Contents", "Info.plist");
149
- let name;
150
- try {
151
- const plist = await readFile(plistPath);
152
- name =
153
- plist.subarray(0, 6).toString("ascii") === "bplist"
154
- ? await readBinaryPlistExecutable(plistPath)
155
- : parseXmlPlistExecutable(plist.toString("utf8"));
156
- }
157
- catch (cause) {
158
- return err(new BinaryTargetError(path, "app has no readable CFBundleExecutable", {
159
- cause,
163
+ return err(new BinaryTargetError(path, "this opening route requires a file or app bundle", {
164
+ constraint: "directory_requires_file",
160
165
  }));
161
- }
162
- if (!isSafeExecutableName(name))
163
- return err(new BinaryTargetError(path, "app has an unsafe CFBundleExecutable"));
164
- const programs = join(path, "Contents", "MacOS");
165
- const executable = join(programs, name);
166
- try {
167
- const [canonicalPrograms, canonicalExecutable] = await Promise.all([
168
- realpath(programs),
169
- realpath(executable),
170
- ]);
171
- if (!isPathWithinRoot(canonicalPrograms, canonicalExecutable))
172
- return err(new BinaryTargetError(path, "app program file leaves Contents/MacOS"));
173
- return ok(canonicalExecutable);
174
- }
175
- catch (cause) {
176
- return err(new BinaryTargetError(path, "app program file is missing", { cause }));
177
- }
178
- };
179
- const parseXmlPlistExecutable = (plist) => {
180
- const match = /<key>\s*CFBundleExecutable\s*<\/key>\s*<string>([^<]+)<\/string>/u.exec(plist);
181
- if (match?.[1] === undefined)
182
- throw new Error("CFBundleExecutable is missing");
183
- return decodeXml(match[1].trim());
166
+ return resolveAppBundleExecutable(path);
184
167
  };
185
- const readBinaryPlistExecutable = async (plistPath) => (await execFileAsync("/usr/bin/plutil", [
186
- "-extract",
187
- "CFBundleExecutable",
188
- "raw",
189
- "-o",
190
- "-",
191
- plistPath,
192
- ])).stdout.trim();
193
- const isSafeExecutableName = (name) => name.length > 0 &&
194
- name !== "." &&
195
- name !== ".." &&
196
- !name.includes("\0") &&
197
- !/[/\\]/u.test(name);
198
- const decodeXml = (value) => value
199
- .replaceAll("&amp;", "&")
200
- .replaceAll("&lt;", "<")
201
- .replaceAll("&gt;", ">")
202
- .replaceAll("&quot;", '"')
203
- .replaceAll("&apos;", "'");
204
168
  const readExecutableMetadata = async (handle, hostArchitecture) => {
205
169
  const prefix = Buffer.alloc(4096);
206
170
  const prefixRead = await handle.read(prefix, 0, prefix.length, 0);
@@ -1,4 +1,5 @@
1
- import { AnalysisCapabilityUnavailableError, } from "../domain/errors.js";
1
+ import { AnalysisCapabilityUnavailableError } from "../domain/analysisErrorCore.js";
2
+ import {} from "../domain/analysisErrorBase.js";
2
3
  import { err, ok } from "../domain/result.js";
3
4
  import { createBrowserEvidence } from "./BrowserEvidence.js";
4
5
  /** List browser targets within the endpoint and origin scope in the request. */
@@ -1,5 +1,6 @@
1
1
  import { createBrowserScenarioEvidence } from "./BrowserScenarioEvidence.js";
2
- import { AnalysisCapabilityUnavailableError, } from "../domain/errors.js";
2
+ import { AnalysisCapabilityUnavailableError } from "../domain/analysisErrorCore.js";
3
+ import {} from "../domain/analysisErrorBase.js";
3
4
  import { err } from "../domain/result.js";
4
5
  const OPERATION = "capture_browser_scenario";
5
6
  const PROVIDER_ID = "rea-playwright-browser-scenario";
@@ -1,9 +1,9 @@
1
+ import { canonicalDigest } from "../domain/comparisonSemantics.js";
1
2
  import { sanitizeBrowserUrl } from "../domain/browserObservation.js";
2
3
  import { createEvidence, } from "../domain/evidence.js";
3
4
  import { jsonValueSchema } from "../domain/jsonValue.js";
4
- import { digestCanonicalJson } from "../domain/browserScenarioNormalization.js";
5
5
  const browserScenarioParameters = (scenario) => ({
6
- scenario_sha256: digestCanonicalJson(scenario),
6
+ scenario_sha256: canonicalDigest(scenario, "Browser scenario"),
7
7
  browser_mode: scenario.browser.mode,
8
8
  ...(scenario.browser.mode === "launch"
9
9
  ? { browser_headless: scenario.browser.headless }
@@ -1,4 +1,5 @@
1
- import { projectAnalysisError } from "../domain/errors.js";
1
+ import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
2
+ import {} from "../domain/analysisErrorBase.js";
2
3
  import { parseRelatedAddresses } from "../domain/hopperValues.js";
3
4
  import { ok } from "../domain/result.js";
4
5
  /** Trace direct caller/callee relationships until the graph is exhausted or the goal is reached. */
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { providerCapability, } from "../contracts/toolOutputSchemaPrimitives.js";
3
- import { GENERATED_MCP_TOOL_CATALOG } from "../generatedMcpToolCatalog.js";
3
+ import { TOOL_CONTRACTS } from "../contracts/toolContracts.js";
4
4
  import { clientRequirementsFor, NO_CLIENT_FEATURES, } from "./CapabilityClientRequirements.js";
5
5
  const statusSchema = z.object({
6
6
  open: z.boolean(),
@@ -55,7 +55,7 @@ const NAVIGATION_CONTEXT_MODES = [
55
55
  export const buildCapabilityInventory = (sessionStatus, policy, clientFeatures = NO_CLIENT_FEATURES) => {
56
56
  const status = statusSchema.parse(sessionStatus);
57
57
  const descriptors = new Map(status.capabilities.map((descriptor) => [descriptor.operation, descriptor]));
58
- return GENERATED_MCP_TOOL_CATALOG.map((contract) => {
58
+ return TOOL_CONTRACTS.map((contract) => {
59
59
  const availability = availabilityFor({
60
60
  name: contract.name,
61
61
  kind: contract.kind,
@@ -107,11 +107,21 @@ export const buildCapabilityInventory = (sessionStatus, policy, clientFeatures =
107
107
  }).sort((left, right) => left.name.localeCompare(right.name));
108
108
  };
109
109
  const availabilityFor = (context) => {
110
+ // These built-in workflows accept a caller-selected endpoint; they do not load the optional passive provider.
111
+ if (context.name === "observe_web_execution" ||
112
+ context.name === "inspect_web_event_listeners")
113
+ return { reason: "available", remediation: null };
110
114
  if (context.name === "get_navigation_context")
111
115
  return navigationContextAvailability(context.descriptors);
112
116
  const javascriptApplication = javascriptApplicationAvailability(context);
113
117
  if (javascriptApplication !== null)
114
118
  return javascriptApplication;
119
+ const failure = optionalProviderFailureFor(context);
120
+ if (failure !== undefined)
121
+ return {
122
+ reason: "provider_unavailable",
123
+ remediation: `Adapter ${failure.providerId} could not load: ${failure.reason}. Repair the adapter installation and restart REA; other capabilities remain available.`,
124
+ };
115
125
  const workflowAvailability = workflowAvailabilityFor(context);
116
126
  if (workflowAvailability !== null)
117
127
  return workflowAvailability;
@@ -120,6 +130,20 @@ const availabilityFor = (context) => {
120
130
  return targetDecision;
121
131
  return providerAvailability(context);
122
132
  };
133
+ const optionalProviderFailureFor = ({ name, kind, policy, }) => {
134
+ const failures = policy.optionalProviderLoadFailures;
135
+ if (name === "capture_browser_scenario")
136
+ return failures?.browserScenarioCapture;
137
+ if (kind === "browser-provider")
138
+ return failures?.browserObservation;
139
+ if (name === "capture_electron_scenario")
140
+ return failures?.electronActiveObservation;
141
+ if (kind === "electron-provider")
142
+ return failures?.electronObservation;
143
+ if (kind === "runtime-provider")
144
+ return failures?.javascriptRuntimeObservation;
145
+ return undefined;
146
+ };
123
147
  const javascriptApplicationAvailability = ({ name, }) => {
124
148
  if (name === "analyze_javascript_application")
125
149
  return { reason: "available", remediation: null };
@@ -128,6 +152,58 @@ const javascriptApplicationAvailability = ({ name, }) => {
128
152
  : null;
129
153
  };
130
154
  const workflowAvailabilityFor = ({ name, kind, policy, }) => {
155
+ if (name === "trace_web_module_imports")
156
+ return {
157
+ reason: "available",
158
+ remediation: null,
159
+ defaultModeAvailable: policy.webModuleResolutionEnabled === true,
160
+ modes: [
161
+ {
162
+ name: "sources-without-literal-imports",
163
+ available: true,
164
+ missing_operations: [],
165
+ remediation: null,
166
+ },
167
+ policy.webModuleResolutionEnabled === true
168
+ ? {
169
+ name: "native-literal-resolution",
170
+ available: true,
171
+ missing_operations: [],
172
+ remediation: null,
173
+ }
174
+ : {
175
+ name: "native-literal-resolution",
176
+ available: false,
177
+ missing_operations: ["native-module-resolver"],
178
+ remediation: "Provide an absolute REA_BROWSER_EXECUTABLE supporting import.meta.resolve; no binary target is required.",
179
+ },
180
+ ],
181
+ };
182
+ if (name === "recover_javascript_sources")
183
+ return policy.javascriptRecoveryEnabled === true
184
+ ? { reason: "available", remediation: null }
185
+ : {
186
+ reason: "provider_missing",
187
+ remediation: "On Linux x64, provide an absolute REA_WAKARU_COMMAND for Wakaru 1.13.0 and util-linux prlimit. No binary target is required.",
188
+ };
189
+ if (kind === "firmware-provider") {
190
+ const enabled = name === "inspect_firmware_regions"
191
+ ? policy.firmwareInspectionEnabled
192
+ : policy.firmwareExtractionEnabled;
193
+ return enabled === true
194
+ ? { reason: "available", remediation: null }
195
+ : {
196
+ reason: "provider_missing",
197
+ remediation: "On Linux, provide an absolute REA_BINWALK_COMMAND (Binwalk 3.1.x, verified with 3.1.0) or REA_UNBLOB_COMMAND (Unblob 26.6.x, verified with 26.6.4) path and util-linux prlimit. Extraction also requires the selected format’s external extractor.",
198
+ };
199
+ }
200
+ if (kind === "android-provider")
201
+ return policy.androidAnalysisEnabled === true
202
+ ? { reason: "available", remediation: null }
203
+ : {
204
+ reason: "provider_missing",
205
+ remediation: "Set REA_JADX_MCP_JAR to a caller-supplied jadx-headless-mcp 0.7.1 JAR and provide Java on Linux or macOS. Only Linux has real-provider verification.",
206
+ };
131
207
  const browser = browserProviderAvailability(name, kind, policy);
132
208
  if (browser !== null)
133
209
  return browser;
@@ -26,7 +26,9 @@ export const resolveClientConfigTransactionPath = async (requestedPath, fileSyst
26
26
  ? canonicalPath
27
27
  : undefined;
28
28
  }
29
- catch {
29
+ catch (cause) {
30
+ // best-effort cleanup: unreadable or vanishing config paths mean no registration.
31
+ void cause;
30
32
  return undefined;
31
33
  }
32
34
  };
@@ -31,12 +31,16 @@ const parseDocument = (text, format) => {
31
31
  if (format === "toml")
32
32
  return objectSchema.parse(parseToml(text));
33
33
  const errors = [];
34
- const document = parseJsonc(text, errors, { allowTrailingComma: true });
34
+ // Accept a UTF-8 BOM without shifting diagnostics or editing the original text.
35
+ const jsonText = text.startsWith("\uFEFF") ? ` ${text.slice(1)}` : text;
36
+ const document = parseJsonc(jsonText, errors, { allowTrailingComma: true });
35
37
  const firstError = errors[0];
36
38
  if (firstError !== undefined)
37
39
  throw new SyntaxError(`Invalid JSON/JSONC at offset ${firstError.offset}: ${printParseErrorCode(firstError.error)}`);
38
40
  return objectSchema.parse(document);
39
41
  };
42
+ /** Members of OpenCode V2's `mcp` object that are not server names. */
43
+ const OPENCODE_V2_MCP_SETTINGS = new Set(["servers", "timeout"]);
40
44
  /** Parse a client document and reject malformed roots or MCP server tables. */
41
45
  export const parseClientConfiguration = (text, format) => {
42
46
  if (format === undefined || format === "unsupported")
@@ -45,27 +49,76 @@ export const parseClientConfiguration = (text, format) => {
45
49
  const serversKey = clientConfigurationServersKey(format);
46
50
  const value = document[serversKey];
47
51
  const servers = value === undefined ? {} : objectSchema.parse(value);
48
- return { document, servers, serversKey };
52
+ const native = servers.servers;
53
+ // A V1 server named `servers` has a string `type` discriminator; the V2
54
+ // table may instead hold a server object named `type`.
55
+ if (format !== "opencode" ||
56
+ native === undefined ||
57
+ (typeof native === "object" &&
58
+ native !== null &&
59
+ "type" in native &&
60
+ typeof native.type === "string"))
61
+ return {
62
+ document,
63
+ servers,
64
+ serversPath: [serversKey],
65
+ dialect: format,
66
+ legacyServers: {},
67
+ };
68
+ return {
69
+ document,
70
+ servers: objectSchema.parse(native),
71
+ serversPath: [serversKey, "servers"],
72
+ dialect: "opencode_v2",
73
+ legacyServers: Object.fromEntries(Object.entries(servers).filter(([name]) => !OPENCODE_V2_MCP_SETTINGS.has(name))),
74
+ };
75
+ };
76
+ /** The registration a client loads for `name`, including OpenCode V1 entries. */
77
+ export const effectiveClientServer = (parsed, name) => Object.hasOwn(parsed.servers, name)
78
+ ? parsed.servers[name]
79
+ : parsed.legacyServers[name];
80
+ /**
81
+ * Return `parsed.document` with `servers` at its server table. A legacy OpenCode
82
+ * V1 member named in `removeLegacy` is removed beside a native V2 table.
83
+ */
84
+ export const withClientServers = (parsed, servers, removeLegacy) => {
85
+ const [key = "", nested] = parsed.serversPath;
86
+ if (nested === undefined)
87
+ return { ...parsed.document, [key]: servers };
88
+ const outer = { ...objectSchema.parse(parsed.document[key]) };
89
+ if (removeLegacy !== undefined && !OPENCODE_V2_MCP_SETTINGS.has(removeLegacy))
90
+ delete outer[removeLegacy];
91
+ return { ...parsed.document, [key]: { ...outer, [nested]: servers } };
92
+ };
93
+ /** Read the value at a key path, or `undefined` when any member is absent. */
94
+ const valueAt = (document, path) => {
95
+ let current = document;
96
+ for (const key of path) {
97
+ const object = objectSchema.safeParse(current);
98
+ if (!object.success || !Object.hasOwn(object.data, key))
99
+ return undefined;
100
+ current = object.data[key];
101
+ }
102
+ return current;
49
103
  };
50
104
  /** Serialize a validated client document, retaining JSONC comments. */
51
- export const serializeClientConfiguration = (document, format, originalText, editedServerName) => {
105
+ export const serializeClientConfiguration = (document, format, originalText, editedPaths) => {
52
106
  if (format === undefined || format === "unsupported")
53
107
  throw new TypeError("client does not have a supported MCP config format");
54
108
  if (format === "toml")
55
109
  return stringifyToml(document);
56
- if (originalText !== undefined && editedServerName !== undefined) {
57
- const serversKey = clientConfigurationServersKey(format);
58
- const servers = objectSchema.parse(document[serversKey] ?? {});
59
- const editedValue = Object.hasOwn(servers, editedServerName)
60
- ? servers[editedServerName]
61
- : undefined;
62
- const edits = modify(originalText, [serversKey, editedServerName], editedValue, {
110
+ if (originalText !== undefined && editedPaths !== undefined)
111
+ return editedPaths.reduce((text, path) => applyEdits(text, modify(text, [...path], valueAt(document, path), {
63
112
  formattingOptions: { insertSpaces: true, tabSize: 2, eol: "\n" },
64
- });
65
- return applyEdits(originalText, edits);
66
- }
113
+ })), originalText);
67
114
  return `${JSON.stringify(document, null, 2)}\n`;
68
115
  };
116
+ /** Key path of a named registration in the server table. */
117
+ export const clientServerPath = (parsed, name) => [...parsed.serversPath, name];
118
+ /** Key path of a present OpenCode V1 entry beside a native V2 table. */
119
+ export const legacyClientServerPath = (parsed, name) => Object.hasOwn(parsed.legacyServers, name)
120
+ ? [parsed.serversPath[0] ?? "mcp", name]
121
+ : undefined;
69
122
  /** Build the stdio entry shape expected by one client's configuration dialect. */
70
123
  export const clientRegistrationEntry = (format, command, environment) => {
71
124
  const [executable = "rea", ...args] = command;
@@ -79,6 +132,15 @@ export const clientRegistrationEntry = (format, command, environment) => {
79
132
  ? {}
80
133
  : { environment: { ...environment } }),
81
134
  };
135
+ case "opencode_v2":
136
+ // V2 connects servers unless `disabled` is true.
137
+ return {
138
+ type: "local",
139
+ command: [...command],
140
+ ...(Object.keys(environment).length === 0
141
+ ? {}
142
+ : { environment: { ...environment } }),
143
+ };
82
144
  case "vscode":
83
145
  return {
84
146
  type: "stdio",
@@ -94,6 +156,14 @@ export const clientRegistrationEntry = (format, command, environment) => {
94
156
  tools: ["*"],
95
157
  ...(Object.keys(environment).length === 0 ? {} : { env: environment }),
96
158
  };
159
+ case "commandcode":
160
+ return {
161
+ transport: "stdio",
162
+ enabled: true,
163
+ command: executable,
164
+ args,
165
+ ...(Object.keys(environment).length === 0 ? {} : { env: environment }),
166
+ };
97
167
  default:
98
168
  return {
99
169
  command: executable,