Terminal Component

Terminal Component

The Terminal Component provides command processing and interactive shell capabilities within the middleware tree.

Features

  • Command parsing and execution
  • Input/output buffering
  • Command history
  • Tab completion
  • ANSI color support

XAML Configuration

<TerminalComponent Name="Terminal" 
                   Path=":terminal"
                   BufferSize="1024"
                   HistorySize="100"
                   Prompt="> "
                   onCommand="handleCommand"
                   onError="handleError">
    
    <!-- Command processors -->
    <CommandProcessor Name="FileSystem" />
    <CommandProcessor Name="Network" />
</TerminalComponent>

Implementation

class TerminalComponent extends CoreElement {
    private history: string[] = [];
    private buffer: string = "";
    
    constructor() {
        super();
        this.properties.set("bufferSize", 1024);
        this.properties.set("historySize", 100);
        this.properties.set("prompt", "> ");
    }

    async handleEvent(event: MiddlewareEvent): Promise<void> {
        if (event.type === "input") {
            this.buffer += event.data.text;
            
            if (this.buffer.endsWith("\n")) {
                const command = this.buffer.trim();
                this.history.push(command);
                
                if (this.history.length > this.properties.get("historySize")) {
                    this.history.shift();
                }
                
                await this.routeEvent(new MiddlewareEvent("command", {
                    command,
                    history: this.history
                }));
                
                this.buffer = "";
            }
        }
    }
}

WPF Integration

The WPF interface provides:

  • Interactive terminal window
  • Command history browsing
  • Output formatting
  • Color scheme customization

Best Practices

  1. Command Processing

    • Validate input thoroughly
    • Handle long-running commands
    • Provide command completion
  2. Output Management

    • Use appropriate buffer sizes
    • Handle overflow gracefully
    • Format output consistently
  3. User Experience

    • Provide clear prompts
    • Support command history
    • Implement tab completion