import type { AiEnrichmentMode, RecommendationLimitOverrideMode } from "../types.js"; /** * Describes runtime config data exchanged by the lifecycle pipeline. */ export interface RuntimeConfig { env: NodeJS.ProcessEnv; aiEnrichment: { url?: string; apiKey?: string; mode: AiEnrichmentMode; model: string; allowedOrigins: readonly string[]; requestTimeoutMs: number; responseMaxBytes: number; maxSelectedAssets: number; maxEvidenceItems: number; maxCapabilitiesPerAsset: number; redactFilePaths: boolean; redactSourceIdentifiers: boolean; retryMaxAttempts: number; retryBackoffMs: number; autoMinIntervalMs: number; requireSuccessInCi: boolean; allowCacheInCi: boolean; }; recommendation: { limitOverrides: Record; limitOverrideModes: Record; }; install: { refreshPolicy: "manual" | "report-only" | "apply-safe"; refreshIntervalMs: number; }; http: { timeoutMs: number; maxResponseBytes: number; }; github: { token?: string; apiVersion: string; fetchMaxAttempts: number; fetchTimeoutMs: number; jsonMaxBytes: number; }; registries: { fetchTimeoutMs: number; metadataMaxBytes: number; searchMaxBytes: number; npmSearchResultLimit: number; }; discovery: { referenceSourceMaxBytes: number; genericReferenceMaxItems: number; vscodeMarketplaceMaxQueries: number; vscodeMarketplaceMaxItemsPerQuery: number; vscodeMarketplaceSyncPageSize: number; /** Pages to fetch in the popularity-first sweep. */ vscodeMarketplacePopularitySweepPages: number; /** Whether the category-taxonomy sweep is enabled. */ vscodeMarketplaceCategorySweepEnabled: boolean; sourceSyncMaxPagesPerRun: number; npmMcpSearchQueryLimit: number; /** * Pages to paginate per source during `discover index` full-index build. * 0 = unlimited. */ sourceSyncMaxPagesForIndexBuild: number; /** Days before catalog-index.jsonl is considered stale. */ discoveryIndexMaxAgeDays: number; /** * Whether semantic similarity scoring is enabled. * When true and @xenova/transformers is installed, cosine similarity * replaces the binary keyword-overlap gate. */ semanticScoringEnabled: boolean; /** * Minimum cosine similarity threshold for an entry to pass the semantic * demand-relevance gate (0–1). Default 0.35. */ semanticScoringMinSimilarity: number; /** * Maximum number of search terms to dispatch per registry search sweep. * Higher values improve coverage; lower values reduce API call volume. */ registrySearchMaxTerms: number; /** * Maximum results to retrieve per term per registry search call. */ registrySearchMaxResultsPerTerm: number; /** * Whether the adjacent-tooling static matrix is enabled. * When true, packages from the adjacent-tooling matrix are added to the * harvest candidates for matched stack signals. */ adjacentToolingEnabled: boolean; /** * Maximum catalog entries to retain per unique source after selection dedup. * 0 = unlimited. */ maxEntriesPerSource: number; }; officialIndex: { pageMaxBytes: number; contentMaxBytes: number; /** Maximum catalog entries per index. 0 = unlimited. */ maxItemsPerIndex: number; }; hostCommands: { nativeTimeoutMs: number; nativeMaxBufferBytes: number; preflightTimeoutMs: number; }; mirrorLimits: { maxOfficialIndexPackageFiles: number; maxOfficialIndexFileSizeBytes: number; maxOfficialIndexPackageTotalBytes: number; maxGitHubMirrorFileSizeBytes: number; }; diagnostics: { debugEnabled: boolean; }; batches: { remoteHarvest: number; mirrorAcquire: number; installBundle: number; }; paths: { homeDirectory: string; appData?: string; xdgConfigHome: string; }; scan: { maxDepth: number; maxFiles: number; maxBytes: number; }; } /** * Returns get runtime config for the provided inputs. */ export declare function getRuntimeConfig(): RuntimeConfig; /** * Loads runtime config from project state. */ export declare function loadRuntimeConfig(env: NodeJS.ProcessEnv): RuntimeConfig; /** * Clears clear runtime config process-local state. */ export declare function clearRuntimeConfig(): void; /** * Clears clear runtime config for tests process-local state. */ export declare function clearRuntimeConfigForTests(): void; /** * Test-only internals for the runtime config module. * These are not part of the public API and should not be used in production code. */ export declare const runtimeConfigInternals: { /** * Resets the cached singleton so the next `getRuntimeConfig()` call * re-reads `process.env`. Only use in tests that mutate env vars. */ resetCacheForTesting(): void; };