rea-agents 1.7.0 → 2.1.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 (333) hide show
  1. package/README.md +112 -59
  2. package/bridge/ghidra/ReaGhidraBridge.java +96 -11
  3. package/dist/application/ArtifactExtraction.js +1 -1
  4. package/dist/application/ArtifactInventory/classify.js +42 -0
  5. package/dist/application/ArtifactInventory/hash.js +43 -0
  6. package/dist/application/ArtifactInventory/reader.js +41 -0
  7. package/dist/application/ArtifactInventory/scanCanonical.js +155 -0
  8. package/dist/application/ArtifactInventory/scanReader.js +124 -0
  9. package/dist/application/ArtifactInventory/types.js +10 -0
  10. package/dist/application/ArtifactInventory.js +9 -351
  11. package/dist/application/AuthorizedArtifactInventory.js +2 -2
  12. package/dist/application/BinarySession.js +47 -270
  13. package/dist/application/BinarySessionExecution.js +28 -0
  14. package/dist/application/BinarySessionOpen.js +39 -0
  15. package/dist/application/BinarySessionRecords.js +149 -0
  16. package/dist/application/BinarySessionStatus.js +75 -0
  17. package/dist/application/CapabilityInventory.js +42 -2
  18. package/dist/application/ClientRegistrationStatus.js +1 -1
  19. package/dist/application/CrossVersionInventory.js +8 -2
  20. package/dist/application/CrossVersionInvestigation.js +11 -29
  21. package/dist/application/CrossVersionInvestigationCollections.js +23 -0
  22. package/dist/application/DirectAnalysis.js +47 -44
  23. package/dist/application/Doctor.js +165 -197
  24. package/dist/application/DoctorDiagnostics.js +180 -0
  25. package/dist/application/ElectronBoundaryAnalysis.js +112 -0
  26. package/dist/application/ElectronBoundaryGraph.js +9 -0
  27. package/dist/application/ElectronBoundaryGraphContext.js +62 -0
  28. package/dist/application/ElectronBoundaryGraphIpc.js +242 -0
  29. package/dist/application/ElectronBoundaryGraphNative.js +86 -0
  30. package/dist/application/ElectronBoundaryGraphWindows.js +223 -0
  31. package/dist/application/EnhancedToolPagination.js +22 -0
  32. package/dist/application/EnhancedToolTypes.js +4 -0
  33. package/dist/application/EnhancedTools.js +58 -50
  34. package/dist/application/InstrumentedJavaScriptReplayHost.js +36 -0
  35. package/dist/application/InvestigationProviders.js +30 -0
  36. package/dist/application/InvestigationWorkspaceStore.js +24 -10
  37. package/dist/application/JavaScriptApplicationEvidence.js +26 -0
  38. package/dist/application/JavaScriptApplicationEvidenceGraph.js +89 -0
  39. package/dist/application/JavaScriptApplicationService.js +74 -0
  40. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +29 -0
  41. package/dist/application/JavaScriptApplicationWorkflowService.js +90 -0
  42. package/dist/application/JavaScriptArtifactAnalysis.js +52 -7
  43. package/dist/application/JavaScriptArtifactFiles.js +6 -2
  44. package/dist/application/JavaScriptArtifactGraphBuilder.js +82 -17
  45. package/dist/application/JavaScriptArtifactGraphBundlers.js +225 -0
  46. package/dist/application/JavaScriptArtifactGraphContext.js +37 -36
  47. package/dist/application/JavaScriptArtifactGraphDocuments.js +27 -4
  48. package/dist/application/JavaScriptArtifactGraphEvidence.js +24 -14
  49. package/dist/application/JavaScriptArtifactGraphFindings.js +54 -8
  50. package/dist/application/JavaScriptArtifactGraphStructure.js +29 -101
  51. package/dist/application/JavaScriptArtifactPathResolution.js +269 -0
  52. package/dist/application/JavaScriptArtifactReconstruction.js +4 -1
  53. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -83
  54. package/dist/application/JavaScriptJsonModules.js +39 -0
  55. package/dist/application/JavaScriptModuleRelationships.js +262 -0
  56. package/dist/application/JavaScriptReplayPermission.js +16 -0
  57. package/dist/application/JavaScriptReplayPlanning.js +201 -0
  58. package/dist/application/JavaScriptReplayService.js +292 -0
  59. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +25 -0
  60. package/dist/application/JavaScriptRuntimeReconciliationService.js +27 -0
  61. package/dist/application/LinuxHopper.js +10 -0
  62. package/dist/application/MacHopper.js +22 -11
  63. package/dist/application/ManagedApplicationGraphService.js +55 -0
  64. package/dist/application/ManagedMemberComparisonService.js +122 -0
  65. package/dist/application/ManagedNativeVerificationService.js +39 -0
  66. package/dist/application/ManagedReconstructionService.js +58 -0
  67. package/dist/application/ManagedRuntimeCorrelationService.js +103 -0
  68. package/dist/application/NodeRuntimeCharacterizationService.js +196 -0
  69. package/dist/application/PermissionAuthority.js +106 -63
  70. package/dist/application/ProcessCaptureCapability.js +1 -1
  71. package/dist/application/ProcessCapturePermission.js +13 -0
  72. package/dist/application/ProcessCli.js +2 -12
  73. package/dist/application/ProcessHarness.js +1 -1
  74. package/dist/application/ProcessSampling.js +15 -11
  75. package/dist/application/ProjectPermissionStore.js +49 -9
  76. package/dist/application/RealHopperAssertions.js +76 -0
  77. package/dist/application/ReconstructionCoverageService.js +69 -0
  78. package/dist/application/ReconstructionCoverageWorkspaceStore.js +31 -0
  79. package/dist/application/RuntimeExecutableDiagnostics.js +172 -0
  80. package/dist/application/Setup.js +147 -259
  81. package/dist/application/SetupClientConfiguration.js +220 -0
  82. package/dist/application/SetupClients.js +24 -2
  83. package/dist/application/SetupPlan.js +123 -12
  84. package/dist/application/SetupSkill.js +26 -12
  85. package/dist/application/SupportedClients.js +1 -0
  86. package/dist/application/Uninstall.js +6 -3
  87. package/dist/application/WindowsCapabilities.js +86 -0
  88. package/dist/application/runtime.js +2 -0
  89. package/dist/artifacts/AsarArtifactReader.js +11 -0
  90. package/dist/browser/BrowserProcessStartup.js +88 -0
  91. package/dist/browser/CdpCaptureDocuments.js +12 -8
  92. package/dist/browser/CdpCaptureEventBodyShapes.js +75 -0
  93. package/dist/browser/CdpCaptureEventHandlers.js +336 -0
  94. package/dist/browser/CdpCaptureEventHelpers.js +71 -0
  95. package/dist/browser/CdpCaptureEventState.js +1 -0
  96. package/dist/browser/CdpCaptureEventTypes.js +1 -0
  97. package/dist/browser/CdpCaptureEvents.js +46 -464
  98. package/dist/browser/CdpElectronInspection.js +106 -162
  99. package/dist/browser/CdpElectronProvider.js +5 -1
  100. package/dist/browser/CdpElectronScriptEvents.js +69 -0
  101. package/dist/browser/CdpElectronScripts.js +94 -0
  102. package/dist/browser/CdpElectronWorkers.js +56 -0
  103. package/dist/browser/CdpObservationSession.js +51 -8
  104. package/dist/browser/CdpPageCapture.js +12 -129
  105. package/dist/browser/CdpPageCaptureScripts.js +97 -0
  106. package/dist/browser/CdpPageCaptureWorkers.js +46 -0
  107. package/dist/browser/CdpWebMcpDiscovery.js +38 -14
  108. package/dist/browser/PngVisualDiff.js +9 -2
  109. package/dist/catalogIdentity.js +8 -1
  110. package/dist/cli/artifactCommands.js +82 -0
  111. package/dist/cli/coreAnalysisCommands.js +232 -0
  112. package/dist/cli/managedCommands.js +397 -0
  113. package/dist/cli/managedProjectGraphCommand.js +24 -0
  114. package/dist/cli/options.js +9 -0
  115. package/dist/cli/setupCommands.js +108 -0
  116. package/dist/cli/types.js +1 -0
  117. package/dist/cli/utilityCommands.js +122 -0
  118. package/dist/cli.js +13 -383
  119. package/dist/cliApplicationCommands.js +176 -0
  120. package/dist/cliBrowserAdvancedCommands.js +73 -16
  121. package/dist/cliBrowserCommands.js +39 -115
  122. package/dist/cliCommandNames.js +17 -0
  123. package/dist/cliElectronCommands.js +100 -27
  124. package/dist/cliEvidenceCommands.js +13 -2
  125. package/dist/cliInvestigationCommands.js +53 -10
  126. package/dist/cliJsonInput.js +54 -0
  127. package/dist/cliObservationOptions.js +137 -0
  128. package/dist/cliPolicyCommands.js +80 -46
  129. package/dist/cliSetup.js +289 -0
  130. package/dist/config/environment.js +107 -0
  131. package/dist/config/parseConfig.js +228 -0
  132. package/dist/config/parsers.js +68 -0
  133. package/dist/config/permissions.js +30 -0
  134. package/dist/config/types.js +1 -0
  135. package/dist/config.js +1 -292
  136. package/dist/contracts/applicationToolContracts.js +225 -0
  137. package/dist/contracts/artifactToolContracts.js +5 -9
  138. package/dist/contracts/browserToolContracts.js +14 -62
  139. package/dist/contracts/electronToolContracts.js +45 -19
  140. package/dist/contracts/errorSchemas.js +1 -0
  141. package/dist/contracts/investigationExamples.js +0 -6
  142. package/dist/contracts/javascriptApplicationWorkflowExamples.js +46 -0
  143. package/dist/contracts/javascriptRuntimeReconciliationExample.js +208 -0
  144. package/dist/contracts/managedToolContracts.js +153 -0
  145. package/dist/contracts/managedWorkflowExamples.js +346 -0
  146. package/dist/contracts/managedWorkflowToolContracts.js +203 -0
  147. package/dist/contracts/nativeToolContracts.js +2 -6
  148. package/dist/contracts/promptContracts.js +18 -2
  149. package/dist/contracts/providerSelection.js +2 -0
  150. package/dist/contracts/toolContractExamples.js +10 -25
  151. package/dist/contracts/toolContracts.js +49 -47
  152. package/dist/contracts/toolEffects.js +174 -0
  153. package/dist/contracts/toolOutputSchemaGroups.js +232 -0
  154. package/dist/contracts/toolOutputSchemaPrimitives.js +327 -0
  155. package/dist/contracts/toolOutputSchemas.js +2 -535
  156. package/dist/doctorRuntime.js +42 -1
  157. package/dist/domain/analysisErrorPresentation.js +234 -0
  158. package/dist/domain/analysisErrorProjection.js +284 -0
  159. package/dist/domain/artifactComparison.js +37 -19
  160. package/dist/domain/binaryTarget.js +87 -37
  161. package/dist/domain/browserObservation.js +1 -282
  162. package/dist/domain/browserObservationSchemas.js +286 -0
  163. package/dist/domain/bundleComparison.js +4 -4
  164. package/dist/domain/electronObservation.js +13 -0
  165. package/dist/domain/electronStaticAnalysis.js +9 -0
  166. package/dist/domain/electronStaticAnalysisBrowser.js +206 -0
  167. package/dist/domain/electronStaticAnalysisIpc.js +171 -0
  168. package/dist/domain/electronStaticAnalysisNative.js +164 -0
  169. package/dist/domain/electronStaticAnalysisTypes.js +1 -0
  170. package/dist/domain/electronStaticAnalysisValues.js +103 -0
  171. package/dist/domain/errors.js +32 -448
  172. package/dist/domain/functionComparison.js +4 -165
  173. package/dist/domain/functionComparisonDimensions.js +164 -0
  174. package/dist/domain/functionComparisonSchemas.js +3 -8
  175. package/dist/domain/inputIssueProjection.js +52 -0
  176. package/dist/domain/javascriptApplicationAnalysis.js +155 -0
  177. package/dist/domain/javascriptApplicationChangeGraph.js +231 -0
  178. package/dist/domain/javascriptApplicationEvidenceSchemas.js +18 -0
  179. package/dist/domain/javascriptApplicationGraph.js +2 -1
  180. package/dist/domain/javascriptApplicationGraphSchemas.js +7 -0
  181. package/dist/domain/javascriptApplicationVersionComparison.js +116 -0
  182. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +139 -0
  183. package/dist/domain/javascriptApplicationVersionItems.js +233 -0
  184. package/dist/domain/javascriptApplicationVersionKeys.js +170 -0
  185. package/dist/domain/javascriptExportInstrumentation.js +97 -0
  186. package/dist/domain/javascriptFeatureSeed.js +140 -0
  187. package/dist/domain/javascriptFeatureTrace.js +232 -0
  188. package/dist/domain/javascriptFeatureTraceSchemas.js +136 -0
  189. package/dist/domain/javascriptFeatureTraversal.js +100 -0
  190. package/dist/domain/javascriptNativeHandoff.js +85 -0
  191. package/dist/domain/javascriptReplay.js +361 -0
  192. package/dist/domain/javascriptRuntimeLoadState.js +106 -0
  193. package/dist/domain/javascriptRuntimeReconciliation.js +42 -0
  194. package/dist/domain/javascriptRuntimeReconciliationGraph.js +169 -0
  195. package/dist/domain/javascriptRuntimeReconciliationMatching.js +247 -0
  196. package/dist/domain/javascriptRuntimeReconciliationParsing.js +160 -0
  197. package/dist/domain/javascriptRuntimeReconciliationResult.js +119 -0
  198. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +316 -0
  199. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +245 -0
  200. package/dist/domain/javascriptRuntimeStaticCandidates.js +193 -0
  201. package/dist/domain/javascriptSemanticAnalysis.js +386 -0
  202. package/dist/domain/javascriptSemanticIr.js +30 -0
  203. package/dist/domain/javascriptSemanticProjection.js +366 -0
  204. package/dist/domain/javascriptSemanticState.js +40 -0
  205. package/dist/domain/javascriptSemanticTraversal.js +22 -0
  206. package/dist/domain/javascriptSemanticValues.js +352 -0
  207. package/dist/domain/javascriptStaticAnalysis.js +26 -254
  208. package/dist/domain/javascriptStaticAnalysisBundler.js +209 -0
  209. package/dist/domain/javascriptStaticAnalysisCalls.js +180 -0
  210. package/dist/domain/javascriptStaticAnalysisFindings.js +39 -0
  211. package/dist/domain/javascriptStaticAnalysisHelpers.js +81 -2
  212. package/dist/domain/javascriptStaticAnalysisState.js +6 -0
  213. package/dist/domain/knownPageCoverage.js +21 -0
  214. package/dist/domain/managedApplicationGraph.js +206 -0
  215. package/dist/domain/managedApplicationGraphCoverage.js +170 -0
  216. package/dist/domain/managedApplicationGraphNodeCoverage.js +6 -0
  217. package/dist/domain/managedApplicationGraphNodes.js +336 -0
  218. package/dist/domain/managedArtifact.js +452 -0
  219. package/dist/domain/managedMemberComparison.js +211 -0
  220. package/dist/domain/managedMemberComparisonCoverage.js +72 -0
  221. package/dist/domain/managedMemberComparisonMatch.js +356 -0
  222. package/dist/domain/managedNativeVerification.js +46 -0
  223. package/dist/domain/managedNativeVerificationMatch.js +272 -0
  224. package/dist/domain/managedNativeVerificationSchemas.js +141 -0
  225. package/dist/domain/managedReconstruction.js +196 -0
  226. package/dist/domain/managedRuntimeCorrelation.js +184 -0
  227. package/dist/domain/nodeRuntimeCharacterization.js +66 -0
  228. package/dist/domain/permissionPolicy.js +2 -0
  229. package/dist/domain/reconstructionCoverage.js +387 -0
  230. package/dist/domain/reconstructionCoverageEvaluation.js +212 -0
  231. package/dist/domain/reconstructionVerificationSchemas.js +9 -3
  232. package/dist/domain/runtimeCharacterization.js +85 -0
  233. package/dist/domain/webBundleAnalyzer.js +3 -409
  234. package/dist/domain/webBundleAnalyzerAst.js +77 -0
  235. package/dist/domain/webBundleAnalyzerInspection.js +307 -0
  236. package/dist/domain/webBundleAnalyzerResult.js +120 -0
  237. package/dist/dotnet/ManagedArtifactInspector.js +339 -0
  238. package/dist/dotnet/ManagedMemberInspector.js +153 -0
  239. package/dist/dotnet/ManagedMemberInspectorCore.js +297 -0
  240. package/dist/dotnet/ManagedMemberInstructionDecoder.js +427 -0
  241. package/dist/dotnet/ManagedMemberRows.js +120 -0
  242. package/dist/dotnet/ManagedMetadataHeaps.js +131 -0
  243. package/dist/dotnet/ManagedMetadataInventory.js +104 -0
  244. package/dist/dotnet/ManagedMetadataInventoryRows.js +292 -0
  245. package/dist/dotnet/ManagedMetadataLayout.js +259 -0
  246. package/dist/dotnet/ManagedMetadataRowSizes.js +54 -0
  247. package/dist/dotnet/ManagedMethodBodyReader.js +143 -0
  248. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +311 -0
  249. package/dist/dotnet/ManagedNativeBoundaryInspector.js +143 -0
  250. package/dist/dotnet/ManagedPeReader.js +188 -0
  251. package/dist/dotnet/ManagedReaderFailure.js +10 -0
  252. package/dist/dotnet/ManagedStaticProvider.js +203 -0
  253. package/dist/generatedPackageMetadata.js +2 -2
  254. package/dist/ghidra/GhidraClient.js +76 -91
  255. package/dist/ghidra/GhidraClientStartup.js +29 -0
  256. package/dist/ghidra/GhidraClientWire.js +34 -0
  257. package/dist/ghidra/GhidraDefaults.js +1 -1
  258. package/dist/ghidra/GhidraDiagnostics.js +6 -1
  259. package/dist/ghidra/GhidraInstallation.js +20 -15
  260. package/dist/ghidra/GhidraLauncher.js +93 -29
  261. package/dist/ghidra/GhidraProvider.js +67 -161
  262. package/dist/ghidra/GhidraProviderCapabilities.js +173 -0
  263. package/dist/ghidra/GhidraSessionValues.js +2 -0
  264. package/dist/ghidra/GhidraSocketConnection.js +44 -7
  265. package/dist/ghidra/GhidraTargetSnapshot.js +30 -0
  266. package/dist/ghidra/GhidraTransport.js +71 -0
  267. package/dist/identity.js +3 -2
  268. package/dist/main/messages.js +5 -0
  269. package/dist/main/reload.js +49 -0
  270. package/dist/main/shutdown.js +25 -0
  271. package/dist/main/startup.js +14 -0
  272. package/dist/main/state.js +26 -0
  273. package/dist/main/transport.js +61 -0
  274. package/dist/main/types.js +1 -0
  275. package/dist/main.js +35 -132
  276. package/dist/process/PrivateRuntimeRoot.js +3 -2
  277. package/dist/process/ProcessOwnership.js +35 -0
  278. package/dist/process/ProviderProcess.js +2 -0
  279. package/dist/replay/JavaScriptReplayWorker.js +300 -0
  280. package/dist/replay/LinuxJavaScriptReplayRunner.js +217 -0
  281. package/dist/replay/LinuxJavaScriptReplaySandbox.js +140 -0
  282. package/dist/replay/LinuxRuntimeClosure.js +46 -0
  283. package/dist/replay/LinuxSeccompPolicy.js +40 -0
  284. package/dist/replay/ReplayOutcome.js +95 -0
  285. package/dist/replay/ReplayProcessLifecycle.js +71 -0
  286. package/dist/replay/ReplayWorkerProtocol.js +55 -0
  287. package/dist/replay/SystemJavaScriptReplayHost.js +182 -0
  288. package/dist/server/ProcessCaptureElicitation.js +157 -0
  289. package/dist/server/createServer.js +158 -41
  290. package/dist/server/registerApplicationTools/characterization.js +57 -0
  291. package/dist/server/registerApplicationTools/compareVersions.js +34 -0
  292. package/dist/server/registerApplicationTools/controlledReplay.js +38 -0
  293. package/dist/server/registerApplicationTools/coverage.js +84 -0
  294. package/dist/server/registerApplicationTools/helpers.js +42 -0
  295. package/dist/server/registerApplicationTools/traceFeature.js +26 -0
  296. package/dist/server/registerApplicationTools/types.js +1 -0
  297. package/dist/server/registerApplicationTools.js +13 -0
  298. package/dist/server/registerArtifactComparisonTool.js +16 -9
  299. package/dist/server/registerBrowserTools.js +61 -60
  300. package/dist/server/registerBundleComparisonTool.js +17 -20
  301. package/dist/server/registerElectronTools.js +39 -12
  302. package/dist/server/registerEnhancedTools.js +52 -15
  303. package/dist/server/registerEvidenceResources.js +54 -0
  304. package/dist/server/registerEvidenceTools.js +5 -1
  305. package/dist/server/registerFunctionComparisonTool.js +14 -7
  306. package/dist/server/registerInvestigationTools/helpers.js +74 -0
  307. package/dist/server/registerInvestigationTools/types.js +1 -0
  308. package/dist/server/registerInvestigationTools.js +103 -132
  309. package/dist/server/registerManagedTools.js +6 -0
  310. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +65 -0
  311. package/dist/server/registerManagedWorkflowTools/contract.js +8 -0
  312. package/dist/server/registerManagedWorkflowTools/evidence.js +43 -0
  313. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +39 -0
  314. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +39 -0
  315. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +52 -0
  316. package/dist/server/registerManagedWorkflowTools/types.js +1 -0
  317. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +75 -0
  318. package/dist/server/registerManagedWorkflowTools.js +13 -0
  319. package/dist/server/registerOfficialTools.js +81 -67
  320. package/dist/server/registerProcessComparisonTool.js +25 -47
  321. package/dist/server/registerSessionRecordTools.js +137 -0
  322. package/dist/server/registerSessionStatusTool.js +9 -8
  323. package/dist/server/registerSessionTools.js +77 -216
  324. package/dist/server/sessionAvailabilityPolicy.js +10 -0
  325. package/dist/server/sessionEvidence.js +14 -19
  326. package/dist/server/toolInputValidation.js +77 -0
  327. package/dist/server/toolRegistrationOptions.js +177 -2
  328. package/dist/server/toolResult.js +30 -17
  329. package/package.json +21 -14
  330. package/scripts/rea.mjs +1 -1
  331. package/skills/{rea-analysis → reverse-engineer-anything}/SKILL.md +75 -6
  332. package/scripts/prepare-node-pty.mjs +0 -35
  333. package/scripts/rebuild-native.mjs +0 -22
@@ -1,24 +1,16 @@
1
- import { z } from "zod";
2
- import { evidenceEnvelopeSchema } from "../domain/evidence.js";
3
1
  import { browserTargetListSchema, inspectWebPageInputSchema, listBrowserTargetsInputSchema, webPageInspectionSchema, } from "../domain/browserObservation.js";
4
2
  import { analyzeWebBundleInputSchema, webBundleAnalysisSchema, } from "../domain/webBundleAnalysis.js";
5
3
  import { observeWebSessionInputSchema, webObservationSessionSchema, } from "../domain/browserSession.js";
6
4
  import { discoverWebMcpToolsInputSchema, webMcpDiscoverySchema, } from "../domain/webMcpDiscovery.js";
7
5
  import { compareWebCapturesInputSchema, webCaptureDiffSchema, } from "../domain/webCaptureDiff.js";
8
6
  import { captureWebScreenshotInputSchema, compareWebScreenshotsInputSchema, webScreenshotDiffSchema, webScreenshotSchema, } from "../domain/webScreenshot.js";
9
- const evidenceResult = (schema) => evidenceEnvelopeSchema
10
- .omit({ normalized_result: true })
11
- .extend({ normalized_result: schema });
7
+ import { toolContractMetadata } from "./toolEffects.js";
8
+ import { evidenceResultOf } from "./toolOutputSchemas.js";
9
+ const evidenceResult = evidenceResultOf;
12
10
  const listOutputSchema = evidenceResult(browserTargetListSchema);
13
- const inspectionOutputSchema = evidenceEnvelopeSchema
14
- .omit({ normalized_result: true })
15
- .extend({ normalized_result: webPageInspectionSchema });
16
- const bundleOutputSchema = evidenceEnvelopeSchema
17
- .omit({ normalized_result: true })
18
- .extend({ normalized_result: webBundleAnalysisSchema });
19
- const observationSessionOutputSchema = evidenceEnvelopeSchema
20
- .omit({ normalized_result: true })
21
- .extend({ normalized_result: webObservationSessionSchema });
11
+ const inspectionOutputSchema = evidenceResult(webPageInspectionSchema);
12
+ const bundleOutputSchema = evidenceResult(webBundleAnalysisSchema);
13
+ const observationSessionOutputSchema = evidenceResult(webObservationSessionSchema);
22
14
  const webMcpOutputSchema = evidenceResult(webMcpDiscoverySchema);
23
15
  const captureDiffOutputSchema = evidenceResult(webCaptureDiffSchema);
24
16
  const screenshotOutputSchema = evidenceResult(webScreenshotSchema);
@@ -29,16 +21,11 @@ const origin = "https://app.example.test";
29
21
  export const BROWSER_TOOL_CONTRACTS = [
30
22
  {
31
23
  name: "list_browser_targets",
24
+ ...toolContractMetadata("list_browser_targets"),
32
25
  description: "List bounded page targets from an approved user-owned loopback Chrome DevTools Protocol endpoint. Only targets whose current URL matches an approved exact origin are returned; URL credentials, query values, and fragments are redacted.",
33
26
  kind: "browser-provider",
34
27
  inputSchema: listBrowserTargetsInputSchema,
35
28
  outputSchema: listOutputSchema,
36
- annotations: {
37
- readOnlyHint: true,
38
- destructiveHint: false,
39
- idempotentHint: true,
40
- openWorldHint: true,
41
- },
42
29
  examples: [
43
30
  {
44
31
  title: "List approved browser page targets",
@@ -54,16 +41,11 @@ export const BROWSER_TOOL_CONTRACTS = [
54
41
  },
55
42
  {
56
43
  name: "inspect_web_page",
44
+ ...toolContractMetadata("inspect_web_page"),
57
45
  description: "Passively inspect one approved page target through CDP without evaluating JavaScript, navigating, clicking, closing, or mutating the page. Returns bounded DOM structure, accessibility, scripts, resources, attach-window network and console metadata, workers, and redacted storage inventory as Evidence v2.",
58
46
  kind: "browser-provider",
59
47
  inputSchema: inspectWebPageInputSchema,
60
48
  outputSchema: inspectionOutputSchema,
61
- annotations: {
62
- readOnlyHint: true,
63
- destructiveHint: false,
64
- idempotentHint: true,
65
- openWorldHint: true,
66
- },
67
49
  examples: [
68
50
  {
69
51
  title: "Inspect one approved browser page",
@@ -112,16 +94,11 @@ export const BROWSER_TOOL_CONTRACTS = [
112
94
  },
113
95
  {
114
96
  name: "analyze_web_bundle",
97
+ ...toolContractMetadata("analyze_web_bundle"),
115
98
  description: "Capture explicitly approved JavaScript source from one approved CDP page and statically derive a bounded chunk graph, route and endpoint candidates, vendor fingerprints, page-declared WebMCP metadata, and optional separately approved source-map evidence. JavaScript is parsed but never executed.",
116
99
  kind: "browser-provider",
117
100
  inputSchema: analyzeWebBundleInputSchema,
118
101
  outputSchema: bundleOutputSchema,
119
- annotations: {
120
- readOnlyHint: true,
121
- destructiveHint: false,
122
- idempotentHint: true,
123
- openWorldHint: true,
124
- },
125
102
  examples: [
126
103
  {
127
104
  title: "Analyze an approved page bundle",
@@ -152,16 +129,11 @@ export const BROWSER_TOOL_CONTRACTS = [
152
129
  },
153
130
  {
154
131
  name: "observe_web_session",
132
+ ...toolContractMetadata("observe_web_session"),
155
133
  description: "Arm a bounded CDP observation window while the user operates the page. Allows approved same-origin reload and SPA navigation, records ordered navigation, redirect, lifecycle, and failure metadata, and stops before retaining an out-of-policy destination.",
156
134
  kind: "browser-provider",
157
135
  inputSchema: observeWebSessionInputSchema,
158
136
  outputSchema: observationSessionOutputSchema,
159
- annotations: {
160
- readOnlyHint: true,
161
- destructiveHint: false,
162
- idempotentHint: false,
163
- openWorldHint: true,
164
- },
165
137
  examples: [
166
138
  {
167
139
  title: "Observe one external user action",
@@ -178,16 +150,11 @@ export const BROWSER_TOOL_CONTRACTS = [
178
150
  },
179
151
  {
180
152
  name: "discover_webmcp_tools",
153
+ ...toolContractMetadata("discover_webmcp_tools"),
181
154
  description: "Passively inventory page-registered WebMCP tools using the experimental CDP WebMCP domain. Metadata is bounded and page-declared-untrusted; REA never registers or invokes discovered tools.",
182
155
  kind: "browser-provider",
183
156
  inputSchema: discoverWebMcpToolsInputSchema,
184
157
  outputSchema: webMcpOutputSchema,
185
- annotations: {
186
- readOnlyHint: true,
187
- destructiveHint: false,
188
- idempotentHint: true,
189
- openWorldHint: true,
190
- },
191
158
  examples: [
192
159
  {
193
160
  title: "Discover current WebMCP declarations",
@@ -207,16 +174,11 @@ export const BROWSER_TOOL_CONTRACTS = [
207
174
  },
208
175
  {
209
176
  name: "compare_web_captures",
177
+ ...toolContractMetadata("compare_web_captures"),
210
178
  description: "Compare two normalized web captures across DOM, scripts, resources, network, safe metadata, and optional WebMCP inventories. Stable observed changes are distinguished from unknown absence caused by incomplete capture coverage.",
211
179
  kind: "browser-provider",
212
180
  inputSchema: compareWebCapturesInputSchema,
213
181
  outputSchema: captureDiffOutputSchema,
214
- annotations: {
215
- readOnlyHint: true,
216
- destructiveHint: false,
217
- idempotentHint: true,
218
- openWorldHint: false,
219
- },
220
182
  examples: [
221
183
  {
222
184
  title: "Compare two normalized captures",
@@ -230,16 +192,11 @@ export const BROWSER_TOOL_CONTRACTS = [
230
192
  },
231
193
  {
232
194
  name: "capture_web_screenshot",
195
+ ...toolContractMetadata("capture_web_screenshot"),
233
196
  description: "Capture the current visible viewport of one approved page as a bounded, content-addressed PNG artifact. Screenshot capture requires separate explicit approval and never scrolls, navigates, or evaluates page JavaScript.",
234
197
  kind: "browser-provider",
235
198
  inputSchema: captureWebScreenshotInputSchema,
236
199
  outputSchema: screenshotOutputSchema,
237
- annotations: {
238
- readOnlyHint: true,
239
- destructiveHint: false,
240
- idempotentHint: false,
241
- openWorldHint: true,
242
- },
243
200
  examples: [
244
201
  {
245
202
  title: "Capture an approved viewport",
@@ -256,16 +213,11 @@ export const BROWSER_TOOL_CONTRACTS = [
256
213
  },
257
214
  {
258
215
  name: "compare_web_screenshots",
216
+ ...toolContractMetadata("compare_web_screenshots"),
259
217
  description: "Compare two self-verifying PNG screenshot artifacts with bounded local pixel metrics. Returns exact changed-pixel ratios and channel deltas without OCR or external services.",
260
218
  kind: "browser-provider",
261
219
  inputSchema: compareWebScreenshotsInputSchema,
262
220
  outputSchema: screenshotDiffOutputSchema,
263
- annotations: {
264
- readOnlyHint: true,
265
- destructiveHint: false,
266
- idempotentHint: true,
267
- openWorldHint: false,
268
- },
269
221
  examples: [
270
222
  {
271
223
  title: "Compare two screenshot artifacts",
@@ -1,27 +1,24 @@
1
- import { evidenceEnvelopeSchema } from "../domain/evidence.js";
1
+ import { toolContractMetadata } from "./toolEffects.js";
2
+ import { evidenceResultOf } from "./toolOutputSchemas.js";
2
3
  import { electronPageInspectionSchema, electronTargetListSchema, inspectElectronPageInputSchema, listElectronTargetsInputSchema, } from "../domain/electronObservation.js";
3
- const listOutputSchema = evidenceEnvelopeSchema
4
- .omit({ normalized_result: true })
5
- .extend({ normalized_result: electronTargetListSchema });
6
- const inspectionOutputSchema = evidenceEnvelopeSchema
7
- .omit({ normalized_result: true })
8
- .extend({ normalized_result: electronPageInspectionSchema });
4
+ import { analyzeJavaScriptApplicationInputSchema, javascriptApplicationAnalysisResultSchema, } from "../domain/javascriptApplicationAnalysis.js";
5
+ import { javascriptRuntimeReconciliationResultSchema, reconcileJavaScriptRuntimeInputSchema, } from "../domain/javascriptRuntimeReconciliationSchemas.js";
6
+ import { JAVASCRIPT_RUNTIME_RECONCILIATION_EXAMPLE } from "./javascriptRuntimeReconciliationExample.js";
7
+ const listOutputSchema = evidenceResultOf(electronTargetListSchema);
8
+ const inspectionOutputSchema = evidenceResultOf(electronPageInspectionSchema);
9
+ const applicationOutputSchema = evidenceResultOf(javascriptApplicationAnalysisResultSchema);
10
+ const reconciliationOutputSchema = evidenceResultOf(javascriptRuntimeReconciliationResultSchema);
9
11
  const endpoint = "http://127.0.0.1:9223";
10
12
  const root = "/Applications/Example.app/Contents/Resources";
11
13
  /** Root-confined Electron file-page discovery and inspection contracts. */
12
14
  export const ELECTRON_TOOL_CONTRACTS = [
13
15
  {
14
16
  name: "list_electron_targets",
17
+ ...toolContractMetadata("list_electron_targets"),
15
18
  description: "List Electron file:// page targets from an approved user-owned loopback CDP endpoint. Every path is canonicalized and must remain contained by an approved filesystem root, including after symlink resolution.",
16
19
  kind: "electron-provider",
17
20
  inputSchema: listElectronTargetsInputSchema,
18
21
  outputSchema: listOutputSchema,
19
- annotations: {
20
- readOnlyHint: true,
21
- destructiveHint: false,
22
- idempotentHint: true,
23
- openWorldHint: true,
24
- },
25
22
  examples: [
26
23
  {
27
24
  title: "List approved Electron file pages",
@@ -37,16 +34,11 @@ export const ELECTRON_TOOL_CONTRACTS = [
37
34
  },
38
35
  {
39
36
  name: "inspect_electron_page",
37
+ ...toolContractMetadata("inspect_electron_page"),
40
38
  description: "Passively inspect one approved Electron file page through CDP. Returns root-confined frames, DOM structure, resource paths, and scripts without evaluating renderer JavaScript or invoking Electron APIs; script contents require separate approval.",
41
39
  kind: "electron-provider",
42
40
  inputSchema: inspectElectronPageInputSchema,
43
41
  outputSchema: inspectionOutputSchema,
44
- annotations: {
45
- readOnlyHint: true,
46
- destructiveHint: false,
47
- idempotentHint: true,
48
- openWorldHint: true,
49
- },
50
42
  examples: [
51
43
  {
52
44
  title: "Inspect an approved Electron page",
@@ -63,6 +55,7 @@ export const ELECTRON_TOOL_CONTRACTS = [
63
55
  max_dom_nodes: 2_000,
64
56
  max_scripts: 500,
65
57
  max_resources: 2_000,
58
+ max_workers: 500,
66
59
  max_script_source_bytes: 1_048_576,
67
60
  max_total_script_source_bytes: 4_194_304,
68
61
  },
@@ -70,4 +63,37 @@ export const ELECTRON_TOOL_CONTRACTS = [
70
63
  },
71
64
  ],
72
65
  },
66
+ {
67
+ name: "analyze_javascript_application",
68
+ ...toolContractMetadata("analyze_javascript_application"),
69
+ description: "Statically reconstruct one approved local ASAR or extracted JavaScript application as Evidence v2 and JavaScript Application Graph v1. Maps BrowserWindow preferences, preload and contextBridge APIs, literal and dynamic IPC, handler locations, sender-validation observations, utility processes, and requested native addon bindings without executing JavaScript; source-map contents require separate approval.",
70
+ kind: "electron-provider",
71
+ inputSchema: analyzeJavaScriptApplicationInputSchema,
72
+ outputSchema: applicationOutputSchema,
73
+ examples: [
74
+ {
75
+ title: "Analyze one approved local Electron application",
76
+ input: {
77
+ input_path: "/Applications/Example.app/Contents/Resources/app.asar",
78
+ format: "auto",
79
+ approved: true,
80
+ source_map_read_approved: false,
81
+ },
82
+ },
83
+ ],
84
+ },
85
+ {
86
+ name: "reconcile_javascript_runtime",
87
+ ...toolContractMetadata("reconcile_javascript_runtime"),
88
+ description: "Reconcile verified static JavaScript application graphs with existing passive web or Electron CDP Evidence. Exact captured-source digests take priority over caller-declared file/URL mappings; target, frame, script, and worker ambiguity remains explicit, and source-map authority stays separate.",
89
+ kind: "electron-provider",
90
+ inputSchema: reconcileJavaScriptRuntimeInputSchema,
91
+ outputSchema: reconciliationOutputSchema,
92
+ examples: [
93
+ {
94
+ title: "Reconcile one passive Electron capture",
95
+ input: JAVASCRIPT_RUNTIME_RECONCILIATION_EXAMPLE,
96
+ },
97
+ ],
98
+ },
73
99
  ];
@@ -95,6 +95,7 @@ export const analysisErrorProjectionSchema = z.discriminatedUnion("code", [
95
95
  generic("configuration_invalid"),
96
96
  generic("target_unavailable"),
97
97
  generic("execution_failure"),
98
+ generic("plan_stale"),
98
99
  ]);
99
100
  /** JSON Schema document used by generated API documentation and clients. */
100
101
  export const analysisErrorJsonSchema = z.toJSONSchema(analysisErrorProjectionSchema);
@@ -1,7 +1,6 @@
1
1
  import { compareFunctions } from "../domain/functionComparison.js";
2
2
  import { createEvidence } from "../domain/evidence.js";
3
3
  import { jsonValueSchema } from "../domain/jsonValue.js";
4
- import { createEvidenceBundle } from "../domain/evidenceBundle.js";
5
4
  import { compareProcessCaptures, processCaptureSchema, } from "../domain/processCapture.js";
6
5
  import { FUNCTION_COMPARISON_EXAMPLE } from "./functionComparisonExample.js";
7
6
  import { EMPTY_PROCESS_CAPTURE_EXAMPLE } from "./processCaptureExample.js";
@@ -109,10 +108,5 @@ export const INVESTIGATION_EXAMPLES = {
109
108
  },
110
109
  ],
111
110
  },
112
- evidence_bundle: createEvidenceBundle([
113
- PROCESS_CAPTURE_REFERENCE,
114
- PROCESS_CAPTURE_RECONSTRUCTION,
115
- PROCESS_COMPARISON_EVIDENCE,
116
- ]),
117
111
  },
118
112
  };
@@ -0,0 +1,46 @@
1
+ import { createEvidence } from "../domain/evidence.js";
2
+ import { reconcileJavaScriptRuntime } from "../domain/javascriptRuntimeReconciliation.js";
3
+ import { JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE, JAVASCRIPT_RUNTIME_RECONCILIATION_EXAMPLE, } from "./javascriptRuntimeReconciliationExample.js";
4
+ const reconciliation = reconcileJavaScriptRuntime(JAVASCRIPT_RUNTIME_RECONCILIATION_EXAMPLE);
5
+ const reconciliationEvidence = createEvidence(undefined, {
6
+ id: "rea-javascript-runtime-reconciliation",
7
+ name: "REA JavaScript runtime reconciliation",
8
+ version: "1",
9
+ }, {
10
+ predicateType: "rea.javascript-runtime-reconciliation/v1",
11
+ operation: "reconcile_javascript_runtime",
12
+ parameters: {
13
+ static_layers: JAVASCRIPT_RUNTIME_RECONCILIATION_EXAMPLE.static_layers.map(({ role, analysis }) => ({
14
+ role,
15
+ evidence_id: analysis.evidence_id,
16
+ runtime_mappings: [],
17
+ })),
18
+ runtime_evidence_ids: JAVASCRIPT_RUNTIME_RECONCILIATION_EXAMPLE.runtime_observations.map(({ evidence_id: id }) => id),
19
+ limits: {
20
+ max_runtime_entities: 10_000,
21
+ max_reconciliation_items: 20_000,
22
+ max_static_load_states: 20_000,
23
+ },
24
+ },
25
+ result: reconciliation,
26
+ confidence: "inferred",
27
+ authority: "analyst-inference",
28
+ limitations: reconciliation.limitations,
29
+ evidenceLinks: reconciliation.evidence_links,
30
+ });
31
+ /** Valid public trace request without proprietary artifacts. */
32
+ export const JAVASCRIPT_FEATURE_TRACE_EXAMPLE = {
33
+ application: JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE,
34
+ seed: {
35
+ kind: "module",
36
+ value: "renderer.js",
37
+ match: "exact",
38
+ case_sensitive: false,
39
+ },
40
+ direction: "both",
41
+ };
42
+ /** Valid static/runtime graph pair demonstrating comparison authority. */
43
+ export const JAVASCRIPT_APPLICATION_VERSION_COMPARISON_EXAMPLE = {
44
+ left: JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE,
45
+ right: reconciliationEvidence,
46
+ };
@@ -0,0 +1,208 @@
1
+ import { createEvidence } from "../domain/evidence.js";
2
+ import { createJavaScriptApplicationGraph, createJavaScriptApplicationNode, } from "../domain/javascriptApplicationGraph.js";
3
+ import { createWebTextArtifact } from "../domain/webContentArtifact.js";
4
+ const applicationSha256 = "1".repeat(64);
5
+ const script = createWebTextArtifact("export const example = true;\n", "text/javascript");
6
+ const inputPath = "/Applications/Example.app/Contents/Resources/app";
7
+ const scriptPath = `${inputPath}/renderer.js`;
8
+ const completeCoverage = {
9
+ status: "complete",
10
+ truncated: false,
11
+ omitted_count: 0,
12
+ limits: [],
13
+ };
14
+ const graphEvidence = {
15
+ authority: "artifact-bytes",
16
+ state: "observed",
17
+ confidence: "exact",
18
+ artifact: {
19
+ available: true,
20
+ artifact_id: `art_${script.sha256}`,
21
+ sha256: script.sha256,
22
+ },
23
+ location: {
24
+ available: true,
25
+ value: { kind: "artifact-path", path: "renderer.js" },
26
+ },
27
+ extractor: {
28
+ name: "rea-javascript-application",
29
+ version: "1",
30
+ operation: "inventory-relevant-file",
31
+ executable_sha256: null,
32
+ },
33
+ coverage: completeCoverage,
34
+ limitations: [],
35
+ evidence_ids: [],
36
+ };
37
+ const asset = createJavaScriptApplicationNode({
38
+ kind: "javascript-asset",
39
+ identity: {
40
+ strategy: "content-digest",
41
+ stability: "global-exact",
42
+ sha256: script.sha256,
43
+ },
44
+ observations: [
45
+ {
46
+ label: "renderer.js",
47
+ properties: { path: "renderer.js", bytes: script.bytes },
48
+ evidence: graphEvidence,
49
+ },
50
+ ],
51
+ });
52
+ const graph = createJavaScriptApplicationGraph({
53
+ schema: "JavaScriptApplicationGraph",
54
+ schema_version: 1,
55
+ root_node_ids: [asset.node_id],
56
+ nodes: [asset],
57
+ edges: [],
58
+ coverage: completeCoverage,
59
+ limitations: [],
60
+ });
61
+ const staticEvidence = createEvidence({ path: inputPath, sha256: applicationSha256, format: "directory" }, {
62
+ id: "rea-javascript-application",
63
+ name: "REA JavaScript application analyzer",
64
+ version: "1",
65
+ }, {
66
+ predicateType: "rea.javascript-application-analysis/v1",
67
+ operation: "analyze_javascript_application",
68
+ parameters: { approved: true, source_map_read_approved: false },
69
+ result: {
70
+ schema_version: 1,
71
+ input_path: inputPath,
72
+ format: "directory",
73
+ root_artifact_sha256: applicationSha256,
74
+ inventory_manifest_id: `agm_${"2".repeat(64)}`,
75
+ inventory_graph_sha256: "3".repeat(64),
76
+ graph,
77
+ summary: {
78
+ browser_windows: 0,
79
+ explicit_web_preferences: 0,
80
+ preload_entrypoints: 0,
81
+ context_bridge_apis: 0,
82
+ exposed_api_members: 0,
83
+ ipc: {
84
+ operations: 0,
85
+ literal_channels: 0,
86
+ dynamic_channel_operations: 0,
87
+ renderer_transmissions: 0,
88
+ renderer_listeners: 0,
89
+ main_handlers: 0,
90
+ paired_renderer_transmissions: 0,
91
+ ambiguous_renderer_transmissions: 0,
92
+ unpaired_literal_renderer_transmissions: 0,
93
+ },
94
+ sender_validation_observations: 0,
95
+ utility_processes: 0,
96
+ resolved_utility_entrypoints: 0,
97
+ native_addon_bindings: 0,
98
+ resolved_native_addon_bindings: 0,
99
+ },
100
+ statistics: {
101
+ relevant_files: 1,
102
+ nested_asar_containers: 0,
103
+ text_files_selected: 1,
104
+ text_bytes_read: script.bytes,
105
+ omitted_text_files: 0,
106
+ limit_omitted_text_files: 0,
107
+ policy_filtered_text_files: 0,
108
+ invalid_utf8_files: 0,
109
+ parsed_javascript_files: 1,
110
+ visited_ast_nodes: 1,
111
+ findings: 0,
112
+ modules: 0,
113
+ parse_failures: 0,
114
+ truncated_scopes: 0,
115
+ },
116
+ limitations: [],
117
+ },
118
+ confidence: "derived",
119
+ authority: "shipped-artifact",
120
+ });
121
+ /** Minimal valid static application Evidence for graph workflow examples. */
122
+ export const JAVASCRIPT_APPLICATION_EVIDENCE_EXAMPLE = staticEvidence;
123
+ const runtimeEvidence = createEvidence(undefined, {
124
+ id: "rea-cdp-electron",
125
+ name: "REA Electron file-page CDP observation provider",
126
+ version: "1",
127
+ }, {
128
+ predicateType: "rea.electron-page-inspection/v1",
129
+ operation: "inspect_electron_page",
130
+ parameters: {
131
+ cdp_endpoint: "http://127.0.0.1:9223",
132
+ allowed_file_roots: [inputPath],
133
+ target_id: "example-target",
134
+ include_script_sources: true,
135
+ source_capture_approved: true,
136
+ },
137
+ result: {
138
+ schema_version: 1,
139
+ browser: {
140
+ product: "Electron/example",
141
+ protocol_version: "1.3",
142
+ revision: "example",
143
+ user_agent: "Electron example",
144
+ js_version: "1",
145
+ },
146
+ target: {
147
+ target_id: "example-target",
148
+ type: "page",
149
+ title: "Example",
150
+ file_path: `${inputPath}/index.html`,
151
+ attached: false,
152
+ },
153
+ capture_window: {
154
+ started_at: "2026-07-15T00:00:00.000Z",
155
+ ended_at: "2026-07-15T00:00:00.100Z",
156
+ observation_ms: 100,
157
+ },
158
+ completeness: browserCompleteness(),
159
+ frames: [],
160
+ dom: { total_nodes: 0, nodes: [] },
161
+ scripts: {
162
+ total: 1,
163
+ items: [
164
+ {
165
+ script_key: `electron_script_${"4".repeat(64)}`,
166
+ frame_id: null,
167
+ file_path: scriptPath,
168
+ cdp_hash: "example",
169
+ length: script.bytes,
170
+ is_module: true,
171
+ language: "JavaScript",
172
+ source: { included: true, artifact: script },
173
+ },
174
+ ],
175
+ },
176
+ resources: [],
177
+ workers: [],
178
+ limitations: ["Example passive capture."],
179
+ },
180
+ confidence: "observed",
181
+ authority: "external-service",
182
+ });
183
+ /** Compact valid Evidence pair used by the public reconciliation contract. */
184
+ export const JAVASCRIPT_RUNTIME_RECONCILIATION_EXAMPLE = {
185
+ static_layers: [{ role: "application", analysis: staticEvidence }],
186
+ runtime_observations: [runtimeEvidence],
187
+ };
188
+ function browserCompleteness() {
189
+ return {
190
+ status: "complete_within_window",
191
+ conditions: ["complete_within_window"],
192
+ policy_filtered_sections: [],
193
+ attach_limited_sections: [],
194
+ truncated_sections: [],
195
+ unavailable_sections: [],
196
+ excluded: [],
197
+ dropped_events: {
198
+ scripts: 0,
199
+ network_requests: 0,
200
+ console_events: 0,
201
+ websocket_connections: 0,
202
+ websocket_frames: 0,
203
+ webmcp_tools: 0,
204
+ timeline_events: 0,
205
+ total: 0,
206
+ },
207
+ };
208
+ }