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
@@ -94,44 +94,57 @@ const candidateNames = (managed) => {
94
94
  }
95
95
  return [...names];
96
96
  };
97
- const selectCandidates = (managed, symbols, maxCandidates) => {
97
+ const matchPinvoke = (managed, symbols, supportedNativeEvidence) => {
98
98
  const names = candidateNames(managed);
99
99
  const allCandidates = symbols.filter((symbol) => names.some((name) => sameSymbolName(name, symbol.name)));
100
- const candidates = allCandidates.slice(0, maxCandidates);
100
+ const [first, ...remaining] = allCandidates;
101
+ if (first === undefined)
102
+ return {
103
+ match: {
104
+ status: "unresolved",
105
+ basis: supportedNativeEvidence > 0
106
+ ? "no-native-candidate"
107
+ : "unsupported-native-evidence",
108
+ confidence: "unknown",
109
+ matched_native: null,
110
+ candidates: [],
111
+ },
112
+ };
113
+ const candidates = [first, ...remaining];
101
114
  const exact = candidates.find((symbol) => sameSymbolName(managed.import_name, symbol.name) &&
102
115
  moduleCompatible(managed.import_scope_name, symbol));
103
116
  const decorated = candidates.find((symbol) => moduleCompatible(managed.import_scope_name, symbol));
104
- const selected = exact ?? decorated ?? candidates[0] ?? null;
105
- return { allCandidates, candidates, selected, exact, decorated };
106
- };
107
- const basisAndStatus = (managed, selection, hasSupportedNativeEvidence) => {
108
- const { selected, exact } = selection;
109
- if (selected === null)
110
- return {
111
- basis: hasSupportedNativeEvidence
112
- ? "no-native-candidate"
113
- : "unsupported-native-evidence",
114
- status: "unresolved",
115
- confidence: "unknown",
116
- };
117
+ const selected = exact ?? decorated ?? first;
117
118
  if (!moduleCompatible(managed.import_scope_name, selected))
118
119
  return {
119
- basis: "module-mismatch",
120
- status: "contradicted",
121
- confidence: "unknown",
120
+ match: {
121
+ status: "contradicted",
122
+ basis: "module-mismatch",
123
+ confidence: "unknown",
124
+ matched_native: selected,
125
+ candidates,
126
+ },
122
127
  };
123
128
  if (exact !== undefined)
124
129
  return {
125
- basis: selected.source === "macho-export"
126
- ? "exact-export-name"
127
- : "exact-function-name",
128
- status: "verified",
129
- confidence: "observed",
130
+ match: {
131
+ status: "verified",
132
+ basis: selected.source === "macho-export"
133
+ ? "exact-export-name"
134
+ : "exact-function-name",
135
+ confidence: "observed",
136
+ matched_native: selected,
137
+ candidates,
138
+ },
130
139
  };
131
140
  return {
132
- basis: "decorated-name-candidate",
133
- status: "inferred",
134
- confidence: "inferred",
141
+ match: {
142
+ basis: "decorated-name-candidate",
143
+ status: "inferred",
144
+ confidence: "inferred",
145
+ matched_native: selected,
146
+ candidates,
147
+ },
135
148
  };
136
149
  };
137
150
  const pinvokeLimitations = (status, managed) => [
@@ -154,7 +167,7 @@ const pinvokeLimitations = (status, managed) => [
154
167
  ]
155
168
  : []),
156
169
  ];
157
- export const verifyPinvoke = ({ item, managedEvidenceId, symbols, hasSupportedNativeEvidence, input, }) => {
170
+ export const verifyPinvoke = ({ item, managedEvidenceId, native, }) => {
158
171
  const managed = {
159
172
  token: item.token,
160
173
  member_token: item.member_token,
@@ -166,9 +179,8 @@ export const verifyPinvoke = ({ item, managedEvidenceId, symbols, hasSupportedNa
166
179
  call_convention: item.call_convention,
167
180
  declaration_verification: item.verification,
168
181
  };
169
- const selection = selectCandidates(item, symbols, input.limits.max_candidates_per_import);
170
- const { status, basis, confidence } = basisAndStatus(item, selection, hasSupportedNativeEvidence);
171
- const limitations = pinvokeLimitations(status, item);
182
+ const selection = matchPinvoke(item, native.symbols, native.accepted);
183
+ const limitations = pinvokeLimitations(selection.match.status, item);
172
184
  return {
173
185
  verification: pinvokeVerificationSchema.parse({
174
186
  item_id: `mnv_pinvoke_${digest({
@@ -176,21 +188,16 @@ export const verifyPinvoke = ({ item, managedEvidenceId, symbols, hasSupportedNa
176
188
  token: item.token,
177
189
  importName: item.import_name,
178
190
  importScope: item.import_scope_name,
179
- candidates: [...selection.candidates],
191
+ candidates: selection.match.candidates,
180
192
  })}`,
181
193
  managed,
182
- status,
183
- basis,
184
- confidence,
185
- matched_native: selection.selected,
186
- candidates: selection.candidates,
194
+ ...selection.match,
187
195
  evidence_links: [
188
196
  managedEvidenceId,
189
- ...new Set(selection.candidates.map(({ evidence_id: id }) => id)),
197
+ ...new Set(selection.match.candidates.map(({ evidence_id: id }) => id)),
190
198
  ],
191
199
  limitations,
192
200
  }),
193
- omittedCandidates: Math.max(0, selection.allCandidates.length - selection.candidates.length),
194
201
  };
195
202
  };
196
203
  const countStatuses = (items) => ({
@@ -199,21 +206,17 @@ const countStatuses = (items) => ({
199
206
  unresolved: items.filter(({ status }) => status === "unresolved").length,
200
207
  contradicted: items.filter(({ status }) => status === "contradicted").length,
201
208
  });
202
- export const buildVerificationResult = ({ managedEvidence, managed, native, pinvokeImports, verifiedPinvokes, input, }) => {
209
+ export const buildVerificationResult = ({ managedEvidence, managed, native, pinvokeImports, input, }) => {
203
210
  const counts = countStatuses(pinvokeImports);
204
- const omittedNativeObservations = Math.max(0, input.native_observations.length - input.limits.max_native_observations);
205
- const omittedCandidates = verifiedPinvokes.reduce((sum, item) => sum + item.omittedCandidates, 0);
206
- const nativeBodyUnresolved = managed.native_implementations.items.filter(({ boundary_kind: kind }) => kind !== "pinvoke").length;
207
- const coverageStatus = omittedNativeObservations > 0 || omittedCandidates > 0
208
- ? "truncated"
209
- : managed.coverage.state === "complete" && native.unsupported === 0
211
+ const nativeBodyUnresolved = managed.native_implementations.filter(({ boundary_kind: kind }) => kind !== "pinvoke").length;
212
+ const coverage = {
213
+ status: managed.coverage.state === "complete" && native.unsupported === 0
210
214
  ? "complete-within-inputs"
211
- : "partial";
215
+ : "partial",
216
+ };
212
217
  return {
213
- schema_version: 1,
214
218
  algorithm: {
215
219
  name: "rea-managed-native-verification",
216
- version: 1,
217
220
  token_identity: "build-local",
218
221
  token_to_address_mapping: "not-inferred",
219
222
  },
@@ -223,8 +226,8 @@ export const buildVerificationResult = ({ managedEvidence, managed, native, pinv
223
226
  artifact_path: managed.artifact.path,
224
227
  mvid: managed.module?.mvid ?? null,
225
228
  metadata_status: managed.metadata.status,
226
- pinvoke_imports_total: managed.pinvoke_imports.total,
227
- native_implementations_total: managed.native_implementations.total,
229
+ pinvoke_imports_total: managed.pinvoke_imports.length,
230
+ native_implementations_total: managed.native_implementations.length,
228
231
  coverage_state: managed.coverage.state,
229
232
  },
230
233
  native_observations: {
@@ -232,7 +235,6 @@ export const buildVerificationResult = ({ managedEvidence, managed, native, pinv
232
235
  accepted: native.accepted,
233
236
  unsupported: native.unsupported,
234
237
  symbols: native.symbols.length,
235
- truncated: omittedNativeObservations > 0,
236
238
  },
237
239
  summary: {
238
240
  ...counts,
@@ -243,16 +245,10 @@ export const buildVerificationResult = ({ managedEvidence, managed, native, pinv
243
245
  unresolved: nativeBodyUnresolved,
244
246
  reason: "Managed metadata tokens and RVAs are not translated to native provider addresses by this workflow; C++/CLI, ReadyToRun, and native-body mappings require explicit provider-supported bridge evidence.",
245
247
  },
246
- coverage: {
247
- status: coverageStatus,
248
- omitted_native_observations: omittedNativeObservations,
249
- omitted_candidates: omittedCandidates,
250
- },
248
+ coverage,
251
249
  evidence_links: [
252
250
  managedEvidence.evidence_id,
253
- ...input.native_observations
254
- .slice(0, input.limits.max_native_observations)
255
- .map(({ evidence_id: id }) => id),
251
+ ...input.native_observations.map(({ evidence_id: id }) => id),
256
252
  ],
257
253
  limitations: [
258
254
  "P/Invoke verification checks declared import names against supplied native export or function-name Evidence only.",
@@ -4,25 +4,7 @@ import { cliMetadataGuidSchema } from "./managedArtifact.js";
4
4
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
5
5
  const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u);
6
6
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
7
- const boundedTextSchema = z.string().min(1).max(4_096);
8
- const matchStatusSchema = z.enum([
9
- "verified",
10
- "inferred",
11
- "unresolved",
12
- "contradicted",
13
- ]);
14
- const matchBasisSchema = z.enum([
15
- "exact-export-name",
16
- "exact-function-name",
17
- "decorated-name-candidate",
18
- "module-mismatch",
19
- "no-native-candidate",
20
- "unsupported-native-evidence",
21
- ]);
22
- const nativeVerificationLimitsSchema = z.strictObject({
23
- max_native_observations: z.number().int().min(1).max(50).default(20),
24
- max_candidates_per_import: z.number().int().min(1).max(100).default(25),
25
- });
7
+ const textSchema = z.string().min(1);
26
8
  const nativeSymbolSchema = z.strictObject({
27
9
  evidence_id: evidenceIdSchema,
28
10
  operation: z.string().min(1),
@@ -32,7 +14,7 @@ const nativeSymbolSchema = z.strictObject({
32
14
  module_path: z.string().nullable(),
33
15
  source: z.enum(["macho-export", "function-dossier"]),
34
16
  });
35
- export const pinvokeVerificationSchema = z.strictObject({
17
+ const pinvokeVerificationContextShape = {
36
18
  item_id: z.string().regex(/^mnv_pinvoke_[a-f0-9]{64}$/u),
37
19
  managed: z.strictObject({
38
20
  token: tokenSchema,
@@ -53,24 +35,51 @@ export const pinvokeVerificationSchema = z.strictObject({
53
35
  ]),
54
36
  declaration_verification: z.literal("managed-declaration-only"),
55
37
  }),
56
- status: matchStatusSchema,
57
- basis: matchBasisSchema,
58
- confidence: z.enum(["observed", "inferred", "unknown"]),
59
- matched_native: nativeSymbolSchema.nullable(),
60
- candidates: z.array(nativeSymbolSchema).max(100),
61
- evidence_links: z.array(evidenceIdSchema).min(1).max(51),
62
- limitations: z.array(boundedTextSchema).max(100),
63
- });
38
+ evidence_links: z.array(evidenceIdSchema).min(1),
39
+ limitations: z.array(textSchema),
40
+ };
41
+ const observedCandidatesSchema = z
42
+ .tuple([nativeSymbolSchema])
43
+ .rest(nativeSymbolSchema);
44
+ export const pinvokeVerificationSchema = z.discriminatedUnion("status", [
45
+ z.strictObject({
46
+ ...pinvokeVerificationContextShape,
47
+ status: z.literal("verified"),
48
+ basis: z.enum(["exact-export-name", "exact-function-name"]),
49
+ confidence: z.literal("observed"),
50
+ matched_native: nativeSymbolSchema,
51
+ candidates: observedCandidatesSchema,
52
+ }),
53
+ z.strictObject({
54
+ ...pinvokeVerificationContextShape,
55
+ status: z.literal("inferred"),
56
+ basis: z.literal("decorated-name-candidate"),
57
+ confidence: z.literal("inferred"),
58
+ matched_native: nativeSymbolSchema,
59
+ candidates: observedCandidatesSchema,
60
+ }),
61
+ z.strictObject({
62
+ ...pinvokeVerificationContextShape,
63
+ status: z.literal("unresolved"),
64
+ basis: z.enum(["no-native-candidate", "unsupported-native-evidence"]),
65
+ confidence: z.literal("unknown"),
66
+ matched_native: z.null(),
67
+ candidates: z.tuple([]),
68
+ }),
69
+ z.strictObject({
70
+ ...pinvokeVerificationContextShape,
71
+ status: z.literal("contradicted"),
72
+ basis: z.literal("module-mismatch"),
73
+ confidence: z.literal("unknown"),
74
+ matched_native: nativeSymbolSchema,
75
+ candidates: observedCandidatesSchema,
76
+ }),
77
+ ]);
64
78
  /** Authenticated managed boundary Evidence plus native observations. */
65
79
  export const managedNativeVerificationInputSchema = z
66
80
  .strictObject({
67
81
  managed_boundaries: evidenceSchema,
68
- native_observations: z.array(evidenceSchema).min(1).max(50),
69
- limits: nativeVerificationLimitsSchema.default({
70
- max_native_observations: 20,
71
- max_candidates_per_import: 25,
72
- }),
73
- unknown_registry_approved: z.literal(true).optional(),
82
+ native_observations: z.array(evidenceSchema).min(1),
74
83
  })
75
84
  .superRefine((input, context) => {
76
85
  const ids = new Set();
@@ -92,13 +101,15 @@ export const managedNativeVerificationInputSchema = z
92
101
  ids.add(evidence.evidence_id);
93
102
  }
94
103
  });
104
+ const verificationCoverageSchema = z.strictObject({
105
+ status: z.enum(["complete-within-inputs", "partial"]),
106
+ });
95
107
  /** Provider-neutral managed/native verification result. */
96
- export const managedNativeVerificationResultSchema = z.strictObject({
97
- schema_version: z.literal(1),
108
+ export const managedNativeVerificationResultSchema = z
109
+ .strictObject({
98
110
  verification_id: z.string().regex(/^mnv_[a-f0-9]{64}$/u),
99
111
  algorithm: z.strictObject({
100
112
  name: z.literal("rea-managed-native-verification"),
101
- version: z.literal(1),
102
113
  token_identity: z.literal("build-local"),
103
114
  token_to_address_mapping: z.literal("not-inferred"),
104
115
  }),
@@ -117,7 +128,6 @@ export const managedNativeVerificationResultSchema = z.strictObject({
117
128
  accepted: z.number().int().min(0),
118
129
  unsupported: z.number().int().min(0),
119
130
  symbols: z.number().int().min(0),
120
- truncated: z.boolean(),
121
131
  }),
122
132
  summary: z.strictObject({
123
133
  verified: z.number().int().min(0),
@@ -126,16 +136,42 @@ export const managedNativeVerificationResultSchema = z.strictObject({
126
136
  contradicted: z.number().int().min(0),
127
137
  native_body_unresolved: z.number().int().min(0),
128
138
  }),
129
- pinvoke_imports: z.array(pinvokeVerificationSchema).max(50_000),
139
+ pinvoke_imports: z.array(pinvokeVerificationSchema),
130
140
  native_implementations: z.strictObject({
131
141
  unresolved: z.number().int().min(0),
132
- reason: boundedTextSchema,
133
- }),
134
- coverage: z.strictObject({
135
- status: z.enum(["complete-within-inputs", "partial", "truncated"]),
136
- omitted_native_observations: z.number().int().min(0),
137
- omitted_candidates: z.number().int().min(0),
142
+ reason: textSchema,
138
143
  }),
139
- evidence_links: z.array(evidenceIdSchema).min(2).max(51),
140
- limitations: z.array(boundedTextSchema).max(1_000),
144
+ coverage: verificationCoverageSchema,
145
+ evidence_links: z.array(evidenceIdSchema).min(2),
146
+ limitations: z.array(textSchema),
147
+ })
148
+ .superRefine((result, context) => {
149
+ const observedNativeCount = result.native_observations.accepted +
150
+ result.native_observations.unsupported;
151
+ if (observedNativeCount !== result.native_observations.total)
152
+ context.addIssue({
153
+ code: "custom",
154
+ path: ["native_observations"],
155
+ message: "Native observation counts must account for the total input",
156
+ });
157
+ for (const status of [
158
+ "verified",
159
+ "inferred",
160
+ "unresolved",
161
+ "contradicted",
162
+ ])
163
+ if (result.summary[status] !==
164
+ result.pinvoke_imports.filter((item) => item.status === status).length)
165
+ context.addIssue({
166
+ code: "custom",
167
+ path: ["summary", status],
168
+ message: `P/Invoke ${status} count must match the item results`,
169
+ });
170
+ if (result.summary.native_body_unresolved !==
171
+ result.native_implementations.unresolved)
172
+ context.addIssue({
173
+ code: "custom",
174
+ path: ["summary", "native_body_unresolved"],
175
+ message: "Native body summary must match unresolved implementations",
176
+ });
141
177
  });
@@ -6,14 +6,13 @@ import { cliMetadataGuidSchema, managedMemberInspectionSchema, } from "./managed
6
6
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
7
7
  const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u);
8
8
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
9
- const boundedTextSchema = z.string().min(1).max(65_536);
10
- const boundedLabelSchema = z.string().min(1).max(512);
9
+ const textSchema = z.string().min(1);
11
10
  const decompilerSchema = z.strictObject({
12
- name: boundedLabelSchema,
13
- version: z.string().min(1).max(128).nullable(),
11
+ name: textSchema,
12
+ version: textSchema.nullable(),
14
13
  family: z.enum(["ilspy", "dnspy", "dnlib", "mono-cecil", "other"]),
15
14
  executable_sha256: digestSchema.nullable(),
16
- options: z.array(z.string().max(512)).max(50).default([]),
15
+ options: z.array(z.string()).default([]),
17
16
  });
18
17
  const managedReconstructionMethodInputSchema = z.strictObject({
19
18
  token: tokenSchema,
@@ -22,9 +21,9 @@ const managedReconstructionMethodInputSchema = z.strictObject({
22
21
  reconstruction: z.strictObject({
23
22
  kind: z.enum(["decompiled-csharp", "decompiled-il", "semantic-pseudocode"]),
24
23
  language: z.enum(["csharp", "il", "pseudocode"]),
25
- text: boundedTextSchema,
24
+ text: textSchema,
26
25
  text_sha256: digestSchema.optional(),
27
- source_path: z.string().min(1).max(4_096).nullable().optional(),
26
+ source_path: textSchema.nullable().optional(),
28
27
  start_line: z.number().int().min(1).nullable().optional(),
29
28
  end_line: z.number().int().min(1).nullable().optional(),
30
29
  }),
@@ -32,9 +31,8 @@ const managedReconstructionMethodInputSchema = z.strictObject({
32
31
  export const managedReconstructionImportInputSchema = z.strictObject({
33
32
  static_members: evidenceSchema,
34
33
  decompiler: decompilerSchema,
35
- methods: z.array(managedReconstructionMethodInputSchema).min(1).max(50),
36
- notes: z.array(z.string().min(1).max(4_096)).max(100).default([]),
37
- unknown_registry_approved: z.literal(true).optional(),
34
+ methods: z.array(managedReconstructionMethodInputSchema).min(1),
35
+ notes: z.array(textSchema).default([]),
38
36
  });
39
37
  const importedMethodSchema = z.strictObject({
40
38
  token: tokenSchema,
@@ -47,11 +45,11 @@ const importedMethodSchema = z.strictObject({
47
45
  reconstruction: z.strictObject({
48
46
  kind: z.enum(["decompiled-csharp", "decompiled-il", "semantic-pseudocode"]),
49
47
  language: z.enum(["csharp", "il", "pseudocode"]),
50
- text: boundedTextSchema,
48
+ text: textSchema,
51
49
  text_sha256: digestSchema,
52
- text_length: z.number().int().min(1).max(65_536),
50
+ text_length: z.number().int().min(1),
53
51
  line_count: z.number().int().min(1),
54
- source_path: z.string().min(1).max(4_096).nullable(),
52
+ source_path: textSchema.nullable(),
55
53
  start_line: z.number().int().min(1).nullable(),
56
54
  end_line: z.number().int().min(1).nullable(),
57
55
  }),
@@ -63,7 +61,6 @@ const importedMethodSchema = z.strictObject({
63
61
  }),
64
62
  });
65
63
  export const managedReconstructionImportResultSchema = z.strictObject({
66
- schema_version: z.literal(1),
67
64
  reconstruction_id: z.string().regex(/^mre_[a-f0-9]{64}$/u),
68
65
  phase: z.literal("reconstruction-import"),
69
66
  executed: z.literal(false),
@@ -80,16 +77,16 @@ export const managedReconstructionImportResultSchema = z.strictObject({
80
77
  options_sha256: digestSchema,
81
78
  }),
82
79
  summary: z.strictObject({
83
- imported_methods: z.number().int().min(1).max(50),
84
- decompiled_csharp_methods: z.number().int().min(0).max(50),
85
- decompiled_il_methods: z.number().int().min(0).max(50),
86
- pseudocode_methods: z.number().int().min(0).max(50),
80
+ imported_methods: z.number().int().min(1),
81
+ decompiled_csharp_methods: z.number().int().min(0),
82
+ decompiled_il_methods: z.number().int().min(0),
83
+ pseudocode_methods: z.number().int().min(0),
87
84
  total_text_bytes: z.number().int().min(1),
88
85
  }),
89
- methods: z.array(importedMethodSchema).min(1).max(50),
90
- notes: z.array(z.string().min(1).max(4_096)).max(100),
86
+ methods: z.array(importedMethodSchema).min(1),
87
+ notes: z.array(textSchema),
91
88
  evidence_links: z.array(evidenceIdSchema).length(1),
92
- limitations: z.array(z.string().min(1).max(4_096)).max(1_000),
89
+ limitations: z.array(textSchema),
93
90
  });
94
91
  const sha256Text = (value) => createHash("sha256").update(value).digest("hex");
95
92
  const sha256Json = (value) => {
@@ -99,7 +96,7 @@ const sha256Json = (value) => {
99
96
  return createHash("sha256").update(serialized).digest("hex");
100
97
  };
101
98
  const countLines = (text) => text.length === 0 ? 0 : text.split(/\r\n|\r|\n/u).length;
102
- const findObservedMethod = (members, candidate) => members.methods.items.find((item) => item.token === candidate.token &&
99
+ const findObservedMethod = (members, candidate) => members.methods.find((item) => item.token === candidate.token &&
103
100
  item.signature.raw_sha256 === candidate.signature_sha256 &&
104
101
  item.body.status === "present" &&
105
102
  item.body.normalized_il_sha256 !== null &&
@@ -163,7 +160,6 @@ const RECONSTRUCTION_LIMITATIONS = [
163
160
  "Obfuscated names, decompiler variables, and control-flow restructuring are not treated as proof without separate validation.",
164
161
  ];
165
162
  const buildReconstructionWithoutId = (input, staticEvidence, members, methods) => ({
166
- schema_version: 1,
167
163
  phase: "reconstruction-import",
168
164
  executed: false,
169
165
  static_observation: buildStaticObservation(staticEvidence, members),
@@ -6,7 +6,7 @@ import { cliMetadataGuidSchema, managedMemberInspectionSchema, } from "./managed
6
6
  const digestSchema = z.string().regex(/^[a-f0-9]{64}$/u);
7
7
  const evidenceIdSchema = z.string().regex(/^ev_[a-f0-9]{64}$/u);
8
8
  const tokenSchema = z.string().regex(/^0x[0-9a-f]{8}$/u);
9
- const boundedTextSchema = z.string().min(1).max(4_096);
9
+ const boundedTextSchema = z.string().min(1);
10
10
  const managedRuntimeEffectSchema = z.enum([
11
11
  "attach",
12
12
  "load",
@@ -20,9 +20,9 @@ const managedRuntimeHostSchema = z.strictObject({
20
20
  architecture: z.enum(["x86", "x86_64", "arm", "arm64"]),
21
21
  });
22
22
  const managedRuntimeBoundsSchema = z.strictObject({
23
- timeout_ms: z.number().int().min(1).max(60_000).default(5_000),
24
- max_threads: z.number().int().min(1).max(256).default(32),
25
- max_output_bytes: z.number().int().min(0).max(1_048_576).default(65_536),
23
+ timeout_ms: z.number().int().min(1).default(5_000),
24
+ max_threads: z.number().int().min(1).default(32),
25
+ max_output_bytes: z.number().int().min(0).default(65_536),
26
26
  allow_network: z.literal(false).default(false),
27
27
  allow_ui: z.literal(false).default(false),
28
28
  });
@@ -42,10 +42,8 @@ export const managedRuntimeCorrelationInputSchema = z.strictObject({
42
42
  allow_network: false,
43
43
  allow_ui: false,
44
44
  }),
45
- unknown_registry_approved: z.literal(true).optional(),
46
45
  });
47
46
  export const managedRuntimeCorrelationResultSchema = z.strictObject({
48
- schema_version: z.literal(1),
49
47
  correlation_id: z.string().regex(/^mrc_[a-f0-9]{64}$/u),
50
48
  phase: z.literal("admission-plan"),
51
49
  executed: z.literal(false),
@@ -99,7 +97,7 @@ export const managedRuntimeCorrelationResultSchema = z.strictObject({
99
97
  bounds: managedRuntimeBoundsSchema,
100
98
  unsupported_until_executor_exists: z.literal(true),
101
99
  evidence_links: z.array(evidenceIdSchema).length(1),
102
- limitations: z.array(boundedTextSchema).max(1_000),
100
+ limitations: z.array(boundedTextSchema),
103
101
  });
104
102
  const sha256 = (value) => {
105
103
  const serialized = canonicalize(value);
@@ -113,7 +111,7 @@ export const planManagedRuntimeCorrelation = (input, executablePath, permissionG
113
111
  if (staticEvidence.operation !== "inspect_managed_members")
114
112
  throw new TypeError("Evidence operation is not inspect_managed_members");
115
113
  const members = managedMemberInspectionSchema.parse(staticEvidence.normalized_result);
116
- const method = members.methods.items.find((item) => item.token === input.method.token &&
114
+ const method = members.methods.find((item) => item.token === input.method.token &&
117
115
  item.signature.raw_sha256 === input.method.signature_sha256 &&
118
116
  item.body.status === "present" &&
119
117
  item.body.normalized_il_sha256 !== null &&
@@ -122,7 +120,6 @@ export const planManagedRuntimeCorrelation = (input, executablePath, permissionG
122
120
  if (method === undefined)
123
121
  throw new TypeError("Requested method lock does not match a static managed member observation");
124
122
  const withoutId = {
125
- schema_version: 1,
126
123
  phase: "admission-plan",
127
124
  executed: false,
128
125
  authority_model: {
@@ -13,9 +13,7 @@ const inferenceEvidenceSchema = z
13
13
  detail: z.string().min(1),
14
14
  })
15
15
  .strict();
16
- const inferredBoundaryTypeSchema = z
17
- .object({
18
- role: z.enum(["return", "parameter"]),
16
+ const inferredBoundaryTypeFacts = {
19
17
  ordinal: z.number().int().min(0).nullable(),
20
18
  name: z.string().min(1).nullable(),
21
19
  data_type: z.string().min(1),
@@ -28,14 +26,25 @@ const inferredBoundaryTypeSchema = z
28
26
  "register-or-stack-storage",
29
27
  "compiler-generated-variable",
30
28
  ])),
31
- })
32
- .strict();
29
+ };
30
+ const inferredReturnTypeSchema = z.strictObject({
31
+ ...inferredBoundaryTypeFacts,
32
+ role: z.literal("return"),
33
+ ordinal: z.null(),
34
+ name: z.null(),
35
+ });
36
+ const inferredParameterTypeSchema = z.strictObject({
37
+ ...inferredBoundaryTypeFacts,
38
+ role: z.literal("parameter"),
39
+ ordinal: z.number().int().min(0),
40
+ });
33
41
  const jumpTableDataSourceSchema = z
34
42
  .object({
35
43
  address: z.string().min(1),
36
44
  provenance: z.enum([
37
45
  "ghidra-decompiler-load-table",
38
46
  "ghidra-dispatch-block-data-reference",
47
+ "ghidra-aarch64-byte-table",
39
48
  ]),
40
49
  entry_size_bytes: z.number().int().min(1).nullable(),
41
50
  entry_count: z.number().int().min(0).nullable(),
@@ -47,7 +56,6 @@ const jumpTableMappingSchema = z
47
56
  .object({
48
57
  case_value: z.number().int().nullable(),
49
58
  target_address: z.string().min(1),
50
- data_addresses: z.array(z.string().min(1)),
51
59
  confidence: inferenceConfidenceSchema,
52
60
  evidence: z.array(inferenceEvidenceSchema).min(1),
53
61
  })
@@ -56,9 +64,7 @@ const inferredJumpTableSchema = z
56
64
  .object({
57
65
  dispatch_address: z.string().min(1),
58
66
  data_sources: z.array(jumpTableDataSourceSchema),
59
- data_sources_truncated: z.boolean(),
60
67
  mappings: z.array(jumpTableMappingSchema),
61
- mappings_truncated: z.boolean(),
62
68
  limitations: z.array(z.string()),
63
69
  })
64
70
  .strict();
@@ -68,11 +74,9 @@ const availableNativeApiBoundarySchema = z
68
74
  provenance: z.string().min(1),
69
75
  signature_source: z.string().min(1),
70
76
  calling_convention: z.string().min(1),
71
- return_type: inferredBoundaryTypeSchema,
72
- parameters: z.array(inferredBoundaryTypeSchema),
73
- parameters_truncated: z.boolean(),
77
+ return_type: inferredReturnTypeSchema,
78
+ parameters: z.array(inferredParameterTypeSchema),
74
79
  jump_tables: z.array(inferredJumpTableSchema),
75
- jump_tables_truncated: z.boolean(),
76
80
  pseudocode: z
77
81
  .object({
78
82
  classification: z.literal("decompiler-generated-non-source"),
@@ -115,7 +119,6 @@ const nativeApiInspectionSubstepSchema = z
115
119
  /** Agent-facing projection of structured native API reconstruction substeps. */
116
120
  export const nativeApiInspectionResultSchema = z
117
121
  .object({
118
- schema_version: z.literal(1),
119
122
  procedure: z
120
123
  .object({
121
124
  address: z.string().min(1),
@@ -123,7 +126,7 @@ export const nativeApiInspectionResultSchema = z
123
126
  })
124
127
  .strict(),
125
128
  boundary: nativeApiBoundarySchema,
126
- substeps: z.array(nativeApiInspectionSubstepSchema).min(3).max(3),
129
+ substeps: z.array(nativeApiInspectionSubstepSchema).length(3),
127
130
  unsupported_branches: z.array(z.string().min(1)),
128
131
  residual_unknowns: z.array(z.string().min(1)),
129
132
  })
@@ -19,8 +19,6 @@ const nativeCommandInvocationSchema = z.object({
19
19
  }),
20
20
  stdout_bytes: z.number().int().min(0),
21
21
  stderr_bytes: z.number().int().min(0),
22
- stdout_truncated: z.boolean(),
23
- stderr_truncated: z.boolean(),
24
22
  });
25
23
  const architectureSchema = z.object({
26
24
  name: z.string(),