UNPKG

framework

Version:

The (AI) Framework: turnkey, zero-config AI orchestration that wraps a coding-agent CLI (Claude Code) as a black box and takes you from an idea to a running app. Vite for AI.

89 lines 4.59 kB
import type { Preferences } from './registry.js'; /** * What an unset preference means, and the bounds the controls that write them share. * * A leaf module (no `node:*`) so `client.ts` can export it and the dashboard reads the same values * the daemon acts on. The notification defaults used to be named predicates in the dashboard and * open-coded at each daemon call site, in three different spellings, with a comment warning the * reader not to copy the sibling's polarity. That warning is what a default with one home does not * need. * * No cycle: `registry.ts` re-exports the bounds from here, and the `Preferences` import going the * other way is type-only, so it erases. */ /** * Notifications are a 2×2, and naming the axes is the point (B5). * * There are four preference keys and they are not four settings: `notifyBrowser` and * `notifyDiscord` say *how* a notification reaches you, `notifyHumanIntervention` and * `notifyNewActivity` say *what it is about*. Nothing in the names said which axis a key belonged * to, and the composition ("deliver this category by this method") was open-coded per call site — * which is how one of them got the category's polarity wrong by copying its sibling. The axes are * named here so a caller asks the one question it actually has. * * The stored keys are unchanged: a settings file written before this still reads. */ /** How a notification reaches you. */ export type NotifyMethod = 'browser' | 'discord'; /** What a notification is about. */ export type NotifyCategory = 'humanIntervention' | 'newActivity'; /** * What each cell means when nobody has said. * * The polarities are not uniform, and that is the point of writing them down once: the browser * bell and the "needs you" baseline fire unless you turn them off, while everything that reaches * outward (Discord) or is loosely informative (plain activity) is opt-in. */ export declare const NOTIFICATION_DEFAULTS: { readonly methods: { readonly browser: true; readonly discord: false; }; readonly categories: { readonly humanIntervention: true; readonly newActivity: false; }; }; /** Whether a delivery method is switched on, with its default applied. */ export declare function notifyMethodEnabled(preferences: Preferences, method: NotifyMethod): boolean; /** Whether a category is switched on, with its default applied. */ export declare function notifyCategoryEnabled(preferences: Preferences, category: NotifyCategory): boolean; /** * Whether this cell of the 2×2 delivers: both the method and the category have to be on. * * One function rather than an `&&` at each call site — that open-coding is exactly what let a * category's polarity be wrong in one place and right in another. */ export declare function notifies(preferences: Preferences, method: NotifyMethod, category: NotifyCategory): boolean; /** * How far either way the automatic-consumption slider reaches, in percentage points (#960). * * Here rather than in `registry.ts` for the reason this module exists: the slider that writes the * value is in the browser and the sanitizer that clamps it is in the daemon, so the bound has to * be one number both can import. */ export declare const MAX_SPEND_OFFSET = 50; /** * Where the slider sits before anyone has touched it, in percentage points (#960 Edit): half a * day's worth of the week's allowance, ahead of the boundary. * * Landing exactly on the boundary reads as generous on paper but stops unattended work the moment * the account is precisely on pace, which is normal jitter rather than overspending. A half-day * cushion gives it room to breathe without meaningfully loosening the spend-boundary policy (#879). */ export declare const DEFAULT_SPEND_OFFSET: number; /** * How many agents the routine keeps going at once when `autoPmConcurrency` is unset (#1204). * * Two, not one: the point of the setting is that the routine may overlap work, and a default of * one would leave the feature invisible until someone finds the control. Two is the smallest * number that shows it while staying conservative about quota. */ export declare const DEFAULT_AUTO_PM_CONCURRENCY = 2; /** * The most agents the routine may be asked to keep going at once (#1204). Like * {@link MAX_SPEND_OFFSET}, the control that writes the value is in the browser and the sanitizer * that clamps it is in the daemon, so the bound has to be one number both can import. */ export declare const MAX_AUTO_PM_CONCURRENCY = 10; //# sourceMappingURL=preference-defaults.d.ts.map