import type { CodaliStorageExportKind, CodaliStorageObjectPrivacyFlags } from "../storage/CodaliStorageContracts.js"; import type { DatasetEligibilityGateAcceptedExample } from "./DatasetEligibilityGate.js"; import type { DatasetExportManifestReaderResult } from "./DatasetExportManifestReader.js"; export declare const CODALI_MODEL_ROUTER_CANDIDATE_SCHEMA_VERSION: "codali.improvement.model_router_candidate.v1"; export declare const CODALI_MODEL_ROUTER_PROPOSAL_ARTIFACT: "model-router"; export declare const CODALI_MODEL_ROUTER_SOURCE_ARTIFACT_TYPES: readonly ["model_router", "model-router", "router", "tool_router", "tool-router"]; export declare const CODALI_MODEL_ROUTER_SUPPORTED_EXPORT_KINDS: readonly ["model-router"]; export type CodaliModelRouterProposalArtifact = typeof CODALI_MODEL_ROUTER_PROPOSAL_ARTIFACT; export type CodaliModelRouterCandidateKind = "model_router"; export type CodaliModelRouterPlanAction = "propose_shadow_route" | "no_change"; export interface CodaliModelRouterObjectRefSummary { refId: string; kind: string; contentHash: string; byteSize: number; mimeType: string; deletionGroupId: string; privacyFlags: CodaliStorageObjectPrivacyFlags; uri?: string; mediaType?: string; metadataKeys: string[]; } export interface CodaliModelRouterSourceExample { recordId: string; sourceGatewayRecordId?: string; artifactTypes: string[]; preferenceSignals: DatasetEligibilityGateAcceptedExample["preferenceSignals"]; priorityScore: number; comparisonRecordCount: number; shadowRecordCount: number; objectRefs: { inputRef?: CodaliModelRouterObjectRefSummary; outputRef?: CodaliModelRouterObjectRefSummary; evidenceRefs: CodaliModelRouterObjectRefSummary[]; }; metadataShape: { keys: string[]; comparisonKeys: string[]; }; } export interface CodaliModelRouterCandidateIdentity { identityKey: string; comparisonRole: "primary" | "shadow" | "mixed"; agentSlug?: string; tier?: string; model?: string; adapter?: string; source?: string; healthStatus?: string; capabilities: string[]; } export interface CodaliModelRouterInferenceMetricSummary { averageInputTokens?: number; averageOutputTokens?: number; averageTotalTokens?: number; averageQueueWaitMs?: number; averageQueueDepth?: number; averageThroughputTokensPerSecond?: number; averageRequestsPerMinute?: number; localInferenceSampleCount: number; } export interface CodaliModelRouterMetricScorecard { quality: number; toolAccuracy: number; schemaSuccess: number; latency: number; cost: number; availability: number; confidence: number; fallbackReliability: number; finalScore: number; sampleCount: number; shadowSampleCount: number; selectedByPolicyCount: number; averageLatencyMs?: number; averageCostUsd?: number; inference: CodaliModelRouterInferenceMetricSummary; failureRate: number; fallbackRate: number; } export interface CodaliModelRouterRouteCandidate { routeId: string; role: string; resolverRole: string; action: "propose_shadow_route" | "preserve_current" | "no_change"; status: "proposed" | "blocked" | "no_change"; current?: CodaliModelRouterCandidateIdentity; proposed?: CodaliModelRouterCandidateIdentity; scoreDelta?: number; primaryScorecard?: CodaliModelRouterMetricScorecard; proposedScorecard?: CodaliModelRouterMetricScorecard; blockedReasons: string[]; evidence: { sourceRecordIds: string[]; sourceGatewayRecordIds: string[]; comparisonRecordIds: string[]; primarySampleCount: number; shadowSampleCount: number; scorecardSampleCount: number; shadowEvidenceRequired: true; shadowEvidencePresent: boolean; }; rollbackPlan: { reversible: true; restoreIdentity?: CodaliModelRouterCandidateIdentity; removeCandidateIdentity?: CodaliModelRouterCandidateIdentity; steps: string[]; }; } export interface CodaliModelRouterPlan { planId: string; action: CodaliModelRouterPlanAction; status: "proposed" | "blocked"; reasons: string[]; routeCount: number; proposedRouteCount: number; preservedRouteCount: number; noChangeRouteCount: number; reversible: true; requiresShadowEvidence: true; productionRouterChangeAllowed: false; } export interface CodaliModelRouterImprovementCandidateSummary { candidateId: string; candidateKind: CodaliModelRouterCandidateKind; status: "proposed" | "blocked" | "no_change"; sourceExportIds: string[]; sourceRecordIds: string[]; artifactIds: string[]; exampleCount: number; objectBytes: number; routeCount: number; proposedRouteCount: number; blockedReasons: string[]; } export interface CodaliModelRouterCandidateBundle { schemaVersion: typeof CODALI_MODEL_ROUTER_CANDIDATE_SCHEMA_VERSION; artifact: CodaliModelRouterProposalArtifact; source: { exportId: string; manifestId: string; manifestPath: string; exportKind: CodaliStorageExportKind; checksum: string; recordCount: number; primaryArtifactRef?: CodaliModelRouterObjectRefSummary; }; generationPolicy: { deterministic: true; dryRunOnly: true; modifiesRuntimePrompts: false; modifiesRuntimeCode: false; modifiesRuntimeRouter: false; productionRouterChangeAllowed: false; requiresShadowEvidence: true; reversible: true; uploadEnabled: false; preservesFinalSynthesisRoute: true; finalSynthesizerFineTuning: false; }; expectedShape: { schemaVersion: typeof CODALI_MODEL_ROUTER_CANDIDATE_SCHEMA_VERSION; artifact: CodaliModelRouterProposalArtifact; requiredFields: string[]; routeCandidateRequiredFields: string[]; scorecardFields: string[]; }; sourceExamples: CodaliModelRouterSourceExample[]; evidenceSummary: { comparisonRecordCount: number; primaryRecordCount: number; shadowRecordCount: number; roleCount: number; roles: string[]; metricInputs: Array<"quality" | "tool_accuracy" | "schema_success" | "latency" | "cost" | "availability" | "confidence" | "fallback_rate">; }; routerPlan: CodaliModelRouterPlan; routeCandidates: CodaliModelRouterRouteCandidate[]; candidates: CodaliModelRouterImprovementCandidateSummary[]; } export interface BuildCodaliModelRouterCandidateBundleInput { inspection: DatasetExportManifestReaderResult; artifact?: CodaliModelRouterProposalArtifact; } export declare const buildCodaliModelRouterCandidateBundle: (input: BuildCodaliModelRouterCandidateBundleInput) => CodaliModelRouterCandidateBundle; //# sourceMappingURL=ModelRouterCandidateBuilder.d.ts.map