import { SmrtCollection, SmrtObject } from '@happyvertical/smrt-core'; /** * Conservative defaults applied when no SupportPolicy row matches: the AI * acknowledges, classifies, and answers, but never closes a case or executes * tools until a policy explicitly enables it. Handoff triggers are always * active regardless of policy. */ export declare const DEFAULT_SUPPORT_POLICY: { readonly autoAcknowledge: true; readonly autoClassify: true; readonly autoAnswer: true; readonly autoTroubleshoot: false; readonly autoResolve: false; readonly autoResolveMaxSeverity: ""; readonly confidenceThreshold: 0.7; readonly maxAutoAttempts: 1; readonly autoSendEmailReplies: false; readonly sensitiveCategories: string[]; readonly allowedTools: string[]; }; export declare class SupportPolicy extends SmrtObject { tenantId: string | null; /** Policy name, unique per tenant (`conflictColumns`). */ name: string; /** Scope: applies to cases under this plan (null = any plan). */ planId: string | null; /** Scope: applies to cases for this app-defined project (null = any). */ projectId: string | null; enabled: boolean; /** Immediately acknowledge new inbound cases. */ autoAcknowledge: boolean; /** Classify severity/category/sensitivity on intake. */ autoClassify: boolean; /** Post an automated answer using scoped knowledge. */ autoAnswer: boolean; /** Run tool-executing troubleshooting (gated OFF by default). */ autoTroubleshoot: boolean; /** Allow the AI to resolve (close out) low-risk cases (OFF by default). */ autoResolve: boolean; /** * Highest severity the AI may auto-resolve (e.g. `sev4` = questions only). * Empty means "no severity is eligible" even when `autoResolve` is true. */ autoResolveMaxSeverity: string; /** * Confidence floor for automated answers/resolutions; below it the workflow * triggers a `low_confidence` Human Handoff. */ confidenceThreshold: number; /** Max automated resolution attempts before a `failed_resolution` handoff. */ maxAutoAttempts: number; /** Whether automated email replies may be sent (vs drafted) — OFF default. */ autoSendEmailReplies: boolean; /** * Categories considered sensitive: classification into one of these always * triggers a Human Handoff (FR-28b). JSON array of category keys. */ sensitiveCategories: string; /** Tool ids the troubleshooting phase may execute. JSON array, fail-closed. */ allowedTools: string; metadata: string; getSensitiveCategories(): string[]; setSensitiveCategories(categories: string[]): void; getAllowedTools(): string[]; setAllowedTools(tools: string[]): void; getMetadata(): Record; setMetadata(value: Record): void; /** Specificity rank for resolution: exact scope wins over partial. */ scopeRank(): number; } export declare class SupportPolicyCollection extends SmrtCollection { static readonly _itemClass: typeof SupportPolicy; /** * Resolve the effective policy for a case scope, most-specific-wins. * Returns `null` when no enabled policy matches (callers then apply * {@link DEFAULT_SUPPORT_POLICY}). */ resolveForScope(options: { planId?: string | null; projectId?: string | null; }): Promise; } export default SupportPolicy; //# sourceMappingURL=support-policy.d.ts.map