rea-agents 3.1.0 → 3.2.1

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 (590) hide show
  1. package/README.md +72 -95
  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/AnalysisSnapshotCache.js +0 -1
  6. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  7. package/dist/application/AndroidApplicationService.js +1 -1
  8. package/dist/application/AppleApplicationService.js +1 -1
  9. package/dist/application/ArtifactExtraction.js +35 -54
  10. package/dist/application/ArtifactExtractionDestination.js +17 -0
  11. package/dist/application/ArtifactGraphConstruction.js +2 -17
  12. package/dist/application/ArtifactInventory/classify.js +2 -6
  13. package/dist/application/ArtifactInventory/hash.js +2 -20
  14. package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
  15. package/dist/application/ArtifactInventory/scanReader.js +69 -51
  16. package/dist/application/ArtifactInventory.js +6 -14
  17. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  18. package/dist/application/BinarySession.js +41 -13
  19. package/dist/application/BinarySessionComposition.js +0 -11
  20. package/dist/application/BinarySessionOpen.js +2 -1
  21. package/dist/application/BinarySessionRecords.js +5 -93
  22. package/dist/application/BinarySessionStatus.js +5 -16
  23. package/dist/application/BinaryTargetResolver.js +216 -0
  24. package/dist/application/BrowserEvidence.js +42 -58
  25. package/dist/application/BrowserObservationService.js +3 -6
  26. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  27. package/dist/application/BrowserScenarioEvidence.js +3 -3
  28. package/dist/application/CallPathTracing.js +2 -36
  29. package/dist/application/CapabilityInventory.js +10 -15
  30. package/dist/application/ClientConfigurationDocument.js +27 -0
  31. package/dist/application/ClientRegistrationStatus.js +16 -13
  32. package/dist/application/CommandShimReplay.js +14 -1
  33. package/dist/application/DirectAnalysis.js +22 -46
  34. package/dist/application/DirectAnalysisStatus.js +5 -61
  35. package/dist/application/Doctor.js +11 -32
  36. package/dist/application/DoctorDiagnostics.js +1 -2
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/ElectronActiveEvidence.js +3 -8
  39. package/dist/application/ElectronActiveObservationService.js +3 -6
  40. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  41. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  42. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  43. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  44. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  45. package/dist/application/ElectronEvidence.js +4 -7
  46. package/dist/application/ElectronObservationService.js +5 -9
  47. package/dist/application/EnhancedLiteralTracing.js +42 -65
  48. package/dist/application/EnhancedTools.js +76 -44
  49. package/dist/application/EvidenceBundleCommands.js +11 -11
  50. package/dist/application/EvidenceBundleFiles.js +9 -15
  51. package/dist/application/EvidenceLedger.js +6 -41
  52. package/dist/application/FilesystemSnapshot.js +2 -3
  53. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  54. package/dist/application/InventoryProjectionEvidence.js +4 -2
  55. package/dist/application/InvestigationProviders.js +1 -1
  56. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  57. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  58. package/dist/application/JavaScriptApplicationService.js +6 -29
  59. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  60. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  61. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  62. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  63. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  64. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  65. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  66. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  67. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  68. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  69. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  70. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  71. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  72. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  73. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  74. package/dist/application/JavaScriptJsonModules.js +2 -2
  75. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  76. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  77. package/dist/application/JavaScriptReplayService.js +6 -32
  78. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  79. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  80. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  81. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  82. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  83. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  84. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  85. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  86. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  87. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  88. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  89. package/dist/application/JsonFiles.js +79 -0
  90. package/dist/application/LinuxHopper.js +11 -9
  91. package/dist/application/LoopbackReplay.js +26 -23
  92. package/dist/application/LoopbackReplayRecorder.js +29 -1
  93. package/dist/application/ManagedApplicationGraphService.js +1 -2
  94. package/dist/application/ManagedMemberComparisonService.js +11 -41
  95. package/dist/application/ManagedNativeVerificationService.js +1 -2
  96. package/dist/application/ManagedReconstructionService.js +1 -1
  97. package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
  98. package/dist/application/NativeApiInspection.js +2 -7
  99. package/dist/application/NativeUiActionTrace.js +394 -0
  100. package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
  101. package/dist/application/PermissionAuthority.js +15 -7
  102. package/dist/application/PermissionFailure.js +5 -0
  103. package/dist/application/ProcessCaptureAuthority.js +5 -7
  104. package/dist/application/ProcessCaptureJournal.js +3 -2
  105. package/dist/application/ProcessCaptureLifecycle.js +5 -12
  106. package/dist/application/ProcessCheckpoints.js +29 -11
  107. package/dist/application/ProcessCli.js +6 -16
  108. package/dist/application/ProcessEvidence.js +5 -7
  109. package/dist/application/ProcessHarness.js +52 -17
  110. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  111. package/dist/application/ProcessReactiveEffects.js +9 -3
  112. package/dist/application/ProcessReactiveHarness.js +13 -7
  113. package/dist/application/ProcessSampling.js +2 -4
  114. package/dist/application/ProcessTimer.js +39 -0
  115. package/dist/application/ProjectPermissionStore.js +39 -96
  116. package/dist/application/RealHopperAssertions.js +20 -66
  117. package/dist/application/ReconstructionCoverageService.js +12 -58
  118. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  119. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  120. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  121. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  122. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  123. package/dist/application/ReferenceSourceImport.js +19 -45
  124. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  125. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  126. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  127. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  128. package/dist/application/SessionProviderRouter.js +2 -2
  129. package/dist/application/Setup.js +1 -3
  130. package/dist/application/SetupClientConfiguration.js +22 -93
  131. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  132. package/dist/application/StoreFileLock.js +119 -0
  133. package/dist/application/TerminalRenderer.js +2 -3
  134. package/dist/application/Uninstall.js +9 -14
  135. package/dist/application/UnknownEvidence.js +1 -1
  136. package/dist/artifacts/ArtifactPaths.js +2 -5
  137. package/dist/artifacts/ArtifactProvider.js +36 -58
  138. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  139. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  140. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  141. package/dist/artifacts/NibArchive.js +269 -0
  142. package/dist/artifacts/SafeOutputTree.js +15 -24
  143. package/dist/browser/BrowserProcessStartup.js +1 -2
  144. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  145. package/dist/browser/CdpBrowserProvider.js +3 -13
  146. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  147. package/dist/browser/CdpCaptureDocuments.js +28 -76
  148. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  149. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  150. package/dist/browser/CdpCaptureEvents.js +2 -8
  151. package/dist/browser/CdpCaptureStorage.js +9 -20
  152. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
  153. package/dist/browser/CdpCaptureValues.js +21 -21
  154. package/dist/browser/CdpConnection.js +10 -25
  155. package/dist/browser/CdpElectronInspection.js +26 -50
  156. package/dist/browser/CdpElectronProvider.js +10 -35
  157. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  158. package/dist/browser/CdpElectronScripts.js +6 -35
  159. package/dist/browser/CdpElectronWorkers.js +6 -10
  160. package/dist/browser/CdpEndpoint.js +25 -41
  161. package/dist/browser/CdpObservationSession.js +14 -26
  162. package/dist/browser/CdpPageCapture.js +34 -48
  163. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  164. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  165. package/dist/browser/CdpSafeMetadata.js +19 -22
  166. package/dist/browser/CdpScreenshot.js +3 -5
  167. package/dist/browser/CdpTargetSession.js +1 -2
  168. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  169. package/dist/browser/ElectronFileScope.js +8 -19
  170. package/dist/browser/JavaScriptRuntimeScope.js +9 -14
  171. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  172. package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
  174. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  175. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  176. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  177. package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
  178. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  179. package/dist/browser/PlaywrightScenarioSession.js +14 -30
  180. package/dist/browser/PngVisualDiff.js +22 -14
  181. package/dist/browser/SensitiveTextCapture.js +0 -17
  182. package/dist/browser/V8InspectorCaptureProjection.js +7 -8
  183. package/dist/browser/V8InspectorEndpoint.js +12 -14
  184. package/dist/browser/V8InspectorProvider.js +20 -61
  185. package/dist/browser/WebSourceMapFetcher.js +56 -176
  186. package/dist/catalogIdentity.js +0 -54
  187. package/dist/cli/artifactCommands.js +49 -77
  188. package/dist/cli/coreAnalysisCommands.js +83 -133
  189. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  190. package/dist/cli/managedCommands.js +5 -270
  191. package/dist/cli/setupCommands.js +3 -12
  192. package/dist/cli/utilityCommands.js +7 -41
  193. package/dist/cli.js +0 -2
  194. package/dist/cliApplicationCommands.js +42 -112
  195. package/dist/cliBrowserAdvancedCommands.js +10 -106
  196. package/dist/cliBrowserCommands.js +15 -127
  197. package/dist/cliBrowserContext.js +30 -0
  198. package/dist/cliCommandNames.js +4 -5
  199. package/dist/cliElectronCommands.js +8 -72
  200. package/dist/cliEvidenceCommands.js +8 -77
  201. package/dist/cliJavaScriptRuntimeCommands.js +9 -91
  202. package/dist/cliJsonInput.js +4 -14
  203. package/dist/cliObservationOptions.js +11 -96
  204. package/dist/cliPolicyCommands.js +2 -17
  205. package/dist/cliProcessCommands.js +3 -3
  206. package/dist/cliSetup.js +0 -13
  207. package/dist/config/browserScenario.js +2 -2
  208. package/dist/config/environment.js +0 -9
  209. package/dist/config/parseConfig.js +1 -33
  210. package/dist/config/parsers.js +6 -27
  211. package/dist/config/passiveObservation.js +7 -77
  212. package/dist/config/permissions.js +0 -7
  213. package/dist/contracts/analysisSearchContract.js +2 -5
  214. package/dist/contracts/applicationToolContracts.js +56 -109
  215. package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
  216. package/dist/contracts/artifactComparisonExample.js +58 -60
  217. package/dist/contracts/artifactToolContracts.js +20 -67
  218. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  219. package/dist/contracts/browserToolContracts.js +8 -73
  220. package/dist/contracts/electronToolContracts.js +8 -108
  221. package/dist/contracts/enhancedInputs.js +23 -54
  222. package/dist/contracts/errorSchemas.js +0 -1
  223. package/dist/contracts/functionComparisonExample.js +10 -24
  224. package/dist/contracts/functionInstructionContract.js +1 -3
  225. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  226. package/dist/contracts/hopperMemoryContracts.js +3 -3
  227. package/dist/contracts/investigationExamples.js +14 -11
  228. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  229. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  230. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  231. package/dist/contracts/managedToolContracts.js +6 -95
  232. package/dist/contracts/managedWorkflowExamples.js +77 -128
  233. package/dist/contracts/managedWorkflowToolContracts.js +51 -77
  234. package/dist/contracts/nativeToolContracts.js +7 -11
  235. package/dist/contracts/processCaptureExample.js +2 -69
  236. package/dist/contracts/promptContracts.js +49 -67
  237. package/dist/contracts/providerSelection.js +0 -1
  238. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  239. package/dist/contracts/sessionStatusContract.js +1 -17
  240. package/dist/contracts/sessionToolSchemas.js +6 -15
  241. package/dist/contracts/toolContractExamples.js +11 -11
  242. package/dist/contracts/toolContractHelpers.js +0 -4
  243. package/dist/contracts/toolContracts.js +60 -71
  244. package/dist/contracts/toolEffects.js +5 -13
  245. package/dist/contracts/toolOutputSchemaGroups.js +37 -91
  246. package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
  247. package/dist/contracts/toolSchemaMetadata.js +8 -19
  248. package/dist/contracts/unknownContractExamples.js +0 -2
  249. package/dist/domain/analysisErrorPresentation.js +46 -54
  250. package/dist/domain/analysisErrorProjection.js +28 -37
  251. package/dist/domain/analysisProfile.js +3 -31
  252. package/dist/domain/analysisSnapshot.js +3 -12
  253. package/dist/domain/androidApplication.js +15 -54
  254. package/dist/domain/appleApplication.js +24 -67
  255. package/dist/domain/artifactComparison.js +11 -29
  256. package/dist/domain/artifactGraph.js +14 -44
  257. package/dist/domain/artifactInspection.js +38 -69
  258. package/dist/domain/artifactInventoryEvidence.js +27 -21
  259. package/dist/domain/binaryTarget.js +2 -221
  260. package/dist/domain/browserCaptureComparison.js +47 -24
  261. package/dist/domain/browserObservation.js +28 -193
  262. package/dist/domain/browserObservationSchemas.js +5 -23
  263. package/dist/domain/browserScenario.js +11 -14
  264. package/dist/domain/browserScenarioCapture.js +11 -12
  265. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  266. package/dist/domain/browserScenarioDiff.js +2 -59
  267. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  268. package/dist/domain/browserScenarioDiffValues.js +21 -38
  269. package/dist/domain/browserScenarioValues.js +80 -109
  270. package/dist/domain/browserSession.js +4 -7
  271. package/dist/domain/bundleComparison.js +6 -32
  272. package/dist/domain/bytecodeProvider.js +20 -19
  273. package/dist/domain/callPath.js +47 -167
  274. package/dist/domain/callPathSchemas.js +79 -0
  275. package/dist/domain/changedBehavior.js +34 -60
  276. package/dist/domain/completionLedgerGeneration.js +8 -14
  277. package/dist/domain/conformancePackage.js +126 -97
  278. package/dist/domain/conformanceReplay.js +36 -8
  279. package/dist/domain/conformanceTrustGate.js +23 -14
  280. package/dist/domain/customProtocolCapture.js +1 -1
  281. package/dist/domain/electronActiveObservation.js +70 -103
  282. package/dist/domain/electronObservation.js +14 -80
  283. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  284. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  285. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  286. package/dist/domain/electronStaticAnalysisValues.js +10 -17
  287. package/dist/domain/errors.js +33 -54
  288. package/dist/domain/eventProcessTree.js +20 -12
  289. package/dist/domain/evidence.js +2 -10
  290. package/dist/domain/evidenceBundle.js +3 -5
  291. package/dist/domain/evidenceCompletionLedger.js +6 -8
  292. package/dist/domain/functionComparison.js +4 -14
  293. package/dist/domain/functionComparisonNormalization.js +4 -11
  294. package/dist/domain/functionComparisonResults.js +25 -15
  295. package/dist/domain/functionComparisonSchemas.js +49 -33
  296. package/dist/domain/functionDossierEvidence.js +31 -156
  297. package/dist/domain/hopperStartupFailure.js +1 -1
  298. package/dist/domain/hopperValues.js +15 -136
  299. package/dist/domain/interfaceBuilderGraph.js +654 -0
  300. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  301. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  302. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  303. package/dist/domain/javascriptApplicationGraph.js +3 -13
  304. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  305. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  306. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  307. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  308. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  309. package/dist/domain/javascriptAstFingerprint.js +25 -58
  310. package/dist/domain/javascriptAstValues.js +9 -0
  311. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  312. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  313. package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
  314. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  315. package/dist/domain/javascriptFeatureSeed.js +20 -12
  316. package/dist/domain/javascriptFeatureTrace.js +13 -67
  317. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  318. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  319. package/dist/domain/javascriptNativeHandoff.js +1 -1
  320. package/dist/domain/javascriptReplay.js +24 -41
  321. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  322. package/dist/domain/javascriptRuntimeObservation.js +42 -103
  323. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  324. package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
  325. package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
  326. package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
  327. package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
  328. package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
  329. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  330. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
  331. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  332. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  333. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  334. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  335. package/dist/domain/javascriptSemanticCalls.js +5 -32
  336. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  337. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  338. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  339. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  340. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  341. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  342. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  343. package/dist/domain/javascriptSemanticIr.js +1 -29
  344. package/dist/domain/javascriptSemanticObjects.js +1 -5
  345. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  346. package/dist/domain/javascriptSemanticProjection.js +0 -18
  347. package/dist/domain/javascriptSemanticPromises.js +9 -16
  348. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  349. package/dist/domain/javascriptSemanticQuery.js +17 -139
  350. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  351. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  352. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  353. package/dist/domain/javascriptSemanticResources.js +1 -6
  354. package/dist/domain/javascriptSemanticReturns.js +10 -27
  355. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  356. package/dist/domain/javascriptSemanticValues.js +44 -62
  357. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  358. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  359. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  360. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  361. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  362. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  363. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  364. package/dist/domain/jsonShape.js +7 -33
  365. package/dist/domain/localPath.js +7 -0
  366. package/dist/domain/managedApplicationGraph.js +9 -41
  367. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  368. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  369. package/dist/domain/managedArtifact.js +14 -27
  370. package/dist/domain/managedMemberComparison.js +90 -92
  371. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  372. package/dist/domain/managedMemberComparisonItems.js +221 -0
  373. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  374. package/dist/domain/managedNativeVerification.js +3 -6
  375. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  376. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  377. package/dist/domain/managedReconstruction.js +19 -23
  378. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  379. package/dist/domain/nativeApiBoundary.js +2 -7
  380. package/dist/domain/nativeInspection.js +0 -2
  381. package/dist/domain/nativeInvestigationGraph.js +351 -0
  382. package/dist/domain/nativeValueFlow.js +61 -0
  383. package/dist/domain/nodeRuntimeCharacterization.js +1 -5
  384. package/dist/domain/objcSwiftMetadata.js +254 -0
  385. package/dist/domain/peInspection.js +1 -1
  386. package/dist/domain/permissionPolicy.js +13 -0
  387. package/dist/domain/processCapture.js +76 -113
  388. package/dist/domain/processCaptureExample.js +68 -0
  389. package/dist/domain/processCaptureParsing.js +21 -0
  390. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  391. package/dist/domain/processCaptureValidation.js +1 -7
  392. package/dist/domain/processComparison.js +3 -12
  393. package/dist/domain/processReactiveMatching.js +29 -50
  394. package/dist/domain/processReactiveRuntime.js +4 -8
  395. package/dist/domain/processReactiveScenario.js +28 -94
  396. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  397. package/dist/domain/processReactiveTransition.js +33 -18
  398. package/dist/domain/processScenario.js +56 -90
  399. package/dist/domain/processTraceComparison.js +0 -8
  400. package/dist/domain/processTraceEvaluation.js +14 -4
  401. package/dist/domain/processTraceSpecification.js +11 -17
  402. package/dist/domain/protocolCapture.js +3 -3
  403. package/dist/domain/reconstructionCoverage.js +62 -129
  404. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  405. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  406. package/dist/domain/reconstructionReadiness.js +1 -2
  407. package/dist/domain/reconstructionReadinessSchemas.js +36 -38
  408. package/dist/domain/reconstructionUnknowns.js +3 -3
  409. package/dist/domain/reconstructionVerification.js +13 -47
  410. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  411. package/dist/domain/referenceSourceGraph.js +53 -61
  412. package/dist/domain/referenceSourceImportParsing.js +1 -5
  413. package/dist/domain/replayMachine.js +19 -31
  414. package/dist/domain/replayMachineRun.js +15 -63
  415. package/dist/domain/replayMachineRuntime.js +41 -41
  416. package/dist/domain/replayMachineValues.js +84 -0
  417. package/dist/domain/residualUnknown.js +25 -30
  418. package/dist/domain/runtimeCharacterization.js +15 -16
  419. package/dist/domain/runtimeIdentification.js +48 -47
  420. package/dist/domain/sourceToBundleComparison.js +9 -85
  421. package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
  422. package/dist/domain/sourceToBundleSignals.js +4 -15
  423. package/dist/domain/staticRuntimeCorrelation.js +37 -49
  424. package/dist/domain/symbolAnalysis.js +10 -19
  425. package/dist/domain/unicodeCodePointOrder.js +12 -0
  426. package/dist/domain/webBundleAnalysis.js +70 -99
  427. package/dist/domain/webBundleAnalyzer.js +2 -4
  428. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  429. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  430. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  431. package/dist/domain/webCaptureDiff.js +33 -73
  432. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  433. package/dist/domain/webContentArtifact.js +1 -10
  434. package/dist/domain/webMcpDiscovery.js +3 -14
  435. package/dist/domain/webScreenshot.js +58 -34
  436. package/dist/domain/zipPackageFormat.js +7 -0
  437. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  438. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  439. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  440. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  441. package/dist/dotnet/ManagedMemberRows.js +16 -16
  442. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  443. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  444. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  445. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  446. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  447. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  448. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
  449. package/dist/dotnet/ManagedPeReader.js +2 -2
  450. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  451. package/dist/generatedMcpToolCatalog.js +1 -1
  452. package/dist/generatedPackageMetadata.js +1 -1
  453. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  454. package/dist/ghidra/GhidraClient.js +4 -12
  455. package/dist/ghidra/GhidraClientWire.js +9 -5
  456. package/dist/ghidra/GhidraDefaults.js +0 -18
  457. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  458. package/dist/ghidra/GhidraDoctor.js +16 -12
  459. package/dist/ghidra/GhidraFunctionValues.js +65 -108
  460. package/dist/ghidra/GhidraInstallation.js +98 -42
  461. package/dist/ghidra/GhidraInventoryValues.js +16 -85
  462. package/dist/ghidra/GhidraLauncher.js +0 -8
  463. package/dist/ghidra/GhidraProvider.js +15 -22
  464. package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
  465. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  466. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  467. package/dist/ghidra/GhidraSessionValues.js +0 -2
  468. package/dist/ghidra/GhidraTransport.js +4 -7
  469. package/dist/ghidra/protocol.js +2 -2
  470. package/dist/hopper/BridgeLauncher.js +112 -36
  471. package/dist/hopper/HopperAnalysisProfile.js +1 -1
  472. package/dist/hopper/HopperCleanup.js +6 -3
  473. package/dist/hopper/HopperClient.js +4 -7
  474. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  475. package/dist/hopper/HopperProvider.js +0 -16
  476. package/dist/hopper/HopperRequestQueue.js +21 -40
  477. package/dist/hopper/HopperResponseStream.js +1 -9
  478. package/dist/hopper/HopperSessionValues.js +3 -2
  479. package/dist/hopper/HopperTargetLease.js +119 -0
  480. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  481. package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
  482. package/dist/hopper/protocol.js +6 -4
  483. package/dist/main/reload.js +0 -3
  484. package/dist/main/shutdown.js +1 -1
  485. package/dist/main/state.js +0 -9
  486. package/dist/main/transport.js +0 -5
  487. package/dist/mcpDoctor.js +25 -45
  488. package/dist/native/CommandRunner.js +18 -25
  489. package/dist/native/NativeMacOSProvider.js +13 -38
  490. package/dist/native/NativeMachoInspection.js +1 -1
  491. package/dist/process/BoundedFileBytes.js +17 -0
  492. package/dist/process/ExecFileOutput.js +11 -0
  493. package/dist/process/PendingOperations.js +8 -6
  494. package/dist/process/ProcessOwnership.js +3 -2
  495. package/dist/process/ProcessOwnershipObservation.js +0 -1
  496. package/dist/process/ProviderProcess.js +7 -28
  497. package/dist/reference/ReferenceSourceReader.js +8 -24
  498. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  499. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  500. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  501. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  502. package/dist/replay/JavaScriptReplayWorker.js +3 -5
  503. package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
  504. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  505. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  506. package/dist/replay/ReplayOutcome.js +1 -3
  507. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  508. package/dist/replay/ReplaySeccompFile.js +29 -0
  509. package/dist/replay/ReplayWorkerProtocol.js +0 -2
  510. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  511. package/dist/server/ProcessCaptureElicitation.js +4 -8
  512. package/dist/server/createServer.js +6 -44
  513. package/dist/server/promptCompletion.js +37 -61
  514. package/dist/server/recordDerivedEvidence.js +1 -1
  515. package/dist/server/registerApplicationTools/characterization.js +4 -8
  516. package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
  517. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
  518. package/dist/server/registerApplicationTools/compareVersions.js +5 -10
  519. package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
  520. package/dist/server/registerApplicationTools/coverage.js +6 -71
  521. package/dist/server/registerApplicationTools/helpers.js +1 -13
  522. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  523. package/dist/server/registerApplicationTools/traceFeature.js +5 -9
  524. package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
  525. package/dist/server/registerApplicationTools.js +0 -2
  526. package/dist/server/registerArtifactComparisonTool.js +23 -27
  527. package/dist/server/registerBrowserScenarioTool.js +4 -4
  528. package/dist/server/registerBrowserTools.js +5 -8
  529. package/dist/server/registerBundleComparisonTool.js +5 -7
  530. package/dist/server/registerCloseLifecycleTool.js +2 -16
  531. package/dist/server/registerElectronTools.js +10 -29
  532. package/dist/server/registerEnhancedTools.js +10 -11
  533. package/dist/server/registerEvidenceTools.js +15 -22
  534. package/dist/server/registerFunctionComparisonTool.js +30 -25
  535. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  536. package/dist/server/registerInvestigationTools.js +20 -116
  537. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
  538. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
  539. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  540. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
  541. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
  542. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
  543. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
  544. package/dist/server/registerOfficialTools.js +1 -43
  545. package/dist/server/registerProcessComparisonTool.js +33 -23
  546. package/dist/server/registerPrompts.js +19 -17
  547. package/dist/server/registerSessionRecordTools.js +10 -156
  548. package/dist/server/registerSessionStatusTool.js +6 -69
  549. package/dist/server/registerSessionTools.js +10 -51
  550. package/dist/server/sessionAvailabilityPolicy.js +0 -2
  551. package/dist/server/sessionEvidence.js +9 -15
  552. package/dist/server/sessionToolPolicies.js +0 -8
  553. package/dist/server/toolResult.js +14 -50
  554. package/dist/serverIdentity.js +0 -20
  555. package/install.sh +1 -1
  556. package/package.json +11 -7
  557. package/scripts/electron-active-hook.cjs +23 -55
  558. package/scripts/hopper-demo-x11.py +13 -32
  559. package/skills/reverse-engineer-anything/SKILL.md +47 -12
  560. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  561. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  562. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  563. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
  564. package/dist/application/BoundedJsonFiles.js +0 -86
  565. package/dist/application/CrossVersionInventory.js +0 -129
  566. package/dist/application/CrossVersionInvestigation.js +0 -301
  567. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  568. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  569. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  570. package/dist/application/DeferredFileAuthorization.js +0 -61
  571. package/dist/application/DoctorProjection.js +0 -43
  572. package/dist/application/EnhancedToolPagination.js +0 -22
  573. package/dist/application/EvidenceReferenceResolver.js +0 -26
  574. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  575. package/dist/application/ProcessPairedExperiment.js +0 -72
  576. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  577. package/dist/application/ReconstructionReadinessService.js +0 -48
  578. package/dist/cliInvestigationCommands.js +0 -173
  579. package/dist/domain/boundedCartesianProjection.js +0 -15
  580. package/dist/domain/investigationWorkspace.js +0 -347
  581. package/dist/domain/jsonLimits.js +0 -26
  582. package/dist/domain/knownPageCoverage.js +0 -29
  583. package/dist/domain/processPairedExperiment.js +0 -128
  584. package/dist/server/javascriptApplicationResult.js +0 -106
  585. package/dist/server/permissionFailure.js +0 -12
  586. package/dist/server/registerApplicationTools/readiness.js +0 -50
  587. package/dist/server/registerEvidenceResources.js +0 -315
  588. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  589. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  590. package/dist/server/registerReconstructionReadinessResource.js +0 -32
@@ -1,28 +1,14 @@
1
1
  import { z } from "zod";
2
2
  const addressSchema = z.string().regex(/^0x[0-9a-f]+$/iu);
3
3
  const identitySchema = z.object({ address: addressSchema, name: z.string() });
4
- const collectionSchema = z.object({
5
- items: z.array(z.unknown()),
6
- total: z.number().int().min(0).nullable(),
7
- returned: z.number().int().min(0),
8
- truncated: z.boolean(),
9
- next_offset: z.number().int().min(0).nullable(),
10
- });
11
- /** Extract a real address from the provider's exact procedure page. */
4
+ /** Extract one real procedure address from the complete inline inventory. */
12
5
  export const firstProcedureAddress = (input) => {
13
- const page = z
14
- .object({
15
- items: z.array(z.object({ address: addressSchema })).min(1),
16
- offset: z.number().int().min(0),
17
- limit: z.number().int().min(1),
18
- total: z.number().int().min(1),
19
- next_offset: z.number().int().min(0).nullable(),
20
- has_more: z.boolean(),
21
- })
22
- .parse(input);
23
- const first = page.items[0];
6
+ const first = z
7
+ .array(z.object({ address: addressSchema }))
8
+ .min(1)
9
+ .parse(input)[0];
24
10
  if (first === undefined)
25
- throw new TypeError("Procedure page was empty");
11
+ throw new TypeError("Procedure inventory was empty");
26
12
  return first.address;
27
13
  };
28
14
  /** Reject two target paths that resolve to the same binary content. */
@@ -44,7 +30,7 @@ export const requirePseudocode = (input, operation) => {
44
30
  throw new TypeError(`${operation} returned an embedded failure: ${input}`);
45
31
  return input;
46
32
  };
47
- /** Validate an exact bounded Hopper function dossier semantically. */
33
+ /** Validate a complete Hopper function dossier semantically. */
48
34
  export const requireFunctionDossier = (input, expectedAddress) => {
49
35
  const value = objectValue(input, "analyze_function returned no function dossier");
50
36
  const procedure = identitySchema.parse(value.procedure);
@@ -52,22 +38,19 @@ export const requireFunctionDossier = (input, expectedAddress) => {
52
38
  throw new TypeError("analyze_function returned the wrong procedure");
53
39
  if (procedure.name.trim().length === 0)
54
40
  throw new TypeError("analyze_function omitted the procedure name");
55
- validatePseudocodeBounds(value.pseudocode);
41
+ requirePseudocode(value.pseudocode, "analyze_function");
56
42
  for (const field of COLLECTION_FIELDS)
57
- validateCollection(value[field], field);
43
+ list(value, field);
58
44
  for (const field of ["callers", "callees"])
59
- z.array(identitySchema).parse(collectionSchema.parse(value[field]).items);
60
- validateBlocks(collectionSchema.parse(value.basic_blocks).items);
61
- validateInstructionScan(value.instruction_scan);
45
+ z.array(identitySchema).parse(list(value, field));
46
+ validateBlocks(list(value, "basic_blocks"));
62
47
  return value;
63
48
  };
64
49
  /** Reject a structurally valid dossier that omits fixture-proven semantics. */
65
50
  export const requireFunctionDossierOracle = (input, oracle) => {
66
51
  const value = requireFunctionDossier(input, oracle.procedure_address);
67
52
  if (oracle.callee_address !== undefined) {
68
- const callees = z
69
- .array(identitySchema)
70
- .parse(collectionSchema.parse(value.callees).items);
53
+ const callees = z.array(identitySchema).parse(list(value, "callees"));
71
54
  if (!callees.some(({ address }) => address === oracle.callee_address))
72
55
  throw new TypeError("analyze_function omitted the expected fixture callee");
73
56
  const references = z
@@ -75,14 +58,12 @@ export const requireFunctionDossierOracle = (input, oracle) => {
75
58
  source_address: addressSchema,
76
59
  target_address: addressSchema,
77
60
  }))
78
- .parse(collectionSchema.parse(value.outgoing_references).items);
61
+ .parse(list(value, "outgoing_references"));
79
62
  if (!references.some(({ target_address }) => target_address === oracle.callee_address))
80
63
  throw new TypeError("analyze_function omitted the expected fixture reference");
81
64
  }
82
65
  if (oracle.caller_address !== undefined) {
83
- const callers = z
84
- .array(identitySchema)
85
- .parse(collectionSchema.parse(value.callers).items);
66
+ const callers = z.array(identitySchema).parse(list(value, "callers"));
86
67
  if (!callers.some(({ address }) => address === oracle.caller_address))
87
68
  throw new TypeError("analyze_function omitted the expected fixture caller");
88
69
  }
@@ -97,19 +78,18 @@ export const requireFunctionDossierOracle = (input, oracle) => {
97
78
  kind: z.enum(["comment", "inline"]),
98
79
  text: z.string(),
99
80
  }))
100
- .parse(collectionSchema.parse(value.comments).items);
81
+ .parse(list(value, "comments"));
101
82
  if (!comments.some(({ address, kind, text }) => address === oracle.procedure_address &&
102
83
  kind === "comment" &&
103
84
  text === oracle.comment))
104
85
  throw new TypeError("analyze_function omitted the verifier comment");
105
86
  }
106
- if (oracle.require_assembly === true &&
107
- collectionSchema.parse(value.assembly).items.length === 0)
87
+ if (oracle.require_assembly === true && list(value, "assembly").length === 0)
108
88
  throw new TypeError("analyze_function omitted fixture assembly");
109
89
  if (oracle.require_cfg_successor) {
110
90
  const blocks = z
111
91
  .array(z.object({ successors: z.array(addressSchema) }))
112
- .parse(collectionSchema.parse(value.basic_blocks).items);
92
+ .parse(list(value, "basic_blocks"));
113
93
  if (!blocks.some(({ successors }) => successors.length > 0))
114
94
  throw new TypeError("analyze_function omitted a real CFG successor");
115
95
  }
@@ -125,12 +105,10 @@ const referenceEdgeSchema = z.object({
125
105
  target_address: addressSchema,
126
106
  });
127
107
  const requireReferencedValue = (dossier, field, expected, normalize) => {
128
- const values = z
129
- .array(referencedValueSchema)
130
- .parse(collectionSchema.parse(dossier[field]).items);
108
+ const values = z.array(referencedValueSchema).parse(list(dossier, field));
131
109
  const references = z
132
110
  .array(referenceEdgeSchema)
133
- .parse(collectionSchema.parse(dossier.outgoing_references).items);
111
+ .parse(list(dossier, "outgoing_references"));
134
112
  const found = values.some(({ address, value, source_address: sourceAddress }) => normalize(value) === expected &&
135
113
  references.some(({ source_address, target_address }) => source_address === sourceAddress && target_address === address));
136
114
  if (!found)
@@ -154,36 +132,12 @@ const COLLECTION_FIELDS = [
154
132
  "referenced_names",
155
133
  "basic_blocks",
156
134
  ];
157
- const validatePseudocodeBounds = (input) => {
158
- const pseudocode = z
159
- .object({
160
- text: z.string(),
161
- returned_chars: z.number().int().min(0),
162
- total_chars: z.number().int().min(0),
163
- })
164
- .parse(input);
165
- const text = requirePseudocode(pseudocode.text, "analyze_function");
166
- if (pseudocode.returned_chars !== [...text].length ||
167
- pseudocode.total_chars < pseudocode.returned_chars)
168
- throw new TypeError("analyze_function returned inconsistent pseudocode bounds");
169
- };
170
- const validateCollection = (input, field) => {
171
- const collection = collectionSchema.parse(input);
172
- if (collection.returned !== collection.items.length)
173
- throw new TypeError(`analyze_function returned an invalid ${field} result`);
174
- };
135
+ const list = (value, field) => z.array(z.unknown()).parse(value[field]);
175
136
  const validateBlocks = (items) => {
176
137
  for (const block of items)
177
138
  if (!Array.isArray(objectValue(block, "Invalid basic block").successors))
178
139
  throw new TypeError("analyze_function omitted CFG successor evidence");
179
140
  };
180
- const validateInstructionScan = (input) => {
181
- const scan = z
182
- .object({ scanned: z.number().int().min(0), truncated: z.boolean() })
183
- .parse(input);
184
- if (scan.scanned === 0 && !scan.truncated)
185
- throw new TypeError("analyze_function omitted instruction scan limitations");
186
- };
187
141
  const objectValue = (input, message) => {
188
142
  const parsed = z.record(z.string(), z.unknown()).safeParse(input);
189
143
  if (!parsed.success)
@@ -1,69 +1,23 @@
1
1
  import { z } from "zod";
2
- import { AnalysisCancelledError, AnalysisInputError, } from "../domain/errors.js";
2
+ import { AnalysisInputError } from "../domain/errors.js";
3
+ import { evaluateReconstructionClosure, reconstructionCoverageDataSchema, } from "../domain/reconstructionCoverage.js";
3
4
  import { jsonValueSchema } from "../domain/jsonValue.js";
4
- import { evaluateReconstructionClosure, reconstructionCoverageWorkspaceSchema, } from "../domain/reconstructionCoverage.js";
5
5
  import { err, ok } from "../domain/result.js";
6
- import { readReconstructionCoverageWorkspace, writeReconstructionCoverageWorkspace, } from "./ReconstructionCoverageWorkspaceStore.js";
7
- const COMMIT_OPERATION = "commit_reconstruction_coverage";
8
- const QUERY_OPERATION = "query_reconstruction_coverage";
9
- const isAborted = (signal) => signal?.aborted === true;
10
- export const reconstructionCoverageCommitInputSchema = z.strictObject({
11
- approved: z.literal(true),
12
- workspace_path: z.string().min(1).max(4_096),
13
- expected_revision: z.number().int().min(1).nullable(),
14
- workspace: reconstructionCoverageWorkspaceSchema,
6
+ export const reconstructionCoverageEvaluationInputSchema = z.strictObject({
7
+ coverage: reconstructionCoverageDataSchema,
8
+ boundary_id: z.string().min(1),
15
9
  });
16
- export const reconstructionCoverageQueryInputSchema = z.strictObject({
17
- workspace_path: z.string().min(1).max(4_096),
18
- boundary_id: z.string().min(1).max(200),
19
- });
20
- export const reconstructionCoverageCommitOutputSchema = z.strictObject({
21
- workspace_path: z.string(),
22
- bytes: z.number().int().min(0),
23
- workspace_id: z.string().regex(/^rcw_[a-f0-9]{64}$/u),
24
- revision: z.number().int().min(1),
25
- revision_sha256: z.string().regex(/^[a-f0-9]{64}$/u),
26
- evidence_records: z.number().int().min(0),
27
- });
28
- /** Commit one caller-approved canonical reconstruction coverage CAS revision. */
29
- export const commitReconstructionCoverage = async (rawInput, policy, options = {}) => {
30
- const parsed = reconstructionCoverageCommitInputSchema.safeParse(rawInput);
31
- if (!parsed.success)
32
- return err(new AnalysisInputError(COMMIT_OPERATION, { cause: parsed.error }));
33
- if (isAborted(options.signal))
34
- return err(new AnalysisCancelledError(COMMIT_OPERATION));
35
- const written = await writeReconstructionCoverageWorkspace(parsed.data.workspace, parsed.data.workspace_path, parsed.data.expected_revision, policy);
36
- if (!written.ok)
37
- return written;
38
- return ok(jsonValueSchema.parse({
39
- workspace_path: written.value.path,
40
- bytes: written.value.bytes,
41
- workspace_id: parsed.data.workspace.workspace_id,
42
- revision: parsed.data.workspace.revision,
43
- revision_sha256: parsed.data.workspace.revision_sha256,
44
- evidence_records: parsed.data.workspace.evidence_bundle.records.length,
45
- }));
46
- };
47
- /** Read one coverage revision and evaluate a named fail-closed boundary. */
48
- export const queryReconstructionCoverage = async (rawInput, policy, nowEpochMs, options = {}) => {
49
- const parsed = reconstructionCoverageQueryInputSchema.safeParse(rawInput);
10
+ /** Evaluate inline reconstruction coverage against a named boundary. */
11
+ export const evaluateReconstructionCoverage = (rawInput, nowEpochMs = Date.now()) => {
12
+ const parsed = reconstructionCoverageEvaluationInputSchema.safeParse(rawInput);
50
13
  if (!parsed.success)
51
- return err(new AnalysisInputError(QUERY_OPERATION, { cause: parsed.error }));
52
- if (isAborted(options.signal))
53
- return err(new AnalysisCancelledError(QUERY_OPERATION));
54
- const loaded = await readReconstructionCoverageWorkspace(parsed.data.workspace_path, policy);
55
- if (!loaded.ok)
56
- return loaded;
57
- if (loaded.value === null)
58
- return err(new AnalysisInputError(QUERY_OPERATION, {
59
- cause: new TypeError("Reconstruction coverage workspace does not exist"),
14
+ return err(new AnalysisInputError("evaluate_reconstruction_coverage", {
15
+ cause: parsed.error,
60
16
  }));
61
- if (isAborted(options.signal))
62
- return err(new AnalysisCancelledError(QUERY_OPERATION));
63
17
  try {
64
- return ok(jsonValueSchema.parse(evaluateReconstructionClosure(loaded.value, parsed.data.boundary_id, nowEpochMs)));
18
+ return ok(jsonValueSchema.parse(evaluateReconstructionClosure(parsed.data.coverage, parsed.data.boundary_id, nowEpochMs)));
65
19
  }
66
20
  catch (cause) {
67
- return err(new AnalysisInputError(QUERY_OPERATION, { cause }));
21
+ return err(new AnalysisInputError("evaluate_reconstruction_coverage", { cause }));
68
22
  }
69
23
  };
@@ -42,7 +42,7 @@ export const proofAuthoritySatisfies = (actual, required) => {
42
42
  export const evidenceAuthoritySupportsProof = (evidence, authority, expected) => {
43
43
  if (evidence.confidence !== "observed" ||
44
44
  !proofEvidenceAuthorities[authority].includes(evidence.authority) ||
45
- evidence.predicate_type !== "rea.reconstruction-proof/v1" ||
45
+ evidence.predicate_type !== "rea.reconstruction-proof" ||
46
46
  evidence.operation !== "verify_reconstruction_obligations")
47
47
  return false;
48
48
  const result = evidence.normalized_result;
@@ -67,6 +67,6 @@ export const evidenceSupportsOriginalAuthority = (evidence, authority) => {
67
67
  return ["controlled-replay", "external-service"].includes(evidence.authority);
68
68
  if (authority === "process")
69
69
  return (evidence.operation === "capture_process_scenario" &&
70
- evidence.predicate_type === "rea.process-capture/v4");
70
+ evidence.predicate_type === "rea.process-capture");
71
71
  return evidence.authority === "external-service";
72
72
  };
@@ -73,7 +73,7 @@ const deriveApplicationCandidates = (evidence, records, candidates, limitations)
73
73
  };
74
74
  const deriveProcessCandidate = (evidence, candidates, limitations) => {
75
75
  if (evidence.operation !== "capture_process_scenario" ||
76
- evidence.predicate_type !== "rea.process-capture/v4")
76
+ evidence.predicate_type !== "rea.process-capture")
77
77
  return;
78
78
  try {
79
79
  const capture = parseProcessCapture(evidence.normalized_result);
@@ -146,7 +146,7 @@ const deriveProcessCandidate = (evidence, candidates, limitations) => {
146
146
  const generatedCandidate = ({ key, title, policy: candidatePolicy, artifactSha256, applicationNodeId, semanticNodeId, location, authorityReferences, }) => ({
147
147
  obligation_id: obligationId(key),
148
148
  obligation_version: 1,
149
- title: title.slice(0, 500),
149
+ title,
150
150
  origin: "generated",
151
151
  application_layer: candidatePolicy.applicationLayer,
152
152
  family: candidatePolicy.family,
@@ -218,7 +218,7 @@ const graphReference = (envelope, records, graphEvidence, location) => {
218
218
  };
219
219
  const reviewedEvidenceState = (evidence) => {
220
220
  if (evidence.operation === "capture_process_scenario" &&
221
- evidence.predicate_type === "rea.process-capture/v4" &&
221
+ evidence.predicate_type === "rea.process-capture" &&
222
222
  evidence.confidence === "observed")
223
223
  return "observed";
224
224
  if (evidence.authority === "external-service" &&
@@ -255,7 +255,7 @@ const sourceState = (references) => {
255
255
  return "unknown";
256
256
  };
257
257
  const uniqueBy = (values, key) => [...new Map(values.map((value) => [key(value), value])).values()].sort((left, right) => key(left).localeCompare(key(right)));
258
- const obligationId = (key) => `obl_${digest({ schema: "rea.reconstruction-obligation/v1", key })}`;
258
+ const obligationId = (key) => `obl_${digest({ schema: "ReconstructionObligation", key })}`;
259
259
  const digest = (value) => {
260
260
  const encoded = canonicalize(value);
261
261
  if (encoded === undefined)
@@ -4,12 +4,11 @@ import { evidenceAuthoritySupportsProof, evidenceSupportsOriginalAuthority, proo
4
4
  import { addObligationDiagnostic as addDiagnostic, contradictionDiagnostics, groupManifestBindings, groupManifestContradictions, hasObligationDiagnostic as hasDiagnostic, uniqueObligationDiagnostics as uniqueDiagnostics, } from "./ReconstructionObligationLedgerDiagnostics.js";
5
5
  import { originalCaseDiagnostics, originalCasesFor, } from "./ReconstructionObligationOriginalCases.js";
6
6
  import { digestObligationLedgerValue, obligationLedgerCoverage, obligationEdgeOrder, obligationLedgerEvidenceLinks, obligationLedgerStatus, obligationReports, summarizeObligations, } from "./ReconstructionObligationLedgerProjection.js";
7
- export const evaluateReconstructionObligationLedger = ({ candidates: candidatesInput, bundle: bundleInput, manifest, maxObligations, generationLimitations, }) => {
7
+ export const evaluateReconstructionObligationLedger = ({ candidates: candidatesInput, bundle: bundleInput, manifest, generationLimitations, }) => {
8
8
  const bundle = parseEvidenceBundle(bundleInput);
9
9
  const allCandidates = [...candidatesInput].sort((left, right) => left.obligation_id.localeCompare(right.obligation_id));
10
10
  const orphanManifestIds = findOrphanManifestIds(allCandidates, manifest);
11
- const candidates = allCandidates.slice(0, maxObligations);
12
- const omittedCount = allCandidates.length - candidates.length;
11
+ const candidates = allCandidates;
13
12
  const context = createEvaluationContext(candidates, bundle, manifest);
14
13
  const obligations = applyDependencyDiagnostics(candidates.map((candidate) => evaluateObligation(candidate, context)), context);
15
14
  const ownershipGraph = obligations
@@ -30,8 +29,8 @@ export const evaluateReconstructionObligationLedger = ({ candidates: candidatesI
30
29
  })))
31
30
  .sort(obligationEdgeOrder);
32
31
  const evidenceLinks = obligationLedgerEvidenceLinks(obligations, manifest);
33
- const limitations = ledgerLimitations(generationLimitations, allCandidates.length, omittedCount, orphanManifestIds);
34
- const coverage = obligationLedgerCoverage(omittedCount, maxObligations, limitations.length > 0);
32
+ const limitations = ledgerLimitations(generationLimitations, allCandidates.length, orphanManifestIds);
33
+ const coverage = obligationLedgerCoverage(limitations.length > 0);
35
34
  const semantic = {
36
35
  coverage,
37
36
  summary: summarizeObligations(obligations),
@@ -42,22 +41,21 @@ export const evaluateReconstructionObligationLedger = ({ candidates: candidatesI
42
41
  evidence_links: evidenceLinks,
43
42
  limitations,
44
43
  };
45
- const evaluatedStatus = obligationLedgerStatus(obligations, omittedCount);
44
+ const evaluatedStatus = obligationLedgerStatus(obligations);
46
45
  const status = evaluatedStatus === "failed"
47
46
  ? evaluatedStatus
48
47
  : limitations.length > 0
49
48
  ? "unknown"
50
49
  : evaluatedStatus;
51
50
  const closureDigest = digestObligationLedgerValue({
52
- schema: "rea.reconstruction-obligation-closure/v1",
51
+ schema: "ReconstructionObligationClosure",
53
52
  status,
54
53
  ...semantic,
55
54
  });
56
55
  return reconstructionObligationLedgerSchema.parse({
57
56
  schema: "ReconstructionObligationLedger",
58
- schema_version: 1,
59
57
  ledger_id: `rol_${digestObligationLedgerValue({
60
- schema: "rea.reconstruction-obligation-ledger/v1",
58
+ schema: "ReconstructionObligationLedger",
61
59
  evidence_ids: bundle.records.map(({ evidence_id: id }) => id),
62
60
  obligation_ids: obligations.map(({ obligation_id: id }) => id),
63
61
  closure_digest: closureDigest,
@@ -82,7 +80,7 @@ const findOrphanManifestIds = (candidates, manifest) => {
82
80
  ].filter((obligationId) => !candidateIds.has(obligationId))),
83
81
  ].sort();
84
82
  };
85
- const ledgerLimitations = (generationLimitations, candidateCount, omittedCount, orphanManifestIds) => [
83
+ const ledgerLimitations = (generationLimitations, candidateCount, orphanManifestIds) => [
86
84
  ...new Set([
87
85
  ...generationLimitations,
88
86
  ...(candidateCount === 0
@@ -90,11 +88,6 @@ const ledgerLimitations = (generationLimitations, candidateCount, omittedCount,
90
88
  "No reconstruction obligations were derived; closure cannot be claimed.",
91
89
  ]
92
90
  : []),
93
- ...(omittedCount > 0
94
- ? [
95
- `${String(omittedCount)} obligation candidates were omitted by max_obligations; closure is unknown.`,
96
- ]
97
- : []),
98
91
  ...(orphanManifestIds.length > 0
99
92
  ? [
100
93
  `Manifest entries reference unknown obligations: ${orphanManifestIds.join(", ")}.`,
@@ -1,10 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import canonicalize from "canonicalize";
3
- export const obligationLedgerCoverage = (omittedCount, maxObligations, incomplete) => ({
3
+ export const obligationLedgerCoverage = (incomplete) => ({
4
4
  status: incomplete ? "partial" : "complete",
5
- truncated: omittedCount > 0,
6
- omitted_count: omittedCount,
7
- max_obligations: maxObligations,
8
5
  });
9
6
  export const summarizeObligations = (obligations) => ({
10
7
  total: obligations.length,
@@ -56,15 +53,14 @@ export const obligationLedgerEvidenceLinks = (obligations, manifest) => [
56
53
  ...manifest.contradictions.flatMap(({ evidence_ids: ids }) => ids),
57
54
  ]),
58
55
  ].sort();
59
- export const obligationLedgerStatus = (obligations, omittedCount) => {
56
+ export const obligationLedgerStatus = (obligations) => {
60
57
  if (obligations.length === 0)
61
58
  return "unknown";
62
59
  const requiredOpen = obligations.filter(({ required, status }) => required && status !== "verified");
63
60
  if (requiredOpen.some(({ status, diagnostics }) => status === "contradicted" ||
64
61
  hasDiagnostic(diagnostics, "verifier-failed")))
65
62
  return "failed";
66
- if (omittedCount > 0 ||
67
- requiredOpen.some(({ status }) => status === "unknown"))
63
+ if (requiredOpen.some(({ status }) => status === "unknown"))
68
64
  return "unknown";
69
65
  return requiredOpen.length === 0 ? "ready" : "open";
70
66
  };
@@ -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,
@@ -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
  };