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
@@ -7,24 +7,18 @@ const reject = (context, message) => {
7
7
  const inspectJsonValue = (value, context, limits) => {
8
8
  const pending = [{ value, depth: 1 }];
9
9
  const seen = new WeakSet();
10
- let nodes = 0;
11
10
  while (pending.length > 0) {
12
11
  const current = pending.pop();
13
12
  if (current === undefined)
14
13
  break;
15
- nodes += 1;
16
- if (nodes > limits.jsonNodes)
17
- return reject(context, "event exact JSON exceeds the v1 node limit");
18
14
  if (current.depth > limits.jsonDepth)
19
- return reject(context, "event exact JSON exceeds the v1 depth limit");
15
+ return reject(context, "event exact JSON exceeds the configured depth limit");
20
16
  if (typeof current.value !== "object" || current.value === null)
21
17
  continue;
22
18
  if (seen.has(current.value))
23
19
  return reject(context, "event exact JSON must not contain cycles");
24
20
  seen.add(current.value);
25
21
  if (Array.isArray(current.value)) {
26
- if (current.value.length + nodes > limits.jsonNodes)
27
- return reject(context, "event exact JSON exceeds the v1 node limit");
28
22
  for (const child of current.value)
29
23
  pending.push({ value: child, depth: current.depth + 1 });
30
24
  continue;
@@ -34,8 +28,6 @@ const inspectJsonValue = (value, context, limits) => {
34
28
  for (const key in current.value) {
35
29
  if (!Object.hasOwn(current.value, key))
36
30
  continue;
37
- if (nodes + pending.length >= limits.jsonNodes)
38
- return reject(context, "event exact JSON exceeds the v1 node limit");
39
31
  pending.push({
40
32
  value: current.value[key],
41
33
  depth: current.depth + 1,
@@ -44,17 +36,11 @@ const inspectJsonValue = (value, context, limits) => {
44
36
  }
45
37
  return true;
46
38
  };
47
- const collectTriggerRoots = (states, context, limits) => {
39
+ const collectTriggerRoots = (states) => {
48
40
  const pending = [];
49
- let transitions = 0;
50
41
  for (const stateValue of states) {
51
42
  if (!isUnknownRecord(stateValue) || !Array.isArray(stateValue["on"]))
52
43
  continue;
53
- transitions += stateValue["on"].length;
54
- if (transitions > limits.transitions) {
55
- reject(context, "scenario has too many transitions");
56
- return null;
57
- }
58
44
  for (const transitionValue of stateValue["on"])
59
45
  if (isUnknownRecord(transitionValue))
60
46
  pending.push({ value: transitionValue["when"], depth: 1 });
@@ -73,24 +59,17 @@ const enqueueTriggerChildren = (trigger, depth, traversal) => {
73
59
  const children = trigger["triggers"];
74
60
  if (!Array.isArray(children))
75
61
  return true;
76
- if (children.length > traversal.limits.childrenPerComposite)
77
- return reject(traversal.context, "trigger group has too many children");
78
62
  for (const child of children)
79
63
  traversal.pending.push({ value: child, depth: depth + 1 });
80
64
  return true;
81
65
  };
82
66
  const inspectTriggerTree = (pending, context, limits) => {
83
- let nodes = 0;
84
- const maximumNodes = limits.predicates * limits.triggerDepth;
85
67
  while (pending.length > 0) {
86
68
  const current = pending.pop();
87
69
  if (current === undefined)
88
70
  break;
89
- nodes += 1;
90
- if (nodes > maximumNodes)
91
- return reject(context, "trigger tree exceeds the v1 limit");
92
71
  if (current.depth > limits.triggerDepth)
93
- return reject(context, "trigger nesting exceeds the v1 limit");
72
+ return reject(context, "trigger nesting exceeds the configured limit");
94
73
  if (isUnknownRecord(current.value) &&
95
74
  current.value["kind"] === "event" &&
96
75
  !inspectJsonValue(current.value["exact"], context, limits))
@@ -109,12 +88,8 @@ const inspectTriggerTree = (pending, context, limits) => {
109
88
  export const preflightProcessReactiveScenario = (input, context, limits) => {
110
89
  if (!isUnknownRecord(input) || !Array.isArray(input["states"]))
111
90
  return input;
112
- if (input["states"].length > limits.states) {
113
- reject(context, "scenario has too many states");
114
- return z.NEVER;
115
- }
116
- const pending = collectTriggerRoots(input["states"], context, limits);
117
- if (pending === null || !inspectTriggerTree(pending, context, limits))
91
+ const pending = collectTriggerRoots(input["states"]);
92
+ if (!inspectTriggerTree(pending, context, limits))
118
93
  return z.NEVER;
119
94
  return input;
120
95
  };
@@ -1,3 +1,24 @@
1
+ const createTransitionRecord = (input) => {
2
+ const state = {
3
+ sequence: input.sequence,
4
+ transition_id: input.transition.id,
5
+ state_before: input.stateBefore,
6
+ trigger_event_ids: input.triggerEventIds,
7
+ action_event_ids: input.effectResults.map(({ observation }) => observation.event_id),
8
+ action_types: input.transition.actions.map(({ type }) => type),
9
+ };
10
+ return input.transition.target.kind === "finish"
11
+ ? {
12
+ ...state,
13
+ state_after: null,
14
+ outcome: input.transition.target.outcome,
15
+ }
16
+ : {
17
+ ...state,
18
+ state_after: input.transition.target.state,
19
+ outcome: null,
20
+ };
21
+ };
1
22
  const counterValue = (counters, id) => counters.find((counter) => counter.id === id)?.count ?? 0;
2
23
  const incrementCounter = (counters, id) => {
3
24
  let found = false;
@@ -11,38 +32,35 @@ const incrementCounter = (counters, id) => {
11
32
  };
12
33
  /** Commit one uniquely selected transition after its declarative effects succeed. */
13
34
  const applyProcessReactiveTransition = (input) => {
14
- const outcome = input.transition.target.kind === "finish"
15
- ? input.transition.target.outcome
16
- : null;
17
- const stateAfter = input.transition.target.kind === "goto"
18
- ? input.transition.target.state
19
- : null;
20
- const record = {
35
+ if (input.effectResults.length !== input.transition.actions.length)
36
+ throw new TypeError("Reactive transition effects do not match the admitted actions");
37
+ const record = createTransitionRecord({
21
38
  sequence: input.snapshot.transitions.length,
22
- transition_id: input.transition.id,
23
- state_before: input.snapshot.active_state,
24
- state_after: stateAfter,
25
- outcome,
26
- trigger_event_ids: input.triggerEventIds,
27
- action_event_ids: input.effectResults.map(({ observation }) => observation.event_id),
28
- action_types: input.transition.actions.map(({ type }) => type),
29
- };
39
+ stateBefore: input.snapshot.active_state,
40
+ transition: input.transition,
41
+ triggerEventIds: input.triggerEventIds,
42
+ effectResults: input.effectResults,
43
+ });
44
+ const outcome = record.outcome;
45
+ const stateAfter = record.state_after;
30
46
  const consumed = new Set(input.snapshot.consumed_event_ids);
31
47
  for (const eventId of input.consumeEventIds)
32
48
  consumed.add(eventId);
33
49
  const checkpoints = [...input.snapshot.checkpoints];
34
- for (const [index, action] of input.transition.actions.entries())
50
+ for (const [index, action] of input.transition.actions.entries()) {
51
+ const effect = input.effectResults[index];
52
+ if (effect === undefined)
53
+ throw new TypeError("Reactive transition effect is missing");
35
54
  if (action.type === "checkpoint")
36
55
  checkpoints.push({
37
56
  name: action.name,
38
- event_id: input.effectResults[index].observation.event_id,
39
- capture_order: input.effectResults[index].observation.capture_order,
57
+ event_id: effect.observation.event_id,
58
+ capture_order: effect.observation.capture_order,
40
59
  });
60
+ }
41
61
  const completedCaptureOrder = Math.max(input.observation.capture_order, ...input.effectResults.map(({ observation }) => observation.capture_order));
42
- let next = {
62
+ const nextState = {
43
63
  ...input.snapshot,
44
- status: outcome === null ? "running" : "finished",
45
- outcome,
46
64
  active_state: stateAfter ?? input.snapshot.active_state,
47
65
  state_entry_capture_order: stateAfter === null
48
66
  ? input.snapshot.state_entry_capture_order
@@ -55,6 +73,9 @@ const applyProcessReactiveTransition = (input) => {
55
73
  checkpoints,
56
74
  transitions: [...input.snapshot.transitions, record],
57
75
  };
76
+ let next = outcome === null
77
+ ? { ...nextState, status: "running", outcome: null }
78
+ : { ...nextState, status: "finished", outcome };
58
79
  if (stateAfter !== null) {
59
80
  const nextState = input.scenario.states.find(({ id }) => id === stateAfter);
60
81
  if (nextState === undefined ||
@@ -1,11 +1,11 @@
1
1
  import { createHash } from "node:crypto";
2
- import { resolve } from "node:path";
2
+ import { isPathWithinRoot } from "./localPath.js";
3
3
  import canonicalize from "canonicalize";
4
4
  import { z } from "zod";
5
5
  import { processReactiveScenarioSchema, } from "./processReactiveScenario.js";
6
6
  import { replayMachineSchema } from "./replayMachine.js";
7
- const positiveBudget = z.number().int().positive();
8
- const timedEventBase = { at_ms: z.number().int().nonnegative() };
7
+ const positiveBudget = z.number().int().safe().positive();
8
+ const timedEventBase = { at_ms: z.number().int().safe().nonnegative() };
9
9
  const environmentName = z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/u);
10
10
  const reservedEnvironment = new Set([
11
11
  "HOME",
@@ -19,25 +19,19 @@ export const normalizationSchema = z.object({
19
19
  paths: z.boolean(),
20
20
  pids: z.boolean(),
21
21
  ports: z.boolean(),
22
- time_bucket_ms: positiveBudget.max(60_000),
22
+ time_bucket_ms: positiveBudget,
23
23
  patterns: z.array(z.object({
24
- pattern: z.string().max(500),
25
- replacement: z.string().max(100),
24
+ pattern: z.string(),
25
+ replacement: z.string(),
26
26
  })),
27
27
  });
28
- const checkpointNameSchema = z
29
- .string()
30
- .regex(/^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/u);
31
- const commandNameSchema = z
32
- .string()
33
- .regex(/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/u);
28
+ const checkpointNameSchema = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9_-]*$/u);
29
+ const commandNameSchema = z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/u);
34
30
  const outputChunkSchema = z.object({
35
- at_ms: z.number().int().nonnegative().max(300_000),
31
+ at_ms: z.number().int().safe().nonnegative(),
36
32
  stream: z.enum(["stdout", "stderr"]),
37
- data: z.string().max(1_000_000),
33
+ data: z.string(),
38
34
  });
39
- /** Actionable refusal shared by CLI, MCP, and Evidence import boundaries. */
40
- export const LEGACY_PROCESS_CAPTURE_MESSAGE = "Process Capture v3 is unsupported. Re-run the scenario with this REA version using capture_process_scenario to produce Process Capture v4; captures cannot be upgraded because v4 requires new manifest and settlement evidence.";
41
35
  /** Compute a canonical SHA-256 commitment independent of object key order. */
42
36
  export const digestProcessCommitment = (value) => {
43
37
  const serialized = canonicalize(value);
@@ -62,7 +56,7 @@ const reactiveScenarioCommitment = (scenario) => scenario === null
62
56
  })),
63
57
  })),
64
58
  };
65
- /** Build the secret-safe scenario projection committed by Process Capture v4. */
59
+ /** Build the secret-safe scenario projection committed by process-capture Evidence. */
66
60
  export const processScenarioCommitment = (scenario, executableSha256) => ({
67
61
  ...scenario,
68
62
  environment: Object.fromEntries(Object.entries(scenario.environment).map(([name, value]) => [
@@ -70,7 +64,6 @@ export const processScenarioCommitment = (scenario, executableSha256) => ({
70
64
  scenario.secret_aliases.includes(name) ? "<redacted-secret>" : value,
71
65
  ])),
72
66
  reactive: reactiveScenarioCommitment(scenario.reactive),
73
- unknown_registry_approved: scenario.unknown_registry_approved === true,
74
67
  executable_sha256: executableSha256 ?? null,
75
68
  });
76
69
  /** Project observation settings shared by authority and reconstruction. */
@@ -93,31 +86,24 @@ export const processComparisonContract = (scenario) => ({
93
86
  reactive: reactiveScenarioCommitment(scenario.reactive),
94
87
  });
95
88
  /**
96
- * Boundary schema for one explicitly approved, bounded process experiment.
89
+ * Boundary schema for one bounded process experiment.
97
90
  * Defaults are part of the evidence contract and must remain deterministic.
98
91
  */
99
92
  export const processScenarioSchema = z
100
93
  .object({
101
- approved: z
102
- .literal(true)
103
- .describe("Explicit per-call acknowledgement that this operation launches the target"),
104
- unknown_registry_approved: z
105
- .literal(true)
106
- .optional()
107
- .describe("Explicit approval to record capture residuals durably"),
108
94
  executable: z.string().startsWith("/"),
109
- arguments: z.array(z.string()).max(256).default([]),
95
+ arguments: z.array(z.string()).default([]),
110
96
  working_directory: z.string().startsWith("/"),
111
97
  environment: z.record(environmentName, z.string()).default({}),
112
- inherit_environment: z.array(environmentName).max(64).default([]),
113
- secret_aliases: z.array(environmentName).max(64).default([]),
98
+ inherit_environment: z.array(environmentName).default([]),
99
+ secret_aliases: z.array(environmentName).default([]),
114
100
  network_access: z.literal("host").default("host"),
115
- filesystem_roots: z.array(z.string().startsWith("/")).max(16).default([]),
101
+ filesystem_roots: z.array(z.string().startsWith("/")).default([]),
116
102
  terminal: z
117
103
  .object({
118
- columns: z.number().int().min(1).max(1_000).default(80),
119
- rows: z.number().int().min(1).max(1_000).default(24),
120
- scrollback: z.number().int().min(0).max(10_000).default(1_000),
104
+ columns: z.number().int().min(1).max(65_535).default(80),
105
+ rows: z.number().int().min(1).max(65_535).default(24),
106
+ scrollback: z.number().int().min(0).default(1_000),
121
107
  })
122
108
  .default({ columns: 80, rows: 24, scrollback: 1_000 }),
123
109
  checkpoints: z
@@ -126,26 +112,25 @@ export const processScenarioSchema = z
126
112
  trigger: z.discriminatedUnion("type", [
127
113
  z.object({
128
114
  type: z.literal("time"),
129
- at_ms: z.number().int().nonnegative().max(300_000),
115
+ at_ms: z.number().int().safe().nonnegative(),
130
116
  }),
131
117
  z.object({
132
118
  type: z.literal("terminal_literal"),
133
- value: z.string().min(1).max(10_000),
134
- occurrence: z.number().int().positive().max(1_000).default(1),
119
+ value: z.string().min(1),
120
+ occurrence: positiveBudget.default(1),
135
121
  }),
136
122
  z.object({ type: z.literal("root_exit") }),
137
123
  z.object({ type: z.literal("settled") }),
138
124
  ]),
139
125
  }))
140
- .max(64)
141
126
  .default([]),
142
127
  command_shims: z
143
128
  .array(z.object({
144
129
  name: commandNameSchema,
145
130
  routes: z
146
131
  .array(z.object({
147
- arguments: z.array(z.string()).max(256),
148
- outputs: z.array(outputChunkSchema).max(1_000).default([]),
132
+ arguments: z.array(z.string()),
133
+ outputs: z.array(outputChunkSchema).default([]),
149
134
  termination: z.discriminatedUnion("type", [
150
135
  z.object({
151
136
  type: z.literal("exit"),
@@ -156,12 +141,10 @@ export const processScenarioSchema = z
156
141
  signal: z.enum(["SIGINT", "SIGTERM", "SIGKILL"]),
157
142
  }),
158
143
  ]),
159
- max_calls: z.number().int().positive().max(100).default(1),
144
+ max_calls: positiveBudget.default(1),
160
145
  }))
161
- .min(1)
162
- .max(100),
146
+ .min(1),
163
147
  }))
164
- .max(32)
165
148
  .default([]),
166
149
  events: z
167
150
  .array(z.discriminatedUnion("type", [
@@ -174,8 +157,8 @@ export const processScenarioSchema = z
174
157
  z.object({
175
158
  ...timedEventBase,
176
159
  type: z.literal("resize"),
177
- columns: z.number().int().min(1).max(1_000),
178
- rows: z.number().int().min(1).max(1_000),
160
+ columns: z.number().int().min(1).max(65_535),
161
+ rows: z.number().int().min(1).max(65_535),
179
162
  }),
180
163
  z.object({
181
164
  ...timedEventBase,
@@ -183,26 +166,24 @@ export const processScenarioSchema = z
183
166
  signal: z.enum(["SIGINT", "SIGTERM", "SIGKILL"]),
184
167
  }),
185
168
  ]))
186
- .max(1_000)
187
169
  .default([]),
188
- timeout_ms: positiveBudget.max(300_000).default(30_000),
189
- idle_timeout_ms: positiveBudget.max(300_000).default(30_000),
190
- settle_ms: z.number().int().nonnegative().max(10_000).default(100),
170
+ timeout_ms: positiveBudget.default(30_000),
171
+ idle_timeout_ms: positiveBudget.default(30_000),
172
+ settle_ms: z.number().int().safe().nonnegative().default(100),
191
173
  limits: z
192
174
  .object({
193
- output_bytes: positiveBudget.max(10_000_000).default(1_000_000),
194
- frames: positiveBudget.max(100_000).default(10_000),
195
- files: positiveBudget.max(100_000).default(10_000),
196
- file_bytes: positiveBudget.max(100_000_000).default(10_000_000),
197
- processes: positiveBudget.max(10_000).default(1_000),
198
- protocol_events: positiveBudget.max(100_000).default(10_000),
199
- protocol_body_bytes: positiveBudget.max(10_000_000).default(1_000_000),
200
- connections: positiveBudget.max(1_000).default(100),
201
- filesystem_depth: z.number().int().min(1).max(64).default(16),
175
+ output_bytes: positiveBudget.default(1_000_000),
176
+ files: positiveBudget.default(10_000),
177
+ file_bytes: positiveBudget.default(10_000_000),
178
+ processes: positiveBudget.default(1_000),
179
+ protocol_events: positiveBudget.default(10_000),
180
+ protocol_body_bytes: positiveBudget.default(1_000_000),
181
+ connections: positiveBudget.default(100),
182
+ filesystem_depth: z.number().int().safe().nonnegative().default(16),
202
183
  })
184
+ .strict()
203
185
  .default({
204
186
  output_bytes: 1_000_000,
205
- frames: 10_000,
206
187
  files: 10_000,
207
188
  file_bytes: 10_000_000,
208
189
  processes: 1_000,
@@ -216,13 +197,12 @@ export const processScenarioSchema = z
216
197
  paths: z.boolean().default(true),
217
198
  pids: z.boolean().default(true),
218
199
  ports: z.boolean().default(true),
219
- time_bucket_ms: positiveBudget.max(60_000).default(10),
200
+ time_bucket_ms: positiveBudget.default(10),
220
201
  patterns: z
221
202
  .array(z.object({
222
- pattern: z.string().max(500),
223
- replacement: z.string().max(100),
203
+ pattern: z.string(),
204
+ replacement: z.string(),
224
205
  }))
225
- .max(32)
226
206
  .default([]),
227
207
  })
228
208
  .default({
@@ -237,39 +217,27 @@ export const processScenarioSchema = z
237
217
  machine: replayMachineSchema.nullable().default(null),
238
218
  http: z
239
219
  .array(z.object({
240
- method: z.string().max(16),
220
+ method: z.string(),
241
221
  path: z.string().startsWith("/"),
242
222
  status: z.number().int().min(100).max(599),
243
- body: z.string().max(1_000_000),
223
+ body: z.string(),
244
224
  request_headers: z.record(z.string(), z.string()).default({}),
245
- request_body: z.string().max(1_000_000).optional(),
225
+ request_body: z.string().optional(),
246
226
  response_headers: z.record(z.string(), z.string()).default({}),
247
- delay_ms: z.number().int().nonnegative().max(30_000).default(0),
227
+ delay_ms: z.number().int().safe().nonnegative().default(0),
248
228
  disconnect: z.boolean().default(false),
249
- max_calls: z.number().int().min(1).max(100).default(1),
229
+ max_calls: positiveBudget.default(1),
250
230
  }))
251
- .max(100)
252
- .default([]),
253
- websocket_messages: z
254
- .array(z.string().max(1_000_000))
255
- .max(100)
256
231
  .default([]),
232
+ websocket_messages: z.array(z.string()).default([]),
257
233
  websocket_connections: z
258
234
  .array(z.object({
259
- messages: z
260
- .array(z.object({
261
- data: z.string().max(1_000_000),
262
- delay_ms: z
263
- .number()
264
- .int()
265
- .nonnegative()
266
- .max(30_000)
267
- .default(0),
268
- }))
269
- .max(100),
235
+ messages: z.array(z.object({
236
+ data: z.string(),
237
+ delay_ms: z.number().int().safe().nonnegative().default(0),
238
+ })),
270
239
  disconnect_after: z.boolean().default(false),
271
240
  }))
272
- .max(100)
273
241
  .default([]),
274
242
  })
275
243
  .default({
@@ -283,7 +251,9 @@ export const processScenarioSchema = z
283
251
  .strict()
284
252
  .superRefine((scenario, context) => {
285
253
  for (let index = 1; index < scenario.events.length; index += 1) {
286
- if (scenario.events[index].at_ms < scenario.events[index - 1].at_ms) {
254
+ const event = scenario.events[index];
255
+ const previous = scenario.events[index - 1];
256
+ if (eventsOutOfOrder(event, previous)) {
287
257
  context.addIssue({
288
258
  code: "custom",
289
259
  message: "events must be ordered by at_ms",
@@ -361,23 +331,22 @@ export const processScenarioSchema = z
361
331
  path: ["replay"],
362
332
  });
363
333
  });
334
+ const eventsOutOfOrder = (event, previous) => event !== undefined && previous !== undefined && event.at_ms < previous.at_ms;
364
335
  /** Parse untrusted process scenario input and apply safe default budgets. */
365
336
  export const parseProcessScenario = (input) => processScenarioSchema.parse(input);
366
- const isWithin = (candidate, root) => resolve(candidate) === resolve(root) ||
367
- resolve(candidate).startsWith(`${resolve(root)}${resolve(root).endsWith("/") ? "" : "/"}`);
368
337
  /** Evaluate scenario authority before any process or filesystem side effect occurs. */
369
338
  export const authorizeProcessScenario = (scenario, policy) => {
370
- if (!policy.enabled)
339
+ if (policy.status === "disabled")
371
340
  return { allowed: false, reason: "process capture is disabled" };
372
- if (scenario.network_access === "host" && !policy.allowExternalNetwork)
341
+ if (scenario.network_access === "host" && policy.networkAccess === "none")
373
342
  return {
374
343
  allowed: false,
375
344
  reason: "host network access is not approved by operator policy",
376
345
  };
377
- if (!policy.executableRoots.some((root) => isWithin(scenario.executable, root))) {
346
+ if (!policy.executableRoots.some((root) => isPathWithinRoot(root, scenario.executable))) {
378
347
  return { allowed: false, reason: "executable is outside approved roots" };
379
348
  }
380
- if (!policy.workingRoots.some((root) => isWithin(scenario.working_directory, root))) {
349
+ if (!policy.workingRoots.some((root) => isPathWithinRoot(root, scenario.working_directory))) {
381
350
  return {
382
351
  allowed: false,
383
352
  reason: "working directory is outside approved roots",
@@ -393,7 +362,7 @@ export const authorizeProcessScenario = (scenario, policy) => {
393
362
  reason: "scenario requests an environment variable not allowed by policy",
394
363
  };
395
364
  }
396
- if (scenario.filesystem_roots.some((path) => !policy.workingRoots.some((root) => isWithin(path, root)))) {
365
+ if (scenario.filesystem_roots.some((path) => !policy.workingRoots.some((root) => isPathWithinRoot(root, path)))) {
397
366
  return {
398
367
  allowed: false,
399
368
  reason: "filesystem root is outside approved roots",
@@ -1,16 +1,9 @@
1
- import { validateProcessCapture } from "./processCaptureValidation.js";
2
1
  import { evaluateProcessTraceSide, processTraceComparisonResultSchema, } from "./processTraceEvaluation.js";
3
2
  import { processTraceSpecificationSchema, } from "./processTraceSpecification.js";
4
3
  export { processTraceComparisonResultSchema, } from "./processTraceEvaluation.js";
5
4
  export { processTraceSourceSchema, processTraceSpecificationSchema, } from "./processTraceSpecification.js";
6
5
  /** Compare two captures against an explicit finite trace language. */
7
6
  export const compareProcessTraces = (left, right, specificationInput) => {
8
- const captureIssues = [
9
- ...validateProcessCapture(left),
10
- ...validateProcessCapture(right),
11
- ];
12
- if (captureIssues.length > 0)
13
- throw new TypeError(`Invalid Process Capture v4: ${captureIssues[0].path}`);
14
7
  const specification = processTraceSpecificationSchema.parse(specificationInput);
15
8
  const leftEvaluation = evaluateProcessTraceSide(left, specification);
16
9
  const rightEvaluation = evaluateProcessTraceSide(right, specification);
@@ -7,12 +7,22 @@ const matchedEventSchema = z.strictObject({
7
7
  event_id: identifierSchema,
8
8
  location: locationSchema,
9
9
  });
10
- const sideResultSchema = z.strictObject({
11
- status: z.enum(["pass", "fail", "unknown"]),
12
- matched_variant: identifierSchema.nullable(),
10
+ const sideResultShape = {
13
11
  satisfied_constraints: z.array(z.string()),
14
12
  raw_trace: z.array(matchedEventSchema),
15
- });
13
+ };
14
+ const sideResultSchema = z.union([
15
+ z.strictObject({
16
+ ...sideResultShape,
17
+ status: z.literal("pass"),
18
+ matched_variant: identifierSchema.nullable(),
19
+ }),
20
+ z.strictObject({
21
+ ...sideResultShape,
22
+ status: z.enum(["fail", "unknown"]),
23
+ matched_variant: z.null(),
24
+ }),
25
+ ]);
16
26
  const diagnosticSchema = z.strictObject({
17
27
  kind: z.enum([
18
28
  "journal",
@@ -2,7 +2,7 @@ import canonicalize from "canonicalize";
2
2
  import { z } from "zod";
3
3
  import { jsonValueSchema } from "./jsonValue.js";
4
4
  import { comparableProcessObservationPayload, processObservationSourceSchema, } from "./processObservation.js";
5
- const identifierSchema = z.string().regex(/^[A-Za-z][A-Za-z0-9._-]{0,63}$/u);
5
+ const identifierSchema = z.string().regex(/^[A-Za-z][A-Za-z0-9._-]*$/u);
6
6
  /** Process observation families admitted by a declared trace specification. */
7
7
  export const processTraceSourceSchema = processObservationSourceSchema;
8
8
  const cardinalitySchema = z.discriminatedUnion("kind", [
@@ -10,13 +10,13 @@ const cardinalitySchema = z.discriminatedUnion("kind", [
10
10
  z.strictObject({ kind: z.literal("optional") }),
11
11
  z.strictObject({
12
12
  kind: z.literal("exact"),
13
- count: z.number().int().min(0).max(10_000),
13
+ count: z.number().int().min(0),
14
14
  }),
15
15
  z
16
16
  .strictObject({
17
17
  kind: z.literal("range"),
18
- min: z.number().int().min(0).max(10_000),
19
- max: z.number().int().min(0).max(10_000),
18
+ min: z.number().int().min(0),
19
+ max: z.number().int().min(0),
20
20
  })
21
21
  .refine(({ min, max }) => min <= max, {
22
22
  message: "cardinality min must not exceed max",
@@ -35,7 +35,6 @@ const eventDeclarationSchema = z.strictObject({
35
35
  "dispatched_at_ms",
36
36
  "elapsed_ms",
37
37
  ]))
38
- .max(5)
39
38
  .refine((values) => new Set(values).size === values.length, {
40
39
  message: "ignored event fields must be unique",
41
40
  })
@@ -49,39 +48,34 @@ const partialOrderLanguageSchema = z.strictObject({
49
48
  before: identifierSchema,
50
49
  after: identifierSchema,
51
50
  }))
52
- .max(4_096)
53
51
  .default([]),
54
52
  not_before: z
55
53
  .array(z.strictObject({
56
54
  event: identifierSchema,
57
55
  anchor: identifierSchema,
58
56
  }))
59
- .max(4_096)
60
57
  .default([]),
61
58
  unordered_groups: z
62
- .array(z.strictObject({ events: z.array(identifierSchema).min(2).max(256) }))
63
- .max(256)
59
+ .array(z.strictObject({ events: z.array(identifierSchema).min(2) }))
64
60
  .default([]),
65
- prefix: z.array(identifierSchema).max(4_096).default([]),
66
- suffix: z.array(identifierSchema).max(4_096).default([]),
61
+ prefix: z.array(identifierSchema).default([]),
62
+ suffix: z.array(identifierSchema).default([]),
67
63
  });
68
64
  const finiteTraceTokenSchema = z.union([
69
65
  identifierSchema,
70
- z.strictObject({ unordered: z.array(identifierSchema).min(2).max(256) }),
66
+ z.strictObject({ unordered: z.array(identifierSchema).min(2) }),
71
67
  ]);
72
68
  const finiteTraceLanguageSchema = z.strictObject({
73
69
  kind: z.literal("finite_traces"),
74
70
  variants: z
75
71
  .array(z.strictObject({
76
72
  id: identifierSchema,
77
- trace: z.array(finiteTraceTokenSchema).max(4_096),
73
+ trace: z.array(finiteTraceTokenSchema),
78
74
  }))
79
- .min(1)
80
- .max(64),
75
+ .min(1),
81
76
  });
82
77
  const specificationShapeSchema = z.strictObject({
83
- version: z.literal(1),
84
- events: z.array(eventDeclarationSchema).min(1).max(256),
78
+ events: z.array(eventDeclarationSchema).min(1),
85
79
  language: z.discriminatedUnion("kind", [
86
80
  partialOrderLanguageSchema,
87
81
  finiteTraceLanguageSchema,