rea-agents 3.1.0 → 3.2.1

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 (590) hide show
  1. package/README.md +72 -95
  2. package/bridge/ghidra/ReaGhidraBridge.java +609 -841
  3. package/bridge/hopper_bridge.py +99 -344
  4. package/dist/application/AbortablePromise.js +6 -3
  5. package/dist/application/AnalysisSnapshotCache.js +0 -1
  6. package/dist/application/AnalysisSnapshotFiles.js +7 -7
  7. package/dist/application/AndroidApplicationService.js +1 -1
  8. package/dist/application/AppleApplicationService.js +1 -1
  9. package/dist/application/ArtifactExtraction.js +35 -54
  10. package/dist/application/ArtifactExtractionDestination.js +17 -0
  11. package/dist/application/ArtifactGraphConstruction.js +2 -17
  12. package/dist/application/ArtifactInventory/classify.js +2 -6
  13. package/dist/application/ArtifactInventory/hash.js +2 -20
  14. package/dist/application/ArtifactInventory/scanCanonical.js +8 -12
  15. package/dist/application/ArtifactInventory/scanReader.js +69 -51
  16. package/dist/application/ArtifactInventory.js +6 -14
  17. package/dist/application/AuthorizedArtifactInventory.js +3 -13
  18. package/dist/application/BinarySession.js +41 -13
  19. package/dist/application/BinarySessionComposition.js +0 -11
  20. package/dist/application/BinarySessionOpen.js +2 -1
  21. package/dist/application/BinarySessionRecords.js +5 -93
  22. package/dist/application/BinarySessionStatus.js +5 -16
  23. package/dist/application/BinaryTargetResolver.js +216 -0
  24. package/dist/application/BrowserEvidence.js +42 -58
  25. package/dist/application/BrowserObservationService.js +3 -6
  26. package/dist/application/BrowserScenarioCaptureService.js +3 -6
  27. package/dist/application/BrowserScenarioEvidence.js +3 -3
  28. package/dist/application/CallPathTracing.js +2 -36
  29. package/dist/application/CapabilityInventory.js +10 -15
  30. package/dist/application/ClientConfigurationDocument.js +27 -0
  31. package/dist/application/ClientRegistrationStatus.js +16 -13
  32. package/dist/application/CommandShimReplay.js +14 -1
  33. package/dist/application/DirectAnalysis.js +22 -46
  34. package/dist/application/DirectAnalysisStatus.js +5 -61
  35. package/dist/application/Doctor.js +11 -32
  36. package/dist/application/DoctorDiagnostics.js +1 -2
  37. package/dist/application/DoctorScope.js +1 -1
  38. package/dist/application/ElectronActiveEvidence.js +3 -8
  39. package/dist/application/ElectronActiveObservationService.js +3 -6
  40. package/dist/application/ElectronBoundaryAnalysis.js +7 -8
  41. package/dist/application/ElectronBoundaryGraphContext.js +1 -1
  42. package/dist/application/ElectronBoundaryGraphIpc.js +3 -3
  43. package/dist/application/ElectronBoundaryGraphNative.js +1 -2
  44. package/dist/application/ElectronBoundaryGraphWindows.js +6 -8
  45. package/dist/application/ElectronEvidence.js +4 -7
  46. package/dist/application/ElectronObservationService.js +5 -9
  47. package/dist/application/EnhancedLiteralTracing.js +42 -65
  48. package/dist/application/EnhancedTools.js +76 -44
  49. package/dist/application/EvidenceBundleCommands.js +11 -11
  50. package/dist/application/EvidenceBundleFiles.js +9 -15
  51. package/dist/application/EvidenceLedger.js +6 -41
  52. package/dist/application/FilesystemSnapshot.js +2 -3
  53. package/dist/application/InterfaceBuilderAnalysis.js +266 -0
  54. package/dist/application/InventoryProjectionEvidence.js +4 -2
  55. package/dist/application/InvestigationProviders.js +1 -1
  56. package/dist/application/JavaScriptApplicationEvidence.js +2 -5
  57. package/dist/application/JavaScriptApplicationEvidenceGraph.js +6 -10
  58. package/dist/application/JavaScriptApplicationService.js +6 -29
  59. package/dist/application/JavaScriptApplicationWorkflowEvidence.js +5 -5
  60. package/dist/application/JavaScriptApplicationWorkflowService.js +0 -8
  61. package/dist/application/JavaScriptArtifactAnalysis.js +38 -127
  62. package/dist/application/JavaScriptArtifactFiles.js +67 -107
  63. package/dist/application/JavaScriptArtifactGraphAccumulator.js +0 -7
  64. package/dist/application/JavaScriptArtifactGraphBuilder.js +7 -58
  65. package/dist/application/JavaScriptArtifactGraphBundlers.js +1 -6
  66. package/dist/application/JavaScriptArtifactGraphContext.js +12 -39
  67. package/dist/application/JavaScriptArtifactGraphDocuments.js +4 -11
  68. package/dist/application/JavaScriptArtifactGraphEvidence.js +0 -14
  69. package/dist/application/JavaScriptArtifactGraphFindings.js +3 -3
  70. package/dist/application/JavaScriptArtifactGraphStructure.js +16 -17
  71. package/dist/application/JavaScriptArtifactPathResolution.js +61 -49
  72. package/dist/application/JavaScriptArtifactReconstruction.js +5 -10
  73. package/dist/application/JavaScriptArtifactReconstructionInput.js +2 -14
  74. package/dist/application/JavaScriptJsonModules.js +2 -2
  75. package/dist/application/JavaScriptModuleRelationships.js +22 -27
  76. package/dist/application/JavaScriptReplayPlanning.js +9 -3
  77. package/dist/application/JavaScriptReplayService.js +6 -32
  78. package/dist/application/JavaScriptReturnShapeProjection.js +12 -42
  79. package/dist/application/JavaScriptRuntimeObservationEvidence.js +7 -8
  80. package/dist/application/JavaScriptRuntimeObservationService.js +4 -8
  81. package/dist/application/JavaScriptRuntimeReconciliationEvidence.js +2 -3
  82. package/dist/application/JavaScriptSemanticGraphBuilder.js +11 -41
  83. package/dist/application/JavaScriptSemanticGraphConstruction.js +5 -29
  84. package/dist/application/JavaScriptSemanticGraphEvidence.js +1 -1
  85. package/dist/application/JavaScriptSemanticGraphFingerprintProjection.js +1 -1
  86. package/dist/application/JavaScriptSemanticGraphFlowProjection.js +0 -13
  87. package/dist/application/JavaScriptSemanticGraphProjection.js +1 -3
  88. package/dist/application/JavaScriptSemanticTraceService.js +1 -10
  89. package/dist/application/JsonFiles.js +79 -0
  90. package/dist/application/LinuxHopper.js +11 -9
  91. package/dist/application/LoopbackReplay.js +26 -23
  92. package/dist/application/LoopbackReplayRecorder.js +29 -1
  93. package/dist/application/ManagedApplicationGraphService.js +1 -2
  94. package/dist/application/ManagedMemberComparisonService.js +11 -41
  95. package/dist/application/ManagedNativeVerificationService.js +1 -2
  96. package/dist/application/ManagedReconstructionService.js +1 -1
  97. package/dist/application/ManagedRuntimeCorrelationService.js +5 -8
  98. package/dist/application/NativeApiInspection.js +2 -7
  99. package/dist/application/NativeUiActionTrace.js +394 -0
  100. package/dist/application/NodeRuntimeCharacterizationService.js +3 -7
  101. package/dist/application/PermissionAuthority.js +15 -7
  102. package/dist/application/PermissionFailure.js +5 -0
  103. package/dist/application/ProcessCaptureAuthority.js +5 -7
  104. package/dist/application/ProcessCaptureJournal.js +3 -2
  105. package/dist/application/ProcessCaptureLifecycle.js +5 -12
  106. package/dist/application/ProcessCheckpoints.js +29 -11
  107. package/dist/application/ProcessCli.js +6 -16
  108. package/dist/application/ProcessEvidence.js +5 -7
  109. package/dist/application/ProcessHarness.js +52 -17
  110. package/dist/application/ProcessReactiveCoordinator.js +2 -4
  111. package/dist/application/ProcessReactiveEffects.js +9 -3
  112. package/dist/application/ProcessReactiveHarness.js +13 -7
  113. package/dist/application/ProcessSampling.js +2 -4
  114. package/dist/application/ProcessTimer.js +39 -0
  115. package/dist/application/ProjectPermissionStore.js +39 -96
  116. package/dist/application/RealHopperAssertions.js +20 -66
  117. package/dist/application/ReconstructionCoverageService.js +12 -58
  118. package/dist/application/ReconstructionObligationAuthority.js +2 -2
  119. package/dist/application/ReconstructionObligationCandidates.js +4 -4
  120. package/dist/application/ReconstructionObligationLedgerEvaluation.js +8 -15
  121. package/dist/application/ReconstructionObligationLedgerProjection.js +3 -7
  122. package/dist/application/ReconstructionObligationLedgerService.js +19 -38
  123. package/dist/application/ReferenceSourceImport.js +19 -45
  124. package/dist/application/ReferenceSourceImportEntries.js +2 -4
  125. package/dist/application/ReferenceSourceImportPolicy.js +5 -32
  126. package/dist/application/ReferenceSourceImportTypes.js +0 -16
  127. package/dist/application/RuntimeExecutableDiagnostics.js +55 -29
  128. package/dist/application/SessionProviderRouter.js +2 -2
  129. package/dist/application/Setup.js +1 -3
  130. package/dist/application/SetupClientConfiguration.js +22 -93
  131. package/dist/application/SetupRegistrationEnvironment.js +0 -7
  132. package/dist/application/StoreFileLock.js +119 -0
  133. package/dist/application/TerminalRenderer.js +2 -3
  134. package/dist/application/Uninstall.js +9 -14
  135. package/dist/application/UnknownEvidence.js +1 -1
  136. package/dist/artifacts/ArtifactPaths.js +2 -5
  137. package/dist/artifacts/ArtifactProvider.js +36 -58
  138. package/dist/artifacts/DirectoryArtifactReader.js +13 -8
  139. package/dist/artifacts/MachOSliceArtifactReader.js +1 -5
  140. package/dist/artifacts/NativeDmgArtifactReader.js +11 -11
  141. package/dist/artifacts/NibArchive.js +269 -0
  142. package/dist/artifacts/SafeOutputTree.js +15 -24
  143. package/dist/browser/BrowserProcessStartup.js +1 -2
  144. package/dist/browser/CdpAuthorizedMainFrame.js +16 -0
  145. package/dist/browser/CdpBrowserProvider.js +3 -13
  146. package/dist/browser/CdpCanonicalJsonDigest.js +9 -0
  147. package/dist/browser/CdpCaptureDocuments.js +28 -76
  148. package/dist/browser/CdpCaptureEventBodyShapes.js +13 -33
  149. package/dist/browser/CdpCaptureEventHandlers.js +22 -87
  150. package/dist/browser/CdpCaptureEvents.js +2 -8
  151. package/dist/browser/CdpCaptureStorage.js +9 -20
  152. package/dist/browser/CdpCaptureStorageFingerprints.js +85 -98
  153. package/dist/browser/CdpCaptureValues.js +21 -21
  154. package/dist/browser/CdpConnection.js +10 -25
  155. package/dist/browser/CdpElectronInspection.js +26 -50
  156. package/dist/browser/CdpElectronProvider.js +10 -35
  157. package/dist/browser/CdpElectronScriptEvents.js +8 -16
  158. package/dist/browser/CdpElectronScripts.js +6 -35
  159. package/dist/browser/CdpElectronWorkers.js +6 -10
  160. package/dist/browser/CdpEndpoint.js +25 -41
  161. package/dist/browser/CdpObservationSession.js +14 -26
  162. package/dist/browser/CdpPageCapture.js +34 -48
  163. package/dist/browser/CdpPageCaptureScripts.js +1 -19
  164. package/dist/browser/CdpPageCaptureWorkers.js +6 -10
  165. package/dist/browser/CdpSafeMetadata.js +19 -22
  166. package/dist/browser/CdpScreenshot.js +3 -5
  167. package/dist/browser/CdpTargetSession.js +1 -2
  168. package/dist/browser/CdpWebMcpDiscovery.js +13 -22
  169. package/dist/browser/ElectronFileScope.js +8 -19
  170. package/dist/browser/JavaScriptRuntimeScope.js +9 -14
  171. package/dist/browser/PlaywrightBrowserScenarioProvider.js +31 -64
  172. package/dist/browser/PlaywrightElectronActiveActions.js +54 -69
  173. package/dist/browser/PlaywrightElectronActiveProvider.js +14 -34
  174. package/dist/browser/PlaywrightExecutionBoundary.js +16 -5
  175. package/dist/browser/PlaywrightScenarioActions.js +3 -7
  176. package/dist/browser/PlaywrightScenarioArtifacts.js +23 -92
  177. package/dist/browser/PlaywrightScenarioBrowser.js +3 -5
  178. package/dist/browser/PlaywrightScenarioEvents.js +45 -94
  179. package/dist/browser/PlaywrightScenarioSession.js +14 -30
  180. package/dist/browser/PngVisualDiff.js +22 -14
  181. package/dist/browser/SensitiveTextCapture.js +0 -17
  182. package/dist/browser/V8InspectorCaptureProjection.js +7 -8
  183. package/dist/browser/V8InspectorEndpoint.js +12 -14
  184. package/dist/browser/V8InspectorProvider.js +20 -61
  185. package/dist/browser/WebSourceMapFetcher.js +56 -176
  186. package/dist/catalogIdentity.js +0 -54
  187. package/dist/cli/artifactCommands.js +49 -77
  188. package/dist/cli/coreAnalysisCommands.js +83 -133
  189. package/dist/cli/javascriptApplicationAnalysis.js +1 -9
  190. package/dist/cli/managedCommands.js +5 -270
  191. package/dist/cli/setupCommands.js +3 -12
  192. package/dist/cli/utilityCommands.js +7 -41
  193. package/dist/cli.js +0 -2
  194. package/dist/cliApplicationCommands.js +42 -112
  195. package/dist/cliBrowserAdvancedCommands.js +10 -106
  196. package/dist/cliBrowserCommands.js +15 -127
  197. package/dist/cliBrowserContext.js +30 -0
  198. package/dist/cliCommandNames.js +4 -5
  199. package/dist/cliElectronCommands.js +8 -72
  200. package/dist/cliEvidenceCommands.js +8 -77
  201. package/dist/cliJavaScriptRuntimeCommands.js +9 -91
  202. package/dist/cliJsonInput.js +4 -14
  203. package/dist/cliObservationOptions.js +11 -96
  204. package/dist/cliPolicyCommands.js +2 -17
  205. package/dist/cliProcessCommands.js +3 -3
  206. package/dist/cliSetup.js +0 -13
  207. package/dist/config/browserScenario.js +2 -2
  208. package/dist/config/environment.js +0 -9
  209. package/dist/config/parseConfig.js +1 -33
  210. package/dist/config/parsers.js +6 -27
  211. package/dist/config/passiveObservation.js +7 -77
  212. package/dist/config/permissions.js +0 -7
  213. package/dist/contracts/analysisSearchContract.js +2 -5
  214. package/dist/contracts/applicationToolContracts.js +56 -109
  215. package/dist/contracts/applicationWorkflowInputContracts.js +27 -102
  216. package/dist/contracts/artifactComparisonExample.js +58 -60
  217. package/dist/contracts/artifactToolContracts.js +20 -67
  218. package/dist/contracts/browserScenarioToolContracts.js +6 -51
  219. package/dist/contracts/browserToolContracts.js +8 -73
  220. package/dist/contracts/electronToolContracts.js +8 -108
  221. package/dist/contracts/enhancedInputs.js +23 -54
  222. package/dist/contracts/errorSchemas.js +0 -1
  223. package/dist/contracts/functionComparisonExample.js +10 -24
  224. package/dist/contracts/functionInstructionContract.js +1 -3
  225. package/dist/contracts/functionWorkflowToolContracts.js +2 -2
  226. package/dist/contracts/hopperMemoryContracts.js +3 -3
  227. package/dist/contracts/investigationExamples.js +14 -11
  228. package/dist/contracts/javascriptApplicationWorkflowExamples.js +12 -19
  229. package/dist/contracts/javascriptRuntimeObservationToolContracts.js +2 -20
  230. package/dist/contracts/javascriptRuntimeReconciliationExample.js +45 -12
  231. package/dist/contracts/managedToolContracts.js +6 -95
  232. package/dist/contracts/managedWorkflowExamples.js +77 -128
  233. package/dist/contracts/managedWorkflowToolContracts.js +51 -77
  234. package/dist/contracts/nativeToolContracts.js +7 -11
  235. package/dist/contracts/processCaptureExample.js +2 -69
  236. package/dist/contracts/promptContracts.js +49 -67
  237. package/dist/contracts/providerSelection.js +0 -1
  238. package/dist/contracts/reconstructionReadinessExample.js +1 -6
  239. package/dist/contracts/sessionStatusContract.js +1 -17
  240. package/dist/contracts/sessionToolSchemas.js +6 -15
  241. package/dist/contracts/toolContractExamples.js +11 -11
  242. package/dist/contracts/toolContractHelpers.js +0 -4
  243. package/dist/contracts/toolContracts.js +60 -71
  244. package/dist/contracts/toolEffects.js +5 -13
  245. package/dist/contracts/toolOutputSchemaGroups.js +37 -91
  246. package/dist/contracts/toolOutputSchemaPrimitives.js +16 -56
  247. package/dist/contracts/toolSchemaMetadata.js +8 -19
  248. package/dist/contracts/unknownContractExamples.js +0 -2
  249. package/dist/domain/analysisErrorPresentation.js +46 -54
  250. package/dist/domain/analysisErrorProjection.js +28 -37
  251. package/dist/domain/analysisProfile.js +3 -31
  252. package/dist/domain/analysisSnapshot.js +3 -12
  253. package/dist/domain/androidApplication.js +15 -54
  254. package/dist/domain/appleApplication.js +24 -67
  255. package/dist/domain/artifactComparison.js +11 -29
  256. package/dist/domain/artifactGraph.js +14 -44
  257. package/dist/domain/artifactInspection.js +38 -69
  258. package/dist/domain/artifactInventoryEvidence.js +27 -21
  259. package/dist/domain/binaryTarget.js +2 -221
  260. package/dist/domain/browserCaptureComparison.js +47 -24
  261. package/dist/domain/browserObservation.js +28 -193
  262. package/dist/domain/browserObservationSchemas.js +5 -23
  263. package/dist/domain/browserScenario.js +11 -14
  264. package/dist/domain/browserScenarioCapture.js +11 -12
  265. package/dist/domain/browserScenarioCaptureValues.js +146 -84
  266. package/dist/domain/browserScenarioDiff.js +2 -59
  267. package/dist/domain/browserScenarioDiffEvidence.js +51 -0
  268. package/dist/domain/browserScenarioDiffValues.js +21 -38
  269. package/dist/domain/browserScenarioValues.js +80 -109
  270. package/dist/domain/browserSession.js +4 -7
  271. package/dist/domain/bundleComparison.js +6 -32
  272. package/dist/domain/bytecodeProvider.js +20 -19
  273. package/dist/domain/callPath.js +47 -167
  274. package/dist/domain/callPathSchemas.js +79 -0
  275. package/dist/domain/changedBehavior.js +34 -60
  276. package/dist/domain/completionLedgerGeneration.js +8 -14
  277. package/dist/domain/conformancePackage.js +126 -97
  278. package/dist/domain/conformanceReplay.js +36 -8
  279. package/dist/domain/conformanceTrustGate.js +23 -14
  280. package/dist/domain/customProtocolCapture.js +1 -1
  281. package/dist/domain/electronActiveObservation.js +70 -103
  282. package/dist/domain/electronObservation.js +14 -80
  283. package/dist/domain/electronStaticAnalysisBrowser.js +36 -46
  284. package/dist/domain/electronStaticAnalysisIpc.js +38 -14
  285. package/dist/domain/electronStaticAnalysisNative.js +1 -8
  286. package/dist/domain/electronStaticAnalysisValues.js +10 -17
  287. package/dist/domain/errors.js +33 -54
  288. package/dist/domain/eventProcessTree.js +20 -12
  289. package/dist/domain/evidence.js +2 -10
  290. package/dist/domain/evidenceBundle.js +3 -5
  291. package/dist/domain/evidenceCompletionLedger.js +6 -8
  292. package/dist/domain/functionComparison.js +4 -14
  293. package/dist/domain/functionComparisonNormalization.js +4 -11
  294. package/dist/domain/functionComparisonResults.js +25 -15
  295. package/dist/domain/functionComparisonSchemas.js +49 -33
  296. package/dist/domain/functionDossierEvidence.js +31 -156
  297. package/dist/domain/hopperStartupFailure.js +1 -1
  298. package/dist/domain/hopperValues.js +15 -136
  299. package/dist/domain/interfaceBuilderGraph.js +654 -0
  300. package/dist/domain/javascriptApplicationAnalysis.js +8 -112
  301. package/dist/domain/javascriptApplicationChangeGraph.js +22 -82
  302. package/dist/domain/javascriptApplicationEvidenceSchemas.js +59 -47
  303. package/dist/domain/javascriptApplicationGraph.js +3 -13
  304. package/dist/domain/javascriptApplicationGraphSchemas.js +12 -34
  305. package/dist/domain/javascriptApplicationVersionComparison.js +26 -30
  306. package/dist/domain/javascriptApplicationVersionComparisonSchemas.js +123 -68
  307. package/dist/domain/javascriptApplicationVersionItems.js +120 -53
  308. package/dist/domain/javascriptApplicationVersionKeys.js +24 -11
  309. package/dist/domain/javascriptAstFingerprint.js +25 -58
  310. package/dist/domain/javascriptAstValues.js +9 -0
  311. package/dist/domain/javascriptExportInstrumentation.js +2 -4
  312. package/dist/domain/javascriptExportShapeComparison.js +6 -7
  313. package/dist/domain/javascriptExportShapeComparisonSchemas.js +68 -75
  314. package/dist/domain/javascriptExportShapeSelection.js +17 -19
  315. package/dist/domain/javascriptFeatureSeed.js +20 -12
  316. package/dist/domain/javascriptFeatureTrace.js +13 -67
  317. package/dist/domain/javascriptFeatureTraceSchemas.js +24 -52
  318. package/dist/domain/javascriptFeatureTraversal.js +1 -44
  319. package/dist/domain/javascriptNativeHandoff.js +1 -1
  320. package/dist/domain/javascriptReplay.js +24 -41
  321. package/dist/domain/javascriptRuntimeLoadState.js +3 -8
  322. package/dist/domain/javascriptRuntimeObservation.js +42 -103
  323. package/dist/domain/javascriptRuntimeReconciliation.js +1 -3
  324. package/dist/domain/javascriptRuntimeReconciliationActive.js +8 -17
  325. package/dist/domain/javascriptRuntimeReconciliationGraph.js +10 -23
  326. package/dist/domain/javascriptRuntimeReconciliationMatching.js +18 -12
  327. package/dist/domain/javascriptRuntimeReconciliationParsing.js +16 -45
  328. package/dist/domain/javascriptRuntimeReconciliationResult.js +4 -5
  329. package/dist/domain/javascriptRuntimeReconciliationRuntime.js +8 -12
  330. package/dist/domain/javascriptRuntimeReconciliationSchemas.js +33 -48
  331. package/dist/domain/javascriptRuntimeStaticCandidates.js +3 -3
  332. package/dist/domain/javascriptSemanticAnalysis.js +12 -45
  333. package/dist/domain/javascriptSemanticAsyncEffects.js +1 -9
  334. package/dist/domain/javascriptSemanticCallResolution.js +6 -16
  335. package/dist/domain/javascriptSemanticCalls.js +5 -32
  336. package/dist/domain/javascriptSemanticChildProcesses.js +1 -11
  337. package/dist/domain/javascriptSemanticCoverage.js +11 -0
  338. package/dist/domain/javascriptSemanticDataEffectHelpers.js +1 -8
  339. package/dist/domain/javascriptSemanticDataEffects.js +1 -11
  340. package/dist/domain/javascriptSemanticFingerprints.js +3 -5
  341. package/dist/domain/javascriptSemanticGraphSchemas.js +25 -51
  342. package/dist/domain/javascriptSemanticGraphSerialization.js +2 -13
  343. package/dist/domain/javascriptSemanticIr.js +1 -29
  344. package/dist/domain/javascriptSemanticObjects.js +1 -5
  345. package/dist/domain/javascriptSemanticPrimitives.js +2 -9
  346. package/dist/domain/javascriptSemanticProjection.js +0 -18
  347. package/dist/domain/javascriptSemanticPromises.js +9 -16
  348. package/dist/domain/javascriptSemanticProvenance.js +16 -19
  349. package/dist/domain/javascriptSemanticQuery.js +17 -139
  350. package/dist/domain/javascriptSemanticQueryAssessment.js +9 -37
  351. package/dist/domain/javascriptSemanticQueryIdentity.js +2 -23
  352. package/dist/domain/javascriptSemanticQuerySchemas.js +14 -107
  353. package/dist/domain/javascriptSemanticResources.js +1 -6
  354. package/dist/domain/javascriptSemanticReturns.js +10 -27
  355. package/dist/domain/javascriptSemanticValueTypes.js +1 -0
  356. package/dist/domain/javascriptSemanticValues.js +44 -62
  357. package/dist/domain/javascriptStaticAnalysis.js +21 -43
  358. package/dist/domain/javascriptStaticAnalysisBundler.js +34 -93
  359. package/dist/domain/javascriptStaticAnalysisCalls.js +17 -16
  360. package/dist/domain/javascriptStaticAnalysisFindings.js +3 -19
  361. package/dist/domain/javascriptStaticAnalysisHelpers.js +47 -88
  362. package/dist/domain/javascriptStaticAnalysisState.js +1 -5
  363. package/dist/domain/javascriptStaticAnalysisTypes.js +1 -0
  364. package/dist/domain/jsonShape.js +7 -33
  365. package/dist/domain/localPath.js +7 -0
  366. package/dist/domain/managedApplicationGraph.js +9 -41
  367. package/dist/domain/managedApplicationGraphCoverage.js +24 -156
  368. package/dist/domain/managedApplicationGraphNodes.js +10 -13
  369. package/dist/domain/managedArtifact.js +14 -27
  370. package/dist/domain/managedMemberComparison.js +90 -92
  371. package/dist/domain/managedMemberComparisonCoverage.js +11 -33
  372. package/dist/domain/managedMemberComparisonItems.js +221 -0
  373. package/dist/domain/managedMemberComparisonMatch.js +8 -208
  374. package/dist/domain/managedNativeVerification.js +3 -6
  375. package/dist/domain/managedNativeVerificationMatch.js +55 -59
  376. package/dist/domain/managedNativeVerificationSchemas.js +83 -47
  377. package/dist/domain/managedReconstruction.js +19 -23
  378. package/dist/domain/managedRuntimeCorrelation.js +6 -9
  379. package/dist/domain/nativeApiBoundary.js +2 -7
  380. package/dist/domain/nativeInspection.js +0 -2
  381. package/dist/domain/nativeInvestigationGraph.js +351 -0
  382. package/dist/domain/nativeValueFlow.js +61 -0
  383. package/dist/domain/nodeRuntimeCharacterization.js +1 -5
  384. package/dist/domain/objcSwiftMetadata.js +254 -0
  385. package/dist/domain/peInspection.js +1 -1
  386. package/dist/domain/permissionPolicy.js +13 -0
  387. package/dist/domain/processCapture.js +76 -113
  388. package/dist/domain/processCaptureExample.js +68 -0
  389. package/dist/domain/processCaptureParsing.js +21 -0
  390. package/dist/domain/processCaptureReactiveSchema.js +68 -0
  391. package/dist/domain/processCaptureValidation.js +1 -7
  392. package/dist/domain/processComparison.js +3 -12
  393. package/dist/domain/processReactiveMatching.js +29 -50
  394. package/dist/domain/processReactiveRuntime.js +4 -8
  395. package/dist/domain/processReactiveScenario.js +28 -94
  396. package/dist/domain/processReactiveScenarioPreflight.js +5 -30
  397. package/dist/domain/processReactiveTransition.js +33 -18
  398. package/dist/domain/processScenario.js +56 -90
  399. package/dist/domain/processTraceComparison.js +0 -8
  400. package/dist/domain/processTraceEvaluation.js +14 -4
  401. package/dist/domain/processTraceSpecification.js +11 -17
  402. package/dist/domain/protocolCapture.js +3 -3
  403. package/dist/domain/reconstructionCoverage.js +62 -129
  404. package/dist/domain/reconstructionCoverageEvaluation.js +17 -17
  405. package/dist/domain/reconstructionObligationLedgerSchemas.js +45 -72
  406. package/dist/domain/reconstructionReadiness.js +1 -2
  407. package/dist/domain/reconstructionReadinessSchemas.js +36 -38
  408. package/dist/domain/reconstructionUnknowns.js +3 -3
  409. package/dist/domain/reconstructionVerification.js +13 -47
  410. package/dist/domain/reconstructionVerificationSchemas.js +50 -38
  411. package/dist/domain/referenceSourceGraph.js +53 -61
  412. package/dist/domain/referenceSourceImportParsing.js +1 -5
  413. package/dist/domain/replayMachine.js +19 -31
  414. package/dist/domain/replayMachineRun.js +15 -63
  415. package/dist/domain/replayMachineRuntime.js +41 -41
  416. package/dist/domain/replayMachineValues.js +84 -0
  417. package/dist/domain/residualUnknown.js +25 -30
  418. package/dist/domain/runtimeCharacterization.js +15 -16
  419. package/dist/domain/runtimeIdentification.js +48 -47
  420. package/dist/domain/sourceToBundleComparison.js +9 -85
  421. package/dist/domain/sourceToBundleComparisonSchemas.js +17 -42
  422. package/dist/domain/sourceToBundleSignals.js +4 -15
  423. package/dist/domain/staticRuntimeCorrelation.js +37 -49
  424. package/dist/domain/symbolAnalysis.js +10 -19
  425. package/dist/domain/unicodeCodePointOrder.js +12 -0
  426. package/dist/domain/webBundleAnalysis.js +70 -99
  427. package/dist/domain/webBundleAnalyzer.js +2 -4
  428. package/dist/domain/webBundleAnalyzerAst.js +0 -13
  429. package/dist/domain/webBundleAnalyzerInspection.js +26 -52
  430. package/dist/domain/webBundleAnalyzerResult.js +7 -24
  431. package/dist/domain/webCaptureDiff.js +33 -73
  432. package/dist/domain/webCaptureDiffSchemas.js +86 -0
  433. package/dist/domain/webContentArtifact.js +1 -10
  434. package/dist/domain/webMcpDiscovery.js +3 -14
  435. package/dist/domain/webScreenshot.js +58 -34
  436. package/dist/domain/zipPackageFormat.js +7 -0
  437. package/dist/dotnet/ManagedArtifactInspector.js +17 -50
  438. package/dist/dotnet/ManagedMemberInspector.js +27 -58
  439. package/dist/dotnet/ManagedMemberInspectorCore.js +14 -51
  440. package/dist/dotnet/ManagedMemberInstructionDecoder.js +2 -2
  441. package/dist/dotnet/ManagedMemberRows.js +16 -16
  442. package/dist/dotnet/ManagedMetadataHeaps.js +26 -8
  443. package/dist/dotnet/ManagedMetadataInventory.js +21 -30
  444. package/dist/dotnet/ManagedMetadataInventoryRows.js +57 -63
  445. package/dist/dotnet/ManagedMetadataLayout.js +3 -5
  446. package/dist/dotnet/ManagedMethodBodyReader.js +5 -30
  447. package/dist/dotnet/ManagedNativeBoundaryHelpers.js +19 -49
  448. package/dist/dotnet/ManagedNativeBoundaryInspector.js +13 -41
  449. package/dist/dotnet/ManagedPeReader.js +2 -2
  450. package/dist/dotnet/ManagedStaticProvider.js +13 -71
  451. package/dist/generatedMcpToolCatalog.js +1 -1
  452. package/dist/generatedPackageMetadata.js +1 -1
  453. package/dist/ghidra/GhidraAnalysisProfile.js +3 -8
  454. package/dist/ghidra/GhidraClient.js +4 -12
  455. package/dist/ghidra/GhidraClientWire.js +9 -5
  456. package/dist/ghidra/GhidraDefaults.js +0 -18
  457. package/dist/ghidra/GhidraDiagnostics.js +0 -2
  458. package/dist/ghidra/GhidraDoctor.js +16 -12
  459. package/dist/ghidra/GhidraFunctionValues.js +65 -108
  460. package/dist/ghidra/GhidraInstallation.js +98 -42
  461. package/dist/ghidra/GhidraInventoryValues.js +16 -85
  462. package/dist/ghidra/GhidraLauncher.js +0 -8
  463. package/dist/ghidra/GhidraProvider.js +15 -22
  464. package/dist/ghidra/GhidraProviderCapabilities.js +6 -47
  465. package/dist/ghidra/GhidraRequestQueue.js +6 -30
  466. package/dist/ghidra/GhidraResponseBuffer.js +1 -7
  467. package/dist/ghidra/GhidraSessionValues.js +0 -2
  468. package/dist/ghidra/GhidraTransport.js +4 -7
  469. package/dist/ghidra/protocol.js +2 -2
  470. package/dist/hopper/BridgeLauncher.js +112 -36
  471. package/dist/hopper/HopperAnalysisProfile.js +1 -1
  472. package/dist/hopper/HopperCleanup.js +6 -3
  473. package/dist/hopper/HopperClient.js +4 -7
  474. package/dist/hopper/HopperProcessDiagnostic.js +2 -2
  475. package/dist/hopper/HopperProvider.js +0 -16
  476. package/dist/hopper/HopperRequestQueue.js +21 -40
  477. package/dist/hopper/HopperResponseStream.js +1 -9
  478. package/dist/hopper/HopperSessionValues.js +3 -2
  479. package/dist/hopper/HopperTargetLease.js +119 -0
  480. package/dist/hopper/LinuxPrivateDisplayDiagnostic.js +24 -31
  481. package/dist/hopper/LinuxPrivateDisplayProbe.js +5 -16
  482. package/dist/hopper/protocol.js +6 -4
  483. package/dist/main/reload.js +0 -3
  484. package/dist/main/shutdown.js +1 -1
  485. package/dist/main/state.js +0 -9
  486. package/dist/main/transport.js +0 -5
  487. package/dist/mcpDoctor.js +25 -45
  488. package/dist/native/CommandRunner.js +18 -25
  489. package/dist/native/NativeMacOSProvider.js +13 -38
  490. package/dist/native/NativeMachoInspection.js +1 -1
  491. package/dist/process/BoundedFileBytes.js +17 -0
  492. package/dist/process/ExecFileOutput.js +11 -0
  493. package/dist/process/PendingOperations.js +8 -6
  494. package/dist/process/ProcessOwnership.js +3 -2
  495. package/dist/process/ProcessOwnershipObservation.js +0 -1
  496. package/dist/process/ProviderProcess.js +7 -28
  497. package/dist/reference/ReferenceSourceReader.js +8 -24
  498. package/dist/reference/ReferenceSourceReaderEntries.js +11 -39
  499. package/dist/reference/ReferenceSourceReaderFile.js +13 -31
  500. package/dist/reference/ReferenceSourceReaderPaths.js +3 -18
  501. package/dist/reference/ReferenceSourceReaderValidate.js +3 -6
  502. package/dist/replay/JavaScriptReplayWorker.js +3 -5
  503. package/dist/replay/LinuxJavaScriptReplayRunner.js +33 -29
  504. package/dist/replay/LinuxJavaScriptReplaySandbox.js +0 -19
  505. package/dist/replay/LinuxRuntimeClosure.js +1 -3
  506. package/dist/replay/ReplayOutcome.js +1 -3
  507. package/dist/replay/ReplayProcessLifecycle.js +32 -7
  508. package/dist/replay/ReplaySeccompFile.js +29 -0
  509. package/dist/replay/ReplayWorkerProtocol.js +0 -2
  510. package/dist/replay/SystemJavaScriptReplayHost.js +45 -74
  511. package/dist/server/ProcessCaptureElicitation.js +4 -8
  512. package/dist/server/createServer.js +6 -44
  513. package/dist/server/promptCompletion.js +37 -61
  514. package/dist/server/recordDerivedEvidence.js +1 -1
  515. package/dist/server/registerApplicationTools/characterization.js +4 -8
  516. package/dist/server/registerApplicationTools/compareExportShapes.js +5 -10
  517. package/dist/server/registerApplicationTools/compareSourceToBundle.js +6 -10
  518. package/dist/server/registerApplicationTools/compareVersions.js +5 -10
  519. package/dist/server/registerApplicationTools/controlledReplay.js +3 -5
  520. package/dist/server/registerApplicationTools/coverage.js +6 -71
  521. package/dist/server/registerApplicationTools/helpers.js +1 -13
  522. package/dist/server/registerApplicationTools/obligationLedger.js +3 -2
  523. package/dist/server/registerApplicationTools/traceFeature.js +5 -9
  524. package/dist/server/registerApplicationTools/traceSemantics.js +5 -8
  525. package/dist/server/registerApplicationTools.js +0 -2
  526. package/dist/server/registerArtifactComparisonTool.js +23 -27
  527. package/dist/server/registerBrowserScenarioTool.js +4 -4
  528. package/dist/server/registerBrowserTools.js +5 -8
  529. package/dist/server/registerBundleComparisonTool.js +5 -7
  530. package/dist/server/registerCloseLifecycleTool.js +2 -16
  531. package/dist/server/registerElectronTools.js +10 -29
  532. package/dist/server/registerEnhancedTools.js +10 -11
  533. package/dist/server/registerEvidenceTools.js +15 -22
  534. package/dist/server/registerFunctionComparisonTool.js +30 -25
  535. package/dist/server/registerInvestigationTools/helpers.js +3 -32
  536. package/dist/server/registerInvestigationTools.js +20 -116
  537. package/dist/server/registerJavaScriptRuntimeObservationTools.js +6 -4
  538. package/dist/server/registerManagedWorkflowTools/compareManagedMembers.js +15 -17
  539. package/dist/server/registerManagedWorkflowTools/evidence.js +19 -35
  540. package/dist/server/registerManagedWorkflowTools/importManagedReconstruction.js +3 -8
  541. package/dist/server/registerManagedWorkflowTools/planManagedRuntimeCorrelation.js +3 -8
  542. package/dist/server/registerManagedWorkflowTools/projectManagedApplicationGraph.js +10 -14
  543. package/dist/server/registerManagedWorkflowTools/verifyManagedNativeBoundaries.js +9 -15
  544. package/dist/server/registerOfficialTools.js +1 -43
  545. package/dist/server/registerProcessComparisonTool.js +33 -23
  546. package/dist/server/registerPrompts.js +19 -17
  547. package/dist/server/registerSessionRecordTools.js +10 -156
  548. package/dist/server/registerSessionStatusTool.js +6 -69
  549. package/dist/server/registerSessionTools.js +10 -51
  550. package/dist/server/sessionAvailabilityPolicy.js +0 -2
  551. package/dist/server/sessionEvidence.js +9 -15
  552. package/dist/server/sessionToolPolicies.js +0 -8
  553. package/dist/server/toolResult.js +14 -50
  554. package/dist/serverIdentity.js +0 -20
  555. package/install.sh +1 -1
  556. package/package.json +11 -7
  557. package/scripts/electron-active-hook.cjs +23 -55
  558. package/scripts/hopper-demo-x11.py +13 -32
  559. package/skills/reverse-engineer-anything/SKILL.md +47 -12
  560. package/skills/reverse-engineer-anything/references/evidence-workflows.md +6 -4
  561. package/skills/reverse-engineer-anything/references/javascript-applications.md +13 -13
  562. package/skills/reverse-engineer-anything/references/native-and-artifacts.md +12 -8
  563. package/dist/application/ApplicationWorkflowEvidenceResolver.js +0 -188
  564. package/dist/application/BoundedJsonFiles.js +0 -86
  565. package/dist/application/CrossVersionInventory.js +0 -129
  566. package/dist/application/CrossVersionInvestigation.js +0 -301
  567. package/dist/application/CrossVersionInvestigationCollections.js +0 -23
  568. package/dist/application/CrossVersionInvestigationEvidence.js +0 -64
  569. package/dist/application/CrossVersionInvestigationReplay.js +0 -170
  570. package/dist/application/DeferredFileAuthorization.js +0 -61
  571. package/dist/application/DoctorProjection.js +0 -43
  572. package/dist/application/EnhancedToolPagination.js +0 -22
  573. package/dist/application/EvidenceReferenceResolver.js +0 -26
  574. package/dist/application/InvestigationWorkspaceStore.js +0 -204
  575. package/dist/application/ProcessPairedExperiment.js +0 -72
  576. package/dist/application/ReconstructionCoverageWorkspaceStore.js +0 -31
  577. package/dist/application/ReconstructionReadinessService.js +0 -48
  578. package/dist/cliInvestigationCommands.js +0 -173
  579. package/dist/domain/boundedCartesianProjection.js +0 -15
  580. package/dist/domain/investigationWorkspace.js +0 -347
  581. package/dist/domain/jsonLimits.js +0 -26
  582. package/dist/domain/knownPageCoverage.js +0 -29
  583. package/dist/domain/processPairedExperiment.js +0 -128
  584. package/dist/server/javascriptApplicationResult.js +0 -106
  585. package/dist/server/permissionFailure.js +0 -12
  586. package/dist/server/registerApplicationTools/readiness.js +0 -50
  587. package/dist/server/registerEvidenceResources.js +0 -315
  588. package/dist/server/registerJavaScriptApplicationGraphResource.js +0 -65
  589. package/dist/server/registerReconstructionObligationLedgerResource.js +0 -32
  590. package/dist/server/registerReconstructionReadinessResource.js +0 -32
@@ -10,11 +10,10 @@ const EXTENSIONS = [
10
10
  ".html",
11
11
  ".node",
12
12
  ];
13
- const MAX_PACKAGE_DEPTH = 4;
14
13
  const NODE_BUILTINS = new Set(builtinModules.map((name) => name.replace(/^node:/u, "")));
15
14
  /** Resolve one declaration under its exact syntax/metadata context. */
16
- export const resolveArtifactPathByContext = (input) => resolveAtDepth(input, 0);
17
- const resolveAtDepth = (input, packageDepth) => {
15
+ export const resolveArtifactPathByContext = (input) => resolvePackagePath(input, new Set());
16
+ const resolvePackagePath = (input, packageChain) => {
18
17
  const rejected = rejectDeclaration(input);
19
18
  if (rejected !== null)
20
19
  return rejected;
@@ -24,23 +23,21 @@ const resolveAtDepth = (input, packageDepth) => {
24
23
  const confined = confineCandidate(input, candidate);
25
24
  if (typeof confined !== "string")
26
25
  return confined;
27
- const resolved = resolveCandidate(input, confined, packageDepth);
28
- return outcome(input, resolved.status, resolved.resolvedPath, resolved.limitations);
26
+ const resolved = resolveCandidate(input, confined, packageChain);
27
+ return outcome(input, resolved);
29
28
  };
30
29
  const rejectDeclaration = (input) => {
31
30
  const declared = input.declaredPath;
32
31
  if (declared.length === 0)
33
- return outcome(input, "rejected", null, ["The declared path is empty."]);
34
- if (declared.length > 4_096)
35
- return outcome(input, "rejected", null, [
36
- "The declared path exceeds the 4096-character resolution bound.",
32
+ return unresolvedOutcome(input, "rejected", [
33
+ "The declared path is empty.",
37
34
  ]);
38
35
  if (declared.includes("\0") || declared.includes("\\"))
39
- return outcome(input, "rejected", null, [
36
+ return unresolvedOutcome(input, "rejected", [
40
37
  "NUL and backslash path syntax are not admitted for canonical artifact paths.",
41
38
  ]);
42
39
  if (/%(?:2e|2f|5c)/iu.test(declared))
43
- return outcome(input, "rejected", null, [
40
+ return unresolvedOutcome(input, "rejected", [
44
41
  "Encoded dot or separator bytes are rejected before artifact path resolution.",
45
42
  ]);
46
43
  return null;
@@ -57,14 +54,14 @@ const contextualCandidate = (input) => {
57
54
  if (fileUrl !== undefined)
58
55
  return fileUrl;
59
56
  if (hasScheme(declared))
60
- return outcome(input, "external", null, [
57
+ return unresolvedOutcome(input, "external", [
61
58
  "URL and Node builtin schemes are outside static artifact module resolution.",
62
59
  ]);
63
60
  if (!declared.startsWith(".") && !declared.startsWith("/"))
64
61
  return bareModuleCandidate(input, declared);
65
62
  }
66
63
  else if (hasScheme(declared))
67
- return outcome(input, "external", null, [
64
+ return unresolvedOutcome(input, "external", [
68
65
  "URL schemes are outside this local artifact path context.",
69
66
  ]);
70
67
  const relative = declared.startsWith("/") ? declared.slice(1) : declared;
@@ -77,11 +74,11 @@ const bareModuleCandidate = (input, declared) => {
77
74
  if (packageName === null ||
78
75
  NODE_BUILTINS.has(packageName) ||
79
76
  declared.startsWith("#"))
80
- return outcome(input, "external", null, [
77
+ return unresolvedOutcome(input, "external", [
81
78
  "The bare specifier is a Node builtin, package import map, or invalid package name.",
82
79
  ]);
83
80
  if (declared !== packageName)
84
- return outcome(input, "external", null, [
81
+ return unresolvedOutcome(input, "external", [
85
82
  "Bare package subpaths remain unresolved unless an exact package-exports subpath model is available.",
86
83
  ]);
87
84
  const source = input.files.get(input.sourcePath);
@@ -94,7 +91,7 @@ const bareModuleCandidate = (input, declared) => {
94
91
  break;
95
92
  directory = posix.dirname(directory);
96
93
  }
97
- return outcome(input, "external", null, [
94
+ return unresolvedOutcome(input, "external", [
98
95
  "No matching bare package was inventoried in an enclosing node_modules directory.",
99
96
  ]);
100
97
  };
@@ -115,7 +112,7 @@ const hasContainerCandidate = (files, candidate, containerSha256) => [...directC
115
112
  const htmlCandidate = (input) => {
116
113
  const declared = stripQueryAndFragment(input.declaredPath);
117
114
  if (hasScheme(declared))
118
- return outcome(input, "external", null, [
115
+ return unresolvedOutcome(input, "external", [
119
116
  "External HTML references are not mapped to local artifact assets.",
120
117
  ]);
121
118
  if (declared.startsWith("/"))
@@ -124,7 +121,7 @@ const htmlCandidate = (input) => {
124
121
  if (base === undefined || base === null || base === "")
125
122
  return posix.join(posix.dirname(input.sourcePath), declared);
126
123
  if (hasScheme(base))
127
- return outcome(input, "external", null, [
124
+ return unresolvedOutcome(input, "external", [
128
125
  "The document base href is external, so its script reference is not a local artifact path.",
129
126
  ]);
130
127
  const basePath = base.startsWith("/")
@@ -138,12 +135,12 @@ const confineCandidate = (input, candidate) => {
138
135
  if (normalized === ".." ||
139
136
  normalized.startsWith("../") ||
140
137
  normalized.startsWith("/"))
141
- return outcome(input, "rejected", null, [
138
+ return unresolvedOutcome(input, "rejected", [
142
139
  "The resolved candidate escapes the canonical artifact root.",
143
140
  ]);
144
141
  return normalized === "." ? "" : normalized;
145
142
  };
146
- const resolveCandidate = (input, candidate, packageDepth) => {
143
+ const resolveCandidate = (input, candidate, packageChain) => {
147
144
  const source = input.files.get(input.sourcePath);
148
145
  for (const path of directCandidates(candidate)) {
149
146
  const target = input.files.get(path);
@@ -152,14 +149,6 @@ const resolveCandidate = (input, candidate, packageDepth) => {
152
149
  target.container_sha256 === source.container_sha256))
153
150
  return { resolvedPath: path, status: "resolved", limitations: [] };
154
151
  }
155
- if (packageDepth >= MAX_PACKAGE_DEPTH)
156
- return {
157
- resolvedPath: null,
158
- status: "unavailable",
159
- limitations: [
160
- `Directory package resolution exceeded its ${String(MAX_PACKAGE_DEPTH)}-package recursion bound.`,
161
- ],
162
- };
163
152
  const packagePath = posix.join(candidate, "package.json");
164
153
  const packageFile = input.files.get(packagePath);
165
154
  if (packageFile === undefined ||
@@ -174,28 +163,42 @@ const resolveCandidate = (input, candidate, packageDepth) => {
174
163
  `Directory package metadata ${packagePath} was inventoried but its text is unavailable: ${packageFile.text.reason}.`,
175
164
  ],
176
165
  };
166
+ if (packageChain.has(packagePath))
167
+ return {
168
+ resolvedPath: null,
169
+ status: "unavailable",
170
+ limitations: [
171
+ `Directory package entrypoint cycle includes ${packagePath}.`,
172
+ ],
173
+ };
177
174
  const main = packageEntry(packageFile.text.value, input.moduleKind);
178
175
  if (main.status === "invalid")
179
176
  return {
180
177
  resolvedPath: null,
181
178
  status: "unavailable",
182
179
  limitations: [
183
- `Directory package metadata ${packagePath} is not valid bounded package JSON.`,
180
+ `Directory package metadata ${packagePath} is not valid package JSON.`,
184
181
  ],
185
182
  };
186
183
  if (main.status === "missing")
187
184
  return notFoundCandidate();
188
- const nested = resolveAtDepth({
185
+ const nested = resolvePackagePath({
189
186
  declaredPath: main.value,
190
187
  sourcePath: packagePath,
191
188
  context: "package-entrypoint",
192
189
  files: input.files,
193
- }, packageDepth + 1);
194
- return {
195
- resolvedPath: nested.resolved_path,
196
- status: nested.resolution_status,
197
- limitations: nested.limitations,
198
- };
190
+ }, new Set([...packageChain, packagePath]));
191
+ return nested.resolution_status === "resolved"
192
+ ? {
193
+ resolvedPath: nested.resolved_path,
194
+ status: nested.resolution_status,
195
+ limitations: nested.limitations,
196
+ }
197
+ : {
198
+ resolvedPath: null,
199
+ status: nested.resolution_status,
200
+ limitations: nested.limitations,
201
+ };
199
202
  };
200
203
  const directCandidates = (candidate) => [
201
204
  candidate,
@@ -216,7 +219,7 @@ const packageEntry = (text, moduleKind) => {
216
219
  const entry = preferred.find((candidate) => candidate !== undefined);
217
220
  if (entry === undefined)
218
221
  return { status: "missing" };
219
- return boundedPackagePath(entry);
222
+ return packagePathValue(entry);
220
223
  }
221
224
  catch {
222
225
  return { status: "invalid" };
@@ -224,25 +227,25 @@ const packageEntry = (text, moduleKind) => {
224
227
  };
225
228
  const packageExport = (value, moduleKind) => {
226
229
  if (typeof value === "string")
227
- return boundedPackagePath(value);
230
+ return packagePathValue(value);
228
231
  if (typeof value !== "object" || value === null || Array.isArray(value))
229
232
  return { status: "invalid" };
230
233
  const root = Reflect.get(value, ".") ?? value;
231
234
  if (typeof root === "string")
232
- return boundedPackagePath(root);
235
+ return packagePathValue(root);
233
236
  if (typeof root !== "object" || root === null || Array.isArray(root))
234
237
  return { status: "invalid" };
235
238
  const condition = Reflect.get(root, moduleKind ?? "default") ?? Reflect.get(root, "default");
236
- return boundedPackagePath(condition);
239
+ return packagePathValue(condition);
237
240
  };
238
- const boundedPackagePath = (value) => typeof value === "string" && value.length > 0 && value.length <= 4_096
241
+ const packagePathValue = (value) => typeof value === "string" && value.length > 0
239
242
  ? { status: "value", value }
240
243
  : { status: "invalid" };
241
244
  const notFoundCandidate = () => ({
242
245
  resolvedPath: null,
243
246
  status: "not-found",
244
247
  limitations: [
245
- "No bounded extension, directory package, or index candidate exists in the inventoried artifact container.",
248
+ "No extension, directory package, or index candidate exists in the inventoried artifact container.",
246
249
  ],
247
250
  });
248
251
  const hasScheme = (value) => /^[A-Za-z][A-Za-z+.-]*:/u.test(value);
@@ -260,10 +263,19 @@ const fileUrlPath = (value) => {
260
263
  }
261
264
  };
262
265
  const stripQueryAndFragment = (value) => value.split("#", 1)[0]?.split("?", 1)[0] ?? "";
263
- const outcome = (input, status, resolvedPath, limitations) => ({
264
- declared_path: input.declaredPath,
265
- resolution_context: input.context,
266
- resolved_path: resolvedPath,
267
- resolution_status: status,
268
- limitations,
269
- });
266
+ const outcome = (input, resolution) => resolution.status === "resolved"
267
+ ? {
268
+ declared_path: input.declaredPath,
269
+ resolution_context: input.context,
270
+ resolved_path: resolution.resolvedPath,
271
+ resolution_status: resolution.status,
272
+ limitations: resolution.limitations,
273
+ }
274
+ : {
275
+ declared_path: input.declaredPath,
276
+ resolution_context: input.context,
277
+ resolved_path: null,
278
+ resolution_status: resolution.status,
279
+ limitations: resolution.limitations,
280
+ };
281
+ const unresolvedOutcome = (input, status, limitations) => outcome(input, { resolvedPath: null, status, limitations });
@@ -1,12 +1,11 @@
1
1
  import { lstat, realpath } from "node:fs/promises";
2
- import { performance } from "node:perf_hooks";
3
2
  import { AsarArtifactReader } from "../artifacts/AsarArtifactReader.js";
4
3
  import { ArtifactReaderFailure, } from "../artifacts/ArtifactReader.js";
5
4
  import { DirectoryArtifactReader } from "../artifacts/DirectoryArtifactReader.js";
6
5
  import { analyzeJavaScriptArtifactFiles } from "./JavaScriptArtifactAnalysis.js";
7
6
  import { readJavaScriptArtifactFiles } from "./JavaScriptArtifactFiles.js";
8
7
  import { buildJavaScriptArtifactGraph } from "./JavaScriptArtifactGraphBuilder.js";
9
- import { artifactLimitsForReconstruction, javascriptArtifactReconstructionInputSchema, } from "./JavaScriptArtifactReconstructionInput.js";
8
+ import { javascriptArtifactReconstructionInputSchema, } from "./JavaScriptArtifactReconstructionInput.js";
10
9
  import { scanCanonicalArtifactInventory } from "./ArtifactInventory.js";
11
10
  import { summarizeElectronBoundaries } from "./ElectronBoundaryAnalysis.js";
12
11
  import { buildJavaScriptSemanticGraph } from "./JavaScriptSemanticGraphBuilder.js";
@@ -16,15 +15,15 @@ export const reconstructJavaScriptArtifact = async (rawInput, signal) => {
16
15
  abortIfNeeded(signal);
17
16
  const path = await realpath(input.input_path);
18
17
  const format = await resolveFormat(path, input);
19
- const snapshot = await scanCanonicalArtifactInventory(path, artifactLimitsForReconstruction(input), { signal });
18
+ const snapshot = await scanCanonicalArtifactInventory(path, { signal });
20
19
  if (snapshot.manifest.root_format !== format)
21
20
  throw new ArtifactReaderFailure("format", `Artifact inventory classified ${path} as ${snapshot.manifest.root_format}, not ${format}`);
22
21
  const reader = createReader(path, format);
23
22
  try {
24
- const files = await readJavaScriptArtifactFiles(reader, snapshot, input, signal);
25
- const analysis = analyzeJavaScriptArtifactFiles(files, input, () => performance.now());
23
+ const files = await readJavaScriptArtifactFiles(reader, snapshot, signal);
24
+ const analysis = analyzeJavaScriptArtifactFiles(files);
26
25
  abortIfNeeded(signal);
27
- const graph = buildJavaScriptArtifactGraph(snapshot, files, analysis, input);
26
+ const graph = buildJavaScriptArtifactGraph(snapshot, files, analysis);
28
27
  const semanticGraph = buildJavaScriptSemanticGraph({
29
28
  rootArtifactSha256: snapshot.manifest.root_sha256,
30
29
  applicationGraph: graph,
@@ -42,11 +41,7 @@ export const reconstructJavaScriptArtifact = async (rawInput, signal) => {
42
41
  statistics: {
43
42
  relevant_files: files.files.length,
44
43
  nested_asar_containers: files.containers.length,
45
- text_files_selected: files.text_files_selected,
46
44
  text_bytes_read: files.text_bytes_read,
47
- omitted_text_files: files.omitted_text_files,
48
- limit_omitted_text_files: files.limit_omitted_text_files,
49
- policy_filtered_text_files: files.policy_filtered_text_files,
50
45
  invalid_utf8_files: files.invalid_utf8_files,
51
46
  parsed_javascript_files: analysis.files.filter(({ javascript }) => javascript !== null).length,
52
47
  visited_ast_nodes: analysis.visited_ast_nodes,
@@ -1,18 +1,6 @@
1
1
  import { z } from "zod";
2
- import { JAVASCRIPT_APPLICATION_ANALYSIS_DEFAULT_LIMITS, javascriptApplicationAnalysisLimitsSchema, } from "../domain/javascriptApplicationAnalysis.js";
3
- /** Local ASAR/directory reconstruction request with explicit source-map authority. */
2
+ /** Local ASAR/directory reconstruction request. */
4
3
  export const javascriptArtifactReconstructionInputSchema = z.strictObject({
5
- input_path: z.string().min(1).max(16_384),
4
+ input_path: z.string().min(1),
6
5
  format: z.enum(["auto", "asar", "directory"]).default("auto"),
7
- source_map_read_approved: z.boolean().default(false),
8
- limits: javascriptApplicationAnalysisLimitsSchema.default(JAVASCRIPT_APPLICATION_ANALYSIS_DEFAULT_LIMITS),
9
- });
10
- /** Project reconstruction limits into the shared artifact traversal policy. */
11
- export const artifactLimitsForReconstruction = (input) => ({
12
- maxEntries: input.limits.max_entries,
13
- maxTotalBytes: input.limits.max_total_artifact_bytes,
14
- maxEntryBytes: input.limits.max_artifact_entry_bytes,
15
- maxCompressionRatio: input.limits.max_compression_ratio,
16
- maxDepth: input.limits.max_depth,
17
- maxPathBytes: input.limits.max_path_bytes,
18
6
  });
@@ -26,13 +26,13 @@ export const analyzeJavaScriptJsonModule = (file) => {
26
26
  const keys = typeof value === "object" && value !== null && !Array.isArray(value)
27
27
  ? Object.keys(value).sort(compareCodePoints)
28
28
  : [];
29
- const retained = keys.slice(0, 128);
29
+ const retained = keys;
30
30
  return {
31
31
  path: file.path,
32
32
  sha256: file.sha256,
33
33
  status: "included",
34
34
  top_level_keys: retained,
35
- omitted_top_level_keys: keys.length - retained.length,
35
+ omitted_top_level_keys: 0,
36
36
  limitation: null,
37
37
  };
38
38
  };
@@ -1,7 +1,8 @@
1
1
  import { posix } from "node:path";
2
+ import { completeApplicationCoverage, partialApplicationCoverage, } from "../domain/javascriptApplicationEvidenceSchemas.js";
2
3
  import { addAstContainsEdge, artifactLocalIdentity, } from "./JavaScriptArtifactGraphContext.js";
3
- import { astObservationEvidence, completeReconstructionCoverage, partialReconstructionCoverage, staticInferenceEvidence, } from "./JavaScriptArtifactGraphEvidence.js";
4
- import { resolveArtifactPathByContext } from "./JavaScriptArtifactPathResolution.js";
4
+ import { astObservationEvidence, staticInferenceEvidence, } from "./JavaScriptArtifactGraphEvidence.js";
5
+ import { resolveArtifactPathByContext, } from "./JavaScriptArtifactPathResolution.js";
5
6
  import { projectJavaScriptExportReturnShapes } from "./JavaScriptReturnShapeProjection.js";
6
7
  /** Create one path-scoped source-module identity for every analyzed source file. */
7
8
  export const addJavaScriptSourceModules = (context) => {
@@ -14,7 +15,7 @@ export const addJavaScriptSourceModules = (context) => {
14
15
  const exports = semantic.ir.moduleLinks
15
16
  .flatMap(({ exportedName }) => exportedName === null ? [] : [exportedName])
16
17
  .sort(compareCodePoints);
17
- const retainedExports = [...new Set(exports)].slice(0, 128);
18
+ const retainedExports = [...new Set(exports)];
18
19
  const source = context.accumulator.addNode({
19
20
  kind: "javascript-module",
20
21
  identity: artifactLocalIdentity(file.sha256, "source-module", `${file.container_sha256}:${file.path}`),
@@ -30,7 +31,7 @@ export const addJavaScriptSourceModules = (context) => {
30
31
  import_relationships: semantic.ir.moduleLinks.filter(({ kind }) => kind === "import" || kind === "require").length,
31
32
  export_relationships: exports.length,
32
33
  export_names: retainedExports,
33
- omitted_export_names: Math.max(0, exports.length - retainedExports.length),
34
+ omitted_export_names: 0,
34
35
  },
35
36
  evidence: astObservationEvidence({
36
37
  sha256: file.sha256,
@@ -161,25 +162,25 @@ const resolveModuleTarget = (input, specifier) => {
161
162
  ? "require"
162
163
  : "import",
163
164
  });
164
- const path = resolution.resolved_path;
165
- const file = path === null ? undefined : input.context.filesByPath.get(path);
166
- const node = path === null
167
- ? undefined
168
- : (input.context.sourceModuleNodes.get(path) ??
169
- input.context.fileNodes.get(path));
170
- if (path !== null && file !== undefined && node !== undefined)
165
+ if (resolution.resolution_status !== "resolved")
171
166
  return {
172
- node,
173
- path,
174
- file,
175
- status: "resolved",
167
+ node: unresolvedModuleNode(input, specifier, resolution.resolution_status),
168
+ path: null,
169
+ file: null,
170
+ status: resolution.resolution_status,
176
171
  limitations: resolution.limitations,
177
172
  };
173
+ const path = resolution.resolved_path;
174
+ const file = input.context.filesByPath.get(path);
175
+ const node = input.context.sourceModuleNodes.get(path) ??
176
+ input.context.fileNodes.get(path);
177
+ if (file === undefined || node === undefined)
178
+ throw new TypeError(`Resolved artifact path ${path} is absent from its graph context.`);
178
179
  return {
179
- node: unresolvedModuleNode(input, specifier, resolution.resolution_status),
180
- path: null,
181
- file: null,
182
- status: resolution.resolution_status,
180
+ node,
181
+ path,
182
+ file,
183
+ status: "resolved",
183
184
  limitations: resolution.limitations,
184
185
  };
185
186
  };
@@ -243,14 +244,9 @@ const relationshipEvidence = (input, operation, limitations, confidence = "high"
243
244
  limitations: [...input.semantic.ir.limitations, ...limitations],
244
245
  });
245
246
  const semanticCoverage = (semantic) => {
246
- const limits = Object.entries(semantic.limits).map(([name, value]) => ({
247
- name: `semantic-${camelToKebab(name)}`,
248
- value,
249
- unit: "items",
250
- }));
251
247
  if (semantic.ir.coverage.status === "complete")
252
- return completeReconstructionCoverage(limits);
253
- return partialReconstructionCoverage(limits, semantic.ir.coverage.omittedCount, semantic.ir.coverage.status === "truncated");
248
+ return completeApplicationCoverage();
249
+ return partialApplicationCoverage([], semantic.ir.coverage.omittedCount);
254
250
  };
255
251
  const moduleFormat = (path, ir) => {
256
252
  const extension = posix.extname(path).toLowerCase();
@@ -282,5 +278,4 @@ const jsonStatus = (file) => {
282
278
  const isExportLink = (link) => link.kind === "export" ||
283
279
  link.kind === "re-export" ||
284
280
  link.kind === "commonjs-export";
285
- const camelToKebab = (value) => value.replaceAll(/([a-z])([A-Z])/gu, "$1-$2").toLowerCase();
286
281
  const compareCodePoints = (left, right) => left < right ? -1 : left > right ? 1 : 0;
@@ -11,8 +11,14 @@ const REPLAY_POLICY_DOCUMENT = Object.freeze({
11
11
  resource_manager: "systemd-user-cgroup-v2",
12
12
  nested_user_namespaces: false,
13
13
  });
14
+ const assertReplayManifestWithinProtocolLimit = (input) => {
15
+ if (new TextEncoder().encode(JSON.stringify(input)).byteLength >
16
+ input.limits.protocol_bytes)
17
+ throw new RangeError("Replay plan input exceeds its protocol byte limit");
18
+ };
14
19
  /** Read, normalize, and content-address every input to one replay experiment. */
15
20
  export const prepareReplayPlan = async (input, policy, host) => {
21
+ assertReplayManifestWithinProtocolLimit(input);
16
22
  const cases = replayCases(input).map((item) => ({
17
23
  ...item,
18
24
  sha256: digestJson(item.arguments),
@@ -34,7 +40,6 @@ export const prepareReplayPlan = async (input, policy, host) => {
34
40
  : prepareSide(input.right, input.limits.module_bytes, host),
35
41
  ]);
36
42
  const withoutDigest = {
37
- schema_version: 1,
38
43
  policy_version: REPLAY_POLICY_VERSION,
39
44
  policy_sha256: digestJson(REPLAY_POLICY_DOCUMENT),
40
45
  network: "none",
@@ -70,14 +75,13 @@ export const prepareReplayPlan = async (input, policy, host) => {
70
75
  "Perform no host filesystem writes and expose no host or external network",
71
76
  ...(input.reproducer_export === undefined
72
77
  ? []
73
- : ["Write one separately approved reproducer after sandbox cleanup"]),
78
+ : ["Write one reproducer after sandbox cleanup"]),
74
79
  ],
75
80
  reproducer_export: input.reproducer_export === undefined
76
81
  ? null
77
82
  : {
78
83
  path: input.reproducer_export.path,
79
84
  include_sources: input.reproducer_export.include_sources,
80
- authority: "evidence_write",
81
85
  },
82
86
  };
83
87
  const publicPlan = {
@@ -105,6 +109,8 @@ const prepareSide = async (side, maximumBytes, host) => {
105
109
  if (remaining <= 0)
106
110
  throw new RangeError("Replay module bytes exceed the aggregate limit");
107
111
  const source = await host.readSource(module.path, remaining);
112
+ if (source.bytes.byteLength > remaining)
113
+ throw new RangeError("Replay module bytes exceed the aggregate limit");
108
114
  totalBytes += source.bytes.byteLength;
109
115
  loaded.push({ module, source });
110
116
  }
@@ -1,7 +1,8 @@
1
+ import { projectPermissionFailure } from "./PermissionFailure.js";
1
2
  import { z } from "zod";
2
3
  import writeFileAtomic from "write-file-atomic";
3
4
  import { controlledReplayInputSchema, replayExecutionResultSchema, controlledReplayOutputSchema, replayEvidenceSchema, } from "../domain/javascriptReplay.js";
4
- import { AnalysisCapabilityUnavailableError, AnalysisCancelledError, AnalysisInputError, AnalysisProtocolError, PermissionRequiredError, ReplayPlanStaleError, } from "../domain/errors.js";
5
+ import { AnalysisCapabilityUnavailableError, AnalysisCancelledError, AnalysisInputError, AnalysisProtocolError, ReplayPlanStaleError, } from "../domain/errors.js";
5
6
  import { createEvidence } from "../domain/evidence.js";
6
7
  import { projectInputIssues } from "../domain/inputIssueProjection.js";
7
8
  import { jsonValueSchema } from "../domain/jsonValue.js";
@@ -36,7 +37,7 @@ export const runControlledReplayValidated = async (dependencies, input, options
36
37
  }));
37
38
  if (input.plan_digest !== prepared.value.publicPlan.plan_digest)
38
39
  return err(new ReplayPlanStaleError(input.plan_digest, prepared.value.publicPlan.plan_digest));
39
- const exportContext = await authorizeReproducerExport(dependencies.authority, input, prepared.value);
40
+ const exportContext = await authorizeReproducerExport(input);
40
41
  if (!exportContext.ok)
41
42
  return exportContext;
42
43
  const executed = await executeValidatedReplay({
@@ -69,11 +70,7 @@ const authorizeReplay = async (dependencies, policy, input, signal) => {
69
70
  ? await dependencies.authority.explain(request, "read")
70
71
  : await dependencies.authority.authorize(request, "read");
71
72
  if (!authorized.ok)
72
- return err(authorized.error instanceof PermissionRequiredError
73
- ? authorized.error
74
- : new AnalysisProtocolError(authorized.error.message, {
75
- cause: authorized.error,
76
- }));
73
+ return err(projectPermissionFailure(authorized.error));
77
74
  return ok(policy);
78
75
  };
79
76
  const prepareValidatedReplay = async (dependencies, policy, input, signal) => {
@@ -86,33 +83,11 @@ const prepareValidatedReplay = async (dependencies, policy, input, signal) => {
86
83
  return err(new AnalysisCapabilityUnavailableError("rea-javascript-replay", OPERATION, cause instanceof Error ? cause.message : "replay planning failed"));
87
84
  }
88
85
  };
89
- const authorizeReproducerExport = async (authority, input, prepared) => {
86
+ const authorizeReproducerExport = (input) => {
90
87
  if (input.reproducer_export === undefined)
91
88
  return ok(undefined);
92
- if (authority === undefined)
93
- return err(new AnalysisCapabilityUnavailableError("rea-javascript-replay", OPERATION, "JavaScript replay permission policy is not configured"));
94
- const exportAuthorized = await authority.authorize({
95
- capability: "evidence_write",
96
- roots: [input.reproducer_export.path],
97
- executables: [],
98
- environment_names: [],
99
- network: "none",
100
- mount: false,
101
- operation_identity: `${OPERATION}:reproducer:${prepared.publicPlan.plan_digest}`,
102
- }, "write");
103
- if (!exportAuthorized.ok)
104
- return err(exportAuthorized.error instanceof PermissionRequiredError
105
- ? exportAuthorized.error
106
- : new AnalysisProtocolError(exportAuthorized.error.message, {
107
- cause: exportAuthorized.error,
108
- }));
109
- const canonicalExportPath = exportAuthorized.value.request.roots[0];
110
- if (canonicalExportPath !== input.reproducer_export.path)
111
- return err(new AnalysisInputError(`${OPERATION}:reproducer_export:path`, {
112
- cause: new TypeError(`Use the canonical reproducer path: ${canonicalExportPath ?? "unavailable"}`),
113
- }));
114
89
  return ok({
115
- path: canonicalExportPath,
90
+ path: input.reproducer_export.path,
116
91
  includeSources: input.reproducer_export.include_sources === true,
117
92
  });
118
93
  };
@@ -151,7 +126,6 @@ const applyReproducerExport = async (executed, exportContext, prepared) => {
151
126
  if (exportContext === undefined || executed.cleanup.state !== "complete")
152
127
  return executed;
153
128
  const manifest = {
154
- schema_version: 1,
155
129
  plan: prepared.publicPlan,
156
130
  result: executed,
157
131
  sources: exportContext.includeSources
@@ -1,9 +1,6 @@
1
1
  import { jsonObjectSchema, jsonValueSchema } from "../domain/jsonValue.js";
2
+ import { partialApplicationCoverage, truncatedApplicationCoverage, } from "../domain/javascriptApplicationEvidenceSchemas.js";
2
3
  import { flattenSemanticReturnValue } from "../domain/javascriptSemanticReturns.js";
3
- import { partialReconstructionCoverage } from "./JavaScriptArtifactGraphEvidence.js";
4
- const MAX_PROJECTED_RETURN_SHAPES = 32;
5
- const MAX_PROJECTED_RETURN_FIELDS = 64;
6
- const MAX_PROJECTED_PROPERTY_COVERAGE = 64;
7
4
  /** Project one exact export/callable link into shallow bounded graph values. */
8
5
  export const projectJavaScriptExportReturnShapes = (input) => {
9
6
  if (input.link.callableId === null || input.link.exportedName === null)
@@ -19,26 +16,13 @@ export const projectJavaScriptExportReturnShapes = (input) => {
19
16
  const complete = input.baseCoverage.status === "complete" &&
20
17
  callable.returnCoverage.status === "complete" &&
21
18
  projectionOmitted === 0;
19
+ const limits = input.baseCoverage.limits;
20
+ const omitted = semanticOmitted === null ? null : semanticOmitted + projectionOmitted;
22
21
  const coverage = complete
23
22
  ? input.baseCoverage
24
- : partialReconstructionCoverage([
25
- ...input.baseCoverage.limits,
26
- {
27
- name: "return-shape-sites",
28
- value: MAX_PROJECTED_RETURN_SHAPES,
29
- unit: "items",
30
- },
31
- {
32
- name: "return-shape-fields",
33
- value: MAX_PROJECTED_RETURN_FIELDS,
34
- unit: "items",
35
- },
36
- {
37
- name: "return-shape-property-coverage",
38
- value: MAX_PROJECTED_PROPERTY_COVERAGE,
39
- unit: "items",
40
- },
41
- ], semanticOmitted === null ? null : semanticOmitted + projectionOmitted, callable.returnCoverage.status === "truncated" || projectionOmitted > 0);
23
+ : projectionOmitted > 0
24
+ ? truncatedApplicationCoverage(limits, omitted)
25
+ : partialApplicationCoverage(limits, omitted);
42
26
  const limitations = [
43
27
  ...input.ir.limitations,
44
28
  "Return shapes are inferred from inert syntax and do not prove runtime behavior.",
@@ -47,9 +31,6 @@ export const projectJavaScriptExportReturnShapes = (input) => {
47
31
  "No direct return value was retained; runtime return behavior remains unknown.",
48
32
  ]
49
33
  : []),
50
- ...(projectionOmitted > 0
51
- ? ["Return-shape graph projection reached explicit retention limits."]
52
- : []),
53
34
  ];
54
35
  return {
55
36
  properties: jsonObjectSchema.parse({
@@ -76,25 +57,14 @@ export const projectJavaScriptExportReturnShapes = (input) => {
76
57
  };
77
58
  };
78
59
  const projectReturnSites = (callable) => {
79
- let retainedFields = 0;
80
- let retainedCoverage = 0;
81
- let omittedFields = 0;
82
- let omittedCoverage = 0;
83
- const retainedSites = callable.returnSites.slice(0, MAX_PROJECTED_RETURN_SHAPES);
60
+ const retainedSites = callable.returnSites;
84
61
  const shapes = retainedSites.map((site) => {
85
62
  const flattened = flattenSemanticReturnValue(site.value);
86
- const remainingFields = Math.max(0, MAX_PROJECTED_RETURN_FIELDS - retainedFields);
87
- const fields = flattened.fields.slice(0, remainingFields).map((field) => ({
63
+ const fields = flattened.fields.map((field) => ({
88
64
  ...field,
89
65
  value: jsonValueSchema.parse(field.value),
90
66
  }));
91
- retainedFields += fields.length;
92
- omittedFields += flattened.fields.length - fields.length;
93
- const remainingCoverage = Math.max(0, MAX_PROJECTED_PROPERTY_COVERAGE - retainedCoverage);
94
- const propertyCoverage = flattened.propertyCoverage.slice(0, remainingCoverage);
95
- retainedCoverage += propertyCoverage.length;
96
- omittedCoverage +=
97
- flattened.propertyCoverage.length - propertyCoverage.length;
67
+ const propertyCoverage = flattened.propertyCoverage;
98
68
  return {
99
69
  source_range: site.location,
100
70
  value_status: site.value.status,
@@ -104,8 +74,8 @@ const projectReturnSites = (callable) => {
104
74
  });
105
75
  return {
106
76
  shapes,
107
- omittedSites: callable.returnSites.length - retainedSites.length,
108
- omittedFields,
109
- omittedCoverage,
77
+ omittedSites: 0,
78
+ omittedFields: 0,
79
+ omittedCoverage: 0,
110
80
  };
111
81
  };