import { type TaskDefinition, type LearningPolicy, type LearningRevisionRef } from "@openpond/evals/learning"; import type { HostedModelProjectSummary } from "./model-projects.js"; import { type ModelInitialLearning } from "./model-learning-intent.js"; /** Compile the simple creation choice into exact source and policy releases. * Hosts commit these with the new Model and its idempotency receipt. */ export declare function initialHostedModelLearning(input: { project: HostedModelProjectSummary; definition: TaskDefinition; learning: ModelInitialLearning; }): { source: { schemaVersion: "openpond.learningSource.v1"; id: string; revision: number; name: string; kind: "benchmark" | "direct" | "opentelemetry" | "provider" | "work"; taskDefinition: { id: string; contentHash: string; revision: number; }; enabled: boolean; allowedSplits: ("frozen_eval" | "test" | "train" | "validation")[]; mapping: { schemaVersion: "openpond.taskSourceMapping.v1"; exampleId: string; attemptId: string; occurredAt: string; input: string; observedOutput: string | null; expected: string | null; evaluatorContext: string | null; familyKey: string; split: "frozen_eval" | "test" | "train" | "validation"; } | null; adapterVersion: string | null; reviewOrigin?: { modelId: string; packageHash: string; taskset: { id: string; contentHash: string; revision: number; }; batch: { id: string; contentHash: string; revision: number; }; rewardBinding: { id: string; contentHash: string; revision: number; }; } | undefined; capturedOrigin?: { receiptId: string; ownerUserId: string; modelId: string; packageHash: string; taskset: { id: string; contentHash: string; revision: number; }; } | undefined; }; policy: { origin?: { schemaVersion: "openpond.trainingHandoffOrigin.v1"; teamId: string; projectId: string | null; configurationId: string; source: { executionId: string; passId: string | null; manifestHash: string; resultHash: string; }; dataset: { id: string; revision: number; contentHash: string; }; target: { kind: "model"; modelId: string; configurationHash: string; } | { kind: "harness"; source: { profileId: string; sourceRevision: string; harnessRelease: { id: string; contentHash: string; }; catalogHash: string; definitionId: string; definitionHash: string; target: { kind: "profile"; } | { kind: "workflow"; workflowId: string; } | { kind: "skill"; skillPath: string; } | { kind: "agent_action"; actionId: string; }; environmentHash: string; externalDatasetBinding?: { schemaVersion: "openpond.profileExternalDatasetBinding.v1"; dataset: { id: string; contentHash: string; revision: number; }; packageHash: string; profileId: string; target: { kind: "profile"; } | { kind: "workflow"; workflowId: string; } | { kind: "skill"; skillPath: string; } | { kind: "agent_action"; actionId: string; }; declaredProfileCatalogHash: string | null; protectedProfileClosureHash: string; recordedOrigin?: { execution: { id: string; contentHash: string; }; originalEvidence: { id: string; contentHash: string; }; members: { caseId: string; seed: string; fixtureId: string; sourceId: string; snapshotHash: string; boundaryRevisionHash: string; }[]; } | undefined; gradingSource?: { pass: { id: string; contentHash: string; }; evidence: { id: string; contentHash: string; }; } | undefined; split: "frozen_eval" | "test" | "train" | "validation"; population: { taskId: string; seed: string; fixtureId: string | null; }[]; evaluators: { release: { id: string; contentHash: string; revision: string | number; }; feedbackKey: string; configurationHash: string; output: "boolean" | "category" | "score"; categories: string[]; }[]; fieldMappingsHash: string; fieldMappings: { graderId: string; fields: { destination: "evaluatorContext" | "expectedOutput" | "input" | "output"; path: string[]; source: "evaluatorContext" | "expectedOutput" | "input" | "output"; sourcePath: string[]; }[]; }[]; environmentHash: string; privateDatasetClosureHash: string; criterion: { minimumPassRate: number; requireComplete: boolean; }; contentHash: string; } | undefined; sourceCandidate?: { candidateId: string; frozenRevision: number; frozenHash: string; harnessRelease: { id: string; contentHash: string; }; protectedClosureHash: string; } | undefined; }; model: { modelId: string; configurationHash: string; }; } | { kind: "agent"; source: { harnessRelease: { id: string; contentHash: string; }; agentSnapshot: { id: string; contentHash: string; }; sourcePackageHash: string; }; model: { modelId: string; configurationHash: string; }; } | { kind: "fixture"; configurationHash: string; }; graders: { feedbackKey: string; evaluator: { id: string; contentHash: string; }; expectedCount: number; scoredCount: number; score: number | null; }[]; contentHash: string; } | undefined; schemaVersion: "openpond.learningPolicy.v1"; id: string; revision: number; modelProjectId: string; executionOwner: "hosted" | "local"; enabled: boolean; sources: { id: string; contentHash: string; revision: number; }[]; taskDefinition: { id: string; contentHash: string; revision: number; }; rewardBinding: { id: string; contentHash: string; revision: number; }; admission: { mode: "human" | "qualified_automatic"; qualification: { id: string; contentHash: string; } | null; minimumApprovedExamples: number; }; trigger: { kind: "manual"; } | { kind: "approved_count"; } | { kind: "schedule"; intervalSeconds: number; } | { localTime: string; timeZone: string; kind: "nightly"; } | { kind: "upstream_accepted"; modelProjectId: string; }; trainingParent: { id: string; contentHash: string; }; teacher: { id: string; contentHash: string; } | null; training: { method: "dpo" | "grpo" | "opd" | "opsd" | "ppo" | "sdft" | "sdpo" | "sft"; recipe: { id: string; contentHash: string; }; retentionEvaluation: { id: string; contentHash: string; }; replayBatches: { id: string; contentHash: string; }[]; continuationMode?: { adapterMode: "residual_append" | "sequential_merge" | "shared"; sourceConfiguration: { id: string; revision: number; etag: string; }; } | undefined; }; limits: { maxIterationSpendUsd: number; maxDailySpendUsd: number; cooldownSeconds: number; maxRetries: number; maxBatchExamples: number; maxBacklogExamples: number; }; automation: { collect: boolean; train: boolean; accept: boolean; serve: boolean; }; acceptance: { minimumScore: number; maximumRetentionRegression: number; requireImprovement: boolean; rollbackVersion: { id: string; contentHash: string; } | null; }; }; }; /** Shared starting values for both Model clients. Existing policies retain * their exact limits; opening settings must never silently increase spending. */ export declare function hostedLearningPolicyDefaults(project: HostedModelProjectSummary, policy: LearningPolicy | null): { enabled: boolean; scheduled: boolean; intervalSeconds: number; humanReviewRequired: boolean; minimumApprovedExamples: number; maxBatchExamples: number; maxIterationSpendUsd: number; maxDailySpendUsd: number; cooldownSeconds: number; maxRetries: number; maxBacklogExamples: number; }; export interface HostedLearningPolicySettings { enabled: boolean; scheduled: boolean; intervalSeconds: number; trigger?: Exclude; humanReviewRequired: boolean; minimumApprovedExamples: number; maxBatchExamples: number; maxIterationSpendUsd: number; maxDailySpendUsd: number; cooldownSeconds: number; maxRetries: number; maxBacklogExamples: number; } /** Compile reviewed settings without following mutable Model configuration * unless the caller explicitly chooses to apply it. Publication still owns * authorization, revision comparison and source/qualification validation. */ export declare function createHostedLearningPolicyContent(input: { project: HostedModelProjectSummary; previous: LearningPolicy | null; policyId: string; applyModelConfiguration: boolean; sources: LearningRevisionRef[]; taskDefinition: LearningRevisionRef; settings: HostedLearningPolicySettings; }): { origin?: { schemaVersion: "openpond.trainingHandoffOrigin.v1"; teamId: string; projectId: string | null; configurationId: string; source: { executionId: string; passId: string | null; manifestHash: string; resultHash: string; }; dataset: { id: string; revision: number; contentHash: string; }; target: { kind: "model"; modelId: string; configurationHash: string; } | { kind: "harness"; source: { profileId: string; sourceRevision: string; harnessRelease: { id: string; contentHash: string; }; catalogHash: string; definitionId: string; definitionHash: string; target: { kind: "profile"; } | { kind: "workflow"; workflowId: string; } | { kind: "skill"; skillPath: string; } | { kind: "agent_action"; actionId: string; }; environmentHash: string; externalDatasetBinding?: { schemaVersion: "openpond.profileExternalDatasetBinding.v1"; dataset: { id: string; contentHash: string; revision: number; }; packageHash: string; profileId: string; target: { kind: "profile"; } | { kind: "workflow"; workflowId: string; } | { kind: "skill"; skillPath: string; } | { kind: "agent_action"; actionId: string; }; declaredProfileCatalogHash: string | null; protectedProfileClosureHash: string; recordedOrigin?: { execution: { id: string; contentHash: string; }; originalEvidence: { id: string; contentHash: string; }; members: { caseId: string; seed: string; fixtureId: string; sourceId: string; snapshotHash: string; boundaryRevisionHash: string; }[]; } | undefined; gradingSource?: { pass: { id: string; contentHash: string; }; evidence: { id: string; contentHash: string; }; } | undefined; split: "frozen_eval" | "test" | "train" | "validation"; population: { taskId: string; seed: string; fixtureId: string | null; }[]; evaluators: { release: { id: string; contentHash: string; revision: string | number; }; feedbackKey: string; configurationHash: string; output: "boolean" | "category" | "score"; categories: string[]; }[]; fieldMappingsHash: string; fieldMappings: { graderId: string; fields: { destination: "evaluatorContext" | "expectedOutput" | "input" | "output"; path: string[]; source: "evaluatorContext" | "expectedOutput" | "input" | "output"; sourcePath: string[]; }[]; }[]; environmentHash: string; privateDatasetClosureHash: string; criterion: { minimumPassRate: number; requireComplete: boolean; }; contentHash: string; } | undefined; sourceCandidate?: { candidateId: string; frozenRevision: number; frozenHash: string; harnessRelease: { id: string; contentHash: string; }; protectedClosureHash: string; } | undefined; }; model: { modelId: string; configurationHash: string; }; } | { kind: "agent"; source: { harnessRelease: { id: string; contentHash: string; }; agentSnapshot: { id: string; contentHash: string; }; sourcePackageHash: string; }; model: { modelId: string; configurationHash: string; }; } | { kind: "fixture"; configurationHash: string; }; graders: { feedbackKey: string; evaluator: { id: string; contentHash: string; }; expectedCount: number; scoredCount: number; score: number | null; }[]; contentHash: string; } | undefined; schemaVersion: "openpond.learningPolicy.v1"; id: string; revision: number; modelProjectId: string; executionOwner: "hosted" | "local"; enabled: boolean; sources: { id: string; contentHash: string; revision: number; }[]; taskDefinition: { id: string; contentHash: string; revision: number; }; rewardBinding: { id: string; contentHash: string; revision: number; }; admission: { mode: "human" | "qualified_automatic"; qualification: { id: string; contentHash: string; } | null; minimumApprovedExamples: number; }; trigger: { kind: "manual"; } | { kind: "approved_count"; } | { kind: "schedule"; intervalSeconds: number; } | { localTime: string; timeZone: string; kind: "nightly"; } | { kind: "upstream_accepted"; modelProjectId: string; }; trainingParent: { id: string; contentHash: string; }; teacher: { id: string; contentHash: string; } | null; training: { method: "dpo" | "grpo" | "opd" | "opsd" | "ppo" | "sdft" | "sdpo" | "sft"; recipe: { id: string; contentHash: string; }; retentionEvaluation: { id: string; contentHash: string; }; replayBatches: { id: string; contentHash: string; }[]; continuationMode?: { adapterMode: "residual_append" | "sequential_merge" | "shared"; sourceConfiguration: { id: string; revision: number; etag: string; }; } | undefined; }; limits: { maxIterationSpendUsd: number; maxDailySpendUsd: number; cooldownSeconds: number; maxRetries: number; maxBatchExamples: number; maxBacklogExamples: number; }; automation: { collect: boolean; train: boolean; accept: boolean; serve: boolean; }; acceptance: { minimumScore: number; maximumRetentionRegression: number; requireImprovement: boolean; rollbackVersion: { id: string; contentHash: string; } | null; }; }; /** Bind a reviewed hosted Model configuration before asynchronous preparation. * Keep the established recipe identity: its id binds the whole Model revision, * including Harness and retention selections, while its hash binds the recipe. * Callers must obtain the summary from the authenticated Model API. */ export declare function hostedLearningPolicyReferences(project: HostedModelProjectSummary): { recipe: { id: string; contentHash: string; }; trainingParent: { id: string; contentHash: string; }; retentionEvaluation: { id: string; contentHash: string; }; }; //# sourceMappingURL=model-learning-policy.d.ts.map