Skip to main content
Glama
terminal.py3.24 kB
""" Pydantic models for terminal API endpoints. """ from datetime import datetime from typing import List, Optional from pydantic import BaseModel, Field class TerminalCreate(BaseModel): """Request model for creating a new terminal.""" rows: int = Field(default=24, ge=1, le=200, description="Terminal height in rows") cols: int = Field( default=80, ge=1, le=500, description="Terminal width in columns" ) shell_command: Optional[List[str]] = Field( default=None, description="Custom shell command" ) class CursorPosition(BaseModel): """Cursor position information.""" row: int = Field(description="Cursor row (zero-indexed)") col: int = Field(description="Cursor column (zero-indexed)") class TerminalSize(BaseModel): """Terminal size information.""" rows: int = Field(description="Terminal height") cols: int = Field(description="Terminal width") class ViewRange(BaseModel): """View range information.""" start_row: int = Field(description="Starting row of the view") end_row: int = Field(description="Ending row of the view") class TerminalSnapshot(BaseModel): """Terminal visual snapshot.""" terminal_id: str = Field(description="Terminal session ID") display: str = Field(description="Current terminal display as text") lines: List[str] = Field(description="Display lines as list") cursor: CursorPosition = Field(description="Cursor position") size: TerminalSize = Field(description="Terminal size") is_alive: bool = Field(description="Whether terminal is running") created_at: str = Field(description="Terminal creation timestamp") view_mode: Optional[str] = Field( default="full", description="View mode used for this snapshot" ) range: Optional[ViewRange] = Field( default=None, description="Row range included in this view" ) class TerminalResponse(BaseModel): """Response model for terminal operations.""" success: bool = Field(description="Operation success status") terminal_id: str = Field(description="Terminal session ID") message: Optional[str] = Field(default=None, description="Response message") class TerminalInfo(BaseModel): """Terminal session information.""" id: str = Field(description="Terminal session ID") rows: int = Field(description="Terminal height") cols: int = Field(description="Terminal width") is_alive: bool = Field(description="Whether terminal is running") created_at: str = Field(description="Creation timestamp") class TerminalListResponse(BaseModel): """Response model for listing terminals.""" success: bool = Field(description="Operation success status") terminals: List[TerminalInfo] = Field(description="List of active terminals") count: int = Field(description="Number of active terminals") class TerminalInput(BaseModel): """Request model for sending input to terminal.""" data: str = Field(description="Input data to send to terminal") class TerminalResize(BaseModel): """Request model for resizing terminal.""" rows: int = Field(ge=1, le=200, description="New terminal height") cols: int = Field(ge=1, le=500, description="New terminal width")

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/alejoair/mcp-terminal'

If you have feedback or need assistance with the MCP directory API, please join our Discord server