erosolar-cli 1.7.227 → 1.7.228

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +148 -22
  2. package/dist/core/aiFlowOptimizer.d.ts +26 -0
  3. package/dist/core/aiFlowOptimizer.d.ts.map +1 -0
  4. package/dist/core/aiFlowOptimizer.js +31 -0
  5. package/dist/core/aiFlowOptimizer.js.map +1 -0
  6. package/dist/core/aiOptimizationEngine.d.ts +158 -0
  7. package/dist/core/aiOptimizationEngine.d.ts.map +1 -0
  8. package/dist/core/aiOptimizationEngine.js +428 -0
  9. package/dist/core/aiOptimizationEngine.js.map +1 -0
  10. package/dist/core/aiOptimizationIntegration.d.ts +93 -0
  11. package/dist/core/aiOptimizationIntegration.d.ts.map +1 -0
  12. package/dist/core/aiOptimizationIntegration.js +250 -0
  13. package/dist/core/aiOptimizationIntegration.js.map +1 -0
  14. package/dist/core/enhancedErrorRecovery.d.ts +100 -0
  15. package/dist/core/enhancedErrorRecovery.d.ts.map +1 -0
  16. package/dist/core/enhancedErrorRecovery.js +345 -0
  17. package/dist/core/enhancedErrorRecovery.js.map +1 -0
  18. package/dist/mcp/sseClient.d.ts.map +1 -1
  19. package/dist/mcp/sseClient.js +18 -9
  20. package/dist/mcp/sseClient.js.map +1 -1
  21. package/dist/plugins/tools/build/buildPlugin.d.ts +6 -0
  22. package/dist/plugins/tools/build/buildPlugin.d.ts.map +1 -1
  23. package/dist/plugins/tools/build/buildPlugin.js +10 -4
  24. package/dist/plugins/tools/build/buildPlugin.js.map +1 -1
  25. package/dist/shell/claudeCodeStreamHandler.d.ts +145 -0
  26. package/dist/shell/claudeCodeStreamHandler.d.ts.map +1 -0
  27. package/dist/shell/claudeCodeStreamHandler.js +322 -0
  28. package/dist/shell/claudeCodeStreamHandler.js.map +1 -0
  29. package/dist/shell/inputQueueManager.d.ts +144 -0
  30. package/dist/shell/inputQueueManager.d.ts.map +1 -0
  31. package/dist/shell/inputQueueManager.js +290 -0
  32. package/dist/shell/inputQueueManager.js.map +1 -0
  33. package/dist/shell/interactiveShell.d.ts +2 -2
  34. package/dist/shell/interactiveShell.d.ts.map +1 -1
  35. package/dist/shell/interactiveShell.js +12 -12
  36. package/dist/shell/interactiveShell.js.map +1 -1
  37. package/dist/shell/streamingOutputManager.d.ts +115 -0
  38. package/dist/shell/streamingOutputManager.d.ts.map +1 -0
  39. package/dist/shell/streamingOutputManager.js +225 -0
  40. package/dist/shell/streamingOutputManager.js.map +1 -0
  41. package/dist/shell/terminalInput.d.ts +45 -19
  42. package/dist/shell/terminalInput.d.ts.map +1 -1
  43. package/dist/shell/terminalInput.js +262 -120
  44. package/dist/shell/terminalInput.js.map +1 -1
  45. package/dist/shell/terminalInputAdapter.d.ts +8 -6
  46. package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
  47. package/dist/shell/terminalInputAdapter.js +12 -6
  48. package/dist/shell/terminalInputAdapter.js.map +1 -1
  49. package/dist/ui/persistentPrompt.d.ts +50 -0
  50. package/dist/ui/persistentPrompt.d.ts.map +1 -0
  51. package/dist/ui/persistentPrompt.js +92 -0
  52. package/dist/ui/persistentPrompt.js.map +1 -0
  53. package/dist/ui/theme.d.ts.map +1 -1
  54. package/dist/ui/theme.js +8 -6
  55. package/dist/ui/theme.js.map +1 -1
  56. package/dist/ui/unified/layout.d.ts.map +1 -1
  57. package/dist/ui/unified/layout.js +26 -13
  58. package/dist/ui/unified/layout.js.map +1 -1
  59. package/package.json +1 -1
package/README.md CHANGED
@@ -1,47 +1,173 @@
1
1
  # erosolar-cli
2
2
 
3
- Unified command-line agent with a single, persistent chat box pinned to the bottom of every session. Output streams scroll above it while the prompt and status controls stay anchored.
3
+ ## AI Coding Agent Comparison
4
4
 
5
- ## Highlights
6
- - One chat box, always on the bottom during the entire session (idle or streaming).
7
- - Shared control bar for status, verify/build toggle, auto-continue, and context gauge.
8
- - Works with OpenAI, Anthropic, Google, xAI, DeepSeek, and local Ollama using the same UI contract.
5
+ | Agent | Screenshot |
6
+ |-------|------------|
7
+ | **Claude Code** | ![Claude](https://erosolar-public-assets.s3.amazonaws.com/images/Claude.png) |
8
+ | **OpenAI Codex CLI** | ![Codex](https://erosolar-public-assets.s3.amazonaws.com/images/Codex.png) |
9
+ | **Erosolar CLI** | ![Erosolar](https://erosolar-public-assets.s3.amazonaws.com/images/Erosolar.png) |
10
+
11
+ ### Current State
12
+
13
+ **Claude Code** currently delivers the best results for creating complete projects from scratch. It successfully built a CS50 final project end-to-end and launched it without manual intervention.
14
+
15
+ **OpenAI Codex CLI** provides solid coding assistance but requires more human guidance for complex multi-step project creation.
16
+
17
+ **Erosolar CLI** is actively being developed by Bo Shang to match and eventually exceed these capabilities. The goal is to achieve the same level of autonomous project creation, constrained only by the underlying model's limits—not by the CLI tooling itself. This work is ongoing.
18
+
19
+ ---
20
+
21
+ ## Overview
22
+
23
+ **Erosolar CLI** is a sophisticated, unified AI coding agent framework for the command line that provides multi-provider AI support with advanced code intelligence and security research capabilities.
24
+
25
+ ### Core Purpose
26
+
27
+ 1. **Universal AI Interface**: Acts as a model-agnostic CLI that works with any major AI provider (OpenAI, Anthropic, Google, xAI, DeepSeek, Ollama) - you bring your own API keys
28
+
29
+ 2. **Advanced Code Intelligence**: Provides comprehensive coding capabilities including:
30
+ - File system operations (read/write/edit)
31
+ - Code search and analysis
32
+ - Bash command execution
33
+ - Git operations
34
+ - Browser automation
35
+ - Cloud deployment
36
+ - Testing and validation
37
+
38
+ 3. **Security Research Toolkit**: Includes sophisticated security testing and research capabilities for:
39
+ - Penetration testing
40
+ - Vulnerability scanning
41
+ - Threat intelligence
42
+ - Red team operations
43
+ - Counter-intelligence simulations
44
+
45
+ ### Key Features
46
+
47
+ - **Multi-Provider Support** - Switch between OpenAI, Anthropic, Google, xAI, DeepSeek, or run locally with Ollama
48
+ - **25+ Built-in Models** - From GPT-5 to Claude Opus to Gemini Pro to local Llama models
49
+ - **Advanced Code Intelligence** - Full file system access, git operations, bash command execution
50
+ - **Browser Automation** - Web scraping, form filling, authentication, testing
51
+ - **Cloud Deployment** - Firebase, Vercel, Netlify, AWS, GCP, Azure support
52
+ - **Security Research** - Penetration testing, vulnerability scanning, threat intelligence
53
+ - **Testing Framework** - Unit tests, E2E tests, accessibility tests, performance audits
54
+ - **Email Automation** - SMTP email sending, batch campaigns, template personalization
55
+
56
+ ---
57
+
58
+ ## Installation
9
59
 
10
- ## Install
11
60
  ```bash
12
61
  npm install -g erosolar-cli
13
- # or
62
+ ```
63
+
64
+ Or use npx:
65
+
66
+ ```bash
14
67
  npx erosolar-cli
15
68
  ```
16
69
 
17
- ## Run
70
+ ---
71
+
72
+ ## Quick Start
73
+
18
74
  ```bash
19
- # default profile
75
+ # Basic usage
20
76
  erosolar
21
77
 
22
- # choose model/provider
78
+ # With specific provider and model
23
79
  erosolar --provider openai --model gpt-4o
24
80
 
25
- # restore last session
81
+ # With agent profile
82
+ erosolar --profile erosolar-code
83
+
84
+ # Resume last session
26
85
  erosolar --restore
27
86
  ```
28
87
 
29
- ## Configure
30
- Set the keys you need before launching:
88
+ ---
89
+
90
+ ## Configuration
91
+
92
+ Set your API keys as environment variables:
93
+
31
94
  ```bash
32
- OPENAI_API_KEY=...
33
- ANTHROPIC_API_KEY=...
95
+ # OpenAI
96
+ OPENAI_API_KEY=sk-...
97
+
98
+ # Anthropic
99
+ ANTHROPIC_API_KEY=sk-ant-...
100
+
101
+ # Google AI
34
102
  GOOGLE_API_KEY=...
103
+
104
+ # xAI
35
105
  XAI_API_KEY=...
106
+
107
+ # DeepSeek
36
108
  DEEPSEEK_API_KEY=...
109
+
110
+ # Ollama (local)
37
111
  OLLAMA_BASE_URL=http://localhost:11434
38
112
  ```
39
113
 
40
- ## Options
41
- - `--provider <name>` pick the AI provider
42
- - `--model <name>` choose a model
43
- - `--profile <name>` switch agent profiles (e.g., `erosolar-code`)
44
- - `--restore` resume the previous session
45
- - `--version` show the CLI version
114
+ ---
115
+
116
+ ## Usage
117
+
118
+ ```bash
119
+ erosolar [options]
120
+
121
+ Options:
122
+ --provider <name> AI provider (openai, anthropic, google, xai, deepseek, ollama)
123
+ --model <name> Specific model to use
124
+ --profile <name> Agent profile (general, erosolar-code)
125
+ --restore Resume last session
126
+ --version Show version
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Agent Profiles
132
+
133
+ Erosolar CLI supports multiple agent profiles optimized for different tasks:
134
+
135
+ - **`erosolar-code`**: Coding specialist optimized for fast, deterministic edits
136
+ - **`general`**: General-purpose agent for research and analysis
137
+
138
+ ---
139
+
140
+ ## Development Status
141
+
142
+ Erosolar CLI is actively being developed to achieve production readiness. Current focus areas include:
143
+
144
+ - ✅ Multi-provider AI support
145
+ - ✅ Advanced code intelligence
146
+ - ✅ Security research capabilities
147
+ - 🔄 Performance optimization
148
+ - 🔄 Enterprise features
149
+ - 🔄 Enhanced reliability
150
+
151
+ See [CRITICAL_ENHANCEMENTS.md](./CRITICAL_ENHANCEMENTS.md) for detailed roadmap.
152
+
153
+ ---
154
+
155
+ ## License
156
+
157
+ MIT
158
+
159
+ ---
160
+
161
+ ## Links
162
+
163
+ - [npm Package](https://www.npmjs.com/package/erosolar-cli)
164
+ - [GitHub](https://github.com/ErosolarAI/erosolar-by-bo)
165
+ - [Issues](https://github.com/ErosolarAI/erosolar-by-bo/issues)
166
+
167
+ ---
168
+
169
+ ## Author
170
+
171
+ Built by **Bo Shang** with assistance from Claude Code and OpenAI Codex CLI. A special thanks goes to Samantha Briasco-Stewart (erosolar) for motivating Bo to code.
46
172
 
47
- MIT licensed.
173
+ And an apology to Samantha for all of Bo's mistakes.
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Lightweight AI flow optimizer stub.
3
+ */
4
+ export interface AIFlowMetrics {
5
+ latencyMs: number;
6
+ toolCalls: number;
7
+ tokenUsage?: number;
8
+ parallelExecution?: boolean;
9
+ }
10
+ export interface OptimizedFlow {
11
+ originalMetrics: AIFlowMetrics;
12
+ optimizedMetrics: AIFlowMetrics;
13
+ suggestions: string[];
14
+ }
15
+ export interface OptimizationInsights {
16
+ patterns: string[];
17
+ averageLatency?: number;
18
+ }
19
+ export declare class AIFlowOptimizer {
20
+ constructor(_options?: {
21
+ workingDir?: string;
22
+ });
23
+ analyzeFlow(flowData: any): OptimizedFlow;
24
+ getOptimizationInsights(): OptimizationInsights;
25
+ }
26
+ //# sourceMappingURL=aiFlowOptimizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiFlowOptimizer.d.ts","sourceRoot":"","sources":["../../src/core/aiFlowOptimizer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,aAAa,CAAC;IAC/B,gBAAgB,EAAE,aAAa,CAAC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,eAAe;gBAEd,QAAQ,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO;IAElD,WAAW,CAAC,QAAQ,EAAE,GAAG,GAAG,aAAa;IAoBzC,uBAAuB,IAAI,oBAAoB;CAMhD"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Lightweight AI flow optimizer stub.
3
+ */
4
+ export class AIFlowOptimizer {
5
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
6
+ constructor(_options = {}) { }
7
+ analyzeFlow(flowData) {
8
+ const baseline = {
9
+ latencyMs: Number(flowData?.latencyMs ?? 1000),
10
+ toolCalls: Number(flowData?.toolCalls ?? 1),
11
+ tokenUsage: Number(flowData?.tokenUsage ?? 0),
12
+ parallelExecution: Boolean(flowData?.parallelExecution ?? false),
13
+ };
14
+ const optimized = {
15
+ ...baseline,
16
+ latencyMs: Math.max(100, Math.round(baseline.latencyMs * 0.9)),
17
+ };
18
+ return {
19
+ originalMetrics: baseline,
20
+ optimizedMetrics: optimized,
21
+ suggestions: ['Enable parallel execution where safe', 'Trim redundant tool calls'],
22
+ };
23
+ }
24
+ getOptimizationInsights() {
25
+ return {
26
+ patterns: ['stub-optimization-pattern'],
27
+ averageLatency: undefined,
28
+ };
29
+ }
30
+ }
31
+ //# sourceMappingURL=aiFlowOptimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiFlowOptimizer.js","sourceRoot":"","sources":["../../src/core/aiFlowOptimizer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH,MAAM,OAAO,eAAe;IAC1B,6DAA6D;IAC7D,YAAY,WAAoC,EAAE,IAAG,CAAC;IAEtD,WAAW,CAAC,QAAa;QACvB,MAAM,QAAQ,GAAkB;YAC9B,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC;YAC9C,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,CAAC;YAC3C,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,IAAI,CAAC,CAAC;YAC7C,iBAAiB,EAAE,OAAO,CAAC,QAAQ,EAAE,iBAAiB,IAAI,KAAK,CAAC;SACjE,CAAC;QAEF,MAAM,SAAS,GAAkB;YAC/B,GAAG,QAAQ;YACX,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;SAC/D,CAAC;QAEF,OAAO;YACL,eAAe,EAAE,QAAQ;YACzB,gBAAgB,EAAE,SAAS;YAC3B,WAAW,EAAE,CAAC,sCAAsC,EAAE,2BAA2B,CAAC;SACnF,CAAC;IACJ,CAAC;IAED,uBAAuB;QACrB,OAAO;YACL,QAAQ,EAAE,CAAC,2BAA2B,CAAC;YACvC,cAAc,EAAE,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * AI Optimization Engine - Advanced Decision Making and Error Recovery
3
+ *
4
+ * Provides intelligent problem-solving with:
5
+ * - Optimal solution path analysis
6
+ * - Multi-strategy decision making
7
+ * - Intelligent error recovery
8
+ * - Performance optimization
9
+ * - Context-aware reasoning
10
+ *
11
+ * @license MIT
12
+ * @author Bo Shang
13
+ */
14
+ export declare enum ProblemComplexity {
15
+ TRIVIAL = "trivial",// Single-step, deterministic solution
16
+ SIMPLE = "simple",// 2-3 steps, clear path
17
+ MODERATE = "moderate",// Multiple steps, some uncertainty
18
+ COMPLEX = "complex",// Complex dependencies, multiple approaches
19
+ VERY_COMPLEX = "very_complex"
20
+ }
21
+ export declare enum SolutionStrategy {
22
+ DIRECT = "direct",// Straightforward implementation
23
+ INCREMENTAL = "incremental",// Step-by-step with validation
24
+ DEFENSIVE = "defensive",// Conservative with fallbacks
25
+ OPTIMISTIC = "optimistic",// Aggressive with rollback
26
+ ADAPTIVE = "adaptive",// Dynamic strategy selection
27
+ EXPLORATORY = "exploratory"
28
+ }
29
+ export interface ProblemAnalysis {
30
+ complexity: ProblemComplexity;
31
+ riskLevel: 'low' | 'medium' | 'high';
32
+ dependencies: string[];
33
+ constraints: string[];
34
+ successCriteria: string[];
35
+ failurePoints: string[];
36
+ optimalStrategy: SolutionStrategy;
37
+ alternativeStrategies: SolutionStrategy[];
38
+ estimatedSteps: number;
39
+ confidence: number;
40
+ }
41
+ export interface SolutionPath {
42
+ strategy: SolutionStrategy;
43
+ steps: SolutionStep[];
44
+ validationPoints: ValidationPoint[];
45
+ rollbackPlan: RollbackStep[];
46
+ estimatedTime: number;
47
+ successProbability: number;
48
+ }
49
+ export interface SolutionStep {
50
+ id: string;
51
+ action: string;
52
+ tool?: string;
53
+ parameters?: Record<string, unknown>;
54
+ validation?: string;
55
+ fallback?: string;
56
+ }
57
+ export interface ValidationPoint {
58
+ stepId: string;
59
+ validationType: 'tool_output' | 'file_content' | 'test_result' | 'user_confirmation';
60
+ expectedPattern?: string;
61
+ failureAction: 'retry' | 'fallback' | 'abort';
62
+ }
63
+ export interface RollbackStep {
64
+ stepId: string;
65
+ action: string;
66
+ tool?: string;
67
+ parameters?: Record<string, unknown>;
68
+ }
69
+ export interface ErrorRecoveryStrategy {
70
+ errorType: string;
71
+ errorPattern: RegExp;
72
+ recoveryActions: RecoveryAction[];
73
+ priority: 'immediate' | 'high' | 'medium' | 'low';
74
+ autoRecoverable: boolean;
75
+ }
76
+ export interface RecoveryAction {
77
+ action: string;
78
+ tool?: string;
79
+ parameters?: Record<string, unknown>;
80
+ validation?: string;
81
+ successProbability: number;
82
+ }
83
+ export declare class AIOptimizationEngine {
84
+ private readonly workingDir;
85
+ private readonly performanceThresholds;
86
+ constructor(options?: {
87
+ workingDir?: string;
88
+ });
89
+ /**
90
+ * Analyze problem and determine optimal solution strategy
91
+ */
92
+ analyzeProblem(problemDescription: string, context?: {
93
+ filesRead?: string[];
94
+ toolsUsed?: string[];
95
+ errorsEncountered?: string[];
96
+ complexityHints?: string[];
97
+ }): ProblemAnalysis;
98
+ /**
99
+ * Generate optimal solution path with validation and rollback
100
+ */
101
+ generateSolutionPath(analysis: ProblemAnalysis, context: {
102
+ availableTools: string[];
103
+ currentState: Record<string, unknown>;
104
+ userPreferences?: {
105
+ riskTolerance: 'low' | 'medium' | 'high';
106
+ validationPreference: 'minimal' | 'balanced' | 'thorough';
107
+ };
108
+ }): SolutionPath;
109
+ /**
110
+ * Intelligent error recovery with multiple strategies
111
+ */
112
+ recoverFromError(error: string, context: {
113
+ currentStep: SolutionStep;
114
+ analysis: ProblemAnalysis;
115
+ attemptedSolutions: string[];
116
+ availableTools: string[];
117
+ }): RecoveryAction[];
118
+ /**
119
+ * Optimize AI flow for efficiency and effectiveness
120
+ */
121
+ optimizeAIFlow(currentFlow: {
122
+ toolCalls: Array<{
123
+ tool: string;
124
+ parameters: Record<string, unknown>;
125
+ }>;
126
+ contextUsage: {
127
+ filesRead: number;
128
+ searches: number;
129
+ edits: number;
130
+ };
131
+ validationRounds: number;
132
+ }): {
133
+ optimizedFlow: Array<{
134
+ tool: string;
135
+ parameters: Record<string, unknown>;
136
+ }>;
137
+ efficiencyGains: number;
138
+ recommendations: string[];
139
+ };
140
+ private assessComplexity;
141
+ private assessRisk;
142
+ private extractDependencies;
143
+ private extractConstraints;
144
+ private extractSuccessCriteria;
145
+ private identifyFailurePoints;
146
+ private selectOptimalStrategy;
147
+ private getAlternativeStrategies;
148
+ private estimateSteps;
149
+ private calculateConfidence;
150
+ private generateSteps;
151
+ private getErrorRecoveryStrategies;
152
+ private isStrategyApplicable;
153
+ private detectSequentialReads;
154
+ private mergeSequentialReads;
155
+ private calculateContextEfficiency;
156
+ private calculateEfficiencyGains;
157
+ }
158
+ //# sourceMappingURL=aiOptimizationEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiOptimizationEngine.d.ts","sourceRoot":"","sources":["../../src/core/aiOptimizationEngine.ts"],"names":[],"mappings":"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"}