diff --git a/.oxlintrc.json b/.oxlintrc.json index 2da0945d6..a4618ad11 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -22,7 +22,8 @@ ], "max-params": ["warn", 4], "no-var": "warn", - "no-var-requires": "error" + "no-var-requires": "error", + "typescript/no-import-type-side-effects": "error" }, "overrides": [ { diff --git a/src/application/AnalysisContextQueries.ts b/src/application/AnalysisContextQueries.ts index b82ef410a..cdb008e1f 100644 --- a/src/application/AnalysisContextQueries.ts +++ b/src/application/AnalysisContextQueries.ts @@ -4,7 +4,7 @@ import type { AnalysisOperationPort, } from "./AnalysisProvider.js"; import { AnalysisOutputError } from "../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import type { JsonValue } from "../domain/jsonValue.js"; import { analysisBookmarkSchema } from "../domain/hopperValues.js"; import { resolveAnalysisDocument } from "./AnalysisDocument.js"; diff --git a/src/application/BrowserObservationService.ts b/src/application/BrowserObservationService.ts index 1852dab26..a080f1ef8 100644 --- a/src/application/BrowserObservationService.ts +++ b/src/application/BrowserObservationService.ts @@ -12,7 +12,7 @@ import type { CompareWebScreenshotsInput, } from "../domain/webScreenshot.js"; import { AnalysisCapabilityUnavailableError } from "../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { err, ok, type Result } from "../domain/result.js"; import type { ExecutionOptions } from "./AnalysisProvider.js"; import type { BrowserObservationPort } from "./BrowserObservationPort.js"; diff --git a/src/application/BrowserScenarioCaptureService.ts b/src/application/BrowserScenarioCaptureService.ts index ae3500625..3dbd488c6 100644 --- a/src/application/BrowserScenarioCaptureService.ts +++ b/src/application/BrowserScenarioCaptureService.ts @@ -2,7 +2,7 @@ import type { ExecutionOptions } from "./AnalysisProvider.js"; import type { BrowserScenarioCapturePort } from "./BrowserScenarioCapturePort.js"; import { createBrowserScenarioEvidence } from "./BrowserScenarioEvidence.js"; import { AnalysisCapabilityUnavailableError } from "../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import type { Evidence } from "../domain/evidence.js"; import type { BrowserScenario } from "../domain/browserScenario.js"; import { err, type Result } from "../domain/result.js"; diff --git a/src/application/CallPathTracing.ts b/src/application/CallPathTracing.ts index 7d24a3382..b6e9eb339 100644 --- a/src/application/CallPathTracing.ts +++ b/src/application/CallPathTracing.ts @@ -1,6 +1,6 @@ import type { AnalysisOperation } from "./AnalysisProvider.js"; import { projectAnalysisError } from "../domain/analysisErrorProjection.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { parseRelatedAddresses } from "../domain/hopperValues.js"; import type { JsonValue } from "../domain/jsonValue.js"; import { ok, type Result } from "../domain/result.js"; diff --git a/src/application/DirectAnalysis.ts b/src/application/DirectAnalysis.ts index fe9580793..c8108e614 100644 --- a/src/application/DirectAnalysis.ts +++ b/src/application/DirectAnalysis.ts @@ -18,7 +18,7 @@ import { } from "../contracts/managed/managedToolContracts.js"; import { EvidenceIntegrityError } from "../domain/evidenceErrors.js"; import { projectAnalysisError } from "../domain/analysisErrorProjection.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { access } from "node:fs/promises"; import { readAnalysisSnapshot, diff --git a/src/application/EnhancedLiteralTracing.ts b/src/application/EnhancedLiteralTracing.ts index 927838150..9c86781bc 100644 --- a/src/application/EnhancedLiteralTracing.ts +++ b/src/application/EnhancedLiteralTracing.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import type { AnalysisOperation } from "./AnalysisProvider.js"; import { AnalysisOutputError } from "../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import type { JsonValue } from "../domain/jsonValue.js"; import { err, ok, type Result } from "../domain/result.js"; import type { diff --git a/src/application/EnhancedToolTypes.ts b/src/application/EnhancedToolTypes.ts index 05cad4303..740e29ac4 100644 --- a/src/application/EnhancedToolTypes.ts +++ b/src/application/EnhancedToolTypes.ts @@ -1,7 +1,7 @@ import type { z } from "zod"; import { AnalysisInputError } from "../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import type { JsonValue } from "../domain/jsonValue.js"; import { err, type Result } from "../domain/result.js"; import { diff --git a/src/application/EnhancedTools.ts b/src/application/EnhancedTools.ts index d24fbceef..c4ec83c6c 100644 --- a/src/application/EnhancedTools.ts +++ b/src/application/EnhancedTools.ts @@ -12,7 +12,7 @@ import { AnalysisOutputError, } from "../domain/analysisErrorCore.js"; import { projectAnalysisError } from "../domain/analysisErrorProjection.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { addressDistance, functionDossierSchema, diff --git a/src/application/EvidenceBundleCommands.ts b/src/application/EvidenceBundleCommands.ts index 5f220e3a1..7b91c05c3 100644 --- a/src/application/EvidenceBundleCommands.ts +++ b/src/application/EvidenceBundleCommands.ts @@ -1,5 +1,5 @@ import { EvidenceIntegrityError } from "../domain/evidenceErrors.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import type { EvidenceBundle } from "../domain/evidenceBundle.js"; import type { JsonValue } from "../domain/jsonValue.js"; import { jsonValueSchema } from "../domain/jsonValue.js"; diff --git a/src/application/InventoryProjectionEvidence.ts b/src/application/InventoryProjectionEvidence.ts index bded3a721..eefc4a9d9 100644 --- a/src/application/InventoryProjectionEvidence.ts +++ b/src/application/InventoryProjectionEvidence.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { AnalysisProtocolError } from "../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { createEvidence, type Evidence, diff --git a/src/application/ReconstructionCoverageService.ts b/src/application/ReconstructionCoverageService.ts index 66cad4e76..bd17cf0ca 100644 --- a/src/application/ReconstructionCoverageService.ts +++ b/src/application/ReconstructionCoverageService.ts @@ -2,7 +2,7 @@ import { z } from "zod"; import { reconstructionCoverageEvaluationInputSchema } from "../domain/reconstructionCoverageInput.js"; import { AnalysisInputError } from "../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { evaluateReconstructionClosure } from "../domain/reconstructionCoverage.js"; import { jsonValueSchema, type JsonValue } from "../domain/jsonValue.js"; import { err, ok, type Result } from "../domain/result.js"; diff --git a/src/application/ReconstructionObligationLedgerService.ts b/src/application/ReconstructionObligationLedgerService.ts index 8314bff3b..e0b1f160a 100644 --- a/src/application/ReconstructionObligationLedgerService.ts +++ b/src/application/ReconstructionObligationLedgerService.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { AnalysisProtocolError } from "../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { createEvidence, type Evidence } from "../domain/evidence.js"; import { jsonObjectSchema, jsonValueSchema } from "../domain/jsonValue.js"; import { diff --git a/src/application/ReferenceSourceImport.ts b/src/application/ReferenceSourceImport.ts index 3b8ace1e7..769f8bb8c 100644 --- a/src/application/ReferenceSourceImport.ts +++ b/src/application/ReferenceSourceImport.ts @@ -18,9 +18,9 @@ import type { } from "../reference/ReferenceSourceReaderTypes.js"; import { parseReferenceSourceEntries } from "./ReferenceSourceImportEntries.js"; import { readReferenceSourceVcs } from "./ReferenceSourceVcsAdapter.js"; -import { - type ReferenceSourceImportError, - type ReferenceSourceImportOptions, +import type { + ReferenceSourceImportError, + ReferenceSourceImportOptions, } from "./ReferenceSourceImportTypes.js"; import { prepareReferenceSourceImport, diff --git a/src/application/Setup.fixture.ts b/src/application/Setup.fixture.ts index bf9a97810..1fae2d931 100644 --- a/src/application/Setup.fixture.ts +++ b/src/application/Setup.fixture.ts @@ -1,10 +1,10 @@ import { skillDestinations } from "./SetupSkill.js"; -import { - type ClientConfigurationInspection, - type ClientConfigurationResult, - type SetupHost, - type SetupOptions, - type SetupProviderEnvironment, +import type { + ClientConfigurationInspection, + ClientConfigurationResult, + SetupHost, + SetupOptions, + SetupProviderEnvironment, } from "./SetupTypes.js"; import type { SetupClient } from "./SupportedClients.js"; import type { SetupHopperInstallResult } from "./SetupInstallFailure.js"; diff --git a/src/application/binary/AnalysisSnapshotCache.ts b/src/application/binary/AnalysisSnapshotCache.ts index 7d807065c..295b21636 100644 --- a/src/application/binary/AnalysisSnapshotCache.ts +++ b/src/application/binary/AnalysisSnapshotCache.ts @@ -7,7 +7,7 @@ import { AnalysisSnapshotMismatchError, } from "../../domain/evidenceErrors.js"; import { NoBinaryOpenError } from "../../domain/configurationErrors.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { err, ok, type Result } from "../../domain/result.js"; import { analysisQueryId, diff --git a/src/application/binary/BinarySession.ts b/src/application/binary/BinarySession.ts index bcf4da184..d64e04f89 100644 --- a/src/application/binary/BinarySession.ts +++ b/src/application/binary/BinarySession.ts @@ -6,7 +6,7 @@ import { type AnalysisProfileCommitment, } from "../../domain/analysisProfile.js"; import { AnalysisCancelledError } from "../../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { err, ok, type Result } from "../../domain/result.js"; import type { JsonValue } from "../../domain/jsonValue.js"; import { createEvidence } from "../../domain/evidence.js"; diff --git a/src/application/binary/BinarySessionExecution.ts b/src/application/binary/BinarySessionExecution.ts index 6893308c3..996749aae 100644 --- a/src/application/binary/BinarySessionExecution.ts +++ b/src/application/binary/BinarySessionExecution.ts @@ -3,7 +3,7 @@ import type { BinaryTarget } from "../../domain/binaryTargetTypes.js"; import { AnalysisCapabilityUnavailableError } from "../../domain/analysisErrorCore.js"; import { NoBinaryOpenError } from "../../domain/configurationErrors.js"; import { ProviderAdapterError } from "../../domain/providerAdapterError.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import type { JsonValue } from "../../domain/jsonValue.js"; import type { EvidenceSubjectTarget } from "../../domain/evidence.js"; import { err, ok, type Result } from "../../domain/result.js"; diff --git a/src/application/binary/BinarySessionOpen.ts b/src/application/binary/BinarySessionOpen.ts index 1a7f635bc..714bed804 100644 --- a/src/application/binary/BinarySessionOpen.ts +++ b/src/application/binary/BinarySessionOpen.ts @@ -8,12 +8,12 @@ import { } from "../../domain/analysisSnapshot.js"; import type { AnalysisSnapshot } from "../../domain/analysisSnapshot.js"; import { parseBinaryTarget } from "../BinaryTargetResolver.js"; -import { type BinaryTarget } from "../../domain/binaryTargetTypes.js"; +import type { BinaryTarget } from "../../domain/binaryTargetTypes.js"; import { EvidenceIntegrityError, AnalysisSnapshotMismatchError, } from "../../domain/evidenceErrors.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { err, type Result } from "../../domain/result.js"; import type { SessionProviderRoute } from "./SessionProviderRouter.js"; import { SessionProviderRouter } from "./SessionProviderRouter.js"; diff --git a/src/application/binary/BinarySessionRecords.ts b/src/application/binary/BinarySessionRecords.ts index 884c02ff3..1f94dcdfd 100644 --- a/src/application/binary/BinarySessionRecords.ts +++ b/src/application/binary/BinarySessionRecords.ts @@ -9,8 +9,8 @@ import { EvidenceIntegrityError, AnalysisSnapshotMismatchError, } from "../../domain/evidenceErrors.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; -import { type UnknownRegistryError } from "../../domain/unknownRegistryError.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { UnknownRegistryError } from "../../domain/unknownRegistryError.js"; import type { RecordUnknownInput, ResidualUnknown, diff --git a/src/application/binary/SessionProviderRouter.ts b/src/application/binary/SessionProviderRouter.ts index 03bb028a4..dac5c183e 100644 --- a/src/application/binary/SessionProviderRouter.ts +++ b/src/application/binary/SessionProviderRouter.ts @@ -3,7 +3,7 @@ import type { AnalysisProfileCommitment } from "../../domain/analysisProfile.js" import type { BinaryTarget } from "../../domain/binaryTargetTypes.js"; import { AnalysisCapabilityUnavailableError } from "../../domain/analysisErrorCore.js"; import { ProviderSelectionError } from "../../domain/providerSelectionError.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { err, ok, type Result } from "../../domain/result.js"; import type { AnalysisClient, diff --git a/src/application/javascript/ElectronActiveObservationService.ts b/src/application/javascript/ElectronActiveObservationService.ts index 276dc5c17..5a4a84e1d 100644 --- a/src/application/javascript/ElectronActiveObservationService.ts +++ b/src/application/javascript/ElectronActiveObservationService.ts @@ -7,7 +7,7 @@ import { AnalysisCapabilityUnavailableError, AnalysisInputError, } from "../../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import type { Evidence } from "../../domain/evidence.js"; import type { ElectronActiveObservationInput } from "../../domain/javascript/electronActiveObservation.js"; import { err, type Result } from "../../domain/result.js"; diff --git a/src/application/javascript/ElectronObservationService.ts b/src/application/javascript/ElectronObservationService.ts index 4149db187..307738a0f 100644 --- a/src/application/javascript/ElectronObservationService.ts +++ b/src/application/javascript/ElectronObservationService.ts @@ -6,7 +6,7 @@ import type { ListElectronTargetsInput, } from "../../domain/javascript/electronObservation.js"; import { AnalysisCapabilityUnavailableError } from "../../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { err, ok, type Result } from "../../domain/result.js"; import { createElectronEvidence } from "./ElectronEvidence.js"; diff --git a/src/application/javascript/JavaScriptApplicationWorkflowService.ts b/src/application/javascript/JavaScriptApplicationWorkflowService.ts index cdee1f893..b76259801 100644 --- a/src/application/javascript/JavaScriptApplicationWorkflowService.ts +++ b/src/application/javascript/JavaScriptApplicationWorkflowService.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { AnalysisProtocolError } from "../../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import type { Evidence } from "../../domain/evidence.js"; import { analysisInputErrorFromIssues } from "../../domain/inputIssueProjection.js"; import { compareJavaScriptApplicationVersions } from "../../domain/javascript/javascriptApplicationVersionComparison.js"; diff --git a/src/application/javascript/JavaScriptRuntimeObservationService.ts b/src/application/javascript/JavaScriptRuntimeObservationService.ts index beb9c3142..e1192a441 100644 --- a/src/application/javascript/JavaScriptRuntimeObservationService.ts +++ b/src/application/javascript/JavaScriptRuntimeObservationService.ts @@ -6,7 +6,7 @@ import { AnalysisCancelledError, AnalysisCapabilityUnavailableError, } from "../../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import type { ListJavaScriptRuntimeTargetsInput, ObserveJavaScriptRuntimeInput, diff --git a/src/application/javascript/JavaScriptRuntimeReconciliationService.ts b/src/application/javascript/JavaScriptRuntimeReconciliationService.ts index ca96d81bc..6c2d0dbcf 100644 --- a/src/application/javascript/JavaScriptRuntimeReconciliationService.ts +++ b/src/application/javascript/JavaScriptRuntimeReconciliationService.ts @@ -2,7 +2,7 @@ import { resolve } from "node:path"; import { z } from "zod"; import { AnalysisProtocolError } from "../../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import type { Evidence } from "../../domain/evidence.js"; import { analysisInputErrorFromIssues } from "../../domain/inputIssueProjection.js"; import { diff --git a/src/application/javascript/JavaScriptSemanticTraceService.ts b/src/application/javascript/JavaScriptSemanticTraceService.ts index 24413df43..0a51a9398 100644 --- a/src/application/javascript/JavaScriptSemanticTraceService.ts +++ b/src/application/javascript/JavaScriptSemanticTraceService.ts @@ -4,7 +4,7 @@ import { AnalysisInputError, AnalysisProtocolError, } from "../../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { applicationGraphEvidenceInputError, parseApplicationGraphEvidence, diff --git a/src/application/managed/ManagedApplicationGraphService.ts b/src/application/managed/ManagedApplicationGraphService.ts index 5144cc897..c1a2c8f8c 100644 --- a/src/application/managed/ManagedApplicationGraphService.ts +++ b/src/application/managed/ManagedApplicationGraphService.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { AnalysisProtocolError } from "../../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { createEvidence, type Evidence, diff --git a/src/application/managed/ManagedMemberComparisonService.ts b/src/application/managed/ManagedMemberComparisonService.ts index 7f7ac75f6..1c0ac8456 100644 --- a/src/application/managed/ManagedMemberComparisonService.ts +++ b/src/application/managed/ManagedMemberComparisonService.ts @@ -11,7 +11,7 @@ import { import { parseManagedMemberEvidence } from "../../domain/managed/managedMemberComparisonMatch.js"; import { AnalysisProtocolError } from "../../domain/analysisErrorCore.js"; import { EvidenceIntegrityError } from "../../domain/evidenceErrors.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { createEvidence, type Evidence } from "../../domain/evidence.js"; import { jsonValueSchema } from "../../domain/jsonValue.js"; import { parseBinaryTarget } from "../BinaryTargetResolver.js"; diff --git a/src/application/managed/ManagedNativeVerificationService.ts b/src/application/managed/ManagedNativeVerificationService.ts index 7615bd098..09929198e 100644 --- a/src/application/managed/ManagedNativeVerificationService.ts +++ b/src/application/managed/ManagedNativeVerificationService.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { AnalysisProtocolError } from "../../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { createEvidence, type Evidence } from "../../domain/evidence.js"; import { jsonValueSchema } from "../../domain/jsonValue.js"; import { diff --git a/src/application/managed/ManagedReconstructionService.ts b/src/application/managed/ManagedReconstructionService.ts index 0fec81e13..3ac088319 100644 --- a/src/application/managed/ManagedReconstructionService.ts +++ b/src/application/managed/ManagedReconstructionService.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { AnalysisProtocolError } from "../../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { createEvidence, type Evidence } from "../../domain/evidence.js"; import { jsonValueSchema } from "../../domain/jsonValue.js"; import { diff --git a/src/artifacts/ArtifactProvider.ts b/src/artifacts/ArtifactProvider.ts index acf4eeedb..c51bd7f13 100644 --- a/src/artifacts/ArtifactProvider.ts +++ b/src/artifacts/ArtifactProvider.ts @@ -28,7 +28,7 @@ import { AnalysisUnsupportedTargetError, } from "../domain/analysisErrorCore.js"; import { ArtifactOperationError } from "../domain/artifactOperationError.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import type { JsonValue } from "../domain/jsonValue.js"; import { interfaceBuilderLimitsSchema } from "../domain/apple/interfaceBuilderGraph.js"; import { err, ok, type Result } from "../domain/result.js"; diff --git a/src/artifacts/extraction/ArtifactExtraction.ts b/src/artifacts/extraction/ArtifactExtraction.ts index f38f601c1..7dd23bcac 100644 --- a/src/artifacts/extraction/ArtifactExtraction.ts +++ b/src/artifacts/extraction/ArtifactExtraction.ts @@ -27,9 +27,9 @@ import { type IntegrityContradiction, } from "../../domain/artifactGraph.js"; import { AnalysisUnsupportedTargetError } from "../../domain/analysisErrorCore.js"; -import { - type ArtifactResourceOwner, - type ArtifactResourceScope, +import type { + ArtifactResourceOwner, + ArtifactResourceScope, } from "../ArtifactResourceScope.js"; import type { BinaryTarget } from "../../domain/binaryTargetTypes.js"; import type { ArtifactInventorySnapshot } from "../../domain/artifactInventorySnapshot.js"; diff --git a/src/artifacts/inventory/classify.ts b/src/artifacts/inventory/classify.ts index 6534fcfdf..c6c3fb353 100644 --- a/src/artifacts/inventory/classify.ts +++ b/src/artifacts/inventory/classify.ts @@ -12,7 +12,7 @@ import { zipPackageFormatForPath, } from "../../domain/zipPackageFormat.js"; import { ArtifactReaderFailure } from "../ArtifactReader.js"; -import { type ArtifactResourceOwner } from "../ArtifactResourceScope.js"; +import type { ArtifactResourceOwner } from "../ArtifactResourceScope.js"; import type { HashResult } from "../ArtifactHash.js"; import { hashStableRootArtifactHandle, diff --git a/src/artifacts/inventory/scanCanonical.ts b/src/artifacts/inventory/scanCanonical.ts index 098577311..1eb3a74d2 100644 --- a/src/artifacts/inventory/scanCanonical.ts +++ b/src/artifacts/inventory/scanCanonical.ts @@ -34,7 +34,7 @@ import { artifactManifestId, } from "../../domain/artifactIdentity.js"; import { classifyAndHashRootForInventory } from "./classify.js"; -import { type HashResult } from "../ArtifactHash.js"; +import type { HashResult } from "../ArtifactHash.js"; import { hashStableRootArtifact, hashStableRootArtifactHandle, diff --git a/src/browser/CdpBrowserProvider.ts b/src/browser/CdpBrowserProvider.ts index 72838626d..713871077 100644 --- a/src/browser/CdpBrowserProvider.ts +++ b/src/browser/CdpBrowserProvider.ts @@ -46,7 +46,7 @@ import { AnalysisError } from "../domain/analysisErrorBase.js"; import { AnalysisInputError } from "../domain/analysisErrorCore.js"; import { BrowserObservationError } from "../domain/browserObservationError.js"; import { ProviderAdapterError } from "../domain/providerAdapterError.js"; -import { type BrowserObservationOperation } from "../domain/browserObservationErrors.js"; +import type { BrowserObservationOperation } from "../domain/browserObservationErrors.js"; import { err, ok, type Result } from "../domain/result.js"; import { discoverCdpEndpoint, diff --git a/src/browser/CdpCaptureValues.ts b/src/browser/CdpCaptureValues.ts index 734d5e832..6d639a454 100644 --- a/src/browser/CdpCaptureValues.ts +++ b/src/browser/CdpCaptureValues.ts @@ -1,6 +1,6 @@ import { AnalysisCancelledError } from "../domain/analysisErrorCore.js"; import { BrowserObservationError } from "../domain/browserObservationError.js"; -import { type BrowserObservationOperation } from "../domain/browserObservationErrors.js"; +import type { BrowserObservationOperation } from "../domain/browserObservationErrors.js"; import { sanitizeBrowserUrl } from "../domain/browserObservation.js"; import { createWebTextArtifact } from "../domain/webContentArtifact.js"; diff --git a/src/browser/CdpConnection.ts b/src/browser/CdpConnection.ts index 2f6a3f04a..3c7e5e86a 100644 --- a/src/browser/CdpConnection.ts +++ b/src/browser/CdpConnection.ts @@ -4,7 +4,7 @@ import { AnalysisCancelledError } from "../domain/analysisErrorCore.js"; import { AnalysisError } from "../domain/analysisErrorBase.js"; import { BrowserObservationError } from "../domain/browserObservationError.js"; import { CdpCommandRejection } from "./CdpCommandRejection.js"; -import { type BrowserObservationOperation } from "../domain/browserObservationErrors.js"; +import type { BrowserObservationOperation } from "../domain/browserObservationErrors.js"; import { safeParseJson } from "../domain/safeJson.js"; import { WEB_RUNTIME_LIMITS } from "../domain/webRuntime.js"; diff --git a/src/browser/CdpElectronProvider.ts b/src/browser/CdpElectronProvider.ts index 8191a8ec2..7d42682cb 100644 --- a/src/browser/CdpElectronProvider.ts +++ b/src/browser/CdpElectronProvider.ts @@ -14,7 +14,7 @@ import { import { AnalysisError } from "../domain/analysisErrorBase.js"; import { BrowserObservationError } from "../domain/browserObservationError.js"; import { ProviderAdapterError } from "../domain/providerAdapterError.js"; -import { type BrowserObservationOperation } from "../domain/browserObservationErrors.js"; +import type { BrowserObservationOperation } from "../domain/browserObservationErrors.js"; import { err, ok, type Result } from "../domain/result.js"; import { discoverCdpEndpoint, diff --git a/src/browser/CdpEndpoint.ts b/src/browser/CdpEndpoint.ts index 178ebc65b..1d1b8c14b 100644 --- a/src/browser/CdpEndpoint.ts +++ b/src/browser/CdpEndpoint.ts @@ -5,7 +5,7 @@ import { z } from "zod"; import { AnalysisCancelledError } from "../domain/analysisErrorCore.js"; import { AnalysisError } from "../domain/analysisErrorBase.js"; import { BrowserObservationError } from "../domain/browserObservationError.js"; -import { type BrowserObservationOperation } from "../domain/browserObservationErrors.js"; +import type { BrowserObservationOperation } from "../domain/browserObservationErrors.js"; import { sanitizeBrowserUrl } from "../domain/browserObservation.js"; import { safeParseJson } from "../domain/safeJson.js"; diff --git a/src/browser/CdpPageCapture.ts b/src/browser/CdpPageCapture.ts index fdbc81fb4..2e3fa11af 100644 --- a/src/browser/CdpPageCapture.ts +++ b/src/browser/CdpPageCapture.ts @@ -2,7 +2,7 @@ import type { InspectWebPageInput } from "../domain/browserObservation.js"; import type { WebPageInspection } from "../domain/browserObservationSchemas.js"; import type { ProgressReporter } from "../application/ProgressReporter.js"; import { BrowserObservationError } from "../domain/browserObservationError.js"; -import { type BrowserObservationOperation } from "../domain/browserObservationErrors.js"; +import type { BrowserObservationOperation } from "../domain/browserObservationErrors.js"; import { stableWebResources } from "../domain/webInventory.js"; import type { CdpEndpointDiscovery, CdpEndpointTarget } from "./CdpEndpoint.js"; import { CdpConnection } from "./CdpConnection.js"; diff --git a/src/browser/CdpTargetSession.ts b/src/browser/CdpTargetSession.ts index 0c2b5b24f..3e1f6eb43 100644 --- a/src/browser/CdpTargetSession.ts +++ b/src/browser/CdpTargetSession.ts @@ -1,5 +1,5 @@ import { BrowserObservationError } from "../domain/browserObservationError.js"; -import { type BrowserObservationOperation } from "../domain/browserObservationErrors.js"; +import type { BrowserObservationOperation } from "../domain/browserObservationErrors.js"; import { CdpConnection } from "./CdpConnection.js"; import { cdpTargetWebSocket, diff --git a/src/browser/PlaywrightElectronActiveProvider.ts b/src/browser/PlaywrightElectronActiveProvider.ts index 5c730e2fd..9c05465c8 100644 --- a/src/browser/PlaywrightElectronActiveProvider.ts +++ b/src/browser/PlaywrightElectronActiveProvider.ts @@ -3,7 +3,7 @@ import { dirname } from "node:path"; import { randomUUID } from "node:crypto"; import { fileURLToPath } from "node:url"; -import { _electron as electron } from "playwright-core"; +import type { _electron as electron } from "playwright-core"; import type { ExecutionOptions, @@ -60,8 +60,9 @@ type ElectronPaths = { export class PlaywrightElectronActiveProvider implements ElectronActiveObservationPort { constructor( private readonly environment: Readonly>, - private readonly launch: typeof electron.launch = (options) => - electron.launch(options), + // Load Playwright only when a capture launches; MCP startup stays off its module graph. + private readonly launch: typeof electron.launch = async (options) => + (await import("playwright-core"))._electron.launch(options), ) {} identity(): ProviderIdentity { diff --git a/src/browser/PlaywrightScenarioBrowser.ts b/src/browser/PlaywrightScenarioBrowser.ts index 54291e5e4..615ad055e 100644 --- a/src/browser/PlaywrightScenarioBrowser.ts +++ b/src/browser/PlaywrightScenarioBrowser.ts @@ -2,12 +2,7 @@ import { chmod, mkdtemp, rm } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join, resolve } from "node:path"; -import { - chromium, - type Browser, - type BrowserContext, - type Page, -} from "playwright-core"; +import type { Browser, BrowserContext, Page, chromium } from "playwright-core"; import type { BrowserScenario } from "../domain/browserScenario.js"; import { AnalysisError } from "../domain/analysisErrorBase.js"; @@ -479,7 +474,9 @@ export const openPlaywrightScenarioBrowser = async ( readonly retainCleanup?: (close: () => Promise) => void; } = {}, ): Promise => { - const launcher = options.launcher ?? chromium; + // Load Playwright only when a scenario opens; MCP startup stays off its module graph. + const launcher = + options.launcher ?? (await import("playwright-core")).chromium; if (scenario.browser.mode === "connect") return openAttachedScenarioBrowser( scenario.browser, diff --git a/src/browser/PlaywrightScenarioSession.ts b/src/browser/PlaywrightScenarioSession.ts index cfb8979db..745561574 100644 --- a/src/browser/PlaywrightScenarioSession.ts +++ b/src/browser/PlaywrightScenarioSession.ts @@ -1,4 +1,4 @@ -import { type BrowserContext, type Page } from "playwright-core"; +import type { BrowserContext, Page } from "playwright-core"; import type { BrowserScenario } from "../domain/browserScenario.js"; import type { BrowserScenarioAction } from "../domain/browserScenarioValues.js"; diff --git a/src/cli/applicationCommands.ts b/src/cli/applicationCommands.ts index ac13007f6..929e9064d 100644 --- a/src/cli/applicationCommands.ts +++ b/src/cli/applicationCommands.ts @@ -16,7 +16,7 @@ import { CLI_COMMANDS } from "../cliCommandNames.js"; import { parseCliJsonInput } from "../cliJsonInput.js"; import { logCliCommand } from "../cliLogging.js"; import { projectAnalysisError } from "../domain/analysisErrorProjection.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { androidApplicationProjectionInputSchema } from "../domain/android/androidApplication.js"; import { appleApplicationProjectionInputSchema } from "../domain/apple/appleApplication.js"; import { jsonValueSchema, type JsonValue } from "../domain/jsonValue.js"; diff --git a/src/cli/streamedJsonOutput.ts b/src/cli/streamedJsonOutput.ts index 64977c22d..9d21eec0f 100644 --- a/src/cli/streamedJsonOutput.ts +++ b/src/cli/streamedJsonOutput.ts @@ -1,5 +1,5 @@ import { constants } from "node:buffer"; -import { type Writable } from "node:stream"; +import type { Writable } from "node:stream"; import { Cli, Filter } from "incur"; diff --git a/src/cliEvidenceCommands.ts b/src/cliEvidenceCommands.ts index 11a01be8c..308a793ec 100644 --- a/src/cliEvidenceCommands.ts +++ b/src/cliEvidenceCommands.ts @@ -10,7 +10,7 @@ import type { Logger } from "pino"; import { CLI_COMMANDS } from "./cliCommandNames.js"; import type { JsonValue } from "./domain/jsonValue.js"; import { projectAnalysisError } from "./domain/analysisErrorProjection.js"; -import { type AnalysisError } from "./domain/analysisErrorBase.js"; +import type { AnalysisError } from "./domain/analysisErrorBase.js"; /** Register caller-path Evidence commands. */ export const registerEvidenceCommands = ( diff --git a/src/domain/analysisErrorPresentation.ts b/src/domain/analysisErrorPresentation.ts index dd40bfbe6..07b226947 100644 --- a/src/domain/analysisErrorPresentation.ts +++ b/src/domain/analysisErrorPresentation.ts @@ -27,11 +27,8 @@ import { import { ProviderSelectionError } from "./providerSelectionError.js"; import { UnknownRegistryError } from "./unknownRegistryError.js"; import { providerRetryAction } from "./providerOperationHealth.js"; -import { - type AnalysisError, - type AnalysisErrorTag, -} from "./analysisErrorBase.js"; -import { type AnalysisErrorProjection } from "./analysisErrorProjection.js"; +import type { AnalysisError, AnalysisErrorTag } from "./analysisErrorBase.js"; +import type { AnalysisErrorProjection } from "./analysisErrorProjection.js"; export const analysisErrorRemediationAction = ( error: AnalysisError, diff --git a/src/domain/analysisErrorProjection.ts b/src/domain/analysisErrorProjection.ts index be7b431b6..2ab2a6c5c 100644 --- a/src/domain/analysisErrorProjection.ts +++ b/src/domain/analysisErrorProjection.ts @@ -40,10 +40,7 @@ import { ProviderAdapterError } from "./providerAdapterError.js"; import { ProviderSelectionError } from "./providerSelectionError.js"; import { UnknownRegistryError } from "./unknownRegistryError.js"; import { providerRetryAction } from "./providerOperationHealth.js"; -import { - type AnalysisError, - type AnalysisErrorTag, -} from "./analysisErrorBase.js"; +import type { AnalysisError, AnalysisErrorTag } from "./analysisErrorBase.js"; /** Project expected failures into exhaustive, secret-safe caller fields. */ export const projectAnalysisError = ( diff --git a/src/domain/artifactComparison.ts b/src/domain/artifactComparison.ts index 7cdd419d2..f7c27cdcf 100644 --- a/src/domain/artifactComparison.ts +++ b/src/domain/artifactComparison.ts @@ -1,10 +1,10 @@ import { compareUnicodeCodePoints } from "./unicodeCodePointOrder.js"; import { z } from "zod"; -import { - type ArtifactInventoryResult, - type ArtifactNode, - type ArtifactOccurrence, +import type { + ArtifactInventoryResult, + ArtifactNode, + ArtifactOccurrence, } from "./artifactGraph.js"; import { evidenceSchema } from "./evidence.js"; import { diff --git a/src/domain/javascript/javascriptNativeHandoff.ts b/src/domain/javascript/javascriptNativeHandoff.ts index daf224572..7d2f7dfb0 100644 --- a/src/domain/javascript/javascriptNativeHandoff.ts +++ b/src/domain/javascript/javascriptNativeHandoff.ts @@ -1,8 +1,8 @@ import { compareUnicodeCodePoints } from "../unicodeCodePointOrder.js"; import type { Evidence } from "../evidence.js"; -import { - type ApplicationEdge, - type ApplicationNode, +import type { + ApplicationEdge, + ApplicationNode, } from "./javascriptApplicationGraphSchemas.js"; import type { ApplicationFeatureTraceResult } from "./javascriptFeatureTraceSchemas.js"; diff --git a/src/domain/javascript/javascriptRuntimeReconciliationResult.ts b/src/domain/javascript/javascriptRuntimeReconciliationResult.ts index 19226f27c..4483a46fd 100644 --- a/src/domain/javascript/javascriptRuntimeReconciliationResult.ts +++ b/src/domain/javascript/javascriptRuntimeReconciliationResult.ts @@ -1,4 +1,4 @@ -import { type JavaScriptApplicationGraph } from "./javascriptApplicationGraph.js"; +import type { JavaScriptApplicationGraph } from "./javascriptApplicationGraph.js"; import { digestCanonicalValue } from "../canonicalDigest.js"; import { uniqueSorted } from "../canonicalOrdering.js"; import type { StaticLoadStateProjection } from "./javascriptRuntimeLoadState.js"; diff --git a/src/domain/managed/managedApplicationGraphNodes.ts b/src/domain/managed/managedApplicationGraphNodes.ts index ff186cecc..064b6f951 100644 --- a/src/domain/managed/managedApplicationGraphNodes.ts +++ b/src/domain/managed/managedApplicationGraphNodes.ts @@ -8,10 +8,10 @@ import type { ApplicationNode } from "../javascript/javascriptApplicationGraphSc import { managedSourceCoverage } from "./managedApplicationGraphCoverage.js"; import type { Evidence } from "../evidence.js"; import { managedTokenScopesMatch } from "./managedInspectionEvidence.js"; -import { - type ManagedArtifactInspection, - type ManagedMemberInspection, - type ManagedNativeBoundaryInspection, +import type { + ManagedArtifactInspection, + ManagedMemberInspection, + ManagedNativeBoundaryInspection, } from "./managedArtifact.js"; import type { GraphBuildState, diff --git a/src/domain/process/processComparison.ts b/src/domain/process/processComparison.ts index 9db90cfb7..21c7bd80b 100644 --- a/src/domain/process/processComparison.ts +++ b/src/domain/process/processComparison.ts @@ -7,7 +7,7 @@ import type { ProcessCapture } from "./processCaptureParsing.js"; import { comparableTerminalFrame } from "./processObservation.js"; import { AnalysisInputError } from "../analysisErrorCore.js"; import { jsonValueSchema } from "../jsonValue.js"; -import { type ProcessTraceSpecification } from "./processTraceSpecification.js"; +import type { ProcessTraceSpecification } from "./processTraceSpecification.js"; import { processTraceComparisonResultSchema } from "./processTraceEvaluation.js"; import { dimensionsForTraceSources, diff --git a/src/domain/process/processTraceComparison.fixture.ts b/src/domain/process/processTraceComparison.fixture.ts index b63f7e6c7..9da69cc84 100644 --- a/src/domain/process/processTraceComparison.fixture.ts +++ b/src/domain/process/processTraceComparison.fixture.ts @@ -4,7 +4,7 @@ import { parseProcessCapture, type ProcessCapture, } from "./processCaptureParsing.js"; -import { type ProcessTraceSpecification } from "./processTraceSpecification.js"; +import type { ProcessTraceSpecification } from "./processTraceSpecification.js"; export const emptyCapture = parseProcessCapture(EMPTY_PROCESS_CAPTURE_EXAMPLE); export const terminal = { sequence: 0, at_ms: 900, data: "Ready" }; diff --git a/src/domain/process/processTraceComparison.test.ts b/src/domain/process/processTraceComparison.test.ts index 952bb9758..caeaf7999 100644 --- a/src/domain/process/processTraceComparison.test.ts +++ b/src/domain/process/processTraceComparison.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from "vitest"; import { parseProcessCapture } from "./processCaptureParsing.js"; -import { type ProcessTraceSpecification } from "./processTraceSpecification.js"; +import type { ProcessTraceSpecification } from "./processTraceSpecification.js"; import { processTraceComparisonResultSchema } from "./processTraceEvaluation.js"; import { capture, diff --git a/src/dotnet/ManagedMemberInspectorCore.ts b/src/dotnet/ManagedMemberInspectorCore.ts index f867bbd02..0c5b4b3ab 100644 --- a/src/dotnet/ManagedMemberInspectorCore.ts +++ b/src/dotnet/ManagedMemberInspectorCore.ts @@ -7,9 +7,9 @@ import type { ManagedMemberInspection, ManagedParseIssue, } from "../domain/managed/managedArtifact.js"; -import { - type ManagedMetadataLayout, - type MetadataTableLayout, +import type { + ManagedMetadataLayout, + MetadataTableLayout, } from "./ManagedMetadataLayout.js"; import { metadataRowCursor, diff --git a/src/dotnet/ManagedNativeBoundaryHelpers.ts b/src/dotnet/ManagedNativeBoundaryHelpers.ts index 4c7498a1b..fb81e1d28 100644 --- a/src/dotnet/ManagedNativeBoundaryHelpers.ts +++ b/src/dotnet/ManagedNativeBoundaryHelpers.ts @@ -8,7 +8,7 @@ import { type ManagedNativeBoundaryInspection, type ManagedParseIssue, } from "../domain/managed/managedArtifact.js"; -import { type ManagedMetadataLayout } from "./ManagedMetadataLayout.js"; +import type { ManagedMetadataLayout } from "./ManagedMetadataLayout.js"; import { metadataRowCursor, metadataCodedToken, diff --git a/src/ghidra/GhidraAnalysisProfile.ts b/src/ghidra/GhidraAnalysisProfile.ts index fa5015dfc..4177a8495 100644 --- a/src/ghidra/GhidraAnalysisProfile.ts +++ b/src/ghidra/GhidraAnalysisProfile.ts @@ -10,7 +10,7 @@ import { AnalysisUnsupportedTargetError, } from "../domain/analysisErrorCore.js"; import { ProviderAdapterError } from "../domain/providerAdapterError.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { err, ok, type Result } from "../domain/result.js"; import type { GhidraInstallationInspection } from "./GhidraInstallation.js"; import { diff --git a/src/ghidra/GhidraLoadImageAttest.ts b/src/ghidra/GhidraLoadImageAttest.ts index 956f570fa..5034cec43 100644 --- a/src/ghidra/GhidraLoadImageAttest.ts +++ b/src/ghidra/GhidraLoadImageAttest.ts @@ -13,7 +13,7 @@ import { attestGhidraDosComLoadImage, attestGhidraDosLoadImage, } from "./GhidraLoadImageValues.js"; -import { type NativeAotPeResult } from "../domain/native/nativeAotPe.js"; +import type { NativeAotPeResult } from "../domain/native/nativeAotPe.js"; import type { GhidraTargetSnapshot } from "./GhidraClient.js"; import type { GhidraSessionError } from "./GhidraSessionError.js"; diff --git a/src/ghidra/GhidraProvider.ts b/src/ghidra/GhidraProvider.ts index 58501bc2a..3ee9a6210 100644 --- a/src/ghidra/GhidraProvider.ts +++ b/src/ghidra/GhidraProvider.ts @@ -1,13 +1,13 @@ import { snapshotEnvironment } from "../process/snapshotEnvironment.js"; -import { - type AnalysisClient, - type AnalysisClientContext, - type AnalysisProfileResolutionOptions, - type AnalysisProviderCandidate, - type CapabilityDescriptor, - type ProviderAvailability, - type ProviderIdentity, - type ProviderTargetSupport, +import type { + AnalysisClient, + AnalysisClientContext, + AnalysisProfileResolutionOptions, + AnalysisProviderCandidate, + CapabilityDescriptor, + ProviderAvailability, + ProviderIdentity, + ProviderTargetSupport, } from "../application/AnalysisProvider.js"; import type { AppConfig } from "../config/types.js"; import { diff --git a/src/ghidra/GhidraProviderClient.ts b/src/ghidra/GhidraProviderClient.ts index f024ab422..15eb5dbd9 100644 --- a/src/ghidra/GhidraProviderClient.ts +++ b/src/ghidra/GhidraProviderClient.ts @@ -28,7 +28,7 @@ import { AnalysisResourceConstraintError, AnalysisTimeoutError, } from "../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { jsonValueSchema, type JsonValue } from "../domain/jsonValue.js"; import { ProviderAdapterError } from "../domain/providerAdapterError.js"; import { err, ok, type Result } from "../domain/result.js"; diff --git a/src/hopper/HopperAnalysisProfile.ts b/src/hopper/HopperAnalysisProfile.ts index 3ac7640df..9c1f40a1a 100644 --- a/src/hopper/HopperAnalysisProfile.ts +++ b/src/hopper/HopperAnalysisProfile.ts @@ -14,7 +14,7 @@ import { } from "../domain/analysisErrorCore.js"; import { BinaryTargetError } from "../domain/configurationErrors.js"; import { ProviderAdapterError } from "../domain/providerAdapterError.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { err, ok, type Result } from "../domain/result.js"; import { diff --git a/src/hopper/HopperClient.ts b/src/hopper/HopperClient.ts index c001c3e5e..0db051556 100644 --- a/src/hopper/HopperClient.ts +++ b/src/hopper/HopperClient.ts @@ -17,7 +17,7 @@ import { HopperStartError, HopperTimeoutError, } from "../domain/hopperErrors.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { hopperStartupFailure, type HopperStartupFailureDiagnostic, diff --git a/src/inspector/V8InspectorEndpoint.ts b/src/inspector/V8InspectorEndpoint.ts index 24146d469..fdb172591 100644 --- a/src/inspector/V8InspectorEndpoint.ts +++ b/src/inspector/V8InspectorEndpoint.ts @@ -5,7 +5,7 @@ import type { JavaScriptRuntimeTargetLocation, } from "../domain/javascript/javascriptRuntimeObservation.js"; import { BrowserObservationError } from "../domain/browserObservationError.js"; -import { type BrowserObservationOperation } from "../domain/browserObservationErrors.js"; +import type { BrowserObservationOperation } from "../domain/browserObservationErrors.js"; import { parseCdpEndpointValue, readCdpJson } from "../browser/CdpEndpoint.js"; const versionSchema = z diff --git a/src/inspector/V8InspectorProvider.ts b/src/inspector/V8InspectorProvider.ts index 78a22fe10..33a011651 100644 --- a/src/inspector/V8InspectorProvider.ts +++ b/src/inspector/V8InspectorProvider.ts @@ -15,7 +15,7 @@ import { AnalysisError } from "../domain/analysisErrorBase.js"; import { BrowserObservationError } from "../domain/browserObservationError.js"; import type { AnalysisPartialObservation } from "../domain/analysisErrorBase.js"; import { ProviderAdapterError } from "../domain/providerAdapterError.js"; -import { type BrowserObservationOperation } from "../domain/browserObservationErrors.js"; +import type { BrowserObservationOperation } from "../domain/browserObservationErrors.js"; import { err, ok, type Result } from "../domain/result.js"; import { numberValue, diff --git a/src/javascript/recovery/WakaruProvider.ts b/src/javascript/recovery/WakaruProvider.ts index 008f48096..2838738d0 100644 --- a/src/javascript/recovery/WakaruProvider.ts +++ b/src/javascript/recovery/WakaruProvider.ts @@ -2,9 +2,9 @@ import { mkdir, mkdtemp, rm } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; import type { JavaScriptRecoveryPort } from "../../application/javascript/JavaScriptRecoveryPort.js"; -import { - type AnalysisExecution, - type ExecutionOptions, +import type { + AnalysisExecution, + ExecutionOptions, } from "../../application/AnalysisProvider.js"; import { SafeOutputTree } from "../../artifacts/SafeOutputTree.js"; import { SafeOutputTreeCreationFailure } from "../../artifacts/SafeOutputTreeCreationFailure.js"; diff --git a/src/native/NativeUiObservation.ts b/src/native/NativeUiObservation.ts index 9dc337189..021e0d132 100644 --- a/src/native/NativeUiObservation.ts +++ b/src/native/NativeUiObservation.ts @@ -13,7 +13,7 @@ import { AnalysisInputError, } from "../domain/analysisErrorCore.js"; import { ProviderAdapterError } from "../domain/providerAdapterError.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { err, ok, type Result } from "../domain/result.js"; import { createNativeUiHelperRuntime, diff --git a/src/process/ProcessOwnership.part3.test.ts b/src/process/ProcessOwnership.part3.test.ts index b782c6f77..bab43d7a9 100644 --- a/src/process/ProcessOwnership.part3.test.ts +++ b/src/process/ProcessOwnership.part3.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it, vi } from "vitest"; -import { type ProcessOwnershipHost } from "./ProcessOwnership.js"; +import type { ProcessOwnershipHost } from "./ProcessOwnership.js"; import { observeOwnedProcessLineage } from "./ProcessOwnershipObservation.js"; const ownership = { runId: "run-token", diff --git a/src/process/capture/ProcessCaptureObservation.test.ts b/src/process/capture/ProcessCaptureObservation.test.ts index 7bd54a124..ddf0ffd42 100644 --- a/src/process/capture/ProcessCaptureObservation.test.ts +++ b/src/process/capture/ProcessCaptureObservation.test.ts @@ -5,7 +5,7 @@ import { buildCaptureResult } from "./ProcessCaptureLifecycle.js"; import { isInitializedPtyRoot, readLinuxChildren } from "./ProcessSampling.js"; import { TerminalRenderer } from "./TerminalRenderer.js"; import { parseProcessScenario } from "../../domain/process/processScenario.js"; -import { type ProcessCapture } from "../../domain/process/processCaptureParsing.js"; +import type { ProcessCapture } from "../../domain/process/processCaptureParsing.js"; import type { ProcessCaptureTruncationDetails } from "../../domain/process/processCaptureCoverage.js"; import { emptyProcessCapture as emptyCapture } from "../../domain/process/processCapture.fixture.js"; diff --git a/src/process/capture/ProcessHarness.ts b/src/process/capture/ProcessHarness.ts index 10275a7e3..352b13ba9 100644 --- a/src/process/capture/ProcessHarness.ts +++ b/src/process/capture/ProcessHarness.ts @@ -5,7 +5,7 @@ import type { ProcessScenario } from "../../domain/process/processScenario.js"; import { parseProcessCapture } from "../../domain/process/processCaptureParsing.js"; import { err, ok, type Result } from "../../domain/result.js"; import { AnalysisCapabilityUnavailableError } from "../../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { describeProcessCaptureExecutionFailure, ProcessCaptureError, diff --git a/src/reference/ReferenceSourceReader.ts b/src/reference/ReferenceSourceReader.ts index aa1e3b1d4..e8e8650a1 100644 --- a/src/reference/ReferenceSourceReader.ts +++ b/src/reference/ReferenceSourceReader.ts @@ -3,11 +3,11 @@ import { err, ok } from "../domain/result.js"; import { ArtifactReaderFailure } from "../artifacts/ArtifactReader.js"; import type { ArtifactResourceScope } from "../artifacts/ArtifactResourceScope.js"; import { traverseDirectory } from "./ReferenceSourceReaderEntries.js"; -import { - type ReferenceSourceReaderOptions, - type ReferenceSourceRead, - type ReferenceSourceResult, - type TraversalState, +import type { + ReferenceSourceReaderOptions, + ReferenceSourceRead, + ReferenceSourceResult, + TraversalState, } from "./ReferenceSourceReaderTypes.js"; import { isAborted, diff --git a/src/reference/ReferenceSourceReaderEntries.ts b/src/reference/ReferenceSourceReaderEntries.ts index cad5b7864..a746c01e4 100644 --- a/src/reference/ReferenceSourceReaderEntries.ts +++ b/src/reference/ReferenceSourceReaderEntries.ts @@ -22,12 +22,12 @@ import { validateDirectory, bigLstat, } from "./ReferenceSourceReaderValidate.js"; -import { - type PendingDirectory, - type ReferenceSourceEntry, - type ReferenceSourceEntryKind, - type ReferenceSourceResult, - type TraversalState, +import type { + PendingDirectory, + ReferenceSourceEntry, + ReferenceSourceEntryKind, + ReferenceSourceResult, + TraversalState, } from "./ReferenceSourceReaderTypes.js"; export const traverseDirectory = async ( diff --git a/src/reference/ReferenceSourceReaderErrors.ts b/src/reference/ReferenceSourceReaderErrors.ts index 49877be72..6ddd02a3f 100644 --- a/src/reference/ReferenceSourceReaderErrors.ts +++ b/src/reference/ReferenceSourceReaderErrors.ts @@ -1,7 +1,7 @@ -import { - type ReferenceSourceEntry, - type ReferenceSourceFailureCode, - type ReferenceSourceReaderError, +import type { + ReferenceSourceEntry, + ReferenceSourceFailureCode, + ReferenceSourceReaderError, } from "./ReferenceSourceReaderTypes.js"; export const failure = ( diff --git a/src/reference/ReferenceSourceReaderFile.ts b/src/reference/ReferenceSourceReaderFile.ts index 27b5c37ef..e8cabdaeb 100644 --- a/src/reference/ReferenceSourceReaderFile.ts +++ b/src/reference/ReferenceSourceReaderFile.ts @@ -21,9 +21,9 @@ import { sameFile, validateDirectory, } from "./ReferenceSourceReaderValidate.js"; -import { - type ReferenceSourceEntry, - type StableFileRequest, +import type { + ReferenceSourceEntry, + StableFileRequest, } from "./ReferenceSourceReaderTypes.js"; const READ_CHUNK_BYTES = 64 * 1024; diff --git a/src/reference/ReferenceSourceReaderTypes.ts b/src/reference/ReferenceSourceReaderTypes.ts index 76096ef71..3b0a368b5 100644 --- a/src/reference/ReferenceSourceReaderTypes.ts +++ b/src/reference/ReferenceSourceReaderTypes.ts @@ -1,6 +1,6 @@ -import { type BigIntStats } from "node:fs"; +import type { BigIntStats } from "node:fs"; -import { type Result } from "../domain/result.js"; +import type { Result } from "../domain/result.js"; import type { AnalysisCleanupObservation } from "../domain/analysisErrorBase.js"; import type { ArtifactResourceScope } from "../artifacts/ArtifactResourceScope.js"; diff --git a/src/reference/ReferenceSourceReaderValidate.ts b/src/reference/ReferenceSourceReaderValidate.ts index 750426e1a..33cfbf668 100644 --- a/src/reference/ReferenceSourceReaderValidate.ts +++ b/src/reference/ReferenceSourceReaderValidate.ts @@ -10,9 +10,9 @@ import { rootFilesystemFailure, } from "./ReferenceSourceReaderErrors.js"; import { isPathWithinRoot } from "../domain/localPath.js"; -import { - type ReferenceSourceFailureCode, - type ReferenceSourceResult, +import type { + ReferenceSourceFailureCode, + ReferenceSourceResult, } from "./ReferenceSourceReaderTypes.js"; export const bigLstat = (path: string): Promise => diff --git a/src/server/registerInvestigationTools/helpers.ts b/src/server/registerInvestigationTools/helpers.ts index ed5ab8334..1d342c0b5 100644 --- a/src/server/registerInvestigationTools/helpers.ts +++ b/src/server/registerInvestigationTools/helpers.ts @@ -1,7 +1,7 @@ import type { BinarySessionPort } from "../../application/binary/BinarySessionPort.js"; import type { Evidence } from "../../domain/evidence.js"; import { EvidenceIntegrityError } from "../../domain/evidenceErrors.js"; -import { type AnalysisError } from "../../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../domain/analysisErrorBase.js"; import { err, ok, type Result } from "../../domain/result.js"; import { recordDerivedEvidence } from "../recordDerivedEvidence.js"; import type { WorkflowUnknownInput } from "./types.js"; diff --git a/src/server/registerProcessComparisonTool.ts b/src/server/registerProcessComparisonTool.ts index ce5feb597..3123f0e4b 100644 --- a/src/server/registerProcessComparisonTool.ts +++ b/src/server/registerProcessComparisonTool.ts @@ -3,7 +3,7 @@ import type { EvidenceMcpServer } from "./EvidenceMcpServer.js"; import type { BinarySessionPort } from "../application/binary/BinarySessionPort.js"; import { toolContract } from "../contracts/toolContracts.js"; import { AnalysisInputError } from "../domain/analysisErrorCore.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import { describeValidationFailure } from "../domain/evidenceBundle.js"; import { EvidenceIntegrityError } from "../domain/evidenceErrors.js"; import { diff --git a/src/server/registerSessionTools.ts b/src/server/registerSessionTools.ts index 3541af850..b716d96f5 100644 --- a/src/server/registerSessionTools.ts +++ b/src/server/registerSessionTools.ts @@ -13,7 +13,7 @@ import { ProcessCaptureError } from "../process/capture/ProcessCaptureError.js"; import { toolContract } from "../contracts/toolContracts.js"; import type { AnalysisSnapshot } from "../domain/analysisSnapshot.js"; import { UnknownRegistryError } from "../domain/unknownRegistryError.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import type { Evidence } from "../domain/evidence.js"; import type { ProcessCapture } from "../domain/process/processCaptureParsing.js"; import { err, ok, type Result } from "../domain/result.js"; diff --git a/src/server/toolResult.ts b/src/server/toolResult.ts index 6daddc695..e1d4b775f 100644 --- a/src/server/toolResult.ts +++ b/src/server/toolResult.ts @@ -7,7 +7,7 @@ import { projectAnalysisError, type AnalysisErrorProjection, } from "../domain/analysisErrorProjection.js"; -import { type AnalysisError } from "../domain/analysisErrorBase.js"; +import type { AnalysisError } from "../domain/analysisErrorBase.js"; import type { JsonValue } from "../domain/jsonValue.js"; import type { Result } from "../domain/result.js"; import { AnalysisResourceConstraintError } from "../domain/analysisErrorCore.js"; diff --git a/tests/boundary/cli/cliStartupImports.test.ts b/tests/boundary/cli/cliStartupImports.test.ts index c5511cf6d..2b8bf9359 100644 --- a/tests/boundary/cli/cliStartupImports.test.ts +++ b/tests/boundary/cli/cliStartupImports.test.ts @@ -1,3 +1,5 @@ +import { Client } from "@modelcontextprotocol/client"; +import { StdioClientTransport } from "@modelcontextprotocol/client/stdio"; import { execFile } from "node:child_process"; import { mkdir, writeFile } from "node:fs/promises"; import { join } from "node:path"; @@ -42,6 +44,14 @@ registerHooks({ }); `)}`; +const resolvedMarkers = (stderr: string): ReadonlySet => + new Set( + stderr + .split("\n") + .filter((line) => line.startsWith(MARKER)) + .map((line) => line.slice(MARKER.length)), + ); + const resolvedPackages = async ( arguments_: readonly string[], ): Promise> => { @@ -50,12 +60,7 @@ const resolvedPackages = async ( [`--import=${RESOLUTION_HOOK}`, ...arguments_], { cwd: process.cwd(), maxBuffer: 16 * 1_024 * 1_024 }, ); - return new Set( - stderr - .split("\n") - .filter((line) => line.startsWith(MARKER)) - .map((line) => line.slice(MARKER.length)), - ); + return resolvedMarkers(stderr); }; const evaluate = (source: string): readonly string[] => [ @@ -66,9 +71,19 @@ const evaluate = (source: string): readonly string[] => [ describe("CLI startup imports", () => { it("detects each deferred package when its command code loads", async () => { + const missingBrowser = join( + await createTestTempDirectory("rea-startup-browser-"), + "missing-browser", + ); + const scenario = { + browser: { mode: "launch", executable_path: missingBrowser }, + environment: { viewport: { width: 1, height: 1 } }, + }; await expect( resolvedPackages( - evaluate('await import("./dist/composition/browserScenario.js");'), + evaluate( + `const { openPlaywrightScenarioBrowser } = await import("./dist/browser/PlaywrightScenarioBrowser.js"); await openPlaywrightScenarioBrowser(${JSON.stringify(scenario)}, {}).catch(() => undefined);`, + ), ), ).resolves.toContain("playwright-core"); const source = await createTestTempDirectory("rea-startup-imports-"); @@ -124,3 +139,32 @@ describe("CLI startup imports", () => { ).resolves.toContain("binary-composition"); }); }); + +describe("MCP startup imports", () => { + it("does not load command-specific dependencies to initialize and list tools", async () => { + const transport = new StdioClientTransport({ + command: process.execPath, + args: [`--import=${RESOLUTION_HOOK}`, "scripts/rea.mjs", "mcp"], + cwd: process.cwd(), + env: { PATH: process.env.PATH ?? "" }, + stderr: "pipe", + }); + let stderr = ""; + transport.stderr?.on("data", (chunk: Buffer) => { + stderr += chunk.toString("utf8"); + }); + const client = new Client({ name: "rea-startup-imports", version: "1" }); + try { + await client.connect(transport); + const { tools } = await client.listTools(); + expect(tools.map((tool) => tool.name)).toContain( + "capture_browser_scenario", + ); + } finally { + await client.close(); + } + const resolved = resolvedMarkers(stderr); + expect(resolved).not.toContain("playwright-core"); + expect(resolved).not.toContain("isomorphic-git"); + }); +}); diff --git a/tests/boundary/filesystem/directoryArtifactReaderOpen.test.ts b/tests/boundary/filesystem/directoryArtifactReaderOpen.test.ts index 387eced40..b8124dcf2 100644 --- a/tests/boundary/filesystem/directoryArtifactReaderOpen.test.ts +++ b/tests/boundary/filesystem/directoryArtifactReaderOpen.test.ts @@ -4,7 +4,7 @@ import { buffer } from "node:stream/consumers"; import { describe, expect, it } from "vitest"; -import { type ArtifactEntry } from "../../../src/artifacts/ArtifactReader.js"; +import type { ArtifactEntry } from "../../../src/artifacts/ArtifactReader.js"; import { DirectoryArtifactReader } from "../../../src/artifacts/DirectoryArtifactReader.js"; import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js"; diff --git a/tests/boundary/filesystem/javascriptArtifactReconstruction.test.ts b/tests/boundary/filesystem/javascriptArtifactReconstruction.test.ts index 27b953ef9..b1c6952ba 100644 --- a/tests/boundary/filesystem/javascriptArtifactReconstruction.test.ts +++ b/tests/boundary/filesystem/javascriptArtifactReconstruction.test.ts @@ -11,9 +11,9 @@ import { readJavaScriptArtifactFiles, } from "../../support/javascriptApplicationScope.js"; import { scanArtifactInventory } from "../../fixtures/artifactInventory.js"; -import { - type ArtifactEntry, - type ArtifactReader, +import type { + ArtifactEntry, + ArtifactReader, } from "../../../src/artifacts/ArtifactReader.js"; import { writeJavaScriptArtifactFixture } from "../../fixtures/javascriptArtifactApplication.js"; diff --git a/tests/boundary/mcp/enhancedTools.01-lists-the-complete-target-open.test.ts b/tests/boundary/mcp/enhancedTools.01-lists-the-complete-target-open.test.ts index 0da86dfc5..5d031b940 100644 --- a/tests/boundary/mcp/enhancedTools.01-lists-the-complete-target-open.test.ts +++ b/tests/boundary/mcp/enhancedTools.01-lists-the-complete-target-open.test.ts @@ -7,7 +7,7 @@ import { MANAGED_WORKFLOW_TOOL_CONTRACTS } from "../../../src/contracts/managed/ import { ENHANCED_TOOL_CONTRACTS } from "../../../src/contracts/enhancedToolContracts.js"; import { SESSION_TOOL_CONTRACTS } from "../../../src/contracts/sessionToolContracts.js"; import { TOOL_CONTRACTS } from "../../../src/contracts/toolContracts.js"; -import {} from "../../../src/domain/jsonValue.js"; +import type {} from "../../../src/domain/jsonValue.js"; import { createServer } from "../../../src/server/createServer.js"; import { observed as ok } from "../../fixtures/analysisExecution.js"; import { createAnalysisExecution } from "../../../src/application/AnalysisProvider.js"; diff --git a/tests/boundary/process/processCaptureLifecycle.test.ts b/tests/boundary/process/processCaptureLifecycle.test.ts index 24563c883..b64b13078 100644 --- a/tests/boundary/process/processCaptureLifecycle.test.ts +++ b/tests/boundary/process/processCaptureLifecycle.test.ts @@ -23,7 +23,7 @@ import { } from "../../../src/process/capture/ProcessCaptureLifecycle.js"; import { parseProcessScenario } from "../../../src/domain/process/processScenario.js"; import { emptyProcessCapture } from "../../../src/domain/process/processCapture.fixture.js"; -import { type ProcessCapture } from "../../../src/domain/process/processCaptureParsing.js"; +import type { ProcessCapture } from "../../../src/domain/process/processCaptureParsing.js"; const processFixture = fileURLToPath( new URL("../../fixtures/processFidelity.mjs", import.meta.url), diff --git a/tests/conformance/contracts/analysisErrorProjection.test.ts b/tests/conformance/contracts/analysisErrorProjection.test.ts index e98804bc0..bb7014dde 100644 --- a/tests/conformance/contracts/analysisErrorProjection.test.ts +++ b/tests/conformance/contracts/analysisErrorProjection.test.ts @@ -7,7 +7,7 @@ import { EvidenceFileError } from "../../../src/domain/evidenceErrors.js"; import { HopperRemoteError } from "../../../src/domain/hopperErrors.js"; import { UnknownRegistryError } from "../../../src/domain/unknownRegistryError.js"; import { projectAnalysisError } from "../../../src/domain/analysisErrorProjection.js"; -import { type AnalysisError } from "../../../src/domain/analysisErrorBase.js"; +import type { AnalysisError } from "../../../src/domain/analysisErrorBase.js"; describe("analysis error projection contract", () => { it("accepts every closed error-reason variant", () => { diff --git a/tests/fixtures/fakeCdpBrowserEvents.ts b/tests/fixtures/fakeCdpBrowserEvents.ts index 536cc8b72..1d1dd5fe3 100644 --- a/tests/fixtures/fakeCdpBrowserEvents.ts +++ b/tests/fixtures/fakeCdpBrowserEvents.ts @@ -1,4 +1,4 @@ -import { type WebSocket } from "ws"; +import type { WebSocket } from "ws"; import type { FakeCdpCommand, FakeOptions } from "./fakeCdpBrowserTypes.js";