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
@@ -1,12 +1,14 @@
1
1
  import { z } from "zod";
2
2
  import { jsonValueSchema } from "../domain/jsonValue.js";
3
- import { processCaptureComparisonSchema, processCaptureSchema, } from "../domain/processCapture.js";
4
3
  import { residualUnknownSchema } from "../domain/residualUnknown.js";
4
+ import { evidenceBundleSchema } from "../domain/evidenceBundle.js";
5
+ import { processCaptureComparisonSchema, processCaptureSchema, } from "../domain/processCapture.js";
5
6
  import { functionInstructionWindowSchema, referenceKindSchema, } from "../domain/hopperValues.js";
6
7
  import { nativeApiInspectionResultSchema } from "../domain/nativeApiBoundary.js";
7
8
  import { demangleSwiftSchema, inspectMachoSchema, inspectPlistSchema, inspectSignatureSchema, listArchitecturesSchema, } from "../domain/nativeInspection.js";
8
- import { artifactExtractionResultSchema, artifactInventoryResultSchema, } from "../domain/artifactGraph.js";
9
+ import { artifactExtractionResultSchema } from "../domain/artifactGraph.js";
9
10
  import { artifactInspectionResultSchema } from "../domain/artifactInspection.js";
11
+ import { interfaceBuilderAnalysisSchema } from "../domain/interfaceBuilderGraph.js";
10
12
  import { managedArtifactInspectionSchema, managedMemberInspectionSchema, managedNativeBoundaryInspectionSchema, } from "../domain/managedArtifact.js";
11
13
  import { managedMemberComparisonResultSchema } from "../domain/managedMemberComparison.js";
12
14
  import { managedNativeVerificationResultSchema } from "../domain/managedNativeVerification.js";
@@ -22,7 +24,9 @@ import { staticRuntimeCorrelationResultSchema } from "../domain/staticRuntimeCor
22
24
  import { reconstructionVerificationResultSchema } from "../domain/reconstructionVerification.js";
23
25
  import { replayMachineRunOutputSchema } from "../domain/replayMachineRun.js";
24
26
  import { analysisErrorProjectionSchema } from "./errorSchemas.js";
25
- import { addressList, analysisActivity, addressedEntry, bounded, containingProcedureResolution, clientFeatureAvailabilitySchema, functionDossierOutput, graphNode, lifecycleResultOf, nullableText, pageOutput, procedureIdentity, procedureInfoOutput, evidenceResultOf as resultOf, searchPageOutput, segmentOutput, sessionProvider, providerIdentity, toolAvailability, symbolDiscoveryOutput, targetFormatSchema, targetKindSchema, } from "./toolOutputSchemaPrimitives.js";
27
+ import { nativeDispatchMetadataResultSchema } from "../domain/objcSwiftMetadata.js";
28
+ import { nativeInvestigationTraceSchema } from "../domain/nativeInvestigationGraph.js";
29
+ import { addressList, addressedValue, addressedEntry, containingProcedureResolution, functionDossierOutput, graphNode, lifecycleResultOf, nullableText, procedureIdentity, procedureInfoOutput, evidenceResultOf as resultOf, segmentOutput, sessionProvider, symbolDiscoveryOutput, targetFormatSchema, targetKindSchema, } from "./toolOutputSchemaPrimitives.js";
26
30
  const contextFacetSchema = z.discriminatedUnion("state", [
27
31
  z.object({ state: z.literal("available"), value: jsonValueSchema }),
28
32
  z.object({
@@ -31,6 +35,25 @@ const contextFacetSchema = z.discriminatedUnion("state", [
31
35
  remediation: z.string(),
32
36
  }),
33
37
  ]);
38
+ const bookmarkFacetSchema = z.discriminatedUnion("state", [
39
+ z.object({ state: z.literal("available"), value: z.array(addressedEntry) }),
40
+ z.object({
41
+ state: z.literal("unavailable"),
42
+ reason: z.string(),
43
+ remediation: z.string(),
44
+ }),
45
+ ]);
46
+ const addressedString = z.object({
47
+ address: z.string(),
48
+ value: z.string(),
49
+ string: z
50
+ .object({
51
+ encoding: z.string().min(1),
52
+ termination: z.enum(["missing", "present_or_not_required"]),
53
+ byte_length: z.number().int().min(0),
54
+ })
55
+ .optional(),
56
+ });
34
57
  /** Exact structured-content schemas shared by direct analysis providers. */
35
58
  export const officialOutputSchemas = {
36
59
  address_name: resultOf(nullableText),
@@ -42,10 +65,10 @@ export const officialOutputSchemas = {
42
65
  inline_comment: resultOf(nullableText),
43
66
  list_bookmarks: resultOf(z.array(addressedEntry)),
44
67
  list_documents: resultOf(z.array(z.string())),
45
- list_names: resultOf(pageOutput),
46
- list_procedures: resultOf(pageOutput),
68
+ list_names: resultOf(z.array(addressedValue)),
69
+ list_procedures: resultOf(z.array(addressedValue)),
47
70
  list_segments: segmentOutput,
48
- list_strings: resultOf(pageOutput),
71
+ list_strings: resultOf(z.array(addressedString)),
49
72
  next_address: resultOf(z.string()),
50
73
  prev_address: resultOf(z.string()),
51
74
  procedure_address: resultOf(z.string()),
@@ -56,8 +79,8 @@ export const officialOutputSchemas = {
56
79
  read_function_instructions: resultOf(functionInstructionWindowSchema),
57
80
  read_bytes: resultOf(z.object({
58
81
  address: z.string(),
59
- requested_bytes: z.number().int().min(1).max(4_096),
60
- returned_bytes: z.number().int().min(0).max(4_096),
82
+ requested_bytes: z.number().int().min(1),
83
+ returned_bytes: z.number().int().min(0),
61
84
  bytes_hex: z.string().regex(/^(?:[a-f0-9]{2})*$/u),
62
85
  complete: z.boolean(),
63
86
  })),
@@ -68,20 +91,18 @@ export const officialOutputSchemas = {
68
91
  procedure_references: resultOf(z.object({
69
92
  procedure: procedureIdentity,
70
93
  direction: z.enum(["incoming", "outgoing"]),
71
- references: bounded(z.object({
94
+ references: z.array(z.object({
72
95
  source_address: z.string(),
73
96
  target_address: z.string(),
74
97
  source_procedure: procedureIdentity.nullable(),
75
98
  target_procedure: procedureIdentity.nullable(),
76
99
  kind: referenceKindSchema,
77
100
  })),
78
- instructions_scanned: z.number().int().min(0),
79
- instruction_scan_truncated: z.boolean(),
80
101
  })),
81
102
  procedure_pseudo_code: resultOf(nullableText),
82
103
  resolve_containing_procedure: resultOf(containingProcedureResolution),
83
- search_procedures: resultOf(searchPageOutput),
84
- search_strings: resultOf(searchPageOutput),
104
+ search_procedures: resultOf(z.array(z.object({ address: z.string(), value: z.string() }))),
105
+ search_strings: resultOf(z.array(z.object({ address: z.string(), value: z.string() }))),
85
106
  set_address_name: resultOf(z.boolean()),
86
107
  set_addresses_names: resultOf(z.record(z.string(), z.boolean())),
87
108
  set_bookmark: resultOf(z.boolean()),
@@ -94,8 +115,6 @@ export const officialOutputSchemas = {
94
115
  const literalTraceOutput = resultOf(z.object({
95
116
  query: z.string(),
96
117
  search_mode: z.literal("literal"),
97
- operations_used: z.number().int().min(0),
98
- operation_budget: z.number().int().min(1),
99
118
  matches: z.array(z.object({
100
119
  type: z.enum(["string", "procedure"]),
101
120
  address: z.string(),
@@ -128,13 +147,8 @@ const callPathTraceOutput = resultOf(z.object({
128
147
  address: z.string(),
129
148
  error: analysisErrorProjectionSchema,
130
149
  })),
131
- frontier: z.array(z.string()),
132
- limits: z.object({
133
- max_depth: z.number().int().min(1),
134
- max_nodes: z.number().int().min(1),
135
- max_operations: z.number().int().min(1),
150
+ traversal: z.object({
136
151
  nodes_visited: z.number().int().min(1),
137
- operations_used: z.number().int().min(0),
138
152
  }),
139
153
  truncated: z.boolean(),
140
154
  residual_unknowns: z.array(z.string()),
@@ -142,7 +156,8 @@ const callPathTraceOutput = resultOf(z.object({
142
156
  }));
143
157
  /** Exact structured-content schemas for composed analysis workflows. */
144
158
  export const enhancedOutputSchemas = {
145
- swift_classes: symbolDiscoveryOutput("classes"),
159
+ inspect_native_dispatch_metadata: resultOf(nativeDispatchMetadataResultSchema),
160
+ trace_native_ui_action: resultOf(nativeInvestigationTraceSchema),
146
161
  get_objc_classes: symbolDiscoveryOutput("classes"),
147
162
  get_objc_protocols: symbolDiscoveryOutput("protocols"),
148
163
  batch_decompile: resultOf(z.object({
@@ -185,12 +200,11 @@ export const enhancedOutputSchemas = {
185
200
  ])),
186
201
  binary_overview: resultOf(z.object({
187
202
  document: z.string(),
188
- detail: z.enum(["concise", "detailed"]),
189
203
  segments: z.array(z.object({
190
204
  name: z.string(),
191
205
  start: z.string(),
192
206
  end: z.string(),
193
- length: z.number().min(0).optional(),
207
+ length: z.number().min(0),
194
208
  })),
195
209
  segment_count: z.number().int().min(0),
196
210
  procedure_count: z.number().int().min(0),
@@ -202,7 +216,7 @@ export const enhancedOutputSchemas = {
202
216
  find_code_for_string: literalTraceOutput,
203
217
  trace_call_path: callPathTraceOutput,
204
218
  };
205
- /** Exact Evidence v2 schemas for provider-neutral native inspection. */
219
+ /** Exact Evidence schemas for provider-neutral native inspection. */
206
220
  export const nativeOutputSchemas = {
207
221
  inspect_macho: resultOf(inspectMachoSchema),
208
222
  inspect_signature: resultOf(inspectSignatureSchema),
@@ -210,19 +224,19 @@ export const nativeOutputSchemas = {
210
224
  list_architectures: resultOf(listArchitecturesSchema),
211
225
  demangle_swift: resultOf(demangleSwiftSchema),
212
226
  };
213
- /** Exact Evidence v2 schemas for provider-neutral artifact graph operations. */
227
+ /** Exact Evidence schemas for provider-neutral artifact graph operations. */
214
228
  export const artifactOutputSchemas = {
215
- inventory_artifact: resultOf(artifactInventoryResultSchema),
216
229
  inspect_artifact: resultOf(artifactInspectionResultSchema),
217
230
  extract_artifact: resultOf(artifactExtractionResultSchema),
231
+ decode_interface_builder: resultOf(interfaceBuilderAnalysisSchema),
218
232
  };
219
- /** Exact Evidence v2 schema for execution-free managed static analysis. */
233
+ /** Exact Evidence schema for execution-free managed static analysis. */
220
234
  export const managedOutputSchemas = {
221
235
  inspect_managed_artifact: resultOf(managedArtifactInspectionSchema),
222
236
  inspect_managed_members: resultOf(managedMemberInspectionSchema),
223
237
  inspect_managed_native_boundaries: resultOf(managedNativeBoundaryInspectionSchema),
224
238
  };
225
- /** Exact Evidence v2 schema for provider-neutral managed workflows. */
239
+ /** Exact Evidence schema for provider-neutral managed workflows. */
226
240
  export const managedWorkflowOutputSchemas = {
227
241
  compare_managed_members: resultOf(managedMemberComparisonResultSchema),
228
242
  verify_managed_native_boundaries: resultOf(managedNativeVerificationResultSchema),
@@ -249,51 +263,11 @@ export const sessionOutputSchemas = {
249
263
  }),
250
264
  ])),
251
265
  binary_session: lifecycleResultOf(z.union([
252
- z.object({
253
- view: z.literal("summary"),
254
- open: z.boolean(),
255
- provider: providerIdentity,
256
- active_provider: providerIdentity.nullable(),
257
- target: z
258
- .object({
259
- path: z.string(),
260
- format: targetFormatSchema,
261
- kind: targetKindSchema,
262
- sha256: z.string().regex(/^[a-f0-9]{64}$/u),
263
- architecture: z.enum(["x86", "x86_64", "arm", "arm64"]).nullable(),
264
- })
265
- .nullable(),
266
- alignment: z.object({
267
- state: z.enum(["aligned", "mcp_server_restart_required", "unknown"]),
268
- reasons: z.array(z.string()),
269
- remediation: z.string().nullable(),
270
- }),
271
- analysis_activity: analysisActivity,
272
- recommended_actions: z.array(z.string()),
273
- }),
274
- z.object({
275
- view: z.literal("capabilities"),
276
- open: z.boolean(),
277
- provider: providerIdentity,
278
- active_provider: providerIdentity.nullable(),
279
- capability_family: z.string().nullable(),
280
- capabilities: z.object({
281
- items: z.array(toolAvailability),
282
- cursor: z.number().int().min(0),
283
- limit: z.number().int().min(1),
284
- total: z.number().int().min(0),
285
- next_cursor: z.number().int().min(0).nullable(),
286
- has_more: z.boolean(),
287
- }),
288
- client_features: clientFeatureAvailabilitySchema,
289
- }),
290
266
  z.union([
291
267
  sessionProvider.extend({
292
- view: z.literal("full"),
293
268
  open: z.literal(false),
294
269
  }),
295
270
  sessionProvider.extend({
296
- view: z.literal("full"),
297
271
  open: z.literal(true),
298
272
  path: z.string(),
299
273
  format: targetFormatSchema,
@@ -309,14 +283,7 @@ export const sessionOutputSchemas = {
309
283
  records: z.number().int().min(0),
310
284
  unknowns: z.number().int().min(0),
311
285
  })),
312
- snapshot_evidence_bundle: lifecycleResultOf(z.object({
313
- bundle_digest: z.string().regex(/^[a-f0-9]{64}$/u),
314
- bundle_version: z.literal(2),
315
- bytes: z.number().int().min(0),
316
- records: z.number().int().min(0),
317
- unknowns: z.number().int().min(0),
318
- bundle_uri: z.string().regex(/^rea:\/\/evidence-bundle\/[a-f0-9]{64}$/u),
319
- })),
286
+ get_evidence_bundle: lifecycleResultOf(evidenceBundleSchema),
320
287
  get_navigation_context: lifecycleResultOf(z.object({
321
288
  document: z.string(),
322
289
  address: z.string(),
@@ -329,10 +296,11 @@ export const sessionOutputSchemas = {
329
296
  procedure: contextFacetSchema,
330
297
  comment: contextFacetSchema,
331
298
  inline_comment: contextFacetSchema,
332
- bookmarks: contextFacetSchema,
299
+ bookmarks: bookmarkFacetSchema,
333
300
  })),
334
301
  import_evidence_bundle: lifecycleResultOf(z.object({
335
302
  imported: z.number().int().min(0),
303
+ unknowns_added: z.number().int().min(0),
336
304
  total: z.number().int().min(0),
337
305
  })),
338
306
  capture_process_scenario: resultOf(processCaptureSchema),
@@ -345,15 +313,8 @@ export const sessionOutputSchemas = {
345
313
  correlate_static_and_runtime: resultOf(staticRuntimeCorrelationResultSchema),
346
314
  verify_reconstruction: resultOf(reconstructionVerificationResultSchema),
347
315
  list_unknowns: lifecycleResultOf(z.object({
348
- items: z.array(z.object({
349
- unknown: residualUnknownSchema,
350
- uri: z.string().regex(/^rea:\/\/unknown\/unk_[a-f0-9]{64}$/u),
351
- })),
352
- offset: z.number().int().min(0),
353
- limit: z.number().int().min(1).max(500),
316
+ items: z.array(residualUnknownSchema),
354
317
  total: z.number().int().min(0),
355
- next_offset: z.number().int().min(0).nullable(),
356
- has_more: z.boolean(),
357
318
  })),
358
319
  record_unknown: lifecycleResultOf(residualUnknownSchema),
359
320
  update_unknown: lifecycleResultOf(residualUnknownSchema),
@@ -1,13 +1,18 @@
1
1
  import { z } from "zod";
2
2
  import { procedureClassificationSchema, procedureIdentitySchema, localVariableSchema, functionDossierSchema, } from "../domain/hopperValues.js";
3
3
  import { analysisProfileSchema } from "../domain/analysisProfile.js";
4
+ import { evidenceEnvelopeSchema } from "../domain/evidence.js";
5
+ import { jsonValueSchema } from "../domain/jsonValue.js";
4
6
  import { PROVIDER_REJECTION_CODES, } from "./providerSelection.js";
5
7
  import { analysisErrorProjectionSchema } from "./errorSchemas.js";
6
- /** Compact MCP result with an immutable link to complete session Evidence. */
8
+ /** Inline result with its complete Evidence record. */
9
+ export const inlineEvidenceRecordSchema = evidenceEnvelopeSchema.omit({
10
+ normalized_result: true,
11
+ });
7
12
  export const evidenceResultOf = (schema) => z.strictObject({
8
13
  result: schema,
9
14
  evidence_id: z.string().regex(/^ev_[a-f0-9]{64}$/u),
10
- evidence_uri: z.string().regex(/^rea:\/\/evidence\/ev_[a-f0-9]{64}$/u),
15
+ evidence: inlineEvidenceRecordSchema,
11
16
  });
12
17
  const resultOf = evidenceResultOf;
13
18
  export const lifecycleResultOf = (schema) => z.object({ result: schema });
@@ -42,15 +47,8 @@ export const targetKindSchema = z.enum([
42
47
  "archive",
43
48
  "artifact",
44
49
  ]);
45
- const providerCapability = z.object({
50
+ const providerCapabilityFacts = {
46
51
  operation: z.string(),
47
- available: z.boolean(),
48
- reason: z.string().nullable(),
49
- availability_code: z.enum(PROVIDER_REJECTION_CODES).nullable(),
50
- input_contract_version: z.number().int().min(1),
51
- output_contract_version: z.number().int().min(1),
52
- pagination: z.enum(["none", "offset", "cursor"]),
53
- exhaustive: z.boolean(),
54
52
  effects: z.object({
55
53
  mutates_artifact: z.boolean(),
56
54
  launches_process: z.boolean(),
@@ -60,13 +58,22 @@ const providerCapability = z.object({
60
58
  changes_permissions: z.boolean(),
61
59
  requires_root: z.boolean(),
62
60
  }),
63
- limits: z.object({
64
- max_results: z.number().int().min(0).nullable(),
65
- max_payload_bytes: z.number().int().min(0).nullable(),
66
- timeout_ms: z.number().int().min(0).nullable(),
67
- }),
68
61
  limitations: z.array(z.string()),
69
- });
62
+ };
63
+ export const providerCapability = z.discriminatedUnion("available", [
64
+ z.object({
65
+ ...providerCapabilityFacts,
66
+ available: z.literal(true),
67
+ reason: z.null(),
68
+ availability_code: z.null(),
69
+ }),
70
+ z.object({
71
+ ...providerCapabilityFacts,
72
+ available: z.literal(false),
73
+ reason: z.string().nullable(),
74
+ availability_code: z.enum(PROVIDER_REJECTION_CODES).nullable(),
75
+ }),
76
+ ]);
70
77
  export const providerIdentity = z.object({
71
78
  id: z.string(),
72
79
  name: z.string(),
@@ -86,7 +93,6 @@ const processLineageObservation = z.discriminatedUnion("status", [
86
93
  z.object({
87
94
  status: z.literal("verified"),
88
95
  observed_at: z.iso.datetime(),
89
- schema_version: z.literal(1),
90
96
  ...processCoordinates,
91
97
  launcher_parent_pid: z.number().int().min(0),
92
98
  descendants: z.array(z.object({
@@ -112,7 +118,7 @@ const analysisRun = z
112
118
  })
113
119
  .nullable();
114
120
  export const analysisActivity = z.object({
115
- status: z.enum(["not_observed", "idle", "busy", "timed_out_busy"]),
121
+ status: z.enum(["not_observed", "idle", "busy"]),
116
122
  providers: z.array(z.object({
117
123
  provider: providerIdentity,
118
124
  active: z
@@ -120,15 +126,14 @@ export const analysisActivity = z.object({
120
126
  request_id: z.number().int().min(1),
121
127
  operation: z.string().min(1),
122
128
  elapsed_ms: z.number().int().min(0),
123
- timeout_ms: z.number().int().min(0),
124
- caller_state: z.enum(["waiting", "timed_out", "cancelled"]),
129
+ caller_state: z.enum(["waiting", "cancelled"]),
125
130
  })
126
131
  .nullable(),
127
132
  queued_requests: z.number().int().min(0),
128
133
  })),
129
134
  });
130
135
  const providerRejectionCode = z.enum(PROVIDER_REJECTION_CODES);
131
- const providerDiagnostics = z.record(z.string(), z.json());
136
+ const providerDiagnostics = z.record(z.string(), jsonValueSchema);
132
137
  const providerAvailability = z.discriminatedUnion("status", [
133
138
  z.object({
134
139
  status: z.literal("available"),
@@ -182,21 +187,25 @@ export const clientFeatureAvailabilitySchema = z.object({
182
187
  roots: z.boolean(),
183
188
  sampling: z.boolean(),
184
189
  });
185
- export const toolAvailability = z.object({
190
+ const toolAvailabilityMode = z.discriminatedUnion("available", [
191
+ z.object({
192
+ name: z.string(),
193
+ available: z.literal(true),
194
+ missing_operations: z.array(z.string()).length(0),
195
+ remediation: z.null(),
196
+ }),
197
+ z.object({
198
+ name: z.string(),
199
+ available: z.literal(false),
200
+ missing_operations: z.array(z.string()).min(1),
201
+ remediation: z.string().nullable(),
202
+ }),
203
+ ]);
204
+ const toolAvailabilityFacts = {
186
205
  name: z.string(),
187
206
  surface: z.string(),
188
- available: z.boolean(),
189
- reason: z.enum([
190
- "available",
191
- "client_capability_missing",
192
- "target_required",
193
- "provider_missing",
194
- "provider_unavailable",
195
- "target_unsupported",
196
- "unsupported_host",
197
- "policy_disabled",
198
- ]),
199
- remediation: z.string().nullable(),
207
+ default_mode_available: z.boolean().optional(),
208
+ modes: z.array(toolAvailabilityMode).optional(),
200
209
  client_requirements: z.object({
201
210
  required: z.array(clientFeatureNameSchema),
202
211
  optional: z.array(clientFeatureNameSchema),
@@ -219,8 +228,32 @@ export const toolAvailability = z.object({
219
228
  idempotent: z.boolean(),
220
229
  open_world: z.boolean(),
221
230
  }),
222
- });
223
- export const sessionProvider = z.object({
231
+ };
232
+ export const toolUnavailabilityReason = z.enum([
233
+ "client_capability_missing",
234
+ "target_required",
235
+ "provider_missing",
236
+ "provider_unavailable",
237
+ "target_unsupported",
238
+ "unsupported_host",
239
+ "policy_disabled",
240
+ ]);
241
+ export const toolAvailability = z.discriminatedUnion("available", [
242
+ z.object({
243
+ ...toolAvailabilityFacts,
244
+ available: z.literal(true),
245
+ reason: z.literal("available"),
246
+ remediation: z.null(),
247
+ }),
248
+ z.object({
249
+ ...toolAvailabilityFacts,
250
+ available: z.literal(false),
251
+ reason: toolUnavailabilityReason,
252
+ remediation: z.string().nullable(),
253
+ }),
254
+ ]);
255
+ export const sessionProvider = z
256
+ .object({
224
257
  provider: providerIdentity,
225
258
  providers: z.array(providerIdentity),
226
259
  capabilities: z.array(providerCapability),
@@ -276,7 +309,6 @@ export const sessionProvider = z.object({
276
309
  protocol_features: z.object({
277
310
  progress: z.boolean(),
278
311
  cancellation: z.boolean(),
279
- evidence_resources: z.boolean(),
280
312
  elicitation: z.boolean(),
281
313
  }),
282
314
  alignment: z.object({
@@ -285,7 +317,8 @@ export const sessionProvider = z.object({
285
317
  remediation: z.string().nullable(),
286
318
  }),
287
319
  }),
288
- });
320
+ })
321
+ .passthrough();
289
322
  export const nullableText = z.string().nullable();
290
323
  export const addressList = z.array(z.string());
291
324
  export const addressedEntry = z.object({
@@ -315,17 +348,9 @@ const availableMemoryPermissions = z.object({
315
348
  available: z.literal(true),
316
349
  source: z.literal("ghidra-memory-block"),
317
350
  });
318
- export const bounded = (item) => z.object({
319
- items: z.array(item),
320
- total: z.number().int().min(0).nullable(),
321
- returned: z.number().int().min(0),
322
- truncated: z.boolean(),
323
- next_offset: z.number().int().min(0).nullable(),
324
- });
325
- const addressedValue = z.object({
351
+ export const addressedValue = z.object({
326
352
  address: z.string(),
327
353
  value: z.string(),
328
- value_truncated: z.boolean().optional(),
329
354
  symbol: z
330
355
  .object({
331
356
  primary: z.boolean(),
@@ -350,21 +375,6 @@ const addressedValue = z.object({
350
375
  })
351
376
  .optional(),
352
377
  });
353
- export const pageOutput = z.object({
354
- items: z.array(addressedValue),
355
- offset: z.number().int().min(0),
356
- limit: z.number().int().min(1),
357
- total: z.number().int().min(0),
358
- next_offset: z.number().int().min(0).nullable(),
359
- has_more: z.boolean(),
360
- });
361
- export const searchPageOutput = pageOutput.extend({
362
- items: z.array(z.object({
363
- address: z.string(),
364
- value: z.string(),
365
- value_truncated: z.boolean(),
366
- })),
367
- });
368
378
  const memoryRegionOutput = z.object({
369
379
  name: z.string(),
370
380
  start: z.string(),
@@ -0,0 +1,117 @@
1
+ import { z } from "zod";
2
+ const PROPERTY_DESCRIPTIONS = {
3
+ addresses: "Ordered provider-normalized procedure addresses to analyze.",
4
+ approved: "Explicit operator approval to perform this operation.",
5
+ after: "The later or right-hand observation to compare.",
6
+ before: "The earlier or left-hand observation to compare.",
7
+ boundary_id: "Exact reconstruction boundary identifier to evaluate.",
8
+ case_sensitive: "Whether text matching distinguishes uppercase and lowercase.",
9
+ cdp_endpoint: "Approved literal loopback Chrome DevTools Protocol endpoint.",
10
+ comment: "Exact analyst comment text to write.",
11
+ comparisons: "Validated comparison Evidence records to aggregate.",
12
+ coverage: "Exact reconstruction-coverage commitment to verify.",
13
+ direction: "Direction in which to traverse or compare relationships.",
14
+ document: "Exact provider document or program identity.",
15
+ error: "Structured, caller-actionable error when the operation fails.",
16
+ evidence: "Evidence record produced by this operation.",
17
+ evidence_id: "Stable identifier of the recorded Evidence observation.",
18
+ executable: "Approved absolute path of the executable to run.",
19
+ format: "Declared input artifact format.",
20
+ name: "Exact name used by this operation.",
21
+ pattern: "Literal text or regular expression used to filter matching results.",
22
+ phase: "Current plan or execution phase of the operation.",
23
+ plan: "Content-bound execution plan and its approval commitment.",
24
+ query: "Non-empty feature or text query to investigate.",
25
+ question: "Concrete unresolved question to retain for later investigation.",
26
+ result: "Primary structured result returned by this operation.",
27
+ left: "Left-hand input used for comparison or differential execution.",
28
+ limits: "Resource budgets that bound execution and retained output for this operation.",
29
+ mode: "Operation mode that selects the requested behavior.",
30
+ overwrite: "Whether an existing destination may be replaced.",
31
+ path: "Local filesystem path used by this operation.",
32
+ provider_id: "Exact deep-analysis provider ID, or automatic selection when omitted.",
33
+ right: "Right-hand input used for comparison or differential execution.",
34
+ source_evidence: "Evidence records supporting the prepared source transformation.",
35
+ status: "Current lifecycle or verification status.",
36
+ summary: "Concise evidence-backed summary of the result.",
37
+ symbols: "Ordered Swift symbols to demangle.",
38
+ target_id: "Exact authorized CDP target identifier.",
39
+ unknown_id: "Exact residual-unknown identifier.",
40
+ };
41
+ /** Attach caller guidance to a canonical schema for the SDK wire projection. */
42
+ export const toolInputSchemaWithMetadata = (contract) => {
43
+ const schema = contract.inputSchema.meta(z.globalRegistry.get(contract.inputSchema) ?? {});
44
+ const standard = schema["~standard"];
45
+ const inputJsonSchema = standard.jsonSchema?.input;
46
+ if (inputJsonSchema === undefined)
47
+ throw new TypeError("Tool input schema does not expose Standard JSON Schema");
48
+ // Zod's input projection drops root metadata when a descendant transforms.
49
+ // Preserve the parser and let the SDK own conversion of everything else.
50
+ Object.defineProperty(schema, "~standard", {
51
+ value: {
52
+ ...standard,
53
+ jsonSchema: {
54
+ ...standard.jsonSchema,
55
+ input: (options) => ({
56
+ ...describeProperties(inputJsonSchema(options)),
57
+ examples: contract.examples.map(({ input }) => input),
58
+ }),
59
+ },
60
+ },
61
+ });
62
+ return schema;
63
+ };
64
+ const describeProperties = (value) => Object.fromEntries(Object.entries(value).map(([key, child]) => {
65
+ if (key !== "properties" || !isObject(child))
66
+ return [key, describeValue(child)];
67
+ return [
68
+ key,
69
+ Object.fromEntries(Object.entries(child).map(([property, propertySchema]) => [
70
+ property,
71
+ isObject(propertySchema) &&
72
+ typeof propertySchema.description !== "string"
73
+ ? {
74
+ ...describeProperties(propertySchema),
75
+ description: fallbackPropertyDescription(property),
76
+ }
77
+ : describeValue(propertySchema),
78
+ ])),
79
+ ];
80
+ }));
81
+ const describeValue = (value) => {
82
+ if (Array.isArray(value))
83
+ return value.map(describeValue);
84
+ return isObject(value) ? describeProperties(value) : value;
85
+ };
86
+ const fallbackPropertyDescription = (property) => {
87
+ const explicit = PROPERTY_DESCRIPTIONS[property];
88
+ if (explicit !== undefined)
89
+ return explicit;
90
+ const words = property.replaceAll("_", " ");
91
+ if (property.endsWith("_approved"))
92
+ return `Explicit operator approval for ${words.slice(0, -9)}.`;
93
+ if (property.startsWith("max_"))
94
+ return `Maximum permitted ${words.slice(4)} for this operation.`;
95
+ if (property.startsWith("include_"))
96
+ return `Whether to include ${words.slice(8)} in the result.`;
97
+ if (property.startsWith("expected_"))
98
+ return `Expected ${words.slice(9)} used to reject stale or mismatched input.`;
99
+ if (property.endsWith("_sha256"))
100
+ return `Exact SHA-256 digest of ${words.slice(0, -7)}.`;
101
+ if (property.endsWith("_evidence_id"))
102
+ return `Exact Evidence identifier for the ${words.slice(0, -12)} observation.`;
103
+ if (property.endsWith("_evidence_ids"))
104
+ return `Ordered Evidence identifiers for the ${words.slice(0, -13)} observations.`;
105
+ if (property.endsWith("_path"))
106
+ return `Local filesystem path for ${words.slice(0, -5)}.`;
107
+ if (property.endsWith("_uri"))
108
+ return `Canonical URI for ${words.slice(0, -4)}.`;
109
+ if (property.endsWith("_bytes"))
110
+ return `Byte count for ${words.slice(0, -6)}.`;
111
+ if (property.endsWith("_root") || property.endsWith("_roots"))
112
+ return `Approved canonical filesystem ${words}.`;
113
+ if (property.startsWith("is_") || property.startsWith("has_"))
114
+ return `Whether ${words}.`;
115
+ return `Value for ${words}.`;
116
+ };
117
+ const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
@@ -2,7 +2,6 @@
2
2
  export const UNKNOWN_CONTRACT_EXAMPLES = {
3
3
  list_unknowns: {},
4
4
  record_unknown: {
5
- approved: true,
6
5
  question: "Does this branch require an unavailable external service?",
7
6
  severity: "medium",
8
7
  domain: "protocol",
@@ -15,7 +14,6 @@ export const UNKNOWN_CONTRACT_EXAMPLES = {
15
14
  relationships: [],
16
15
  },
17
16
  update_unknown: {
18
- approved: true,
19
17
  unknown_id: `unk_${"0".repeat(64)}`,
20
18
  expected_revision: 1,
21
19
  status: "investigating",
@@ -58,7 +58,7 @@ const inspectJavaScriptReplay = async () => {
58
58
  detail: config.error.message,
59
59
  remediation: "Fix the reported REA_JAVASCRIPT_REPLAY_* configuration.",
60
60
  };
61
- if (!config.value.javascriptReplayPolicy.enabled)
61
+ if (config.value.javascriptReplayPolicy.status === "disabled")
62
62
  return {
63
63
  name: "javascript-replay",
64
64
  ok: true,