mirror of
https://github.com/harivansh-afk/clanker-agent.git
synced 2026-04-15 08:03:42 +00:00
- Copy all pi-mono source into apps/companion-os/ - Update Dockerfile to COPY pre-built binary instead of downloading from GitHub Releases - Update deploy-staging.yml to build pi from source (bun compile) before Docker build - Add apps/companion-os/** to path triggers - No more cross-repo dispatch needed Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
74 lines
2.6 KiB
TypeScript
74 lines
2.6 KiB
TypeScript
import type { AutocompleteProvider } from "./autocomplete.js";
|
|
import type { Component } from "./tui.js";
|
|
|
|
/**
|
|
* Interface for custom editor components.
|
|
*
|
|
* This allows extensions to provide their own editor implementation
|
|
* (e.g., vim mode, emacs mode, custom keybindings) while maintaining
|
|
* compatibility with the core application.
|
|
*/
|
|
export interface EditorComponent extends Component {
|
|
// =========================================================================
|
|
// Core text access (required)
|
|
// =========================================================================
|
|
|
|
/** Get the current text content */
|
|
getText(): string;
|
|
|
|
/** Set the text content */
|
|
setText(text: string): void;
|
|
|
|
/** Handle raw terminal input (key presses, paste sequences, etc.) */
|
|
handleInput(data: string): void;
|
|
|
|
// =========================================================================
|
|
// Callbacks (required)
|
|
// =========================================================================
|
|
|
|
/** Called when user submits (e.g., Enter key) */
|
|
onSubmit?: (text: string) => void;
|
|
|
|
/** Called when text changes */
|
|
onChange?: (text: string) => void;
|
|
|
|
// =========================================================================
|
|
// History support (optional)
|
|
// =========================================================================
|
|
|
|
/** Add text to history for up/down navigation */
|
|
addToHistory?(text: string): void;
|
|
|
|
// =========================================================================
|
|
// Advanced text manipulation (optional)
|
|
// =========================================================================
|
|
|
|
/** Insert text at current cursor position */
|
|
insertTextAtCursor?(text: string): void;
|
|
|
|
/**
|
|
* Get text with any markers expanded (e.g., paste markers).
|
|
* Falls back to getText() if not implemented.
|
|
*/
|
|
getExpandedText?(): string;
|
|
|
|
// =========================================================================
|
|
// Autocomplete support (optional)
|
|
// =========================================================================
|
|
|
|
/** Set the autocomplete provider */
|
|
setAutocompleteProvider?(provider: AutocompleteProvider): void;
|
|
|
|
// =========================================================================
|
|
// Appearance (optional)
|
|
// =========================================================================
|
|
|
|
/** Border color function */
|
|
borderColor?: (str: string) => string;
|
|
|
|
/** Set horizontal padding */
|
|
setPaddingX?(padding: number): void;
|
|
|
|
/** Set max visible items in autocomplete dropdown */
|
|
setAutocompleteMaxVisible?(maxVisible: number): void;
|
|
}
|