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,5 @@
1
1
  import { setImmediate } from "node:timers/promises";
2
- import { AnalysisCancelledError, AnalysisInputError, } from "../domain/errors.js";
2
+ import { AnalysisCancelledError, AnalysisInputError, } from "../domain/analysisErrorCore.js";
3
3
  import { err, ok } from "../domain/result.js";
4
4
  import { mcpProgressReporter } from "./mcpProgress.js";
5
5
  /** Run synchronous derived work with transport yields and a publication guard. */
@@ -1,11 +1,26 @@
1
1
  import { platform } from "node:process";
2
2
  /** Select configured availability reporting or the target-free defaults. */
3
- export const sessionAvailabilityPolicy = (configured, defaults) => configured ??
4
- (() => ({
5
- processCaptureEnabled: platform !== "win32",
6
- browserObservationEnabled: defaults.optionalFeatures?.browserObservationEnabled ?? false,
7
- browserScenarioEnabled: defaults.optionalFeatures?.browserScenarioEnabled ?? false,
8
- electronObservationEnabled: defaults.optionalFeatures?.electronObservationEnabled ?? false,
9
- electronAutomationEnabled: defaults.optionalFeatures?.electronAutomationEnabled ?? false,
10
- v8InspectorObservationEnabled: defaults.optionalFeatures?.v8InspectorObservationEnabled ?? false,
11
- }));
3
+ export const sessionAvailabilityPolicy = (configured, defaults) => {
4
+ const policy = configured ??
5
+ (() => ({
6
+ processCaptureEnabled: platform !== "win32",
7
+ firmwareInspectionEnabled: defaults.optionalFeatures?.firmwareInspectionEnabled ?? false,
8
+ firmwareExtractionEnabled: defaults.optionalFeatures?.firmwareExtractionEnabled ?? false,
9
+ androidAnalysisEnabled: defaults.optionalFeatures?.androidAnalysisEnabled ?? false,
10
+ javascriptRecoveryEnabled: defaults.optionalFeatures?.javascriptRecoveryEnabled ?? false,
11
+ webModuleResolutionEnabled: defaults.optionalFeatures?.webModuleResolutionEnabled ?? false,
12
+ browserObservationEnabled: defaults.optionalFeatures?.browserObservationEnabled ?? false,
13
+ browserScenarioEnabled: defaults.optionalFeatures?.browserScenarioEnabled ?? false,
14
+ electronObservationEnabled: defaults.optionalFeatures?.electronObservationEnabled ?? false,
15
+ electronAutomationEnabled: defaults.optionalFeatures?.electronAutomationEnabled ?? false,
16
+ v8InspectorObservationEnabled: defaults.optionalFeatures?.v8InspectorObservationEnabled ?? false,
17
+ }));
18
+ return () => ({
19
+ ...policy(),
20
+ ...(defaults.optionalProviderLoadFailures === undefined
21
+ ? {}
22
+ : {
23
+ optionalProviderLoadFailures: defaults.optionalProviderLoadFailures,
24
+ }),
25
+ });
26
+ };
@@ -1,4 +1,4 @@
1
- import { EvidenceIntegrityError } from "../domain/errors.js";
1
+ import { EvidenceIntegrityError } from "../domain/evidenceErrors.js";
2
2
  import { ok } from "../domain/result.js";
3
3
  /** Record source evidence in order, stopping at the first session rejection. */
4
4
  export const recordSessionEvidenceSources = (recordEvidence, sources) => {
@@ -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
  /**
3
4
  * Serialize an application result as MCP text and structured content.
4
5
  * Shared error projection preserves actionable local diagnostics while omitting
@@ -0,0 +1,108 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readFileSync } from "node:fs";
3
+ import { createRequire } from "node:module";
4
+ import { fileURLToPath } from "node:url";
5
+ import { z } from "zod";
6
+ import { PACKAGE_METADATA } from "../generatedPackageMetadata.js";
7
+ /** A native resource remains opaque until the addon validates its object tag. */
8
+ export const windowsHandleSchema = z.custom((value) => typeof value === "object" && value !== null && !Array.isArray(value));
9
+ /** Observed identity of an opened local NTFS object. */
10
+ export const windowsFileIdentitySchema = z.strictObject({
11
+ requestedPath: z.string(),
12
+ finalPath: z.string(),
13
+ filesystem: z.literal("NTFS"),
14
+ volumeSerial: z.string().regex(/^[a-f0-9]{16}$/u),
15
+ fileId: z.string().regex(/^[a-f0-9]{32}$/u),
16
+ size: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),
17
+ directory: z.boolean(),
18
+ });
19
+ /** Metadata bound to one packaged Windows x64 Node-API artifact. */
20
+ export const windowsNativeManifestSchema = z.strictObject({
21
+ packageVersion: z.string(),
22
+ platform: z.literal("win32"),
23
+ architecture: z.literal("x64"),
24
+ abiVersion: z.literal(1),
25
+ nodeApiVersion: z.literal(8),
26
+ artifact: z.literal("rea-windows-x64.node"),
27
+ artifactSha256: z.string().regex(/^[a-f0-9]{64}$/u),
28
+ });
29
+ const inspectionSchema = z.strictObject({
30
+ abiVersion: z.literal(1),
31
+ nodeApiVersion: z.literal(8),
32
+ architecture: z.literal("x64"),
33
+ filesystem: windowsFileIdentitySchema,
34
+ privateDacl: z.literal(true),
35
+ atomicJobAssignment: z.literal(true),
36
+ killOnOwnerClose: z.literal(true),
37
+ });
38
+ const bindingSchema = z.strictObject({
39
+ call: z.custom((value) => typeof value === "function"),
40
+ });
41
+ /** Validate compatibility and artifact identity before invoking the native addon. */
42
+ export const loadWindowsNativeAuthority = (host) => {
43
+ if (host.platform !== "win32" || host.architecture !== "x64")
44
+ return {
45
+ available: false,
46
+ reason: "REA Windows native controls require a Windows x64 host.",
47
+ };
48
+ try {
49
+ const manifest = windowsNativeManifestSchema.parse(host.readManifest());
50
+ if (manifest.packageVersion !== host.packageVersion)
51
+ throw new Error("Windows native artifact belongs to another REA version");
52
+ const nodeApiVersion = Number(host.nodeApiVersion);
53
+ if (!Number.isSafeInteger(nodeApiVersion) || nodeApiVersion < 8)
54
+ throw new Error("Windows native artifact requires Node-API 8 or newer");
55
+ const artifact = host.readArtifact();
56
+ if (createHash("sha256").update(artifact).digest("hex") !==
57
+ manifest.artifactSha256)
58
+ throw new Error("Windows native artifact SHA-256 does not match package metadata");
59
+ assertWindowsX64Artifact(artifact);
60
+ const binding = bindingSchema.parse(host.loadArtifact());
61
+ const inspection = inspectionSchema.parse(binding.call("inspect", []));
62
+ return { available: true, authority: { call: binding.call, inspection } };
63
+ }
64
+ catch (cause) {
65
+ return {
66
+ available: false,
67
+ reason: `REA Windows native controls are unavailable: ${cause instanceof Error ? cause.message : String(cause)}`,
68
+ };
69
+ }
70
+ };
71
+ const assertWindowsX64Artifact = (bytes) => {
72
+ if (bytes.length < 64 || bytes.toString("ascii", 0, 2) !== "MZ")
73
+ throw new Error("Windows native artifact is not a PE image");
74
+ const offset = bytes.readUInt32LE(0x3c);
75
+ if (offset > bytes.length - 26 ||
76
+ bytes.toString("ascii", offset, offset + 4) !== "PE\0\0" ||
77
+ bytes.readUInt16LE(offset + 4) !== 0x8664 ||
78
+ bytes.readUInt16LE(offset + 24) !== 0x20b)
79
+ throw new Error("Windows native artifact is not a Windows x64 PE32+ image");
80
+ };
81
+ let cached;
82
+ /** Load only the package-owned artifact, lazily and once per process. */
83
+ export const systemWindowsNativeAuthority = () => {
84
+ cached ??= loadWindowsNativeAuthority({
85
+ platform: process.platform,
86
+ architecture: process.arch,
87
+ nodeApiVersion: process.versions.napi,
88
+ packageVersion: PACKAGE_METADATA.version,
89
+ readManifest: () => {
90
+ const encoded = readFileSync(new URL("../../native/windows/build/manifest.json", import.meta.url), "utf8");
91
+ const value = JSON.parse(encoded);
92
+ return value;
93
+ },
94
+ readArtifact: () => readFileSync(new URL("../../native/windows/build/rea-windows-x64.node", import.meta.url)),
95
+ loadArtifact: () => {
96
+ const value = createRequire(import.meta.url)(fileURLToPath(new URL("../../native/windows/build/rea-windows-x64.node", import.meta.url)));
97
+ return value;
98
+ },
99
+ });
100
+ return cached;
101
+ };
102
+ /** Require the verified backend when an operation depends on native authority. */
103
+ export const requireWindowsNativeAuthority = () => {
104
+ const loaded = systemWindowsNativeAuthority();
105
+ if (!loaded.available)
106
+ throw new Error(loaded.reason);
107
+ return loaded.authority;
108
+ };
@@ -0,0 +1,170 @@
1
+ import { EventEmitter } from "node:events";
2
+ import { PassThrough } from "node:stream";
3
+ import { z } from "zod";
4
+ import { requireWindowsNativeAuthority, windowsHandleSchema, } from "./WindowsNativeLoader.js";
5
+ const launchSchema = z.strictObject({
6
+ pid: z.number().int().positive().max(0xffff_ffff),
7
+ handle: windowsHandleSchema,
8
+ jobAssigned: z.literal(true),
9
+ killOnOwnerClose: z.literal(true),
10
+ });
11
+ const pollSchema = z.strictObject({
12
+ stdout: z.instanceof(Buffer),
13
+ stderr: z.instanceof(Buffer),
14
+ stdoutEnded: z.boolean(),
15
+ stderrEnded: z.boolean(),
16
+ exitCode: z.number().int().nonnegative().max(0xffff_ffff).nullable(),
17
+ activeProcesses: z.number().int().nonnegative(),
18
+ });
19
+ /** Encode one ordinary Windows argv token using the CRT backslash rules. */
20
+ export const quoteWindowsProcessArgument = (value) => {
21
+ if (value.includes("\0"))
22
+ throw new TypeError("Windows process argument contains NUL");
23
+ return `"${value.replace(/(\\*)"/gu, '$1$1\\"').replace(/(\\+)$/u, "$1$1")}"`;
24
+ };
25
+ /** Process events and streams backed by a retained native Job Object. */
26
+ export class WindowsOwnedProcess extends EventEmitter {
27
+ stdout = new PassThrough();
28
+ stderr = new PassThrough();
29
+ signalCode = null;
30
+ exitCode = null;
31
+ pid;
32
+ #handle;
33
+ #authority;
34
+ #settled;
35
+ #settle;
36
+ #closed = false;
37
+ #verifiedSettlement = false;
38
+ #failure;
39
+ #timer;
40
+ #cleanup;
41
+ constructor(command, arguments_, cwd, environment, verbatim) {
42
+ super();
43
+ this.#authority = requireWindowsNativeAuthority();
44
+ const entries = Object.entries(environment)
45
+ .filter((entry) => entry[1] !== undefined)
46
+ .map(([key, value]) => `${key}=${value}`);
47
+ const line = [
48
+ // cmd.exe parses its own command line rather than the CRT argv rules;
49
+ // its executable token must match the native drive-path representation.
50
+ quoteWindowsProcessArgument(command.replaceAll("/", "\\")),
51
+ ...arguments_.map((value) => verbatim ? value : quoteWindowsProcessArgument(value)),
52
+ ].join(" ");
53
+ const launched = launchSchema.parse(this.#authority.call("process_spawn", [
54
+ command,
55
+ line,
56
+ cwd ?? "",
57
+ entries,
58
+ ]));
59
+ this.pid = launched.pid;
60
+ this.#handle = launched.handle;
61
+ this.#settled = new Promise((resolve) => {
62
+ this.#settle = resolve;
63
+ });
64
+ this.#schedule();
65
+ }
66
+ /** Terminate the retained job, never a PID supplied by another caller. */
67
+ kill(signal) {
68
+ if (signal === 0)
69
+ return (!this.#closed &&
70
+ z
71
+ .number()
72
+ .parse(this.#authority.call("process_alive", [this.#handle])) > 0);
73
+ return this.#closed
74
+ ? false
75
+ : z
76
+ .boolean()
77
+ .parse(this.#authority.call("process_terminate", [this.#handle]));
78
+ }
79
+ /** Terminate and verify that the entire job has settled before releasing it. */
80
+ cleanup() {
81
+ this.#cleanup ??= this.#stop();
82
+ return this.#cleanup;
83
+ }
84
+ async #stop() {
85
+ if (this.#closed)
86
+ return this.#verifiedSettlement
87
+ ? { cleaned: true, signaled: false }
88
+ : {
89
+ cleaned: false,
90
+ reason: this.#failure ?? "Windows Job Object settlement was not verified",
91
+ };
92
+ let timer;
93
+ try {
94
+ const signaled = this.kill();
95
+ const settled = await Promise.race([
96
+ this.#settled.then(() => true),
97
+ new Promise((resolve) => {
98
+ timer = setTimeout(() => resolve(false), 5_000);
99
+ }),
100
+ ]);
101
+ return settled && this.#verifiedSettlement
102
+ ? { cleaned: true, signaled }
103
+ : {
104
+ cleaned: false,
105
+ reason: this.#failure ??
106
+ "Windows Job Object did not settle within the cleanup deadline",
107
+ };
108
+ }
109
+ catch (cause) {
110
+ return {
111
+ cleaned: false,
112
+ reason: cause instanceof Error ? cause.message : String(cause),
113
+ };
114
+ }
115
+ finally {
116
+ if (timer !== undefined)
117
+ clearTimeout(timer);
118
+ if (!this.#closed)
119
+ this.#release();
120
+ }
121
+ }
122
+ #schedule() {
123
+ this.#timer = setTimeout(() => this.#poll(), 25);
124
+ }
125
+ #poll() {
126
+ if (this.#closed)
127
+ return;
128
+ try {
129
+ const state = pollSchema.parse(this.#authority.call("process_poll", [this.#handle]));
130
+ if (state.stdout.length > 0)
131
+ this.stdout.write(state.stdout);
132
+ if (state.stderr.length > 0)
133
+ this.stderr.write(state.stderr);
134
+ if (state.exitCode !== null && this.exitCode === null) {
135
+ this.exitCode = state.exitCode;
136
+ this.emit("exit", state.exitCode, null);
137
+ }
138
+ if (state.exitCode !== null &&
139
+ state.stdoutEnded &&
140
+ state.stderrEnded &&
141
+ state.activeProcesses === 0) {
142
+ this.#verifiedSettlement = true;
143
+ this.#release();
144
+ }
145
+ else
146
+ this.#schedule();
147
+ }
148
+ catch (cause) {
149
+ const failure = cause instanceof Error ? cause : new Error(String(cause));
150
+ this.#failure = failure.message;
151
+ // Native lifecycle failures belong to the error/cleanup channels, never
152
+ // the captured stderr observation produced by the child itself.
153
+ if (this.listenerCount("error") > 0)
154
+ this.emit("error", failure);
155
+ this.#release();
156
+ }
157
+ }
158
+ #release() {
159
+ if (this.#closed)
160
+ return;
161
+ if (this.#timer !== undefined)
162
+ clearTimeout(this.#timer);
163
+ this.#authority.call("process_close", [this.#handle]);
164
+ this.#closed = true;
165
+ this.stdout.end();
166
+ this.stderr.end();
167
+ this.#settle?.();
168
+ this.emit("close", this.exitCode, null);
169
+ }
170
+ }
@@ -0,0 +1,137 @@
1
+ import { win32 } from "node:path";
2
+ import { z } from "zod";
3
+ import { requireWindowsNativeAuthority, windowsFileIdentitySchema, windowsHandleSchema, } from "./WindowsNativeLoader.js";
4
+ const runtimeSchema = windowsFileIdentitySchema.extend({
5
+ path: z.string(),
6
+ handle: windowsHandleSchema,
7
+ privateDacl: z.literal(true),
8
+ });
9
+ const snapshotSchema = z.strictObject({
10
+ sha256: z.string().regex(/^[a-f0-9]{64}$/u),
11
+ source: windowsFileIdentitySchema,
12
+ snapshot: windowsFileIdentitySchema,
13
+ });
14
+ const fileSchema = windowsFileIdentitySchema.extend({
15
+ handle: windowsHandleSchema,
16
+ });
17
+ const runtimes = new Map();
18
+ /** Retain private DACL and path handles until native recursive cleanup settles. */
19
+ export class WindowsPrivateRuntime {
20
+ observation;
21
+ authority;
22
+ // One native snapshot can own cancellation for this runtime at a time. A
23
+ // second request throws ERROR_BUSY before #pending or its abort listener is
24
+ // replaced, so aborting a rejected request cannot cancel the accepted copy.
25
+ #pending;
26
+ #closed = false;
27
+ #closePromise;
28
+ constructor(observation, authority) {
29
+ this.observation = observation;
30
+ this.authority = authority;
31
+ }
32
+ /** Create a new directory with its private DACL installed at creation. */
33
+ static create(parent, prefix) {
34
+ const authority = requireWindowsNativeAuthority();
35
+ const observation = runtimeSchema.parse(authority.call("runtime_create", [parent, prefix]));
36
+ const runtime = new WindowsPrivateRuntime(observation, authority);
37
+ runtimes.set(observation.path.toLowerCase(), runtime);
38
+ return runtime;
39
+ }
40
+ /** Open a private child directory through retained, verified parent handles. */
41
+ mkdir(relativePath) {
42
+ this.authority.call("runtime_mkdir", [
43
+ this.observation.handle,
44
+ relativePath,
45
+ ]);
46
+ }
47
+ /** Write a new private file once and retain its immutable handle. */
48
+ writeFile(relativePath, content) {
49
+ this.authority.call("runtime_write", [
50
+ this.observation.handle,
51
+ relativePath,
52
+ Buffer.from(content),
53
+ ]);
54
+ }
55
+ /** Copy admitted source bytes and digest the bytes actually written. */
56
+ async snapshot(sourcePath, relativePath, signal) {
57
+ // Admission is synchronous; record ownership only after native acceptance.
58
+ const pending = Promise.resolve(this.authority.call("runtime_snapshot", [
59
+ this.observation.handle,
60
+ sourcePath,
61
+ relativePath,
62
+ ]));
63
+ this.#pending = pending;
64
+ const cancel = () => {
65
+ this.authority.call("runtime_snapshot_cancel", [this.observation.handle]);
66
+ };
67
+ signal?.addEventListener("abort", cancel, { once: true });
68
+ if (signal?.aborted === true)
69
+ cancel();
70
+ try {
71
+ return snapshotSchema.parse(await pending);
72
+ }
73
+ finally {
74
+ signal?.removeEventListener("abort", cancel);
75
+ if (this.#pending === pending)
76
+ this.#pending = undefined;
77
+ }
78
+ }
79
+ /** Read a private endpoint from an opened file, without re-opening its path. */
80
+ readFile(relativePath) {
81
+ const file = fileSchema.parse(this.authority.call("runtime_open", [
82
+ this.observation.handle,
83
+ relativePath,
84
+ ]));
85
+ try {
86
+ const chunks = [];
87
+ for (let offset = 0; offset < file.size;) {
88
+ const value = z
89
+ .instanceof(Buffer)
90
+ .parse(this.authority.call("read", [
91
+ file.handle,
92
+ offset,
93
+ Math.min(65_536, file.size - offset),
94
+ ]));
95
+ if (value.length === 0)
96
+ throw new Error("Private runtime file ended before its observed size");
97
+ offset += value.length;
98
+ chunks.push(value);
99
+ }
100
+ return Buffer.concat(chunks).toString("utf8");
101
+ }
102
+ finally {
103
+ this.authority.call("close", [file.handle]);
104
+ }
105
+ }
106
+ /** Remove owned objects by handle, unlinking reparse entries without traversal. */
107
+ close() {
108
+ this.#closePromise ??= this.#remove();
109
+ return this.#closePromise;
110
+ }
111
+ async #remove() {
112
+ if (this.#closed)
113
+ return;
114
+ if (this.#pending !== undefined)
115
+ this.authority.call("runtime_snapshot_cancel", [this.observation.handle]);
116
+ await this.#pending?.catch(() => undefined);
117
+ try {
118
+ this.authority.call("runtime_close", [this.observation.handle]);
119
+ }
120
+ finally {
121
+ this.#closed = true;
122
+ runtimes.delete(this.observation.path.toLowerCase());
123
+ }
124
+ }
125
+ }
126
+ /** Select an already-owned runtime; an arbitrary pathname cannot grant authority. */
127
+ export const windowsPrivateRuntime = (rootPath) => {
128
+ const runtime = runtimes.get(rootPath.toLowerCase());
129
+ if (runtime === undefined)
130
+ throw new Error(`No native private runtime owns ${rootPath}`);
131
+ return runtime;
132
+ };
133
+ /** Read a runtime endpoint using the lease that owns its parent directory. */
134
+ export const readWindowsPrivateRuntimeFile = (path) => {
135
+ const parent = win32.dirname(path);
136
+ return windowsPrivateRuntime(parent).readFile(win32.basename(path));
137
+ };
package/install.sh CHANGED
@@ -3,6 +3,10 @@ set -euo pipefail
3
3
 
4
4
  PACKAGE="rea-agents"
5
5
  REPOSITORY="morluto/rea"
6
+ numeric_identifier='(0|[1-9][0-9]*)'
7
+ prerelease_identifier="(${numeric_identifier}|[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)"
8
+ build_identifier='[0-9A-Za-z-]+'
9
+ version_pattern="${numeric_identifier}\\.${numeric_identifier}\\.${numeric_identifier}(-${prerelease_identifier}(\\.${prerelease_identifier})*)?(\\+${build_identifier}(\\.${build_identifier})*)?"
6
10
  version="${REA_VERSION:-}"
7
11
  dry_run=false
8
12
  start_setup=true
@@ -55,28 +59,32 @@ fi
55
59
  platform="$(uname -s)"
56
60
  [[ "$platform" == "Darwin" || "$platform" == "Linux" ]] || fail "REA supports macOS and selected 64-bit Linux distributions."
57
61
  command -v curl >/dev/null 2>&1 || fail "curl is required. Install curl, then rerun this installer."
58
- command -v node >/dev/null 2>&1 || fail "Node.js 22.19+ or 24.11+ is required; install it from https://nodejs.org and retry."
62
+ command -v node >/dev/null 2>&1 || fail "Node.js 22.x (>=22.19), 24.x (>=24.11), or 26+ is required; install it from https://nodejs.org and retry."
59
63
  command -v npm >/dev/null 2>&1 || fail "npm is required; install it with Node.js and retry."
60
64
 
61
65
  node_version="$(node -p 'process.versions.node' 2>/dev/null || true)"
62
66
  IFS=. read -r node_major node_minor _node_patch <<<"$node_version"
63
67
  [[ "$node_major" =~ ^[0-9]+$ && "$node_minor" =~ ^[0-9]+$ ]] || fail "the active Node.js version could not be read. Check that node works and is on PATH, then retry."
64
- if ! ((node_major == 22 && node_minor >= 19 || node_major >= 24)); then
65
- fail "Node.js $node_version is unsupported; use Node.js 22.19+ or 24.11+."
66
- fi
67
- if ((node_major == 24 && node_minor < 11)); then
68
- fail "Node.js $node_version is unsupported; use Node.js 24.11 or newer."
68
+ if ! [[ "$_node_patch" =~ ^[0-9]+(\+[0-9A-Za-z.-]+)?$ ]] ||
69
+ ! ((node_major == 22 && node_minor >= 19 || node_major == 24 && node_minor >= 11 || node_major >= 26)); then
70
+ fail "Node.js $node_version is unsupported; use Node.js 22.x (>=22.19), 24.x (>=24.11), or 26+."
69
71
  fi
70
72
 
71
73
  if [[ -n "$version" ]]; then
72
- [[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?$ ]] || fail "version must be an exact semantic version."
74
+ [[ "$version" =~ ^${version_pattern}$ ]] || fail "version must be an exact semantic version."
73
75
  else
74
76
  release_json="$(curl -fsSL --proto '=https' --tlsv1.2 --retry 3 -H 'Accept: application/vnd.github+json' "https://api.github.com/repos/$REPOSITORY/releases/latest")" || fail "the latest REA release could not be resolved. Check network access or pass --version VERSION, then retry."
75
77
  tag="$(printf '%s' "$release_json" | node -e 'let s="";process.stdin.on("data",c=>s+=c).on("end",()=>{const v=JSON.parse(s).tag_name;if(typeof v!=="string")process.exit(1);process.stdout.write(v)})' 2>/dev/null)" || fail "the release response was invalid. Retry later or pass --version VERSION."
76
- [[ "$tag" =~ ^rea-agents-([0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?)$ ]] || fail "the latest release tag was invalid. Retry later or pass --version VERSION."
78
+ [[ "$tag" =~ ^rea-agents-(${version_pattern})$ ]] || fail "the latest release tag was invalid. Retry later or pass --version VERSION."
77
79
  version="${BASH_REMATCH[1]}"
78
80
  fi
79
81
 
82
+ # npm's exact-version resolver cleans build metadata from the requested version,
83
+ # so it may install the base release and make the post-install identity check fail.
84
+ if [[ "$version" =~ \+ ]]; then
85
+ fail "npm cannot install an exact version with build metadata. Pass a version without build metadata, then retry."
86
+ fi
87
+
80
88
  prefix_args=()
81
89
  if [[ "$platform" == "Linux" ]]; then
82
90
  prefix_args=(--prefix "$HOME/.local")
@@ -0,0 +1,107 @@
1
+ # Windows native controls
2
+
3
+ REA ships one Windows x64 Node-API 8 addon. Users do not compile it or install
4
+ another runtime. Ghidra and a full JDK remain bring-your-own prerequisites.
5
+ The addon uses Windows 10+ APIs and admits fixed local NTFS volumes only.
6
+
7
+ The package owns the artifact path. The loader checks the package version,
8
+ ABI, Node-API compatibility, PE architecture, and SHA-256 before loading it.
9
+ There is no environment override for loading an arbitrary native module.
10
+
11
+ ## Build
12
+
13
+ The artifact lane requires Linux, MinGW-w64 `x86_64-w64-mingw32-g++`,
14
+ `x86_64-w64-mingw32-dlltool`, and `tar`. It never installs these commands.
15
+ Node-API headers are reused from the build cache or downloaded from the
16
+ pinned official Node release with its published SHA-256 checked.
17
+
18
+ ```sh
19
+ npm run build:windows-native
20
+ npm run verify:windows-native:artifact
21
+ npm pack
22
+ ```
23
+
24
+ `build/` is ignored by Git. The npm file inventory includes only the addon and
25
+ its manifest. Release CI builds both, and `prepublishOnly` rejects a missing,
26
+ stale, mismatched, or wrong-architecture artifact. A development tarball built
27
+ without this lane reports Windows native controls as unavailable.
28
+
29
+ ## Boundaries
30
+
31
+ - Opaque Node objects carry a native type tag, resource kind, and closed state.
32
+ A pathname, serialized object, or forged handle cannot grant authority.
33
+ - Input admission opens every component with `OPEN_REPARSE_POINT`, verifies
34
+ the actual NTFS object, and retains handles that deny replacement and source
35
+ writing. An admitted child keeps each ancestor nonempty; ancestor handles
36
+ permit unrelated writes while NTFS rejects in-place reparse conversion. Volume serial, 128-bit file ID, final handle path,
37
+ requested path, size, and digest observations are preserved separately.
38
+ - New runtime roots and private child objects are created relative to admitted
39
+ parent handles with `NtCreateFile`. A protected DACL and current-user owner
40
+ are installed at creation. Readback permits exactly the current user and SYSTEM. Child
41
+ files inherit this boundary; private files are also checked by handle.
42
+ - Snapshots stream through a 64 KiB buffer on a Node async worker. Cancellation
43
+ is checked between reads, cleanup waits for settlement, and the digest
44
+ commits to the bytes written. Descriptor and snapshot handles remain held
45
+ until runtime cleanup.
46
+ Snapshot ownership is single-flight per runtime: an overlapping request fails
47
+ with `ERROR_BUSY` before acquiring cancellation ownership. The TypeScript owner
48
+ records only the accepted promise and abort listener; aborting a rejected copy
49
+ must not cancel the active copy.
50
+ - `PROC_THREAD_ATTRIBUTE_JOB_LIST` assigns a suspended child atomically to an
51
+ unnamed, non-inherited Job Object. Membership and kill-on-close policy are
52
+ checked before resume. Breakaway is disabled, and cleanup waits for all
53
+ job members and captured output, including detached descendants.
54
+ - Only the suspended child's default file owner is normalized. Caller token
55
+ privileges and ownership remain unchanged. Caller CPU affinity and process
56
+ priority are preserved in the child. Environment names are sorted and
57
+ deduplicated using Windows ordinal comparison, preserving their native Unicode
58
+ semantics and caller-selected values.
59
+ - Cleanup walks locked directory objects, removes files by handle, and unlinks
60
+ reparse entries without traversing their targets. Normal close, cancellation,
61
+ startup failure, and timeout release provider resources. Abrupt owner death
62
+ kills the owned job; it can leave private runtime files for later operator
63
+ cleanup and does not claim transactional deletion after a crash.
64
+
65
+ Windows failures retain their constraint, requested coordinate, Win32 code,
66
+ and system message. Unsupported filesystems and reparse paths are distinct
67
+ from OS access denial and missing packaged controls.
68
+
69
+ Ordinary drive-absolute paths accept backslashes, forward slashes, or mixed
70
+ separators. File identity retains the original requested spelling. Separator
71
+ translation does not resolve dot components, repeated separators, or extend
72
+ the supported device/UNC namespaces; existing admission checks still apply.
73
+
74
+ The bearer-token descriptor remains under its immutable private lease until
75
+ `runtime_close` on Windows; POSIX removes the descriptor after the bridge reads
76
+ it. Job ownership guarantees process termination on owner death, not deletion
77
+ of private files after a crash. SUBST drive aliases and changing DOS-device
78
+ namespaces are outside the verified P0 scope and are not detected as a separate
79
+ alias policy. Mounted-folder paths that report a reparse tag are rejected by
80
+ component admission; broader namespace variants remain unverified. Preserve
81
+ requested and final handle coordinates rather than treating them as one identity.
82
+
83
+ ## Real verification
84
+
85
+ ```powershell
86
+ npm run verify:windows-native
87
+ npm run verify:ghidra:windows
88
+ ```
89
+
90
+ The native lane checks DACL readback independently, source write/replacement
91
+ rejection, unrelated sibling renames, reparse rejection, immutable snapshots,
92
+ asynchronous cancellation, cleanup containment,
93
+ descendant termination, unrelated-process preservation, normal exit, owner
94
+ close, and forced owner exit. An optional independently built
95
+ `tests/fixtures/windows/processBoundary.cc` executable adds breakaway and
96
+ caller/child token observations and an in-place ancestor reparse attempt:
97
+
98
+ ```powershell
99
+ node scripts/verify-windows-native.mjs . C:\fixtures\process-boundary.exe
100
+ ```
101
+
102
+ `nonAdminRunner.cc` is a test-only launcher for an elevated development shell.
103
+ It duplicates an existing non-elevated Explorer token belonging to the same
104
+ user, creates private temporary window-station objects, and launches the test
105
+ inside a kill-on-close fixture job. It does not create accounts, modify host
106
+ policy, or change the caller's token. A real-provider claim must additionally
107
+ verify the packaged CLI and MCP on that ordinary-user token.
@@ -0,0 +1,9 @@
1
+ {
2
+ "packageVersion": "5.0.0",
3
+ "platform": "win32",
4
+ "architecture": "x64",
5
+ "abiVersion": 1,
6
+ "nodeApiVersion": 8,
7
+ "artifact": "rea-windows-x64.node",
8
+ "artifactSha256": "f9ae5fa99de3207da630f59be2450febd60c79ed1862abfcf90e9cf080c2c977"
9
+ }