Terminal-based AI coding agent with interactive TUI for autonomous code generation.

Features:
  - Interactive TUI with React/Ink
  - Autonomous agent with tool calls (bash, read, write, edit, glob, grep)
  - Permission system with pattern-based rules
  - Session management with auto-compaction
  - Dual providers: GitHub Copilot and Ollama
  - MCP server integration
  - Todo panel and theme system
  - Streaming responses
  - GitHub-compatible project context
This commit is contained in:
2026-01-27 23:33:06 -05:00
commit 0062e5d9d9
521 changed files with 66418 additions and 0 deletions

119
src/types/index.ts Normal file
View File

@@ -0,0 +1,119 @@
/**
* TypeScript type definitions for CodeTyper CLI
*/
export type AgentType = "coder" | "tester" | "refactorer" | "documenter";
export type IntentType =
| "ask"
| "code"
| "refactor"
| "fix"
| "document"
| "test"
| "explain";
export type Provider = "copilot" | "ollama";
export interface Config {
provider: Provider;
model?: string;
theme?: string;
maxIterations: number;
timeout: number;
protectedPaths: string[];
systemPrompt?: string;
cascadeEnabled?: boolean;
}
export interface IntentRequest {
prompt: string;
context?: string;
files?: string[];
}
export interface IntentResponse {
intent: IntentType;
confidence: number;
reasoning: string;
needsClarification: boolean;
clarificationQuestions?: string[];
}
export interface PlanStep {
id: string;
type: "read" | "edit" | "create" | "delete" | "execute";
description: string;
file?: string;
dependencies?: string[];
tool?: string;
args?: Record<string, unknown>;
}
export interface ExecutionPlan {
steps: PlanStep[];
intent: IntentType;
summary: string;
estimatedTime?: number;
}
export interface ValidationResult {
valid: boolean;
errors: string[];
warnings: string[];
protectedPaths: string[];
}
export interface ChatMessage {
role: "user" | "assistant" | "system";
content: string;
timestamp: number;
}
export interface ChatSession {
id: string;
agent: AgentType;
messages: ChatMessage[];
contextFiles: string[];
createdAt: number;
updatedAt: number;
}
export interface CommandOptions {
agent?: AgentType;
model?: string;
files?: string[];
dryRun?: boolean;
maxIterations?: number;
autoApprove?: boolean;
task?: string;
prompt?: string;
context?: string;
intent?: IntentType;
output?: string;
planFile?: string;
action?: string;
key?: string;
value?: string;
}
export interface ToolResult {
success: boolean;
output?: string;
error?: string;
files?: string[];
}
export interface FileEdit {
file: string;
search: string;
replace: string;
description?: string;
}
export interface TerminalSpinner {
start(text: string): void;
succeed(text: string): void;
fail(text: string): void;
stop(): void;
}