import type { AgentSkillMigrationSuggestion } from "../skill-migration.js"; import type { ArtifactKind } from "../types/artifact.js"; import type { KnownAssetClassificationEvidence } from "../types/known-classification.js"; import type { AssetDecisionEvidence, DecisionStatus, SuggestedNextAction } from "../types/decision.js"; export interface BlockedMetadata { field: string; reason: string; } /** Public suggestion DTO consumed by both JSON and human renderers. */ export interface MetadataSuggestion { path: string; kind: ArtifactKind; suggestedMode: "metadata-retrofit" | "agent-skills-migration" | "agent-skills-metadata-retrofit" | "no-proposal"; decisionStatus: DecisionStatus; decision: AssetDecisionEvidence; classification: KnownAssetClassificationEvidence; ownerProvided: boolean; instructions: string[]; candidateMetadata: Record; blockedMetadata: BlockedMetadata[]; nextActions: SuggestedNextAction[]; agentSkills?: AgentSkillMigrationSuggestion; } export interface SuggestionDecision { status: DecisionStatus; decision: AssetDecisionEvidence; } export interface OwnerConflictEvidence { hasConflict: boolean; blockedMetadata: BlockedMetadata[]; } export interface SkillLocalSuggestionDecisionInput { hasOwnerConflict: boolean; hasOverride: boolean; hasLocalGovernance: boolean; inheritsGovernance: boolean; } export interface UnsupportedTargetSuggestionDecisionInput { matchedRule: "repository-tool" | "unknown"; boundaryReasonCode?: "repository-boundary-unresolved" | "repository-boundary-ambiguous"; } export interface MetadataCandidateSuggestionDecisionInput { hasOwnerConflict: boolean; hasCandidate: boolean; scope: KnownAssetClassificationEvidence["scope"]; } /** * Decide Skill migration applicability before rendering any candidate text. * * Blocked migrations intentionally retain partial diagnostic candidate fields * for established JSON compatibility. `canonicalFrontmatter` and renderer patch * instructions remain gated by the decision status, so those fields are not * an independently applicable patch. */ export declare function buildSkillSuggestionDecision(migration: AgentSkillMigrationSuggestion): SuggestionDecision; export declare function buildSkillLocalParentUnresolvedDecision(): SuggestionDecision; export declare function buildSkillLocalSuggestionDecision(input: SkillLocalSuggestionDecisionInput): SuggestionDecision; export declare function buildUnsupportedTargetSuggestionDecision(input: UnsupportedTargetSuggestionDecisionInput): SuggestionDecision; export declare function buildMetadataCandidateSuggestionDecision(input: MetadataCandidateSuggestionDecisionInput): SuggestionDecision; /** Build typed conflict evidence; command branching must not parse prose. */ export declare function evaluateOwnerConflict(existingOwner: string | undefined, explicitOwner: string | undefined): OwnerConflictEvidence;