@datasynx/agentic-ai-cartography 2.10.0 → 2.12.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.
package/dist/index.d.cts CHANGED
@@ -1984,6 +1984,18 @@ type FragmentKind = 'host' | 'user' | 'path' | 'ip';
1984
1984
  * left intact (so topology against public infra still reads).
1985
1985
  */
1986
1986
  declare const PRIVATE_IP: RegExp;
1987
+ /**
1988
+ * A bare single-label internal hostname — the known 2.10 residual that {@link HOSTNAME}
1989
+ * (multi-label only) never tokenizes. We only treat a single label as an internal host
1990
+ * when it *looks* like one: it contains a hyphen or a digit run (e.g. `db-01`, `web2`,
1991
+ * `prod-db`) so we do not false-positive ordinary English words used as a `name`
1992
+ * (`Postgres`, `Marketing`) or the literal `localhost`. Single-sourced here so the
1993
+ * client (this module) and the server (`src/central/anonymization.ts`, which re-imports
1994
+ * this constant) agree on what counts as a bare internal host.
1995
+ */
1996
+ declare const BARE_INTERNAL_HOST: RegExp;
1997
+ /** A pseudonym token produced by this module (`anon:host:abc…`) — already anonymized. */
1998
+ declare const ANON_TOKEN: RegExp;
1987
1999
  /**
1988
2000
  * Deterministic token for one identifying fragment. When `db` is supplied, the
1989
2001
  * plaintext is AES-256-GCM-encrypted under `reversalKey(orgKey)` and persisted so
@@ -1998,6 +2010,17 @@ declare function pseudonymizeFragment(plaintext: string, kind: FragmentKind, org
1998
2010
  * or a path segment is never mis-tokenized as a host.
1999
2011
  */
2000
2012
  declare function pseudonymizeString(s: string, orgKey: Buffer, db?: CartographyDB): string;
2013
+ /**
2014
+ * Pseudonymize the host material of a structured node id (`{type}:{host}[:{port}]` or
2015
+ * `{type}:{provider}:{name}`). The leading `{type}` segment is a non-identifying schema
2016
+ * prefix and is left verbatim; every later colon-delimited segment is run through
2017
+ * {@link pseudonymizeString} (so an FQDN, a private IP, an absolute path, or a bare
2018
+ * internal host inside a segment all tokenize, while a numeric port — matching no rule —
2019
+ * is preserved). Re-join with `:`. This is the structural id transform used for node ids
2020
+ * and for edge endpoints, so both stay consistent. A token already inside a segment is
2021
+ * not re-tokenized (the bare-host pass is whole-string and `anon:` tokens are excluded).
2022
+ */
2023
+ declare function pseudonymizeId(id: string, orgKey: Buffer, db?: CartographyDB): string;
2001
2024
  /**
2002
2025
  * Recursive, structure-preserving walker — same shape as `redactValue`
2003
2026
  * (`src/tools.ts`): strings → {@link pseudonymizeString}, arrays → map,
@@ -2042,8 +2065,16 @@ declare function resolveEffectiveLevel(node: DiscoveryNode, policy: SharingPolic
2042
2065
  * (structure-preserving); identifying fragments tokenized.
2043
2066
  * - `full` → a structural clone, verbatim.
2044
2067
  *
2045
- * The same deterministic `pseudonymizeString` is applied to the id here and by
2046
- * {@link previewShare} when remapping edges, so endpoints always resolve.
2068
+ * The same deterministic `pseudonymizeId` is applied to the id here and by
2069
+ * {@link previewShare} when remapping edges (via the shared idMap), so endpoints
2070
+ * always resolve. `pseudonymizeId` is id-aware: it tokenizes the host segment(s) —
2071
+ * including a bare single-label internal host — while sparing the `{type}` prefix.
2072
+ *
2073
+ * At the `anonymized` level the derived identity fields `globalId`
2074
+ * (`{tenant}:{normalizeId(id)}`, which embeds the raw id) and `contentHash` are
2075
+ * dropped from the outgoing payload — they would otherwise carry the raw id past
2076
+ * anonymization, and the central collector recomputes both from the (anonymized)
2077
+ * node on ingest (`computeIdentity`), so omitting them is both leak-free and lossless.
2047
2078
  */
2048
2079
  declare function applySharingLevel(node: DiscoveryNode, level: SharingLevel, orgKey: Buffer, db?: CartographyDB): DiscoveryNode | null;
2049
2080
  interface SharePreviewEntry {
@@ -2150,6 +2181,11 @@ interface ScanContext {
2150
2181
  scanEstablishedConnections?: () => string;
2151
2182
  /** Injectable seam: cross-platform file search (3.2). Defaults to `findFiles`. */
2152
2183
  findFiles?: (dirs: string[], patterns: string[], maxDepth: number, limit: number) => string;
2184
+ /**
2185
+ * Injectable seam: read a local file's UTF-8 contents, '' on any error (5.3). Reads via
2186
+ * `node:fs` (NOT the shell) so an operator-supplied path can never inject a command.
2187
+ */
2188
+ readFile?: (path: string) => string;
2153
2189
  /** Injectable seam: browser-bookmark host source. Defaults to `scanAllBookmarks`. */
2154
2190
  scanBookmarks?: () => Promise<BookmarkHost[]>;
2155
2191
  }
@@ -2801,6 +2837,33 @@ declare function parseConnectionString(name: string, url: string): {
2801
2837
  } | null;
2802
2838
  declare const serviceConfigScanner: Scanner;
2803
2839
 
2840
+ /**
2841
+ * Terraform-state importer (5.3) — a first-class deterministic `Scanner`.
2842
+ *
2843
+ * Ingests Terraform state JSON (a local `*.tfstate`, or the output of
2844
+ * `terraform state pull` piped to a file) and emits authoritative `nodes`/`edges` into
2845
+ * the existing discovery pipeline. This bridges *declared intent* (IaC) with *observed
2846
+ * reality* (the live scanners): a resource declared in Terraform and a node observed on
2847
+ * the machine reconcile to one record under `runLocalDiscovery`'s highest-confidence
2848
+ * dedup, and the importer's `depends_on` edges are subject to the same endpoint-existence
2849
+ * gate. Registered in `defaultRegistry()`, so it surfaces through both the CLI discovery
2850
+ * command and the MCP `run_discovery` tool with zero extra wiring.
2851
+ *
2852
+ * Read-only: it only `cat`s a state file (allowlisted). Attribute values are
2853
+ * credential-redacted before storage; only a small identity subset is kept.
2854
+ */
2855
+
2856
+ /** Map a Terraform resource type (e.g. `aws_db_instance`) to a Cartograph node type. */
2857
+ declare function terraformTypeToNode(tfType: string): NodeType;
2858
+ /**
2859
+ * Parse Terraform state JSON into nodes/edges. Pure + deterministic. A managed resource
2860
+ * becomes a node keyed `{type}:terraform:{addr}`; its `dependencies[]` become `depends_on`
2861
+ * edges to other managed resources in the same state. Malformed JSON → empty result
2862
+ * (graceful degradation, never throws).
2863
+ */
2864
+ declare function parseTerraformState(json: string): ScanResult;
2865
+ declare const terraformScanner: Scanner;
2866
+
2804
2867
  /**
2805
2868
  * Confidence rubric for inferred dependency edges (3.2).
2806
2869
  *
@@ -3518,6 +3581,66 @@ declare function executeNlQuery(db: CartographyDB, sessionId: string, search: Se
3518
3581
  /** Convenience: parse + execute in one call. */
3519
3582
  declare function resolveNlQuery(db: CartographyDB, sessionId: string, search: SearchFn, raw: string, opts?: NlQueryOptions): Promise<NlQueryResult>;
3520
3583
 
3584
+ /**
3585
+ * Kubernetes operator (5.2) — a thin, deterministic, LLM-free reconcile loop.
3586
+ *
3587
+ * Runs Cartograph's discovery continuously **inside** a cluster and reports drift between
3588
+ * cycles — the "continuous CMDB for Kubernetes" outcome. It is a thin orchestration over
3589
+ * two engine halves that already exist and are DB-agnostic: the deterministic discovery
3590
+ * driver `runLocalDiscovery` (with a **k8s-only** scanner registry — it maps in-cluster
3591
+ * resources, never the host) and the drift engine `runDrift` (which classifies the delta
3592
+ * vs the previous cycle and dispatches it to the configured sinks, 3.1/4.4). No agent loop,
3593
+ * no Anthropic coupling, read-only (only `kubectl` reads via the allowlist).
3594
+ *
3595
+ * It is a periodic-reconcile operator, not a CRD controller — no custom resource or
3596
+ * controller-runtime dependency; the loop is a plain interval (or a single `--once` pass
3597
+ * for a CronJob driver). All side effects are injectable, so a cycle is unit-testable
3598
+ * without a cluster.
3599
+ */
3600
+
3601
+ /** A k8s-only scanner registry — the operator discovers cluster resources, not the host. */
3602
+ declare function k8sRegistry(): ScannerRegistry;
3603
+ /** True when running inside a Kubernetes pod (the service-account API env is injected). */
3604
+ declare function isInCluster(env?: NodeJS.ProcessEnv): boolean;
3605
+ interface OperatorCycleResult {
3606
+ sessionId: string;
3607
+ nodes: number;
3608
+ edges: number;
3609
+ /** The classified drift vs the previous cycle, or null (first cycle / no change). */
3610
+ drift: DriftAlert | null;
3611
+ }
3612
+ interface OperatorOptions {
3613
+ /** Reconcile interval (ms). Default 5 minutes. */
3614
+ intervalMs?: number;
3615
+ /** Run a single reconcile and return — CronJob-driver friendly. */
3616
+ once?: boolean;
3617
+ /** Injected discovery (tests). Default: `runLocalDiscovery` over the k8s registry. */
3618
+ discover?: (db: CartographyDB, sessionId: string) => Promise<{
3619
+ nodes: number;
3620
+ edges: number;
3621
+ }>;
3622
+ /** Injected drift dispatch (tests). Default: `runDrift` (dispatches to `config.drift` sinks). */
3623
+ drift?: (db: CartographyDB, config: CartographyConfig) => Promise<DriftAlert | null>;
3624
+ /** Stop the reconcile loop (SIGINT/SIGTERM → abort). */
3625
+ signal?: AbortSignal;
3626
+ /** Sleep between cycles (tests inject a controlled/no-wait sleep). */
3627
+ sleep?: (ms: number) => Promise<void>;
3628
+ /**
3629
+ * Keep only the most recent N discovery sessions (default 10) — a continuous operator
3630
+ * creates one session per cycle, so older snapshots are pruned each cycle to bound the
3631
+ * catalog. Drift only needs the latest two; the rest are retained history.
3632
+ */
3633
+ retain?: number;
3634
+ log?: (msg: string) => void;
3635
+ }
3636
+ /**
3637
+ * One reconcile cycle: discover in-cluster → record the session → classify + dispatch drift
3638
+ * vs the previous cycle. Returns the cycle outcome.
3639
+ */
3640
+ declare function runOperatorCycle(db: CartographyDB, config: CartographyConfig, opts?: OperatorOptions): Promise<OperatorCycleResult>;
3641
+ /** Run the operator: a single cycle if `once`, else a reconcile loop until the signal aborts. */
3642
+ declare function runOperator(db: CartographyDB, config: CartographyConfig, opts?: OperatorOptions): Promise<void>;
3643
+
3521
3644
  /**
3522
3645
  * Multi-cloud correlation engine (5.1).
3523
3646
  *
@@ -4379,4 +4502,4 @@ declare function logInfo(message: string, context?: Record<string, unknown>): vo
4379
4502
  declare function logWarn(message: string, context?: Record<string, unknown>): void;
4380
4503
  declare function logError(message: string, context?: Record<string, unknown>): void;
4381
4504
 
4382
- export { ACTIONS, ANOMALY_KINDS, ANOMALY_SEVERITIES, type Action, ActionSchema, type AgentProvider, type AgentRunContext, type AgentTool, type Anomaly, type AnomalyConfig, type AnomalyKind, type AnomalySeverity, type AnomalyThresholds, type AnonViolation, type AnonymizationLevel, type ApiServerOptions, type AskUserFn, type AuthConfig, AuthConfigSchema, AuthorizationError, type Awaitable, type BackstageEntity, type BackstageMapOptions, type BindGuardOptions, type BoltDriver, type BoltRecord, type BoltResult, type BoltSession, CLIENTS, CONFIDENCE, CORRELATION_CONFIDENCE, COST_PERIODS, type CanonicalNode, type CartographyConfig, CartographyDB, type CartographyMapData, type CentralDbConfig, CentralDbConfigSchema, type ClassifiedItem, type ClassifyInput, type ClassifyResult, type ClientSpec, type Cluster, ClusterSchema, type ComplianceInput, type ComplianceReport, ComplianceReportSchema, type ComplianceRule, ComplianceRuleSchema, type Condition, ConditionSchema, ConfigError, type ConfigFile, ConfigFileSchema, type ConfigFormat, type Connection, ConnectionSchema, type Contributor, type ControlResult, ControlResultSchema, type CorrelatedTopology, type CorrelationEdge, type CorrelationSignal, type CostEntry, CostEntrySchema, type CostPeriod, type CostRecord, type CostSource, type CreateMcpServerOptions, type CredentialConfig, CredentialConfigSchema, type CredentialDb, type CredentialRecord, type CredentialStore, type CronFields, CsvCostSource, type CsvCostSourceOptions, DEFAULT_ANOMALY_THRESHOLDS, DEFAULT_FAST_MODEL, DEFAULT_INGEST_QUOTA, DEFAULT_LEAD_MODEL, DEFAULT_SERVER_NAME, DEFAULT_TENANT, DOMAIN_COLORS, DOMAIN_PALETTE, DRIFT_FIELDS, type DashboardOptions, type DataAsset, DataAssetSchema, type DependencyQuery, type DiscoveryEdge, type DiscoveryEvent, type DiscoveryFn, type DiscoveryNode, type DriftAlert, type DriftAlertItem, type DriftConfig, DriftConfigSchema, type DriftField, type DriftItemKind, type DriftRunRow, type DriftSink, type DriftSinkConfig, EDGE_RELATIONSHIPS, type EdgeRelationship, type EdgeRow, EdgeSchema, type EmbeddingProvider, type EnrichResult, type EntryOptions, type EstablishedConn, type EvidenceKind, type FetchLike, type FragmentKind, GraphStoreBackend, type GraphSummary, type HealthResult, type HttpOptions, INGEST_SCHEMA_VERSION, type IngestEnvelope, IngestEnvelopeSchema, type IngestHandler, type IngestHandlerOptions, type IngestOptions, type IngestResponse, type IngestResult, type InstallPlan, InvalidTenantError, type JiraIssue, type JiraOptions, JiraSink, type JiraSinkOptions, LOOPBACK_HOSTS, type LocalDiscoveryOptions, type LocalDiscoveryResult, type LogEntry, type LogLevel, MCP_BIN, type MatchStrategy, NODE_TYPES, NODE_TYPE_GROUPS, type NlIntent, type NlQueryOptions, type NlQueryResult, type NlRelation, type NodeAttribution, type NodeChange, type NodeIdentity, type NodeQuery, type NodeRow, NodeSchema, type NodeSignals, type NodeType, type NodesResult, NotFoundError, OUTPUT_FORMATS, type OrgKeyOptions, type OrgSummary, type OsKind, type OutputFormat, PACKAGE_NAME, PAGERDUTY_ENQUEUE_URL, PENDING_STATUSES, PERSONAL, PORT_MAP, PRIVATE_IP, PUSH_SCHEMA_VERSION, type PagerDutyEvent, PagerDutySink, type PagerDutySinkOptions, type ParsedApiArgs, type PendingShareRow, type PendingStatus, type PlanOptions, type PolicyResult, type PostJsonOptions, type Principal, PrincipalSchema, type ProviderFactory, type ProviderName, ProviderRegistry, type PushItem, type PushOptions, type PushResult, type QueryBackend, type QuotaConfig, type QuotaDecision, RELATION_TO_DIRECTION, ROLES, RateLimiter, type ResolveContext, type ResolveOptions, type Role, RoleSchema, type RuleCheck, RuleCheckSchema, type RuleScope, type Ruleset, RulesetSchema, type RunDriftOptions, SCAN_ARG_PATTERNS, SCHEMA_VERSION, SDL, SECURITY_METADATA_KEYS, SEVERITIES, SEVERITY_WEIGHT, SHARING_LEVELS, type ScanArgKind, type ScanContext, type ScanHintParams, type ScanResult, type Scanner, type ScannerPlugin, type ScannerPluginApi, ScannerRegistry, ScannerShape, type ScheduleConfig, ScheduleConfigSchema, type ScheduledRunResult, type Scope, type SearchFn, type SemanticSearchOptions, type ServerEntry, type SessionRow, type Severity, type SharePreview, type SharePreviewEntry, type SharingLevel, SharingLevelSchema, type SharingPolicy, type ShellKind, type SlackMessage, SlackSink, SqliteCredentialStore, SqliteQueryBackend, SqliteStoreBackend, type StartApiOptions, StdoutSink, type StoreBackend, type StoreBackendOptions, type SyncClassifyOptions, type SyncClassifyResult, TENANT_HEADER, type TenantContext, TenantMismatchError, type TenantOptions, type ToolResult, type TopologyDelta, type TopologyDiff, type TopologyInput, type TraversalResult, VectorStore, WebhookSink, type WebhookSinkOptions, applyInstall, applySharingLevel, assertReadOnly, assertSafeBind, assertSafeScanArg, assertSameTenant, assignColors, authorize, bearerToken, bookmarksScanner, buildCartographyToolHandlers, buildMapData, buildOpenApiDocument, buildReport, buildSinks, can, centralDbFromEnv, checkBearer, checkPrerequisites, checkReadOnly, clampText, classify, classifyDrift, cleanupTempFiles, cloudAwsScanner, cloudAzureScanner, cloudGcpScanner, codeAddMcpCommand, computeCentroid, computeClusterBounds, computeIdentity, connectionsScanner, contentHash, correlateTopology, createBashTool, createCartographyTools, createClaudeProvider, createDefaultRegistry, createHashEmbedder, createIngestHandler, createLocalEmbedder, createMcpServer, createOllamaProvider, createOpenAIProvider, createScanRunner, createSemanticSearch, createSqliteQueryBackend, currentOs, cursorDeeplink, dashboardHtml, databasesScanner, deepMerge, defaultAllowedHosts, defaultConfig, defaultContext, defaultProviderRegistry, defaultRegistry, defaultServerEntry, definePlugin, deriveSessionName, detectAnomalies, detectOrphans, detectShadowIt, diffTopology, edgesToConnections, enrichCosts, entitiesToYaml, evaluateCheck, evaluateRule, evidenceLine, executeGraphql, executeNlQuery, exportAll, exportBackstageYAML, exportComplianceReport, exportCostCSV, exportCostSummary, exportDiscoveryApp, exportJGF, exportJSON, extractListeningPorts, extractSignals, filterBySeverity, findAnonViolations, formatComplianceText, formatJira, formatPagerDuty, formatSlack, generateDependencyMermaid, generateDiffMermaid, generateTopologyMermaid, getClient, getRuleset, globalId, groupByDomain, handleGraphqlGet, hashToken, hexCorners, hexDistance, hexNeighbors, hexRing, hexSpiral, hexToPixel, hmacKey, hostname, ingestEnvelope, installedAppsScanner, isLoopbackHost, isPersonalHost, isReadOnlyCommand, isRemembered, isSecureWebhookUrl, k8sScanner, keyMetaOf, layoutClusters, listClients, listRulesets, loadConfig, loadOrgKey, loadPlugins, loadRuleset, localDiscoveryFn, log, logDebug, logError, logInfo, logWarn, machineId, maxSeverity, mcpServerObject, newAnomalies, nextRun, nodesToAssets, normalizeId, normalizeTenant, openStoreBackend, orgKeyPath, osUser, parseApiArgs, parseComposeDeps, parseConfig, parseConnectionString, parseCostCsv, parseCron, parseEstablished, parseNginxUpstreams, parseNlQuery, parseScanHint, pixelToHex, planInstall, portsScanner, postJson, previewShare, pseudonymize, pseudonymizeFragment, pseudonymizeString, pushDeltas, readConfigFile, redactConnectionString, redactSecrets, redactValue, renderDiff, resolveEffectiveLevel, resolveNlQuery, resolvePrincipal, resolveSharingLevel, resolveTenant, revalidateAnonymized, reversalKey, reversePseudonym, rotateOrgKey, runApi, runDiscovery, runDrift, runHttp, runLocalDiscovery, runOnce, runStdio, runSyncClassify, safeEnv, safeJson, safetyHook, sanitizeUntrusted, sanitizeValue, scopeReads, scoreTopology, securityRelevantChange, serializeConfig, serviceConfigScanner, setVerbose, shadeVariant, shapeToJsonSchema, shareHash, splitSegments, stableStringify, startApi, stripSensitive, timingSafeEqual, toBackstageEntities, validateScanner, vscodeDeeplink, zodToJsonSchema };
4505
+ export { ACTIONS, ANOMALY_KINDS, ANOMALY_SEVERITIES, ANON_TOKEN, type Action, ActionSchema, type AgentProvider, type AgentRunContext, type AgentTool, type Anomaly, type AnomalyConfig, type AnomalyKind, type AnomalySeverity, type AnomalyThresholds, type AnonViolation, type AnonymizationLevel, type ApiServerOptions, type AskUserFn, type AuthConfig, AuthConfigSchema, AuthorizationError, type Awaitable, BARE_INTERNAL_HOST, type BackstageEntity, type BackstageMapOptions, type BindGuardOptions, type BoltDriver, type BoltRecord, type BoltResult, type BoltSession, CLIENTS, CONFIDENCE, CORRELATION_CONFIDENCE, COST_PERIODS, type CanonicalNode, type CartographyConfig, CartographyDB, type CartographyMapData, type CentralDbConfig, CentralDbConfigSchema, type ClassifiedItem, type ClassifyInput, type ClassifyResult, type ClientSpec, type Cluster, ClusterSchema, type ComplianceInput, type ComplianceReport, ComplianceReportSchema, type ComplianceRule, ComplianceRuleSchema, type Condition, ConditionSchema, ConfigError, type ConfigFile, ConfigFileSchema, type ConfigFormat, type Connection, ConnectionSchema, type Contributor, type ControlResult, ControlResultSchema, type CorrelatedTopology, type CorrelationEdge, type CorrelationSignal, type CostEntry, CostEntrySchema, type CostPeriod, type CostRecord, type CostSource, type CreateMcpServerOptions, type CredentialConfig, CredentialConfigSchema, type CredentialDb, type CredentialRecord, type CredentialStore, type CronFields, CsvCostSource, type CsvCostSourceOptions, DEFAULT_ANOMALY_THRESHOLDS, DEFAULT_FAST_MODEL, DEFAULT_INGEST_QUOTA, DEFAULT_LEAD_MODEL, DEFAULT_SERVER_NAME, DEFAULT_TENANT, DOMAIN_COLORS, DOMAIN_PALETTE, DRIFT_FIELDS, type DashboardOptions, type DataAsset, DataAssetSchema, type DependencyQuery, type DiscoveryEdge, type DiscoveryEvent, type DiscoveryFn, type DiscoveryNode, type DriftAlert, type DriftAlertItem, type DriftConfig, DriftConfigSchema, type DriftField, type DriftItemKind, type DriftRunRow, type DriftSink, type DriftSinkConfig, EDGE_RELATIONSHIPS, type EdgeRelationship, type EdgeRow, EdgeSchema, type EmbeddingProvider, type EnrichResult, type EntryOptions, type EstablishedConn, type EvidenceKind, type FetchLike, type FragmentKind, GraphStoreBackend, type GraphSummary, type HealthResult, type HttpOptions, INGEST_SCHEMA_VERSION, type IngestEnvelope, IngestEnvelopeSchema, type IngestHandler, type IngestHandlerOptions, type IngestOptions, type IngestResponse, type IngestResult, type InstallPlan, InvalidTenantError, type JiraIssue, type JiraOptions, JiraSink, type JiraSinkOptions, LOOPBACK_HOSTS, type LocalDiscoveryOptions, type LocalDiscoveryResult, type LogEntry, type LogLevel, MCP_BIN, type MatchStrategy, NODE_TYPES, NODE_TYPE_GROUPS, type NlIntent, type NlQueryOptions, type NlQueryResult, type NlRelation, type NodeAttribution, type NodeChange, type NodeIdentity, type NodeQuery, type NodeRow, NodeSchema, type NodeSignals, type NodeType, type NodesResult, NotFoundError, OUTPUT_FORMATS, type OperatorCycleResult, type OperatorOptions, type OrgKeyOptions, type OrgSummary, type OsKind, type OutputFormat, PACKAGE_NAME, PAGERDUTY_ENQUEUE_URL, PENDING_STATUSES, PERSONAL, PORT_MAP, PRIVATE_IP, PUSH_SCHEMA_VERSION, type PagerDutyEvent, PagerDutySink, type PagerDutySinkOptions, type ParsedApiArgs, type PendingShareRow, type PendingStatus, type PlanOptions, type PolicyResult, type PostJsonOptions, type Principal, PrincipalSchema, type ProviderFactory, type ProviderName, ProviderRegistry, type PushItem, type PushOptions, type PushResult, type QueryBackend, type QuotaConfig, type QuotaDecision, RELATION_TO_DIRECTION, ROLES, RateLimiter, type ResolveContext, type ResolveOptions, type Role, RoleSchema, type RuleCheck, RuleCheckSchema, type RuleScope, type Ruleset, RulesetSchema, type RunDriftOptions, SCAN_ARG_PATTERNS, SCHEMA_VERSION, SDL, SECURITY_METADATA_KEYS, SEVERITIES, SEVERITY_WEIGHT, SHARING_LEVELS, type ScanArgKind, type ScanContext, type ScanHintParams, type ScanResult, type Scanner, type ScannerPlugin, type ScannerPluginApi, ScannerRegistry, ScannerShape, type ScheduleConfig, ScheduleConfigSchema, type ScheduledRunResult, type Scope, type SearchFn, type SemanticSearchOptions, type ServerEntry, type SessionRow, type Severity, type SharePreview, type SharePreviewEntry, type SharingLevel, SharingLevelSchema, type SharingPolicy, type ShellKind, type SlackMessage, SlackSink, SqliteCredentialStore, SqliteQueryBackend, SqliteStoreBackend, type StartApiOptions, StdoutSink, type StoreBackend, type StoreBackendOptions, type SyncClassifyOptions, type SyncClassifyResult, TENANT_HEADER, type TenantContext, TenantMismatchError, type TenantOptions, type ToolResult, type TopologyDelta, type TopologyDiff, type TopologyInput, type TraversalResult, VectorStore, WebhookSink, type WebhookSinkOptions, applyInstall, applySharingLevel, assertReadOnly, assertSafeBind, assertSafeScanArg, assertSameTenant, assignColors, authorize, bearerToken, bookmarksScanner, buildCartographyToolHandlers, buildMapData, buildOpenApiDocument, buildReport, buildSinks, can, centralDbFromEnv, checkBearer, checkPrerequisites, checkReadOnly, clampText, classify, classifyDrift, cleanupTempFiles, cloudAwsScanner, cloudAzureScanner, cloudGcpScanner, codeAddMcpCommand, computeCentroid, computeClusterBounds, computeIdentity, connectionsScanner, contentHash, correlateTopology, createBashTool, createCartographyTools, createClaudeProvider, createDefaultRegistry, createHashEmbedder, createIngestHandler, createLocalEmbedder, createMcpServer, createOllamaProvider, createOpenAIProvider, createScanRunner, createSemanticSearch, createSqliteQueryBackend, currentOs, cursorDeeplink, dashboardHtml, databasesScanner, deepMerge, defaultAllowedHosts, defaultConfig, defaultContext, defaultProviderRegistry, defaultRegistry, defaultServerEntry, definePlugin, deriveSessionName, detectAnomalies, detectOrphans, detectShadowIt, diffTopology, edgesToConnections, enrichCosts, entitiesToYaml, evaluateCheck, evaluateRule, evidenceLine, executeGraphql, executeNlQuery, exportAll, exportBackstageYAML, exportComplianceReport, exportCostCSV, exportCostSummary, exportDiscoveryApp, exportJGF, exportJSON, extractListeningPorts, extractSignals, filterBySeverity, findAnonViolations, formatComplianceText, formatJira, formatPagerDuty, formatSlack, generateDependencyMermaid, generateDiffMermaid, generateTopologyMermaid, getClient, getRuleset, globalId, groupByDomain, handleGraphqlGet, hashToken, hexCorners, hexDistance, hexNeighbors, hexRing, hexSpiral, hexToPixel, hmacKey, hostname, ingestEnvelope, installedAppsScanner, isInCluster, isLoopbackHost, isPersonalHost, isReadOnlyCommand, isRemembered, isSecureWebhookUrl, k8sRegistry, k8sScanner, keyMetaOf, layoutClusters, listClients, listRulesets, loadConfig, loadOrgKey, loadPlugins, loadRuleset, localDiscoveryFn, log, logDebug, logError, logInfo, logWarn, machineId, maxSeverity, mcpServerObject, newAnomalies, nextRun, nodesToAssets, normalizeId, normalizeTenant, openStoreBackend, orgKeyPath, osUser, parseApiArgs, parseComposeDeps, parseConfig, parseConnectionString, parseCostCsv, parseCron, parseEstablished, parseNginxUpstreams, parseNlQuery, parseScanHint, parseTerraformState, pixelToHex, planInstall, portsScanner, postJson, previewShare, pseudonymize, pseudonymizeFragment, pseudonymizeId, pseudonymizeString, pushDeltas, readConfigFile, redactConnectionString, redactSecrets, redactValue, renderDiff, resolveEffectiveLevel, resolveNlQuery, resolvePrincipal, resolveSharingLevel, resolveTenant, revalidateAnonymized, reversalKey, reversePseudonym, rotateOrgKey, runApi, runDiscovery, runDrift, runHttp, runLocalDiscovery, runOnce, runOperator, runOperatorCycle, runStdio, runSyncClassify, safeEnv, safeJson, safetyHook, sanitizeUntrusted, sanitizeValue, scopeReads, scoreTopology, securityRelevantChange, serializeConfig, serviceConfigScanner, setVerbose, shadeVariant, shapeToJsonSchema, shareHash, splitSegments, stableStringify, startApi, stripSensitive, terraformScanner, terraformTypeToNode, timingSafeEqual, toBackstageEntities, validateScanner, vscodeDeeplink, zodToJsonSchema };
package/dist/index.d.ts CHANGED
@@ -1984,6 +1984,18 @@ type FragmentKind = 'host' | 'user' | 'path' | 'ip';
1984
1984
  * left intact (so topology against public infra still reads).
1985
1985
  */
1986
1986
  declare const PRIVATE_IP: RegExp;
1987
+ /**
1988
+ * A bare single-label internal hostname — the known 2.10 residual that {@link HOSTNAME}
1989
+ * (multi-label only) never tokenizes. We only treat a single label as an internal host
1990
+ * when it *looks* like one: it contains a hyphen or a digit run (e.g. `db-01`, `web2`,
1991
+ * `prod-db`) so we do not false-positive ordinary English words used as a `name`
1992
+ * (`Postgres`, `Marketing`) or the literal `localhost`. Single-sourced here so the
1993
+ * client (this module) and the server (`src/central/anonymization.ts`, which re-imports
1994
+ * this constant) agree on what counts as a bare internal host.
1995
+ */
1996
+ declare const BARE_INTERNAL_HOST: RegExp;
1997
+ /** A pseudonym token produced by this module (`anon:host:abc…`) — already anonymized. */
1998
+ declare const ANON_TOKEN: RegExp;
1987
1999
  /**
1988
2000
  * Deterministic token for one identifying fragment. When `db` is supplied, the
1989
2001
  * plaintext is AES-256-GCM-encrypted under `reversalKey(orgKey)` and persisted so
@@ -1998,6 +2010,17 @@ declare function pseudonymizeFragment(plaintext: string, kind: FragmentKind, org
1998
2010
  * or a path segment is never mis-tokenized as a host.
1999
2011
  */
2000
2012
  declare function pseudonymizeString(s: string, orgKey: Buffer, db?: CartographyDB): string;
2013
+ /**
2014
+ * Pseudonymize the host material of a structured node id (`{type}:{host}[:{port}]` or
2015
+ * `{type}:{provider}:{name}`). The leading `{type}` segment is a non-identifying schema
2016
+ * prefix and is left verbatim; every later colon-delimited segment is run through
2017
+ * {@link pseudonymizeString} (so an FQDN, a private IP, an absolute path, or a bare
2018
+ * internal host inside a segment all tokenize, while a numeric port — matching no rule —
2019
+ * is preserved). Re-join with `:`. This is the structural id transform used for node ids
2020
+ * and for edge endpoints, so both stay consistent. A token already inside a segment is
2021
+ * not re-tokenized (the bare-host pass is whole-string and `anon:` tokens are excluded).
2022
+ */
2023
+ declare function pseudonymizeId(id: string, orgKey: Buffer, db?: CartographyDB): string;
2001
2024
  /**
2002
2025
  * Recursive, structure-preserving walker — same shape as `redactValue`
2003
2026
  * (`src/tools.ts`): strings → {@link pseudonymizeString}, arrays → map,
@@ -2042,8 +2065,16 @@ declare function resolveEffectiveLevel(node: DiscoveryNode, policy: SharingPolic
2042
2065
  * (structure-preserving); identifying fragments tokenized.
2043
2066
  * - `full` → a structural clone, verbatim.
2044
2067
  *
2045
- * The same deterministic `pseudonymizeString` is applied to the id here and by
2046
- * {@link previewShare} when remapping edges, so endpoints always resolve.
2068
+ * The same deterministic `pseudonymizeId` is applied to the id here and by
2069
+ * {@link previewShare} when remapping edges (via the shared idMap), so endpoints
2070
+ * always resolve. `pseudonymizeId` is id-aware: it tokenizes the host segment(s) —
2071
+ * including a bare single-label internal host — while sparing the `{type}` prefix.
2072
+ *
2073
+ * At the `anonymized` level the derived identity fields `globalId`
2074
+ * (`{tenant}:{normalizeId(id)}`, which embeds the raw id) and `contentHash` are
2075
+ * dropped from the outgoing payload — they would otherwise carry the raw id past
2076
+ * anonymization, and the central collector recomputes both from the (anonymized)
2077
+ * node on ingest (`computeIdentity`), so omitting them is both leak-free and lossless.
2047
2078
  */
2048
2079
  declare function applySharingLevel(node: DiscoveryNode, level: SharingLevel, orgKey: Buffer, db?: CartographyDB): DiscoveryNode | null;
2049
2080
  interface SharePreviewEntry {
@@ -2150,6 +2181,11 @@ interface ScanContext {
2150
2181
  scanEstablishedConnections?: () => string;
2151
2182
  /** Injectable seam: cross-platform file search (3.2). Defaults to `findFiles`. */
2152
2183
  findFiles?: (dirs: string[], patterns: string[], maxDepth: number, limit: number) => string;
2184
+ /**
2185
+ * Injectable seam: read a local file's UTF-8 contents, '' on any error (5.3). Reads via
2186
+ * `node:fs` (NOT the shell) so an operator-supplied path can never inject a command.
2187
+ */
2188
+ readFile?: (path: string) => string;
2153
2189
  /** Injectable seam: browser-bookmark host source. Defaults to `scanAllBookmarks`. */
2154
2190
  scanBookmarks?: () => Promise<BookmarkHost[]>;
2155
2191
  }
@@ -2801,6 +2837,33 @@ declare function parseConnectionString(name: string, url: string): {
2801
2837
  } | null;
2802
2838
  declare const serviceConfigScanner: Scanner;
2803
2839
 
2840
+ /**
2841
+ * Terraform-state importer (5.3) — a first-class deterministic `Scanner`.
2842
+ *
2843
+ * Ingests Terraform state JSON (a local `*.tfstate`, or the output of
2844
+ * `terraform state pull` piped to a file) and emits authoritative `nodes`/`edges` into
2845
+ * the existing discovery pipeline. This bridges *declared intent* (IaC) with *observed
2846
+ * reality* (the live scanners): a resource declared in Terraform and a node observed on
2847
+ * the machine reconcile to one record under `runLocalDiscovery`'s highest-confidence
2848
+ * dedup, and the importer's `depends_on` edges are subject to the same endpoint-existence
2849
+ * gate. Registered in `defaultRegistry()`, so it surfaces through both the CLI discovery
2850
+ * command and the MCP `run_discovery` tool with zero extra wiring.
2851
+ *
2852
+ * Read-only: it only `cat`s a state file (allowlisted). Attribute values are
2853
+ * credential-redacted before storage; only a small identity subset is kept.
2854
+ */
2855
+
2856
+ /** Map a Terraform resource type (e.g. `aws_db_instance`) to a Cartograph node type. */
2857
+ declare function terraformTypeToNode(tfType: string): NodeType;
2858
+ /**
2859
+ * Parse Terraform state JSON into nodes/edges. Pure + deterministic. A managed resource
2860
+ * becomes a node keyed `{type}:terraform:{addr}`; its `dependencies[]` become `depends_on`
2861
+ * edges to other managed resources in the same state. Malformed JSON → empty result
2862
+ * (graceful degradation, never throws).
2863
+ */
2864
+ declare function parseTerraformState(json: string): ScanResult;
2865
+ declare const terraformScanner: Scanner;
2866
+
2804
2867
  /**
2805
2868
  * Confidence rubric for inferred dependency edges (3.2).
2806
2869
  *
@@ -3518,6 +3581,66 @@ declare function executeNlQuery(db: CartographyDB, sessionId: string, search: Se
3518
3581
  /** Convenience: parse + execute in one call. */
3519
3582
  declare function resolveNlQuery(db: CartographyDB, sessionId: string, search: SearchFn, raw: string, opts?: NlQueryOptions): Promise<NlQueryResult>;
3520
3583
 
3584
+ /**
3585
+ * Kubernetes operator (5.2) — a thin, deterministic, LLM-free reconcile loop.
3586
+ *
3587
+ * Runs Cartograph's discovery continuously **inside** a cluster and reports drift between
3588
+ * cycles — the "continuous CMDB for Kubernetes" outcome. It is a thin orchestration over
3589
+ * two engine halves that already exist and are DB-agnostic: the deterministic discovery
3590
+ * driver `runLocalDiscovery` (with a **k8s-only** scanner registry — it maps in-cluster
3591
+ * resources, never the host) and the drift engine `runDrift` (which classifies the delta
3592
+ * vs the previous cycle and dispatches it to the configured sinks, 3.1/4.4). No agent loop,
3593
+ * no Anthropic coupling, read-only (only `kubectl` reads via the allowlist).
3594
+ *
3595
+ * It is a periodic-reconcile operator, not a CRD controller — no custom resource or
3596
+ * controller-runtime dependency; the loop is a plain interval (or a single `--once` pass
3597
+ * for a CronJob driver). All side effects are injectable, so a cycle is unit-testable
3598
+ * without a cluster.
3599
+ */
3600
+
3601
+ /** A k8s-only scanner registry — the operator discovers cluster resources, not the host. */
3602
+ declare function k8sRegistry(): ScannerRegistry;
3603
+ /** True when running inside a Kubernetes pod (the service-account API env is injected). */
3604
+ declare function isInCluster(env?: NodeJS.ProcessEnv): boolean;
3605
+ interface OperatorCycleResult {
3606
+ sessionId: string;
3607
+ nodes: number;
3608
+ edges: number;
3609
+ /** The classified drift vs the previous cycle, or null (first cycle / no change). */
3610
+ drift: DriftAlert | null;
3611
+ }
3612
+ interface OperatorOptions {
3613
+ /** Reconcile interval (ms). Default 5 minutes. */
3614
+ intervalMs?: number;
3615
+ /** Run a single reconcile and return — CronJob-driver friendly. */
3616
+ once?: boolean;
3617
+ /** Injected discovery (tests). Default: `runLocalDiscovery` over the k8s registry. */
3618
+ discover?: (db: CartographyDB, sessionId: string) => Promise<{
3619
+ nodes: number;
3620
+ edges: number;
3621
+ }>;
3622
+ /** Injected drift dispatch (tests). Default: `runDrift` (dispatches to `config.drift` sinks). */
3623
+ drift?: (db: CartographyDB, config: CartographyConfig) => Promise<DriftAlert | null>;
3624
+ /** Stop the reconcile loop (SIGINT/SIGTERM → abort). */
3625
+ signal?: AbortSignal;
3626
+ /** Sleep between cycles (tests inject a controlled/no-wait sleep). */
3627
+ sleep?: (ms: number) => Promise<void>;
3628
+ /**
3629
+ * Keep only the most recent N discovery sessions (default 10) — a continuous operator
3630
+ * creates one session per cycle, so older snapshots are pruned each cycle to bound the
3631
+ * catalog. Drift only needs the latest two; the rest are retained history.
3632
+ */
3633
+ retain?: number;
3634
+ log?: (msg: string) => void;
3635
+ }
3636
+ /**
3637
+ * One reconcile cycle: discover in-cluster → record the session → classify + dispatch drift
3638
+ * vs the previous cycle. Returns the cycle outcome.
3639
+ */
3640
+ declare function runOperatorCycle(db: CartographyDB, config: CartographyConfig, opts?: OperatorOptions): Promise<OperatorCycleResult>;
3641
+ /** Run the operator: a single cycle if `once`, else a reconcile loop until the signal aborts. */
3642
+ declare function runOperator(db: CartographyDB, config: CartographyConfig, opts?: OperatorOptions): Promise<void>;
3643
+
3521
3644
  /**
3522
3645
  * Multi-cloud correlation engine (5.1).
3523
3646
  *
@@ -4379,4 +4502,4 @@ declare function logInfo(message: string, context?: Record<string, unknown>): vo
4379
4502
  declare function logWarn(message: string, context?: Record<string, unknown>): void;
4380
4503
  declare function logError(message: string, context?: Record<string, unknown>): void;
4381
4504
 
4382
- export { ACTIONS, ANOMALY_KINDS, ANOMALY_SEVERITIES, type Action, ActionSchema, type AgentProvider, type AgentRunContext, type AgentTool, type Anomaly, type AnomalyConfig, type AnomalyKind, type AnomalySeverity, type AnomalyThresholds, type AnonViolation, type AnonymizationLevel, type ApiServerOptions, type AskUserFn, type AuthConfig, AuthConfigSchema, AuthorizationError, type Awaitable, type BackstageEntity, type BackstageMapOptions, type BindGuardOptions, type BoltDriver, type BoltRecord, type BoltResult, type BoltSession, CLIENTS, CONFIDENCE, CORRELATION_CONFIDENCE, COST_PERIODS, type CanonicalNode, type CartographyConfig, CartographyDB, type CartographyMapData, type CentralDbConfig, CentralDbConfigSchema, type ClassifiedItem, type ClassifyInput, type ClassifyResult, type ClientSpec, type Cluster, ClusterSchema, type ComplianceInput, type ComplianceReport, ComplianceReportSchema, type ComplianceRule, ComplianceRuleSchema, type Condition, ConditionSchema, ConfigError, type ConfigFile, ConfigFileSchema, type ConfigFormat, type Connection, ConnectionSchema, type Contributor, type ControlResult, ControlResultSchema, type CorrelatedTopology, type CorrelationEdge, type CorrelationSignal, type CostEntry, CostEntrySchema, type CostPeriod, type CostRecord, type CostSource, type CreateMcpServerOptions, type CredentialConfig, CredentialConfigSchema, type CredentialDb, type CredentialRecord, type CredentialStore, type CronFields, CsvCostSource, type CsvCostSourceOptions, DEFAULT_ANOMALY_THRESHOLDS, DEFAULT_FAST_MODEL, DEFAULT_INGEST_QUOTA, DEFAULT_LEAD_MODEL, DEFAULT_SERVER_NAME, DEFAULT_TENANT, DOMAIN_COLORS, DOMAIN_PALETTE, DRIFT_FIELDS, type DashboardOptions, type DataAsset, DataAssetSchema, type DependencyQuery, type DiscoveryEdge, type DiscoveryEvent, type DiscoveryFn, type DiscoveryNode, type DriftAlert, type DriftAlertItem, type DriftConfig, DriftConfigSchema, type DriftField, type DriftItemKind, type DriftRunRow, type DriftSink, type DriftSinkConfig, EDGE_RELATIONSHIPS, type EdgeRelationship, type EdgeRow, EdgeSchema, type EmbeddingProvider, type EnrichResult, type EntryOptions, type EstablishedConn, type EvidenceKind, type FetchLike, type FragmentKind, GraphStoreBackend, type GraphSummary, type HealthResult, type HttpOptions, INGEST_SCHEMA_VERSION, type IngestEnvelope, IngestEnvelopeSchema, type IngestHandler, type IngestHandlerOptions, type IngestOptions, type IngestResponse, type IngestResult, type InstallPlan, InvalidTenantError, type JiraIssue, type JiraOptions, JiraSink, type JiraSinkOptions, LOOPBACK_HOSTS, type LocalDiscoveryOptions, type LocalDiscoveryResult, type LogEntry, type LogLevel, MCP_BIN, type MatchStrategy, NODE_TYPES, NODE_TYPE_GROUPS, type NlIntent, type NlQueryOptions, type NlQueryResult, type NlRelation, type NodeAttribution, type NodeChange, type NodeIdentity, type NodeQuery, type NodeRow, NodeSchema, type NodeSignals, type NodeType, type NodesResult, NotFoundError, OUTPUT_FORMATS, type OrgKeyOptions, type OrgSummary, type OsKind, type OutputFormat, PACKAGE_NAME, PAGERDUTY_ENQUEUE_URL, PENDING_STATUSES, PERSONAL, PORT_MAP, PRIVATE_IP, PUSH_SCHEMA_VERSION, type PagerDutyEvent, PagerDutySink, type PagerDutySinkOptions, type ParsedApiArgs, type PendingShareRow, type PendingStatus, type PlanOptions, type PolicyResult, type PostJsonOptions, type Principal, PrincipalSchema, type ProviderFactory, type ProviderName, ProviderRegistry, type PushItem, type PushOptions, type PushResult, type QueryBackend, type QuotaConfig, type QuotaDecision, RELATION_TO_DIRECTION, ROLES, RateLimiter, type ResolveContext, type ResolveOptions, type Role, RoleSchema, type RuleCheck, RuleCheckSchema, type RuleScope, type Ruleset, RulesetSchema, type RunDriftOptions, SCAN_ARG_PATTERNS, SCHEMA_VERSION, SDL, SECURITY_METADATA_KEYS, SEVERITIES, SEVERITY_WEIGHT, SHARING_LEVELS, type ScanArgKind, type ScanContext, type ScanHintParams, type ScanResult, type Scanner, type ScannerPlugin, type ScannerPluginApi, ScannerRegistry, ScannerShape, type ScheduleConfig, ScheduleConfigSchema, type ScheduledRunResult, type Scope, type SearchFn, type SemanticSearchOptions, type ServerEntry, type SessionRow, type Severity, type SharePreview, type SharePreviewEntry, type SharingLevel, SharingLevelSchema, type SharingPolicy, type ShellKind, type SlackMessage, SlackSink, SqliteCredentialStore, SqliteQueryBackend, SqliteStoreBackend, type StartApiOptions, StdoutSink, type StoreBackend, type StoreBackendOptions, type SyncClassifyOptions, type SyncClassifyResult, TENANT_HEADER, type TenantContext, TenantMismatchError, type TenantOptions, type ToolResult, type TopologyDelta, type TopologyDiff, type TopologyInput, type TraversalResult, VectorStore, WebhookSink, type WebhookSinkOptions, applyInstall, applySharingLevel, assertReadOnly, assertSafeBind, assertSafeScanArg, assertSameTenant, assignColors, authorize, bearerToken, bookmarksScanner, buildCartographyToolHandlers, buildMapData, buildOpenApiDocument, buildReport, buildSinks, can, centralDbFromEnv, checkBearer, checkPrerequisites, checkReadOnly, clampText, classify, classifyDrift, cleanupTempFiles, cloudAwsScanner, cloudAzureScanner, cloudGcpScanner, codeAddMcpCommand, computeCentroid, computeClusterBounds, computeIdentity, connectionsScanner, contentHash, correlateTopology, createBashTool, createCartographyTools, createClaudeProvider, createDefaultRegistry, createHashEmbedder, createIngestHandler, createLocalEmbedder, createMcpServer, createOllamaProvider, createOpenAIProvider, createScanRunner, createSemanticSearch, createSqliteQueryBackend, currentOs, cursorDeeplink, dashboardHtml, databasesScanner, deepMerge, defaultAllowedHosts, defaultConfig, defaultContext, defaultProviderRegistry, defaultRegistry, defaultServerEntry, definePlugin, deriveSessionName, detectAnomalies, detectOrphans, detectShadowIt, diffTopology, edgesToConnections, enrichCosts, entitiesToYaml, evaluateCheck, evaluateRule, evidenceLine, executeGraphql, executeNlQuery, exportAll, exportBackstageYAML, exportComplianceReport, exportCostCSV, exportCostSummary, exportDiscoveryApp, exportJGF, exportJSON, extractListeningPorts, extractSignals, filterBySeverity, findAnonViolations, formatComplianceText, formatJira, formatPagerDuty, formatSlack, generateDependencyMermaid, generateDiffMermaid, generateTopologyMermaid, getClient, getRuleset, globalId, groupByDomain, handleGraphqlGet, hashToken, hexCorners, hexDistance, hexNeighbors, hexRing, hexSpiral, hexToPixel, hmacKey, hostname, ingestEnvelope, installedAppsScanner, isLoopbackHost, isPersonalHost, isReadOnlyCommand, isRemembered, isSecureWebhookUrl, k8sScanner, keyMetaOf, layoutClusters, listClients, listRulesets, loadConfig, loadOrgKey, loadPlugins, loadRuleset, localDiscoveryFn, log, logDebug, logError, logInfo, logWarn, machineId, maxSeverity, mcpServerObject, newAnomalies, nextRun, nodesToAssets, normalizeId, normalizeTenant, openStoreBackend, orgKeyPath, osUser, parseApiArgs, parseComposeDeps, parseConfig, parseConnectionString, parseCostCsv, parseCron, parseEstablished, parseNginxUpstreams, parseNlQuery, parseScanHint, pixelToHex, planInstall, portsScanner, postJson, previewShare, pseudonymize, pseudonymizeFragment, pseudonymizeString, pushDeltas, readConfigFile, redactConnectionString, redactSecrets, redactValue, renderDiff, resolveEffectiveLevel, resolveNlQuery, resolvePrincipal, resolveSharingLevel, resolveTenant, revalidateAnonymized, reversalKey, reversePseudonym, rotateOrgKey, runApi, runDiscovery, runDrift, runHttp, runLocalDiscovery, runOnce, runStdio, runSyncClassify, safeEnv, safeJson, safetyHook, sanitizeUntrusted, sanitizeValue, scopeReads, scoreTopology, securityRelevantChange, serializeConfig, serviceConfigScanner, setVerbose, shadeVariant, shapeToJsonSchema, shareHash, splitSegments, stableStringify, startApi, stripSensitive, timingSafeEqual, toBackstageEntities, validateScanner, vscodeDeeplink, zodToJsonSchema };
4505
+ export { ACTIONS, ANOMALY_KINDS, ANOMALY_SEVERITIES, ANON_TOKEN, type Action, ActionSchema, type AgentProvider, type AgentRunContext, type AgentTool, type Anomaly, type AnomalyConfig, type AnomalyKind, type AnomalySeverity, type AnomalyThresholds, type AnonViolation, type AnonymizationLevel, type ApiServerOptions, type AskUserFn, type AuthConfig, AuthConfigSchema, AuthorizationError, type Awaitable, BARE_INTERNAL_HOST, type BackstageEntity, type BackstageMapOptions, type BindGuardOptions, type BoltDriver, type BoltRecord, type BoltResult, type BoltSession, CLIENTS, CONFIDENCE, CORRELATION_CONFIDENCE, COST_PERIODS, type CanonicalNode, type CartographyConfig, CartographyDB, type CartographyMapData, type CentralDbConfig, CentralDbConfigSchema, type ClassifiedItem, type ClassifyInput, type ClassifyResult, type ClientSpec, type Cluster, ClusterSchema, type ComplianceInput, type ComplianceReport, ComplianceReportSchema, type ComplianceRule, ComplianceRuleSchema, type Condition, ConditionSchema, ConfigError, type ConfigFile, ConfigFileSchema, type ConfigFormat, type Connection, ConnectionSchema, type Contributor, type ControlResult, ControlResultSchema, type CorrelatedTopology, type CorrelationEdge, type CorrelationSignal, type CostEntry, CostEntrySchema, type CostPeriod, type CostRecord, type CostSource, type CreateMcpServerOptions, type CredentialConfig, CredentialConfigSchema, type CredentialDb, type CredentialRecord, type CredentialStore, type CronFields, CsvCostSource, type CsvCostSourceOptions, DEFAULT_ANOMALY_THRESHOLDS, DEFAULT_FAST_MODEL, DEFAULT_INGEST_QUOTA, DEFAULT_LEAD_MODEL, DEFAULT_SERVER_NAME, DEFAULT_TENANT, DOMAIN_COLORS, DOMAIN_PALETTE, DRIFT_FIELDS, type DashboardOptions, type DataAsset, DataAssetSchema, type DependencyQuery, type DiscoveryEdge, type DiscoveryEvent, type DiscoveryFn, type DiscoveryNode, type DriftAlert, type DriftAlertItem, type DriftConfig, DriftConfigSchema, type DriftField, type DriftItemKind, type DriftRunRow, type DriftSink, type DriftSinkConfig, EDGE_RELATIONSHIPS, type EdgeRelationship, type EdgeRow, EdgeSchema, type EmbeddingProvider, type EnrichResult, type EntryOptions, type EstablishedConn, type EvidenceKind, type FetchLike, type FragmentKind, GraphStoreBackend, type GraphSummary, type HealthResult, type HttpOptions, INGEST_SCHEMA_VERSION, type IngestEnvelope, IngestEnvelopeSchema, type IngestHandler, type IngestHandlerOptions, type IngestOptions, type IngestResponse, type IngestResult, type InstallPlan, InvalidTenantError, type JiraIssue, type JiraOptions, JiraSink, type JiraSinkOptions, LOOPBACK_HOSTS, type LocalDiscoveryOptions, type LocalDiscoveryResult, type LogEntry, type LogLevel, MCP_BIN, type MatchStrategy, NODE_TYPES, NODE_TYPE_GROUPS, type NlIntent, type NlQueryOptions, type NlQueryResult, type NlRelation, type NodeAttribution, type NodeChange, type NodeIdentity, type NodeQuery, type NodeRow, NodeSchema, type NodeSignals, type NodeType, type NodesResult, NotFoundError, OUTPUT_FORMATS, type OperatorCycleResult, type OperatorOptions, type OrgKeyOptions, type OrgSummary, type OsKind, type OutputFormat, PACKAGE_NAME, PAGERDUTY_ENQUEUE_URL, PENDING_STATUSES, PERSONAL, PORT_MAP, PRIVATE_IP, PUSH_SCHEMA_VERSION, type PagerDutyEvent, PagerDutySink, type PagerDutySinkOptions, type ParsedApiArgs, type PendingShareRow, type PendingStatus, type PlanOptions, type PolicyResult, type PostJsonOptions, type Principal, PrincipalSchema, type ProviderFactory, type ProviderName, ProviderRegistry, type PushItem, type PushOptions, type PushResult, type QueryBackend, type QuotaConfig, type QuotaDecision, RELATION_TO_DIRECTION, ROLES, RateLimiter, type ResolveContext, type ResolveOptions, type Role, RoleSchema, type RuleCheck, RuleCheckSchema, type RuleScope, type Ruleset, RulesetSchema, type RunDriftOptions, SCAN_ARG_PATTERNS, SCHEMA_VERSION, SDL, SECURITY_METADATA_KEYS, SEVERITIES, SEVERITY_WEIGHT, SHARING_LEVELS, type ScanArgKind, type ScanContext, type ScanHintParams, type ScanResult, type Scanner, type ScannerPlugin, type ScannerPluginApi, ScannerRegistry, ScannerShape, type ScheduleConfig, ScheduleConfigSchema, type ScheduledRunResult, type Scope, type SearchFn, type SemanticSearchOptions, type ServerEntry, type SessionRow, type Severity, type SharePreview, type SharePreviewEntry, type SharingLevel, SharingLevelSchema, type SharingPolicy, type ShellKind, type SlackMessage, SlackSink, SqliteCredentialStore, SqliteQueryBackend, SqliteStoreBackend, type StartApiOptions, StdoutSink, type StoreBackend, type StoreBackendOptions, type SyncClassifyOptions, type SyncClassifyResult, TENANT_HEADER, type TenantContext, TenantMismatchError, type TenantOptions, type ToolResult, type TopologyDelta, type TopologyDiff, type TopologyInput, type TraversalResult, VectorStore, WebhookSink, type WebhookSinkOptions, applyInstall, applySharingLevel, assertReadOnly, assertSafeBind, assertSafeScanArg, assertSameTenant, assignColors, authorize, bearerToken, bookmarksScanner, buildCartographyToolHandlers, buildMapData, buildOpenApiDocument, buildReport, buildSinks, can, centralDbFromEnv, checkBearer, checkPrerequisites, checkReadOnly, clampText, classify, classifyDrift, cleanupTempFiles, cloudAwsScanner, cloudAzureScanner, cloudGcpScanner, codeAddMcpCommand, computeCentroid, computeClusterBounds, computeIdentity, connectionsScanner, contentHash, correlateTopology, createBashTool, createCartographyTools, createClaudeProvider, createDefaultRegistry, createHashEmbedder, createIngestHandler, createLocalEmbedder, createMcpServer, createOllamaProvider, createOpenAIProvider, createScanRunner, createSemanticSearch, createSqliteQueryBackend, currentOs, cursorDeeplink, dashboardHtml, databasesScanner, deepMerge, defaultAllowedHosts, defaultConfig, defaultContext, defaultProviderRegistry, defaultRegistry, defaultServerEntry, definePlugin, deriveSessionName, detectAnomalies, detectOrphans, detectShadowIt, diffTopology, edgesToConnections, enrichCosts, entitiesToYaml, evaluateCheck, evaluateRule, evidenceLine, executeGraphql, executeNlQuery, exportAll, exportBackstageYAML, exportComplianceReport, exportCostCSV, exportCostSummary, exportDiscoveryApp, exportJGF, exportJSON, extractListeningPorts, extractSignals, filterBySeverity, findAnonViolations, formatComplianceText, formatJira, formatPagerDuty, formatSlack, generateDependencyMermaid, generateDiffMermaid, generateTopologyMermaid, getClient, getRuleset, globalId, groupByDomain, handleGraphqlGet, hashToken, hexCorners, hexDistance, hexNeighbors, hexRing, hexSpiral, hexToPixel, hmacKey, hostname, ingestEnvelope, installedAppsScanner, isInCluster, isLoopbackHost, isPersonalHost, isReadOnlyCommand, isRemembered, isSecureWebhookUrl, k8sRegistry, k8sScanner, keyMetaOf, layoutClusters, listClients, listRulesets, loadConfig, loadOrgKey, loadPlugins, loadRuleset, localDiscoveryFn, log, logDebug, logError, logInfo, logWarn, machineId, maxSeverity, mcpServerObject, newAnomalies, nextRun, nodesToAssets, normalizeId, normalizeTenant, openStoreBackend, orgKeyPath, osUser, parseApiArgs, parseComposeDeps, parseConfig, parseConnectionString, parseCostCsv, parseCron, parseEstablished, parseNginxUpstreams, parseNlQuery, parseScanHint, parseTerraformState, pixelToHex, planInstall, portsScanner, postJson, previewShare, pseudonymize, pseudonymizeFragment, pseudonymizeId, pseudonymizeString, pushDeltas, readConfigFile, redactConnectionString, redactSecrets, redactValue, renderDiff, resolveEffectiveLevel, resolveNlQuery, resolvePrincipal, resolveSharingLevel, resolveTenant, revalidateAnonymized, reversalKey, reversePseudonym, rotateOrgKey, runApi, runDiscovery, runDrift, runHttp, runLocalDiscovery, runOnce, runOperator, runOperatorCycle, runStdio, runSyncClassify, safeEnv, safeJson, safetyHook, sanitizeUntrusted, sanitizeValue, scopeReads, scoreTopology, securityRelevantChange, serializeConfig, serviceConfigScanner, setVerbose, shadeVariant, shapeToJsonSchema, shareHash, splitSegments, stableStringify, startApi, stripSensitive, terraformScanner, terraformTypeToNode, timingSafeEqual, toBackstageEntities, validateScanner, vscodeDeeplink, zodToJsonSchema };