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
@@ -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) {
@@ -3,8 +3,8 @@ import { z } from "zod";
3
3
  import { evidenceBundleSchema } from "./evidenceBundle.js";
4
4
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
5
5
  const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u);
6
- const stableIdSchema = z.string().regex(/^[A-Za-z][A-Za-z0-9._:/-]{0,199}$/u);
7
- const boundedTextSchema = z.string().trim().min(1).max(4_096);
6
+ const stableIdSchema = z.string().regex(/^[A-Za-z][A-Za-z0-9._:/-]*$/u);
7
+ const textSchema = z.string().trim().min(1);
8
8
  export const obligationStatusSchema = z.enum([
9
9
  "unowned",
10
10
  "characterized",
@@ -60,7 +60,7 @@ const obligationTargetSchema = z.strictObject({
60
60
  .string()
61
61
  .regex(/^jsrg_node_[a-f0-9]{64}$/u)
62
62
  .nullable(),
63
- location: boundedTextSchema,
63
+ location: textSchema,
64
64
  });
65
65
  const authorityReferenceSchema = z.strictObject({
66
66
  evidence_id: evidenceIdSchema,
@@ -72,80 +72,77 @@ const authorityReferenceSchema = z.strictObject({
72
72
  "analyst-inference",
73
73
  ]),
74
74
  state: z.enum(["candidate", "observed", "reviewed", "unknown"]),
75
- location: boundedTextSchema,
75
+ location: textSchema,
76
76
  });
77
77
  const observedCaseSchema = z.strictObject({
78
78
  kind: obligationCaseKindSchema,
79
79
  evidence_id: evidenceIdSchema,
80
- location: boundedTextSchema,
80
+ location: textSchema,
81
81
  });
82
82
  const ownerBindingSchema = z.strictObject({
83
- module_path: boundedTextSchema,
84
- symbol: z.string().trim().min(1).max(1_024),
83
+ module_path: textSchema,
84
+ symbol: textSchema,
85
85
  owner_sha256: digestSchema,
86
86
  });
87
87
  const parserTypeBindingSchema = z.strictObject({
88
- parser: boundedTextSchema,
89
- schema: boundedTextSchema,
90
- domain_type: boundedTextSchema,
88
+ parser: textSchema,
89
+ schema: textSchema,
90
+ domain_type: textSchema,
91
91
  });
92
92
  const fixtureBindingSchema = z.strictObject({
93
93
  fixture_id: stableIdSchema,
94
94
  case_kind: obligationCaseKindSchema,
95
95
  authority: obligationProofAuthoritySchema,
96
- evidence_ids: z.array(evidenceIdSchema).min(1).max(100),
96
+ evidence_ids: z.array(evidenceIdSchema).min(1),
97
97
  });
98
98
  const nondeterminismSchema = z.strictObject({
99
99
  mode: z.enum(["total-order", "partial-order", "finite-traces"]),
100
- specification: boundedTextSchema,
100
+ specification: textSchema,
101
101
  });
102
102
  const verifierBindingSchema = z.strictObject({
103
103
  verifier_id: stableIdSchema,
104
104
  claim_id: stableIdSchema,
105
- command: boundedTextSchema,
105
+ command: textSchema,
106
106
  authority: obligationProofAuthoritySchema,
107
107
  status: z.enum(["pass", "fail", "unknown", "unsupported", "skipped"]),
108
108
  result_evidence_id: evidenceIdSchema,
109
- enumerated_obligation_ids: z.array(stableIdSchema).min(1).max(10_000),
109
+ enumerated_obligation_ids: z.array(stableIdSchema).min(1),
110
110
  nondeterminism: nondeterminismSchema,
111
111
  });
112
112
  export const reconstructionObligationManifestBindingSchema = z.strictObject({
113
113
  obligation_id: stableIdSchema,
114
114
  owner: ownerBindingSchema,
115
115
  parser_type: parserTypeBindingSchema.nullable(),
116
- original_cases: z.array(observedCaseSchema).max(100),
117
- fixtures: z.array(fixtureBindingSchema).max(100),
116
+ original_cases: z.array(observedCaseSchema),
117
+ fixtures: z.array(fixtureBindingSchema),
118
118
  verifier: verifierBindingSchema.nullable(),
119
119
  });
120
120
  export const reconstructionObligationManifestSchema = z.strictObject({
121
- schema_version: z.literal(1),
122
- bindings: z.array(reconstructionObligationManifestBindingSchema).max(10_000),
123
- contradictions: z
124
- .array(z.strictObject({
121
+ bindings: z.array(reconstructionObligationManifestBindingSchema),
122
+ contradictions: z.array(z.strictObject({
125
123
  obligation_id: stableIdSchema,
126
- evidence_ids: z.array(evidenceIdSchema).min(2).max(100),
127
- }))
128
- .max(10_000),
124
+ evidence_ids: z.array(evidenceIdSchema).min(2),
125
+ })),
129
126
  });
130
127
  export const reviewedReconstructionObligationSchema = z.strictObject({
131
128
  obligation_id: stableIdSchema,
132
129
  obligation_version: z.number().int().min(1),
133
- title: z.string().trim().min(1).max(500),
130
+ title: textSchema,
134
131
  application_layer: obligationLayerSchema,
135
- family: z.string().trim().min(1).max(100),
132
+ family: textSchema,
136
133
  target: obligationTargetSchema,
137
134
  required: z.boolean(),
138
- required_case_kinds: z.array(obligationCaseKindSchema).min(1).max(5),
135
+ required_case_kinds: z.array(obligationCaseKindSchema).min(1),
139
136
  required_original_authority: obligationOriginalAuthoritySchema,
140
137
  required_fixture_authority: obligationProofAuthoritySchema,
141
138
  required_verifier_authority: obligationProofAuthoritySchema,
142
139
  requires_parser_type: z.boolean(),
143
- dependency_obligation_ids: z.array(stableIdSchema).max(1_000),
144
- residual_unknown_ids: z.array(stableIdSchema).max(1_000),
145
- unavailable_authority: z.array(boundedTextSchema).max(100),
146
- required_next_evidence: z.array(boundedTextSchema).max(100),
140
+ dependency_obligation_ids: z.array(stableIdSchema),
141
+ residual_unknown_ids: z.array(stableIdSchema),
142
+ unavailable_authority: z.array(textSchema),
143
+ required_next_evidence: z.array(textSchema),
147
144
  disposition: z.enum(["active", "blocked", "out-of-scope"]),
148
- review_evidence_ids: z.array(evidenceIdSchema).min(1).max(100),
145
+ review_evidence_ids: z.array(evidenceIdSchema).min(1),
149
146
  });
150
147
  const diagnosticSchema = z.strictObject({
151
148
  code: z.enum([
@@ -172,32 +169,32 @@ const diagnosticSchema = z.strictObject({
172
169
  "blocked",
173
170
  "out-of-scope",
174
171
  ]),
175
- detail: boundedTextSchema,
172
+ detail: textSchema,
176
173
  });
177
174
  export const reconstructionObligationSchema = z.strictObject({
178
175
  obligation_id: stableIdSchema,
179
176
  obligation_version: z.number().int().min(1),
180
- title: z.string().trim().min(1).max(500),
177
+ title: textSchema,
181
178
  origin: z.enum(["generated", "reviewed"]),
182
179
  application_layer: obligationLayerSchema,
183
- family: z.string().trim().min(1).max(100),
180
+ family: textSchema,
184
181
  target: obligationTargetSchema,
185
- authority_references: z.array(authorityReferenceSchema).min(1).max(1_000),
182
+ authority_references: z.array(authorityReferenceSchema).min(1),
186
183
  source_state: z.enum(["candidate", "observed", "reviewed", "unknown"]),
187
- observed_cases: z.array(observedCaseSchema).max(100),
184
+ observed_cases: z.array(observedCaseSchema),
188
185
  required: z.boolean(),
189
- required_case_kinds: z.array(obligationCaseKindSchema).min(1).max(5),
186
+ required_case_kinds: z.array(obligationCaseKindSchema).min(1),
190
187
  required_original_authority: obligationOriginalAuthoritySchema,
191
188
  required_fixture_authority: obligationProofAuthoritySchema,
192
189
  required_verifier_authority: obligationProofAuthoritySchema,
193
190
  requires_parser_type: z.boolean(),
194
- dependency_obligation_ids: z.array(stableIdSchema).max(1_000),
195
- residual_unknown_ids: z.array(stableIdSchema).max(1_000),
196
- unavailable_authority: z.array(boundedTextSchema).max(100),
197
- required_next_evidence: z.array(boundedTextSchema).max(100),
191
+ dependency_obligation_ids: z.array(stableIdSchema),
192
+ residual_unknown_ids: z.array(stableIdSchema),
193
+ unavailable_authority: z.array(textSchema),
194
+ required_next_evidence: z.array(textSchema),
198
195
  binding: reconstructionObligationManifestBindingSchema.nullable(),
199
196
  status: obligationStatusSchema,
200
- diagnostics: z.array(diagnosticSchema).max(1_000),
197
+ diagnostics: z.array(diagnosticSchema),
201
198
  });
202
199
  const countBySchema = (key) => z.array(z.strictObject({
203
200
  key,
@@ -205,15 +202,11 @@ const countBySchema = (key) => z.array(z.strictObject({
205
202
  }));
206
203
  export const reconstructionObligationLedgerSchema = z.strictObject({
207
204
  schema: z.literal("ReconstructionObligationLedger"),
208
- schema_version: z.literal(1),
209
205
  ledger_id: z.string().regex(/^rol_[a-f0-9]{64}$/u),
210
206
  closure_digest: digestSchema,
211
207
  status: z.enum(["ready", "open", "failed", "unknown"]),
212
208
  coverage: z.strictObject({
213
209
  status: z.enum(["complete", "partial"]),
214
- truncated: z.boolean(),
215
- omitted_count: z.number().int().min(0),
216
- max_obligations: z.number().int().min(1),
217
210
  }),
218
211
  summary: z.strictObject({
219
212
  total: z.number().int().min(0),
@@ -232,41 +225,21 @@ export const reconstructionObligationLedgerSchema = z.strictObject({
232
225
  }),
233
226
  ownership_graph: z.array(z.strictObject({
234
227
  obligation_id: stableIdSchema,
235
- module_path: boundedTextSchema,
236
- symbol: z.string().trim().min(1).max(1_024),
228
+ module_path: textSchema,
229
+ symbol: textSchema,
237
230
  })),
238
231
  dependency_graph: z.array(z.strictObject({
239
232
  obligation_id: stableIdSchema,
240
233
  depends_on_obligation_id: stableIdSchema,
241
234
  })),
242
- obligations: z.array(reconstructionObligationSchema).max(10_000),
243
- evidence_links: z.array(evidenceIdSchema).max(100_000),
244
- limitations: z.array(boundedTextSchema).max(1_000),
235
+ obligations: z.array(reconstructionObligationSchema),
236
+ evidence_links: z.array(evidenceIdSchema),
237
+ limitations: z.array(textSchema),
245
238
  });
246
239
  export const reconstructionObligationLedgerInputSchema = z.strictObject({
247
240
  evidence_bundle: evidenceBundleSchema,
248
- reviewed_obligations: z
249
- .array(reviewedReconstructionObligationSchema)
250
- .max(10_000),
241
+ reviewed_obligations: z.array(reviewedReconstructionObligationSchema),
251
242
  manifest: reconstructionObligationManifestSchema,
252
- limits: z.strictObject({
253
- max_obligations: z.number().int().min(1).max(10_000),
254
- }),
255
- page: z.strictObject({
256
- offset: z.number().int().min(0).max(10_000),
257
- limit: z.number().int().min(1).max(100),
258
- }),
259
- });
260
- export const reconstructionObligationLedgerPageSchema = z.strictObject({
261
- ...reconstructionObligationLedgerSchema.omit({ obligations: true }).shape,
262
- page: z.strictObject({
263
- offset: z.number().int().min(0),
264
- limit: z.number().int().min(1).max(100),
265
- total: z.number().int().min(0),
266
- returned: z.number().int().min(0),
267
- next_offset: z.number().int().min(0).nullable(),
268
- }),
269
- obligations: z.array(reconstructionObligationSchema).max(100),
270
243
  });
271
244
  /** Parse and canonically serialize one complete reconstruction obligation ledger. */
272
245
  export const serializeReconstructionObligationLedger = (input) => {