/** * Chat Input Extension * * Replaces pi's input editor with a configurable boxed input. All native * editor features — cursor movement, history, autocomplete, paste — work * normally inside the box. Also implements paste-again-to-expand: when a * collapsed `[paste #N ...]` marker is present, pasting the same content * again expands it inline so you can see and edit the actual text. * * Evolved from the earlier `box-editor.ts`: the rendering is now * config-driven (~/.pi/agent/configs/composer.json) and supports a * prefix glyph, boxed/unboxed modes, configurable padding, menu gap, * rounded vs square corners, a configurable session-name inlay in the border * (shown only when the session has a name — or another extension has pushed * label text over the `pi.events` bus; see the README's Extension API), and * working-state animations (spinner prefix and border glow while the agent * works). The rounded ╭╮│╰╯ corners remain the default to preserve the * original look. Paste-expand behavior was merged in from the former * standalone `paste-expand.ts` so the two features don't fight over * `setEditorComponent` (last-call-wins). * * Layout (boxed): * ╭──────────────────────────╮ * │ ❯ │ * │ │ * ╰──────────────────────────╯ * * * The prefix (default ❯, any cell width) is shown only on the first body line; * subsequent lines are indented by the prefix's width so content aligns. * Autocomplete lines render below the box, indented by `extraMenuIndent`. */ import { type ExtensionAPI } from '@earendil-works/pi-coding-agent'; export default function composer(pi: ExtensionAPI): void;