export type WorkerProviderKind = "fly" | "runpod" | "ecs"; export type QueuePolicy = { defaultPriority: number; maxPriority: number; claimBatchSize: number; }; export type RetryPolicy = { maxAttempts: number; baseDelayMs: number; maxDelayMs: number; backoffFactor: number; jitterRatio: number; }; export type LeasePolicy = { leaseMs: number; heartbeatIntervalMs: number; staleAfterMs: number; }; export type ScalingPolicy = { maxWorkers: number; queuePerWorkerTarget: number; spawnStep: number; idleTimeoutMs: number; reconcileIntervalMs: number; }; export type HydrationPolicy = { memoryWindowDays: number; maxContextTokens: number; snapshotTtlMs: number; rebuildOnDocTypes: Array; skillAssetScanMode: "manifest_only" | "manifest_and_assets"; }; export type ProviderConfig = { kind: WorkerProviderKind; appName: string; organizationSlug: string; image: string; region: string; volumeName: string; volumePath: string; volumeSizeGb: number; }; export type AgentFactoryConfig = { queue: QueuePolicy; retry: RetryPolicy; lease: LeasePolicy; scaling: ScalingPolicy; hydration: HydrationPolicy; provider: ProviderConfig; }; export declare const DEFAULT_WORKER_IMAGE = ""; export declare const DEFAULT_WORKER_VOLUME_NAME = "openclaw_data"; export declare const DEFAULT_WORKER_VOLUME_PATH = "/data"; export declare const DEFAULT_WORKER_RUNTIME_ENV: Record; export declare const queuePolicyValidator: import("convex/values").VObject<{ defaultPriority: number; maxPriority: number; claimBatchSize: number; }, { defaultPriority: import("convex/values").VFloat64; maxPriority: import("convex/values").VFloat64; claimBatchSize: import("convex/values").VFloat64; }, "required", "defaultPriority" | "maxPriority" | "claimBatchSize">; export declare const retryPolicyValidator: import("convex/values").VObject<{ maxAttempts: number; baseDelayMs: number; maxDelayMs: number; backoffFactor: number; jitterRatio: number; }, { maxAttempts: import("convex/values").VFloat64; baseDelayMs: import("convex/values").VFloat64; maxDelayMs: import("convex/values").VFloat64; backoffFactor: import("convex/values").VFloat64; jitterRatio: import("convex/values").VFloat64; }, "required", "maxAttempts" | "baseDelayMs" | "maxDelayMs" | "backoffFactor" | "jitterRatio">; export declare const leasePolicyValidator: import("convex/values").VObject<{ leaseMs: number; heartbeatIntervalMs: number; staleAfterMs: number; }, { leaseMs: import("convex/values").VFloat64; heartbeatIntervalMs: import("convex/values").VFloat64; staleAfterMs: import("convex/values").VFloat64; }, "required", "leaseMs" | "heartbeatIntervalMs" | "staleAfterMs">; export declare const scalingPolicyValidator: import("convex/values").VObject<{ maxWorkers: number; queuePerWorkerTarget: number; spawnStep: number; idleTimeoutMs: number; reconcileIntervalMs: number; }, { maxWorkers: import("convex/values").VFloat64; queuePerWorkerTarget: import("convex/values").VFloat64; spawnStep: import("convex/values").VFloat64; idleTimeoutMs: import("convex/values").VFloat64; reconcileIntervalMs: import("convex/values").VFloat64; }, "required", "maxWorkers" | "queuePerWorkerTarget" | "spawnStep" | "idleTimeoutMs" | "reconcileIntervalMs">; export declare const hydrationPolicyValidator: import("convex/values").VObject<{ memoryWindowDays: number; maxContextTokens: number; snapshotTtlMs: number; rebuildOnDocTypes: string[]; skillAssetScanMode: "manifest_only" | "manifest_and_assets"; }, { memoryWindowDays: import("convex/values").VFloat64; maxContextTokens: import("convex/values").VFloat64; snapshotTtlMs: import("convex/values").VFloat64; rebuildOnDocTypes: import("convex/values").VArray, "required">; skillAssetScanMode: import("convex/values").VUnion<"manifest_only" | "manifest_and_assets", [import("convex/values").VLiteral<"manifest_only", "required">, import("convex/values").VLiteral<"manifest_and_assets", "required">], "required", never>; }, "required", "memoryWindowDays" | "maxContextTokens" | "snapshotTtlMs" | "rebuildOnDocTypes" | "skillAssetScanMode">; export declare const providerConfigValidator: import("convex/values").VObject<{ appName: string; kind: "fly" | "runpod" | "ecs"; organizationSlug: string; image: string; region: string; volumeName: string; volumePath: string; volumeSizeGb: number; }, { kind: import("convex/values").VUnion<"fly" | "runpod" | "ecs", [import("convex/values").VLiteral<"fly", "required">, import("convex/values").VLiteral<"runpod", "required">, import("convex/values").VLiteral<"ecs", "required">], "required", never>; appName: import("convex/values").VString; organizationSlug: import("convex/values").VString; image: import("convex/values").VString; region: import("convex/values").VString; volumeName: import("convex/values").VString; volumePath: import("convex/values").VString; volumeSizeGb: import("convex/values").VFloat64; }, "required", "appName" | "kind" | "organizationSlug" | "image" | "region" | "volumeName" | "volumePath" | "volumeSizeGb">; export declare const agentFactoryConfigValidator: import("convex/values").VObject<{ queue: { defaultPriority: number; maxPriority: number; claimBatchSize: number; }; retry: { maxAttempts: number; baseDelayMs: number; maxDelayMs: number; backoffFactor: number; jitterRatio: number; }; lease: { leaseMs: number; heartbeatIntervalMs: number; staleAfterMs: number; }; scaling: { maxWorkers: number; queuePerWorkerTarget: number; spawnStep: number; idleTimeoutMs: number; reconcileIntervalMs: number; }; hydration: { memoryWindowDays: number; maxContextTokens: number; snapshotTtlMs: number; rebuildOnDocTypes: string[]; skillAssetScanMode: "manifest_only" | "manifest_and_assets"; }; provider: { appName: string; kind: "fly" | "runpod" | "ecs"; organizationSlug: string; image: string; region: string; volumeName: string; volumePath: string; volumeSizeGb: number; }; }, { queue: import("convex/values").VObject<{ defaultPriority: number; maxPriority: number; claimBatchSize: number; }, { defaultPriority: import("convex/values").VFloat64; maxPriority: import("convex/values").VFloat64; claimBatchSize: import("convex/values").VFloat64; }, "required", "defaultPriority" | "maxPriority" | "claimBatchSize">; retry: import("convex/values").VObject<{ maxAttempts: number; baseDelayMs: number; maxDelayMs: number; backoffFactor: number; jitterRatio: number; }, { maxAttempts: import("convex/values").VFloat64; baseDelayMs: import("convex/values").VFloat64; maxDelayMs: import("convex/values").VFloat64; backoffFactor: import("convex/values").VFloat64; jitterRatio: import("convex/values").VFloat64; }, "required", "maxAttempts" | "baseDelayMs" | "maxDelayMs" | "backoffFactor" | "jitterRatio">; lease: import("convex/values").VObject<{ leaseMs: number; heartbeatIntervalMs: number; staleAfterMs: number; }, { leaseMs: import("convex/values").VFloat64; heartbeatIntervalMs: import("convex/values").VFloat64; staleAfterMs: import("convex/values").VFloat64; }, "required", "leaseMs" | "heartbeatIntervalMs" | "staleAfterMs">; scaling: import("convex/values").VObject<{ maxWorkers: number; queuePerWorkerTarget: number; spawnStep: number; idleTimeoutMs: number; reconcileIntervalMs: number; }, { maxWorkers: import("convex/values").VFloat64; queuePerWorkerTarget: import("convex/values").VFloat64; spawnStep: import("convex/values").VFloat64; idleTimeoutMs: import("convex/values").VFloat64; reconcileIntervalMs: import("convex/values").VFloat64; }, "required", "maxWorkers" | "queuePerWorkerTarget" | "spawnStep" | "idleTimeoutMs" | "reconcileIntervalMs">; hydration: import("convex/values").VObject<{ memoryWindowDays: number; maxContextTokens: number; snapshotTtlMs: number; rebuildOnDocTypes: string[]; skillAssetScanMode: "manifest_only" | "manifest_and_assets"; }, { memoryWindowDays: import("convex/values").VFloat64; maxContextTokens: import("convex/values").VFloat64; snapshotTtlMs: import("convex/values").VFloat64; rebuildOnDocTypes: import("convex/values").VArray, "required">; skillAssetScanMode: import("convex/values").VUnion<"manifest_only" | "manifest_and_assets", [import("convex/values").VLiteral<"manifest_only", "required">, import("convex/values").VLiteral<"manifest_and_assets", "required">], "required", never>; }, "required", "memoryWindowDays" | "maxContextTokens" | "snapshotTtlMs" | "rebuildOnDocTypes" | "skillAssetScanMode">; provider: import("convex/values").VObject<{ appName: string; kind: "fly" | "runpod" | "ecs"; organizationSlug: string; image: string; region: string; volumeName: string; volumePath: string; volumeSizeGb: number; }, { kind: import("convex/values").VUnion<"fly" | "runpod" | "ecs", [import("convex/values").VLiteral<"fly", "required">, import("convex/values").VLiteral<"runpod", "required">, import("convex/values").VLiteral<"ecs", "required">], "required", never>; appName: import("convex/values").VString; organizationSlug: import("convex/values").VString; image: import("convex/values").VString; region: import("convex/values").VString; volumeName: import("convex/values").VString; volumePath: import("convex/values").VString; volumeSizeGb: import("convex/values").VFloat64; }, "required", "appName" | "kind" | "organizationSlug" | "image" | "region" | "volumeName" | "volumePath" | "volumeSizeGb">; }, "required", "queue" | "retry" | "lease" | "scaling" | "hydration" | "provider" | "queue.defaultPriority" | "queue.maxPriority" | "queue.claimBatchSize" | "retry.maxAttempts" | "retry.baseDelayMs" | "retry.maxDelayMs" | "retry.backoffFactor" | "retry.jitterRatio" | "lease.leaseMs" | "lease.heartbeatIntervalMs" | "lease.staleAfterMs" | "scaling.maxWorkers" | "scaling.queuePerWorkerTarget" | "scaling.spawnStep" | "scaling.idleTimeoutMs" | "scaling.reconcileIntervalMs" | "hydration.memoryWindowDays" | "hydration.maxContextTokens" | "hydration.snapshotTtlMs" | "hydration.rebuildOnDocTypes" | "hydration.skillAssetScanMode" | "provider.appName" | "provider.kind" | "provider.organizationSlug" | "provider.image" | "provider.region" | "provider.volumeName" | "provider.volumePath" | "provider.volumeSizeGb">; export declare const DEFAULT_CONFIG: AgentFactoryConfig; export declare function mergeWithDefaultConfig(partial: Partial | null | undefined): AgentFactoryConfig; export declare function computeRetryDelayMs(attempts: number, policy: RetryPolicy, nowMs: number): number; //# sourceMappingURL=config.d.ts.map