@datasynx/agentic-ai-cartography 2.5.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -982,6 +982,12 @@ interface NodeAttribution {
982
982
 
983
983
  /** Default tenant for single-user / pre-migration installs. */
984
984
  declare const DEFAULT_TENANT = "local";
985
+ /**
986
+ * The current catalog schema version. A fresh DB initializes here and the migration
987
+ * chain advances to it; the collector readiness probe (4.7) asserts a reopened DB
988
+ * reports exactly this. Keep in lockstep with the final `user_version` set in `migrate()`.
989
+ */
990
+ declare const SCHEMA_VERSION = 15;
985
991
  /**
986
992
  * Normalize an untrusted tenant id: strip invisible/control characters, trim,
987
993
  * cap length, and enforce a conservative key charset. Falls back to DEFAULT_TENANT
@@ -1352,6 +1358,12 @@ declare class CartographyDB {
1352
1358
  * Prune sessions older than the given ISO date string. Returns count of deleted sessions.
1353
1359
  */
1354
1360
  pruneSessions(olderThan: string): number;
1361
+ /**
1362
+ * Retention/compaction (4.7): delete audit events older than `olderThan` (ISO 8601).
1363
+ * The audit trail grows unbounded on a busy collector; this bounds it without touching
1364
+ * sessions/nodes/edges. Returns the number of events removed.
1365
+ */
1366
+ pruneEventsOlderThan(olderThan: string): number;
1355
1367
  /** Fetch a single node by id within a session. */
1356
1368
  getNode(sessionId: string, nodeId: string): NodeRow | undefined;
1357
1369
  /** Batch-fetch nodes by id, keyed for O(1) lookup. Chunked to stay under SQLite's bind-variable limit. */
@@ -1558,6 +1570,8 @@ interface QueryBackend {
1558
1570
  nodes(ctx: TenantContext, q: NodeQuery, sessionId?: string): NodesResult;
1559
1571
  /** One node by id (or `undefined` if absent). Throws {@link NotFoundError} if no session resolves. */
1560
1572
  node(ctx: TenantContext, id: string, sessionId?: string): NodeRow | undefined;
1573
+ /** All edges of the resolved session (for full-topology consumers, e.g. the Backstage catalog). Throws {@link NotFoundError} if no session resolves. */
1574
+ edges(ctx: TenantContext, sessionId?: string): EdgeRow[];
1561
1575
  /** Dependency traversal from a node. Throws {@link NotFoundError} if no session resolves. */
1562
1576
  dependencies(ctx: TenantContext, id: string, q: DependencyQuery, sessionId?: string): TraversalResult;
1563
1577
  /** Compare two sessions (both must belong to the tenant). Throws {@link NotFoundError} on an unknown/foreign id. */
@@ -1585,6 +1599,7 @@ declare class SqliteQueryBackend implements QueryBackend {
1585
1599
  summary(ctx: TenantContext, sessionId?: string): GraphSummary;
1586
1600
  nodes(ctx: TenantContext, q: NodeQuery, sessionId?: string): NodesResult;
1587
1601
  node(ctx: TenantContext, id: string, sessionId?: string): NodeRow | undefined;
1602
+ edges(ctx: TenantContext, sessionId?: string): EdgeRow[];
1588
1603
  dependencies(ctx: TenantContext, id: string, q: DependencyQuery, sessionId?: string): TraversalResult;
1589
1604
  diff(ctx: TenantContext, base: string, current: string): TopologyDiff;
1590
1605
  sessions(ctx: TenantContext): SessionRow[];
@@ -1757,6 +1772,37 @@ interface IngestOptions {
1757
1772
  */
1758
1773
  declare function ingestEnvelope(store: StoreBackend, envelope: IngestEnvelope, opts?: IngestOptions): IngestResult;
1759
1774
 
1775
+ /**
1776
+ * Ingest backpressure for the central collector (4.7).
1777
+ *
1778
+ * A pure, in-memory **per-org token-bucket** rate limiter. The networked `POST /ingest`
1779
+ * write endpoint must protect the shared store from a runaway or hostile client; over-quota
1780
+ * requests are refused with `429 + Retry-After` rather than admitted. Deterministic given an
1781
+ * injected clock, so it is unit-testable without real time. In-process only (a multi-replica
1782
+ * deployment would front it with a shared limiter; documented in the runbook).
1783
+ */
1784
+ interface QuotaConfig {
1785
+ /** Bucket capacity = max burst, and the number of tokens refilled over one `refillMs` window. */
1786
+ capacity: number;
1787
+ /** Milliseconds over which a fully-drained bucket refills to `capacity`. */
1788
+ refillMs: number;
1789
+ }
1790
+ /** Sensible default: 120 ingests / minute / org (burst 120). */
1791
+ declare const DEFAULT_INGEST_QUOTA: QuotaConfig;
1792
+ interface QuotaDecision {
1793
+ allowed: boolean;
1794
+ /** Seconds to wait before retrying — populated only when `!allowed` (≥1). */
1795
+ retryAfterSec: number;
1796
+ }
1797
+ declare class RateLimiter {
1798
+ private readonly cfg;
1799
+ private readonly now;
1800
+ private readonly buckets;
1801
+ constructor(cfg?: QuotaConfig, now?: () => number);
1802
+ /** Consume one token for `key`. Returns whether the request is allowed (+ Retry-After when not). */
1803
+ take(key: string): QuotaDecision;
1804
+ }
1805
+
1760
1806
  /**
1761
1807
  * The central-collector ingest HTTP surface (2.12).
1762
1808
  *
@@ -1772,12 +1818,18 @@ declare function ingestEnvelope(store: StoreBackend, envelope: IngestEnvelope, o
1772
1818
  * handler ever runs, so the handler never sees (and never logs) the token.
1773
1819
  */
1774
1820
 
1775
- /** A transport-agnostic HTTP-ish response: a status code and a JSON-serializable body. */
1821
+ /** A transport-agnostic HTTP-ish response: a status code, a JSON-serializable body, optional headers. */
1776
1822
  interface IngestResponse {
1777
1823
  status: number;
1778
1824
  body: unknown;
1825
+ /** Extra response headers (e.g. `Retry-After` on a 429). */
1826
+ headers?: Record<string, string>;
1779
1827
  }
1780
1828
  type IngestHandler = (body: unknown) => IngestResponse;
1829
+ interface IngestHandlerOptions extends IngestOptions {
1830
+ /** Per-org ingest rate limiter (4.7 backpressure). Over-quota → 429 + Retry-After. */
1831
+ quota?: RateLimiter;
1832
+ }
1781
1833
  /**
1782
1834
  * Build the `/ingest` handler over a {@link StoreBackend}. The handler validates the
1783
1835
  * 2.11 push envelope, runs ingest (re-validating anonymization first), and maps the
@@ -1786,7 +1838,7 @@ type IngestHandler = (body: unknown) => IngestResponse;
1786
1838
  * - 500 — ingest threw (the store's per-node transaction rolls that node back).
1787
1839
  * - 200 — {@link IngestResult}.
1788
1840
  */
1789
- declare function createIngestHandler(store: StoreBackend, opts?: IngestOptions): IngestHandler;
1841
+ declare function createIngestHandler(store: StoreBackend, opts?: IngestHandlerOptions): IngestHandler;
1790
1842
 
1791
1843
  /**
1792
1844
  * Org-key lifecycle for the 2.10 anonymization layer.
@@ -2180,6 +2232,7 @@ interface HttpOptions {
2180
2232
  onIngest?: (body: unknown) => {
2181
2233
  status: number;
2182
2234
  body: unknown;
2235
+ headers?: Record<string, string>;
2183
2236
  };
2184
2237
  /**
2185
2238
  * RBAC (4.5). When `store` holds credentials, the transport runs in RBAC mode: a
@@ -2194,6 +2247,14 @@ interface HttpOptions {
2194
2247
  };
2195
2248
  /** Tenant assigned to implicit (shared/loopback) admin principals. */
2196
2249
  defaultTenant?: string;
2250
+ /**
2251
+ * Readiness probe (4.7). When set, `GET /readyz` calls it: 200 when `ready`, else 503.
2252
+ * `GET /healthz` (liveness) is always 200. Both are PUBLIC (no auth) for k8s/LB probes.
2253
+ */
2254
+ readiness?: () => {
2255
+ ready: boolean;
2256
+ detail?: Record<string, unknown>;
2257
+ };
2197
2258
  }
2198
2259
  /**
2199
2260
  * Start a Streamable HTTP server. A fresh MCP server instance is created per
@@ -3970,6 +4031,42 @@ declare function sanitizeUntrusted(text: string): string;
3970
4031
  /** Recursively apply `sanitizeUntrusted` to every string in an arbitrary value. */
3971
4032
  declare function sanitizeValue(value: unknown): unknown;
3972
4033
 
4034
+ /**
4035
+ * Backstage catalog entity mapping (4.6).
4036
+ *
4037
+ * A dependency-free, transport-agnostic mapper: `toBackstageEntities` turns the
4038
+ * discovered topology into plain typed Backstage entity objects, and `entitiesToYaml`
4039
+ * serializes them to the multi-doc `catalog-info.yaml` format. It NEVER imports
4040
+ * `@backstage/*` — Backstage stays an optional adapter, never a core dependency
4041
+ * (ROADMAP locked constraints). The legacy `exportBackstageYAML` is re-expressed over
4042
+ * this mapper and stays byte-identical (snapshot-guarded). The same typed entities are
4043
+ * served live over the API (`GET /v1/backstage/catalog`) so a Backstage instance can
4044
+ * consume the topology as a continuously-refreshed data source.
4045
+ */
4046
+
4047
+ interface BackstageEntity {
4048
+ apiVersion: 'backstage.io/v1alpha1';
4049
+ kind: 'Component' | 'API' | 'Resource';
4050
+ metadata: {
4051
+ name: string;
4052
+ annotations: Record<string, string>;
4053
+ };
4054
+ spec: {
4055
+ type: string;
4056
+ lifecycle: string;
4057
+ owner: string;
4058
+ dependsOn?: string[];
4059
+ };
4060
+ }
4061
+ interface BackstageMapOptions {
4062
+ /** Default owner when a node carries none (the org/tenant). */
4063
+ org?: string;
4064
+ }
4065
+ /** Map discovered nodes/edges to typed Backstage catalog entities. Pure, deterministic. */
4066
+ declare function toBackstageEntities(nodes: NodeRow[], edges: EdgeRow[], opts?: BackstageMapOptions): BackstageEntity[];
4067
+ /** Serialize entities to the multi-doc `catalog-info.yaml` string (byte-identical to the legacy exporter). */
4068
+ declare function entitiesToYaml(entities: BackstageEntity[]): string;
4069
+
3973
4070
  /**
3974
4071
  * Hex Grid Engine — flat-top axial coordinate system.
3975
4072
  * Reference: https://www.redblobgames.com/grids/hexagons/
@@ -4089,4 +4186,4 @@ declare function logInfo(message: string, context?: Record<string, unknown>): vo
4089
4186
  declare function logWarn(message: string, context?: Record<string, unknown>): void;
4090
4187
  declare function logError(message: string, context?: Record<string, unknown>): void;
4091
4188
 
4092
- 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 BindGuardOptions, CLIENTS, CONFIDENCE, COST_PERIODS, 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 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_LEAD_MODEL, DEFAULT_SERVER_NAME, DEFAULT_TENANT, DOMAIN_COLORS, DOMAIN_PALETTE, DRIFT_FIELDS, 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, type GraphSummary, type HealthResult, type HttpOptions, INGEST_SCHEMA_VERSION, type IngestEnvelope, IngestEnvelopeSchema, type IngestHandler, 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 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, RELATION_TO_DIRECTION, ROLES, type ResolveContext, type ResolveOptions, type Role, RoleSchema, type RuleCheck, RuleCheckSchema, type RuleScope, type Ruleset, RulesetSchema, type RunDriftOptions, SCAN_ARG_PATTERNS, 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 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, createBashTool, createCartographyTools, createClaudeProvider, createDefaultRegistry, createHashEmbedder, createIngestHandler, createLocalEmbedder, createMcpServer, createOllamaProvider, createOpenAIProvider, createScanRunner, createSemanticSearch, createSqliteQueryBackend, currentOs, cursorDeeplink, databasesScanner, deepMerge, defaultAllowedHosts, defaultConfig, defaultContext, defaultProviderRegistry, defaultRegistry, defaultServerEntry, definePlugin, deriveSessionName, detectAnomalies, detectOrphans, detectShadowIt, diffTopology, edgesToConnections, enrichCosts, evaluateCheck, evaluateRule, evidenceLine, executeGraphql, executeNlQuery, exportAll, exportBackstageYAML, exportComplianceReport, exportCostCSV, exportCostSummary, exportDiscoveryApp, exportJGF, exportJSON, extractListeningPorts, 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, 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, validateScanner, vscodeDeeplink, zodToJsonSchema };
4189
+ 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 BackstageEntity, type BackstageMapOptions, type BindGuardOptions, CLIENTS, CONFIDENCE, COST_PERIODS, 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 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 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, 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 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 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, createBashTool, createCartographyTools, createClaudeProvider, createDefaultRegistry, createHashEmbedder, createIngestHandler, createLocalEmbedder, createMcpServer, createOllamaProvider, createOpenAIProvider, createScanRunner, createSemanticSearch, createSqliteQueryBackend, currentOs, cursorDeeplink, 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, 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, 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 };
package/dist/index.d.ts CHANGED
@@ -982,6 +982,12 @@ interface NodeAttribution {
982
982
 
983
983
  /** Default tenant for single-user / pre-migration installs. */
984
984
  declare const DEFAULT_TENANT = "local";
985
+ /**
986
+ * The current catalog schema version. A fresh DB initializes here and the migration
987
+ * chain advances to it; the collector readiness probe (4.7) asserts a reopened DB
988
+ * reports exactly this. Keep in lockstep with the final `user_version` set in `migrate()`.
989
+ */
990
+ declare const SCHEMA_VERSION = 15;
985
991
  /**
986
992
  * Normalize an untrusted tenant id: strip invisible/control characters, trim,
987
993
  * cap length, and enforce a conservative key charset. Falls back to DEFAULT_TENANT
@@ -1352,6 +1358,12 @@ declare class CartographyDB {
1352
1358
  * Prune sessions older than the given ISO date string. Returns count of deleted sessions.
1353
1359
  */
1354
1360
  pruneSessions(olderThan: string): number;
1361
+ /**
1362
+ * Retention/compaction (4.7): delete audit events older than `olderThan` (ISO 8601).
1363
+ * The audit trail grows unbounded on a busy collector; this bounds it without touching
1364
+ * sessions/nodes/edges. Returns the number of events removed.
1365
+ */
1366
+ pruneEventsOlderThan(olderThan: string): number;
1355
1367
  /** Fetch a single node by id within a session. */
1356
1368
  getNode(sessionId: string, nodeId: string): NodeRow | undefined;
1357
1369
  /** Batch-fetch nodes by id, keyed for O(1) lookup. Chunked to stay under SQLite's bind-variable limit. */
@@ -1558,6 +1570,8 @@ interface QueryBackend {
1558
1570
  nodes(ctx: TenantContext, q: NodeQuery, sessionId?: string): NodesResult;
1559
1571
  /** One node by id (or `undefined` if absent). Throws {@link NotFoundError} if no session resolves. */
1560
1572
  node(ctx: TenantContext, id: string, sessionId?: string): NodeRow | undefined;
1573
+ /** All edges of the resolved session (for full-topology consumers, e.g. the Backstage catalog). Throws {@link NotFoundError} if no session resolves. */
1574
+ edges(ctx: TenantContext, sessionId?: string): EdgeRow[];
1561
1575
  /** Dependency traversal from a node. Throws {@link NotFoundError} if no session resolves. */
1562
1576
  dependencies(ctx: TenantContext, id: string, q: DependencyQuery, sessionId?: string): TraversalResult;
1563
1577
  /** Compare two sessions (both must belong to the tenant). Throws {@link NotFoundError} on an unknown/foreign id. */
@@ -1585,6 +1599,7 @@ declare class SqliteQueryBackend implements QueryBackend {
1585
1599
  summary(ctx: TenantContext, sessionId?: string): GraphSummary;
1586
1600
  nodes(ctx: TenantContext, q: NodeQuery, sessionId?: string): NodesResult;
1587
1601
  node(ctx: TenantContext, id: string, sessionId?: string): NodeRow | undefined;
1602
+ edges(ctx: TenantContext, sessionId?: string): EdgeRow[];
1588
1603
  dependencies(ctx: TenantContext, id: string, q: DependencyQuery, sessionId?: string): TraversalResult;
1589
1604
  diff(ctx: TenantContext, base: string, current: string): TopologyDiff;
1590
1605
  sessions(ctx: TenantContext): SessionRow[];
@@ -1757,6 +1772,37 @@ interface IngestOptions {
1757
1772
  */
1758
1773
  declare function ingestEnvelope(store: StoreBackend, envelope: IngestEnvelope, opts?: IngestOptions): IngestResult;
1759
1774
 
1775
+ /**
1776
+ * Ingest backpressure for the central collector (4.7).
1777
+ *
1778
+ * A pure, in-memory **per-org token-bucket** rate limiter. The networked `POST /ingest`
1779
+ * write endpoint must protect the shared store from a runaway or hostile client; over-quota
1780
+ * requests are refused with `429 + Retry-After` rather than admitted. Deterministic given an
1781
+ * injected clock, so it is unit-testable without real time. In-process only (a multi-replica
1782
+ * deployment would front it with a shared limiter; documented in the runbook).
1783
+ */
1784
+ interface QuotaConfig {
1785
+ /** Bucket capacity = max burst, and the number of tokens refilled over one `refillMs` window. */
1786
+ capacity: number;
1787
+ /** Milliseconds over which a fully-drained bucket refills to `capacity`. */
1788
+ refillMs: number;
1789
+ }
1790
+ /** Sensible default: 120 ingests / minute / org (burst 120). */
1791
+ declare const DEFAULT_INGEST_QUOTA: QuotaConfig;
1792
+ interface QuotaDecision {
1793
+ allowed: boolean;
1794
+ /** Seconds to wait before retrying — populated only when `!allowed` (≥1). */
1795
+ retryAfterSec: number;
1796
+ }
1797
+ declare class RateLimiter {
1798
+ private readonly cfg;
1799
+ private readonly now;
1800
+ private readonly buckets;
1801
+ constructor(cfg?: QuotaConfig, now?: () => number);
1802
+ /** Consume one token for `key`. Returns whether the request is allowed (+ Retry-After when not). */
1803
+ take(key: string): QuotaDecision;
1804
+ }
1805
+
1760
1806
  /**
1761
1807
  * The central-collector ingest HTTP surface (2.12).
1762
1808
  *
@@ -1772,12 +1818,18 @@ declare function ingestEnvelope(store: StoreBackend, envelope: IngestEnvelope, o
1772
1818
  * handler ever runs, so the handler never sees (and never logs) the token.
1773
1819
  */
1774
1820
 
1775
- /** A transport-agnostic HTTP-ish response: a status code and a JSON-serializable body. */
1821
+ /** A transport-agnostic HTTP-ish response: a status code, a JSON-serializable body, optional headers. */
1776
1822
  interface IngestResponse {
1777
1823
  status: number;
1778
1824
  body: unknown;
1825
+ /** Extra response headers (e.g. `Retry-After` on a 429). */
1826
+ headers?: Record<string, string>;
1779
1827
  }
1780
1828
  type IngestHandler = (body: unknown) => IngestResponse;
1829
+ interface IngestHandlerOptions extends IngestOptions {
1830
+ /** Per-org ingest rate limiter (4.7 backpressure). Over-quota → 429 + Retry-After. */
1831
+ quota?: RateLimiter;
1832
+ }
1781
1833
  /**
1782
1834
  * Build the `/ingest` handler over a {@link StoreBackend}. The handler validates the
1783
1835
  * 2.11 push envelope, runs ingest (re-validating anonymization first), and maps the
@@ -1786,7 +1838,7 @@ type IngestHandler = (body: unknown) => IngestResponse;
1786
1838
  * - 500 — ingest threw (the store's per-node transaction rolls that node back).
1787
1839
  * - 200 — {@link IngestResult}.
1788
1840
  */
1789
- declare function createIngestHandler(store: StoreBackend, opts?: IngestOptions): IngestHandler;
1841
+ declare function createIngestHandler(store: StoreBackend, opts?: IngestHandlerOptions): IngestHandler;
1790
1842
 
1791
1843
  /**
1792
1844
  * Org-key lifecycle for the 2.10 anonymization layer.
@@ -2180,6 +2232,7 @@ interface HttpOptions {
2180
2232
  onIngest?: (body: unknown) => {
2181
2233
  status: number;
2182
2234
  body: unknown;
2235
+ headers?: Record<string, string>;
2183
2236
  };
2184
2237
  /**
2185
2238
  * RBAC (4.5). When `store` holds credentials, the transport runs in RBAC mode: a
@@ -2194,6 +2247,14 @@ interface HttpOptions {
2194
2247
  };
2195
2248
  /** Tenant assigned to implicit (shared/loopback) admin principals. */
2196
2249
  defaultTenant?: string;
2250
+ /**
2251
+ * Readiness probe (4.7). When set, `GET /readyz` calls it: 200 when `ready`, else 503.
2252
+ * `GET /healthz` (liveness) is always 200. Both are PUBLIC (no auth) for k8s/LB probes.
2253
+ */
2254
+ readiness?: () => {
2255
+ ready: boolean;
2256
+ detail?: Record<string, unknown>;
2257
+ };
2197
2258
  }
2198
2259
  /**
2199
2260
  * Start a Streamable HTTP server. A fresh MCP server instance is created per
@@ -3970,6 +4031,42 @@ declare function sanitizeUntrusted(text: string): string;
3970
4031
  /** Recursively apply `sanitizeUntrusted` to every string in an arbitrary value. */
3971
4032
  declare function sanitizeValue(value: unknown): unknown;
3972
4033
 
4034
+ /**
4035
+ * Backstage catalog entity mapping (4.6).
4036
+ *
4037
+ * A dependency-free, transport-agnostic mapper: `toBackstageEntities` turns the
4038
+ * discovered topology into plain typed Backstage entity objects, and `entitiesToYaml`
4039
+ * serializes them to the multi-doc `catalog-info.yaml` format. It NEVER imports
4040
+ * `@backstage/*` — Backstage stays an optional adapter, never a core dependency
4041
+ * (ROADMAP locked constraints). The legacy `exportBackstageYAML` is re-expressed over
4042
+ * this mapper and stays byte-identical (snapshot-guarded). The same typed entities are
4043
+ * served live over the API (`GET /v1/backstage/catalog`) so a Backstage instance can
4044
+ * consume the topology as a continuously-refreshed data source.
4045
+ */
4046
+
4047
+ interface BackstageEntity {
4048
+ apiVersion: 'backstage.io/v1alpha1';
4049
+ kind: 'Component' | 'API' | 'Resource';
4050
+ metadata: {
4051
+ name: string;
4052
+ annotations: Record<string, string>;
4053
+ };
4054
+ spec: {
4055
+ type: string;
4056
+ lifecycle: string;
4057
+ owner: string;
4058
+ dependsOn?: string[];
4059
+ };
4060
+ }
4061
+ interface BackstageMapOptions {
4062
+ /** Default owner when a node carries none (the org/tenant). */
4063
+ org?: string;
4064
+ }
4065
+ /** Map discovered nodes/edges to typed Backstage catalog entities. Pure, deterministic. */
4066
+ declare function toBackstageEntities(nodes: NodeRow[], edges: EdgeRow[], opts?: BackstageMapOptions): BackstageEntity[];
4067
+ /** Serialize entities to the multi-doc `catalog-info.yaml` string (byte-identical to the legacy exporter). */
4068
+ declare function entitiesToYaml(entities: BackstageEntity[]): string;
4069
+
3973
4070
  /**
3974
4071
  * Hex Grid Engine — flat-top axial coordinate system.
3975
4072
  * Reference: https://www.redblobgames.com/grids/hexagons/
@@ -4089,4 +4186,4 @@ declare function logInfo(message: string, context?: Record<string, unknown>): vo
4089
4186
  declare function logWarn(message: string, context?: Record<string, unknown>): void;
4090
4187
  declare function logError(message: string, context?: Record<string, unknown>): void;
4091
4188
 
4092
- 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 BindGuardOptions, CLIENTS, CONFIDENCE, COST_PERIODS, 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 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_LEAD_MODEL, DEFAULT_SERVER_NAME, DEFAULT_TENANT, DOMAIN_COLORS, DOMAIN_PALETTE, DRIFT_FIELDS, 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, type GraphSummary, type HealthResult, type HttpOptions, INGEST_SCHEMA_VERSION, type IngestEnvelope, IngestEnvelopeSchema, type IngestHandler, 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 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, RELATION_TO_DIRECTION, ROLES, type ResolveContext, type ResolveOptions, type Role, RoleSchema, type RuleCheck, RuleCheckSchema, type RuleScope, type Ruleset, RulesetSchema, type RunDriftOptions, SCAN_ARG_PATTERNS, 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 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, createBashTool, createCartographyTools, createClaudeProvider, createDefaultRegistry, createHashEmbedder, createIngestHandler, createLocalEmbedder, createMcpServer, createOllamaProvider, createOpenAIProvider, createScanRunner, createSemanticSearch, createSqliteQueryBackend, currentOs, cursorDeeplink, databasesScanner, deepMerge, defaultAllowedHosts, defaultConfig, defaultContext, defaultProviderRegistry, defaultRegistry, defaultServerEntry, definePlugin, deriveSessionName, detectAnomalies, detectOrphans, detectShadowIt, diffTopology, edgesToConnections, enrichCosts, evaluateCheck, evaluateRule, evidenceLine, executeGraphql, executeNlQuery, exportAll, exportBackstageYAML, exportComplianceReport, exportCostCSV, exportCostSummary, exportDiscoveryApp, exportJGF, exportJSON, extractListeningPorts, 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, 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, validateScanner, vscodeDeeplink, zodToJsonSchema };
4189
+ 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 BackstageEntity, type BackstageMapOptions, type BindGuardOptions, CLIENTS, CONFIDENCE, COST_PERIODS, 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 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 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, 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 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 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, createBashTool, createCartographyTools, createClaudeProvider, createDefaultRegistry, createHashEmbedder, createIngestHandler, createLocalEmbedder, createMcpServer, createOllamaProvider, createOpenAIProvider, createScanRunner, createSemanticSearch, createSqliteQueryBackend, currentOs, cursorDeeplink, 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, 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, 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 };