// Display-only catalog, generated from the reviewed macOS handoff snapshot. const ACTION_CATEGORIES = [ { id: 'quick', title: 'Quick', icon: 'zap' }, { id: 'writing', title: 'Writing', icon: 'pen-line' }, { id: 'code', title: 'Code', icon: 'code' }, { id: 'vision', title: 'Vision', icon: 'eye' }, { id: 'translate', title: 'Translate', icon: 'languages' }, ]; const ACTION_INPUTS = { selectedText: 'Selected text from the app you are working in.', command: 'The prompt you type in Caret.', auto: 'Context chosen automatically by Caret.', image: 'An image copied to your clipboard.', none: 'No explicit input is requested by this catalog action.', }; const ACTION_OUTPUTS = { dialogue: 'Show the result in Caret’s dialogue panel.', replaceSelection: 'Replace the selected text.', paste: 'Paste the result at the cursor.', copy: 'Copy the result to the clipboard.', }; function ActionLibrary() { const [query, setQuery] = useState(''); const [category, setCategory] = useState('all'); const actions = window.CARET_ACTIONS; const filtered = actions.filter(action => (category === 'all' || category === action.assignedTabID) && [action.title, action.subtitle, action.assignedTabID, action.alias].join(' ').toLowerCase().includes(query.trim().toLowerCase())); return
setQuery(event.target.value)} aria-controls="action-results" />
{[{id:'all',title:'All'}, ...ACTION_CATEGORIES].map(item => )}

{filtered.length} {filtered.length === 1 ? 'action' : 'actions'} found

{filtered.map(action => { const tab = ACTION_CATEGORIES.find(item => item.id === action.assignedTabID); return
{tab.title}{action.alias}

{action.title}

{action.subtitle}

{ if (event.key === 'Escape') { event.currentTarget.open = false; event.currentTarget.querySelector('summary').focus(); } }}> View details
Input
{ACTION_INPUTS[action.input]}
Default result
{ACTION_OUTPUTS[action.outputMode]}
{action.id === 'commit' &&

Supply selected diff or change context yourself. Caret does not automatically read your repository or staged changes.

}

How to use

  1. Connect an AI provider in Settings.
  2. {action.input === 'image' ? 'Copy an image to your clipboard.' : action.input === 'selectedText' ? 'Select the text you want to work with.' : action.input === 'command' ? 'Have your prompt ready to type.' : 'Prepare the context you want to work with.'}
  3. Summon Caret, type {action.alias}{action.input === 'command' ? ' and your prompt' : ''}, then press Enter.
; })}
{!filtered.length &&

No matching actions.

Try another name, category or alias.

}
Room for what’s next

A library that grows with your work.

The shared catalog can be extended with new prompts and workflows. Choose which actions appear, organize their tabs, and pick the model and shortcut for each. The shared catalog supplies their prompts and aliases.

Apps, Files, Clipboard and Snippets are additional utilities, outside this AI action count.

Request an action →
; } Object.assign(window, { ActionLibrary });