AI action palette
The palette is the inline AI surface. Select text, hit a keyboard shortcut or click a palette button, see a diff, accept or reject. No chat round-trip; one-shot completions through Pendraic's AI Gateway with the full PENDRAIC context bundle attached.
Five built-in actions
- Rewrite (
Cmd+Shift+R), rephrase while keeping meaning, POV, and tense. Tightens where it helps. - Continue (
Cmd+J;Cmd+Enterwith no selection uses trailing prose), extend in the same voice and forward direction. - Describe (
Cmd+Shift+D) , expand with sensory detail. Specific verbs and concrete nouns; never invents named entities. - Humanize (
Cmd+Shift+H) , strip AI-tell patterns: em dashes used for drama, triplet parallelism, empty intensifiers, symmetrical sentence lengths. - Brainstorm (palette button), three distinct rewrites of the same idea, labeled Option 1 / 2 / 3.
What gets sent
Each call carries the PENDRAIC context bundle assembled at the right granularity for the action. Pendraic's intent-aware bundler decides which silos to fetch:
- Voice Print fires on EVERY action.
- Promises / Nexus / Engine framework fires only when the model needs to know what the BOOK is doing, Brainstorm and custom prompts.
- Active Beat fires when the model needs to know WHERE we are on the spine, Continue and Brainstorm.
- World rules / Story Index fires when the model could invent a proper noun, Describe, Continue, Brainstorm.
- Humanize is the only built-in that runs on Voice Print alone, purely stylistic.
A typical Humanize call ships ~250 chars of context vs. ~1,500 for the full bundle, that's why Humanize is always cheap.
Diff modal
Every result lands in a side-by-side diff with the original on the left, the proposal on the right, and a unified word-level diff below. Plus:
- Voice conformance score, how closely the proposal matches your Voice Print, with flag chips for specific violations (em dashes, taboos, etc.).
- Cost line, input + output tokens, cached tokens, latency, model id, USD cost. Echoed from the AI Gateway's invocation row.
- Accept / Reject / Retry, accept replaces the selection in the editor; retry re-runs the same action with the same selection; reject closes the modal untouched.
Custom prompts via the palette
Saved custom prompts ride the same palette infrastructure. Three ways to fire one:
- Click the prompt card in the right-rail AI dock's Prompt library.
- Type
/prompt:<shortcut>on its own line and press Enter. - Ask Penny chat to run the prompt by name.
All three paths converge on the same one-shot pipeline (no tools, no agent loop, ~$0.02 per call vs. ~$1 for a Penny chat turn).
Cost expectations
- Humanize: bundle ~250 chars + selection. Typically $0.005-$0.02 on a Sonnet-tier model.
- Rewrite / Continue: bundle ~600-1,200 chars. Typically $0.02-$0.05.
- Describe / Brainstorm: bundle ~1,500 chars + scene. Typically $0.05-$0.10.
- Custom prompt: depends on whether the body uses scope-light or scope-heavy variables ({{selection}} vs. {{synopsis_5p}}).

