rea-agents 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. package/README.md +83 -108
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisContextQueries.js +21 -9
  6. package/dist/application/AnalysisSnapshotCache.js +0 -1
  7. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  8. package/dist/application/AndroidApplicationService.js +1 -1
  9. package/dist/application/AppleApplicationService.js +1 -1
  10. package/dist/application/ArtifactExtraction.js +35 -54
  11. package/dist/application/ArtifactExtractionDestination.js +17 -0
  12. package/dist/application/ArtifactGraphConstruction.js +2 -17
  13. package/dist/application/ArtifactInventory/classify.js +2 -6
  14. package/dist/application/ArtifactInventory/hash.js +2 -20
  15. package/dist/application/ArtifactInventory/policy.js +17 -0
  16. package/dist/application/ArtifactInventory/reader.js +1 -4
  17. package/dist/application/ArtifactInventory/scanCanonical.js +8 -15
  18. package/dist/application/ArtifactInventory/scanReader.js +76 -58
  19. package/dist/application/ArtifactInventory/types.js +1 -5
  20. package/dist/application/ArtifactInventory.js +6 -14
  21. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  22. package/dist/application/BinarySession.js +54 -28
  23. package/dist/application/BinarySessionComposition.js +0 -11
  24. package/dist/application/BinarySessionOpen.js +2 -1
  25. package/dist/application/BinarySessionRecords.js +24 -86
  26. package/dist/application/BinarySessionStatus.js +16 -21
  27. package/dist/application/BinaryTargetResolver.js +216 -0
  28. package/dist/application/BrowserEvidence.js +39 -57
  29. package/dist/application/BrowserObservationService.js +3 -6
  30. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  31. package/dist/application/BrowserScenarioEvidence.js +3 -3
  32. package/dist/application/CallPathTracing.js +2 -36
  33. package/dist/application/CapabilityClientRequirements.js +26 -0
  34. package/dist/application/CapabilityInventory.js +143 -77
  35. package/dist/application/ClientConfigurationDocument.js +27 -0
  36. package/dist/application/ClientRegistrationStatus.js +16 -13
  37. package/dist/application/CommandShimReplay.js +14 -1
  38. package/dist/application/DirectAnalysis.js +22 -46
  39. package/dist/application/DirectAnalysisStatus.js +5 -61
  40. package/dist/application/Doctor.js +11 -32
  41. package/dist/application/DoctorDiagnostics.js +1 -2
  42. package/dist/application/DoctorScope.js +1 -1
  43. package/dist/application/ElectronActiveEvidence.js +50 -0
  44. package/dist/application/ElectronActiveObservationPort.js +1 -0
  45. package/dist/application/ElectronActiveObservationService.js +78 -0
  46. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  47. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  48. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  49. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  50. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  51. package/dist/application/ElectronEvidence.js +4 -7
  52. package/dist/application/ElectronObservationService.js +5 -9
  53. package/dist/application/EnhancedLiteralTracing.js +42 -65
  54. package/dist/application/EnhancedTools.js +98 -64
  55. package/dist/application/EvidenceBundleCommands.js +16 -12
  56. package/dist/application/EvidenceBundleFiles.js +9 -15
  57. package/dist/application/EvidenceLedger.js +14 -42
  58. package/dist/application/FilesystemSnapshot.js +2 -3
  59. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  60. package/dist/application/InventoryProjectionEvidence.js +4 -2
  61. package/dist/application/InvestigationProviders.js +1 -1
  62. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  63. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  64. package/dist/application/JavaScriptApplicationService.js +6 -29
  65. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  66. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  67. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  68. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  69. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  70. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  71. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  72. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  73. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  74. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  75. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  76. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  77. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  78. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  79. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  80. package/dist/application/JavaScriptJsonModules.js +2 -2
  81. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  82. package/dist/application/JavaScriptReplayPermission.js +1 -1
  83. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  84. package/dist/application/JavaScriptReplayService.js +29 -47
  85. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  86. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  87. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  88. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  89. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  90. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  91. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  92. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  93. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  94. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  95. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  96. package/dist/application/JsonFiles.js +79 -0
  97. package/dist/application/LinuxHopper.js +11 -9
  98. package/dist/application/LoopbackReplay.js +26 -23
  99. package/dist/application/LoopbackReplayRecorder.js +29 -1
  100. package/dist/application/ManagedApplicationGraphService.js +1 -2
  101. package/dist/application/ManagedMemberComparisonService.js +11 -41
  102. package/dist/application/ManagedNativeVerificationService.js +1 -2
  103. package/dist/application/ManagedReconstructionService.js +1 -1
  104. package/dist/application/ManagedRuntimeCorrelationService.js +14 -13
  105. package/dist/application/NativeApiInspection.js +2 -7
  106. package/dist/application/NativeUiActionTrace.js +394 -0
  107. package/dist/application/NodeRuntimeCharacterizationService.js +11 -16
  108. package/dist/application/PermissionAuthority.js +15 -7
  109. package/dist/application/PermissionFailure.js +5 -0
  110. package/dist/application/ProcessCaptureAuthority.js +5 -7
  111. package/dist/application/ProcessCaptureJournal.js +3 -2
  112. package/dist/application/ProcessCaptureLifecycle.js +10 -12
  113. package/dist/application/ProcessCheckpoints.js +29 -11
  114. package/dist/application/ProcessCli.js +8 -17
  115. package/dist/application/ProcessEvidence.js +5 -7
  116. package/dist/application/ProcessHarness.js +60 -20
  117. package/dist/application/ProcessNormalization.js +2 -1
  118. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  119. package/dist/application/ProcessReactiveEffects.js +9 -3
  120. package/dist/application/ProcessReactiveHarness.js +13 -7
  121. package/dist/application/ProcessSampling.js +2 -4
  122. package/dist/application/ProcessTimer.js +39 -0
  123. package/dist/application/ProjectPermissionStore.js +39 -95
  124. package/dist/application/RealHopperAssertions.js +20 -66
  125. package/dist/application/ReconstructionCoverageService.js +12 -58
  126. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  127. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  128. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  129. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  130. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  131. package/dist/application/ReferenceSourceImport.js +21 -47
  132. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  133. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  134. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  135. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  136. package/dist/application/SessionProviderRouter.js +2 -2
  137. package/dist/application/Setup.js +1 -3
  138. package/dist/application/SetupClientConfiguration.js +22 -88
  139. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  140. package/dist/application/StoreFileLock.js +119 -0
  141. package/dist/application/TerminalRenderer.js +2 -3
  142. package/dist/application/Uninstall.js +9 -14
  143. package/dist/application/UnknownEvidence.js +1 -1
  144. package/dist/application/WindowsCapabilities.js +5 -4
  145. package/dist/artifacts/ArtifactPaths.js +2 -5
  146. package/dist/artifacts/ArtifactProvider.js +43 -67
  147. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  148. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  149. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  150. package/dist/artifacts/NibArchive.js +269 -0
  151. package/dist/artifacts/SafeOutputTree.js +21 -31
  152. package/dist/browser/BrowserProcessStartup.js +1 -2
  153. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  154. package/dist/browser/CdpBrowserProvider.js +3 -13
  155. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  156. package/dist/browser/CdpCaptureDocuments.js +28 -76
  157. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  158. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  159. package/dist/browser/CdpCaptureEvents.js +2 -8
  160. package/dist/browser/CdpCaptureStorage.js +9 -20
  161. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -95
  162. package/dist/browser/CdpCaptureValues.js +21 -21
  163. package/dist/browser/CdpConnection.js +10 -25
  164. package/dist/browser/CdpElectronInspection.js +29 -51
  165. package/dist/browser/CdpElectronProvider.js +10 -35
  166. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  167. package/dist/browser/CdpElectronScripts.js +6 -35
  168. package/dist/browser/CdpElectronWorkers.js +6 -10
  169. package/dist/browser/CdpEndpoint.js +25 -41
  170. package/dist/browser/CdpObservationSession.js +14 -26
  171. package/dist/browser/CdpPageCapture.js +34 -48
  172. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  173. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  174. package/dist/browser/CdpSafeMetadata.js +19 -22
  175. package/dist/browser/CdpScreenshot.js +3 -5
  176. package/dist/browser/CdpTargetSession.js +1 -2
  177. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  178. package/dist/browser/ElectronFileScope.js +8 -19
  179. package/dist/browser/JavaScriptRuntimeScope.js +10 -10
  180. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  181. package/dist/browser/PlaywrightElectronActiveActions.js +309 -0
  182. package/dist/browser/PlaywrightElectronActiveProvider.js +274 -0
  183. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  184. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  185. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  186. package/dist/browser/PlaywrightScenarioBrowser.js +7 -9
  187. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  188. package/dist/browser/PlaywrightScenarioSession.js +18 -34
  189. package/dist/browser/PngVisualDiff.js +22 -14
  190. package/dist/browser/SensitiveTextCapture.js +1 -18
  191. package/dist/browser/V8InspectorCaptureProjection.js +7 -7
  192. package/dist/browser/V8InspectorEndpoint.js +12 -14
  193. package/dist/browser/V8InspectorProvider.js +20 -61
  194. package/dist/browser/WebSourceMapFetcher.js +56 -176
  195. package/dist/catalogIdentity.js +12 -60
  196. package/dist/cli/artifactCommands.js +49 -77
  197. package/dist/cli/coreAnalysisCommands.js +83 -133
  198. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  199. package/dist/cli/managedCommands.js +6 -271
  200. package/dist/cli/setupCommands.js +3 -12
  201. package/dist/cli/utilityCommands.js +7 -41
  202. package/dist/cli.js +0 -2
  203. package/dist/cliApplicationCommands.js +44 -114
  204. package/dist/cliBrowserAdvancedCommands.js +12 -102
  205. package/dist/cliBrowserCommands.js +19 -124
  206. package/dist/cliBrowserContext.js +30 -0
  207. package/dist/cliCommandNames.js +5 -5
  208. package/dist/cliElectronCommands.js +49 -71
  209. package/dist/cliEvidenceCommands.js +8 -77
  210. package/dist/cliJavaScriptRuntimeCommands.js +18 -92
  211. package/dist/cliJsonInput.js +4 -14
  212. package/dist/cliObservationOptions.js +11 -92
  213. package/dist/cliPolicyCommands.js +2 -16
  214. package/dist/cliProcessCommands.js +3 -3
  215. package/dist/cliSetup.js +0 -13
  216. package/dist/config/browserScenario.js +77 -0
  217. package/dist/config/electronAutomation.js +35 -0
  218. package/dist/config/environment.js +6 -9
  219. package/dist/config/javascriptReplay.js +41 -0
  220. package/dist/config/managedRuntime.js +25 -0
  221. package/dist/config/parseConfig.js +56 -232
  222. package/dist/config/parsers.js +16 -28
  223. package/dist/config/passiveObservation.js +87 -0
  224. package/dist/config/permissions.js +0 -7
  225. package/dist/config/processCapture.js +47 -0
  226. package/dist/contracts/analysisSearchContract.js +2 -5
  227. package/dist/contracts/applicationToolContracts.js +58 -114
  228. package/dist/contracts/applicationWorkflowInputContracts.js +29 -114
  229. package/dist/contracts/artifactComparisonExample.js +58 -60
  230. package/dist/contracts/artifactToolContracts.js +37 -91
  231. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  232. package/dist/contracts/browserToolContracts.js +10 -75
  233. package/dist/contracts/electronToolContracts.js +27 -98
  234. package/dist/contracts/enhancedInputs.js +31 -78
  235. package/dist/contracts/errorSchemas.js +0 -1
  236. package/dist/contracts/functionComparisonExample.js +10 -24
  237. package/dist/contracts/functionInstructionContract.js +1 -3
  238. package/dist/contracts/functionWorkflowToolContracts.js +4 -5
  239. package/dist/contracts/hopperMemoryContracts.js +3 -3
  240. package/dist/contracts/investigationExamples.js +14 -11
  241. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  242. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  243. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  244. package/dist/contracts/managedToolContracts.js +10 -104
  245. package/dist/contracts/managedWorkflowExamples.js +77 -125
  246. package/dist/contracts/managedWorkflowToolContracts.js +51 -74
  247. package/dist/contracts/nativeToolContracts.js +9 -14
  248. package/dist/contracts/processCaptureExample.js +2 -69
  249. package/dist/contracts/promptContracts.js +49 -67
  250. package/dist/contracts/providerSelection.js +0 -1
  251. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  252. package/dist/contracts/sessionStatusContract.js +1 -17
  253. package/dist/contracts/sessionToolSchemas.js +52 -0
  254. package/dist/contracts/toolContractExamples.js +11 -10
  255. package/dist/contracts/toolContractHelpers.js +19 -0
  256. package/dist/contracts/toolContracts.js +60 -143
  257. package/dist/contracts/toolEffects.js +16 -9
  258. package/dist/contracts/toolOutputSchemaGroups.js +47 -86
  259. package/dist/contracts/toolOutputSchemaPrimitives.js +72 -62
  260. package/dist/contracts/toolSchemaMetadata.js +117 -0
  261. package/dist/contracts/unknownContractExamples.js +0 -2
  262. package/dist/doctorRuntime.js +1 -1
  263. package/dist/domain/analysisErrorPresentation.js +46 -54
  264. package/dist/domain/analysisErrorProjection.js +28 -37
  265. package/dist/domain/analysisProfile.js +3 -31
  266. package/dist/domain/analysisSnapshot.js +3 -12
  267. package/dist/domain/androidApplication.js +15 -52
  268. package/dist/domain/appleApplication.js +24 -65
  269. package/dist/domain/artifactComparison.js +11 -29
  270. package/dist/domain/artifactGraph.js +14 -44
  271. package/dist/domain/artifactInspection.js +38 -69
  272. package/dist/domain/artifactInventoryEvidence.js +27 -21
  273. package/dist/domain/binaryTarget.js +2 -219
  274. package/dist/domain/binaryTargetTypes.js +1 -0
  275. package/dist/domain/browserCaptureComparison.js +35 -60
  276. package/dist/domain/browserObservation.js +45 -197
  277. package/dist/domain/browserObservationSchemas.js +5 -23
  278. package/dist/domain/browserScenario.js +11 -14
  279. package/dist/domain/browserScenarioCapture.js +11 -12
  280. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  281. package/dist/domain/browserScenarioDiff.js +2 -59
  282. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  283. package/dist/domain/browserScenarioDiffValues.js +21 -38
  284. package/dist/domain/browserScenarioValues.js +80 -109
  285. package/dist/domain/browserSession.js +4 -7
  286. package/dist/domain/bundleComparison.js +6 -32
  287. package/dist/domain/bytecodeProvider.js +53 -54
  288. package/dist/domain/callPath.js +50 -169
  289. package/dist/domain/callPathSchemas.js +79 -0
  290. package/dist/domain/changedBehavior.js +34 -60
  291. package/dist/domain/completionLedgerGeneration.js +8 -14
  292. package/dist/domain/conformancePackage.js +126 -97
  293. package/dist/domain/conformanceReplay.js +39 -11
  294. package/dist/domain/conformanceTrustGate.js +174 -30
  295. package/dist/domain/customProtocolCapture.js +4 -4
  296. package/dist/domain/electronActiveObservation.js +244 -0
  297. package/dist/domain/electronObservation.js +21 -83
  298. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  299. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  300. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  301. package/dist/domain/electronStaticAnalysisValues.js +14 -18
  302. package/dist/domain/errors.js +33 -54
  303. package/dist/domain/eventProcessTree.js +101 -90
  304. package/dist/domain/evidence.js +2 -10
  305. package/dist/domain/evidenceBundle.js +3 -5
  306. package/dist/domain/evidenceCompletionLedger.js +6 -8
  307. package/dist/domain/functionComparison.js +4 -14
  308. package/dist/domain/functionComparisonNormalization.js +8 -8
  309. package/dist/domain/functionComparisonResults.js +25 -15
  310. package/dist/domain/functionComparisonSchemas.js +49 -33
  311. package/dist/domain/functionDossierEvidence.js +31 -151
  312. package/dist/domain/hopperStartupFailure.js +1 -1
  313. package/dist/domain/hopperValues.js +17 -141
  314. package/dist/domain/inputIssueProjection.js +4 -1
  315. package/dist/domain/interfaceBuilderGraph.js +654 -0
  316. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  317. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  318. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  319. package/dist/domain/javascriptApplicationGraph.js +3 -13
  320. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  321. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  322. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  323. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  324. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  325. package/dist/domain/javascriptAstFingerprint.js +25 -58
  326. package/dist/domain/javascriptAstValues.js +9 -0
  327. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  328. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  329. package/dist/domain/javascriptExportShapeComparisonSchemas.js +70 -77
  330. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  331. package/dist/domain/javascriptFeatureSeed.js +20 -12
  332. package/dist/domain/javascriptFeatureTrace.js +13 -67
  333. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  334. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  335. package/dist/domain/javascriptNativeHandoff.js +1 -1
  336. package/dist/domain/javascriptReplay.js +100 -101
  337. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  338. package/dist/domain/javascriptRuntimeObservation.js +43 -103
  339. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  340. package/dist/domain/javascriptRuntimeReconciliationActive.js +80 -0
  341. package/dist/domain/javascriptRuntimeReconciliationGraph.js +21 -33
  342. package/dist/domain/javascriptRuntimeReconciliationMatching.js +75 -61
  343. package/dist/domain/javascriptRuntimeReconciliationParsing.js +21 -46
  344. package/dist/domain/javascriptRuntimeReconciliationResult.js +25 -19
  345. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  346. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +34 -49
  347. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  348. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  349. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  350. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  351. package/dist/domain/javascriptSemanticCalls.js +5 -32
  352. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  353. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  354. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  355. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  356. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  357. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  358. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  359. package/dist/domain/javascriptSemanticIr.js +1 -29
  360. package/dist/domain/javascriptSemanticObjects.js +1 -5
  361. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  362. package/dist/domain/javascriptSemanticProjection.js +0 -18
  363. package/dist/domain/javascriptSemanticPromises.js +9 -16
  364. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  365. package/dist/domain/javascriptSemanticQuery.js +17 -139
  366. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  367. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  368. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  369. package/dist/domain/javascriptSemanticResources.js +1 -6
  370. package/dist/domain/javascriptSemanticReturns.js +10 -27
  371. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  372. package/dist/domain/javascriptSemanticValues.js +44 -62
  373. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  374. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  375. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  376. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  377. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  378. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  379. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  380. package/dist/domain/jsonShape.js +7 -33
  381. package/dist/domain/localPath.js +7 -0
  382. package/dist/domain/managedApplicationGraph.js +9 -41
  383. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  384. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  385. package/dist/domain/managedArtifact.js +14 -27
  386. package/dist/domain/managedMemberComparison.js +90 -92
  387. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  388. package/dist/domain/managedMemberComparisonItems.js +221 -0
  389. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  390. package/dist/domain/managedNativeVerification.js +3 -6
  391. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  392. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  393. package/dist/domain/managedReconstruction.js +19 -23
  394. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  395. package/dist/domain/nativeApiBoundary.js +17 -14
  396. package/dist/domain/nativeInspection.js +0 -2
  397. package/dist/domain/nativeInvestigationGraph.js +351 -0
  398. package/dist/domain/nativeValueFlow.js +61 -0
  399. package/dist/domain/nodeRuntimeCharacterization.js +15 -18
  400. package/dist/domain/objcSwiftMetadata.js +254 -0
  401. package/dist/domain/peInspection.js +1 -1
  402. package/dist/domain/permissionPolicy.js +13 -0
  403. package/dist/domain/processCapture.js +76 -113
  404. package/dist/domain/processCaptureExample.js +68 -0
  405. package/dist/domain/processCaptureParsing.js +21 -0
  406. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  407. package/dist/domain/processCaptureReactiveValidation.js +8 -3
  408. package/dist/domain/processCaptureValidation.js +8 -10
  409. package/dist/domain/processComparison.js +12 -16
  410. package/dist/domain/processObservation.js +5 -6
  411. package/dist/domain/processReactiveMatching.js +32 -46
  412. package/dist/domain/processReactiveRuntime.js +4 -8
  413. package/dist/domain/processReactiveScenario.js +28 -94
  414. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  415. package/dist/domain/processReactiveTransition.js +42 -21
  416. package/dist/domain/processScenario.js +62 -93
  417. package/dist/domain/processTraceComparison.js +0 -7
  418. package/dist/domain/processTraceEvaluation.js +14 -4
  419. package/dist/domain/processTraceSpecification.js +11 -17
  420. package/dist/domain/protocolCapture.js +11 -9
  421. package/dist/domain/reconstructionCoverage.js +62 -129
  422. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  423. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  424. package/dist/domain/reconstructionReadiness.js +1 -2
  425. package/dist/domain/reconstructionReadinessSchemas.js +66 -40
  426. package/dist/domain/reconstructionUnknowns.js +3 -3
  427. package/dist/domain/reconstructionVerification.js +13 -47
  428. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  429. package/dist/domain/referenceSourceGraph.js +53 -61
  430. package/dist/domain/referenceSourceImportParsing.js +3 -7
  431. package/dist/domain/replayMachine.js +19 -31
  432. package/dist/domain/replayMachineRun.js +15 -63
  433. package/dist/domain/replayMachineRuntime.js +46 -44
  434. package/dist/domain/replayMachineValues.js +84 -0
  435. package/dist/domain/residualUnknown.js +25 -30
  436. package/dist/domain/runtimeCharacterization.js +15 -16
  437. package/dist/domain/runtimeIdentification.js +48 -47
  438. package/dist/domain/sourceToBundleComparison.js +11 -87
  439. package/dist/domain/sourceToBundleComparisonSchemas.js +25 -50
  440. package/dist/domain/sourceToBundleSignals.js +11 -16
  441. package/dist/domain/staticRuntimeCorrelation.js +44 -54
  442. package/dist/domain/symbolAnalysis.js +10 -19
  443. package/dist/domain/unicodeCodePointOrder.js +12 -0
  444. package/dist/domain/webBundleAnalysis.js +70 -99
  445. package/dist/domain/webBundleAnalyzer.js +2 -4
  446. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  447. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  448. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  449. package/dist/domain/webCaptureDiff.js +48 -85
  450. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  451. package/dist/domain/webContentArtifact.js +1 -10
  452. package/dist/domain/webMcpDiscovery.js +3 -14
  453. package/dist/domain/webScreenshot.js +58 -34
  454. package/dist/domain/zipPackageFormat.js +7 -0
  455. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  456. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  457. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  458. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  459. package/dist/dotnet/ManagedMemberRows.js +16 -16
  460. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  461. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  462. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  463. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  464. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  465. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  466. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -42
  467. package/dist/dotnet/ManagedPeReader.js +2 -2
  468. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  469. package/dist/generatedMcpToolCatalog.js +1 -1
  470. package/dist/generatedPackageMetadata.js +1 -1
  471. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  472. package/dist/ghidra/GhidraClient.js +5 -13
  473. package/dist/ghidra/GhidraClientStartup.js +1 -1
  474. package/dist/ghidra/GhidraClientWire.js +9 -5
  475. package/dist/ghidra/GhidraDefaults.js +0 -18
  476. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  477. package/dist/ghidra/GhidraDoctor.js +16 -12
  478. package/dist/ghidra/GhidraFunctionValues.js +67 -108
  479. package/dist/ghidra/GhidraInstallation.js +98 -42
  480. package/dist/ghidra/GhidraInventoryValues.js +18 -77
  481. package/dist/ghidra/GhidraLauncher.js +0 -8
  482. package/dist/ghidra/GhidraProvider.js +32 -31
  483. package/dist/ghidra/GhidraProviderCapabilities.js +11 -48
  484. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  485. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  486. package/dist/ghidra/GhidraSessionValues.js +0 -2
  487. package/dist/ghidra/GhidraSocketConnection.js +1 -1
  488. package/dist/ghidra/GhidraTransport.js +4 -7
  489. package/dist/ghidra/protocol.js +19 -42
  490. package/dist/hopper/BridgeLauncher.js +115 -37
  491. package/dist/hopper/HopperAnalysisProfile.js +3 -5
  492. package/dist/hopper/HopperCleanup.js +11 -9
  493. package/dist/hopper/HopperClient.js +5 -8
  494. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  495. package/dist/hopper/HopperProvider.js +0 -30
  496. package/dist/hopper/HopperRequestQueue.js +21 -40
  497. package/dist/hopper/HopperResponseStream.js +1 -9
  498. package/dist/hopper/HopperSessionValues.js +3 -2
  499. package/dist/hopper/HopperTargetLease.js +119 -0
  500. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  501. package/dist/hopper/LinuxPrivateDisplayProbe.js +21 -26
  502. package/dist/hopper/protocol.js +6 -4
  503. package/dist/main/reload.js +1 -9
  504. package/dist/main/shutdown.js +1 -1
  505. package/dist/main/state.js +0 -23
  506. package/dist/main/transport.js +27 -39
  507. package/dist/main.js +17 -15
  508. package/dist/mcpDoctor.js +27 -69
  509. package/dist/native/CommandRunner.js +18 -25
  510. package/dist/native/NativeMacOSProvider.js +13 -38
  511. package/dist/native/NativeMachoInspection.js +1 -1
  512. package/dist/process/BoundedFileBytes.js +17 -0
  513. package/dist/process/ExecFileOutput.js +11 -0
  514. package/dist/process/PendingOperations.js +8 -6
  515. package/dist/process/PrivateRuntimeRoot.js +17 -0
  516. package/dist/process/ProcessOwnership.js +67 -130
  517. package/dist/process/ProcessOwnershipIdentity.js +13 -0
  518. package/dist/process/ProcessOwnershipObservation.js +87 -0
  519. package/dist/process/ProcessOwnershipProcessTree.js +22 -0
  520. package/dist/process/ProviderDeadline.js +8 -12
  521. package/dist/process/ProviderProcess.js +7 -28
  522. package/dist/process/WindowsAuthority.js +32 -0
  523. package/dist/reference/ReferenceSourceReader.js +8 -24
  524. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  525. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  526. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  527. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  528. package/dist/replay/JavaScriptReplayWorker.js +95 -13
  529. package/dist/replay/JavaScriptReplayWorkerTypes.js +1 -0
  530. package/dist/replay/LinuxJavaScriptReplayRunner.js +42 -43
  531. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  532. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  533. package/dist/replay/ReplayOutcome.js +27 -18
  534. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  535. package/dist/replay/ReplaySeccompFile.js +29 -0
  536. package/dist/replay/ReplayWorkerProtocol.js +33 -30
  537. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  538. package/dist/server/ProcessCaptureElicitation.js +4 -8
  539. package/dist/server/createServer.js +145 -119
  540. package/dist/server/mcpClientMetadata.js +32 -0
  541. package/dist/server/promptCompletion.js +37 -61
  542. package/dist/server/recordDerivedEvidence.js +1 -1
  543. package/dist/server/registerApplicationTools/characterization.js +10 -21
  544. package/dist/server/registerApplicationTools/compareExportShapes.js +6 -16
  545. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -15
  546. package/dist/server/registerApplicationTools/compareVersions.js +6 -16
  547. package/dist/server/registerApplicationTools/controlledReplay.js +8 -15
  548. package/dist/server/registerApplicationTools/coverage.js +7 -78
  549. package/dist/server/registerApplicationTools/helpers.js +1 -13
  550. package/dist/server/registerApplicationTools/obligationLedger.js +4 -8
  551. package/dist/server/registerApplicationTools/traceFeature.js +6 -15
  552. package/dist/server/registerApplicationTools/traceSemantics.js +5 -13
  553. package/dist/server/registerApplicationTools.js +0 -2
  554. package/dist/server/registerArtifactComparisonTool.js +27 -35
  555. package/dist/server/registerBrowserScenarioTool.js +3 -8
  556. package/dist/server/registerBrowserTools.js +36 -81
  557. package/dist/server/registerBundleComparisonTool.js +10 -16
  558. package/dist/server/registerCloseLifecycleTool.js +5 -27
  559. package/dist/server/registerElectronTools.js +29 -65
  560. package/dist/server/registerEnhancedTools.js +118 -127
  561. package/dist/server/registerEvidenceTools.js +19 -30
  562. package/dist/server/registerFunctionComparisonTool.js +35 -34
  563. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  564. package/dist/server/registerInvestigationTools.js +36 -148
  565. package/dist/server/registerJavaScriptRuntimeObservationTools.js +15 -27
  566. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +16 -23
  567. package/dist/server/registerManagedWorkflowTools/contract.js +2 -3
  568. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  569. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -14
  570. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +4 -14
  571. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +11 -20
  572. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +10 -21
  573. package/dist/server/registerOfficialTools.js +8 -51
  574. package/dist/server/registerProcessComparisonTool.js +43 -38
  575. package/dist/server/registerPrompts.js +19 -17
  576. package/dist/server/registerReplayMachineTool.js +4 -10
  577. package/dist/server/registerSessionRecordTools.js +36 -153
  578. package/dist/server/registerSessionStatusTool.js +18 -96
  579. package/dist/server/registerSessionTools.js +34 -91
  580. package/dist/server/sessionAvailabilityPolicy.js +2 -3
  581. package/dist/server/sessionEvidence.js +9 -15
  582. package/dist/server/sessionToolPolicies.js +1 -13
  583. package/dist/server/toolRegistrationOptions.js +4 -192
  584. package/dist/server/toolResult.js +15 -67
  585. package/dist/serverIdentity.js +0 -20
  586. package/install.sh +1 -1
  587. package/package.json +27 -15
  588. package/scripts/electron-active-hook-boundaries.cjs +394 -0
  589. package/scripts/electron-active-hook.cjs +469 -0
  590. package/scripts/hopper-demo-x11.py +13 -32
  591. package/scripts/rea.mjs +1 -11
  592. package/skills/reverse-engineer-anything/SKILL.md +46 -11
  593. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  594. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  595. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  596. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -180
  597. package/dist/application/BoundedJsonFiles.js +0 -86
  598. package/dist/application/CrossVersionInventory.js +0 -128
  599. package/dist/application/CrossVersionInvestigation.js +0 -301
  600. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  601. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  602. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  603. package/dist/application/DeferredFileAuthorization.js +0 -61
  604. package/dist/application/DoctorProjection.js +0 -43
  605. package/dist/application/EnhancedToolPagination.js +0 -22
  606. package/dist/application/EvidenceReferenceResolver.js +0 -26
  607. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  608. package/dist/application/ProcessPairedExperiment.js +0 -72
  609. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  610. package/dist/application/ReconstructionReadinessService.js +0 -48
  611. package/dist/cliInvestigationCommands.js +0 -173
  612. package/dist/domain/boundedCartesianProjection.js +0 -15
  613. package/dist/domain/investigationWorkspace.js +0 -346
  614. package/dist/domain/jsonLimits.js +0 -26
  615. package/dist/domain/knownPageCoverage.js +0 -21
  616. package/dist/domain/processPairedExperiment.js +0 -128
  617. package/dist/server/DynamicToolAvailability.js +0 -70
  618. package/dist/server/LazyToolCatalog.js +0 -134
  619. package/dist/server/hydrateServerTools.js +0 -191
  620. package/dist/server/javascriptApplicationResult.js +0 -106
  621. package/dist/server/permissionFailure.js +0 -12
  622. package/dist/server/registerApplicationTools/readiness.js +0 -55
  623. package/dist/server/registerEvidenceResources.js +0 -315
  624. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  625. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  626. package/dist/server/registerReconstructionReadinessResource.js +0 -32
  627. package/dist/server/toolInputValidation.js +0 -77
  628. package/scripts/package-runner-bootstrap.mjs +0 -72
@@ -2,8 +2,8 @@ import { z } from "zod";
2
2
  const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u);
3
3
  const unknownIdSchema = z.string().regex(/^unk_[a-f0-9]{64}$/u);
4
4
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
5
- const claimIdSchema = z.string().regex(/^[A-Za-z][A-Za-z0-9._-]{0,99}$/u);
6
- const titleSchema = z.string().trim().min(1).max(500);
5
+ const claimIdSchema = z.string().regex(/^[A-Za-z][A-Za-z0-9._-]*$/u);
6
+ const titleSchema = z.string().trim().min(1);
7
7
  const verificationStatusSchema = z.enum(["pass", "fail", "unknown"]);
8
8
  const commonClaim = {
9
9
  claim_id: claimIdSchema,
@@ -52,9 +52,8 @@ const reconstructionClaimSchema = z.discriminatedUnion("kind", [
52
52
  /** Finite, typed behavioral and structural specification. */
53
53
  export const reconstructionSpecificationSchema = z
54
54
  .object({
55
- schema_version: z.literal(1),
56
- name: z.string().trim().min(1).max(200),
57
- claims: z.array(reconstructionClaimSchema).min(1).max(100),
55
+ name: z.string().trim().min(1),
56
+ claims: z.array(reconstructionClaimSchema).min(1),
58
57
  })
59
58
  .superRefine((value, context) => {
60
59
  const ids = value.claims.map(({ claim_id: id }) => id);
@@ -67,20 +66,9 @@ export const reconstructionSpecificationSchema = z
67
66
  message: "Claim comparison selectors must be unique",
68
67
  });
69
68
  });
70
- /** Bounded reconstruction-verification input. */
69
+ /** Reconstruction-verification input. */
71
70
  export const reconstructionVerificationInputSchema = z.strictObject({
72
71
  specification: reconstructionSpecificationSchema,
73
- coverage: z
74
- .strictObject({
75
- workspace_id: z.string().regex(/^rcw_[a-f0-9]{64}$/u),
76
- revision: z.number().int().min(1),
77
- revision_sha256: digestSchema,
78
- boundary_id: z.string().min(1).max(200),
79
- })
80
- .optional(),
81
- offset: z.number().int().min(0).default(0),
82
- limit: z.number().int().min(1).max(100).default(100),
83
- unknown_registry_approved: z.literal(true).optional(),
84
72
  });
85
73
  export const reconstructionClaimResultSchema = z.object({
86
74
  claim_id: claimIdSchema,
@@ -97,18 +85,19 @@ export const reconstructionClaimResultSchema = z.object({
97
85
  "contradiction",
98
86
  ]),
99
87
  comparison_evidence_id: evidenceIdSchema,
100
- left_evidence_ids: z.array(evidenceIdSchema).min(1).max(100),
101
- right_evidence_ids: z.array(evidenceIdSchema).min(1).max(100),
102
- evidence_links: z.array(evidenceIdSchema).min(3).max(201),
103
- unknown_ids: z.array(unknownIdSchema).max(100),
88
+ left_evidence_ids: z.array(evidenceIdSchema).min(1),
89
+ right_evidence_ids: z.array(evidenceIdSchema).min(1),
90
+ evidence_links: z.array(evidenceIdSchema).min(3),
91
+ unknown_ids: z.array(unknownIdSchema),
104
92
  limitations: z.array(z.string()),
105
93
  });
106
- /** Evidence-cited result over every declared claim, independently paged. */
107
- export const reconstructionVerificationResultSchema = z.object({
94
+ /** Evidence-cited result over every declared claim. */
95
+ export const reconstructionVerificationResultSchema = z
96
+ .object({
108
97
  status: verificationStatusSchema,
109
98
  specification_sha256: digestSchema,
110
99
  summary: z.object({
111
- total: z.number().int().min(1).max(100),
100
+ total: z.number().int().min(1),
112
101
  passed: z.number().int().min(0),
113
102
  failed: z.number().int().min(0),
114
103
  unknown: z.number().int().min(0),
@@ -116,20 +105,43 @@ export const reconstructionVerificationResultSchema = z.object({
116
105
  structural: z.number().int().min(0),
117
106
  }),
118
107
  claims: z.object({
119
- items: z.array(reconstructionClaimResultSchema).max(100),
120
- offset: z.number().int().min(0),
121
- limit: z.number().int().min(1).max(100),
122
- total: z.number().int().min(1).max(100),
123
- next_offset: z.number().int().min(0).nullable(),
108
+ items: z.array(reconstructionClaimResultSchema),
124
109
  }),
125
- recommended_probes: z
126
- .array(z.object({
127
- operation: z.string().min(1).max(200),
128
- rationale: z.string().min(1).max(1_000),
129
- claim_ids: z.array(claimIdSchema).min(1).max(100),
130
- unknown_ids: z.array(unknownIdSchema).max(100),
131
- }))
132
- .max(2_000),
133
- evidence_links: z.array(evidenceIdSchema).min(3).max(20_100),
110
+ recommended_probes: z.array(z.object({
111
+ operation: z.string().min(1),
112
+ rationale: z.string().min(1),
113
+ claim_ids: z.array(claimIdSchema).min(1),
114
+ unknown_ids: z.array(unknownIdSchema),
115
+ })),
116
+ evidence_links: z.array(evidenceIdSchema).min(3),
134
117
  limitations: z.array(z.string()),
118
+ })
119
+ .superRefine((result, context) => {
120
+ const { summary } = result;
121
+ const expectedStatus = summary.failed > 0 ? "fail" : summary.unknown > 0 ? "unknown" : "pass";
122
+ const issues = [
123
+ [
124
+ summary.total !== summary.passed + summary.failed + summary.unknown,
125
+ "Claim status counts must equal the summary total",
126
+ ["summary", "total"],
127
+ ],
128
+ [
129
+ summary.total !== summary.behavioral + summary.structural,
130
+ "Claim kind counts must equal the summary total",
131
+ ["summary", "total"],
132
+ ],
133
+ [
134
+ result.claims.items.length !== summary.total,
135
+ "Retained claims must equal the summary total",
136
+ ["claims", "items"],
137
+ ],
138
+ [
139
+ result.status !== expectedStatus,
140
+ "Verification status must summarize claim statuses",
141
+ ["status"],
142
+ ],
143
+ ];
144
+ for (const [invalid, message, path] of issues)
145
+ if (invalid)
146
+ context.addIssue({ code: "custom", message, path: [...path] });
135
147
  });
@@ -2,13 +2,12 @@ import { createHash } from "node:crypto";
2
2
  import { posix } from "node:path";
3
3
  import canonicalize from "canonicalize";
4
4
  import { z } from "zod";
5
- const MAX_PATH = 4_096;
5
+ import { compareUnicodeCodePoints } from "./unicodeCodePointOrder.js";
6
6
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
7
- const boundedTextSchema = z.string().min(1).max(1_024);
7
+ const boundedTextSchema = z.string().min(1);
8
8
  const relativePathSchema = z
9
9
  .string()
10
10
  .min(1)
11
- .max(MAX_PATH)
12
11
  .refine((path) => !path.startsWith("/") &&
13
12
  !path.includes("\\") &&
14
13
  path
@@ -26,40 +25,33 @@ const classificationSchema = z.enum([
26
25
  ]);
27
26
  const entryBaseShape = {
28
27
  path: relativePathSchema,
29
- classifications: z.array(classificationSchema).min(1).max(8),
30
- limitations: z.array(boundedTextSchema).max(100),
28
+ classifications: z.array(classificationSchema).min(1),
29
+ limitations: z.array(boundedTextSchema),
31
30
  };
32
- const sourceFileSchema = z
33
- .strictObject({
31
+ const sourceFileBaseShape = {
34
32
  ...entryBaseShape,
35
33
  kind: z.literal("file"),
36
- sha256: digestSchema.nullable(),
37
- size: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER).nullable(),
38
- language: z.string().min(1).max(100).nullable(),
39
- content_state: z.enum([
40
- "hashed",
41
- "redacted-secret",
42
- "excluded",
43
- "unreadable",
44
- "too-large",
45
- "unknown",
46
- ]),
47
- })
48
- .superRefine((file, context) => {
49
- checkSortedUnique(file.classifications, "classifications", context);
50
- if ((file.content_state === "hashed") !== (file.sha256 !== null))
51
- context.addIssue({
52
- code: "custom",
53
- message: "Only hashed files have a content digest",
54
- path: ["sha256"],
55
- });
56
- if (file.content_state === "hashed" && file.size === null)
57
- context.addIssue({
58
- code: "custom",
59
- message: "Hashed files require a byte size",
60
- path: ["size"],
61
- });
62
- });
34
+ language: z.string().min(1).nullable(),
35
+ };
36
+ const sourceFileSchema = z.union([
37
+ z.strictObject({
38
+ ...sourceFileBaseShape,
39
+ sha256: digestSchema,
40
+ size: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
41
+ content_state: z.literal("hashed"),
42
+ }),
43
+ z.strictObject({
44
+ ...sourceFileBaseShape,
45
+ sha256: z.null(),
46
+ size: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER).nullable(),
47
+ content_state: z.enum([
48
+ "redacted-secret",
49
+ "excluded",
50
+ "unreadable",
51
+ "unknown",
52
+ ]),
53
+ }),
54
+ ]);
63
55
  const sourceDirectorySchema = z.strictObject({
64
56
  ...entryBaseShape,
65
57
  kind: z.literal("directory"),
@@ -74,7 +66,6 @@ const sourceDirectorySchema = z.strictObject({
74
66
  const symlinkTargetSchema = z
75
67
  .string()
76
68
  .min(1)
77
- .max(MAX_PATH)
78
69
  .refine((target) => target === "<outside-root>" ||
79
70
  (!target.startsWith("/") &&
80
71
  !target.includes("\\") &&
@@ -91,21 +82,21 @@ const sourceSymlinkSchema = z.strictObject({
91
82
  "unknown",
92
83
  ]),
93
84
  });
94
- const sourceEntrySchema = z.discriminatedUnion("kind", [
85
+ const sourceEntrySchema = z.union([
95
86
  sourceFileSchema,
96
87
  sourceDirectorySchema,
97
88
  sourceSymlinkSchema,
98
89
  ]);
99
90
  const sourceRelationshipSchema = z.strictObject({
100
91
  from_path: relativePathSchema,
101
- to: z.string().min(1).max(MAX_PATH),
92
+ to: z.string().min(1),
102
93
  kind: z.enum(["imports", "requires", "references", "declares-module"]),
103
94
  resolution: z.enum(["internal", "external", "unresolved", "unknown"]),
104
95
  parse_state: z.enum(["parsed", "partial", "unknown"]),
105
96
  });
106
97
  const parseFailureSchema = z.strictObject({
107
98
  path: relativePathSchema,
108
- parser: z.string().min(1).max(100),
99
+ parser: z.string().min(1),
109
100
  reason: boundedTextSchema,
110
101
  });
111
102
  const exclusionSchema = z.strictObject({
@@ -139,28 +130,27 @@ const vcsSchema = z
139
130
  ])
140
131
  .nullable();
141
132
  const graphShape = {
142
- schema: z.literal("HistoricalSourceGraph/v1"),
133
+ schema: z.literal("HistoricalSourceGraph"),
143
134
  authority: z.literal("historical-reference"),
144
135
  root_alias: z.literal("$REFERENCE_ROOT"),
145
136
  root_sha256: digestSchema,
146
137
  inventory_state: z.enum(["complete", "partial", "unknown"]),
147
- entries: z.array(sourceEntrySchema).max(100_000),
148
- relationships: z.array(sourceRelationshipSchema).max(200_000),
149
- parse_failures: z.array(parseFailureSchema).max(10_000),
150
- exclusions: z.array(exclusionSchema).max(100_000),
151
- languages: z.array(z.string().min(1).max(100)).max(1_000),
152
- manifests: z.array(relativePathSchema).max(10_000),
138
+ entries: z.array(sourceEntrySchema),
139
+ relationships: z.array(sourceRelationshipSchema),
140
+ parse_failures: z.array(parseFailureSchema),
141
+ exclusions: z.array(exclusionSchema),
142
+ languages: z.array(z.string().min(1)),
143
+ manifests: z.array(relativePathSchema),
153
144
  vcs: vcsSchema,
154
145
  provenance: z.strictObject({
155
- importer: z.string().min(1).max(100),
156
- importer_version: z.string().min(1).max(100).nullable(),
146
+ importer: z.string().min(1),
147
+ importer_version: z.string().min(1).nullable(),
157
148
  caller: z
158
149
  .string()
159
150
  .min(1)
160
- .max(200)
161
151
  .regex(/^[\w .:@/+-]+$/u),
162
152
  }),
163
- limitations: z.array(boundedTextSchema).max(1_000),
153
+ limitations: z.array(boundedTextSchema),
164
154
  };
165
155
  const historicalSourceGraphStructureSchema = z
166
156
  .strictObject(graphShape)
@@ -178,14 +168,14 @@ const historicalSourceGraphInputSchema = z.strictObject({
178
168
  root_sha256: z.never().optional(),
179
169
  });
180
170
  const historicalSourceManifestBaseSchema = z.strictObject({
181
- schema: z.literal("HistoricalSourceManifest/v1"),
171
+ schema: z.literal("HistoricalSourceManifest"),
182
172
  authority: z.literal("historical-reference"),
183
173
  manifest_id: z.string().regex(/^hsm_[a-f0-9]{64}$/u),
184
174
  graph_sha256: digestSchema,
185
175
  root_sha256: digestSchema,
186
176
  inventory_state: z.enum(["complete", "partial", "unknown"]),
187
- entry_count: z.number().int().min(0).max(100_000),
188
- relationship_count: z.number().int().min(0).max(200_000),
177
+ entry_count: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
178
+ relationship_count: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
189
179
  });
190
180
  /** Stable identity used to sort and deduplicate source parse failures. */
191
181
  export const historicalSourceParseFailureKey = (failure) => `${failure.path}\u0000${failure.parser}\u0000${failure.reason}`;
@@ -197,10 +187,10 @@ const canonicalJson = (value) => {
197
187
  };
198
188
  const digestCanonical = (value) => createHash("sha256").update(canonicalJson(value)).digest("hex");
199
189
  const relationshipKey = (relationship) => `${relationship.from_path}\u0000${relationship.to}\u0000${relationship.kind}\u0000${relationship.resolution}\u0000${relationship.parse_state}`;
200
- const compareCodePoints = (left, right) => left < right ? -1 : left > right ? 1 : 0;
201
190
  const checkSortedUnique = (values, field, context) => {
202
191
  for (let index = 1; index < values.length; index += 1)
203
- if (compareCodePoints(values[index - 1] ?? "", values[index] ?? "") >= 0) {
192
+ if (compareUnicodeCodePoints(values[index - 1] ?? "", values[index] ?? "") >=
193
+ 0) {
204
194
  context.addIssue({
205
195
  code: "custom",
206
196
  message: `${field} must be sorted and unique by Unicode code point`,
@@ -209,16 +199,18 @@ const checkSortedUnique = (values, field, context) => {
209
199
  return;
210
200
  }
211
201
  };
212
- const expectedLanguages = (entries) => [
202
+ /** Derive the canonical language index from inventoried source files. */
203
+ export const historicalSourceLanguages = (entries) => [
213
204
  ...new Set(entries.flatMap((entry) => entry.kind === "file" && entry.language !== null
214
205
  ? [entry.language]
215
206
  : [])),
216
- ].sort(compareCodePoints);
217
- const expectedManifests = (entries) => entries
207
+ ].sort(compareUnicodeCodePoints);
208
+ /** Derive the canonical manifest path index from inventoried source files. */
209
+ export const historicalSourceManifests = (entries) => entries
218
210
  .flatMap((entry) => entry.kind === "file" && entry.classifications.includes("manifest")
219
211
  ? [entry.path]
220
212
  : [])
221
- .sort(compareCodePoints);
213
+ .sort(compareUnicodeCodePoints);
222
214
  const checkRelationships = (graph, paths, context) => {
223
215
  const files = new Set(graph.entries.flatMap((entry) => entry.kind === "file" ? [entry.path] : []));
224
216
  for (const [index, relationship] of graph.relationships.entries()) {
@@ -292,14 +284,14 @@ function checkGraphInvariants(graph, context) {
292
284
  checkSortedUnique(graph.parse_failures.map(historicalSourceParseFailureKey), "parse_failures", context);
293
285
  checkSortedUnique(graph.exclusions.map(({ path, reason }) => `${path}\u0000${reason}`), "exclusions", context);
294
286
  if (canonicalJson(graph.languages) !==
295
- canonicalJson(expectedLanguages(graph.entries)))
287
+ canonicalJson(historicalSourceLanguages(graph.entries)))
296
288
  context.addIssue({
297
289
  code: "custom",
298
290
  message: "languages must be derived from file entries",
299
291
  path: ["languages"],
300
292
  });
301
293
  if (canonicalJson(graph.manifests) !==
302
- canonicalJson(expectedManifests(graph.entries)))
294
+ canonicalJson(historicalSourceManifests(graph.entries)))
303
295
  context.addIssue({
304
296
  code: "custom",
305
297
  message: "manifests must be derived from classified file entries",
@@ -355,7 +347,7 @@ export const computeHistoricalSourceGraphSha256 = (input) => digestCanonical(par
355
347
  export const createHistoricalSourceManifest = (input) => {
356
348
  const graph = parseHistoricalSourceGraph(input);
357
349
  const semantic = {
358
- schema: "HistoricalSourceManifest/v1",
350
+ schema: "HistoricalSourceManifest",
359
351
  authority: "historical-reference",
360
352
  graph_sha256: computeHistoricalSourceGraphSha256(graph),
361
353
  root_sha256: graph.root_sha256,
@@ -1,10 +1,6 @@
1
1
  import { parse } from "@babel/parser";
2
2
  import { isCallExpression, isExportAllDeclaration, isExportNamedDeclaration, isIdentifier, isImport, isImportDeclaration, isMemberExpression, isNode, isStringLiteral, isTSExternalModuleReference, isTSImportEqualsDeclaration, isTSModuleDeclaration, } from "@babel/types";
3
- const MAX_REASON_LENGTH = 1_024;
4
3
  const codeSourceLanguages = new Set(["JavaScript", "TypeScript", "JSX", "TSX"]);
5
- const truncateReason = (reason) => reason.length > MAX_REASON_LENGTH
6
- ? `${reason.slice(0, MAX_REASON_LENGTH - 3)}...`
7
- : reason;
8
4
  const safeModuleName = (node) => {
9
5
  if (isStringLiteral(node))
10
6
  return node.value;
@@ -199,11 +195,11 @@ const parseWithBabel = (path, source, language) => {
199
195
  });
200
196
  return { ast, parseState: "parsed" };
201
197
  }
202
- catch (error) {
198
+ catch (cause) {
203
199
  return {
204
200
  ast: undefined,
205
201
  parseState: "unknown",
206
- reason: error instanceof Error ? error.message : "Parse failed",
202
+ reason: cause instanceof Error ? cause.message : "Parse failed",
207
203
  };
208
204
  }
209
205
  };
@@ -220,7 +216,7 @@ export const parseReferenceSourceImports = (path, bytes, language) => {
220
216
  {
221
217
  path,
222
218
  parser: "babel",
223
- reason: truncateReason(reason ?? "Unknown parse failure"),
219
+ reason: reason ?? "Unknown parse failure",
224
220
  },
225
221
  ],
226
222
  };
@@ -2,12 +2,8 @@ import { MultiDirectedGraph } from "graphology";
2
2
  import { singleSource } from "graphology-shortest-path";
3
3
  import canonicalize from "canonicalize";
4
4
  import { z } from "zod";
5
- const replayIdentifierSchema = z
6
- .string()
7
- .regex(/^[A-Za-z][A-Za-z0-9_-]{0,63}$/u);
8
- const replayPathSchema = z
9
- .array(z.union([z.string().max(256), z.number().int().nonnegative()]))
10
- .max(32);
5
+ const replayIdentifierSchema = z.string().regex(/^[A-Za-z][A-Za-z0-9_-]*$/u);
6
+ const replayPathSchema = z.array(z.union([z.string(), z.number().int().nonnegative()]));
11
7
  const sensitiveHeaderNames = new Set([
12
8
  "authorization",
13
9
  "cookie",
@@ -17,12 +13,8 @@ const sensitiveHeaderNames = new Set([
17
13
  const headerNameSchema = z
18
14
  .string()
19
15
  .min(1)
20
- .max(256)
21
16
  .regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/u);
22
- const headerValueSchema = z
23
- .string()
24
- .max(8_192)
25
- .regex(/^[\t\x20-\x7e\x80-\xff]*$/u);
17
+ const headerValueSchema = z.string().regex(/^[\t\x20-\x7e\x80-\xff]*$/u);
26
18
  const replayHeaderMatchersSchema = z
27
19
  .record(headerNameSchema, headerValueSchema)
28
20
  .superRefine((headers, context) => {
@@ -65,11 +57,10 @@ const replayTriggerSchema = z.discriminatedUnion("protocol", [
65
57
  method: z
66
58
  .string()
67
59
  .min(1)
68
- .max(16)
69
60
  .transform((method) => method.toUpperCase()),
70
61
  path: z.string().startsWith("/"),
71
62
  headers: replayHeaderMatchersSchema.default({}),
72
- body: z.string().max(1_000_000).nullable().default(null),
63
+ body: z.string().nullable().default(null),
73
64
  }),
74
65
  z.strictObject({
75
66
  protocol: z.literal("websocket_connect"),
@@ -79,7 +70,7 @@ const replayTriggerSchema = z.discriminatedUnion("protocol", [
79
70
  z.strictObject({
80
71
  protocol: z.literal("websocket_message"),
81
72
  path: z.string().startsWith("/"),
82
- body: z.string().max(1_000_000).nullable().default(null),
73
+ body: z.string().nullable().default(null),
83
74
  }),
84
75
  ]);
85
76
  const replayActionSchema = z.discriminatedUnion("type", [
@@ -87,30 +78,29 @@ const replayActionSchema = z.discriminatedUnion("type", [
87
78
  type: z.literal("http_response"),
88
79
  status: z.number().int().min(100).max(599),
89
80
  headers: z.record(headerNameSchema, headerValueSchema).default({}),
90
- body: z.string().max(1_000_000),
81
+ body: z.string(),
91
82
  }),
92
83
  z.strictObject({
93
84
  type: z.literal("websocket_send"),
94
- data: z.string().max(1_000_000),
85
+ data: z.string(),
95
86
  }),
96
87
  z.strictObject({ type: z.literal("disconnect") }),
97
88
  z.strictObject({
98
89
  type: z.literal("delay"),
99
- duration_ms: z.number().int().nonnegative().max(30_000),
90
+ duration_ms: z.number().int().safe().nonnegative(),
100
91
  }),
101
92
  ]);
102
93
  const replayTransitionSchema = z.strictObject({
103
94
  id: replayIdentifierSchema,
104
95
  from: replayIdentifierSchema,
105
96
  to: replayIdentifierSchema,
106
- priority: z.number().int().min(0).max(1_000).default(100),
97
+ priority: z.number().int().min(0).default(100),
107
98
  trigger: replayTriggerSchema,
108
99
  guards: z
109
100
  .array(z.strictObject({
110
101
  variable: replayIdentifierSchema,
111
102
  value: replayValueSourceSchema,
112
103
  }))
113
- .max(32)
114
104
  .default([]),
115
105
  captures: z
116
106
  .array(z.strictObject({
@@ -118,10 +108,9 @@ const replayTransitionSchema = z.strictObject({
118
108
  value: replayValueSourceSchema,
119
109
  sensitive: z.boolean().default(false),
120
110
  }))
121
- .max(32)
122
111
  .default([]),
123
- actions: z.array(replayActionSchema).min(1).max(32),
124
- max_uses: z.number().int().min(1).max(10_000),
112
+ actions: z.array(replayActionSchema).min(1),
113
+ max_uses: z.number().int().min(1),
125
114
  });
126
115
  const transitionSignature = (transition) => {
127
116
  const signature = canonicalize({
@@ -139,18 +128,17 @@ const replayMachineBaseSchema = z.strictObject({
139
128
  .array(z.strictObject({
140
129
  name: replayIdentifierSchema,
141
130
  terminal: z.boolean().default(false),
142
- max_visits: z.number().int().min(1).max(100_000).default(100_000),
131
+ max_visits: z.number().int().min(1).default(100_000),
143
132
  }))
144
- .min(1)
145
- .max(256),
146
- transitions: z.array(replayTransitionSchema).min(1).max(2_000),
147
- max_transitions: z.number().int().min(1).max(100_000),
133
+ .min(1),
134
+ transitions: z.array(replayTransitionSchema).min(1),
135
+ max_transitions: z.number().int().min(1),
148
136
  limits: z
149
137
  .strictObject({
150
- connections: z.number().int().min(1).max(1_000).default(100),
151
- messages: z.number().int().min(1).max(100_000).default(10_000),
152
- bytes: z.number().int().min(1).max(10_000_000).default(1_000_000),
153
- duration_ms: z.number().int().min(1).max(300_000).default(30_000),
138
+ connections: z.number().int().min(1).default(100),
139
+ messages: z.number().int().min(1).default(10_000),
140
+ bytes: z.number().int().min(1).default(1_000_000),
141
+ duration_ms: z.number().int().min(1).default(30_000),
154
142
  })
155
143
  .default({
156
144
  connections: 100,
@@ -10,48 +10,10 @@ const refusalOutcomeSchema = z.enum([
10
10
  "unexpected_reconnect",
11
11
  "limit_exhausted",
12
12
  ]);
13
- const MAX_DIRECT_REPLAY_EVENTS = 10_000;
14
- const MAX_DIRECT_REPLAY_ACTION_BYTES = 4 * 1_024 * 1_024;
15
- const MAX_DIRECT_REPLAY_ACTION_FIELDS = 1_024;
16
- const MAX_DIRECT_REPLAY_SENSITIVE_CAPTURES = 1_024;
17
- const actionFieldCount = (machine) => machine.transitions.reduce((total, transition) => total +
18
- transition.actions.reduce((fields, action) => fields +
19
- (action.type === "http_response"
20
- ? Object.keys(action.headers).length + 1
21
- : action.type === "websocket_send"
22
- ? 1
23
- : 0), 0), 0);
24
- const maximumSensitiveCapturesPerEvent = (machine) => Math.max(0, ...machine.transitions.map(({ captures }) => captures.filter(({ sensitive }) => sensitive).length));
25
13
  /** Complete declarative input for one direct replay-machine run. */
26
- export const replayMachineRunInputSchema = z
27
- .strictObject({
14
+ export const replayMachineRunInputSchema = z.strictObject({
28
15
  machine: replayMachineSchema,
29
- events: z.array(replayMachineEventSchema).max(MAX_DIRECT_REPLAY_EVENTS),
30
- })
31
- .superRefine(({ machine, events }, context) => {
32
- const actionBytes = Buffer.byteLength(JSON.stringify(machine.transitions.map(({ id, actions }) => ({ id, actions }))));
33
- if (actionBytes > MAX_DIRECT_REPLAY_ACTION_BYTES)
34
- context.addIssue({
35
- code: "custom",
36
- path: ["machine", "transitions"],
37
- message: "direct replay actions exceed the 4 MiB output boundary",
38
- input: machine.transitions,
39
- });
40
- if (actionFieldCount(machine) > MAX_DIRECT_REPLAY_ACTION_FIELDS)
41
- context.addIssue({
42
- code: "custom",
43
- path: ["machine", "transitions"],
44
- message: "direct replay actions exceed the 1,024-field output boundary",
45
- input: machine.transitions,
46
- });
47
- if (maximumSensitiveCapturesPerEvent(machine) * events.length >
48
- MAX_DIRECT_REPLAY_SENSITIVE_CAPTURES)
49
- context.addIssue({
50
- code: "custom",
51
- path: ["events"],
52
- message: "direct replay events exceed the 1,024 sensitive-capture operation boundary",
53
- input: events,
54
- });
16
+ events: z.array(replayMachineEventSchema),
55
17
  });
56
18
  const replayMachineRunDecisionSchema = z.strictObject({
57
19
  event_sequence: z.number().int().nonnegative(),
@@ -65,18 +27,17 @@ const replayRunActionSchema = z.discriminatedUnion("type", [
65
27
  headers: z.record(z
66
28
  .string()
67
29
  .min(1)
68
- .max(256)
69
- .regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/u), z.string().max(8_192)),
70
- body: z.string().max(1_000_000),
30
+ .regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/u), z.string()),
31
+ body: z.string(),
71
32
  }),
72
33
  z.strictObject({
73
34
  type: z.literal("websocket_send"),
74
- data: z.string().max(1_000_000),
35
+ data: z.string(),
75
36
  }),
76
37
  z.strictObject({ type: z.literal("disconnect") }),
77
38
  z.strictObject({
78
39
  type: z.literal("delay"),
79
- duration_ms: z.number().int().nonnegative().max(30_000),
40
+ duration_ms: z.number().int().nonnegative(),
80
41
  }),
81
42
  ]);
82
43
  const replayRunIdentifierSchema = z
@@ -88,31 +49,22 @@ const replayMachineRunJournalEntrySchema = z.strictObject({
88
49
  transition_id: replayRunIdentifierSchema,
89
50
  state_before: replayRunIdentifierSchema,
90
51
  state_after: replayRunIdentifierSchema,
91
- captured_aliases: z
92
- .array(z.strictObject({
52
+ captured_aliases: z.array(z.strictObject({
93
53
  name: replayRunIdentifierSchema,
94
54
  sensitive: z.boolean(),
95
- }))
96
- .max(32),
55
+ })),
97
56
  });
98
57
  /** Capture-value-free result of directly evaluating a finite replay machine. */
99
58
  export const replayMachineRunOutputSchema = z.strictObject({
100
- schema_version: z.literal(1),
101
59
  initial_state: replayRunIdentifierSchema,
102
60
  final_state: replayRunIdentifierSchema,
103
61
  terminal: z.boolean(),
104
- decisions: z
105
- .array(replayMachineRunDecisionSchema)
106
- .max(MAX_DIRECT_REPLAY_EVENTS),
107
- transition_journal: z
108
- .array(replayMachineRunJournalEntrySchema)
109
- .max(MAX_DIRECT_REPLAY_EVENTS),
110
- transition_actions: z
111
- .array(z.strictObject({
62
+ decisions: z.array(replayMachineRunDecisionSchema),
63
+ transition_journal: z.array(replayMachineRunJournalEntrySchema),
64
+ transition_actions: z.array(z.strictObject({
112
65
  transition_id: replayRunIdentifierSchema,
113
- actions: z.array(replayRunActionSchema).max(32),
114
- }))
115
- .max(2_000),
66
+ actions: z.array(replayRunActionSchema),
67
+ })),
116
68
  limits: z.strictObject({
117
69
  configured: z.strictObject({
118
70
  transitions: z.number().int().positive(),
@@ -156,6 +108,7 @@ export const runReplayMachine = (input) => {
156
108
  const decisions = [];
157
109
  const transitionJournal = [];
158
110
  const usedTransitionIds = new Set();
111
+ const transitionById = new Map(input.machine.transitions.map((transition) => [transition.id, transition]));
159
112
  for (const [eventSequence, event] of input.events.entries()) {
160
113
  const decision = runtime.dispatch(event);
161
114
  decisions.push({
@@ -166,7 +119,7 @@ export const runReplayMachine = (input) => {
166
119
  if (decision.outcome !== "matched")
167
120
  continue;
168
121
  usedTransitionIds.add(decision.transition.transition_id);
169
- const definition = input.machine.transitions.find(({ id }) => id === decision.transition.transition_id);
122
+ const definition = transitionById.get(decision.transition.transition_id);
170
123
  if (definition === undefined)
171
124
  throw new TypeError("Replay runtime selected an unknown transition");
172
125
  transitionJournal.push({
@@ -189,7 +142,6 @@ export const runReplayMachine = (input) => {
189
142
  actions: actions.map((action) => redactAction(runtime, action)),
190
143
  }));
191
144
  return replayMachineRunOutputSchema.parse({
192
- schema_version: 1,
193
145
  initial_state: input.machine.initial_state,
194
146
  final_state: runtime.state,
195
147
  terminal: input.machine.states.find(({ name }) => name === runtime.state)