rea-agents 6.2.0 → 6.3.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 (297) hide show
  1. package/README.md +18 -20
  2. package/bridge/hopper_bridge.py +2 -0
  3. package/dist/android/JadxProvider.js +8 -2
  4. package/dist/android/JadxSession.js +51 -9
  5. package/dist/application/BinaryTargetResolver.js +63 -17
  6. package/dist/application/BrowserScenarioEvidence.js +2 -2
  7. package/dist/application/ClientConfigurationDocument.js +28 -0
  8. package/dist/application/ClientRegistrationStatus.js +19 -6
  9. package/dist/application/DirectAnalysis.js +12 -6
  10. package/dist/application/DirectAnalysisCleanup.js +0 -1
  11. package/dist/application/DirectAnalysisStatus.js +2 -5
  12. package/dist/application/Doctor.js +25 -34
  13. package/dist/application/DoctorDiagnostics.js +1 -1
  14. package/dist/application/EvidenceBundleFiles.js +1 -1
  15. package/dist/application/InvestigationProviders.js +4 -4
  16. package/dist/application/JsonFiles.js +15 -15
  17. package/dist/application/LinuxHopper.js +2 -1
  18. package/dist/application/ReconstructionObligationCandidates.js +9 -2
  19. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -1
  20. package/dist/application/RegularFileRead.js +17 -0
  21. package/dist/application/Setup.js +18 -7
  22. package/dist/application/SetupClientConfiguration.js +18 -7
  23. package/dist/application/SetupHost.js +6 -4
  24. package/dist/application/SetupPlan.js +19 -15
  25. package/dist/application/SetupSkill.js +57 -8
  26. package/dist/application/SupportedClients.js +43 -0
  27. package/dist/application/Uninstall.js +18 -2
  28. package/dist/application/UpdateMaintenance.js +6 -2
  29. package/dist/application/Utf8JsonInput.js +64 -0
  30. package/dist/application/WebScriptExportService.js +13 -6
  31. package/dist/application/android/AndroidAnalysisService.js +1 -1
  32. package/dist/application/binary/AnalysisSnapshotCache.js +5 -4
  33. package/dist/application/binary/BinarySession.js +16 -0
  34. package/dist/application/binary/BinarySessionOpen.js +9 -1
  35. package/dist/application/javascript/ElectronActiveEvidence.js +2 -2
  36. package/dist/application/javascript/ElectronBoundaryAnalysis.js +2 -2
  37. package/dist/application/javascript/ElectronBoundaryGraphNative.js +5 -1
  38. package/dist/application/javascript/JavaScriptApplicationEvidence.js +1 -0
  39. package/dist/application/javascript/JavaScriptApplicationEvidenceGraph.js +107 -46
  40. package/dist/application/javascript/JavaScriptApplicationService.js +1 -0
  41. package/dist/application/javascript/JavaScriptApplicationWorkflowService.js +59 -45
  42. package/dist/application/javascript/JavaScriptArtifactAnalysis.js +0 -6
  43. package/dist/application/javascript/JavaScriptArtifactGraphBuilder.js +8 -18
  44. package/dist/application/javascript/JavaScriptArtifactGraphFindings.js +34 -26
  45. package/dist/application/javascript/JavaScriptArtifactPathResolution.js +44 -12
  46. package/dist/application/javascript/JavaScriptArtifactReconstruction.js +6 -3
  47. package/dist/application/javascript/JavaScriptArtifactReconstructionInput.js +1 -0
  48. package/dist/application/javascript/JavaScriptJsonModules.js +2 -2
  49. package/dist/application/javascript/JavaScriptModuleRelationships.js +5 -17
  50. package/dist/application/javascript/JavaScriptRuntimeReconciliationService.js +11 -27
  51. package/dist/application/javascript/JavaScriptSemanticGraphAsyncProjection.js +2 -2
  52. package/dist/application/javascript/JavaScriptSemanticGraphBuilder.js +8 -6
  53. package/dist/application/javascript/JavaScriptSemanticGraphChildProcessProjection.js +1 -1
  54. package/dist/application/javascript/JavaScriptSemanticGraphConstruction.js +7 -5
  55. package/dist/application/javascript/JavaScriptSemanticGraphDataProjection.js +1 -1
  56. package/dist/application/javascript/JavaScriptSemanticGraphEvidence.js +1 -1
  57. package/dist/application/javascript/JavaScriptSemanticGraphFingerprintProjection.js +2 -2
  58. package/dist/application/javascript/JavaScriptSemanticGraphFlowProjection.js +2 -2
  59. package/dist/application/javascript/JavaScriptSemanticGraphObjectProjection.js +1 -1
  60. package/dist/application/javascript/JavaScriptSemanticGraphProjection.js +4 -4
  61. package/dist/application/javascript/JavaScriptSemanticGraphResourceProjection.js +1 -1
  62. package/dist/application/javascript/JavaScriptSemanticGraphValueProjection.js +10 -7
  63. package/dist/application/javascript/JavaScriptSemanticTraceService.js +15 -10
  64. package/dist/application/native/NativeCallRoutes.js +2 -4
  65. package/dist/artifacts/ArtifactProvider.js +14 -16
  66. package/dist/artifacts/ArtifactProviderMetadata.js +1 -4
  67. package/dist/artifacts/AsarArtifactReader.js +81 -17
  68. package/dist/artifacts/DirectoryArtifactReader.js +2 -2
  69. package/dist/artifacts/NativeDmgArtifactReader.js +152 -67
  70. package/dist/artifacts/NativeDmgOwnership.js +109 -0
  71. package/dist/artifacts/apple/KeyedArchiveReader.js +54 -46
  72. package/dist/artifacts/apple/MachoLoadCommandReader.js +36 -6
  73. package/dist/artifacts/extraction/ArtifactExtraction.js +29 -11
  74. package/dist/artifacts/inventory/ArtifactGraphConstruction.js +7 -8
  75. package/dist/artifacts/inventory/classify.js +33 -14
  76. package/dist/artifacts/inventory/hashStableRootArtifact.js +37 -0
  77. package/dist/artifacts/inventory/scanCanonical.js +28 -22
  78. package/dist/artifacts/inventory/scanReader.js +7 -11
  79. package/dist/artifacts/javascript/JavaScriptArtifactFiles.js +65 -27
  80. package/dist/browser/CdpBrowserProvider.js +4 -3
  81. package/dist/browser/CdpCaptureStorageFingerprints.js +3 -3
  82. package/dist/browser/CdpElectronInspection.js +2 -2
  83. package/dist/browser/CdpElectronProvider.js +4 -3
  84. package/dist/browser/CdpElectronScripts.js +2 -2
  85. package/dist/browser/CdpWebMcpDiscovery.js +16 -13
  86. package/dist/browser/PlaywrightBrowserScenarioProvider.js +6 -6
  87. package/dist/browser/PlaywrightScenarioBrowser.js +145 -42
  88. package/dist/browser/PlaywrightScenarioSession.js +3 -11
  89. package/dist/browser/WebSourceMapFetcher.js +32 -6
  90. package/dist/browser/assets/ScenarioScriptCapture.js +8 -12
  91. package/dist/cli/coreAnalysisCommands.js +2 -2
  92. package/dist/cli/coreBinaryCommands.js +13 -9
  93. package/dist/cli/electronCommands.js +9 -10
  94. package/dist/cli/javascriptApplicationAnalysis.js +2 -12
  95. package/dist/cli/jsonOutput.js +3 -2
  96. package/dist/cli/streamedJsonOutput.js +83 -4
  97. package/dist/cli/utilityCommands.js +2 -4
  98. package/dist/cli.js +5 -2
  99. package/dist/cliJsonFile.js +179 -0
  100. package/dist/cliJsonInput.js +47 -34
  101. package/dist/cliObservationOptions.js +4 -0
  102. package/dist/composition/auxiliaryAnalysisProviders.js +5 -4
  103. package/dist/composition/browserScenario.js +2 -2
  104. package/dist/composition/directAnalysis.js +2 -3
  105. package/dist/contracts/artifactComparisonExample.js +5 -5
  106. package/dist/contracts/errorSchemas.js +3 -1
  107. package/dist/contracts/functionComparisonExample.js +8 -0
  108. package/dist/contracts/inputSchemaPresentation.js +94 -3
  109. package/dist/contracts/javascript/electronToolContracts.js +2 -1
  110. package/dist/contracts/javascript/javascriptApplicationWorkflowExamples.js +3 -2
  111. package/dist/contracts/javascript/javascriptExportShapeComparisonExample.js +6 -3
  112. package/dist/contracts/javascript/javascriptRuntimeReconciliationExample.js +8 -7
  113. package/dist/contracts/managed/managedToolContracts.js +3 -2
  114. package/dist/contracts/mobileApplicationGraphExamples.js +5 -5
  115. package/dist/contracts/native/nativeToolContracts.js +1 -1
  116. package/dist/contracts/sessionLifecycleInputs.js +4 -3
  117. package/dist/contracts/sessionStatusContract.js +3 -2
  118. package/dist/contracts/sessionToolContracts.js +3 -2
  119. package/dist/contracts/sessionToolSchemas.js +3 -2
  120. package/dist/contracts/toolOutputSchemaGroups.js +2 -2
  121. package/dist/contracts/toolOutputSchemaPrimitives.js +2 -5
  122. package/dist/domain/analysisErrorBase.js +5 -0
  123. package/dist/domain/analysisErrorPresentation.js +4 -2
  124. package/dist/domain/analysisSnapshot.js +3 -1
  125. package/dist/domain/analysisView/analysisView.js +1 -3
  126. package/dist/domain/android/androidPartialObservation.js +36 -0
  127. package/dist/domain/apple/dylibResolution.js +1 -1
  128. package/dist/domain/artifactComparison.js +4 -4
  129. package/dist/domain/artifactGraph.js +1 -1
  130. package/dist/domain/artifactIdentity.js +8 -8
  131. package/dist/domain/artifactInspection.js +8 -8
  132. package/dist/domain/artifactInventoryEvidence.js +5 -5
  133. package/dist/domain/browserCompleteness.js +3 -2
  134. package/dist/domain/browserScenarioCaptureValues.js +2 -2
  135. package/dist/domain/browserScenarioNormalization.js +3 -3
  136. package/dist/domain/browserScenarioValues.js +3 -2
  137. package/dist/domain/callPath.js +8 -10
  138. package/dist/domain/canonicalDigest.js +7 -1
  139. package/dist/domain/canonicalOrdering.js +1 -13
  140. package/dist/domain/changedBehavior.js +2 -3
  141. package/dist/domain/comparisonSemantics.js +0 -5
  142. package/dist/domain/digests.js +0 -3
  143. package/dist/domain/evidence.js +10 -5
  144. package/dist/domain/evidenceBundle.js +51 -33
  145. package/dist/domain/firmware/firmwareAnalysis.js +4 -3
  146. package/dist/domain/functionComparison.js +2 -1
  147. package/dist/domain/functionComparisonNormalization.js +4 -3
  148. package/dist/domain/functionComparisonResults.js +2 -2
  149. package/dist/domain/functionDossierEvidence.js +2 -1
  150. package/dist/domain/hopperValues.js +11 -15
  151. package/dist/domain/javascript/electronActiveObservation.js +4 -3
  152. package/dist/domain/javascript/electronStaticAnalysisBrowser.js +2 -2
  153. package/dist/domain/javascript/electronStaticAnalysisIpc.js +9 -1
  154. package/dist/domain/javascript/electronStaticAnalysisNative.js +5 -3
  155. package/dist/domain/javascript/electronStaticAnalysisValues.js +8 -4
  156. package/dist/domain/javascript/javascriptApplicationAnalysis.js +3 -1
  157. package/dist/domain/javascript/javascriptApplicationChangeGraph.js +12 -8
  158. package/dist/domain/javascript/javascriptApplicationEvidenceSchemas.js +4 -0
  159. package/dist/domain/javascript/javascriptApplicationGraph.js +15 -13
  160. package/dist/domain/javascript/javascriptApplicationVersionComparison.js +4 -4
  161. package/dist/domain/javascript/javascriptApplicationVersionComparisonSchemas.js +37 -22
  162. package/dist/domain/javascript/javascriptApplicationVersionItems.js +45 -34
  163. package/dist/domain/javascript/javascriptApplicationVersionKeys.js +7 -7
  164. package/dist/domain/javascript/javascriptAstFingerprint.js +2 -2
  165. package/dist/domain/javascript/javascriptAstValues.js +22 -0
  166. package/dist/domain/javascript/javascriptExportShapeComparison.js +3 -2
  167. package/dist/domain/javascript/javascriptExportShapeComparisonSchemas.js +31 -23
  168. package/dist/domain/javascript/javascriptExportShapeSelection.js +2 -2
  169. package/dist/domain/javascript/javascriptExportShapeVariants.js +3 -2
  170. package/dist/domain/javascript/javascriptFeatureSeed.js +5 -3
  171. package/dist/domain/javascript/javascriptFeatureTrace.js +7 -6
  172. package/dist/domain/javascript/javascriptFeatureTraceSchemas.js +17 -9
  173. package/dist/domain/javascript/javascriptFeatureTraversal.js +4 -4
  174. package/dist/domain/javascript/javascriptNativeHandoff.js +6 -6
  175. package/dist/domain/javascript/javascriptRuntimeObservation.js +8 -5
  176. package/dist/domain/javascript/javascriptRuntimeReconciliation.js +12 -6
  177. package/dist/domain/javascript/javascriptRuntimeReconciliationActive.js +9 -8
  178. package/dist/domain/javascript/javascriptRuntimeReconciliationCaptureParsing.js +212 -0
  179. package/dist/domain/javascript/javascriptRuntimeReconciliationGraph.js +5 -4
  180. package/dist/domain/javascript/javascriptRuntimeReconciliationInputValidation.js +28 -0
  181. package/dist/domain/javascript/javascriptRuntimeReconciliationMatching.js +5 -5
  182. package/dist/domain/javascript/javascriptRuntimeReconciliationParsing.js +12 -223
  183. package/dist/domain/javascript/javascriptRuntimeReconciliationResult.js +2 -2
  184. package/dist/domain/javascript/javascriptRuntimeReconciliationRuntime.js +15 -4
  185. package/dist/domain/javascript/javascriptRuntimeReconciliationSchemas.js +2 -2
  186. package/dist/domain/javascript/javascriptRuntimeStaticCandidates.js +7 -6
  187. package/dist/domain/javascript/javascriptSemanticAnalysis.js +200 -8
  188. package/dist/domain/javascript/javascriptSemanticCallResolution.js +9 -7
  189. package/dist/domain/javascript/javascriptSemanticChildProcesses.js +2 -2
  190. package/dist/domain/javascript/javascriptSemanticCoverage.js +20 -0
  191. package/dist/domain/javascript/javascriptSemanticDataEffectHelpers.js +7 -9
  192. package/dist/domain/javascript/javascriptSemanticDataEffects.js +4 -11
  193. package/dist/domain/javascript/javascriptSemanticFingerprints.js +2 -2
  194. package/dist/domain/javascript/javascriptSemanticGraph.js +142 -35
  195. package/dist/domain/javascript/javascriptSemanticGraphSchemas.js +19 -1
  196. package/dist/domain/javascript/javascriptSemanticIr.js +0 -4
  197. package/dist/domain/javascript/javascriptSemanticIterationSources.js +106 -0
  198. package/dist/domain/javascript/javascriptSemanticMemberMutations.js +497 -113
  199. package/dist/domain/javascript/javascriptSemanticMutationInitializers.js +190 -0
  200. package/dist/domain/javascript/javascriptSemanticMutationValues.js +41 -27
  201. package/dist/domain/javascript/javascriptSemanticObjects.js +2 -6
  202. package/dist/domain/javascript/javascriptSemanticPrimitives.js +7 -2
  203. package/dist/domain/javascript/javascriptSemanticProjection.js +20 -14
  204. package/dist/domain/javascript/javascriptSemanticPromises.js +15 -21
  205. package/dist/domain/javascript/javascriptSemanticPropertyPaths.js +23 -0
  206. package/dist/domain/javascript/javascriptSemanticProvenance.js +3 -3
  207. package/dist/domain/javascript/javascriptSemanticQuery.js +8 -2
  208. package/dist/domain/javascript/javascriptSemanticQueryIdentity.js +3 -2
  209. package/dist/domain/javascript/javascriptSemanticQuerySchemas.js +8 -9
  210. package/dist/domain/javascript/javascriptSemanticRequireOrigin.js +16 -10
  211. package/dist/domain/javascript/javascriptSemanticReturns.js +23 -27
  212. package/dist/domain/javascript/javascriptSemanticTraversal.js +6 -1
  213. package/dist/domain/javascript/javascriptSemanticValues.js +135 -24
  214. package/dist/domain/javascript/javascriptSourceMapPaths.js +11 -1
  215. package/dist/domain/javascript/javascriptSourceParser.js +34 -9
  216. package/dist/domain/javascript/javascriptStaticAnalysisBundler.js +5 -6
  217. package/dist/domain/javascript/javascriptStaticAnalysisHelpers.js +26 -15
  218. package/dist/domain/javascript/sourceToBundleComparison.js +7 -5
  219. package/dist/domain/javascript/sourceToBundleSignals.js +7 -7
  220. package/dist/domain/jsonSerialization.js +109 -55
  221. package/dist/domain/jsonShape.js +46 -19
  222. package/dist/domain/localPath.js +10 -4
  223. package/dist/domain/managed/managedApplicationGraph.js +10 -6
  224. package/dist/domain/managed/managedApplicationGraphNodes.js +82 -57
  225. package/dist/domain/managed/managedMemberComparisonMatch.js +6 -7
  226. package/dist/domain/native/nativeCallObservation.js +2 -4
  227. package/dist/domain/native/nativeValueFlow.js +5 -11
  228. package/dist/domain/native/objcSwiftMetadata.js +15 -17
  229. package/dist/domain/process/processCapture.js +11 -10
  230. package/dist/domain/process/processCaptureCoverage.js +8 -5
  231. package/dist/domain/process/processCaptureExample.js +43 -0
  232. package/dist/domain/process/processCaptureValidation.js +4 -3
  233. package/dist/domain/process/processComparison.js +0 -23
  234. package/dist/domain/process/processScenario.js +3 -3
  235. package/dist/domain/process/processTraceEvaluation.js +4 -4
  236. package/dist/domain/process/processTraceSpecification.js +1 -3
  237. package/dist/domain/providerCleanupError.js +6 -2
  238. package/dist/domain/reconstructionCoverage.js +2 -1
  239. package/dist/domain/reconstructionUnknowns.js +4 -3
  240. package/dist/domain/reconstructionVerification.js +3 -2
  241. package/dist/domain/referenceSourceGraph.js +7 -7
  242. package/dist/domain/referenceSourceImportParsing.js +34 -45
  243. package/dist/domain/residualUnknown.js +3 -2
  244. package/dist/domain/staticRuntimeCorrelation.js +2 -1
  245. package/dist/domain/swiftSymbolClassification.js +6 -1
  246. package/dist/domain/symbolAnalysis.js +17 -2
  247. package/dist/domain/unicodeCodePointOrder.js +6 -0
  248. package/dist/domain/webBundleAnalyzerInspection.js +9 -1
  249. package/dist/domain/webCaptureDiff.js +71 -29
  250. package/dist/domain/webCaptureDiffSchemas.js +2 -8
  251. package/dist/domain/webInventory.js +3 -2
  252. package/dist/domain/webMcpDiscovery.js +4 -3
  253. package/dist/domain/webScriptExport.js +1 -1
  254. package/dist/dotnet/ManagedMemberInstructionDecoder.js +1 -2
  255. package/dist/dotnet/ManagedStaticProvider.js +10 -7
  256. package/dist/dotnet/ManagedStaticProviderMetadata.js +1 -4
  257. package/dist/filesystem/RegularFile.js +41 -0
  258. package/dist/generatedPackageMetadata.js +1 -1
  259. package/dist/ghidra/GhidraClient.js +14 -4
  260. package/dist/ghidra/GhidraInstallation.js +111 -10
  261. package/dist/ghidra/GhidraLauncher.js +43 -19
  262. package/dist/hopper/HopperCleanup.js +1 -1
  263. package/dist/ida/IdaOperationRunner.js +2 -0
  264. package/dist/ida/IdaSessionClient.js +4 -2
  265. package/dist/inspector/JavaScriptRuntimeScope.js +9 -5
  266. package/dist/inspector/V8InspectorCaptureProjection.js +46 -13
  267. package/dist/inspector/V8InspectorProvider.js +60 -8
  268. package/dist/main/shutdown.js +76 -32
  269. package/dist/main/transport.js +1 -1
  270. package/dist/native/AppleObjcDispatchFacets.js +3 -3
  271. package/dist/native/AppleObjcProperties.js +17 -7
  272. package/dist/native/LldbCallTracer.js +241 -75
  273. package/dist/native/NativeMacOSProvider.js +10 -5
  274. package/dist/native/NativeMacOSProviderMetadata.js +1 -2
  275. package/dist/process/ProcessOwnershipObservation.js +9 -13
  276. package/dist/process/capture/FilesystemSnapshot.js +88 -18
  277. package/dist/process/capture/ProcessCaptureLifecycle.js +13 -27
  278. package/dist/process/capture/ProcessFilesystemEffects.js +19 -4
  279. package/dist/process/capture/ProcessHarness.js +8 -21
  280. package/dist/server/analysisAdmission.js +8 -0
  281. package/dist/server/createServer.js +22 -23
  282. package/dist/server/registerApplicationTools/compareExportShapes.js +2 -1
  283. package/dist/server/registerApplicationTools/helpers.js +3 -2
  284. package/dist/server/registerArtifactTools.js +2 -2
  285. package/dist/server/registerCloseLifecycleTool.js +6 -4
  286. package/dist/server/registerEnhancedTools.js +78 -73
  287. package/dist/server/registerEvidenceTools.js +54 -46
  288. package/dist/server/registerManagedTools.js +7 -4
  289. package/dist/server/registerOfficialTools.js +31 -25
  290. package/dist/server/registerSessionTools.js +9 -3
  291. package/native/windows/build/manifest.json +1 -1
  292. package/package.json +6 -3
  293. package/skills/reverse-engineer-anything/SKILL.md +5 -5
  294. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +9 -0
  295. package/dist/artifacts/inventory/policy.js +0 -2
  296. package/dist/domain/managed/managedApplicationGraphNodeCoverage.js +0 -6
  297. package/dist/server/registerNativeTools.js +0 -6
@@ -1,4 +1,5 @@
1
- import { compareCodePoints, uniqueSorted } from "../canonicalOrdering.js";
1
+ import { uniqueSorted } from "../canonicalOrdering.js";
2
+ import { compareUnicodeCodePoints } from "../unicodeCodePointOrder.js";
2
3
  import { canonicalExportShapeValue, digestExportShapeValue, } from "./javascriptExportShapeComparisonIdentity.js";
3
4
  import { javaScriptExportShapeComparisonResultSchema, } from "./javascriptExportShapeComparisonSchemas.js";
4
5
  import { retainJavaScriptExportShapes, selectJavaScriptExport, } from "./javascriptExportShapeSelection.js";
@@ -65,7 +66,7 @@ const sortChanges = (changes) => changes
65
66
  change_id: change.change_id,
66
67
  }),
67
68
  }))
68
- .sort((left, right) => compareCodePoints(left.sortKey, right.sortKey) ||
69
+ .sort((left, right) => compareUnicodeCodePoints(left.sortKey, right.sortKey) ||
69
70
  left.index - right.index)
70
71
  .map(({ change }) => change);
71
72
  const comparisonCoverage = (context) => {
@@ -5,7 +5,6 @@ const evidenceIdSchema = prefixedDigestSchema("ev");
5
5
  const graphIdSchema = prefixedDigestSchema("jag");
6
6
  const nodeIdSchema = prefixedDigestSchema("jag_node");
7
7
  const textSchema = z.string().min(1);
8
- const selectorTextSchema = textSchema;
9
8
  const semanticPrimitiveSchema = z.union([
10
9
  z.string(),
11
10
  z.number().finite(),
@@ -49,24 +48,34 @@ const sourceRangeSchema = z
49
48
  message: "Source range end must not precede its start",
50
49
  });
51
50
  });
52
- /** Two authenticated application graphs and exact export selectors. */
53
- export const compareJavaScriptExportShapesInputSchema = z
54
- .strictObject({
55
- left: evidenceSchema,
56
- right: evidenceSchema,
57
- left_module_path: selectorTextSchema,
58
- left_export_name: selectorTextSchema,
59
- right_module_path: selectorTextSchema,
60
- right_export_name: selectorTextSchema,
61
- })
62
- .superRefine((input, context) => {
51
+ /** Check that export-shape comparisons bind distinct source Evidence. */
52
+ const validateJavaScriptExportShapeIdentities = (input, context) => {
63
53
  if (input.left.evidence_id === input.right.evidence_id)
64
54
  context.addIssue({
65
55
  code: "custom",
66
56
  path: ["right"],
67
57
  message: "JavaScript export shape Evidence must be distinct",
68
58
  });
69
- });
59
+ };
60
+ const evidenceIdentitySchema = z.object({ evidence_id: evidenceIdSchema });
61
+ /** Validate export-shape identities without capturing complete source graphs. */
62
+ export const javaScriptExportShapeIdentitiesSchema = z
63
+ .object({
64
+ left: evidenceIdentitySchema,
65
+ right: evidenceIdentitySchema,
66
+ })
67
+ .superRefine(validateJavaScriptExportShapeIdentities);
68
+ /** Two authenticated application graphs and exact export selectors. */
69
+ export const compareJavaScriptExportShapesInputSchema = z
70
+ .strictObject({
71
+ left: evidenceSchema,
72
+ right: evidenceSchema,
73
+ left_module_path: textSchema,
74
+ left_export_name: textSchema,
75
+ right_module_path: textSchema,
76
+ right_export_name: textSchema,
77
+ })
78
+ .superRefine(validateJavaScriptExportShapeIdentities);
70
79
  const projectedReturnFieldShape = {
71
80
  path: jsonPointerSchema,
72
81
  presence: z.enum(["present", "absent", "unknown-coverage"]),
@@ -138,8 +147,8 @@ const projectedReturnShapeSchema = z
138
147
  export const projectedExportReturnShapesSchema = z
139
148
  .strictObject({
140
149
  semantic_role: z.literal("export-return-shapes"),
141
- module_path: selectorTextSchema,
142
- exported_name: selectorTextSchema,
150
+ module_path: textSchema,
151
+ exported_name: textSchema,
143
152
  callable_id: textSchema,
144
153
  callable_kind: z.enum(["function", "class", "method"]),
145
154
  static_return_shapes: z.array(projectedReturnShapeSchema),
@@ -163,16 +172,16 @@ export const projectedExportReturnShapesSchema = z
163
172
  });
164
173
  const exportCandidateSchema = z.strictObject({
165
174
  node_id: nodeIdSchema,
166
- module_path: selectorTextSchema,
167
- export_name: selectorTextSchema,
175
+ module_path: textSchema,
176
+ export_name: textSchema,
168
177
  matches_requested_module: z.boolean(),
169
178
  matches_requested_export: z.boolean(),
170
179
  });
171
180
  const selectorResultShape = {
172
181
  evidence_id: evidenceIdSchema,
173
182
  graph_id: graphIdSchema,
174
- requested_module_path: selectorTextSchema,
175
- requested_export_name: selectorTextSchema,
183
+ requested_module_path: textSchema,
184
+ requested_export_name: textSchema,
176
185
  candidates: z.array(exportCandidateSchema),
177
186
  omitted_candidates: z.number().int().min(0),
178
187
  };
@@ -217,7 +226,8 @@ const propertyPresenceSchema = z.enum([
217
226
  "absent",
218
227
  "unknown-coverage",
219
228
  ]);
220
- const comparisonChangeSchema = z.strictObject({
229
+ /** One change row; presence is required even when values stay unknown. */
230
+ export const javaScriptExportShapeComparisonChangeSchema = z.strictObject({
221
231
  change_id: prefixedDigestSchema("jesc_change"),
222
232
  status: z.enum(["added", "removed", "changed", "unknown"]),
223
233
  path: jsonPointerSchema,
@@ -233,8 +243,6 @@ const comparisonChangeSchema = z.strictObject({
233
243
  evidence_links: z.array(evidenceIdSchema).length(2),
234
244
  limitations: z.array(textSchema),
235
245
  });
236
- /** One change row; presence is required even when values stay unknown. */
237
- export const javaScriptExportShapeComparisonChangeSchema = comparisonChangeSchema;
238
246
  const inventoryPropertyCoverageSchema = z.strictObject({
239
247
  path: jsonPointerSchema,
240
248
  status: z.enum(["complete", "partial"]),
@@ -260,7 +268,7 @@ export const javaScriptExportShapeComparisonResultSchema = z.strictObject({
260
268
  changed: z.number().int().min(0),
261
269
  unknown: z.number().int().min(0),
262
270
  }),
263
- changes: z.array(comparisonChangeSchema),
271
+ changes: z.array(javaScriptExportShapeComparisonChangeSchema),
264
272
  coverage: z.strictObject({
265
273
  status: z.enum(["complete-within-inputs", "partial", "truncated"]),
266
274
  left_graph_status: z.enum([
@@ -1,5 +1,5 @@
1
1
  import { projectedExportReturnShapesSchema, } from "./javascriptExportShapeComparisonSchemas.js";
2
- import { compareCodePoints } from "../canonicalOrdering.js";
2
+ import { compareUnicodeCodePoints } from "../unicodeCodePointOrder.js";
3
3
  /** Select one exact trusted export and its exact static return-shape observation. */
4
4
  export const selectJavaScriptExport = (side) => {
5
5
  const candidates = exportCandidates(side.graph);
@@ -90,7 +90,7 @@ const exportCandidates = (graph) => {
90
90
  });
91
91
  }
92
92
  }
93
- return [...candidates.values()].sort((left, right) => compareCodePoints(candidateKey(left), candidateKey(right)));
93
+ return [...candidates.values()].sort((left, right) => compareUnicodeCodePoints(candidateKey(left), candidateKey(right)));
94
94
  };
95
95
  const candidateKey = (candidate) => `${candidate.modulePath}\0${candidate.exportName}\0${candidate.node.node_id}`;
96
96
  const returnShapeFor = (node, side) => {
@@ -1,5 +1,6 @@
1
1
  import { canonicalExportShapeValue, digestExportShapeValue, } from "./javascriptExportShapeComparisonIdentity.js";
2
- import { compareCodePoints, uniqueSorted } from "../canonicalOrdering.js";
2
+ import { uniqueSorted } from "../canonicalOrdering.js";
3
+ import { compareUnicodeCodePoints } from "../unicodeCodePointOrder.js";
3
4
  const UNKNOWN_COVERAGE_PRESENCE = {
4
5
  left: "unknown-coverage",
5
6
  right: "unknown-coverage",
@@ -139,7 +140,7 @@ const addTarget = (map, source, target) => {
139
140
  map.set(source, values);
140
141
  };
141
142
  const indexesNotIn = (shapes, paired) => shapes.map((_, index) => index).filter((index) => !paired.has(index));
142
- const compareDiscriminants = (left, right) => compareCodePoints(canonicalExportShapeValue(left), canonicalExportShapeValue(right));
143
+ const compareDiscriminants = (left, right) => compareUnicodeCodePoints(canonicalExportShapeValue(left), canonicalExportShapeValue(right));
143
144
  const selectionUnknownChange = (input) => changeWithId({
144
145
  status: "unknown",
145
146
  path: "",
@@ -1,9 +1,9 @@
1
- import { compareCodePoints } from "../canonicalOrdering.js";
1
+ import { compareUnicodeCodePoints } from "../unicodeCodePointOrder.js";
2
2
  import { featureSeedMatchMode, } from "./javascriptFeatureTraceSchemas.js";
3
3
  /** Locate every graph node matching a typed literal seed without regex execution. */
4
4
  export const findApplicationFeatureSeeds = (nodes, seed) => nodes
5
5
  .flatMap((node) => seedMatch(node, seed))
6
- .sort((left, right) => compareCodePoints(`${left.node_id}\0${left.basis}\0${left.field}`, `${right.node_id}\0${right.basis}\0${right.field}`));
6
+ .sort((left, right) => compareUnicodeCodePoints(`${left.node_id}\0${left.basis}\0${left.field}`, `${right.node_id}\0${right.basis}\0${right.field}`));
7
7
  const seedMatch = (node, seed) => {
8
8
  if (seed.kind === "node-id")
9
9
  return node.node_id === seed.value
@@ -171,7 +171,9 @@ const propertyFields = (value, prefix) => {
171
171
  continue;
172
172
  }
173
173
  if (current !== null && typeof current === "object") {
174
- for (const key of Object.keys(current).sort(compareCodePoints).reverse())
174
+ for (const key of Object.keys(current)
175
+ .sort(compareUnicodeCodePoints)
176
+ .reverse())
175
177
  pending.push({
176
178
  current: current[key] ?? null,
177
179
  path: `${path}.${key}`,
@@ -1,5 +1,6 @@
1
- import { canonicalDigest } from "../comparisonSemantics.js";
2
- import { compareCodePoints, uniqueSorted } from "../canonicalOrdering.js";
1
+ import { digestCanonicalValue } from "../canonicalDigest.js";
2
+ import { uniqueSorted } from "../canonicalOrdering.js";
3
+ import { compareUnicodeCodePoints } from "../unicodeCodePointOrder.js";
3
4
  import { createJavaScriptApplicationGraph, } from "./javascriptApplicationGraph.js";
4
5
  import { applicationFeatureTraceResultSchema, } from "./javascriptFeatureTraceSchemas.js";
5
6
  import { findApplicationFeatureSeeds, } from "./javascriptFeatureSeed.js";
@@ -46,7 +47,7 @@ export const traceApplicationFeature = (input) => {
46
47
  };
47
48
  return applicationFeatureTraceResultSchema.parse({
48
49
  ...semantic,
49
- trace_id: `jatr_${canonicalDigest(semantic, "Feature trace")}`,
50
+ trace_id: `jatr_${digestCanonicalValue(semantic, "Feature trace")}`,
50
51
  });
51
52
  };
52
53
  const noMatchResult = (input) => {
@@ -83,7 +84,7 @@ const noMatchResult = (input) => {
83
84
  };
84
85
  return applicationFeatureTraceResultSchema.parse({
85
86
  ...semantic,
86
- trace_id: `jatr_${canonicalDigest(semantic, "Feature trace")}`,
87
+ trace_id: `jatr_${digestCanonicalValue(semantic, "Feature trace")}`,
87
88
  });
88
89
  };
89
90
  const traceGraph = (input, seedMatches, traversal) => {
@@ -112,7 +113,7 @@ const terminalPaths = (traversal, seeds) => {
112
113
  (!seedIds.has(node.node_id) || traversal.nodes.length === 1))
113
114
  .map((node) => pathTo(node, traversal.predecessors, edgeById))
114
115
  .filter((path) => path !== null)
115
- .sort((left, right) => compareCodePoints(left.path_id, right.path_id));
116
+ .sort((left, right) => compareUnicodeCodePoints(left.path_id, right.path_id));
116
117
  };
117
118
  const pathTo = (node, predecessors, edgeById) => {
118
119
  const nodeIds = [node.node_id];
@@ -144,7 +145,7 @@ const pathTo = (node, predecessors, edgeById) => {
144
145
  };
145
146
  return {
146
147
  ...semantic,
147
- path_id: `jatp_${canonicalDigest(semantic, "Feature trace")}`,
148
+ path_id: `jatp_${digestCanonicalValue(semantic, "Feature trace")}`,
148
149
  };
149
150
  };
150
151
  const isTerminal = (node) => ["endpoint", "storage", "native-addon", "native-export", "unknown"].includes(node.kind);
@@ -36,6 +36,22 @@ const applicationFeatureSeedSchema = z.union([
36
36
  case_sensitive: z.boolean().default(false),
37
37
  }),
38
38
  ]);
39
+ /** Check unique native identities before projecting an application trace. */
40
+ const validateApplicationTraceIdentities = (input, context) => {
41
+ const ids = input.native_observations.map(({ evidence_id: id }) => id);
42
+ if (new Set(ids).size !== ids.length)
43
+ context.addIssue({
44
+ code: "custom",
45
+ path: ["native_observations"],
46
+ message: "Native observations must be unique",
47
+ });
48
+ };
49
+ /** Validate native trace identities without capturing their complete Evidence. */
50
+ export const applicationTraceIdentitiesSchema = z
51
+ .object({
52
+ native_observations: z.array(z.object({ evidence_id: evidenceIdSchema })),
53
+ })
54
+ .superRefine(validateApplicationTraceIdentities);
39
55
  /** Evidence-backed application graph and feature seed. */
40
56
  export const traceApplicationFeatureInputSchema = z
41
57
  .strictObject({
@@ -44,15 +60,7 @@ export const traceApplicationFeatureInputSchema = z
44
60
  seed: applicationFeatureSeedSchema,
45
61
  direction: z.enum(["outgoing", "incoming", "both"]).default("both"),
46
62
  })
47
- .superRefine((input, context) => {
48
- const ids = input.native_observations.map(({ evidence_id: id }) => id);
49
- if (new Set(ids).size !== ids.length)
50
- context.addIssue({
51
- code: "custom",
52
- path: ["native_observations"],
53
- message: "Native observations must be unique",
54
- });
55
- });
63
+ .superRefine(validateApplicationTraceIdentities);
56
64
  const seedMatchSchema = z.strictObject({
57
65
  node_id: nodeIdSchema,
58
66
  kind: z.string().min(1),
@@ -1,4 +1,4 @@
1
- import { compareCodePoints } from "../canonicalOrdering.js";
1
+ import { compareUnicodeCodePoints } from "../unicodeCodePointOrder.js";
2
2
  /** Traverse a JAG without treating edge inference as observed reachability. */
3
3
  export const traverseApplicationFeature = (graph, seedNodeIds, direction) => {
4
4
  const nodeById = new Map(graph.nodes.map((node) => [node.node_id, node]));
@@ -29,8 +29,8 @@ export const traverseApplicationFeature = (graph, seedNodeIds, direction) => {
29
29
  nodes: [...visited]
30
30
  .map((nodeId) => nodeById.get(nodeId))
31
31
  .filter((node) => node !== undefined)
32
- .sort((left, right) => compareCodePoints(left.node_id, right.node_id)),
33
- edges: [...retainedEdges.values()].sort((left, right) => compareCodePoints(left.edge_id, right.edge_id)),
32
+ .sort((left, right) => compareUnicodeCodePoints(left.node_id, right.node_id)),
33
+ edges: [...retainedEdges.values()].sort((left, right) => compareUnicodeCodePoints(left.edge_id, right.edge_id)),
34
34
  predecessors,
35
35
  };
36
36
  };
@@ -49,7 +49,7 @@ const buildAdjacency = (edges, direction) => {
49
49
  });
50
50
  }
51
51
  for (const entries of adjacency.values())
52
- entries.sort((left, right) => compareCodePoints(`${left.edge.edge_id}\0${left.nextNodeId}`, `${right.edge.edge_id}\0${right.nextNodeId}`));
52
+ entries.sort((left, right) => compareUnicodeCodePoints(`${left.edge.edge_id}\0${left.nextNodeId}`, `${right.edge.edge_id}\0${right.nextNodeId}`));
53
53
  return adjacency;
54
54
  };
55
55
  const addAdjacency = (adjacency, nodeId, entry) => {
@@ -1,4 +1,4 @@
1
- import { compareCodePoints } from "../canonicalOrdering.js";
1
+ import { compareUnicodeCodePoints } from "../unicodeCodePointOrder.js";
2
2
  import {} from "./javascriptApplicationGraphSchemas.js";
3
3
  /** Build provider-neutral addon targets and link exact-subject native Evidence. */
4
4
  export const buildJavaScriptNativeHandoffs = (nodes, edges, nativeEvidence) => {
@@ -24,7 +24,7 @@ export const buildJavaScriptNativeHandoffs = (nodes, edges, nativeEvidence) => {
24
24
  providers: uniqueProviders(linked),
25
25
  evidence_ids: linked
26
26
  .map(({ evidence_id: id }) => id)
27
- .sort(compareCodePoints),
27
+ .sort(compareUnicodeCodePoints),
28
28
  recommended_tools: [
29
29
  "open_binary",
30
30
  "binary_overview",
@@ -35,7 +35,7 @@ export const buildJavaScriptNativeHandoffs = (nodes, edges, nativeEvidence) => {
35
35
  },
36
36
  ];
37
37
  })
38
- .sort((left, right) => compareCodePoints(left.native_node_id, right.native_node_id));
38
+ .sort((left, right) => compareUnicodeCodePoints(left.native_node_id, right.native_node_id));
39
39
  };
40
40
  const artifactDigest = (node) => {
41
41
  if (node.identity.strategy === "content-digest")
@@ -65,7 +65,7 @@ const nativeExportNodes = (addon, edges, nodeById) => {
65
65
  return [...new Set(ids)]
66
66
  .map((id) => nodeById.get(id))
67
67
  .filter((node) => node?.kind === "native-export")
68
- .sort((left, right) => compareCodePoints(left.node_id, right.node_id));
68
+ .sort((left, right) => compareUnicodeCodePoints(left.node_id, right.node_id));
69
69
  };
70
70
  const requestedExports = (nodes) => {
71
71
  const values = nodes.flatMap((node) => node.observations.flatMap((observation) => [
@@ -73,7 +73,7 @@ const requestedExports = (nodes) => {
73
73
  ...stringArray(observation.properties.requested_members),
74
74
  ...stringArray(observation.properties.members),
75
75
  ]));
76
- return [...new Set(values)].sort(compareCodePoints);
76
+ return [...new Set(values)].sort(compareUnicodeCodePoints);
77
77
  };
78
78
  const stringArray = (value) => Array.isArray(value)
79
79
  ? value.filter((item) => typeof item === "string")
@@ -83,4 +83,4 @@ const uniqueProviders = (evidence) => [
83
83
  `${provider.id}\0${provider.name}\0${provider.version ?? ""}`,
84
84
  provider,
85
85
  ])).values(),
86
- ].sort((left, right) => compareCodePoints(`${left.id}\0${left.name}\0${left.version ?? ""}`, `${right.id}\0${right.name}\0${right.version ?? ""}`));
86
+ ].sort((left, right) => compareUnicodeCodePoints(`${left.id}\0${left.name}\0${left.version ?? ""}`, `${right.id}\0${right.name}\0${right.version ?? ""}`));
@@ -16,7 +16,6 @@ export const javascriptRuntimeKindSchema = z.enum([
16
16
  "electron-renderer",
17
17
  ]);
18
18
  const observedJavaScriptRuntimeKindSchema = javascriptRuntimeKindSchema.or(z.literal("unknown"));
19
- /** Input for one bounded, attach-only V8 Inspector observation. */
20
19
  /** Input for one passive attach-only V8 Inspector observation. */
21
20
  export const observeJavaScriptRuntimeInputSchema = z.strictObject({
22
21
  ...runtimeEndpoint,
@@ -33,7 +32,6 @@ export const javascriptRuntimeLocationSchema = z.discriminatedUnion("kind", [
33
32
  z.strictObject({
34
33
  kind: z.literal("file"),
35
34
  file_path: z.string().min(1),
36
- authority: z.literal("scope-fallback").optional(),
37
35
  }),
38
36
  z.strictObject({
39
37
  kind: z.literal("url"),
@@ -48,8 +46,13 @@ export const javascriptRuntimeLocationSchema = z.discriminatedUnion("kind", [
48
46
  /** Discovery metadata can identify an endpoint target without verifying its file location. */
49
47
  export const javascriptRuntimeUnresolvedLocationSchema = z.strictObject({
50
48
  kind: z.literal("unresolved"),
51
- reported_url: z.string().min(1),
52
- reason: z.literal("unverifiable-file-location"),
49
+ reported_url: z
50
+ .string()
51
+ .describe("Raw Inspector URL, which may be empty for anonymous or evaluated code."),
52
+ reason: z.enum([
53
+ "unverifiable-file-location",
54
+ "location-authorization-not-attempted",
55
+ ]),
53
56
  });
54
57
  /** Verified locations and explicitly unresolved discovery metadata. */
55
58
  export const javascriptRuntimeTargetLocationSchema = z.union([
@@ -74,7 +77,7 @@ export const javascriptRuntimeTargetListSchema = z.strictObject({
74
77
  });
75
78
  const javascriptRuntimeScriptSchema = z.strictObject({
76
79
  script_key: prefixedDigestSchema("v8_script"),
77
- location: javascriptRuntimeLocationSchema,
80
+ location: javascriptRuntimeTargetLocationSchema,
78
81
  execution_context_key: z.string().nullable(),
79
82
  cdp_hash: z.string().nullable(),
80
83
  length: z
@@ -1,16 +1,22 @@
1
1
  import { classifyStaticLoadStates } from "./javascriptRuntimeLoadState.js";
2
2
  import { buildReconciledApplicationGraph } from "./javascriptRuntimeReconciliationGraph.js";
3
3
  import { reconcileRuntimeEntities } from "./javascriptRuntimeReconciliationMatching.js";
4
- import { parseRuntimeCaptures, parseStaticLayers, } from "./javascriptRuntimeReconciliationParsing.js";
4
+ import { parseStaticLayers, } from "./javascriptRuntimeReconciliationParsing.js";
5
+ import { parseRuntimeCaptures, } from "./javascriptRuntimeReconciliationCaptureParsing.js";
5
6
  import { createJavaScriptRuntimeReconciliationResult } from "./javascriptRuntimeReconciliationResult.js";
6
- import { reconcileJavaScriptRuntimeInputSchema } from "./javascriptRuntimeReconciliationSchemas.js";
7
7
  import { projectRuntimeCaptures } from "./javascriptRuntimeReconciliationRuntime.js";
8
8
  import { collectStaticRuntimeCandidates } from "./javascriptRuntimeStaticCandidates.js";
9
+ /** Parse caller Evidence once into the owner consumed by reconciliation. */
10
+ export const parseRuntimeReconciliationInput = (input) => ({
11
+ input,
12
+ layers: parseStaticLayers(input.static_layers, ["static_layers"]),
13
+ captures: parseRuntimeCaptures(input.runtime_observations, [
14
+ "runtime_observations",
15
+ ]),
16
+ });
9
17
  /** Reconcile static JAG layers with authorized passive CDP Evidence. */
10
- export const reconcileJavaScriptRuntime = (input) => {
11
- const parsed = reconcileJavaScriptRuntimeInputSchema.parse(input);
12
- const layers = parseStaticLayers(parsed.static_layers);
13
- const captures = parseRuntimeCaptures(parsed.runtime_observations);
18
+ export const reconcileJavaScriptRuntime = (parsed) => {
19
+ const { layers, captures } = parsed;
14
20
  const runtime = projectRuntimeCaptures(captures);
15
21
  const candidates = collectStaticRuntimeCandidates(layers);
16
22
  const matching = reconcileRuntimeEntities({
@@ -1,28 +1,29 @@
1
1
  import { isAbsolute } from "node:path";
2
- import { canonicalDigest } from "../comparisonSemantics.js";
2
+ import { digestCanonicalValue } from "../canonicalDigest.js";
3
3
  import { isPathWithinRoot } from "../localPath.js";
4
4
  import { z } from "zod";
5
+ import { invalidInput, parseAtPath, } from "./javascriptRuntimeReconciliationInputValidation.js";
5
6
  import { classifyBrowserCompleteness, } from "../browserCompleteness.js";
6
7
  import { electronActiveObservationResultSchema, } from "./electronActiveObservation.js";
7
8
  /** Parse active Electron Evidence as a bounded, target-only runtime capture. */
8
9
  export const parseActiveElectronCapture = (evidence) => {
9
10
  assertIdentity(evidence);
10
- const result = electronActiveObservationResultSchema.parse(evidence.normalized_result);
11
- const parameters = z
11
+ const result = parseAtPath((value) => electronActiveObservationResultSchema.parse(value), evidence.normalized_result, ["normalized_result"]);
12
+ const parameters = parseAtPath((value) => z
12
13
  .object({
13
14
  application_path: absolutePathSchema,
14
15
  application_root: absolutePathSchema,
15
16
  })
16
17
  .passthrough()
17
- .parse(evidence.parameters);
18
+ .parse(value), evidence.parameters, ["parameters"]);
18
19
  if (result.application.application_path !== parameters.application_path ||
19
20
  !isPathWithinRoot(parameters.application_root, result.application.application_path))
20
- throw new TypeError("Active Electron Evidence application path disagrees with its configured root");
21
+ throw invalidInput(["normalized_result", "application", "application_path"], "Active Electron Evidence application path disagrees with its configured root");
21
22
  return {
22
23
  kind: "electron-active",
23
24
  evidence,
24
25
  inspection: normalizeInspection(result),
25
- captureSha256: canonicalDigest(result, "Runtime reconciliation"),
26
+ captureSha256: digestCanonicalValue(result, "Runtime reconciliation"),
26
27
  scriptsCompleteWithinScope: false,
27
28
  };
28
29
  };
@@ -36,11 +37,11 @@ const assertIdentity = (evidence) => {
36
37
  evidence.provider.version !== "1" ||
37
38
  evidence.authority !== "controlled-replay" ||
38
39
  evidence.confidence !== "observed")
39
- throw new TypeError("Evidence does not match the supported capture_electron_scenario contract");
40
+ throw invalidInput([], "Evidence does not match the supported capture_electron_scenario contract");
40
41
  };
41
42
  const normalizeInspection = (result) => ({
42
43
  target: {
43
- target_id: `electron-active:${canonicalDigest(result.application.application_path, "Runtime reconciliation").slice(0, 32)}`,
44
+ target_id: `electron-active:${digestCanonicalValue(result.application.application_path, "Runtime reconciliation").slice(0, 32)}`,
44
45
  type: "electron-application",
45
46
  title: result.application.application_path,
46
47
  attached: true,