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
@@ -59,7 +59,7 @@ export const protocolCaptureSchema = z.strictObject({
59
59
  /** Protocol family for this capture. */
60
60
  family: protocolFamilySchema,
61
61
  /** Captured messages in order. */
62
- messages: z.array(protocolMessageSchema).min(0).max(10_000),
62
+ messages: z.array(protocolMessageSchema).min(0),
63
63
  /** Aggregated schema hypotheses across all messages. */
64
64
  inferred_schema: z.array(schemaHypothesisSchema).default([]),
65
65
  /** Whether any message was truncated. */
@@ -109,7 +109,7 @@ export function looksLikeCredential(path) {
109
109
  /** Decode a JSON-RPC message from raw payload bytes. */
110
110
  export function decodeJsonRpc(rawPayload) {
111
111
  const text = new TextDecoder().decode(rawPayload);
112
- const parsed = JSON.parse(text);
112
+ const parsed = jsonValueSchema.parse(JSON.parse(text));
113
113
  const fields = [];
114
114
  if (typeof parsed === "object" && parsed !== null) {
115
115
  for (const [key, value] of Object.entries(parsed)) {
@@ -125,7 +125,7 @@ export function decodeJsonRpc(rawPayload) {
125
125
  fields.push({
126
126
  path: key,
127
127
  wire_type: "json",
128
- value: value,
128
+ value,
129
129
  inferred: false,
130
130
  });
131
131
  }
@@ -141,6 +141,8 @@ export function decodeMessagePack(rawPayload) {
141
141
  return { decoded_fields: [], truncated: false };
142
142
  }
143
143
  const tag = rawPayload[0];
144
+ if (tag === undefined)
145
+ return { decoded_fields: [], truncated: false };
144
146
  // Map type: 0x80-0x8f (fixmap), 0xde (map16), 0xdf (map32)
145
147
  if ((tag >= 0x80 && tag <= 0x8f) || tag === 0xde || tag === 0xdf) {
146
148
  fields.push({
@@ -169,7 +171,7 @@ export function decodeMessagePack(rawPayload) {
169
171
  }
170
172
  return {
171
173
  decoded_fields: fields,
172
- truncated: rawPayload.length > 10_000,
174
+ truncated: false,
173
175
  };
174
176
  }
175
177
  /** Decode a gRPC frame (5-byte header + protobuf payload). */
@@ -189,10 +191,10 @@ export function decodeGrpcFrame(rawPayload) {
189
191
  };
190
192
  }
191
193
  const compressed = rawPayload[0] !== 0;
192
- const length = (rawPayload[1] << 24) |
193
- (rawPayload[2] << 16) |
194
- (rawPayload[3] << 8) |
195
- rawPayload[4];
194
+ const length = ((rawPayload[1] ?? 0) << 24) |
195
+ ((rawPayload[2] ?? 0) << 16) |
196
+ ((rawPayload[3] ?? 0) << 8) |
197
+ (rawPayload[4] ?? 0);
196
198
  return {
197
199
  decoded_fields: [
198
200
  {
@@ -208,7 +210,7 @@ export function decodeGrpcFrame(rawPayload) {
208
210
  inferred: false,
209
211
  },
210
212
  ],
211
- truncated: length > 10_000,
213
+ truncated: false,
212
214
  };
213
215
  }
214
216
  /** Infer schema hypotheses from a set of decoded messages. */
@@ -2,11 +2,11 @@ import { createHash } from "node:crypto";
2
2
  import canonicalize from "canonicalize";
3
3
  import { z } from "zod";
4
4
  import { evidenceBundleSchema, parseEvidenceBundle } from "./evidenceBundle.js";
5
- import { evaluateReconstructionClaims, evaluateReconstructionPackageProofs, evaluateReconstructionSurfaces, evaluateReconstructionWorkspaceRisks, recommendedReconstructionProbes, } from "./reconstructionCoverageEvaluation.js";
5
+ import { evaluateReconstructionClaims, evaluateReconstructionPackageProofs, evaluateReconstructionSurfaces, evaluateReconstructionCoverageRisks, recommendedReconstructionProbes, } from "./reconstructionCoverageEvaluation.js";
6
6
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
7
7
  const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u);
8
8
  const stableIdSchema = z.string().regex(/^[A-Za-z][A-Za-z0-9._:/-]{0,199}$/u);
9
- const boundedTextSchema = z.string().trim().min(1).max(4_096);
9
+ const boundedTextSchema = z.string().trim().min(1);
10
10
  const authoritySchema = z.enum([
11
11
  "observed",
12
12
  "derived",
@@ -17,24 +17,24 @@ const authoritySchema = z.enum([
17
17
  const artifactSchema = z.strictObject({
18
18
  artifact_id: stableIdSchema,
19
19
  artifact_sha256: digestSchema,
20
- version: z.string().trim().min(1).max(500),
20
+ version: z.string().trim().min(1),
21
21
  environment_sha256: digestSchema,
22
- evidence_ids: z.array(evidenceIdSchema).min(1).max(1_000),
22
+ evidence_ids: z.array(evidenceIdSchema).min(1),
23
23
  });
24
24
  const surfaceSchema = z.strictObject({
25
25
  surface_id: stableIdSchema,
26
- family: z.string().trim().min(1).max(100),
26
+ family: z.string().trim().min(1),
27
27
  artifact_id: stableIdSchema,
28
- occurrence_id: z.string().trim().min(1).max(500).nullable(),
28
+ occurrence_id: z.string().trim().min(1).nullable(),
29
29
  location: boundedTextSchema,
30
30
  authority: authoritySchema,
31
- dependency_surface_ids: z.array(stableIdSchema).max(1_000),
32
- evidence_ids: z.array(evidenceIdSchema).min(1).max(1_000),
31
+ dependency_surface_ids: z.array(stableIdSchema),
32
+ evidence_ids: z.array(evidenceIdSchema).min(1),
33
33
  });
34
34
  const implementationOwnerSchema = z.strictObject({
35
35
  disposition: z.literal("implemented"),
36
36
  owner_path: boundedTextSchema,
37
- owner_export: z.string().trim().min(1).max(500).nullable(),
37
+ owner_export: z.string().trim().min(1).nullable(),
38
38
  owner_sha256: digestSchema,
39
39
  path_state: z.enum(["present", "missing", "unknown"]),
40
40
  package_state: z.enum(["distributed", "missing", "unknown"]),
@@ -53,10 +53,10 @@ const ownerSchema = z.strictObject({
53
53
  });
54
54
  const claimSchema = z.strictObject({
55
55
  claim_id: stableIdSchema,
56
- title: z.string().trim().min(1).max(500),
57
- kind: z.string().trim().min(1).max(100),
58
- surface_ids: z.array(stableIdSchema).min(1).max(1_000),
59
- required_dimensions: z.array(stableIdSchema).min(1).max(100),
56
+ title: z.string().trim().min(1),
57
+ kind: z.string().trim().min(1),
58
+ surface_ids: z.array(stableIdSchema).min(1),
59
+ required_dimensions: z.array(stableIdSchema).min(1),
60
60
  required_authority: z.enum([
61
61
  "shipped-artifact",
62
62
  "controlled-replay",
@@ -66,16 +66,16 @@ const claimSchema = z.strictObject({
66
66
  });
67
67
  const verifierContractBaseSchema = z.strictObject({
68
68
  verifier_id: stableIdSchema,
69
- claim_ids: z.array(stableIdSchema).min(1).max(1_000),
70
- dimensions: z.array(stableIdSchema).min(1).max(100),
69
+ claim_ids: z.array(stableIdSchema).min(1),
70
+ dimensions: z.array(stableIdSchema).min(1),
71
71
  authority: z.enum([
72
72
  "shipped-artifact",
73
73
  "controlled-replay",
74
74
  "live-observation",
75
75
  "external",
76
76
  ]),
77
- max_age_ms: z.number().int().min(1).max(Number.MAX_SAFE_INTEGER),
78
- minimum_repeats: z.number().int().min(1).max(1_000),
77
+ max_age_ms: z.number().int().min(1),
78
+ minimum_repeats: z.number().int().min(1),
79
79
  normalization_sha256: digestSchema,
80
80
  normalization_removes_dimensions: z.literal(false),
81
81
  });
@@ -94,20 +94,20 @@ const verifierResultSchema = z.strictObject({
94
94
  "truncated",
95
95
  "skipped",
96
96
  ]),
97
- covered_claim_ids: z.array(stableIdSchema).min(1).max(1_000),
98
- covered_dimensions: z.array(stableIdSchema).min(1).max(100),
99
- artifact_sha256s: z.array(digestSchema).min(1).max(1_000),
100
- owner_sha256s: z.array(digestSchema).max(1_000),
97
+ covered_claim_ids: z.array(stableIdSchema).min(1),
98
+ covered_dimensions: z.array(stableIdSchema).min(1),
99
+ artifact_sha256s: z.array(digestSchema).min(1),
100
+ owner_sha256s: z.array(digestSchema),
101
101
  normalization_sha256: digestSchema,
102
- repeats: z.number().int().min(1).max(1_000),
103
- evidence_ids: z.array(evidenceIdSchema).min(1).max(1_000),
102
+ repeats: z.number().int().min(1),
103
+ evidence_ids: z.array(evidenceIdSchema).min(1),
104
104
  });
105
105
  const contradictionSchema = z.strictObject({
106
106
  contradiction_id: stableIdSchema,
107
107
  status: z.enum(["active", "resolved"]),
108
- surface_ids: z.array(stableIdSchema).max(1_000),
109
- claim_ids: z.array(stableIdSchema).max(1_000),
110
- evidence_ids: z.array(evidenceIdSchema).min(2).max(1_000),
108
+ surface_ids: z.array(stableIdSchema),
109
+ claim_ids: z.array(stableIdSchema),
110
+ evidence_ids: z.array(evidenceIdSchema).min(2),
111
111
  });
112
112
  const packageProofSchema = z.strictObject({
113
113
  proof_id: stableIdSchema,
@@ -119,40 +119,37 @@ const packageProofSchema = z.strictObject({
119
119
  "authority-independence",
120
120
  ]),
121
121
  status: z.enum(["pass", "fail", "unknown", "unsupported", "skipped"]),
122
- artifact_sha256s: z.array(digestSchema).min(1).max(1_000),
123
- evidence_ids: z.array(evidenceIdSchema).min(1).max(1_000),
122
+ artifact_sha256s: z.array(digestSchema).min(1),
123
+ evidence_ids: z.array(evidenceIdSchema).min(1),
124
124
  });
125
125
  const boundarySchema = z.strictObject({
126
126
  boundary_id: stableIdSchema,
127
- title: z.string().trim().min(1).max(500),
128
- required_surface_ids: z.array(stableIdSchema).min(1).max(10_000),
129
- required_claim_ids: z.array(stableIdSchema).min(1).max(10_000),
130
- required_package_proof_kinds: z
131
- .array(packageProofSchema.shape.kind)
132
- .min(1)
133
- .max(5),
134
- allowed_dispositions: z.array(z.enum(["external", "non-goal"])).max(2),
135
- allowed_unknown_ids: z.array(stableIdSchema).max(1_000),
127
+ title: z.string().trim().min(1),
128
+ required_surface_ids: z.array(stableIdSchema).min(1),
129
+ required_claim_ids: z.array(stableIdSchema).min(1),
130
+ required_package_proof_kinds: z.array(packageProofSchema.shape.kind).min(1),
131
+ allowed_dispositions: z.array(z.enum(["external", "non-goal"])),
132
+ allowed_unknown_ids: z.array(stableIdSchema),
136
133
  });
137
- const workspaceSemanticSchema = z.strictObject({
138
- schema_version: z.literal(1),
139
- workspace_id: z.string().regex(/^rcw_[a-f0-9]{64}$/u),
140
- name: z.string().trim().min(1).max(200),
141
- revision: z.number().int().min(1),
142
- previous_revision_sha256: digestSchema.nullable(),
134
+ export const reconstructionCoverageDataSchema = z.strictObject({
143
135
  evidence_bundle: evidenceBundleSchema,
144
- artifacts: z.array(artifactSchema).max(1_000),
145
- surfaces: z.array(surfaceSchema).max(10_000),
146
- owners: z.array(ownerSchema).max(10_000),
147
- claims: z.array(claimSchema).max(10_000),
148
- verifier_contracts: z.array(verifierContractSchema).max(10_000),
149
- verifier_results: z.array(verifierResultSchema).max(100_000),
150
- residual_unknown_ids: z.array(stableIdSchema).max(10_000),
151
- contradictions: z.array(contradictionSchema).max(10_000),
152
- package_proofs: z.array(packageProofSchema).max(10_000),
153
- boundaries: z.array(boundarySchema).max(1_000),
136
+ artifacts: z.array(artifactSchema),
137
+ surfaces: z.array(surfaceSchema),
138
+ owners: z.array(ownerSchema),
139
+ claims: z.array(claimSchema),
140
+ verifier_contracts: z.array(verifierContractSchema),
141
+ verifier_results: z.array(verifierResultSchema),
142
+ residual_unknown_ids: z.array(stableIdSchema),
143
+ contradictions: z.array(contradictionSchema),
144
+ package_proofs: z.array(packageProofSchema),
145
+ boundaries: z.array(boundarySchema),
154
146
  });
155
- export const reconstructionCoverageWorkspaceSchema = workspaceSemanticSchema.extend({ revision_sha256: digestSchema });
147
+ /** Parse inline coverage data and validate every evidence and authority link. */
148
+ export const createReconstructionCoverageData = (input) => {
149
+ const coverage = reconstructionCoverageDataSchema.parse(input);
150
+ validateCoverageReferences(coverage);
151
+ return coverage;
152
+ };
156
153
  const closureReasonSchema = z.strictObject({
157
154
  code: z.enum([
158
155
  "surface-missing",
@@ -186,21 +183,18 @@ const closureReasonSchema = z.strictObject({
186
183
  export const reconstructionClosureResultSchema = z.strictObject({
187
184
  boundary_id: stableIdSchema,
188
185
  status: z.enum(["partial", "failed", "unknown", "ready"]),
189
- workspace_revision_sha256: digestSchema,
190
186
  summary: z.strictObject({
191
187
  required_surfaces: z.number().int().min(0),
192
188
  required_claims: z.number().int().min(0),
193
189
  reasons: z.number().int().min(0),
194
190
  }),
195
- reasons: z.array(closureReasonSchema).max(100_000),
196
- recommended_probes: z
197
- .array(z.strictObject({
191
+ reasons: z.array(closureReasonSchema),
192
+ recommended_probes: z.array(z.strictObject({
198
193
  operation: stableIdSchema,
199
194
  subject_id: stableIdSchema,
200
195
  rationale: boundedTextSchema,
201
- }))
202
- .max(100_000),
203
- evidence_ids: z.array(evidenceIdSchema).max(100_000),
196
+ })),
197
+ evidence_ids: z.array(evidenceIdSchema),
204
198
  });
205
199
  /** Build a verifier contract whose digest prevents retrospective coverage edits. */
206
200
  export const createReconstructionVerifierContract = (input) => {
@@ -210,60 +204,14 @@ export const createReconstructionVerifierContract = (input) => {
210
204
  contract_sha256: digest(parsed),
211
205
  });
212
206
  };
213
- /** Build one canonical immutable coverage-workspace revision. */
214
- export const createReconstructionCoverageWorkspace = (input) => {
215
- const semanticInput = {
216
- schema_version: 1,
217
- workspace_id: `rcw_${digest({ schema: "rea.reconstruction-coverage-workspace/v1", name: input.name })}`,
218
- ...input,
219
- };
220
- const semantic = canonicalWorkspace(workspaceSemanticSchema.parse(semanticInput));
221
- validateWorkspaceReferences(semantic);
222
- return reconstructionCoverageWorkspaceSchema.parse({
223
- ...semantic,
224
- revision_sha256: digest(semantic),
225
- });
226
- };
227
- /** Parse persisted coverage state and verify canonical order, references, and digests. */
228
- export const parseReconstructionCoverageWorkspace = (input) => {
229
- const parsed = reconstructionCoverageWorkspaceSchema.parse(input);
230
- const rebuilt = createReconstructionCoverageWorkspace({
231
- name: parsed.name,
232
- revision: parsed.revision,
233
- previous_revision_sha256: parsed.previous_revision_sha256,
234
- evidence_bundle: parsed.evidence_bundle,
235
- artifacts: parsed.artifacts,
236
- surfaces: parsed.surfaces,
237
- owners: parsed.owners,
238
- claims: parsed.claims,
239
- verifier_contracts: parsed.verifier_contracts,
240
- verifier_results: parsed.verifier_results,
241
- residual_unknown_ids: parsed.residual_unknown_ids,
242
- contradictions: parsed.contradictions,
243
- package_proofs: parsed.package_proofs,
244
- boundaries: parsed.boundaries,
245
- });
246
- if (parsed.workspace_id !== rebuilt.workspace_id ||
247
- parsed.revision_sha256 !== rebuilt.revision_sha256 ||
248
- JSON.stringify(parsed) !== JSON.stringify(rebuilt))
249
- throw new TypeError("Reconstruction coverage workspace is not canonical");
250
- return rebuilt;
251
- };
252
- /** Serialize one validated coverage revision as byte-stable canonical JSON. */
253
- export const serializeReconstructionCoverageWorkspace = (workspace) => {
254
- const encoded = canonicalize(parseReconstructionCoverageWorkspace(workspace));
255
- if (encoded === undefined)
256
- throw new TypeError("Reconstruction coverage workspace is not canonical JSON");
257
- return encoded;
258
- };
259
- /** Evaluate one named completion boundary without inferring undiscovered coverage. */
260
- export const evaluateReconstructionClosure = (workspaceInput, boundaryId, nowEpochMs) => {
261
- const workspace = parseReconstructionCoverageWorkspace(workspaceInput);
262
- const boundary = workspace.boundaries.find(({ boundary_id: id }) => id === boundaryId);
207
+ /** Evaluate inline coverage data against one named fail-closed boundary. */
208
+ export const evaluateReconstructionClosure = (coverageInput, boundaryId, nowEpochMs) => {
209
+ const coverage = createReconstructionCoverageData(coverageInput);
210
+ const boundary = coverage.boundaries.find(({ boundary_id: id }) => id === boundaryId);
263
211
  if (boundary === undefined)
264
212
  throw new TypeError(`Unknown reconstruction boundary: ${boundaryId}`);
265
213
  const context = {
266
- workspace,
214
+ coverage,
267
215
  boundary,
268
216
  nowEpochMs,
269
217
  reasons: [],
@@ -271,13 +219,12 @@ export const evaluateReconstructionClosure = (workspaceInput, boundaryId, nowEpo
271
219
  };
272
220
  evaluateReconstructionSurfaces(context);
273
221
  evaluateReconstructionClaims(context);
274
- evaluateReconstructionWorkspaceRisks(context);
222
+ evaluateReconstructionCoverageRisks(context);
275
223
  evaluateReconstructionPackageProofs(context);
276
224
  const reasons = [...context.reasons].sort(reasonOrder);
277
225
  return reconstructionClosureResultSchema.parse({
278
226
  boundary_id: boundary.boundary_id,
279
227
  status: closureStatus(reasons),
280
- workspace_revision_sha256: workspace.revision_sha256,
281
228
  summary: {
282
229
  required_surfaces: boundary.required_surface_ids.length,
283
230
  required_claims: boundary.required_claim_ids.length,
@@ -288,7 +235,7 @@ export const evaluateReconstructionClosure = (workspaceInput, boundaryId, nowEpo
288
235
  evidence_ids: [...context.evidenceIds].sort(),
289
236
  });
290
237
  };
291
- const validateWorkspaceReferences = (workspace) => {
238
+ const validateCoverageReferences = (workspace) => {
292
239
  const evidenceBundle = parseEvidenceBundle(workspace.evidence_bundle);
293
240
  const evidenceIds = new Set(evidenceBundle.records.map(({ evidence_id: id }) => id));
294
241
  const unknownIds = new Set(evidenceBundle.unknowns.map(({ unknown_id: id }) => id));
@@ -333,20 +280,6 @@ const validateWorkspaceReferences = (workspace) => {
333
280
  if (danglingUnknown !== undefined)
334
281
  throw new TypeError(`Coverage workspace residual unknown is missing: ${danglingUnknown}`);
335
282
  };
336
- const canonicalWorkspace = (workspace) => ({
337
- ...workspace,
338
- artifacts: sorted(workspace.artifacts, "artifact_id"),
339
- surfaces: sorted(workspace.surfaces, "surface_id"),
340
- owners: [...workspace.owners].sort((left, right) => left.surface_id.localeCompare(right.surface_id)),
341
- claims: sorted(workspace.claims, "claim_id"),
342
- verifier_contracts: sorted(workspace.verifier_contracts, "verifier_id"),
343
- verifier_results: [...workspace.verifier_results].sort((left, right) => `${left.verifier_id}:${left.observed_at}`.localeCompare(`${right.verifier_id}:${right.observed_at}`)),
344
- residual_unknown_ids: [...new Set(workspace.residual_unknown_ids)].sort(),
345
- contradictions: sorted(workspace.contradictions, "contradiction_id"),
346
- package_proofs: sorted(workspace.package_proofs, "proof_id"),
347
- boundaries: sorted(workspace.boundaries, "boundary_id"),
348
- });
349
- const sorted = (items, key) => [...items].sort((left, right) => left[key].localeCompare(right[key]));
350
283
  const assertUnique = (items, key) => {
351
284
  const values = items.map((item) => item[key]);
352
285
  if (new Set(values).size !== values.length)
@@ -1,4 +1,4 @@
1
- export const recommendedReconstructionProbes = (reasons) => reasons.slice(0, 100).map((reason) => ({
1
+ export const recommendedReconstructionProbes = (reasons) => reasons.map((reason) => ({
2
2
  operation: probeOperation(reason.code),
3
3
  subject_id: reason.subject_id,
4
4
  rationale: reason.detail,
@@ -17,7 +17,7 @@ const probeOperation = (code) => {
17
17
  return "update_authoritative_inventory";
18
18
  };
19
19
  export const evaluateReconstructionSurfaces = (context) => {
20
- const surfaces = indexUnique(context.workspace.surfaces, "surface_id");
20
+ const surfaces = indexUnique(context.coverage.surfaces, "surface_id");
21
21
  for (const surfaceId of context.boundary.required_surface_ids) {
22
22
  const surface = surfaces.get(surfaceId);
23
23
  if (surface === undefined) {
@@ -32,7 +32,7 @@ export const evaluateReconstructionSurfaces = (context) => {
32
32
  }
33
33
  };
34
34
  const evaluateOwner = (context, surfaceId) => {
35
- const owners = context.workspace.owners.filter(({ surface_id: id }) => id === surfaceId);
35
+ const owners = context.coverage.owners.filter(({ surface_id: id }) => id === surfaceId);
36
36
  if (owners.length === 0) {
37
37
  addReason(context, "owner-missing", surfaceId, "Required surface has no reconstructed owner or explicit disposition.");
38
38
  return;
@@ -86,14 +86,14 @@ const evaluateOwner = (context, surfaceId) => {
86
86
  addReason(context, code, surfaceId, detail);
87
87
  };
88
88
  export const evaluateReconstructionClaims = (context) => {
89
- const claims = indexUnique(context.workspace.claims, "claim_id");
89
+ const claims = indexUnique(context.coverage.claims, "claim_id");
90
90
  for (const claimId of context.boundary.required_claim_ids) {
91
91
  const claim = claims.get(claimId);
92
92
  if (claim === undefined) {
93
93
  addReason(context, "claim-missing", claimId, "Required finite claim is absent.");
94
94
  continue;
95
95
  }
96
- const contracts = context.workspace.verifier_contracts.filter(({ claim_ids: ids }) => ids.includes(claimId));
96
+ const contracts = context.coverage.verifier_contracts.filter(({ claim_ids: ids }) => ids.includes(claimId));
97
97
  if (contracts.length === 0) {
98
98
  addReason(context, "verifier-missing", claimId, "No verifier contract covers this claim.");
99
99
  continue;
@@ -108,7 +108,7 @@ export const evaluateReconstructionClaims = (context) => {
108
108
  }
109
109
  };
110
110
  const evaluateVerifierResult = (context, claim, contract) => {
111
- const results = context.workspace.verifier_results
111
+ const results = context.coverage.verifier_results
112
112
  .filter(({ verifier_id: id }) => id === contract.verifier_id)
113
113
  .sort((left, right) => Date.parse(right.observed_at) - Date.parse(left.observed_at));
114
114
  const result = results[0];
@@ -133,10 +133,10 @@ const evaluateVerifierResult = (context, claim, contract) => {
133
133
  addReason(context, "verifier-unknown", claim.claim_id, `Latest compatible verifier result is ${result.status}.`);
134
134
  };
135
135
  const verifierResultIsCompatible = (context, claim, contract, result) => {
136
- const artifactDigests = new Set(context.workspace.artifacts.map(({ artifact_sha256: value }) => value));
137
- const ownerDigests = new Set(context.workspace.owners.flatMap(({ ownership }) => ownership.disposition === "implemented" ? [ownership.owner_sha256] : []));
138
- const surfaces = new Map(context.workspace.surfaces.map((surface) => [surface.surface_id, surface]));
139
- const artifacts = new Map(context.workspace.artifacts.map((artifact) => [
136
+ const artifactDigests = new Set(context.coverage.artifacts.map(({ artifact_sha256: value }) => value));
137
+ const ownerDigests = new Set(context.coverage.owners.flatMap(({ ownership }) => ownership.disposition === "implemented" ? [ownership.owner_sha256] : []));
138
+ const surfaces = new Map(context.coverage.surfaces.map((surface) => [surface.surface_id, surface]));
139
+ const artifacts = new Map(context.coverage.artifacts.map((artifact) => [
140
140
  artifact.artifact_id,
141
141
  artifact,
142
142
  ]));
@@ -145,7 +145,7 @@ const verifierResultIsCompatible = (context, claim, contract, result) => {
145
145
  const artifact = surface === undefined ? undefined : artifacts.get(surface.artifact_id);
146
146
  return artifact === undefined ? [] : [artifact.artifact_sha256];
147
147
  });
148
- const expectedOwnerDigests = context.workspace.owners.flatMap(({ surface_id: surfaceId, ownership }) => claim.surface_ids.includes(surfaceId) &&
148
+ const expectedOwnerDigests = context.coverage.owners.flatMap(({ surface_id: surfaceId, ownership }) => claim.surface_ids.includes(surfaceId) &&
149
149
  ownership.disposition === "implemented"
150
150
  ? [ownership.owner_sha256]
151
151
  : []);
@@ -163,11 +163,11 @@ const verifierResultIsCompatible = (context, claim, contract, result) => {
163
163
  result.repeats >= contract.minimum_repeats &&
164
164
  claim.required_authority === contract.authority);
165
165
  };
166
- export const evaluateReconstructionWorkspaceRisks = (context) => {
167
- for (const unknownId of context.workspace.residual_unknown_ids)
166
+ export const evaluateReconstructionCoverageRisks = (context) => {
167
+ for (const unknownId of context.coverage.residual_unknown_ids)
168
168
  if (!context.boundary.allowed_unknown_ids.includes(unknownId))
169
169
  addReason(context, "active-unknown", unknownId, "Active residual unknown is not permitted by the completion boundary.");
170
- for (const contradiction of context.workspace.contradictions)
170
+ for (const contradiction of context.coverage.contradictions)
171
171
  if (contradiction.status === "active" &&
172
172
  (contradiction.surface_ids.some((id) => context.boundary.required_surface_ids.includes(id)) ||
173
173
  contradiction.claim_ids.some((id) => context.boundary.required_claim_ids.includes(id)))) {
@@ -176,8 +176,8 @@ export const evaluateReconstructionWorkspaceRisks = (context) => {
176
176
  }
177
177
  };
178
178
  export const evaluateReconstructionPackageProofs = (context) => {
179
- const surfaces = new Map(context.workspace.surfaces.map((surface) => [surface.surface_id, surface]));
180
- const artifacts = new Map(context.workspace.artifacts.map((artifact) => [
179
+ const surfaces = new Map(context.coverage.surfaces.map((surface) => [surface.surface_id, surface]));
180
+ const artifacts = new Map(context.coverage.artifacts.map((artifact) => [
181
181
  artifact.artifact_id,
182
182
  artifact,
183
183
  ]));
@@ -187,7 +187,7 @@ export const evaluateReconstructionPackageProofs = (context) => {
187
187
  return artifact === undefined ? [] : [artifact.artifact_sha256];
188
188
  });
189
189
  for (const kind of context.boundary.required_package_proof_kinds) {
190
- const proofs = context.workspace.package_proofs.filter((proof) => proof.kind === kind);
190
+ const proofs = context.coverage.package_proofs.filter((proof) => proof.kind === kind);
191
191
  const passing = proofs.find(({ artifact_sha256s: digests, status }) => status === "pass" &&
192
192
  requiredArtifactDigests.every((digest) => digests.includes(digest)));
193
193
  if (passing !== undefined) {