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,7 +1,9 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { posix } from "node:path";
3
+ import { fileURLToPath } from "node:url";
3
4
  import * as t from "@babel/types";
4
5
  import { semanticStaticPropertyName } from "./javascriptAstValues.js";
6
+ import { compareCodePoints } from "../canonicalOrdering.js";
5
7
  export { propertyName, semanticStaticPropertyName, } from "./javascriptAstValues.js";
6
8
  /** Explicit result for source text that Babel cannot parse. */
7
9
  export const failedJavaScriptStaticAnalysis = () => ({
@@ -41,20 +43,34 @@ export const chunkRuntime = (call) => {
41
43
  return findChunkRuntime(call.callee.object);
42
44
  };
43
45
  const findChunkRuntime = (node) => {
44
- if (t.isIdentifier(node) && /(?:webpack|rspack)Chunk/iu.test(node.name))
45
- return node.name;
46
- if (t.isMemberExpression(node) || t.isOptionalMemberExpression(node)) {
47
- const property = semanticStaticPropertyName(node.property, node.computed);
48
- if (/(?:webpack|rspack)Chunk/iu.test(property))
49
- return property;
50
- return t.isNode(node.object) ? findChunkRuntime(node.object) : undefined;
46
+ const pending = [node];
47
+ while (pending.length > 0) {
48
+ const current = pending.pop();
49
+ if (current === undefined)
50
+ continue;
51
+ if (t.isIdentifier(current) &&
52
+ /(?:webpack|rspack)Chunk/iu.test(current.name))
53
+ return current.name;
54
+ if (t.isMemberExpression(current) ||
55
+ t.isOptionalMemberExpression(current)) {
56
+ const property = semanticStaticPropertyName(current.property, current.computed);
57
+ if (/(?:webpack|rspack)Chunk/iu.test(property))
58
+ return property;
59
+ if (t.isNode(current.object))
60
+ pending.push(current.object);
61
+ continue;
62
+ }
63
+ if (t.isAssignmentExpression(current)) {
64
+ pending.push(current.right, current.left);
65
+ continue;
66
+ }
67
+ if (t.isLogicalExpression(current) || t.isBinaryExpression(current)) {
68
+ pending.push(current.right, current.left);
69
+ continue;
70
+ }
71
+ if (t.isParenthesizedExpression(current) || t.isTSAsExpression(current))
72
+ pending.push(current.expression);
51
73
  }
52
- if (t.isAssignmentExpression(node))
53
- return findChunkRuntime(node.left) ?? findChunkRuntime(node.right);
54
- if (t.isLogicalExpression(node) || t.isBinaryExpression(node))
55
- return findChunkRuntime(node.left) ?? findChunkRuntime(node.right);
56
- if (t.isParenthesizedExpression(node) || t.isTSAsExpression(node))
57
- return findChunkRuntime(node.expression);
58
74
  return undefined;
59
75
  };
60
76
  /** Return a literal function factory from one module-table property. */
@@ -124,13 +140,16 @@ const staticCallPath = (node) => {
124
140
  ? stringValue(node.arguments[0])
125
141
  : undefined;
126
142
  if (name === "fileURLToPath" || name.endsWith(".fileURLToPath")) {
127
- const argument = argumentNode(node.arguments[0]);
128
- return argument === undefined ? undefined : staticPathAt(argument);
143
+ return staticFileUrlPath(argumentNode(node.arguments[0]));
129
144
  }
130
145
  if ((name === "dirname" || name.endsWith(".dirname")) &&
131
146
  isFileIdentity(argumentNode(node.arguments[0])))
132
147
  return "";
133
- if (!name.endsWith(".join") && !name.endsWith(".resolve") && name !== "join")
148
+ if (name.endsWith(".resolve"))
149
+ return name === "win32.resolve" || name.endsWith(".win32.resolve")
150
+ ? undefined
151
+ : staticResolvedPath(node);
152
+ if (!name.endsWith(".join") && name !== "join")
134
153
  return undefined;
135
154
  const parts = [];
136
155
  for (const argument of node.arguments) {
@@ -143,6 +162,74 @@ const staticCallPath = (node) => {
143
162
  }
144
163
  return parts.length === 0 ? undefined : posix.join(...parts);
145
164
  };
165
+ const staticFileUrlPath = (argument) => {
166
+ if (argument === undefined)
167
+ return undefined;
168
+ return isSourceFileUrl(argument)
169
+ ? sourceRelativeFileUrlPath(argument)
170
+ : staticPathAt(argument);
171
+ };
172
+ /** Project a known source-relative URL through the actual file URL decoder. */
173
+ const sourceRelativeFileUrlPath = (node) => {
174
+ if (!isSourceFileUrl(node))
175
+ return undefined;
176
+ const value = stringValue(node.arguments[0]);
177
+ if (value === undefined ||
178
+ (value.split(/[?#]/u, 1)[0] ?? "") === "" ||
179
+ value !== value.trim() ||
180
+ value.includes("\\") ||
181
+ [...value].some((character) => character.charCodeAt(0) < 32) ||
182
+ /^[a-z][a-z0-9+.-]*:/iu.test(value) ||
183
+ value.startsWith("//") ||
184
+ /%(?:2e|2f|5c)/iu.test(value.split(/[?#]/u, 1)[0] ?? ""))
185
+ return undefined;
186
+ // A sufficiently deep inert anchor preserves any leading parent segments
187
+ // without using this host's cwd or inventing the application's directory.
188
+ const directory = `/${"source/".repeat(value.split("/").length + 1)}`;
189
+ try {
190
+ const resolved = new URL(value, `file://${directory}entry.js`);
191
+ const path = fileURLToPath(resolved, { windows: false });
192
+ if (value.startsWith("/"))
193
+ return path;
194
+ const relative = posix.relative(directory, path) || ".";
195
+ // Keep the established explicit source-directory observation spelling.
196
+ return value.startsWith("./") &&
197
+ relative !== "." &&
198
+ !relative.startsWith("../")
199
+ ? `./${relative}`
200
+ : relative;
201
+ }
202
+ catch (cause) {
203
+ // Malformed escapes and non-file URL forms remain unknown.
204
+ void cause;
205
+ return undefined;
206
+ }
207
+ };
208
+ const isSourceFileUrl = (node) => (t.isCallExpression(node) || t.isNewExpression(node)) &&
209
+ (calleeName(node.callee) === "URL" ||
210
+ calleeName(node.callee).endsWith(".URL")) &&
211
+ isFileIdentity(argumentNode(node.arguments[1]));
212
+ const staticResolvedPath = (node) => {
213
+ const parts = [];
214
+ for (const argument of node.arguments) {
215
+ if (isDirectoryIdentity(argumentNode(argument))) {
216
+ parts.push(null);
217
+ continue;
218
+ }
219
+ const value = t.isNode(argument) ? staticPathAt(argument) : undefined;
220
+ // Validate every argument, including those before the last anchor.
221
+ if (value === undefined)
222
+ return undefined;
223
+ parts.push(value);
224
+ }
225
+ const anchor = parts.findLastIndex((part) => part === null || posix.isAbsolute(part));
226
+ // Relative-only calls depend on the target process cwd, which is unknown.
227
+ if (anchor === -1)
228
+ return undefined;
229
+ // A null anchor is the source directory; preserve its relative projection.
230
+ const path = posix.join(...parts.slice(anchor).filter((part) => part !== null));
231
+ return path === "/" ? path : path.replace(/\/$/u, "");
232
+ };
146
233
  const isFilesystemPathExpression = (node) => {
147
234
  if (t.isStringLiteral(node))
148
235
  return node.value.startsWith("/");
@@ -153,6 +240,8 @@ const isFilesystemPathExpression = (node) => {
153
240
  isFilesystemPathExpression(node.right));
154
241
  if (t.isCallExpression(node) || t.isNewExpression(node)) {
155
242
  const name = calleeName(node.callee);
243
+ if (name.endsWith(".resolve") && staticCallPath(node) !== undefined)
244
+ return true;
156
245
  if (name === "URL" || name.endsWith(".URL"))
157
246
  return isFileIdentity(argumentNode(node.arguments[1]));
158
247
  if (name === "fileURLToPath" || name.endsWith(".fileURLToPath"))
@@ -195,14 +284,135 @@ const isFileIdentity = (node) => {
195
284
  return ((name === "fileURLToPath" || name.endsWith(".fileURLToPath")) &&
196
285
  isFileIdentity(argumentNode(node.arguments[0])));
197
286
  };
287
+ const XHR_METHODS = new Set([
288
+ "CONNECT",
289
+ "DELETE",
290
+ "GET",
291
+ "HEAD",
292
+ "OPTIONS",
293
+ "PATCH",
294
+ "POST",
295
+ "PUT",
296
+ "TRACE",
297
+ ]);
298
+ /** An absolute HTTP(S)/WebSocket URL, or an absolute or relative path. */
299
+ const isRequestUrlLiteral = (value) => /^(?:https?|wss?):\/\//iu.test(value) ||
300
+ value.startsWith("/") ||
301
+ value.startsWith("./") ||
302
+ value.startsWith("../");
303
+ /**
304
+ * Browsing-context and document `open` take a URL or type first and a target
305
+ * name second. The name is only a spelling, since `parent` or `self` may be a
306
+ * local XHR binding, so it never overrides a literal HTTP method.
307
+ */
308
+ const WINDOW_OPEN_CALL = /(?:^|\.)(?:window|self|globalThis|top|parent|opener|frames|document)\.open$/u;
309
+ /** Node `fs.open` flag strings, which are never request URLs. */
310
+ const FS_OPEN_FLAGS = new Set([
311
+ "a",
312
+ "a+",
313
+ "as",
314
+ "as+",
315
+ "ax",
316
+ "ax+",
317
+ "r",
318
+ "r+",
319
+ "rs",
320
+ "rs+",
321
+ "sa",
322
+ "sa+",
323
+ "sr",
324
+ "sr+",
325
+ "w",
326
+ "w+",
327
+ "wx",
328
+ "wx+",
329
+ "xa",
330
+ "xa+",
331
+ "xw",
332
+ "xw+",
333
+ ]);
334
+ /** Reserved browsing-context names (ASCII case-insensitive). */
335
+ const BROWSING_CONTEXT_KEYWORDS = new Set([
336
+ "_blank",
337
+ "_parent",
338
+ "_self",
339
+ "_top",
340
+ ]);
341
+ /**
342
+ * Read `XMLHttpRequest.open(method, url)`. `fs.open(path, "r")` and
343
+ * `window.open(url, "_blank")` share the callee name. A literal method must
344
+ * be an HTTP method; with a computed method, the second literal is a URL
345
+ * unless it is provably an fs flag or a browsing-context keyword, or the
346
+ * receiver is spelled as a browsing context or storage. XHR normalizes the standard
347
+ * methods' case; extension methods such as WebDAV `PROPFIND` are
348
+ * conventionally uppercase tokens.
349
+ */
350
+ const xhrOpenUrl = (name, methodNode, urlNode) => {
351
+ const url = stringValue(urlNode);
352
+ if (url === undefined)
353
+ return undefined;
354
+ const method = stringValue(methodNode);
355
+ // IndexedDB and Cache Storage `open` take a name and a version, so a
356
+ // receiver spelled as storage needs a standard HTTP method literal.
357
+ const storage = storageKind(name) !== undefined;
358
+ if (method === undefined)
359
+ return storage ||
360
+ WINDOW_OPEN_CALL.test(name) ||
361
+ FS_OPEN_FLAGS.has(url) ||
362
+ BROWSING_CONTEXT_KEYWORDS.has(url.toLowerCase())
363
+ ? undefined
364
+ : url;
365
+ return XHR_METHODS.has(method.toUpperCase()) ||
366
+ (!storage && /^[A-Z][A-Z-]*$/u.test(method))
367
+ ? url
368
+ : undefined;
369
+ };
370
+ const KEYED_COLLECTION_CONSTRUCTORS = new Set([
371
+ "FormData",
372
+ "Headers",
373
+ "Map",
374
+ "Set",
375
+ "URLSearchParams",
376
+ "WeakMap",
377
+ "WeakSet",
378
+ ]);
379
+ /**
380
+ * Whether a get/delete receiver is spelled as a keyed collection: a
381
+ * constructed Map, Set, Headers, FormData, or URLSearchParams, or a
382
+ * `headers`/`searchParams` property. Spelling alone does not prove the
383
+ * binding, so callers keep URL and path literals as requests.
384
+ */
385
+ const isKeyedCollectionReceiver = (callee) => {
386
+ if (!t.isMemberExpression(callee) && !t.isOptionalMemberExpression(callee))
387
+ return false;
388
+ const receiver = callee.object;
389
+ if (t.isNewExpression(receiver))
390
+ return (t.isIdentifier(receiver.callee) &&
391
+ KEYED_COLLECTION_CONSTRUCTORS.has(receiver.callee.name));
392
+ if (!t.isMemberExpression(receiver) &&
393
+ !t.isOptionalMemberExpression(receiver))
394
+ return false;
395
+ const property = semanticStaticPropertyName(receiver.property, receiver.computed);
396
+ return property === "headers" || property === "searchParams";
397
+ };
198
398
  /** Select the literal URL argument for recognized network callees. */
199
- export const endpointArgument = (name, args) => {
399
+ export const endpointArgument = (name, args, callee) => {
200
400
  if (name === "fetch" || name.endsWith(".fetch") || name === "WebSocket")
201
401
  return stringValue(args[0]);
202
- if (name.endsWith(".open") && stringValue(args[1]) !== undefined)
203
- return stringValue(args[1]);
204
- if (["get", "post", "put", "patch", "delete", "request"].some((method) => name === method || name.endsWith(`.${method}`)))
205
- return stringValue(args[0]);
402
+ if (name.endsWith(".open"))
403
+ return xhrOpenUrl(name, args[0], args[1]);
404
+ const method = ["get", "post", "put", "patch", "delete", "request"].find((candidate) => name === candidate || name.endsWith(`.${candidate}`));
405
+ if (method !== undefined) {
406
+ const value = stringValue(args[0]);
407
+ // Only get and delete also belong to the keyed-collection APIs, whose
408
+ // keys are header, field, and parameter names rather than URLs or paths.
409
+ return value !== undefined &&
410
+ (method === "get" || method === "delete") &&
411
+ !isRequestUrlLiteral(value) &&
412
+ isKeyedCollectionReceiver(callee)
413
+ ? undefined
414
+ : value;
415
+ }
206
416
  if (name.endsWith("loadURL"))
207
417
  return stringValue(args[0]);
208
418
  return undefined;
@@ -222,20 +432,24 @@ export const storageKind = (name) => {
222
432
  return undefined;
223
433
  };
224
434
  /** Produce a dotted callee name from member syntax. */
225
- export const calleeName = (node) => calleeNameAt(node);
226
- const calleeNameAt = (node) => {
227
- if (t.isIdentifier(node))
228
- return node.name;
229
- if (t.isImport(node))
230
- return "import";
231
- if (t.isMemberExpression(node) || t.isOptionalMemberExpression(node)) {
232
- const object = t.isNode(node.object) ? calleeNameAt(node.object) : "";
233
- // A dynamic key commits no name: `target[method]()` must not be reported as
234
- // `target.method`, which would fabricate a runtime call shape.
235
- const property = memberPropertyName(node);
236
- return object === "" ? property : `${object}.${property}`;
435
+ export const calleeName = (node) => {
436
+ const segments = [];
437
+ while (t.isMemberExpression(node) || t.isOptionalMemberExpression(node)) {
438
+ // Dynamic keys retain their syntax identity instead of inventing a name.
439
+ segments.push(memberPropertyName(node));
440
+ if (!t.isNode(node.object))
441
+ break;
442
+ node = node.object;
237
443
  }
238
- return "";
444
+ const base = t.isIdentifier(node)
445
+ ? node.name
446
+ : t.isImport(node)
447
+ ? "import"
448
+ : "";
449
+ segments.push(base);
450
+ segments.reverse();
451
+ const first = segments.findIndex((segment) => segment !== "");
452
+ return first === -1 ? "" : segments.slice(first).join(".");
239
453
  };
240
454
  /** Read a member property only when its syntax commits an exact name. */
241
455
  const memberPropertyName = (node) => node.computed &&
@@ -243,14 +457,19 @@ const memberPropertyName = (node) => node.computed &&
243
457
  !t.isNumericLiteral(node.property)
244
458
  ? `[computed@${String(node.property.start ?? -1)}]`
245
459
  : semanticStaticPropertyName(node.property, node.computed);
246
- /** Return a string literal value without evaluating an expression. */
247
- export const stringValue = (node) => (t.isStringLiteral(node) ? node.value : undefined);
248
- /** Return a string or numeric argument literal. */
249
- export const argumentValue = (node) => {
250
- if (t.isStringLiteral(node) || t.isNumericLiteral(node))
251
- return String(node.value);
460
+ /**
461
+ * Return a string literal value without evaluating an expression. A template
462
+ * literal without substitutions denotes the same exact string.
463
+ */
464
+ export const stringValue = (node) => {
465
+ if (t.isStringLiteral(node))
466
+ return node.value;
467
+ if (t.isTemplateLiteral(node) && node.expressions.length === 0)
468
+ return node.quasis[0]?.value.cooked ?? undefined;
252
469
  return undefined;
253
470
  };
471
+ /** Return a string or numeric argument literal. */
472
+ export const argumentValue = (node) => t.isNumericLiteral(node) ? String(node.value) : stringValue(node);
254
473
  /** Prefix a static argument value when one is available. */
255
474
  export const prefixedArgument = (prefix, node) => {
256
475
  const value = argumentValue(node);
@@ -284,7 +503,8 @@ export const sourceRangesEqual = (left, right) => left !== null &&
284
503
  left.end.column === right.end.column;
285
504
  const pointForOffset = (source, offset) => {
286
505
  const before = source.slice(0, offset);
287
- const lines = before.split("\n");
506
+ // Match JavaScript line terminators, treating CRLF as a single newline.
507
+ const lines = before.split(/\r\n|[\n\r\u2028\u2029]/u);
288
508
  return { line: lines.length, column: lines.at(-1)?.length ?? 0 };
289
509
  };
290
510
  /** Observe known bundler/framework marker strings without claiming dependency use. */
@@ -295,8 +515,6 @@ export const registrationKey = (registration) => `${registration.runtime}\0${reg
295
515
  export const sortedUnique = (values, key) => [...new Map(values.map((value) => [key(value), value])).values()].sort((left, right) => compareCodePoints(key(left), key(right)));
296
516
  /** Hash exact UTF-8 source text. */
297
517
  export const sha256Text = (value) => createHash("sha256").update(value).digest("hex");
298
- /** Compare strings by Unicode code point for canonical ordering. */
299
- export const compareCodePoints = (left, right) => left < right ? -1 : left > right ? 1 : 0;
300
518
  /** Recognized route-construction call suffixes. */
301
519
  export const STATIC_ROUTE_CALL_NAMES = [
302
520
  "route",
@@ -1,4 +1,5 @@
1
- import { absenceClaimable, canonicalDigest } from "./comparisonSemantics.js";
1
+ import { compareCodePoints, uniqueSorted } from "../canonicalOrdering.js";
2
+ import { absenceClaimable, canonicalDigest } from "../comparisonSemantics.js";
2
3
  import { SOURCE_TO_BUNDLE_SIGNAL_WEIGHTS, sourceToBundleComparisonResultSchema, } from "./sourceToBundleComparisonSchemas.js";
3
4
  import { buildSourceToBundleCandidateIndex, candidateIdsForSource, historicalSourceFiles, scoreSourceToBundleCandidate, sourceBearingNodes, } from "./sourceToBundleSignals.js";
4
5
  /** Compare historical source files to static source-bearing application nodes. */
@@ -32,7 +33,7 @@ export const compareSourceToBundle = (input) => {
32
33
  };
33
34
  return sourceToBundleComparisonResultSchema.parse({
34
35
  ...semanticResult,
35
- comparison_id: `stbc_${digestCanonical(semanticResult)}`,
36
+ comparison_id: `stbc_${canonicalDigest(semanticResult, "Source-to-bundle comparison")}`,
36
37
  });
37
38
  };
38
39
  const projectComparison = (input) => {
@@ -208,11 +209,11 @@ const markMergedMappings = (input, items) => {
208
209
  return { ...semantic, mapping_id: mappingId(input, semantic) };
209
210
  });
210
211
  };
211
- const mappingId = (input, item) => `stbc_item_${digestCanonical({
212
+ const mappingId = (input, item) => `stbc_item_${canonicalDigest({
212
213
  reference_root_sha256: input.reference.root_sha256,
213
214
  application_graph_id: input.application.graph.graph_id,
214
215
  ...item,
215
- })}`;
216
+ }, "Source-to-bundle comparison")}`;
216
217
  const comparisonSummary = (items) => ({
217
218
  unchanged: countStatus(items, "unchanged"),
218
219
  modified: countStatus(items, "modified"),
@@ -246,7 +247,4 @@ const comparisonLimitations = (factors) => uniqueSorted([
246
247
  ]);
247
248
  const hasSignal = (candidate, kind) => candidate.signals.some((signal) => signal.kind === kind);
248
249
  const compareCandidates = (left, right) => right.score - left.score ||
249
- compareText(left.current_node_id, right.current_node_id);
250
- const digestCanonical = (value) => canonicalDigest(value, "Source-to-bundle comparison");
251
- const uniqueSorted = (values) => [...new Set(values)].sort(compareText);
252
- const compareText = (left, right) => left < right ? -1 : left > right ? 1 : 0;
250
+ compareCodePoints(left.current_node_id, right.current_node_id);
@@ -1,9 +1,9 @@
1
1
  import { z } from "zod";
2
- import { evidenceSchema } from "./evidence.js";
2
+ import { evidenceSchema } from "../evidence.js";
3
3
  import { JAVASCRIPT_APPLICATION_NODE_KINDS } from "./javascriptApplicationGraphSchemas.js";
4
- import { historicalSourceGraphSchema } from "./referenceSourceGraph.js";
5
- import { digestSchema } from "./../domain/digests.js";
6
- import { prefixedDigestSchema } from "./../domain/digests.js";
4
+ import { historicalSourceGraphSchema } from "../referenceSourceGraph.js";
5
+ import { digestSchema } from "../digests.js";
6
+ import { prefixedDigestSchema } from "../digests.js";
7
7
  const evidenceIdSchema = prefixedDigestSchema("ev");
8
8
  const nodeIdSchema = prefixedDigestSchema("jag_node");
9
9
  const textSchema = z.string().min(1);
@@ -1,6 +1,7 @@
1
1
  import { posix } from "node:path";
2
+ import { compareCodePoints } from "../canonicalOrdering.js";
2
3
  import { SOURCE_TO_BUNDLE_SIGNAL_WEIGHTS, } from "./sourceToBundleComparisonSchemas.js";
3
- import { isDigest } from "./digests.js";
4
+ import { isDigest } from "../digests.js";
4
5
  const RELEVANT_NODE_KINDS = new Set([
5
6
  "javascript-asset",
6
7
  "javascript-module",
@@ -23,11 +24,11 @@ const signalWeight = (kind) => {
23
24
  /** Keep source-bearing application nodes in stable identifier order. */
24
25
  export const sourceBearingNodes = (nodes) => nodes
25
26
  .filter(({ kind }) => RELEVANT_NODE_KINDS.has(kind))
26
- .sort((left, right) => compareText(left.node_id, right.node_id));
27
+ .sort((left, right) => compareCodePoints(left.node_id, right.node_id));
27
28
  /** Keep historical source files in stable path order. */
28
29
  export const historicalSourceFiles = (graph) => graph.entries
29
30
  .filter((entry) => entry.kind === "file" && entry.classifications.includes("source"))
30
- .sort((left, right) => compareText(left.path, right.path));
31
+ .sort((left, right) => compareCodePoints(left.path, right.path));
31
32
  /** Build deterministic candidate indices without assigning fuzzy matches. */
32
33
  export const buildSourceToBundleCandidateIndex = (nodes) => {
33
34
  const projections = nodes.map(projectCurrentNode);
@@ -62,7 +63,7 @@ export const candidateIdsForSource = (source, index) => {
62
63
  for (const group of groups) {
63
64
  if (group === undefined)
64
65
  continue;
65
- for (const nodeId of [...group].sort(compareText)) {
66
+ for (const nodeId of [...group].sort(compareCodePoints)) {
66
67
  if (seen.has(nodeId))
67
68
  continue;
68
69
  seen.add(nodeId);
@@ -149,7 +150,7 @@ const signal = (kind, sourceValue, currentValues) => ({
149
150
  kind,
150
151
  weight: signalWeight(kind),
151
152
  source_value: sourceValue,
152
- current_values: [...new Set(currentValues)].sort(compareText),
153
+ current_values: [...new Set(currentValues)].sort(compareCodePoints),
153
154
  });
154
155
  const candidateConfidence = (signals) => {
155
156
  const kinds = new Set(signals.map(({ kind }) => kind));
@@ -190,7 +191,7 @@ const normalizeCurrentPath = (raw) => {
190
191
  };
191
192
  const uniquePaths = (paths) => [
192
193
  ...new Map(paths.map((path) => [`${path.kind}\0${path.value}`, path])).values(),
193
- ].sort((left, right) => compareText(`${left.kind}\0${left.value}`, `${right.kind}\0${right.value}`));
194
+ ].sort((left, right) => compareCodePoints(`${left.kind}\0${left.value}`, `${right.kind}\0${right.value}`));
194
195
  const pathSuffixes = (path) => {
195
196
  const parts = path.split("/");
196
197
  return parts.map((_, index) => parts.slice(index).join("/"));
@@ -200,4 +201,3 @@ const addIndexValue = (index, key, nodeId) => {
200
201
  values.add(nodeId);
201
202
  index.set(key, values);
202
203
  };
203
- const compareText = (left, right) => left < right ? -1 : left > right ? 1 : 0;
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import { compareCodePoints } from "./canonicalOrdering.js";
2
3
  const jsonValueTypeSchema = z.enum([
3
4
  "object",
4
5
  "array",
@@ -24,7 +25,9 @@ export const inferJsonShape = (text) => {
24
25
  try {
25
26
  root = JSON.parse(text);
26
27
  }
27
- catch {
28
+ catch (cause) {
29
+ // Invalid JSON is represented by the null return.
30
+ void cause;
28
31
  return null;
29
32
  }
30
33
  const properties = new Map();
@@ -76,7 +79,8 @@ export const inferJsonShape = (text) => {
76
79
  types: [...value.types].sort(),
77
80
  observations: value.observations,
78
81
  }))
79
- .sort((left, right) => left.path.localeCompare(right.path)),
82
+ .sort((left, right) => left.path.localeCompare(right.path) ||
83
+ compareCodePoints(left.path, right.path)),
80
84
  });
81
85
  };
82
86
  const jsonValueType = (value) => {
@@ -1,13 +1,13 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import canonicalize from "canonicalize";
3
3
  import { z } from "zod";
4
- import { evidenceSchema, parseEvidence } from "./evidence.js";
5
- import { createJavaScriptApplicationGraph, javascriptApplicationGraphSchema, } from "./javascriptApplicationGraph.js";
4
+ import { evidenceSchema, parseEvidence } from "../evidence.js";
5
+ import { createJavaScriptApplicationGraph, javascriptApplicationGraphSchema, } from "../javascript/javascriptApplicationGraph.js";
6
6
  import { managedArtifactInspectionSchema, managedMemberInspectionSchema, managedNativeBoundaryInspectionSchema, } from "./managedArtifact.js";
7
7
  import { assessManagedGraphOmissions, managedGraphEvidenceCoverage, managedGraphResultCoverage, } from "./managedApplicationGraphCoverage.js";
8
8
  import { addArtifactNode, addArtifactIdentityNodes, addBoundaryNodes, addMemberNodes, } from "./managedApplicationGraphNodes.js";
9
- import { digestSchema } from "./../domain/digests.js";
10
- import { prefixedDigestSchema } from "./../domain/digests.js";
9
+ import { digestSchema } from "../digests.js";
10
+ import { prefixedDigestSchema } from "../digests.js";
11
11
  const evidenceIdSchema = prefixedDigestSchema("ev");
12
12
  const textSchema = z.string().min(1);
13
13
  /** Authenticated managed Evidence records projected into the application graph. */
@@ -1,5 +1,5 @@
1
1
  import { basename } from "node:path";
2
- import { createJavaScriptApplicationEdge, createJavaScriptApplicationNode, } from "./javascriptApplicationGraph.js";
2
+ import { createJavaScriptApplicationEdge, createJavaScriptApplicationNode, } from "../javascript/javascriptApplicationGraph.js";
3
3
  import { managedSourceCoverage } from "./managedApplicationGraphCoverage.js";
4
4
  import {} from "./managedArtifact.js";
5
5
  import { moduleCoverageState } from "./managedApplicationGraphNodeCoverage.js";
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { digestSchema } from "./../domain/digests.js";
2
+ import { digestSchema } from "../digests.js";
3
3
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
4
4
  const offsetSchema = z.number().int().min(0);
5
5
  /** A 16-byte CLI metadata GUID without RFC 4122 version/variant restrictions. */
@@ -1,12 +1,12 @@
1
1
  import { z } from "zod";
2
- import { emptyArraySchema } from "./emptyArraySchema.js";
3
- import { evidenceSchema } from "./evidence.js";
2
+ import { emptyArraySchema } from "../emptyArraySchema.js";
3
+ import { evidenceSchema } from "../evidence.js";
4
4
  import { cliMetadataGuidSchema, } from "./managedArtifact.js";
5
5
  import { buildComparisonCoverage, buildComparisonMatching, buildComparisonSummary, comparisonLimitations, sideManifest, } from "./managedMemberComparisonCoverage.js";
6
6
  import { buildFieldItems, buildMethodItems, } from "./managedMemberComparisonItems.js";
7
7
  import { keyMembers, sha256 } from "./managedMemberComparisonMatch.js";
8
- import { digestSchema } from "./../domain/digests.js";
9
- import { prefixedDigestSchema } from "./../domain/digests.js";
8
+ import { digestSchema } from "../digests.js";
9
+ import { prefixedDigestSchema } from "../digests.js";
10
10
  const evidenceIdSchema = prefixedDigestSchema("ev");
11
11
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
12
12
  const boundedTextSchema = z.string().min(1);
@@ -97,6 +97,7 @@ const methodComparisonItemSchema = comparisonItemSchema({
97
97
  ...comparisonItemContextShape,
98
98
  item_id: prefixedDigestSchema("mmc_method"),
99
99
  dimensions: z.array(z.enum([
100
+ "metadata",
100
101
  "signature",
101
102
  "cil",
102
103
  "opcode-shape",
@@ -33,7 +33,7 @@ export const buildComparisonSummary = (items) => ({
33
33
  });
34
34
  export const buildComparisonMatching = (methodItems, fieldItems) => ({
35
35
  exact_il_signature: methodItems.filter(({ match }) => match.basis === "exact-il-signature").length,
36
- exact_signature: methodItems.filter(({ match }) => match.basis === "exact-signature").length,
36
+ exact_signature: [...methodItems, ...fieldItems].filter(({ match }) => match.basis === "exact-signature").length,
37
37
  structural_method_shape: methodItems.filter(({ match }) => match.basis === "structural-method-shape").length,
38
38
  field_signature: fieldItems.filter(({ match }) => match.basis === "field-signature").length,
39
39
  ambiguous: methodItems.filter(({ match }) => match.status === "ambiguous").length +
@@ -44,6 +44,7 @@ export const comparisonLimitations = (left, right) => {
44
44
  const limitations = [
45
45
  "Metadata tokens are build-local coordinates; matched pairs are remaps, not persistent identities.",
46
46
  "Methods pair by exact CIL/signature, then declared type, name, and signature, then structural shape; names alone are never a matching basis.",
47
+ "Fields pair by exact signature, then declared type, name, and signature; an undecoded signature is compared only by its raw bytes, and an unmatched member with one stays unknown.",
47
48
  ];
48
49
  if (left.coverage.state !== "complete" || right.coverage.state !== "complete")
49
50
  limitations.push("At least one managed member observation is partial.");