Setting Types Reference
This page provides detailed reference documentation for all setting-related types and interfaces in the AugmentOS SDK.
Enums​
AppSettingType​
Enumeration of all available setting types.
enum AppSettingType {
TOGGLE = 'toggle',
TEXT = 'text',
SELECT = 'select',
SLIDER = 'slider',
GROUP = 'group',
TEXT_NO_SAVE_BUTTON = 'text_no_save_button',
SELECT_WITH_SEARCH = 'select_with_search',
MULTISELECT = 'multiselect',
TITLE_VALUE = 'titleValue'
}
Interfaces​
BaseAppSetting​
Base interface for all app settings.
interface BaseAppSetting {
/** Unique identifier for the setting */
key: string;
/** Human-readable label displayed to users */
label: string;
/** Current value selected by the user */
value?: any;
/** Default value if user hasn't set a preference */
defaultValue?: any;
}
Setting Type Definitions​
ToggleSetting​
Boolean on/off switch setting.
interface ToggleSetting extends BaseAppSetting {
type: AppSettingType.TOGGLE;
defaultValue: boolean;
value?: boolean;
}
Example:
{
"type": "toggle",
"key": "enable_notifications",
"label": "Enable Notifications",
"defaultValue": true
}
TextSetting​
Single-line text input setting.
interface TextSetting extends BaseAppSetting {
type: AppSettingType.TEXT;
defaultValue?: string;
value?: string;
}
Example:
{
"type": "text",
"key": "user_name",
"label": "Your Name",
"defaultValue": "User"
}
TextNoSaveButtonSetting​
Multi-line text input without save button. Updates on blur.
interface TextNoSaveButtonSetting extends BaseAppSetting {
type: AppSettingType.TEXT_NO_SAVE_BUTTON;
defaultValue?: string;
value?: string;
/** Maximum number of visible lines */
maxLines?: number;
}
Example:
{
"type": "text_no_save_button",
"key": "notes",
"label": "Personal Notes",
"defaultValue": "",
"maxLines": 5
}
SelectSetting​
Dropdown selection from predefined options.
interface SelectSetting extends BaseAppSetting {
type: AppSettingType.SELECT;
options: Array<{
/** Display text for the option */
label: string;
/** Value stored when option is selected */
value: any;
}>;
defaultValue?: any;
value?: any;
}
Example:
{
"type": "select",
"key": "theme",
"label": "Color Theme",
"options": [
{ "label": "Light", "value": "light" },
{ "label": "Dark", "value": "dark" },
{ "label": "Auto", "value": "auto" }
],
"defaultValue": "auto"
}
SelectWithSearchSetting​
Dropdown with search functionality for long option lists.
interface SelectWithSearchSetting extends BaseAppSetting {
type: AppSettingType.SELECT_WITH_SEARCH;
options: Array<{
label: string;
value: any;
}>;
defaultValue?: any;
value?: any;
}
Example:
{
"type": "select_with_search",
"key": "country",
"label": "Country",
"options": [
{ "label": "United States", "value": "US" },
{ "label": "United Kingdom", "value": "UK" },
{ "label": "Canada", "value": "CA" }
// ... many more options
],
"defaultValue": "US"
}
MultiselectSetting​
Multiple selection from options with checkboxes.
interface MultiselectSetting extends BaseAppSetting {
type: AppSettingType.MULTISELECT;
options: Array<{
label: string;
value: any;
}>;
defaultValue?: any[];
value?: any[];
}
Example:
{
"type": "multiselect",
"key": "features",
"label": "Enabled Features",
"options": [
{ "label": "Auto-save", "value": "autosave" },
{ "label": "Spell Check", "value": "spellcheck" },
{ "label": "Dark Mode", "value": "darkmode" }
],
"defaultValue": ["autosave"]
}
SliderSetting​
Numeric value selection with slider control.
interface SliderSetting extends BaseAppSetting {
type: AppSettingType.SLIDER;
/** Minimum allowed value */
min: number;
/** Maximum allowed value */
max: number;
defaultValue: number;
value?: number;
}
Example:
{
"type": "slider",
"key": "volume",
"label": "Volume",
"min": 0,
"max": 100,
"defaultValue": 50
}
GroupSetting​
Visual grouping of related settings. Not a setting itself.
interface GroupSetting {
type: AppSettingType.GROUP;
/** Title displayed for the group */
title: string;
/** Groups don't have keys */
key?: never;
}
Example:
{
"type": "group",
"title": "Display Settings"
}
TitleValueSetting​
Read-only display of information.
interface TitleValueSetting {
type: AppSettingType.TITLE_VALUE;
/** Label shown to user */
label: string;
/** Value to display */
value: any;
/** Title/value settings don't need keys */
key?: never;
}
Example:
{
"type": "titleValue",
"label": "App Version",
"value": "2.1.0"
}
AppSetting​
Union type of all possible setting types.
type AppSetting =
| ToggleSetting
| TextSetting
| TextNoSaveButtonSetting
| SelectSetting
| SelectWithSearchSetting
| MultiselectSetting
| SliderSetting
| GroupSetting
| TitleValueSetting;
AppSettings​
Array of app settings.
type AppSettings = AppSetting[];
Setting Change Types​
SettingChange​
Information about a single setting change.
interface SettingChange {
/** Previous value before the change */
oldValue: any;
/** New value after the change */
newValue: any;
}
SettingsChangeMap​
Map of setting keys to their change information.
type SettingsChangeMap = Record<string, SettingChange>;
Callback Types​
SettingsChangeHandler​
Callback for when any setting changes.
type SettingsChangeHandler = (changes: SettingsChangeMap) => void;
SettingValueChangeHandler​
Callback for when a specific setting value changes.
type SettingValueChangeHandler<T = any> = (
newValue: T,
oldValue: T
) => void;
Related Documentation​
- Settings Overview - Guide to using settings in TPAs
- Settings Manager API - SettingsManager class reference
- Getting Started - Complete TPA development guide