/** * Deterministic task feature extraction. * * Produces a bounded OrchestrationFeatureVector from the task text and optional * repository context. The baseline extractor never consults a model: it is a * pure deterministic function of its inputs so that decisions are replayable. * Missing values are explicit (undefined), never silently defaulted to zero * when that would imply confidence. * * Model-assisted features are optional and separately labeled; they can never * override the deterministic risk features (mutationRisk, requiresMutation, * requiresRelease, security sensitivity). */ import type { OrchestrationFeatureVector } from "./types.js"; export interface TaskContext { /** The user task text. */ task: string; /** Repository language IDs detected by the caller (e.g. ["typescript"]). */ languageIds?: string[]; /** Number of affected projects/files if known (0 = unknown). */ estimatedAffectedFiles?: number; /** Operator-declared budget class override, if any. */ operatorBudgetClass?: string; /** Operator-declared urgency. */ operatorUrgency?: string; } /** Feature extraction mode: deterministic baseline only, or with optional model-assisted labels. */ export interface FeatureExtractionOptions { /** Bounded set of allowed language IDs (prevents unbounded features). */ allowedLanguageIds?: string[]; /** Model-assisted category labels. Separately labeled; never overrides deterministic risk features. */ modelAssisted?: { taskCategory?: string; ambiguity?: number; evidenceRequirement?: number; }; } export declare const FEATURE_SCHEMA_VERSION = 1; export declare const MAX_FEATURES = 48; /** * Deterministic feature extraction baseline. * Returns a bounded, versioned feature vector with an explicit feature hash. */ export declare function extractFeatures(task: string | TaskContext, options?: FeatureExtractionOptions): OrchestrationFeatureVector; /** Stable hash of a feature vector (excluding the hash field). */ export declare function featureHash(vector: Omit): string; /** Deterministic task fingerprint used to correlate decisions across runs. */ export declare function taskFingerprint(task: string): string; //# sourceMappingURL=features.d.ts.map