/** * Vendor-separated delegation policy. * * A model profile that pins worker roles (`executor`, `planner`) to a provider * other than the main `default` role exists to move heavy implementation onto * that other provider's quota. That only pays off when the main agent actually * delegates, and the strong delegation directive is gated behind `task.eager`, * whose schema default is `false`. Such a layout therefore used to run * everything on the main provider with no signal at all. * * Vendor separation now implies eager delegation unless `task.eager` is * configured explicitly, in which case the user's value always wins. */ import type { ModelProfileDefinition, ModelProfileRole } from "./model-profiles"; import { type ModelSelectorValue } from "./model-selector-value"; import type { Settings } from "./settings"; /** Worker roles whose provider separation expresses delegation intent. */ export declare const VENDOR_SEPARATION_WORKER_ROLES: readonly ["executor", "planner"]; export type VendorSeparationWorkerRole = (typeof VENDOR_SEPARATION_WORKER_ROLES)[number]; export type RoleSelectorMap = Partial>; /** Worker roles pinned to a provider other than the `default` role's provider. */ export declare function findVendorSeparatedWorkerRoles(mapping: RoleSelectorMap): VendorSeparationWorkerRole[]; export interface EagerTaskDelegationInput { settings: Settings; /** Active profile, when its bindings are not (yet) installed into settings. */ profile?: ModelProfileDefinition; } /** * Effective role selectors: profile mapping as the baseline, installed settings * bindings on top, since profile activation writes into those same settings. */ export declare function collectEffectiveRoleSelectors(input: EagerTaskDelegationInput): RoleSelectorMap; export interface EagerTaskDelegation { eagerTasks: boolean; vendorSeparatedRoles: VendorSeparationWorkerRole[]; /** Vendor-separated workers that an explicit `task.eager false` keeps unused. */ suppressedByExplicitSetting: boolean; } export declare function resolveEagerTaskDelegation(input: EagerTaskDelegationInput): EagerTaskDelegation;