import type { Artifact, ArtifactKind } from "./types/artifact.js"; import type { Evidence } from "./types/diagnostics.js"; import type { ParsedDocument } from "./types/metadata.js"; import type { SecurityConfig } from "./types/configuration.js"; type InventoryArtifactKind = ArtifactKind; export interface PolicyBooleanCounts { true: number; false: number; unspecified: number; } export interface ExternalUploadGovernanceCounts { denied: number; allowedApprovalRequired: number; allowedNoApprovalRequired: number; allowedApprovalUnspecified: number; unspecified: number; } export interface SecurityPolicyInventorySummary { totalPolicyAssets: number; assetsWithLocalPolicyMetadata: number; assetsWithInheritedPolicy: number; assetsWithEffectivePolicy: number; assetsWithoutEffectivePolicy: number; policySources: Record; assetKinds: Record; networkAllowed: PolicyBooleanCounts; externalUploadAllowed: PolicyBooleanCounts; externalUploadGovernance: ExternalUploadGovernanceCounts; secretsAllowed: PolicyBooleanCounts; humanApprovalRequired: PolicyBooleanCounts; approvedNetworkDestinationCount: number; approvedUploadDestinationCount: number; forbiddenInputCount: number; disallowedCommandCount: number; securityProfiles: { referenced: number; resolved: number; missing: number; cyclic: number; none: number; names: Array<{ name: string; count: number; }>; }; topApprovedNetworkDestinations: Array<{ destination: string; count: number; }>; topApprovedUploadDestinations: Array<{ destination: string; count: number; }>; topForbiddenInputs: Array<{ input: string; count: number; }>; assetsWithoutEffectivePolicyList: Array<{ path: string; kind: ArtifactKind; }>; } export interface EffectiveSecurityPolicyEvidence { fingerprint: string; allowedData: string[]; forbiddenInputs: string[]; networkAllowed: boolean | null; externalUploadAllowed: boolean | null; secretsAllowed: boolean | null; humanApprovalRequired: boolean | null; approvedNetworkDestinations: string[]; approvedUploadDestinations: string[]; disallowedCommands: string[]; } /** Normalized asset-local declarations retained for deterministic diff provenance. */ export interface DeclaredSecurityPolicyEvidence { fields: string[]; invalidDeclared: string[]; allowedData: string[]; forbiddenInputs: string[]; networkAllowed: boolean | null; externalUploadAllowed: boolean | null; secretsAllowed: boolean | null; humanApprovalRequired: boolean | null; approvedNetworkDestinations: string[]; approvedUploadDestinations: string[]; disallowedCommands: string[]; } type SecurityProfileResolution = "none" | "resolved" | "missing" | "cyclic"; export interface SecurityPolicyAssetEvidence { path: string; kind: ArtifactKind; hasLocalPolicyMetadata: boolean; hasEffectivePolicy: boolean; policySources: SecurityPolicySource[]; inheritedFrom?: { id: string; sourcePath: string; }; selectedSecurityProfile?: string; profileResolution: SecurityProfileResolution; profileChain: string[]; /** Present on collected evidence; optional for compatibility-built evidence. */ declaredPolicy?: DeclaredSecurityPolicyEvidence; effectivePolicy: EffectiveSecurityPolicyEvidence; evidence: { selectedSecurityProfile?: Evidence; policyFields: Evidence[]; }; } export type SecurityPolicySource = "local" | "security_profile" | "repository_config" | "owning_skill"; export declare function summarizeSecurityPolicyInventory(inputs: Array, config?: SecurityConfig): SecurityPolicyInventorySummary; export declare function summarizeSecurityPolicyAssetEvidence(evidence: readonly SecurityPolicyAssetEvidence[]): SecurityPolicyInventorySummary; export declare function collectSecurityPolicyAssetEvidence(inputs: Array, config?: SecurityConfig): SecurityPolicyAssetEvidence[]; export declare function zeroSecurityPolicyInventorySummary(): SecurityPolicyInventorySummary; export {};