rea-agents 6.0.0 → 6.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 (611) hide show
  1. package/README.md +26 -18
  2. package/bridge/android/ReaJadxBridge.java +14 -5
  3. package/bridge/ghidra/ReaGhidraBridge.java +205 -51
  4. package/bridge/hopper_bridge.py +314 -127
  5. package/bridge/mitmproxy/capture.py +0 -2
  6. package/bridge/native/rea_lldb_tracer.py +630 -94
  7. package/bridge/process/ProcessRunTokenReader.swift +39 -5
  8. package/bridge/pwntools/recorded_crash_impl.py +4 -0
  9. package/dist/android/JadxConfiguration.js +274 -31
  10. package/dist/android/JadxMcpTransport.js +18 -2
  11. package/dist/android/JadxProtocol.js +6 -0
  12. package/dist/android/JadxProvider.js +76 -37
  13. package/dist/android/JadxSession.js +23 -4
  14. package/dist/application/AnalysisContextQueries.js +8 -35
  15. package/dist/application/AnalysisDocument.js +32 -0
  16. package/dist/application/AppBundleExecutable.js +67 -21
  17. package/dist/application/BinaryTargetResolver.js +5 -3
  18. package/dist/application/BrowserEvidence.js +3 -8
  19. package/dist/application/BrowserScenarioEvidence.js +2 -18
  20. package/dist/application/CallPathTracing.js +19 -3
  21. package/dist/application/CapabilityInventory.js +48 -11
  22. package/dist/application/ClientConfigurationDocument.js +917 -8
  23. package/dist/application/ClientRegistrationIdentity.js +26 -5
  24. package/dist/application/ClientRegistrationStatus.js +29 -14
  25. package/dist/application/DirectAnalysis.js +56 -51
  26. package/dist/application/DirectAnalysisCleanup.js +72 -0
  27. package/dist/application/DirectAnalysisStatus.js +4 -5
  28. package/dist/application/Doctor.js +19 -21
  29. package/dist/application/DoctorDiagnostics.js +1 -2
  30. package/dist/application/DoctorScope.js +25 -13
  31. package/dist/application/EnhancedLiteralTracing.js +22 -25
  32. package/dist/application/EnhancedTools.js +64 -17
  33. package/dist/application/EvidenceBundleFiles.js +30 -13
  34. package/dist/application/FunctionAnalysisEvidence.js +2 -3
  35. package/dist/application/InventoryProjectionEvidence.js +4 -3
  36. package/dist/application/InvestigationProviders.js +11 -2
  37. package/dist/application/JsonFiles.js +83 -28
  38. package/dist/application/LinuxHopper.js +9 -6
  39. package/dist/application/MacHopper.js +15 -18
  40. package/dist/application/ProcedureAddressResolution.js +11 -0
  41. package/dist/application/RealHopperAssertions.js +0 -11
  42. package/dist/application/ReconstructionCoverageService.js +7 -4
  43. package/dist/application/ReconstructionObligationCandidates.js +1 -1
  44. package/dist/application/ReconstructionObligationLedgerService.js +4 -3
  45. package/dist/application/ReferenceSourceImportEntries.js +1 -1
  46. package/dist/application/Setup.js +21 -17
  47. package/dist/application/SetupClientConfiguration.js +10 -15
  48. package/dist/application/SetupHost.js +21 -29
  49. package/dist/application/SetupPlan.js +11 -9
  50. package/dist/application/SupportedClients.js +34 -1
  51. package/dist/application/Uninstall.js +82 -29
  52. package/dist/application/Update.js +18 -3
  53. package/dist/application/UpdateMaintenance.js +7 -5
  54. package/dist/application/UpdateRuntime.js +57 -36
  55. package/dist/application/WebModuleTraceService.js +4 -2
  56. package/dist/application/WebNetworkCaptureService.js +4 -2
  57. package/dist/application/WebRuntimeService.js +5 -3
  58. package/dist/application/WebScriptExportService.js +32 -6
  59. package/dist/application/WebSourceLocationService.js +4 -2
  60. package/dist/application/WorkflowEvidence.js +105 -0
  61. package/dist/application/XrefsAddressResolution.js +45 -0
  62. package/dist/application/analysisView/AnalysisViewService.js +76 -0
  63. package/dist/application/binary/AnalysisClientCleanup.js +30 -5
  64. package/dist/application/binary/AnalysisProviderEvaluation.js +22 -7
  65. package/dist/application/binary/AnalysisProviderRegistry.js +4 -6
  66. package/dist/application/binary/AnalysisSnapshotCache.js +13 -14
  67. package/dist/application/binary/BinarySession.js +161 -93
  68. package/dist/application/binary/BinarySessionComposition.js +1 -3
  69. package/dist/application/binary/BinarySessionExecution.js +3 -5
  70. package/dist/application/binary/BinarySessionOpen.js +4 -4
  71. package/dist/application/binary/BinarySessionRecords.js +26 -4
  72. package/dist/application/binary/BinarySessionStatus.js +18 -7
  73. package/dist/application/binary/CompositeProvider.js +16 -17
  74. package/dist/application/binary/LazyAnalysisProvider.js +8 -5
  75. package/dist/application/binary/SessionProviderRouter.js +27 -135
  76. package/dist/application/binaryDiagnostics/BinaryLayoutService.js +4 -2
  77. package/dist/application/binaryDiagnostics/RecordedCrashService.js +4 -2
  78. package/dist/application/evm/EvmInterfaceService.js +4 -2
  79. package/dist/application/homebrew.js +48 -0
  80. package/dist/application/investigation/EvidenceLedger.js +21 -7
  81. package/dist/application/investigation/InvestigationRecords.js +8 -0
  82. package/dist/application/javascript/ElectronActiveEvidence.js +9 -13
  83. package/dist/application/javascript/JavaScriptAnalysisControl.js +34 -0
  84. package/dist/application/javascript/JavaScriptApplicationEvidence.js +21 -4
  85. package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +19 -2
  86. package/dist/application/javascript/JavaScriptApplicationService.js +27 -15
  87. package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +5 -5
  88. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +10 -7
  89. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +44 -10
  90. package/dist/application/javascript/JavaScriptArtifactGraphBundlers.js +11 -3
  91. package/dist/application/javascript/JavaScriptArtifactGraphContext.js +9 -0
  92. package/dist/application/javascript/JavaScriptArtifactGraphDocuments.js +8 -5
  93. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +12 -3
  94. package/dist/application/javascript/JavaScriptArtifactGraphStructure.js +0 -1
  95. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +49 -19
  96. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +56 -8
  97. package/dist/application/javascript/JavaScriptModuleRelationships.js +38 -9
  98. package/dist/application/javascript/JavaScriptRecoveryService.js +4 -2
  99. package/dist/application/javascript/JavaScriptRuntimeObservationService.js +6 -4
  100. package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +3 -3
  101. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +2 -3
  102. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +63 -61
  103. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +1 -2
  104. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +2 -3
  105. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +1 -5
  106. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +75 -46
  107. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +2 -3
  108. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +64 -19
  109. package/dist/application/managed/ManagedApplicationGraphService.js +4 -3
  110. package/dist/application/managed/ManagedMemberComparisonService.js +9 -5
  111. package/dist/application/managed/ManagedNativeVerificationService.js +6 -4
  112. package/dist/application/managed/ManagedReconstructionService.js +4 -3
  113. package/dist/application/process/ProcessCli.js +25 -17
  114. package/dist/application/process/ProcessEvidence.js +4 -4
  115. package/dist/application/workflowInputError.js +18 -0
  116. package/dist/artifacts/ArtifactProvider.js +48 -13
  117. package/dist/artifacts/ArtifactReader.js +31 -0
  118. package/dist/artifacts/DirectoryArtifactReader.js +2 -1
  119. package/dist/artifacts/MachOSliceArtifactReader.js +106 -15
  120. package/dist/artifacts/NativeDmgArtifactReader.js +73 -21
  121. package/dist/artifacts/SafeOutputTree.js +16 -2
  122. package/dist/artifacts/ZipArtifactReader.js +11 -4
  123. package/dist/artifacts/apple/AppleAssetCatalogAnalysis.js +26 -5
  124. package/dist/artifacts/apple/DylibResolutionReader.js +17 -7
  125. package/dist/artifacts/apple/InterfaceBuilderAnalysis.js +176 -56
  126. package/dist/artifacts/apple/InterfaceBuilderDecodeBudget.js +195 -0
  127. package/dist/artifacts/apple/KeyedArchiveReader.js +55 -23
  128. package/dist/artifacts/apple/MachoLoadCommandReader.js +92 -31
  129. package/dist/artifacts/apple/NibArchive.js +81 -14
  130. package/dist/artifacts/apple/NibViewHierarchy.js +10 -3
  131. package/dist/artifacts/apple/PlistNumberLiterals.js +164 -0
  132. package/dist/artifacts/extraction/ArtifactExtraction.js +78 -21
  133. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +79 -68
  134. package/dist/artifacts/inventory/ArtifactInventory.js +0 -1
  135. package/dist/artifacts/inventory/reader.js +3 -3
  136. package/dist/artifacts/inventory/scanCanonical.js +59 -38
  137. package/dist/artifacts/inventory/scanReader.js +5 -9
  138. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +6 -2
  139. package/dist/browser/BrowserScenarioPartialObservation.js +106 -0
  140. package/dist/browser/CdpBrowserProvider.js +2 -3
  141. package/dist/browser/CdpCaptureCompleteness.js +2 -0
  142. package/dist/browser/CdpCaptureEventHandlers.js +78 -15
  143. package/dist/browser/CdpCaptureEventTypes.js +5 -1
  144. package/dist/browser/CdpCaptureEvents.js +25 -1
  145. package/dist/browser/CdpCaptureValues.js +20 -0
  146. package/dist/browser/CdpConnection.js +30 -11
  147. package/dist/browser/CdpElectronProvider.js +0 -2
  148. package/dist/browser/CdpElectronScriptEvents.js +2 -8
  149. package/dist/browser/CdpElectronScripts.js +2 -3
  150. package/dist/browser/CdpOptionalCommand.js +2 -3
  151. package/dist/browser/CdpPageCapture.js +23 -1
  152. package/dist/browser/CdpPageCaptureScripts.js +2 -3
  153. package/dist/browser/CdpSafeMetadata.js +10 -10
  154. package/dist/browser/PlaywrightBrowserScenarioProvider.js +59 -44
  155. package/dist/browser/PlaywrightElectronActiveActions.js +34 -79
  156. package/dist/browser/PlaywrightElectronActiveProjection.js +141 -0
  157. package/dist/browser/PlaywrightElectronActiveProvider.js +133 -130
  158. package/dist/browser/PlaywrightScenarioArtifacts.js +1 -1
  159. package/dist/browser/PlaywrightScenarioBrowser.js +139 -39
  160. package/dist/browser/PlaywrightScenarioEvents.js +1 -1
  161. package/dist/browser/PlaywrightScenarioSession.js +39 -22
  162. package/dist/browser/WebSourceMapFetcher.js +426 -72
  163. package/dist/browser/assets/LocalWebScriptArtifacts.js +2 -2
  164. package/dist/browser/assets/ScriptCaptureAdapters.js +1 -1
  165. package/dist/browser/history/CaptureFailures.js +41 -1
  166. package/dist/browser/history/CaptureRelease.js +5 -0
  167. package/dist/browser/history/HarCaptureAdapter.js +3 -3
  168. package/dist/browser/history/HarJson.js +3 -2
  169. package/dist/browser/history/HistoricalCaptureDecoder.js +4 -2
  170. package/dist/browser/history/MitmproxyCaptureAdapter.js +4 -2
  171. package/dist/catalogIdentity.js +0 -1
  172. package/dist/cli/analysisSelector.js +23 -0
  173. package/dist/cli/analysisViewCommands.js +36 -0
  174. package/dist/cli/applicationCommands.js +2 -3
  175. package/dist/cli/artifactCommands.js +11 -12
  176. package/dist/cli/coreAnalysisCommands.js +3 -3
  177. package/dist/cli/coreBinaryCommands.js +100 -37
  178. package/dist/cli/coreNativeCommands.js +9 -10
  179. package/dist/cli/electronCommands.js +10 -9
  180. package/dist/cli/interactiveSetup.js +6 -6
  181. package/dist/cli/javascriptApplicationAnalysis.js +7 -3
  182. package/dist/cli/jsonOutput.js +4 -99
  183. package/dist/cli/managedCommands.js +7 -8
  184. package/dist/cli/nativeCallCommands.js +3 -5
  185. package/dist/cli/omittableDefaults.js +50 -0
  186. package/dist/cli/processCommands.js +3 -2
  187. package/dist/cli/setupCommands.js +16 -15
  188. package/dist/cli/utilityCommands.js +9 -9
  189. package/dist/cli/webRuntimeCommands.js +8 -8
  190. package/dist/cli.js +18 -9
  191. package/dist/cliBrowserScenarioCommands.js +2 -2
  192. package/dist/cliCommandNames.js +1 -1
  193. package/dist/cliJsonInput.js +24 -5
  194. package/dist/cliOutput.js +0 -38
  195. package/dist/composition/auxiliaryAnalysisProviders.js +27 -23
  196. package/dist/composition/binary.js +9 -9
  197. package/dist/composition/browserScenario.js +2 -1
  198. package/dist/composition/directAnalysis.js +20 -13
  199. package/dist/composition/electronScenario.js +1 -1
  200. package/dist/composition/optionalObservationProviders.js +12 -7
  201. package/dist/config/environment.js +10 -0
  202. package/dist/config/ghidraStartupTimeout.js +12 -0
  203. package/dist/config/homeDirectory.js +12 -0
  204. package/dist/config/mcpResponseBudget.js +30 -0
  205. package/dist/config/parseConfig.js +8 -3
  206. package/dist/config/parsers.js +19 -22
  207. package/dist/contracts/analysisViewToolContracts.js +56 -0
  208. package/dist/contracts/applicationToolContracts.js +5 -4
  209. package/dist/contracts/artifactComparisonExample.js +2 -2
  210. package/dist/contracts/artifactToolContracts.js +1 -1
  211. package/dist/contracts/browserScenarioToolContracts.js +1 -1
  212. package/dist/contracts/browserToolContracts.js +19 -15
  213. package/dist/contracts/enhancedInputs.js +7 -5
  214. package/dist/contracts/enhancedToolContracts.js +7 -6
  215. package/dist/contracts/evm/evmToolContracts.js +1 -1
  216. package/dist/contracts/functionWorkflowToolContracts.js +1 -1
  217. package/dist/contracts/hopperMemoryContracts.js +2 -5
  218. package/dist/contracts/inputSchemaPresentation.js +90 -0
  219. package/dist/contracts/investigationExamples.js +4 -3
  220. package/dist/contracts/javascript/electronToolContracts.js +2 -2
  221. package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +0 -20
  222. package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +245 -0
  223. package/dist/contracts/javascript/javascriptRuntimeObservationToolContracts.js +1 -1
  224. package/dist/contracts/managed/managedToolContracts.js +7 -14
  225. package/dist/contracts/managed/managedWorkflowToolContracts.js +1 -1
  226. package/dist/contracts/mobileApplicationGraphExamples.js +3 -3
  227. package/dist/contracts/native/binaryDiagnosticsToolContracts.js +1 -1
  228. package/dist/contracts/native/nativeToolContracts.js +5 -3
  229. package/dist/contracts/officialToolContracts.js +16 -16
  230. package/dist/contracts/promptContracts.js +5 -5
  231. package/dist/contracts/providerSelection.js +1 -1
  232. package/dist/contracts/sessionLifecycleInputs.js +3 -7
  233. package/dist/contracts/sessionStatusContract.js +2 -4
  234. package/dist/contracts/sessionToolContracts.js +18 -8
  235. package/dist/contracts/sessionToolSchemas.js +3 -19
  236. package/dist/contracts/toolContractExamples.js +0 -1
  237. package/dist/contracts/toolContractHelpers.js +4 -1
  238. package/dist/contracts/toolContracts.js +2 -0
  239. package/dist/contracts/toolEffects.js +1 -1
  240. package/dist/contracts/toolOutputSchemaGroups.js +160 -115
  241. package/dist/contracts/toolOutputSchemaPrimitives.js +28 -20
  242. package/dist/contracts/toolSchemaMetadata.js +41 -33
  243. package/dist/contracts/webNetworkCaptureToolContracts.js +2 -2
  244. package/dist/contracts/webRuntimeToolContracts.js +1 -1
  245. package/dist/contracts/webScriptToolContracts.js +1 -1
  246. package/dist/doctorRuntime.js +7 -5
  247. package/dist/domain/analysisErrorBase.js +8 -3
  248. package/dist/domain/analysisErrorCore.js +6 -1
  249. package/dist/domain/analysisErrorPresentation.js +90 -20
  250. package/dist/domain/analysisErrorProjection.js +130 -32
  251. package/dist/domain/analysisSnapshot.js +29 -31
  252. package/dist/domain/analysisView/analysisView.js +243 -0
  253. package/dist/domain/analysisView/analysisViewCoverage.js +19 -0
  254. package/dist/domain/analysisView/binaryLayoutView.js +159 -0
  255. package/dist/domain/analysisView/javascriptApplicationView.js +238 -0
  256. package/dist/domain/android/androidAnalysis.js +2 -4
  257. package/dist/domain/android/androidApplication.js +18 -10
  258. package/dist/domain/apple/appleApplication.js +42 -15
  259. package/dist/domain/apple/dyldEnvironment.js +73 -0
  260. package/dist/domain/apple/dylibResolution.js +130 -12
  261. package/dist/domain/apple/dylibResolutionFindings.js +9 -7
  262. package/dist/domain/apple/interfaceBuilderGraph.js +25 -14
  263. package/dist/domain/apple/interfaceBuilderKeyedArchive.js +13 -3
  264. package/dist/domain/apple/keyedArchive.js +35 -3
  265. package/dist/domain/apple/machoContainer.js +54 -0
  266. package/dist/domain/apple/plistNumbers.js +76 -0
  267. package/dist/domain/artifactComparison.js +15 -6
  268. package/dist/domain/artifactGraph.js +16 -3
  269. package/dist/domain/artifactIdentity.js +29 -0
  270. package/dist/domain/artifactInventoryEvidence.js +28 -40
  271. package/dist/domain/artifactOperationError.js +3 -3
  272. package/dist/domain/artifactPartialObservation.js +1 -0
  273. package/dist/domain/artifactPathSyntax.js +49 -0
  274. package/dist/domain/binaryTarget.js +39 -13
  275. package/dist/domain/bridgeCandidateProjection.js +71 -0
  276. package/dist/domain/browserCaptureComparison.js +13 -49
  277. package/dist/domain/browserCompleteness.js +1 -0
  278. package/dist/domain/browserNetworkEvidence.js +10 -4
  279. package/dist/domain/browserObservation.js +0 -1
  280. package/dist/domain/browserObservationError.js +24 -5
  281. package/dist/domain/browserObservationSchemas.js +14 -3
  282. package/dist/domain/browserScenario.js +0 -1
  283. package/dist/domain/browserScenarioCapture.js +1 -2
  284. package/dist/domain/browserScenarioDiff.js +0 -2
  285. package/dist/domain/browserScenarioDiffEvidence.js +0 -12
  286. package/dist/domain/browserScenarioDiffValues.js +2 -2
  287. package/dist/domain/browserScenarioValues.js +5 -10
  288. package/dist/domain/bundleComparison.js +3 -2
  289. package/dist/domain/callPath.js +8 -9
  290. package/dist/domain/callPathSchemas.js +2 -2
  291. package/dist/domain/canonicalJsonDigestSteps.js +133 -0
  292. package/dist/domain/canonicalOrdering.js +9 -5
  293. package/dist/domain/changedBehavior.js +9 -9
  294. package/dist/domain/comparisonSourceEvidence.js +40 -0
  295. package/dist/domain/completionLedgerGeneration.js +2 -1
  296. package/dist/domain/configurationErrors.js +13 -1
  297. package/dist/domain/conformancePackage.js +4 -3
  298. package/dist/domain/evidence.js +65 -36
  299. package/dist/domain/evidenceBundle.js +47 -8
  300. package/dist/domain/evidenceCompletionLedger.js +2 -1
  301. package/dist/domain/evidenceErrors.js +12 -1
  302. package/dist/domain/explicitSensitiveFailure.js +17 -1
  303. package/dist/domain/firmware/firmwareAnalysis.js +6 -7
  304. package/dist/domain/functionComparison.js +4 -5
  305. package/dist/domain/functionComparisonDimensions.js +120 -87
  306. package/dist/domain/functionComparisonNormalization.js +23 -34
  307. package/dist/domain/functionComparisonResults.js +1 -4
  308. package/dist/domain/functionComparisonSchemas.js +2 -8
  309. package/dist/domain/functionDossierEvidence.js +2 -37
  310. package/dist/domain/hopperErrors.js +23 -2
  311. package/dist/domain/hopperValues.js +51 -8
  312. package/dist/domain/immutableJson.js +114 -0
  313. package/dist/domain/inputIssueProjection.js +3 -0
  314. package/dist/domain/javascript/electronActiveObservation.js +47 -64
  315. package/dist/domain/javascript/electronObservation.js +14 -3
  316. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +10 -9
  317. package/dist/domain/javascript/electronStaticAnalysisIpc.js +2 -1
  318. package/dist/domain/javascript/electronStaticAnalysisNative.js +2 -1
  319. package/dist/domain/javascript/electronStaticAnalysisValues.js +6 -12
  320. package/dist/domain/javascript/javascriptApplicationAnalysis.js +71 -23
  321. package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +2 -0
  322. package/dist/domain/javascript/javascriptApplicationGraph.js +39 -3
  323. package/dist/domain/javascript/javascriptApplicationGraphSchemas.js +9 -2
  324. package/dist/domain/javascript/javascriptApplicationVersionItems.js +5 -2
  325. package/dist/domain/javascript/javascriptApplicationVersionKeys.js +2 -1
  326. package/dist/domain/javascript/javascriptAstValues.js +20 -0
  327. package/dist/{application/javascript/JavaScriptReturnShapeProjection.js → domain/javascript/javascriptExportReturnShapeProjection.js} +4 -4
  328. package/dist/domain/javascript/javascriptExportShapeComparison.js +7 -1
  329. package/dist/domain/javascript/javascriptExportShapeComparisonIdentity.js +6 -1
  330. package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +29 -1
  331. package/dist/domain/javascript/javascriptExportShapeSelection.js +5 -5
  332. package/dist/domain/javascript/javascriptExportShapeVariants.js +67 -14
  333. package/dist/domain/javascript/javascriptFeatureSeed.js +20 -0
  334. package/dist/domain/javascript/javascriptFeatureTraversal.js +0 -1
  335. package/dist/domain/javascript/javascriptNativeHandoff.js +1 -1
  336. package/dist/domain/javascript/javascriptRecovery.js +3 -8
  337. package/dist/domain/javascript/javascriptRuntimeLoadState.js +0 -1
  338. package/dist/domain/javascript/javascriptRuntimeObservation.js +10 -2
  339. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +1 -1
  340. package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +3 -2
  341. package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +0 -1
  342. package/dist/domain/javascript/javascriptSemanticAnalysis.js +106 -5
  343. package/dist/domain/javascript/javascriptSemanticAsyncEffects.js +2 -1
  344. package/dist/domain/javascript/javascriptSemanticCalls.js +2 -1
  345. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +2 -1
  346. package/dist/domain/javascript/javascriptSemanticCoverage.js +6 -5
  347. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +9 -17
  348. package/dist/domain/javascript/javascriptSemanticDataEffects.js +23 -6
  349. package/dist/domain/javascript/javascriptSemanticGraph.js +98 -43
  350. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +1 -0
  351. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +77 -20
  352. package/dist/domain/javascript/javascriptSemanticMutationValues.js +21 -27
  353. package/dist/domain/javascript/javascriptSemanticObjects.js +83 -42
  354. package/dist/domain/javascript/javascriptSemanticPrimitives.js +18 -21
  355. package/dist/domain/javascript/javascriptSemanticProjection.js +2 -3
  356. package/dist/domain/javascript/javascriptSemanticPromises.js +2 -1
  357. package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -4
  358. package/dist/domain/javascript/javascriptSemanticResourceLimits.js +77 -0
  359. package/dist/domain/javascript/javascriptSemanticResources.js +1 -1
  360. package/dist/domain/javascript/javascriptSemanticReturns.js +32 -17
  361. package/dist/domain/javascript/javascriptSemanticSlots.js +72 -0
  362. package/dist/domain/javascript/javascriptSemanticValues.js +126 -61
  363. package/dist/domain/javascript/javascriptSourceMapPaths.js +104 -0
  364. package/dist/domain/javascript/javascriptSourceParser.js +6 -2
  365. package/dist/domain/javascript/javascriptStaticAnalysis.js +22 -17
  366. package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +5 -3
  367. package/dist/domain/javascript/javascriptStaticAnalysisCalls.js +16 -5
  368. package/dist/domain/javascript/javascriptStaticAnalysisFindings.js +66 -7
  369. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +28 -17
  370. package/dist/domain/javascript/javascriptStaticAnalysisState.js +3 -2
  371. package/dist/domain/javascript/sourceToBundleComparison.js +12 -3
  372. package/dist/domain/javascript/sourceToBundleSignals.js +47 -19
  373. package/dist/domain/jsonSerialization.js +109 -0
  374. package/dist/domain/jsonValue.js +90 -6
  375. package/dist/domain/localPath.js +6 -0
  376. package/dist/domain/managed/managedApplicationGraph.js +10 -10
  377. package/dist/domain/managed/managedArtifact.js +6 -4
  378. package/dist/domain/managed/managedInspectionEvidence.js +16 -0
  379. package/dist/domain/managed/managedMemberComparison.js +2 -9
  380. package/dist/domain/managed/managedMemberComparisonMatch.js +5 -9
  381. package/dist/domain/managed/managedNativeVerification.js +3 -11
  382. package/dist/domain/managed/managedNativeVerificationMatch.js +9 -3
  383. package/dist/domain/native/binaryLayout.js +2 -3
  384. package/dist/domain/native/fileOffsetPartialObservation.js +1 -0
  385. package/dist/domain/native/nativeApiBoundary.js +1 -1
  386. package/dist/domain/native/nativeCallObservation.js +37 -13
  387. package/dist/domain/native/nativeCallPartialObservation.js +33 -0
  388. package/dist/domain/native/nativeInstruction.js +7 -0
  389. package/dist/domain/native/recordedCrash.js +2 -3
  390. package/dist/domain/offsetDateTime.js +17 -0
  391. package/dist/domain/process/processCapture.js +21 -16
  392. package/dist/domain/process/processCaptureCoverage.js +67 -0
  393. package/dist/domain/process/processCaptureExample.js +2 -1
  394. package/dist/domain/process/processCaptureParsing.js +1 -34
  395. package/dist/domain/process/processCaptureValidation.js +81 -13
  396. package/dist/domain/process/processComparison.js +79 -26
  397. package/dist/domain/process/processObservation.js +10 -2
  398. package/dist/domain/process/processScenario.js +35 -12
  399. package/dist/domain/process/processTraceComparison.js +0 -2
  400. package/dist/domain/process/processTraceDimensionProjection.js +1 -1
  401. package/dist/domain/process/processTraceEvaluation.js +15 -11
  402. package/dist/domain/process/processTraceSpecification.js +3 -4
  403. package/dist/domain/propertyListKeys.js +1 -1
  404. package/dist/domain/propertyListXmlText.js +19 -0
  405. package/dist/domain/providerAdapterError.js +3 -1
  406. package/dist/domain/providerOperationHealth.js +54 -0
  407. package/dist/domain/reconstructionCoverage.js +5 -2
  408. package/dist/domain/reconstructionObligationLedgerSchemas.js +2 -1
  409. package/dist/domain/reconstructionReadinessSchemas.js +2 -1
  410. package/dist/domain/reconstructionVerification.js +9 -46
  411. package/dist/domain/reconstructionVerificationSchemas.js +4 -3
  412. package/dist/domain/referenceSourceGraph.js +20 -21
  413. package/dist/domain/staticRuntimeCorrelation.js +8 -45
  414. package/dist/domain/stringPatterns.js +6 -0
  415. package/dist/domain/swiftSymbolClassification.js +61 -0
  416. package/dist/domain/symbolAnalysis.js +66 -18
  417. package/dist/domain/webBundleAnalysis.js +20 -8
  418. package/dist/domain/webBundleAnalyzerInspection.js +13 -8
  419. package/dist/domain/webBundleAnalyzerResult.js +41 -2
  420. package/dist/domain/webCaptureDiff.js +0 -1
  421. package/dist/domain/webCaptureDiffSchemas.js +6 -3
  422. package/dist/domain/webEventListeners.js +3 -2
  423. package/dist/domain/webExecution.js +3 -2
  424. package/dist/domain/webRuntime.js +19 -7
  425. package/dist/domain/webScriptExport.js +1 -1
  426. package/dist/domain/webSourceLocation.js +1 -0
  427. package/dist/dotnet/ManagedArtifactInspector.js +2 -19
  428. package/dist/dotnet/ManagedMemberInspector.js +12 -18
  429. package/dist/dotnet/ManagedMemberInspectorCore.js +47 -44
  430. package/dist/dotnet/ManagedMemberRows.js +75 -62
  431. package/dist/dotnet/ManagedMetadataInventory.js +16 -22
  432. package/dist/dotnet/ManagedMethodBodyReader.js +4 -0
  433. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +109 -94
  434. package/dist/dotnet/ManagedNativeBoundaryInspector.js +12 -21
  435. package/dist/dotnet/ManagedReaderFailure.js +16 -0
  436. package/dist/dotnet/ManagedStaticProvider.js +3 -5
  437. package/dist/evaluation/AgentEvaluationFixtures.js +250 -0
  438. package/dist/evaluation/AgentEvaluationReport.js +28 -0
  439. package/dist/evaluation/CodexAgentEval.js +12 -8
  440. package/dist/evaluation/KnownAnswerEvaluation.js +281 -0
  441. package/dist/evm/EvmoleInterfaceProvider.js +2 -1
  442. package/dist/firmware/FirmwareCommand.js +9 -5
  443. package/dist/firmware/FirmwareFiles.js +1 -1
  444. package/dist/firmware/FirmwareProvider.js +4 -4
  445. package/dist/generatedPackageMetadata.js +2 -2
  446. package/dist/ghidra/GhidraAnalysisProfile.js +7 -5
  447. package/dist/ghidra/GhidraClient.js +126 -34
  448. package/dist/ghidra/GhidraClientStartup.js +0 -2
  449. package/dist/ghidra/GhidraDiagnostics.js +7 -7
  450. package/dist/ghidra/GhidraDoctor.js +6 -5
  451. package/dist/ghidra/GhidraFunctionValues.js +13 -12
  452. package/dist/ghidra/GhidraInstallation.js +58 -33
  453. package/dist/ghidra/GhidraInventoryValues.js +14 -4
  454. package/dist/ghidra/GhidraJavaLaunch.js +66 -0
  455. package/dist/ghidra/GhidraLauncher.js +47 -22
  456. package/dist/ghidra/GhidraProvider.js +6 -2
  457. package/dist/ghidra/GhidraProviderCapabilities.js +20 -2
  458. package/dist/ghidra/GhidraProviderClient.js +36 -15
  459. package/dist/ghidra/GhidraSessionError.js +13 -7
  460. package/dist/ghidra/GhidraSessionRoot.js +39 -0
  461. package/dist/ghidra/GhidraTargetSnapshot.js +47 -12
  462. package/dist/ghidra/GhidraTransport.js +20 -0
  463. package/dist/ghidra/extensions/GhidraExtensions.js +17 -10
  464. package/dist/ghidra/extensions/nativeaot/NativeAotAdapter.js +8 -2
  465. package/dist/hopper/BridgeLauncher.js +65 -56
  466. package/dist/hopper/HopperAnalysisProfile.js +65 -12
  467. package/dist/hopper/HopperCleanup.js +63 -22
  468. package/dist/hopper/HopperClient.js +288 -59
  469. package/dist/hopper/HopperFileOffset.js +237 -0
  470. package/dist/hopper/HopperMachOImage.js +197 -0
  471. package/dist/hopper/HopperOperationStage.js +6 -0
  472. package/dist/hopper/HopperProvider.js +71 -19
  473. package/dist/hopper/HopperProviderCapabilities.js +19 -1
  474. package/dist/hopper/HopperRegexSearch.js +134 -0
  475. package/dist/hopper/HopperRegexWorker.js +27 -0
  476. package/dist/hopper/HopperRequestQueue.js +68 -19
  477. package/dist/hopper/HopperTargetLease.js +133 -49
  478. package/dist/hopper/LinuxPrivateDisplayProbe.js +6 -0
  479. package/dist/ida/IdaConfiguration.js +8 -3
  480. package/dist/ida/IdaInput.js +1 -7
  481. package/dist/ida/IdaMcpConnection.js +8 -4
  482. package/dist/ida/IdaOperationRunner.js +3 -3
  483. package/dist/ida/IdaProvider.js +8 -12
  484. package/dist/ida/IdaSessionClient.js +20 -18
  485. package/dist/ida/IdaWorkspace.js +12 -13
  486. package/dist/inspector/JavaScriptRuntimeScope.js +9 -1
  487. package/dist/inspector/V8InspectorCaptureProjection.js +9 -4
  488. package/dist/inspector/V8InspectorProvider.js +82 -36
  489. package/dist/javascript/recovery/WakaruCommand.js +7 -2
  490. package/dist/javascript/recovery/WakaruExecution.js +5 -2
  491. package/dist/javascript/sourceMaps/DecodedSourceMap.js +47 -0
  492. package/dist/javascript/sourceMaps/SourceMapCommand.js +16 -0
  493. package/dist/javascript/sourceMaps/SourceMapFormat.js +79 -31
  494. package/dist/javascript/sourceMaps/TraceSourceMap.js +14 -28
  495. package/dist/main/shutdown.js +11 -3
  496. package/dist/main/startup.js +9 -2
  497. package/dist/main/transport.js +22 -2
  498. package/dist/main.js +11 -18
  499. package/dist/mcpDoctor.js +62 -2
  500. package/dist/native/AppleDispatchCoverage.js +47 -6
  501. package/dist/native/AppleDispatchDecodeFacts.js +6 -0
  502. package/dist/native/AppleDispatchMetadata.js +6 -3
  503. package/dist/native/AppleMachoFixups.js +48 -24
  504. package/dist/native/AppleMachoSelection.js +48 -22
  505. package/dist/native/AppleObjcCategories.js +6 -2
  506. package/dist/native/AppleObjcDispatchFacets.js +5 -2
  507. package/dist/native/AppleObjcProperties.js +2 -1
  508. package/dist/native/AppleSwiftDispatchFacets.js +27 -21
  509. package/dist/native/AppleSwiftVtables.js +21 -15
  510. package/dist/native/CommandRunner.js +87 -88
  511. package/dist/native/LldbCallTracer.js +372 -103
  512. package/dist/native/LldbRetainedObservations.js +178 -0
  513. package/dist/native/NativeCallObservation.js +62 -3
  514. package/dist/native/NativeMacOSProvider.js +122 -31
  515. package/dist/native/NativeUiHelperRuntime.js +11 -2
  516. package/dist/native/NativeUiObservation.js +2 -2
  517. package/dist/native/SignatureTargetBinding.js +155 -0
  518. package/dist/native/parsers/lipo.js +71 -1
  519. package/dist/native/pwndbg/PwndbgCoreContext.js +25 -5
  520. package/dist/native/pwntools/PwntoolsDecoder.js +2 -1
  521. package/dist/native/pwntools/RecordedCrashStructureBindings.js +2 -0
  522. package/dist/process/DarwinProcessRunTokenReader.js +23 -10
  523. package/dist/process/ExecFileOutput.js +108 -6
  524. package/dist/process/OwnedCommand.js +7 -2
  525. package/dist/process/PrivateRuntimeRoot.js +10 -5
  526. package/dist/process/ProcessOwnership.js +204 -57
  527. package/dist/process/ProcessOwnershipObservation.js +60 -9
  528. package/dist/process/ProviderProcess.js +39 -10
  529. package/dist/process/capture/FilesystemSnapshot.js +50 -13
  530. package/dist/process/capture/ProcessCaptureError.js +15 -2
  531. package/dist/process/capture/ProcessCaptureLifecycle.js +235 -81
  532. package/dist/process/capture/ProcessFilesystemEffects.js +33 -3
  533. package/dist/process/capture/ProcessHarness.js +21 -25
  534. package/dist/process/capture/ProcessNormalization.js +20 -2
  535. package/dist/process/capture/ProcessSampling.js +25 -2
  536. package/dist/process/capture/TerminalRenderer.js +14 -0
  537. package/dist/process/snapshotEnvironment.js +14 -0
  538. package/dist/server/EvidenceMcpServer.js +157 -0
  539. package/dist/server/createServer.js +61 -41
  540. package/dist/server/mcpClientMetadata.js +12 -5
  541. package/dist/server/promptCompletion.js +3 -8
  542. package/dist/server/registerAnalysisViewTool.js +15 -0
  543. package/dist/server/registerAndroidTools.js +2 -5
  544. package/dist/server/registerApplicationTools/compareExportShapes.js +4 -5
  545. package/dist/server/registerApplicationTools/compareSourceToBundle.js +4 -5
  546. package/dist/server/registerApplicationTools/compareVersions.js +4 -5
  547. package/dist/server/registerApplicationTools/coverage.js +1 -2
  548. package/dist/server/registerApplicationTools/helpers.js +1 -4
  549. package/dist/server/registerApplicationTools/obligationLedger.js +4 -5
  550. package/dist/server/registerApplicationTools/projectMobileApplicationGraph.js +3 -4
  551. package/dist/server/registerApplicationTools/traceFeature.js +4 -5
  552. package/dist/server/registerApplicationTools/traceSemantics.js +4 -5
  553. package/dist/server/registerArtifactComparisonTool.js +13 -10
  554. package/dist/server/registerBinaryDiagnosticsTools.js +2 -5
  555. package/dist/server/registerBrowserScenarioTool.js +3 -6
  556. package/dist/server/registerBrowserTools.js +13 -18
  557. package/dist/server/registerBundleComparisonTool.js +5 -7
  558. package/dist/server/registerCloseLifecycleTool.js +9 -20
  559. package/dist/server/registerElectronTools.js +10 -15
  560. package/dist/server/registerEnhancedTools.js +36 -77
  561. package/dist/server/registerEvidenceTools.js +3 -6
  562. package/dist/server/registerEvmTools.js +2 -5
  563. package/dist/server/registerFirmwareTools.js +2 -5
  564. package/dist/server/registerFunctionComparisonTool.js +15 -12
  565. package/dist/server/registerInvestigationTools.js +16 -17
  566. package/dist/server/registerJavaScriptRecoveryTool.js +2 -5
  567. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -8
  568. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +5 -8
  569. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +4 -7
  570. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +6 -9
  571. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +6 -9
  572. package/dist/server/registerOfficialTools.js +4 -21
  573. package/dist/server/registerProcessComparisonTool.js +74 -48
  574. package/dist/server/registerRecordedCrashTools.js +2 -5
  575. package/dist/server/registerSessionRecordTools.js +19 -24
  576. package/dist/server/registerSessionStatusTool.js +19 -6
  577. package/dist/server/registerSessionTools.js +20 -18
  578. package/dist/server/registerWebModuleTool.js +2 -5
  579. package/dist/server/registerWebNetworkCaptureTool.js +2 -5
  580. package/dist/server/registerWebRuntimeTools.js +4 -9
  581. package/dist/server/registerWebScriptTool.js +2 -5
  582. package/dist/server/registerWebSourceLocationTool.js +2 -5
  583. package/dist/server/runDerivedOperation.js +15 -3
  584. package/dist/server/sessionAvailabilityPolicy.js +0 -1
  585. package/dist/server/toolRegistrationOptions.js +2 -2
  586. package/dist/server/toolResult.js +75 -51
  587. package/dist/server/toolResultEncoding.js +34 -0
  588. package/dist/windows/WindowsNativeLoader.js +1 -0
  589. package/dist/windows/WindowsOwnedProcess.js +60 -15
  590. package/dist/windows/WindowsPrivateRuntime.js +7 -8
  591. package/install.sh +1 -1
  592. package/native/windows/README.md +3 -1
  593. package/native/windows/build/manifest.json +2 -2
  594. package/native/windows/build/rea-windows-x64.node +0 -0
  595. package/package.json +44 -30
  596. package/scripts/electron-active-hook-boundaries.cjs +18 -20
  597. package/scripts/electron-active-hook.cjs +241 -37
  598. package/scripts/rea.mjs +3 -6
  599. package/skills/reverse-engineer-anything/SKILL.md +12 -3
  600. package/skills/reverse-engineer-anything/references/android-applications.md +6 -3
  601. package/skills/reverse-engineer-anything/references/evidence-workflows.md +8 -4
  602. package/skills/reverse-engineer-anything/references/javascript-applications.md +20 -3
  603. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +9 -0
  604. package/dist/config.js +0 -1
  605. package/dist/contracts/browserCaptureToolInputSchema.js +0 -43
  606. package/dist/contracts/process/processCaptureExample.js +0 -2
  607. package/dist/contracts/toolOutputSchemas.js +0 -2
  608. package/dist/ghidra/GhidraDefaults.js +0 -2
  609. package/dist/main/reload.js +0 -12
  610. package/dist/main/state.js +0 -3
  611. package/dist/server/sessionToolPolicies.js +0 -2
@@ -9,8 +9,8 @@ import { nativeInstructionSchema, nativeCallTargetsSchema, } from "../domain/nat
9
9
  import { jsonValueSchema } from "../domain/jsonValue.js";
10
10
  import { residualUnknownSchema } from "../domain/residualUnknown.js";
11
11
  import { evidenceBundleSchema } from "../domain/evidenceBundle.js";
12
- import { processCaptureComparisonSchema, processCaptureSchema, } from "../domain/process/processCapture.js";
13
- import { functionInstructionWindowSchema, referenceKindSchema, } from "../domain/hopperValues.js";
12
+ import { processCaptureComparisonSchema } from "../domain/process/processComparison.js";
13
+ import { analysisBookmarkSchema, functionInstructionWindowSchema, referenceEdgeSchema, unresolvedCallSchema, analysisStringSchema, procedureIdentitySchema, } from "../domain/hopperValues.js";
14
14
  import { nativeApiInspectionResultSchema } from "../domain/native/nativeApiBoundary.js";
15
15
  import { demangleSwiftSchema, inspectMachoSchema, inspectPlistSchema, inspectSignatureSchema, listArchitecturesSchema, } from "../domain/native/nativeInspection.js";
16
16
  import { artifactExtractionResultSchema } from "../domain/artifactGraph.js";
@@ -21,20 +21,21 @@ import { keyedArchiveResultSchema } from "../domain/apple/keyedArchive.js";
21
21
  import { appleAssetCatalogResultSchema } from "../domain/apple/appleAssetCatalog.js";
22
22
  import { managedArtifactInspectionSchema, managedMemberInspectionSchema, managedNativeBoundaryInspectionSchema, } from "../domain/managed/managedArtifact.js";
23
23
  import { managedMemberComparisonResultSchema } from "../domain/managed/managedMemberComparison.js";
24
- import { managedNativeVerificationResultSchema } from "../domain/managed/managedNativeVerification.js";
24
+ import { managedNativeVerificationResultSchema } from "../domain/managed/managedNativeVerificationSchemas.js";
25
25
  import { managedReconstructionImportResultSchema } from "../domain/managed/managedReconstruction.js";
26
26
  import { managedApplicationGraphResultSchema } from "../domain/managed/managedApplicationGraph.js";
27
27
  import { artifactComparisonResultSchema } from "../domain/artifactComparison.js";
28
- import { functionComparisonResultSchema } from "../domain/functionComparison.js";
28
+ import { functionComparisonResultSchema } from "../domain/functionComparisonSchemas.js";
29
29
  import { bundleComparisonResultSchema } from "../domain/bundleComparison.js";
30
30
  import { changedBehaviorResultSchema } from "../domain/changedBehavior.js";
31
- import { callPathResultSchema } from "../domain/callPath.js";
31
+ import { callPathResultSchema } from "../domain/callPathSchemas.js";
32
32
  import { staticRuntimeCorrelationResultSchema } from "../domain/staticRuntimeCorrelation.js";
33
- import { reconstructionVerificationResultSchema } from "../domain/reconstructionVerification.js";
33
+ import { reconstructionVerificationResultSchema } from "../domain/reconstructionVerificationSchemas.js";
34
34
  import { analysisErrorProjectionSchema } from "./errorSchemas.js";
35
35
  import { nativeDispatchMetadataResultSchema } from "../domain/native/objcSwiftMetadata.js";
36
36
  import { nativeInvestigationTraceSchema } from "../domain/native/nativeInvestigationGraph.js";
37
- import { addressList, addressedValue, addressedEntry, containingProcedureResolution, functionDossierOutput, graphNode, lifecycleResultOf, nullableText, procedureIdentity, procedureInfoOutput, evidenceResultOf as resultOf, segmentOutput, sessionProvider, symbolDiscoveryOutput, targetFormatSchema, targetKindSchema, } from "./toolOutputSchemaPrimitives.js";
37
+ import { addressList, addressedValue, addressedEntry, containingProcedureResolution, functionDossierOutput, graphNode, lifecycleResultOf, nullableText, procedureInfoOutput, evidenceResultOf, segmentOutput, sessionProvider, symbolDiscoveryOutput, targetFormatSchema, targetKindSchema, } from "./toolOutputSchemaPrimitives.js";
38
+ import { processCaptureSchema } from "../domain/process/processCapture.js";
38
39
  const contextFacetSchema = z.discriminatedUnion("state", [
39
40
  z.object({ state: z.literal("available"), value: jsonValueSchema }),
40
41
  z.object({
@@ -44,92 +45,93 @@ const contextFacetSchema = z.discriminatedUnion("state", [
44
45
  }),
45
46
  ]);
46
47
  const bookmarkFacetSchema = z.discriminatedUnion("state", [
47
- z.object({ state: z.literal("available"), value: z.array(addressedEntry) }),
48
+ z.object({
49
+ state: z.literal("available"),
50
+ value: z.array(analysisBookmarkSchema),
51
+ }),
48
52
  z.object({
49
53
  state: z.literal("unavailable"),
50
54
  reason: z.string(),
51
55
  remediation: z.string(),
52
56
  }),
53
57
  ]);
54
- const addressedString = z.object({
55
- address: z.string(),
56
- value: z.string(),
57
- string: z
58
- .object({
59
- encoding: z.string().min(1),
60
- termination: z.enum(["missing", "present_or_not_required"]),
61
- byte_length: z.number().int().min(0),
62
- })
63
- .optional(),
64
- });
65
58
  /** Exact structured-content schemas shared by direct analysis providers. */
66
59
  export const officialOutputSchemas = {
67
- annotate_native_function: resultOf(nativeFunctionAnnotationsSchema),
68
- inspect_native_load_image: resultOf(nativeLoadImageSchema),
69
- inspect_native_data_type: resultOf(nativeDataTypeSchema),
70
- inspect_native_instruction: resultOf(nativeInstructionSchema),
71
- resolve_native_call_targets: resultOf(nativeCallTargetsSchema),
72
- address_name: resultOf(nullableText),
73
- comment: resultOf(nullableText),
74
- current_address: resultOf(z.string()),
75
- current_procedure: resultOf(z.string()),
76
- current_document: resultOf(z.string()),
77
- goto_address: resultOf(z.string()),
78
- inline_comment: resultOf(nullableText),
79
- list_bookmarks: resultOf(z.array(addressedEntry)),
80
- list_documents: resultOf(z.array(z.string())),
81
- list_names: resultOf(z.array(addressedValue)),
82
- list_procedures: resultOf(z.array(addressedValue)),
60
+ annotate_native_function: evidenceResultOf(nativeFunctionAnnotationsSchema),
61
+ inspect_native_load_image: evidenceResultOf(nativeLoadImageSchema),
62
+ inspect_native_data_type: evidenceResultOf(nativeDataTypeSchema),
63
+ inspect_native_instruction: evidenceResultOf(nativeInstructionSchema),
64
+ resolve_native_call_targets: evidenceResultOf(nativeCallTargetsSchema),
65
+ address_name: evidenceResultOf(nullableText),
66
+ comment: evidenceResultOf(nullableText),
67
+ current_address: evidenceResultOf(z.string()),
68
+ current_procedure: evidenceResultOf(z.string()),
69
+ current_document: evidenceResultOf(z.string()),
70
+ goto_address: evidenceResultOf(z.string()),
71
+ inline_comment: evidenceResultOf(nullableText),
72
+ list_bookmarks: evidenceResultOf(z.array(analysisBookmarkSchema)),
73
+ list_documents: evidenceResultOf(z.array(z.string())),
74
+ list_names: evidenceResultOf(z.array(addressedValue)),
75
+ list_procedures: evidenceResultOf(z.array(addressedValue)),
83
76
  list_segments: segmentOutput,
84
- list_strings: resultOf(z.array(addressedString)),
85
- next_address: resultOf(z.string()),
86
- prev_address: resultOf(z.string()),
87
- procedure_address: resultOf(z.string()),
88
- procedure_assembly: resultOf(z.string()),
89
- procedure_callees: resultOf(addressList),
90
- procedure_callers: resultOf(addressList),
77
+ list_strings: evidenceResultOf(z.array(analysisStringSchema)),
78
+ next_address: evidenceResultOf(z.string()),
79
+ prev_address: evidenceResultOf(z.string()),
80
+ procedure_address: evidenceResultOf(z.string()),
81
+ procedure_assembly: evidenceResultOf(z.string()),
82
+ procedure_callees: evidenceResultOf(addressList),
83
+ procedure_callers: evidenceResultOf(addressList),
91
84
  procedure_info: procedureInfoOutput,
92
- read_function_instructions: resultOf(functionInstructionWindowSchema),
93
- read_bytes: resultOf(z.object({
85
+ read_function_instructions: evidenceResultOf(functionInstructionWindowSchema),
86
+ read_bytes: evidenceResultOf(z.object({
94
87
  address: z.string(),
95
88
  requested_bytes: z.number().int().min(1),
96
89
  returned_bytes: z.number().int().min(0),
97
90
  bytes_hex: z.string().regex(/^(?:[a-f0-9]{2})*$/u),
98
91
  complete: z.boolean(),
99
92
  })),
100
- address_to_file_offset: resultOf(z.object({
93
+ address_to_file_offset: evidenceResultOf(z.object({
101
94
  address: z.string(),
102
95
  file_offset: z.number().int().min(0).max(Number.MAX_SAFE_INTEGER),
96
+ provider_file_offset: z
97
+ .number()
98
+ .int()
99
+ .min(0)
100
+ .max(Number.MAX_SAFE_INTEGER)
101
+ .exactOptional()
102
+ .describe("Original coordinate returned by the provider's mapping API."),
103
+ image_base_file_offset: z
104
+ .number()
105
+ .int()
106
+ .min(0)
107
+ .max(Number.MAX_SAFE_INTEGER)
108
+ .exactOptional()
109
+ .describe("File offset of the loaded image within its source container; zero for a thin executable."),
110
+ source_path: z
111
+ .string()
112
+ .exactOptional()
113
+ .describe("Observed original executable path used to verify the file mapping."),
103
114
  })),
104
- procedure_references: resultOf(z.object({
105
- procedure: procedureIdentity,
115
+ procedure_references: evidenceResultOf(z.object({
116
+ procedure: procedureIdentitySchema,
106
117
  direction: z.enum(["incoming", "outgoing"]),
107
118
  reference_kinds_available: z.boolean().optional(),
108
- unresolved_calls: z
109
- .array(z.object({ address: z.string(), reason: z.string() }))
110
- .default([]),
111
- references: z.array(z.object({
112
- source_address: z.string(),
113
- target_address: z.string(),
114
- source_procedure: procedureIdentity.nullable(),
115
- target_procedure: procedureIdentity.nullable(),
116
- kind: referenceKindSchema,
117
- })),
119
+ unresolved_calls: z.array(unresolvedCallSchema).default([]),
120
+ references: z.array(referenceEdgeSchema),
118
121
  })),
119
- procedure_pseudo_code: resultOf(nullableText),
120
- resolve_containing_procedure: resultOf(containingProcedureResolution),
121
- search_procedures: resultOf(z.array(z.object({ address: z.string(), value: z.string() }))),
122
- search_strings: resultOf(z.array(z.object({ address: z.string(), value: z.string() }))),
123
- set_address_name: resultOf(z.boolean()),
124
- set_addresses_names: resultOf(z.record(z.string(), z.boolean())),
125
- set_bookmark: resultOf(z.boolean()),
126
- set_comment: resultOf(z.boolean()),
127
- set_current_document: resultOf(z.string()),
128
- set_inline_comment: resultOf(z.boolean()),
129
- unset_bookmark: resultOf(z.boolean()),
130
- xrefs: resultOf(addressList),
122
+ procedure_pseudo_code: evidenceResultOf(nullableText),
123
+ resolve_containing_procedure: evidenceResultOf(containingProcedureResolution),
124
+ search_procedures: evidenceResultOf(z.array(z.object({ address: z.string(), value: z.string() }))),
125
+ search_strings: evidenceResultOf(z.array(analysisStringSchema)),
126
+ set_address_name: evidenceResultOf(z.boolean()),
127
+ set_addresses_names: evidenceResultOf(z.record(z.string(), z.boolean())),
128
+ set_bookmark: evidenceResultOf(z.boolean()),
129
+ set_comment: evidenceResultOf(z.boolean()),
130
+ set_inline_comment: evidenceResultOf(z.boolean()),
131
+ unset_bookmark: evidenceResultOf(z.boolean()),
132
+ xrefs: evidenceResultOf(addressList),
131
133
  };
132
- const literalTraceOutput = resultOf(z.object({
134
+ const literalTraceOutput = evidenceResultOf(z.object({
133
135
  query: z.string(),
134
136
  search_mode: z.literal("literal"),
135
137
  matches: z.array(z.object({
@@ -145,7 +147,7 @@ const literalTraceOutput = resultOf(z.object({
145
147
  truncated: z.boolean(),
146
148
  residual_unknowns: z.array(z.string()),
147
149
  }));
148
- const callPathTraceOutput = resultOf(z.object({
150
+ const callPathTraceOutput = evidenceResultOf(z.object({
149
151
  start: z.string(),
150
152
  goal: z.string().nullable(),
151
153
  direction: z.enum(["forward", "backward"]),
@@ -171,22 +173,44 @@ const callPathTraceOutput = resultOf(z.object({
171
173
  residual_unknowns: z.array(z.string()),
172
174
  limitations: z.array(z.string()),
173
175
  }));
176
+ /** Identity facts attached to one requested batch selector. */
177
+ const batchProcedureIdentity = z.discriminatedUnion("status", [
178
+ z.object({
179
+ status: z.literal("resolved"),
180
+ address: z.string().min(1).describe("Observed canonical procedure entry."),
181
+ name: z
182
+ .string()
183
+ .nullable()
184
+ .describe("Provider's entry label, or null when unavailable."),
185
+ name_error: analysisErrorProjectionSchema.optional(),
186
+ }),
187
+ z.object({
188
+ status: z.literal("unknown"),
189
+ error: analysisErrorProjectionSchema,
190
+ }),
191
+ ]);
174
192
  /** Exact structured-content schemas for composed analysis workflows. */
175
193
  export const enhancedOutputSchemas = {
176
- inspect_native_dispatch_metadata: resultOf(nativeDispatchMetadataResultSchema),
177
- trace_native_values: resultOf(nativeValueTraceSchema),
178
- trace_native_ui_action: resultOf(nativeInvestigationTraceSchema),
194
+ inspect_native_dispatch_metadata: evidenceResultOf(nativeDispatchMetadataResultSchema),
195
+ trace_native_values: evidenceResultOf(nativeValueTraceSchema),
196
+ trace_native_ui_action: evidenceResultOf(nativeInvestigationTraceSchema),
179
197
  get_objc_classes: symbolDiscoveryOutput("classes"),
180
198
  get_objc_protocols: symbolDiscoveryOutput("protocols"),
181
- batch_decompile: resultOf(z.object({
199
+ batch_decompile: evidenceResultOf(z.object({
182
200
  items: z.array(z.discriminatedUnion("status", [
183
201
  z.object({
184
- address: z.string(),
202
+ address: z
203
+ .string()
204
+ .describe("Original caller-selected symbol or address."),
205
+ procedure: batchProcedureIdentity,
185
206
  status: z.literal("ok"),
186
207
  pseudocode: z.string().min(1),
187
208
  }),
188
209
  z.object({
189
- address: z.string(),
210
+ address: z
211
+ .string()
212
+ .describe("Original caller-selected symbol or address."),
213
+ procedure: batchProcedureIdentity,
190
214
  status: z.literal("error"),
191
215
  error: analysisErrorProjectionSchema,
192
216
  }),
@@ -195,15 +219,23 @@ export const enhancedOutputSchemas = {
195
219
  succeeded: z.number().int().min(0),
196
220
  failed: z.number().int().min(0),
197
221
  })),
198
- get_call_graph: resultOf(z.record(z.string(), z.array(graphNode))),
199
- analyze_swift_types: resultOf(z.object({
222
+ get_call_graph: evidenceResultOf(z.record(z.string(), z.array(graphNode))),
223
+ analyze_swift_types: evidenceResultOf(z.object({
200
224
  total: z.number().int().min(0),
201
225
  categories: z.record(z.string(), z.object({
202
226
  count: z.number().int().min(0),
203
- items: z.array(addressedEntry),
227
+ items: z.array(addressedEntry.extend({
228
+ mangled_names: z.array(z.string()),
229
+ })),
230
+ })),
231
+ unclassified: z.array(addressedEntry.extend({
232
+ mangled_names: z.array(z.string()),
233
+ reason: z.enum(["category_not_decoded", "conflicting_categories"]),
204
234
  })),
235
+ limitations: z.array(z.string()),
236
+ symbol_inventory_error: analysisErrorProjectionSchema.exactOptional(),
205
237
  })),
206
- find_xrefs_to_name: resultOf(z.discriminatedUnion("status", [
238
+ find_xrefs_to_name: evidenceResultOf(z.discriminatedUnion("status", [
207
239
  z.object({
208
240
  status: z.literal("resolved"),
209
241
  name: z.string(),
@@ -216,7 +248,7 @@ export const enhancedOutputSchemas = {
216
248
  reason: z.literal("name_not_found"),
217
249
  }),
218
250
  ])),
219
- binary_overview: resultOf(z.object({
251
+ binary_overview: evidenceResultOf(z.object({
220
252
  document: z.string(),
221
253
  segments: z.array(z.object({
222
254
  name: z.string(),
@@ -229,42 +261,42 @@ export const enhancedOutputSchemas = {
229
261
  string_count: z.number().int().min(0),
230
262
  })),
231
263
  analyze_function: functionDossierOutput,
232
- inspect_native_api: resultOf(nativeApiInspectionResultSchema),
264
+ inspect_native_api: evidenceResultOf(nativeApiInspectionResultSchema),
233
265
  trace_feature: literalTraceOutput,
234
266
  trace_call_path: callPathTraceOutput,
235
267
  };
236
268
  /** Exact Evidence schemas for provider-neutral native inspection. */
237
269
  export const nativeOutputSchemas = {
238
- observe_native_ui: resultOf(nativeUiResultSchema),
239
- capture_native_ui_scenario: resultOf(nativeUiResultSchema),
240
- observe_native_calls: resultOf(nativeCallObservationResultSchema),
241
- inspect_macho: resultOf(inspectMachoSchema),
242
- inspect_signature: resultOf(inspectSignatureSchema),
243
- inspect_plist: resultOf(inspectPlistSchema),
244
- list_architectures: resultOf(listArchitecturesSchema),
245
- demangle_swift: resultOf(demangleSwiftSchema),
270
+ observe_native_ui: evidenceResultOf(nativeUiResultSchema),
271
+ capture_native_ui_scenario: evidenceResultOf(nativeUiResultSchema),
272
+ observe_native_calls: evidenceResultOf(nativeCallObservationResultSchema),
273
+ inspect_macho: evidenceResultOf(inspectMachoSchema),
274
+ inspect_signature: evidenceResultOf(inspectSignatureSchema),
275
+ inspect_plist: evidenceResultOf(inspectPlistSchema),
276
+ list_architectures: evidenceResultOf(listArchitecturesSchema),
277
+ demangle_swift: evidenceResultOf(demangleSwiftSchema),
246
278
  };
247
279
  /** Exact Evidence schemas for provider-neutral artifact graph operations. */
248
280
  export const artifactOutputSchemas = {
249
- inspect_artifact: resultOf(artifactInspectionResultSchema),
250
- extract_artifact: resultOf(artifactExtractionResultSchema),
251
- decode_interface_builder: resultOf(interfaceBuilderAnalysisSchema),
252
- inspect_keyed_archive: resultOf(keyedArchiveResultSchema),
253
- inspect_asset_catalog: resultOf(appleAssetCatalogResultSchema),
254
- trace_dylib_resolution: resultOf(dylibResolutionResultSchema),
281
+ inspect_artifact: evidenceResultOf(artifactInspectionResultSchema),
282
+ extract_artifact: evidenceResultOf(artifactExtractionResultSchema),
283
+ decode_interface_builder: evidenceResultOf(interfaceBuilderAnalysisSchema),
284
+ inspect_keyed_archive: evidenceResultOf(keyedArchiveResultSchema),
285
+ inspect_asset_catalog: evidenceResultOf(appleAssetCatalogResultSchema),
286
+ trace_dylib_resolution: evidenceResultOf(dylibResolutionResultSchema),
255
287
  };
256
288
  /** Exact Evidence schema for execution-free managed static analysis. */
257
289
  export const managedOutputSchemas = {
258
- inspect_managed_artifact: resultOf(managedArtifactInspectionSchema),
259
- inspect_managed_members: resultOf(managedMemberInspectionSchema),
260
- inspect_managed_native_boundaries: resultOf(managedNativeBoundaryInspectionSchema),
290
+ inspect_managed_artifact: evidenceResultOf(managedArtifactInspectionSchema),
291
+ inspect_managed_members: evidenceResultOf(managedMemberInspectionSchema),
292
+ inspect_managed_native_boundaries: evidenceResultOf(managedNativeBoundaryInspectionSchema),
261
293
  };
262
294
  /** Exact Evidence schema for provider-neutral managed workflows. */
263
295
  export const managedWorkflowOutputSchemas = {
264
- compare_managed_members: resultOf(managedMemberComparisonResultSchema),
265
- verify_managed_native_boundaries: resultOf(managedNativeVerificationResultSchema),
266
- import_managed_reconstruction: resultOf(managedReconstructionImportResultSchema),
267
- project_managed_application_graph: resultOf(managedApplicationGraphResultSchema),
296
+ compare_managed_members: evidenceResultOf(managedMemberComparisonResultSchema),
297
+ verify_managed_native_boundaries: evidenceResultOf(managedNativeVerificationResultSchema),
298
+ import_managed_reconstruction: evidenceResultOf(managedReconstructionImportResultSchema),
299
+ project_managed_application_graph: evidenceResultOf(managedApplicationGraphResultSchema),
268
300
  };
269
301
  /** Exact structured-content schemas for target lifecycle operations. */
270
302
  export const sessionOutputSchemas = {
@@ -272,7 +304,6 @@ export const sessionOutputSchemas = {
272
304
  path: z.string(),
273
305
  format: targetFormatSchema,
274
306
  kind: targetKindSchema,
275
- loaderArgs: z.array(z.string()),
276
307
  sha256: z.string().regex(/^[a-f0-9]{64}$/u),
277
308
  architecture: z.enum(["x86", "x86_64", "arm", "arm64"]).nullable(),
278
309
  })),
@@ -281,7 +312,21 @@ export const sessionOutputSchemas = {
281
312
  z.object({
282
313
  path: z.string(),
283
314
  bytes: z.number().int().min(0),
284
- entries: z.number().int().min(0),
315
+ primitive_entries: z
316
+ .number()
317
+ .int()
318
+ .min(0)
319
+ .describe("Retained eligible primitive query bindings."),
320
+ workflow_entries: z
321
+ .number()
322
+ .int()
323
+ .min(0)
324
+ .describe("Retained eligible composed workflow bindings."),
325
+ evidence_records: z
326
+ .number()
327
+ .int()
328
+ .min(0)
329
+ .describe("All retained Evidence records, including observations without replay bindings."),
285
330
  }),
286
331
  ])),
287
332
  binary_session: lifecycleResultOf(z.union([
@@ -325,15 +370,15 @@ export const sessionOutputSchemas = {
325
370
  unknowns_added: z.number().int().min(0),
326
371
  total: z.number().int().min(0),
327
372
  })),
328
- capture_process_scenario: resultOf(processCaptureSchema),
329
- compare_process_captures: resultOf(processCaptureComparisonSchema),
330
- compare_artifacts: resultOf(artifactComparisonResultSchema),
331
- compare_functions: resultOf(functionComparisonResultSchema),
332
- compare_bundles: resultOf(bundleComparisonResultSchema),
333
- find_changed_behavior: resultOf(changedBehaviorResultSchema),
334
- build_call_path: resultOf(callPathResultSchema),
335
- correlate_static_and_runtime: resultOf(staticRuntimeCorrelationResultSchema),
336
- verify_reconstruction: resultOf(reconstructionVerificationResultSchema),
373
+ capture_process_scenario: evidenceResultOf(processCaptureSchema),
374
+ compare_process_captures: evidenceResultOf(processCaptureComparisonSchema),
375
+ compare_artifacts: evidenceResultOf(artifactComparisonResultSchema),
376
+ compare_functions: evidenceResultOf(functionComparisonResultSchema),
377
+ compare_bundles: evidenceResultOf(bundleComparisonResultSchema),
378
+ find_changed_behavior: evidenceResultOf(changedBehaviorResultSchema),
379
+ build_call_path: evidenceResultOf(callPathResultSchema),
380
+ correlate_static_and_runtime: evidenceResultOf(staticRuntimeCorrelationResultSchema),
381
+ verify_reconstruction: evidenceResultOf(reconstructionVerificationResultSchema),
337
382
  list_unknowns: lifecycleResultOf(z.object({
338
383
  items: z.array(residualUnknownSchema),
339
384
  total: z.number().int().min(0),
@@ -1,19 +1,16 @@
1
1
  import { z } from "zod";
2
2
  import { procedureClassificationSchema, procedureIdentitySchema, localVariableSchema, functionDossierSchema, functionBodySchema, } from "../domain/hopperValues.js";
3
3
  import { analysisProfileSchema } from "../domain/analysisProfile.js";
4
- import { evidenceEnvelopeSchema } from "../domain/evidence.js";
4
+ import { evidenceSchema, validateAnalysisProfileProvider, } from "../domain/evidence.js";
5
5
  import { jsonValueSchema } from "../domain/jsonValue.js";
6
6
  import { PROVIDER_REJECTION_CODES, } from "./providerSelection.js";
7
+ import { PROVIDER_FAILURE_STAGES, PROVIDER_OPERATION_STATES, PROVIDER_RETRY_ACTIONS, } from "../domain/providerOperationHealth.js";
7
8
  import { analysisErrorProjectionSchema } from "./errorSchemas.js";
8
- import { prefixedDigestSchema } from "./../domain/digests.js";
9
- /** Inline result with its complete Evidence record. */
10
- export const inlineEvidenceRecordSchema = evidenceEnvelopeSchema;
11
- export const evidenceResultOf = (schema) => z.strictObject({
12
- result: schema,
13
- evidence_id: prefixedDigestSchema("ev"),
14
- evidence: inlineEvidenceRecordSchema,
15
- });
16
- const resultOf = evidenceResultOf;
9
+ /** Specialize the single normalized result inside a complete Evidence record. */
10
+ export const evidenceResultOf = (schema) => z
11
+ .strictObject({ ...evidenceSchema.shape, normalized_result: schema })
12
+ .superRefine(validateAnalysisProfileProvider);
13
+ /** Wrap a lifecycle result while preserving its exact schema type. */
17
14
  export const lifecycleResultOf = (schema) => z.object({ result: schema });
18
15
  /** Resolve a required named output schema or reject contract drift. */
19
16
  export const requireOutputSchema = (schemas, name) => {
@@ -133,6 +130,20 @@ export const analysisActivity = z.object({
133
130
  queued_requests: z.number().int().min(0),
134
131
  })),
135
132
  });
133
+ const providerOperationRequest = z.object({
134
+ request_id: z.number().int().min(1),
135
+ operation: z.string().min(1),
136
+ stage: z.enum(PROVIDER_FAILURE_STAGES),
137
+ });
138
+ export const providerOperationHealth = z
139
+ .object({
140
+ state: z.enum(PROVIDER_OPERATION_STATES),
141
+ stage: z.enum(PROVIDER_FAILURE_STAGES).nullable(),
142
+ retry_action: z.enum(PROVIDER_RETRY_ACTIONS).nullable(),
143
+ exit_code: z.number().int().nullable(),
144
+ requests: z.array(providerOperationRequest),
145
+ })
146
+ .nullable();
136
147
  const providerRejectionCode = z.enum(PROVIDER_REJECTION_CODES);
137
148
  const providerDiagnostics = z.record(z.string(), jsonValueSchema);
138
149
  const providerAvailability = z.discriminatedUnion("status", [
@@ -254,11 +265,10 @@ export const toolAvailability = z.discriminatedUnion("available", [
254
265
  ]);
255
266
  export const sessionProvider = z
256
267
  .object({
257
- provider: providerIdentity,
258
- providers: z.array(providerIdentity),
259
268
  capabilities: z.array(providerCapability),
260
269
  analysis_run: analysisRun,
261
270
  analysis_activity: analysisActivity,
271
+ provider_operation_health: providerOperationHealth,
262
272
  analysis_provider_binding: z
263
273
  .object({
264
274
  provider: providerIdentity,
@@ -325,13 +335,11 @@ export const addressedEntry = z.object({
325
335
  address: z.string(),
326
336
  name: z.string(),
327
337
  });
328
- export const procedureIdentity = procedureIdentitySchema;
329
- const localVariable = localVariableSchema;
330
338
  export const containingProcedureResolution = z.discriminatedUnion("found", [
331
339
  z.object({
332
340
  query_address: z.string(),
333
341
  found: z.literal(true),
334
- procedure: procedureIdentity,
342
+ procedure: procedureIdentitySchema,
335
343
  }),
336
344
  z.object({
337
345
  query_address: z.string(),
@@ -389,21 +397,21 @@ const memoryRegionOutput = z.object({
389
397
  initialized: z.boolean().optional(),
390
398
  overlay: z.boolean().optional(),
391
399
  });
392
- export const segmentOutput = resultOf(z.array(memoryRegionOutput.extend({ sections: z.array(memoryRegionOutput) })));
393
- export const procedureInfoOutput = resultOf(z.object({
400
+ export const segmentOutput = evidenceResultOf(z.array(memoryRegionOutput.extend({ sections: z.array(memoryRegionOutput) })));
401
+ export const procedureInfoOutput = evidenceResultOf(z.object({
394
402
  name: z.string(),
395
403
  entrypoint: z.string(),
396
404
  basicblock_count: z.number().int().min(0),
397
405
  length: z.number().min(0),
398
406
  signature: nullableText,
399
- locals: z.array(localVariable),
407
+ locals: z.array(localVariableSchema),
400
408
  classification: procedureClassificationSchema.nullable().default(null),
401
409
  body: functionBodySchema.default({
402
410
  available: false,
403
411
  reason: "The provider did not report complete function body ranges.",
404
412
  }),
405
413
  }));
406
- export const symbolDiscoveryOutput = (property) => resultOf(z.object({
414
+ export const symbolDiscoveryOutput = (property) => evidenceResultOf(z.object({
407
415
  count: z.number().int().min(0),
408
416
  [property]: z.array(addressedEntry),
409
417
  }));
@@ -419,4 +427,4 @@ export const graphNode = z.discriminatedUnion("status", [
419
427
  error: analysisErrorProjectionSchema,
420
428
  }),
421
429
  ]);
422
- export const functionDossierOutput = resultOf(functionDossierSchema);
430
+ export const functionDossierOutput = evidenceResultOf(functionDossierSchema);
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import { presentInputJsonSchema } from "./inputSchemaPresentation.js";
2
3
  const PROPERTY_DESCRIPTIONS = {
3
4
  addresses: "Ordered provider-normalized procedure addresses to analyze.",
4
5
  after: "The later or right-hand observation to compare.",
@@ -38,52 +39,60 @@ const PROPERTY_DESCRIPTIONS = {
38
39
  unknown_id: "Exact residual-unknown identifier.",
39
40
  };
40
41
  /** Attach caller guidance to a canonical schema for the SDK wire projection. */
41
- export const toolInputSchemaWithMetadata = (contract) => {
42
- const schema = contract.inputSchema.meta(z.globalRegistry.get(contract.inputSchema) ?? {});
43
- const standard = schema["~standard"];
44
- const inputJsonSchema = standard.jsonSchema?.input;
45
- if (inputJsonSchema === undefined)
46
- throw new TypeError("Tool input schema does not expose Standard JSON Schema");
42
+ export const toolInputSchemaWithMetadata = (contract) => withAdvertisedJsonSchema(contract.inputSchema, "input", (project) => (options) => {
43
+ const shared = project({
44
+ ...options,
45
+ libraryOptions: { reused: "ref", ...options.libraryOptions },
46
+ });
47
+ return {
48
+ ...presentInputJsonSchema(shared, fallbackPropertyDescription),
49
+ examples: contract.examples.map(({ input }) => input),
50
+ };
51
+ });
52
+ /** Share repeated output definitions without changing canonical validation. */
53
+ export const toolOutputSchemaWithMetadata = (contract) => withAdvertisedJsonSchema(contract.outputSchema, "output", (project) => (options) => project({
54
+ ...options,
55
+ libraryOptions: { reused: "ref", ...options.libraryOptions },
56
+ }));
57
+ const withAdvertisedJsonSchema = (canonical, io, advertise = (project) => project) => {
47
58
  // Zod's input projection drops root metadata when a descendant transforms.
48
59
  // Preserve the parser and let the SDK own conversion of everything else.
60
+ const schema = canonical.meta(z.globalRegistry.get(canonical) ?? {});
61
+ const standard = schema["~standard"];
62
+ const project = standard.jsonSchema?.[io];
63
+ if (project === undefined)
64
+ throw new TypeError(`Tool ${io} schema does not expose Standard JSON Schema`);
49
65
  Object.defineProperty(schema, "~standard", {
50
66
  value: {
51
67
  ...standard,
52
68
  jsonSchema: {
53
69
  ...standard.jsonSchema,
54
- input: (options) => ({
55
- ...describeProperties(inputJsonSchema(options)),
56
- examples: contract.examples.map(({ input }) => input),
57
- }),
70
+ [io]: memoizeByTarget(advertise(project)),
58
71
  },
59
72
  },
60
73
  });
61
74
  return schema;
62
75
  };
63
- const describeProperties = (value) => Object.fromEntries(Object.entries(value).map(([key, child]) => {
64
- if (key !== "properties" || !isObject(child))
65
- return [key, describeValue(child)];
66
- return [
67
- key,
68
- Object.fromEntries(Object.entries(child).map(([property, propertySchema]) => [
69
- property,
70
- isObject(propertySchema) &&
71
- typeof propertySchema.description !== "string"
72
- ? {
73
- ...describeProperties(propertySchema),
74
- description: fallbackPropertyDescription(property),
75
- }
76
- : describeValue(propertySchema),
77
- ])),
78
- ];
79
- }));
80
- const describeValue = (value) => {
81
- if (Array.isArray(value))
82
- return value.map(describeValue);
83
- return isObject(value) ? describeProperties(value) : value;
76
+ // The SDK reconverts every registered schema on each `tools/list`, although a
77
+ // registered contract cannot change. Like the SDK's own memoized output
78
+ // projection, the advertised value is shared and treated as read-only.
79
+ const memoizeByTarget = (project) => {
80
+ const byTarget = new Map();
81
+ return (options) => {
82
+ if (options.libraryOptions !== undefined)
83
+ return project(options);
84
+ const cached = byTarget.get(options.target);
85
+ if (cached !== undefined)
86
+ return cached;
87
+ const projected = project(options);
88
+ byTarget.set(options.target, projected);
89
+ return projected;
90
+ };
84
91
  };
85
92
  const fallbackPropertyDescription = (property) => {
86
- const explicit = PROPERTY_DESCRIPTIONS[property];
93
+ const explicit = Object.hasOwn(PROPERTY_DESCRIPTIONS, property)
94
+ ? PROPERTY_DESCRIPTIONS[property]
95
+ : undefined;
87
96
  if (explicit !== undefined)
88
97
  return explicit;
89
98
  const words = property.replaceAll("_", " ");
@@ -111,4 +120,3 @@ const fallbackPropertyDescription = (property) => {
111
120
  return `Whether ${words}.`;
112
121
  return `Value for ${words}.`;
113
122
  };
114
- const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
@@ -1,12 +1,12 @@
1
1
  import { inspectWebNetworkCaptureInputSchema, webNetworkCaptureSchema, } from "../domain/webNetworkCapture.js";
2
2
  import { toolContractMetadata } from "./toolEffects.js";
3
- import { evidenceResultOf } from "./toolOutputSchemas.js";
3
+ import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
4
4
  /** Historical inspection is distinct from live browser capture and runtime authority. */
5
5
  export const WEB_NETWORK_CAPTURE_TOOL_CONTRACTS = [
6
6
  {
7
7
  name: "inspect_web_network_capture",
8
8
  ...toolContractMetadata("inspect_web_network_capture"),
9
- description: "Inspect retained local HAR 1.2 or native mitmproxy capture records without contacting recorded URLs. Returns original ordinals, pointers/byte ranges, preserved producer fields, precise numeric representations and exact exposed binary bytes inline. Excludes known transport credentials and explicitly marked values. Decodes every record before optional ordinal selection; malformed or oversized captures return no partial success. Duplicate HAR members are invalid; prototype-named __proto__ members are unsupported by the current shared JSON boundary. Uses pinned upstream parsers, owned temporary files and bounded offline processes. Native mitmproxy requires caller-supplied mitmdump 12.2.3 on Linux. Browser transaction IDs, runtime attribution and original bytes of HAR Unicode text remain unknown.",
9
+ description: "Inspect retained local HAR 1.2 or native mitmproxy capture records without contacting recorded URLs. Returns original ordinals, pointers/byte ranges, preserved producer fields, precise numeric representations and exact exposed binary bytes inline. Excludes known transport credentials and explicitly marked values. Decodes every record before optional ordinal selection; malformed or oversized captures return no partial success. Duplicate HAR members are invalid; prototype-named members such as __proto__ are preserved as ordinary own JSON members without prototype mutation. Uses pinned upstream parsers, owned temporary files and bounded offline processes. Native mitmproxy requires caller-supplied mitmdump 12.2.3 on Linux. Browser transaction IDs, runtime attribution and original bytes of HAR Unicode text remain unknown.",
10
10
  kind: "browser-provider",
11
11
  inputSchema: inspectWebNetworkCaptureInputSchema,
12
12
  outputSchema: evidenceResultOf(webNetworkCaptureSchema),
@@ -1,5 +1,5 @@
1
1
  import { toolContractMetadata } from "./toolEffects.js";
2
- import { evidenceResultOf } from "./toolOutputSchemas.js";
2
+ import { evidenceResultOf } from "./toolOutputSchemaPrimitives.js";
3
3
  import { observeWebExecutionInputSchema, webExecutionSchema, } from "../domain/webExecution.js";
4
4
  import { inspectWebEventListenersInputSchema, webEventListenersSchema, } from "../domain/webEventListeners.js";
5
5
  /** Native website runtime primitives distinguish instrumentation from listener inspection. */