Add 4 major features to codetyper-cli:
- Hooks System: Lifecycle hooks (PreToolUse, PostToolUse, SessionStart,
SessionEnd, UserPromptSubmit, Stop) with exit code control flow
- Plugin System: Custom tools, commands, and hooks via plugin manifest
- Session Forking: Snapshots, rewind, fork, and switch between branches
- Vim Motions: Normal/Insert/Command/Visual modes with keyboard navigation
New files:
- src/types/{hooks,plugin,session-fork,vim}.ts
- src/constants/{hooks,plugin,session-fork,vim}.ts
- src/services/{hooks-service,plugin-loader,plugin-service,session-fork-service}.ts
- src/stores/vim-store.ts (vanilla)
- src/tui/hooks/{useVimMode,useVimStore,useTodoStore,useThemeStore}.ts
- src/tui/components/VimStatusLine.tsx
Modified:
- src/services/agent.ts (hook integration)
- src/tools/index.ts (plugin tool registration)
- src/stores/{todo-store,theme-store}.ts (converted to vanilla)
- TUI components (updated hook imports)
36 lines
929 B
TypeScript
36 lines
929 B
TypeScript
/**
|
|
* Interface for tracking pasted content with virtual text
|
|
*/
|
|
|
|
import type { PastedImage } from "@/types/image";
|
|
|
|
export interface PastedContent {
|
|
/** Unique identifier for the pasted block */
|
|
id: string;
|
|
/** The actual pasted content */
|
|
content: string;
|
|
/** Number of lines in the pasted content */
|
|
lineCount: number;
|
|
/** The placeholder text displayed in the input */
|
|
placeholder: string;
|
|
/** Start position in the input buffer */
|
|
startPos: number;
|
|
/** End position in the input buffer (exclusive) */
|
|
endPos: number;
|
|
}
|
|
|
|
export interface PasteState {
|
|
/** Map of pasted blocks by their ID */
|
|
pastedBlocks: Map<string, PastedContent>;
|
|
/** Counter for generating unique IDs */
|
|
pasteCounter: number;
|
|
/** List of pasted images */
|
|
pastedImages: PastedImage[];
|
|
}
|
|
|
|
export const createInitialPasteState = (): PasteState => ({
|
|
pastedBlocks: new Map(),
|
|
pasteCounter: 0,
|
|
pastedImages: [],
|
|
});
|