Commit graph

1835 commits

Author SHA1 Message Date
Mario Zechner
159075cad7 Improve tool execution rendering and error handling
- Show tool execution components immediately when tool calls appear in streaming
- Update components with streaming arguments as they come in
- Handle incomplete/partial arguments gracefully with optional chaining
- Fix error handling: tools now throw exceptions instead of returning error messages
- Fix bash abort handling to properly reject on abort/timeout
- Clean up error display
2025-11-11 23:05:58 +01:00
Mario Zechner
2d43b2f2e3 Don't show stats for assistant messages with only tool calls 2025-11-11 22:13:00 +01:00
Mario Zechner
ea8b8b7f54 Fix thinking trace styling when text wraps 2025-11-11 22:08:20 +01:00
Mario Zechner
3fcae75e93 Remove StreamingMessageComponent - just use AssistantMessageComponent
- StreamingMessageComponent was just a wrapper around AssistantMessageComponent
- AssistantMessageComponent now handles its own stats rendering
- Made AssistantMessageComponent updatable with updateContent()
- Removed duplicate stats handling code from tui-renderer
- All stats are now managed by the component itself
2025-11-11 22:04:42 +01:00
Mario Zechner
741add4411 Refactor TUI into proper components
- Create UserMessageComponent - handles user messages with spacing
- Create AssistantMessageComponent - handles complete assistant messages
- Create ThinkingSelectorComponent - wraps selector with borders
- Add setSelectedIndex to SelectList for preselecting current level
- Simplify tui-renderer by using dedicated components
- Much cleaner architecture - each message type is now a component
2025-11-11 21:55:29 +01:00
Mario Zechner
e2649341f0 Simplify assistant message spacing - just add spacer to components 2025-11-11 21:51:12 +01:00
Mario Zechner
f5176bb173 Fix double spacing before tool executions by removing bottom padding from assistant Markdown 2025-11-11 21:43:53 +01:00
Mario Zechner
f63ec78524 Add spacer above user messages (except first one) 2025-11-11 21:39:42 +01:00
Mario Zechner
0cceb346be Use Spacer component for blank line before tool execution 2025-11-11 21:37:11 +01:00
Mario Zechner
c061b4fba9 Simplify tool execution component structure with proper padding
- Use single Text component with paddingY=1 for green background box
- Add spacer line with transparent background at top
- Header and content in same component with blank line separator
- Move error markers to header line instead of after content
2025-11-11 21:35:11 +01:00
Mario Zechner
ba5299a39e Fix tool execution formatting and colors
- Add blank spacer line with no background before tool execution
- Apply colored background to header (read/write/edit line)
- Apply same colored background to content
- Use lighter gray (chalk.dim) for file content
- Show first 10 lines of content for write operations
- Use cyan color for file paths (matching markdown code color)
2025-11-11 21:32:00 +01:00
Mario Zechner
5d7bc60cff Replace Markdown with Text component for tool execution
- Add background color support to Text component
- Replace Markdown component with Text in ToolExecutionComponent
- Use chalk.bold for formatting instead of markdown syntax
- Remove unnecessary markdown parsing overhead
2025-11-11 21:27:23 +01:00
Mario Zechner
10520a8c41 Fix read/write tool output formatting
- Remove code fences (```) from read output - show raw content
- Show first 10 lines instead of 5 for read
- Only show line count for write if > 10 lines
- Remove indentation from read output
- Cleaner, more minimal tool output display
2025-11-11 21:22:08 +01:00
Mario Zechner
4fa09814bd Refactor TUI components into separate files
- Move TUI components into src/tui/ folder
- Split out CustomEditor, StreamingMessageComponent, ToolExecutionComponent, FooterComponent
- Trim assistant message text content
- Add newline after per-message token/cost stats
- Improve code organization and maintainability
2025-11-11 21:16:31 +01:00
Mario Zechner
fe5706885d Clean up bash output formatting
- Remove "Command aborted by user" message (Aborted already shown separately)
- Remove STDOUT/STDERR labels - just show output cleanly
- Stderr is now separated by newline without labels
- Timeout and error messages moved to end of output
2025-11-11 21:09:50 +01:00
Mario Zechner
6e9fa8dde1 Fix bash abort to kill entire process tree immediately
- Switch from exec() to spawn() with detached: true
- Create new process group for spawned commands
- Kill entire process group with process.kill(-pid) on abort
- This ensures commands like "sleep 4 && echo hello" abort immediately
- Previous implementation only killed parent shell, leaving subprocesses running
2025-11-11 21:07:39 +01:00
Mario Zechner
ea5097e13e Add thinking trace support and improve bash output formatting
- Render thinking traces in dark gray italic in final messages
- Show thinking as italic markdown in streaming view
- Remove code fences from bash output for cleaner minimal display
- Remove superfluous empty line after tool executions
- Thinking blocks now render inline in proper order with text
2025-11-11 21:01:42 +01:00
Mario Zechner
8fa780e052 Improve TUI instructions and thinking selector styling
- Add ctrl+k to delete line instruction
- Change all "set x to y" confirmation messages to blue with padding
- Add blue top and bottom borders around thinking selector dialog
2025-11-11 20:53:27 +01:00
Mario Zechner
ba8d802999 Add interactive UI selector for /thinking command
- /thinking now opens a SelectList UI component to choose thinking level
- Temporarily replaces the editor with the selector
- Shows 5 levels (off, minimal, low, medium, high) with descriptions
- Supports keyboard navigation (arrows, enter, escape)
- Shows confirmation message after selection
- Maintains backward compatibility with /thinking <level> direct syntax
2025-11-11 20:49:20 +01:00
Mario Zechner
71fb1b9173 Put each instruction on its own line and add file drop hint 2025-11-11 20:43:17 +01:00
Mario Zechner
9b20b91a99 Make stats darker gray and remove extra newline after header 2025-11-11 20:40:35 +01:00
Mario Zechner
9f0242d477 Replace logo with 'pi' + version from package.json 2025-11-11 20:38:56 +01:00
Mario Zechner
5627b3054a Improve logo design with decorative brackets 2025-11-11 20:35:50 +01:00
Mario Zechner
95d71920f3 Update welcome banner with minimal pi logo and improved instructions 2025-11-11 20:34:52 +01:00
Mario Zechner
ea01a758e0 Suppress punycode deprecation warning from dependencies 2025-11-11 20:32:49 +01:00
Mario Zechner
97e00fc45d Fix Escape key to cancel autocomplete before interrupting agent 2025-11-11 20:29:38 +01:00
Mario Zechner
dc1e2f928b Add /thinking command and improve TUI UX
- Add /thinking slash command with autocomplete for setting reasoning levels (off, minimal, low, medium, high)
- Fix Ctrl+C behavior: remove hardcoded exit in TUI, let focused component handle it
- Add empty lines before and after tool execution components for better visual separation
- Fix stats rendering: display stats AFTER tool executions complete (matches web-ui behavior)
- Remove "Press Ctrl+C again to exit" message, show "(esc to interrupt)" in loader instead
- Add bash tool abort signal support with immediate SIGKILL on interrupt
- Make Text and Markdown components return empty arrays when no actual text content
- Add setCustomBgRgb() method to Markdown for dynamic background colors
2025-11-11 20:28:10 +01:00
Mario Zechner
c5083bb7cb Fix markdown streaming duplication by splitting newlines first
- Added string-width library for proper terminal column width calculation
- Fixed wrapLine() to split by newlines before wrapping (like Text component)
- Fixed Loader interval leak by stopping before container removal
- Changed loader message from 'Loading...' to 'Working...'
2025-11-11 19:27:58 +01:00
Mario Zechner
985f955ea0 Clean up TUI package and refactor component structure
- Remove old TUI implementation and components (LoadingAnimation, MarkdownComponent, TextComponent, TextEditor, WhitespaceComponent)
- Rename components-new to components with new API (Loader, Markdown, Text, Editor, Spacer)
- Move Text and Input components to separate files in src/components/
- Add render caching to Text component (similar to Markdown)
- Add proper ANSI code handling in Text component using stripVTControlCharacters
- Update coding-agent to use new TUI API (requires ProcessTerminal, uses custom Editor subclass for key handling)
- Remove old test files, keep only chat-simple.ts and virtual-terminal.ts
- Update README.md with new minimal API documentation
- Switch from tsc to tsgo for type checking
- Update package dependencies across monorepo
2025-11-11 10:32:18 +01:00
Mario Zechner
ec50ede6c2 Release 0.5.48 2025-10-26 21:23:06 +01:00
Mario Zechner
23be934a9a Relesae 0.5.47 2025-10-26 00:45:52 +02:00
Mario Zechner
ef09efaac9 Fix XLSX dependency 2025-10-22 13:09:18 +02:00
Mario Zechner
a94b19e1df Fix dependencies 2025-10-22 13:05:24 +02:00
Mario Zechner
2a7ccf0fcb Updates to prompts 2025-10-17 22:44:03 +02:00
Mario Zechner
ffc9be8867 Agent package + coding agent WIP, refactored web-ui prompts 2025-10-17 11:47:01 +02:00