rea-agents 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. package/README.md +83 -108
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisContextQueries.js +21 -9
  6. package/dist/application/AnalysisSnapshotCache.js +0 -1
  7. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  8. package/dist/application/AndroidApplicationService.js +1 -1
  9. package/dist/application/AppleApplicationService.js +1 -1
  10. package/dist/application/ArtifactExtraction.js +35 -54
  11. package/dist/application/ArtifactExtractionDestination.js +17 -0
  12. package/dist/application/ArtifactGraphConstruction.js +2 -17
  13. package/dist/application/ArtifactInventory/classify.js +2 -6
  14. package/dist/application/ArtifactInventory/hash.js +2 -20
  15. package/dist/application/ArtifactInventory/policy.js +17 -0
  16. package/dist/application/ArtifactInventory/reader.js +1 -4
  17. package/dist/application/ArtifactInventory/scanCanonical.js +8 -15
  18. package/dist/application/ArtifactInventory/scanReader.js +76 -58
  19. package/dist/application/ArtifactInventory/types.js +1 -5
  20. package/dist/application/ArtifactInventory.js +6 -14
  21. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  22. package/dist/application/BinarySession.js +54 -28
  23. package/dist/application/BinarySessionComposition.js +0 -11
  24. package/dist/application/BinarySessionOpen.js +2 -1
  25. package/dist/application/BinarySessionRecords.js +24 -86
  26. package/dist/application/BinarySessionStatus.js +16 -21
  27. package/dist/application/BinaryTargetResolver.js +216 -0
  28. package/dist/application/BrowserEvidence.js +39 -57
  29. package/dist/application/BrowserObservationService.js +3 -6
  30. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  31. package/dist/application/BrowserScenarioEvidence.js +3 -3
  32. package/dist/application/CallPathTracing.js +2 -36
  33. package/dist/application/CapabilityClientRequirements.js +26 -0
  34. package/dist/application/CapabilityInventory.js +143 -77
  35. package/dist/application/ClientConfigurationDocument.js +27 -0
  36. package/dist/application/ClientRegistrationStatus.js +16 -13
  37. package/dist/application/CommandShimReplay.js +14 -1
  38. package/dist/application/DirectAnalysis.js +22 -46
  39. package/dist/application/DirectAnalysisStatus.js +5 -61
  40. package/dist/application/Doctor.js +11 -32
  41. package/dist/application/DoctorDiagnostics.js +1 -2
  42. package/dist/application/DoctorScope.js +1 -1
  43. package/dist/application/ElectronActiveEvidence.js +50 -0
  44. package/dist/application/ElectronActiveObservationPort.js +1 -0
  45. package/dist/application/ElectronActiveObservationService.js +78 -0
  46. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  47. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  48. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  49. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  50. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  51. package/dist/application/ElectronEvidence.js +4 -7
  52. package/dist/application/ElectronObservationService.js +5 -9
  53. package/dist/application/EnhancedLiteralTracing.js +42 -65
  54. package/dist/application/EnhancedTools.js +98 -64
  55. package/dist/application/EvidenceBundleCommands.js +16 -12
  56. package/dist/application/EvidenceBundleFiles.js +9 -15
  57. package/dist/application/EvidenceLedger.js +14 -42
  58. package/dist/application/FilesystemSnapshot.js +2 -3
  59. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  60. package/dist/application/InventoryProjectionEvidence.js +4 -2
  61. package/dist/application/InvestigationProviders.js +1 -1
  62. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  63. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  64. package/dist/application/JavaScriptApplicationService.js +6 -29
  65. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  66. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  67. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  68. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  69. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  70. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  71. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  72. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  73. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  74. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  75. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  76. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  77. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  78. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  79. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  80. package/dist/application/JavaScriptJsonModules.js +2 -2
  81. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  82. package/dist/application/JavaScriptReplayPermission.js +1 -1
  83. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  84. package/dist/application/JavaScriptReplayService.js +29 -47
  85. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  86. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  87. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  88. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  89. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  90. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  91. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  92. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  93. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  94. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  95. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  96. package/dist/application/JsonFiles.js +79 -0
  97. package/dist/application/LinuxHopper.js +11 -9
  98. package/dist/application/LoopbackReplay.js +26 -23
  99. package/dist/application/LoopbackReplayRecorder.js +29 -1
  100. package/dist/application/ManagedApplicationGraphService.js +1 -2
  101. package/dist/application/ManagedMemberComparisonService.js +11 -41
  102. package/dist/application/ManagedNativeVerificationService.js +1 -2
  103. package/dist/application/ManagedReconstructionService.js +1 -1
  104. package/dist/application/ManagedRuntimeCorrelationService.js +14 -13
  105. package/dist/application/NativeApiInspection.js +2 -7
  106. package/dist/application/NativeUiActionTrace.js +394 -0
  107. package/dist/application/NodeRuntimeCharacterizationService.js +11 -16
  108. package/dist/application/PermissionAuthority.js +15 -7
  109. package/dist/application/PermissionFailure.js +5 -0
  110. package/dist/application/ProcessCaptureAuthority.js +5 -7
  111. package/dist/application/ProcessCaptureJournal.js +3 -2
  112. package/dist/application/ProcessCaptureLifecycle.js +10 -12
  113. package/dist/application/ProcessCheckpoints.js +29 -11
  114. package/dist/application/ProcessCli.js +8 -17
  115. package/dist/application/ProcessEvidence.js +5 -7
  116. package/dist/application/ProcessHarness.js +60 -20
  117. package/dist/application/ProcessNormalization.js +2 -1
  118. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  119. package/dist/application/ProcessReactiveEffects.js +9 -3
  120. package/dist/application/ProcessReactiveHarness.js +13 -7
  121. package/dist/application/ProcessSampling.js +2 -4
  122. package/dist/application/ProcessTimer.js +39 -0
  123. package/dist/application/ProjectPermissionStore.js +39 -95
  124. package/dist/application/RealHopperAssertions.js +20 -66
  125. package/dist/application/ReconstructionCoverageService.js +12 -58
  126. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  127. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  128. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  129. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  130. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  131. package/dist/application/ReferenceSourceImport.js +21 -47
  132. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  133. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  134. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  135. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  136. package/dist/application/SessionProviderRouter.js +2 -2
  137. package/dist/application/Setup.js +1 -3
  138. package/dist/application/SetupClientConfiguration.js +22 -88
  139. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  140. package/dist/application/StoreFileLock.js +119 -0
  141. package/dist/application/TerminalRenderer.js +2 -3
  142. package/dist/application/Uninstall.js +9 -14
  143. package/dist/application/UnknownEvidence.js +1 -1
  144. package/dist/application/WindowsCapabilities.js +5 -4
  145. package/dist/artifacts/ArtifactPaths.js +2 -5
  146. package/dist/artifacts/ArtifactProvider.js +43 -67
  147. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  148. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  149. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  150. package/dist/artifacts/NibArchive.js +269 -0
  151. package/dist/artifacts/SafeOutputTree.js +21 -31
  152. package/dist/browser/BrowserProcessStartup.js +1 -2
  153. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  154. package/dist/browser/CdpBrowserProvider.js +3 -13
  155. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  156. package/dist/browser/CdpCaptureDocuments.js +28 -76
  157. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  158. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  159. package/dist/browser/CdpCaptureEvents.js +2 -8
  160. package/dist/browser/CdpCaptureStorage.js +9 -20
  161. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -95
  162. package/dist/browser/CdpCaptureValues.js +21 -21
  163. package/dist/browser/CdpConnection.js +10 -25
  164. package/dist/browser/CdpElectronInspection.js +29 -51
  165. package/dist/browser/CdpElectronProvider.js +10 -35
  166. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  167. package/dist/browser/CdpElectronScripts.js +6 -35
  168. package/dist/browser/CdpElectronWorkers.js +6 -10
  169. package/dist/browser/CdpEndpoint.js +25 -41
  170. package/dist/browser/CdpObservationSession.js +14 -26
  171. package/dist/browser/CdpPageCapture.js +34 -48
  172. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  173. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  174. package/dist/browser/CdpSafeMetadata.js +19 -22
  175. package/dist/browser/CdpScreenshot.js +3 -5
  176. package/dist/browser/CdpTargetSession.js +1 -2
  177. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  178. package/dist/browser/ElectronFileScope.js +8 -19
  179. package/dist/browser/JavaScriptRuntimeScope.js +10 -10
  180. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  181. package/dist/browser/PlaywrightElectronActiveActions.js +309 -0
  182. package/dist/browser/PlaywrightElectronActiveProvider.js +274 -0
  183. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  184. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  185. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  186. package/dist/browser/PlaywrightScenarioBrowser.js +7 -9
  187. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  188. package/dist/browser/PlaywrightScenarioSession.js +18 -34
  189. package/dist/browser/PngVisualDiff.js +22 -14
  190. package/dist/browser/SensitiveTextCapture.js +1 -18
  191. package/dist/browser/V8InspectorCaptureProjection.js +7 -7
  192. package/dist/browser/V8InspectorEndpoint.js +12 -14
  193. package/dist/browser/V8InspectorProvider.js +20 -61
  194. package/dist/browser/WebSourceMapFetcher.js +56 -176
  195. package/dist/catalogIdentity.js +12 -60
  196. package/dist/cli/artifactCommands.js +49 -77
  197. package/dist/cli/coreAnalysisCommands.js +83 -133
  198. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  199. package/dist/cli/managedCommands.js +6 -271
  200. package/dist/cli/setupCommands.js +3 -12
  201. package/dist/cli/utilityCommands.js +7 -41
  202. package/dist/cli.js +0 -2
  203. package/dist/cliApplicationCommands.js +44 -114
  204. package/dist/cliBrowserAdvancedCommands.js +12 -102
  205. package/dist/cliBrowserCommands.js +19 -124
  206. package/dist/cliBrowserContext.js +30 -0
  207. package/dist/cliCommandNames.js +5 -5
  208. package/dist/cliElectronCommands.js +49 -71
  209. package/dist/cliEvidenceCommands.js +8 -77
  210. package/dist/cliJavaScriptRuntimeCommands.js +18 -92
  211. package/dist/cliJsonInput.js +4 -14
  212. package/dist/cliObservationOptions.js +11 -92
  213. package/dist/cliPolicyCommands.js +2 -16
  214. package/dist/cliProcessCommands.js +3 -3
  215. package/dist/cliSetup.js +0 -13
  216. package/dist/config/browserScenario.js +77 -0
  217. package/dist/config/electronAutomation.js +35 -0
  218. package/dist/config/environment.js +6 -9
  219. package/dist/config/javascriptReplay.js +41 -0
  220. package/dist/config/managedRuntime.js +25 -0
  221. package/dist/config/parseConfig.js +56 -232
  222. package/dist/config/parsers.js +16 -28
  223. package/dist/config/passiveObservation.js +87 -0
  224. package/dist/config/permissions.js +0 -7
  225. package/dist/config/processCapture.js +47 -0
  226. package/dist/contracts/analysisSearchContract.js +2 -5
  227. package/dist/contracts/applicationToolContracts.js +58 -114
  228. package/dist/contracts/applicationWorkflowInputContracts.js +29 -114
  229. package/dist/contracts/artifactComparisonExample.js +58 -60
  230. package/dist/contracts/artifactToolContracts.js +37 -91
  231. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  232. package/dist/contracts/browserToolContracts.js +10 -75
  233. package/dist/contracts/electronToolContracts.js +27 -98
  234. package/dist/contracts/enhancedInputs.js +31 -78
  235. package/dist/contracts/errorSchemas.js +0 -1
  236. package/dist/contracts/functionComparisonExample.js +10 -24
  237. package/dist/contracts/functionInstructionContract.js +1 -3
  238. package/dist/contracts/functionWorkflowToolContracts.js +4 -5
  239. package/dist/contracts/hopperMemoryContracts.js +3 -3
  240. package/dist/contracts/investigationExamples.js +14 -11
  241. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  242. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  243. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  244. package/dist/contracts/managedToolContracts.js +10 -104
  245. package/dist/contracts/managedWorkflowExamples.js +77 -125
  246. package/dist/contracts/managedWorkflowToolContracts.js +51 -74
  247. package/dist/contracts/nativeToolContracts.js +9 -14
  248. package/dist/contracts/processCaptureExample.js +2 -69
  249. package/dist/contracts/promptContracts.js +49 -67
  250. package/dist/contracts/providerSelection.js +0 -1
  251. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  252. package/dist/contracts/sessionStatusContract.js +1 -17
  253. package/dist/contracts/sessionToolSchemas.js +52 -0
  254. package/dist/contracts/toolContractExamples.js +11 -10
  255. package/dist/contracts/toolContractHelpers.js +19 -0
  256. package/dist/contracts/toolContracts.js +60 -143
  257. package/dist/contracts/toolEffects.js +16 -9
  258. package/dist/contracts/toolOutputSchemaGroups.js +47 -86
  259. package/dist/contracts/toolOutputSchemaPrimitives.js +72 -62
  260. package/dist/contracts/toolSchemaMetadata.js +117 -0
  261. package/dist/contracts/unknownContractExamples.js +0 -2
  262. package/dist/doctorRuntime.js +1 -1
  263. package/dist/domain/analysisErrorPresentation.js +46 -54
  264. package/dist/domain/analysisErrorProjection.js +28 -37
  265. package/dist/domain/analysisProfile.js +3 -31
  266. package/dist/domain/analysisSnapshot.js +3 -12
  267. package/dist/domain/androidApplication.js +15 -52
  268. package/dist/domain/appleApplication.js +24 -65
  269. package/dist/domain/artifactComparison.js +11 -29
  270. package/dist/domain/artifactGraph.js +14 -44
  271. package/dist/domain/artifactInspection.js +38 -69
  272. package/dist/domain/artifactInventoryEvidence.js +27 -21
  273. package/dist/domain/binaryTarget.js +2 -219
  274. package/dist/domain/binaryTargetTypes.js +1 -0
  275. package/dist/domain/browserCaptureComparison.js +35 -60
  276. package/dist/domain/browserObservation.js +45 -197
  277. package/dist/domain/browserObservationSchemas.js +5 -23
  278. package/dist/domain/browserScenario.js +11 -14
  279. package/dist/domain/browserScenarioCapture.js +11 -12
  280. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  281. package/dist/domain/browserScenarioDiff.js +2 -59
  282. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  283. package/dist/domain/browserScenarioDiffValues.js +21 -38
  284. package/dist/domain/browserScenarioValues.js +80 -109
  285. package/dist/domain/browserSession.js +4 -7
  286. package/dist/domain/bundleComparison.js +6 -32
  287. package/dist/domain/bytecodeProvider.js +53 -54
  288. package/dist/domain/callPath.js +50 -169
  289. package/dist/domain/callPathSchemas.js +79 -0
  290. package/dist/domain/changedBehavior.js +34 -60
  291. package/dist/domain/completionLedgerGeneration.js +8 -14
  292. package/dist/domain/conformancePackage.js +126 -97
  293. package/dist/domain/conformanceReplay.js +39 -11
  294. package/dist/domain/conformanceTrustGate.js +174 -30
  295. package/dist/domain/customProtocolCapture.js +4 -4
  296. package/dist/domain/electronActiveObservation.js +244 -0
  297. package/dist/domain/electronObservation.js +21 -83
  298. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  299. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  300. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  301. package/dist/domain/electronStaticAnalysisValues.js +14 -18
  302. package/dist/domain/errors.js +33 -54
  303. package/dist/domain/eventProcessTree.js +101 -90
  304. package/dist/domain/evidence.js +2 -10
  305. package/dist/domain/evidenceBundle.js +3 -5
  306. package/dist/domain/evidenceCompletionLedger.js +6 -8
  307. package/dist/domain/functionComparison.js +4 -14
  308. package/dist/domain/functionComparisonNormalization.js +8 -8
  309. package/dist/domain/functionComparisonResults.js +25 -15
  310. package/dist/domain/functionComparisonSchemas.js +49 -33
  311. package/dist/domain/functionDossierEvidence.js +31 -151
  312. package/dist/domain/hopperStartupFailure.js +1 -1
  313. package/dist/domain/hopperValues.js +17 -141
  314. package/dist/domain/inputIssueProjection.js +4 -1
  315. package/dist/domain/interfaceBuilderGraph.js +654 -0
  316. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  317. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  318. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  319. package/dist/domain/javascriptApplicationGraph.js +3 -13
  320. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  321. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  322. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  323. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  324. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  325. package/dist/domain/javascriptAstFingerprint.js +25 -58
  326. package/dist/domain/javascriptAstValues.js +9 -0
  327. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  328. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  329. package/dist/domain/javascriptExportShapeComparisonSchemas.js +70 -77
  330. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  331. package/dist/domain/javascriptFeatureSeed.js +20 -12
  332. package/dist/domain/javascriptFeatureTrace.js +13 -67
  333. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  334. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  335. package/dist/domain/javascriptNativeHandoff.js +1 -1
  336. package/dist/domain/javascriptReplay.js +100 -101
  337. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  338. package/dist/domain/javascriptRuntimeObservation.js +43 -103
  339. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  340. package/dist/domain/javascriptRuntimeReconciliationActive.js +80 -0
  341. package/dist/domain/javascriptRuntimeReconciliationGraph.js +21 -33
  342. package/dist/domain/javascriptRuntimeReconciliationMatching.js +75 -61
  343. package/dist/domain/javascriptRuntimeReconciliationParsing.js +21 -46
  344. package/dist/domain/javascriptRuntimeReconciliationResult.js +25 -19
  345. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  346. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +34 -49
  347. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  348. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  349. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  350. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  351. package/dist/domain/javascriptSemanticCalls.js +5 -32
  352. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  353. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  354. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  355. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  356. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  357. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  358. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  359. package/dist/domain/javascriptSemanticIr.js +1 -29
  360. package/dist/domain/javascriptSemanticObjects.js +1 -5
  361. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  362. package/dist/domain/javascriptSemanticProjection.js +0 -18
  363. package/dist/domain/javascriptSemanticPromises.js +9 -16
  364. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  365. package/dist/domain/javascriptSemanticQuery.js +17 -139
  366. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  367. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  368. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  369. package/dist/domain/javascriptSemanticResources.js +1 -6
  370. package/dist/domain/javascriptSemanticReturns.js +10 -27
  371. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  372. package/dist/domain/javascriptSemanticValues.js +44 -62
  373. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  374. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  375. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  376. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  377. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  378. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  379. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  380. package/dist/domain/jsonShape.js +7 -33
  381. package/dist/domain/localPath.js +7 -0
  382. package/dist/domain/managedApplicationGraph.js +9 -41
  383. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  384. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  385. package/dist/domain/managedArtifact.js +14 -27
  386. package/dist/domain/managedMemberComparison.js +90 -92
  387. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  388. package/dist/domain/managedMemberComparisonItems.js +221 -0
  389. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  390. package/dist/domain/managedNativeVerification.js +3 -6
  391. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  392. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  393. package/dist/domain/managedReconstruction.js +19 -23
  394. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  395. package/dist/domain/nativeApiBoundary.js +17 -14
  396. package/dist/domain/nativeInspection.js +0 -2
  397. package/dist/domain/nativeInvestigationGraph.js +351 -0
  398. package/dist/domain/nativeValueFlow.js +61 -0
  399. package/dist/domain/nodeRuntimeCharacterization.js +15 -18
  400. package/dist/domain/objcSwiftMetadata.js +254 -0
  401. package/dist/domain/peInspection.js +1 -1
  402. package/dist/domain/permissionPolicy.js +13 -0
  403. package/dist/domain/processCapture.js +76 -113
  404. package/dist/domain/processCaptureExample.js +68 -0
  405. package/dist/domain/processCaptureParsing.js +21 -0
  406. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  407. package/dist/domain/processCaptureReactiveValidation.js +8 -3
  408. package/dist/domain/processCaptureValidation.js +8 -10
  409. package/dist/domain/processComparison.js +12 -16
  410. package/dist/domain/processObservation.js +5 -6
  411. package/dist/domain/processReactiveMatching.js +32 -46
  412. package/dist/domain/processReactiveRuntime.js +4 -8
  413. package/dist/domain/processReactiveScenario.js +28 -94
  414. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  415. package/dist/domain/processReactiveTransition.js +42 -21
  416. package/dist/domain/processScenario.js +62 -93
  417. package/dist/domain/processTraceComparison.js +0 -7
  418. package/dist/domain/processTraceEvaluation.js +14 -4
  419. package/dist/domain/processTraceSpecification.js +11 -17
  420. package/dist/domain/protocolCapture.js +11 -9
  421. package/dist/domain/reconstructionCoverage.js +62 -129
  422. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  423. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  424. package/dist/domain/reconstructionReadiness.js +1 -2
  425. package/dist/domain/reconstructionReadinessSchemas.js +66 -40
  426. package/dist/domain/reconstructionUnknowns.js +3 -3
  427. package/dist/domain/reconstructionVerification.js +13 -47
  428. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  429. package/dist/domain/referenceSourceGraph.js +53 -61
  430. package/dist/domain/referenceSourceImportParsing.js +3 -7
  431. package/dist/domain/replayMachine.js +19 -31
  432. package/dist/domain/replayMachineRun.js +15 -63
  433. package/dist/domain/replayMachineRuntime.js +46 -44
  434. package/dist/domain/replayMachineValues.js +84 -0
  435. package/dist/domain/residualUnknown.js +25 -30
  436. package/dist/domain/runtimeCharacterization.js +15 -16
  437. package/dist/domain/runtimeIdentification.js +48 -47
  438. package/dist/domain/sourceToBundleComparison.js +11 -87
  439. package/dist/domain/sourceToBundleComparisonSchemas.js +25 -50
  440. package/dist/domain/sourceToBundleSignals.js +11 -16
  441. package/dist/domain/staticRuntimeCorrelation.js +44 -54
  442. package/dist/domain/symbolAnalysis.js +10 -19
  443. package/dist/domain/unicodeCodePointOrder.js +12 -0
  444. package/dist/domain/webBundleAnalysis.js +70 -99
  445. package/dist/domain/webBundleAnalyzer.js +2 -4
  446. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  447. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  448. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  449. package/dist/domain/webCaptureDiff.js +48 -85
  450. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  451. package/dist/domain/webContentArtifact.js +1 -10
  452. package/dist/domain/webMcpDiscovery.js +3 -14
  453. package/dist/domain/webScreenshot.js +58 -34
  454. package/dist/domain/zipPackageFormat.js +7 -0
  455. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  456. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  457. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  458. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  459. package/dist/dotnet/ManagedMemberRows.js +16 -16
  460. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  461. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  462. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  463. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  464. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  465. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  466. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -42
  467. package/dist/dotnet/ManagedPeReader.js +2 -2
  468. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  469. package/dist/generatedMcpToolCatalog.js +1 -1
  470. package/dist/generatedPackageMetadata.js +1 -1
  471. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  472. package/dist/ghidra/GhidraClient.js +5 -13
  473. package/dist/ghidra/GhidraClientStartup.js +1 -1
  474. package/dist/ghidra/GhidraClientWire.js +9 -5
  475. package/dist/ghidra/GhidraDefaults.js +0 -18
  476. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  477. package/dist/ghidra/GhidraDoctor.js +16 -12
  478. package/dist/ghidra/GhidraFunctionValues.js +67 -108
  479. package/dist/ghidra/GhidraInstallation.js +98 -42
  480. package/dist/ghidra/GhidraInventoryValues.js +18 -77
  481. package/dist/ghidra/GhidraLauncher.js +0 -8
  482. package/dist/ghidra/GhidraProvider.js +32 -31
  483. package/dist/ghidra/GhidraProviderCapabilities.js +11 -48
  484. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  485. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  486. package/dist/ghidra/GhidraSessionValues.js +0 -2
  487. package/dist/ghidra/GhidraSocketConnection.js +1 -1
  488. package/dist/ghidra/GhidraTransport.js +4 -7
  489. package/dist/ghidra/protocol.js +19 -42
  490. package/dist/hopper/BridgeLauncher.js +115 -37
  491. package/dist/hopper/HopperAnalysisProfile.js +3 -5
  492. package/dist/hopper/HopperCleanup.js +11 -9
  493. package/dist/hopper/HopperClient.js +5 -8
  494. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  495. package/dist/hopper/HopperProvider.js +0 -30
  496. package/dist/hopper/HopperRequestQueue.js +21 -40
  497. package/dist/hopper/HopperResponseStream.js +1 -9
  498. package/dist/hopper/HopperSessionValues.js +3 -2
  499. package/dist/hopper/HopperTargetLease.js +119 -0
  500. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  501. package/dist/hopper/LinuxPrivateDisplayProbe.js +21 -26
  502. package/dist/hopper/protocol.js +6 -4
  503. package/dist/main/reload.js +1 -9
  504. package/dist/main/shutdown.js +1 -1
  505. package/dist/main/state.js +0 -23
  506. package/dist/main/transport.js +27 -39
  507. package/dist/main.js +17 -15
  508. package/dist/mcpDoctor.js +27 -69
  509. package/dist/native/CommandRunner.js +18 -25
  510. package/dist/native/NativeMacOSProvider.js +13 -38
  511. package/dist/native/NativeMachoInspection.js +1 -1
  512. package/dist/process/BoundedFileBytes.js +17 -0
  513. package/dist/process/ExecFileOutput.js +11 -0
  514. package/dist/process/PendingOperations.js +8 -6
  515. package/dist/process/PrivateRuntimeRoot.js +17 -0
  516. package/dist/process/ProcessOwnership.js +67 -130
  517. package/dist/process/ProcessOwnershipIdentity.js +13 -0
  518. package/dist/process/ProcessOwnershipObservation.js +87 -0
  519. package/dist/process/ProcessOwnershipProcessTree.js +22 -0
  520. package/dist/process/ProviderDeadline.js +8 -12
  521. package/dist/process/ProviderProcess.js +7 -28
  522. package/dist/process/WindowsAuthority.js +32 -0
  523. package/dist/reference/ReferenceSourceReader.js +8 -24
  524. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  525. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  526. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  527. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  528. package/dist/replay/JavaScriptReplayWorker.js +95 -13
  529. package/dist/replay/JavaScriptReplayWorkerTypes.js +1 -0
  530. package/dist/replay/LinuxJavaScriptReplayRunner.js +42 -43
  531. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  532. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  533. package/dist/replay/ReplayOutcome.js +27 -18
  534. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  535. package/dist/replay/ReplaySeccompFile.js +29 -0
  536. package/dist/replay/ReplayWorkerProtocol.js +33 -30
  537. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  538. package/dist/server/ProcessCaptureElicitation.js +4 -8
  539. package/dist/server/createServer.js +145 -119
  540. package/dist/server/mcpClientMetadata.js +32 -0
  541. package/dist/server/promptCompletion.js +37 -61
  542. package/dist/server/recordDerivedEvidence.js +1 -1
  543. package/dist/server/registerApplicationTools/characterization.js +10 -21
  544. package/dist/server/registerApplicationTools/compareExportShapes.js +6 -16
  545. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -15
  546. package/dist/server/registerApplicationTools/compareVersions.js +6 -16
  547. package/dist/server/registerApplicationTools/controlledReplay.js +8 -15
  548. package/dist/server/registerApplicationTools/coverage.js +7 -78
  549. package/dist/server/registerApplicationTools/helpers.js +1 -13
  550. package/dist/server/registerApplicationTools/obligationLedger.js +4 -8
  551. package/dist/server/registerApplicationTools/traceFeature.js +6 -15
  552. package/dist/server/registerApplicationTools/traceSemantics.js +5 -13
  553. package/dist/server/registerApplicationTools.js +0 -2
  554. package/dist/server/registerArtifactComparisonTool.js +27 -35
  555. package/dist/server/registerBrowserScenarioTool.js +3 -8
  556. package/dist/server/registerBrowserTools.js +36 -81
  557. package/dist/server/registerBundleComparisonTool.js +10 -16
  558. package/dist/server/registerCloseLifecycleTool.js +5 -27
  559. package/dist/server/registerElectronTools.js +29 -65
  560. package/dist/server/registerEnhancedTools.js +118 -127
  561. package/dist/server/registerEvidenceTools.js +19 -30
  562. package/dist/server/registerFunctionComparisonTool.js +35 -34
  563. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  564. package/dist/server/registerInvestigationTools.js +36 -148
  565. package/dist/server/registerJavaScriptRuntimeObservationTools.js +15 -27
  566. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +16 -23
  567. package/dist/server/registerManagedWorkflowTools/contract.js +2 -3
  568. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  569. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -14
  570. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +4 -14
  571. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +11 -20
  572. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +10 -21
  573. package/dist/server/registerOfficialTools.js +8 -51
  574. package/dist/server/registerProcessComparisonTool.js +43 -38
  575. package/dist/server/registerPrompts.js +19 -17
  576. package/dist/server/registerReplayMachineTool.js +4 -10
  577. package/dist/server/registerSessionRecordTools.js +36 -153
  578. package/dist/server/registerSessionStatusTool.js +18 -96
  579. package/dist/server/registerSessionTools.js +34 -91
  580. package/dist/server/sessionAvailabilityPolicy.js +2 -3
  581. package/dist/server/sessionEvidence.js +9 -15
  582. package/dist/server/sessionToolPolicies.js +1 -13
  583. package/dist/server/toolRegistrationOptions.js +4 -192
  584. package/dist/server/toolResult.js +15 -67
  585. package/dist/serverIdentity.js +0 -20
  586. package/install.sh +1 -1
  587. package/package.json +27 -15
  588. package/scripts/electron-active-hook-boundaries.cjs +394 -0
  589. package/scripts/electron-active-hook.cjs +469 -0
  590. package/scripts/hopper-demo-x11.py +13 -32
  591. package/scripts/rea.mjs +1 -11
  592. package/skills/reverse-engineer-anything/SKILL.md +46 -11
  593. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  594. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  595. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  596. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -180
  597. package/dist/application/BoundedJsonFiles.js +0 -86
  598. package/dist/application/CrossVersionInventory.js +0 -128
  599. package/dist/application/CrossVersionInvestigation.js +0 -301
  600. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  601. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  602. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  603. package/dist/application/DeferredFileAuthorization.js +0 -61
  604. package/dist/application/DoctorProjection.js +0 -43
  605. package/dist/application/EnhancedToolPagination.js +0 -22
  606. package/dist/application/EvidenceReferenceResolver.js +0 -26
  607. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  608. package/dist/application/ProcessPairedExperiment.js +0 -72
  609. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  610. package/dist/application/ReconstructionReadinessService.js +0 -48
  611. package/dist/cliInvestigationCommands.js +0 -173
  612. package/dist/domain/boundedCartesianProjection.js +0 -15
  613. package/dist/domain/investigationWorkspace.js +0 -346
  614. package/dist/domain/jsonLimits.js +0 -26
  615. package/dist/domain/knownPageCoverage.js +0 -21
  616. package/dist/domain/processPairedExperiment.js +0 -128
  617. package/dist/server/DynamicToolAvailability.js +0 -70
  618. package/dist/server/LazyToolCatalog.js +0 -134
  619. package/dist/server/hydrateServerTools.js +0 -191
  620. package/dist/server/javascriptApplicationResult.js +0 -106
  621. package/dist/server/permissionFailure.js +0 -12
  622. package/dist/server/registerApplicationTools/readiness.js +0 -55
  623. package/dist/server/registerEvidenceResources.js +0 -315
  624. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  625. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  626. package/dist/server/registerReconstructionReadinessResource.js +0 -32
  627. package/dist/server/toolInputValidation.js +0 -77
  628. package/scripts/package-runner-bootstrap.mjs +0 -72
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  import { AnalysisInputError, AnalysisProtocolError, } from "../domain/errors.js";
3
3
  import { createEvidence } from "../domain/evidence.js";
4
4
  import { jsonObjectSchema, jsonValueSchema } from "../domain/jsonValue.js";
5
- import { reconstructionObligationLedgerInputSchema, reconstructionObligationLedgerPageSchema, } from "../domain/reconstructionObligationLedgerSchemas.js";
5
+ import { reconstructionObligationLedgerInputSchema, reconstructionObligationLedgerSchema, } from "../domain/reconstructionObligationLedgerSchemas.js";
6
6
  import { err, ok } from "../domain/result.js";
7
7
  import { JAVASCRIPT_APPLICATION_WORKFLOW_PROVIDER } from "./InvestigationProviders.js";
8
8
  import { deriveReconstructionObligationCandidates } from "./ReconstructionObligationCandidates.js";
@@ -15,7 +15,7 @@ export const resolveReconstructionObligationLedgerRequest = (input) => {
15
15
  ? ok(parsed.data)
16
16
  : err(new AnalysisInputError(OPERATION, { cause: parsed.error }));
17
17
  };
18
- /** Build one deterministic ledger page and wrap it in portable Evidence v2. */
18
+ /** Build the complete deterministic ledger and wrap it in portable Evidence. */
19
19
  export const buildReconstructionObligationLedgerEvidenceValidated = (input) => {
20
20
  try {
21
21
  const generated = deriveReconstructionObligationCandidates(input.evidence_bundle, input.reviewed_obligations);
@@ -23,11 +23,9 @@ export const buildReconstructionObligationLedgerEvidenceValidated = (input) => {
23
23
  candidates: generated.candidates,
24
24
  bundle: input.evidence_bundle,
25
25
  manifest: input.manifest,
26
- maxObligations: input.limits.max_obligations,
27
26
  generationLimitations: generated.limitations,
28
27
  });
29
- const page = pageLedger(ledger, input.page.offset, input.page.limit);
30
- return ok(createLedgerEvidence(input, page));
28
+ return ok(createLedgerEvidence(input, ledger));
31
29
  }
32
30
  catch (cause) {
33
31
  if (cause instanceof z.ZodError)
@@ -35,38 +33,21 @@ export const buildReconstructionObligationLedgerEvidenceValidated = (input) => {
35
33
  return err(new AnalysisProtocolError("Reconstruction obligation ledger generation failed", { cause }));
36
34
  }
37
35
  };
38
- const pageLedger = (ledger, offset, limit) => {
39
- const obligations = ledger.obligations.slice(offset, offset + limit);
40
- const nextOffset = offset + obligations.length < ledger.obligations.length
41
- ? offset + obligations.length
42
- : null;
43
- const { obligations: _allObligations, ...summary } = ledger;
44
- return reconstructionObligationLedgerPageSchema.parse({
45
- ...summary,
46
- page: {
47
- offset,
48
- limit,
49
- total: ledger.obligations.length,
50
- returned: obligations.length,
51
- next_offset: nextOffset,
52
- },
53
- obligations,
36
+ const createLedgerEvidence = (input, ledger) => {
37
+ const completeLedger = reconstructionObligationLedgerSchema.parse(ledger);
38
+ return createEvidence(undefined, JAVASCRIPT_APPLICATION_WORKFLOW_PROVIDER, {
39
+ predicateType: "rea.reconstruction-obligation-ledger",
40
+ operation: OPERATION,
41
+ parameters: jsonObjectSchema.parse({
42
+ ledger_id: completeLedger.ledger_id,
43
+ closure_digest: completeLedger.closure_digest,
44
+ }),
45
+ result: jsonValueSchema.parse(completeLedger),
46
+ rawResult: null,
47
+ confidence: "inferred",
48
+ authority: "analyst-inference",
49
+ environment: null,
50
+ limitations: completeLedger.limitations,
51
+ evidenceLinks: completeLedger.evidence_links,
54
52
  });
55
53
  };
56
- const createLedgerEvidence = (input, page) => createEvidence(undefined, JAVASCRIPT_APPLICATION_WORKFLOW_PROVIDER, {
57
- predicateType: "rea.reconstruction-obligation-ledger/v1",
58
- operation: OPERATION,
59
- parameters: jsonObjectSchema.parse({
60
- ledger_id: page.ledger_id,
61
- closure_digest: page.closure_digest,
62
- limits: input.limits,
63
- page: input.page,
64
- }),
65
- result: jsonValueSchema.parse(page),
66
- rawResult: null,
67
- confidence: "inferred",
68
- authority: "analyst-inference",
69
- environment: null,
70
- limitations: page.limitations,
71
- evidenceLinks: page.evidence_links,
72
- });
@@ -1,23 +1,12 @@
1
+ import { compareUnicodeCodePoints } from "../domain/unicodeCodePointOrder.js";
1
2
  import { isSecretLikePath } from "../domain/referenceSourceClassification.js";
2
- import { createHistoricalSourceGraph, historicalSourceParseFailureKey, } from "../domain/referenceSourceGraph.js";
3
+ import { createHistoricalSourceGraph, historicalSourceLanguages, historicalSourceManifests, historicalSourceParseFailureKey, } from "../domain/referenceSourceGraph.js";
3
4
  import { err, ok } from "../domain/result.js";
4
5
  import { readReferenceSource } from "../reference/ReferenceSourceReader.js";
5
6
  import { parseReferenceSourceEntries } from "./ReferenceSourceImportEntries.js";
6
7
  import { readReferenceSourceVcs } from "./ReferenceSourceVcsAdapter.js";
7
8
  import {} from "./ReferenceSourceImportTypes.js";
8
9
  import { prepareReferenceSourceImport } from "./ReferenceSourceImportPolicy.js";
9
- const compareCodePoints = (left, right) => {
10
- const leftPoints = [...left].map((value) => value.codePointAt(0) ?? 0);
11
- const rightPoints = [...right].map((value) => value.codePointAt(0) ?? 0);
12
- const length = Math.min(leftPoints.length, rightPoints.length);
13
- for (let index = 0; index < length; index += 1) {
14
- const difference = (leftPoints[index] ?? 0) - (rightPoints[index] ?? 0);
15
- if (difference !== 0)
16
- return difference;
17
- }
18
- return leftPoints.length - rightPoints.length;
19
- };
20
- const byCodePoint = (left, right) => compareCodePoints(left, right);
21
10
  const failure = (code, message) => ({
22
11
  tag: "reference-source-import",
23
12
  code,
@@ -40,7 +29,7 @@ const deduplicateRelationships = (relationships) => {
40
29
  };
41
30
  /** Sort parse failures deterministically while retaining distinct reasons. */
42
31
  export const normalizeHistoricalSourceParseFailures = (failures) => [...failures]
43
- .sort((left, right) => byCodePoint(historicalSourceParseFailureKey(left), historicalSourceParseFailureKey(right)))
32
+ .sort((left, right) => compareUnicodeCodePoints(historicalSourceParseFailureKey(left), historicalSourceParseFailureKey(right)))
44
33
  .filter((value, index, array) => {
45
34
  if (index === 0)
46
35
  return true;
@@ -54,16 +43,6 @@ const buildProvenance = (options) => ({
54
43
  importer_version: options.importerVersion ?? null,
55
44
  caller: options.caller,
56
45
  });
57
- const deriveLanguages = (entries) => [
58
- ...new Set(entries.flatMap((entry) => entry.kind === "file" && entry.language !== null
59
- ? [entry.language]
60
- : [])),
61
- ].sort(byCodePoint);
62
- const deriveManifests = (entries) => entries
63
- .flatMap((entry) => entry.kind === "file" && entry.classifications.includes("manifest")
64
- ? [entry.path]
65
- : [])
66
- .sort(byCodePoint);
67
46
  const deriveInventoryState = (input) => {
68
47
  if (input.limitations.length > 0)
69
48
  return "partial";
@@ -83,17 +62,12 @@ const deriveInventoryState = (input) => {
83
62
  return "partial";
84
63
  return "complete";
85
64
  };
86
- const sortAndLimit = (exclusions, maxExclusions) => {
87
- const sorted = [...exclusions].sort((left, right) => {
88
- const byPath = byCodePoint(left.path, right.path);
89
- if (byPath !== 0)
90
- return byPath;
91
- return byCodePoint(left.reason, right.reason);
92
- });
93
- if (sorted.length <= maxExclusions)
94
- return sorted;
95
- return sorted.slice(0, maxExclusions);
96
- };
65
+ const sortExclusions = (exclusions) => [...exclusions].sort((left, right) => {
66
+ const byPath = compareUnicodeCodePoints(left.path, right.path);
67
+ if (byPath !== 0)
68
+ return byPath;
69
+ return compareUnicodeCodePoints(left.reason, right.reason);
70
+ });
97
71
  /**
98
72
  * Import a reference source directory into a committed historical source graph.
99
73
  *
@@ -107,7 +81,7 @@ export const importReferenceSource = async (options) => {
107
81
  const prepared = await prepareReferenceSourceImport(options);
108
82
  if (!prepared.ok)
109
83
  return prepared;
110
- const { ignored, limits, root, secrets } = prepared.value;
84
+ const { ignored, root, secrets } = prepared.value;
111
85
  if (isAborted(options.signal))
112
86
  return err(cancelled());
113
87
  const exclusions = [];
@@ -123,7 +97,7 @@ export const importReferenceSource = async (options) => {
123
97
  return false;
124
98
  };
125
99
  const [readResult, vcs] = await Promise.all([
126
- readReferenceSource(root, limits, {
100
+ readReferenceSource(root, {
127
101
  ...(options.signal === undefined ? {} : { signal: options.signal }),
128
102
  shouldExclude,
129
103
  }),
@@ -133,7 +107,7 @@ export const importReferenceSource = async (options) => {
133
107
  const error = readResult.error;
134
108
  if (error.code === "cancelled")
135
109
  return err(cancelled());
136
- return err(failure(error.code === "invalid-limits" ? "invalid-limits" : "io", error.message));
110
+ return err(failure("io", error.message));
137
111
  }
138
112
  if (isAborted(options.signal))
139
113
  return err(cancelled());
@@ -146,11 +120,11 @@ export const importReferenceSource = async (options) => {
146
120
  return err(cancelled());
147
121
  const uniqueRelationships = deduplicateRelationships(relationships);
148
122
  const uniqueFailures = normalizeHistoricalSourceParseFailures(parseFailures);
149
- const sortedEntries = [...entries].sort((left, right) => byCodePoint(left.path, right.path));
150
- const sortedExclusions = sortAndLimit(exclusions, limits.maxEntries);
151
- const sortedLimitations = [...limitations].sort(byCodePoint);
123
+ const sortedEntries = [...entries].sort((left, right) => compareUnicodeCodePoints(left.path, right.path));
124
+ const sortedExclusions = sortExclusions(exclusions);
125
+ const sortedLimitations = [...limitations].sort(compareUnicodeCodePoints);
152
126
  const input = {
153
- schema: "HistoricalSourceGraph/v1",
127
+ schema: "HistoricalSourceGraph",
154
128
  authority: "historical-reference",
155
129
  root_alias: "$REFERENCE_ROOT",
156
130
  inventory_state: deriveInventoryState({
@@ -161,11 +135,11 @@ export const importReferenceSource = async (options) => {
161
135
  limitations: sortedLimitations,
162
136
  }),
163
137
  entries: sortedEntries,
164
- relationships: uniqueRelationships.sort((left, right) => byCodePoint(relationshipKey(left), relationshipKey(right))),
138
+ relationships: uniqueRelationships.sort((left, right) => compareUnicodeCodePoints(relationshipKey(left), relationshipKey(right))),
165
139
  parse_failures: uniqueFailures,
166
140
  exclusions: sortedExclusions,
167
- languages: deriveLanguages(sortedEntries),
168
- manifests: deriveManifests(sortedEntries),
141
+ languages: historicalSourceLanguages(sortedEntries),
142
+ manifests: historicalSourceManifests(sortedEntries),
169
143
  vcs,
170
144
  provenance: buildProvenance(options),
171
145
  limitations: sortedLimitations,
@@ -173,7 +147,7 @@ export const importReferenceSource = async (options) => {
173
147
  try {
174
148
  return ok(createHistoricalSourceGraph(input));
175
149
  }
176
- catch (error) {
177
- return err(failure("parse", error instanceof Error ? error.message : "Graph failed validation"));
150
+ catch (cause) {
151
+ return err(failure("parse", cause instanceof Error ? cause.message : "Graph failed validation"));
178
152
  }
179
153
  };
@@ -7,8 +7,6 @@ import { PARSEABLE_REFERENCE_SOURCE_LANGUAGES } from "./ReferenceSourceImportTyp
7
7
  export const projectReferenceSourceEntryFailure = (entry) => {
8
8
  if (entry.code === "cancelled")
9
9
  return "This entry was not read because the import was cancelled. Start the import again when ready.";
10
- if (entry.code === "limit")
11
- return "This entry was not read because an import limit was reached. Import a smaller directory or raise the configured limits.";
12
10
  if (entry.code === "unsupported")
13
11
  return "This entry cannot be read safely on this system. Exclude it or import the directory on a supported system.";
14
12
  if (entry.kind === "directory")
@@ -26,7 +24,7 @@ const failedEntry = (entry) => {
26
24
  path: entry.path,
27
25
  kind: "directory",
28
26
  classifications,
29
- tree_state: entry.code === "limit" ? "partial" : "unreadable",
27
+ tree_state: "unreadable",
30
28
  limitations: [limitation],
31
29
  };
32
30
  if (entry.kind === "symlink")
@@ -45,7 +43,7 @@ const failedEntry = (entry) => {
45
43
  size: entry.size ?? null,
46
44
  language: null,
47
45
  classifications: entry.kind === "file" ? classifications : ["unknown"],
48
- content_state: entry.code === "limit" ? "too-large" : "unreadable",
46
+ content_state: "unreadable",
49
47
  limitations: [limitation],
50
48
  };
51
49
  };
@@ -2,40 +2,18 @@ import { readFile, realpath, stat } from "node:fs/promises";
2
2
  import { join, resolve } from "node:path";
3
3
  import ignore from "ignore";
4
4
  import { err, ok } from "../domain/result.js";
5
- import { withinRoot } from "../reference/ReferenceSourceReaderPaths.js";
6
- import { DEFAULT_REFERENCE_SOURCE_IGNORE_PATTERNS, DEFAULT_REFERENCE_SOURCE_LIMITS, } from "./ReferenceSourceImportTypes.js";
7
- import { canonicalizeConfiguredRoots } from "./ConfiguredRoots.js";
5
+ import { DEFAULT_REFERENCE_SOURCE_IGNORE_PATTERNS, } from "./ReferenceSourceImportTypes.js";
8
6
  const failure = (code, message) => ({
9
7
  tag: "reference-source-import",
10
8
  code,
11
9
  message,
12
10
  });
13
- const validLimits = (limits) => Object.values(limits).every((value) => Number.isSafeInteger(value) && value > 0);
14
- const maximumLimits = (options) => ({
15
- maxBytes: options.policy.maxBytes,
16
- maxEntries: options.policy.maxEntries,
17
- maxDepth: options.policy.maxDepth,
18
- maxPathBytes: options.policy.maxPathBytes,
19
- });
20
- const clampLimits = (requested, maximum) => ({
21
- maxBytes: Math.min(requested.maxBytes, maximum.maxBytes),
22
- maxEntries: Math.min(requested.maxEntries, maximum.maxEntries),
23
- maxDepth: Math.min(requested.maxDepth, maximum.maxDepth),
24
- maxPathBytes: Math.min(requested.maxPathBytes, maximum.maxPathBytes),
25
- });
26
- const authorizeRoot = async (requestedRoot, approvedRoots) => {
27
- if (approvedRoots.length === 0)
28
- return err(failure("policy", "No approved reference source roots"));
11
+ const resolveRoot = async (requestedRoot) => {
29
12
  try {
30
13
  if (!(await stat(requestedRoot)).isDirectory())
31
14
  return err(failure("invalid-root", "Reference source root is not a directory"));
32
15
  const canonicalRoot = await realpath(resolve(requestedRoot));
33
- const canonicalApprovedRoots = await canonicalizeConfiguredRoots(approvedRoots.map((approvedRoot) => resolve(approvedRoot)));
34
- for (const canonicalApproved of canonicalApprovedRoots) {
35
- if (withinRoot(canonicalApproved, canonicalRoot))
36
- return ok(canonicalRoot);
37
- }
38
- return err(failure("policy", "Reference source root is outside approved roots"));
16
+ return ok(canonicalRoot);
39
17
  }
40
18
  catch {
41
19
  return err(failure("invalid-root", "Reference source root could not be resolved"));
@@ -56,18 +34,13 @@ const buildIgnored = async (root, excludePaths) => {
56
34
  }
57
35
  return ignored;
58
36
  };
59
- /** Validate limits, authorize root, and build non-executing path filters. */
37
+ /** Resolve the caller-selected directory and build path filters. */
60
38
  export const prepareReferenceSourceImport = async (options) => {
61
- const requested = options.limits ?? DEFAULT_REFERENCE_SOURCE_LIMITS;
62
- const maximum = maximumLimits(options);
63
- if (!validLimits(requested) || !validLimits(maximum))
64
- return err(failure("invalid-limits", "Import limits must be positive integers"));
65
- const root = await authorizeRoot(options.root, options.policy.roots);
39
+ const root = await resolveRoot(options.root);
66
40
  if (!root.ok)
67
41
  return root;
68
42
  return ok({
69
43
  root: root.value,
70
- limits: clampLimits(requested, maximum),
71
44
  ignored: await buildIgnored(root.value, options.excludePaths ?? []),
72
45
  secrets: ignore().add([...options.policy.secretPatterns]),
73
46
  });
@@ -5,21 +5,11 @@ export const projectReferenceSourceImportError = (error) => {
5
5
  category: "cancelled",
6
6
  message: "Reference source import was cancelled. Start it again when ready.",
7
7
  };
8
- if (error.code === "invalid-limits")
9
- return {
10
- category: "invalid_input",
11
- message: "Reference source limits are invalid. Use positive integer limits, then try again.",
12
- };
13
8
  if (error.code === "invalid-root")
14
9
  return {
15
10
  category: "invalid_input",
16
11
  message: "Reference source directory could not be opened. Check that the path exists, is readable, and points to a directory.",
17
12
  };
18
- if (error.code === "policy")
19
- return {
20
- category: "permission_required",
21
- message: "Reference source directory is not approved. Add its directory to `REA_REFERENCE_ROOTS_JSON`, restart REA, then try again.",
22
- };
23
13
  if (error.code === "io")
24
14
  return {
25
15
  category: "execution_failure",
@@ -41,10 +31,4 @@ export const DEFAULT_REFERENCE_SOURCE_IGNORE_PATTERNS = [
41
31
  ".coverage",
42
32
  "*.log",
43
33
  ];
44
- export const DEFAULT_REFERENCE_SOURCE_LIMITS = {
45
- maxBytes: 16 * 1024 * 1024,
46
- maxEntries: 10_000,
47
- maxDepth: 32,
48
- maxPathBytes: 4_096,
49
- };
50
34
  export const PARSEABLE_REFERENCE_SOURCE_LANGUAGES = new Set(["JavaScript", "TypeScript", "JSX", "TSX"]);
@@ -1,13 +1,10 @@
1
- import { execFile } from "node:child_process";
1
+ import { spawn } from "node:child_process";
2
2
  import { constants } from "node:fs";
3
3
  import { access, realpath } from "node:fs/promises";
4
4
  import { delimiter, join } from "node:path";
5
5
  const TOOL_NAMES = ["node", "npm", "npx"];
6
- const MAX_CANDIDATES_PER_TOOL = 16;
7
- const MAX_OUTPUT_BYTES = 65_536;
8
- const MAX_DIAGNOSTIC_BYTES = 4_096;
9
6
  const PROBE_CONCURRENCY = 4;
10
- /** Inventory and bounded-probe Node toolchain candidates under one exact PATH. */
7
+ /** Inventory and probe Node toolchain candidates under one exact PATH. */
11
8
  export const inspectRuntimeExecutables = async (options) => {
12
9
  const pathEntries = unique(options.path.split(delimiter).filter(Boolean));
13
10
  const candidates = [
@@ -37,7 +34,7 @@ export const inspectRuntimeExecutables = async (options) => {
37
34
  seen.add(key);
38
35
  uniqueCandidates.push(candidate);
39
36
  }
40
- const diagnostics = await mapConcurrentBounded(uniqueCandidates, PROBE_CONCURRENCY, (candidate) => probeCandidate(candidate, options.timeoutMs ?? 5_000, options.path));
37
+ const diagnostics = await mapConcurrentBounded(uniqueCandidates, PROBE_CONCURRENCY, (candidate) => probeCandidate(candidate, options.timeoutMs, options.path));
41
38
  return {
42
39
  launcher_node: await canonicalPath(options.launcherNode),
43
40
  candidates: diagnostics,
@@ -56,47 +53,79 @@ const discoverToolCandidates = async (tool, pathEntries, platform, configuredExt
56
53
  break;
57
54
  }
58
55
  }
59
- if (candidates.length >= MAX_CANDIDATES_PER_TOOL)
60
- break;
61
56
  }
62
57
  return candidates;
63
58
  };
64
59
  const probeCandidate = async (candidate, timeoutMs, effectivePath) => {
65
60
  const canonical = await canonicalPath(candidate.path);
66
61
  const result = await executeVersion(candidate.path, timeoutMs, effectivePath);
67
- return {
62
+ const identity = {
68
63
  tool: candidate.tool,
69
64
  lexical_path: candidate.path,
70
65
  canonical_path: canonical,
71
66
  path_index: candidate.pathIndex,
72
67
  selection: candidate.selection,
73
- version: result.ok ? result.version : null,
74
- healthy: result.ok,
75
- failure: result.ok ? null : result.failure,
76
68
  };
69
+ return result.ok
70
+ ? { ...identity, version: result.version, healthy: true, failure: null }
71
+ : {
72
+ ...identity,
73
+ version: null,
74
+ healthy: false,
75
+ failure: result.failure,
76
+ };
77
77
  };
78
78
  const executeVersion = (path, timeoutMs, effectivePath) => new Promise((resolve) => {
79
- const child = execFile(path, ["--version"], {
80
- encoding: "utf8",
81
- timeout: timeoutMs,
82
- maxBuffer: MAX_OUTPUT_BYTES,
79
+ const child = spawn(path, ["--version"], {
83
80
  windowsHide: true,
84
81
  env: environmentWithPath(effectivePath),
85
- }, (cause, stdout, stderr) => {
86
- if (cause === null) {
82
+ stdio: ["ignore", "pipe", "pipe"],
83
+ });
84
+ let stdout = "";
85
+ let stderr = "";
86
+ let spawnError;
87
+ let timeout;
88
+ let timedOut = false;
89
+ child.stdout?.setEncoding("utf8");
90
+ child.stderr?.setEncoding("utf8");
91
+ child.stdout?.on("data", (chunk) => {
92
+ stdout += chunk;
93
+ });
94
+ child.stderr?.on("data", (chunk) => {
95
+ stderr += chunk;
96
+ });
97
+ child.once("error", (cause) => {
98
+ spawnError = cause;
99
+ });
100
+ if (timeoutMs !== undefined && timeoutMs > 0) {
101
+ timeout = setTimeout(() => {
102
+ timedOut = true;
103
+ child.kill();
104
+ }, timeoutMs);
105
+ timeout.unref();
106
+ }
107
+ child.once("close", () => {
108
+ if (timeout !== undefined)
109
+ clearTimeout(timeout);
110
+ if (spawnError === undefined && child.exitCode === 0) {
87
111
  const version = firstNonemptyLine(stdout) ?? firstNonemptyLine(stderr);
88
- if (version !== undefined)
112
+ if (version !== undefined) {
89
113
  resolve({ ok: true, version });
90
- else
91
- resolve({
92
- ok: false,
93
- failure: failure("runtime_invalid_version_output", child, stderr),
94
- });
114
+ return;
115
+ }
116
+ resolve({
117
+ ok: false,
118
+ failure: failure("runtime_invalid_version_output", child, stderr),
119
+ });
95
120
  return;
96
121
  }
122
+ const cause = spawnError ??
123
+ new Error("Runtime version probe did not exit successfully");
97
124
  resolve({
98
125
  ok: false,
99
- failure: classifyProbeFailure(cause, child, stderr),
126
+ failure: timedOut
127
+ ? failure("runtime_timeout", child, stderr)
128
+ : classifyProbeFailure(cause, child, stderr),
100
129
  });
101
130
  });
102
131
  });
@@ -117,7 +146,7 @@ const failure = (code, child, stderr, dependency = null) => ({
117
146
  exit_code: child.exitCode,
118
147
  signal: child.signalCode,
119
148
  dependency,
120
- stderr: bounded(stderr.trim()),
149
+ stderr: stderr.trim(),
121
150
  });
122
151
  const missingDynamicLibrary = (stderr) => /(?:dyld(?:\[[^\]]+\])?: )?Library not loaded:\s*([^\r\n]+)/u
123
152
  .exec(stderr)?.[1]
@@ -143,9 +172,6 @@ const firstNonemptyLine = (value) => value
143
172
  .split(/\r?\n/u)
144
173
  .find((line) => line.trim().length > 0)
145
174
  ?.trim();
146
- const bounded = (value) => value.length <= MAX_DIAGNOSTIC_BYTES
147
- ? value
148
- : value.slice(-MAX_DIAGNOSTIC_BYTES);
149
175
  const unique = (values) => [...new Set(values)];
150
176
  const environmentWithPath = (path) => {
151
177
  const environment = {};
@@ -11,8 +11,8 @@ export class SessionProviderRouter {
11
11
  constructor(runtime) {
12
12
  this.runtime = runtime;
13
13
  }
14
- /** Preserve the existing provider/factory seam used by focused embedders. */
15
- static legacy(provider, options = {}) {
14
+ /** Create routing for an embedding backed by one fixed provider or factory. */
15
+ static single(provider, options = {}) {
16
16
  const identity = typeof provider === "function"
17
17
  ? { id: "unidentified", name: "Unidentified provider", version: null }
18
18
  : provider.identity();
@@ -13,8 +13,7 @@ import { discoverSetupActions } from "./SetupPlan.js";
13
13
  import { clientConfigurationAligned, configureJsonClient, configureTomlClient, inspectClientConfiguration, } from "./SetupClientConfiguration.js";
14
14
  export { configureJsonClient, configureTomlClient };
15
15
  import { setupInstallFailure, } from "./SetupInstallFailure.js";
16
- import { providerRegistrationEnvironment, registrationPermissionEnvironment, } from "./SetupRegistrationEnvironment.js";
17
- export { registrationPermissionEnvironment } from "./SetupRegistrationEnvironment.js";
16
+ import { providerRegistrationEnvironment } from "./SetupRegistrationEnvironment.js";
18
17
  export { canonicalSkillNeedsInstall, installCanonicalSkill };
19
18
  const registrationCommand = () => process.env.npm_command === "exec"
20
19
  ? PRODUCT_IDENTITY.mcpCommand.split(" ")
@@ -254,7 +253,6 @@ export const systemSetupHost = (doctorHost = systemDoctorHost()) => {
254
253
  const diagnosis = await runDoctor(undefined, doctorHost);
255
254
  return {
256
255
  ...providerRegistrationEnvironment(diagnosis.providerInspections ?? []),
257
- ...registrationPermissionEnvironment(process.env),
258
256
  ...(diagnosis.hopperPath === undefined
259
257
  ? {}
260
258
  : { HOPPER_LAUNCHER_PATH: diagnosis.hopperPath }),