erosolar-cli 1.1.4 → 1.1.6

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.
@@ -1,7 +1,12 @@
1
1
  /**
2
- * PersistentPrompt - Manages a persistent chat box at the bottom of the terminal
3
- * Similar to Claude Code's interface with separator lines and status bar
2
+ * PersistentPrompt - Minimal, stable chat input at bottom of terminal
3
+ *
4
+ * Design principles:
5
+ * - Simple: No complex cursor manipulation or multi-line rendering
6
+ * - Stable: Uses standard readline without fighting it
7
+ * - Reliable: Clear separation between output area and input area
4
8
  */
9
+ import * as readline from 'node:readline';
5
10
  export interface PromptState {
6
11
  userInput: string;
7
12
  cursorPosition: number;
@@ -13,20 +18,26 @@ export interface StatusBarState {
13
18
  acceptEditsEnabled?: boolean;
14
19
  message?: string;
15
20
  }
21
+ /**
22
+ * Minimal prompt manager that doesn't fight with readline
23
+ */
16
24
  export declare class PersistentPrompt {
17
25
  private writeStream;
18
- private promptState;
19
- private statusBarState;
20
26
  private promptText;
27
+ private statusBarState;
21
28
  private isEnabled;
22
- private lastRenderedLines;
29
+ private promptState;
23
30
  constructor(writeStream: NodeJS.WriteStream, promptText?: string);
24
31
  /**
25
- * Update the prompt text (e.g., profile name)
32
+ * Update the prompt text
26
33
  */
27
34
  setPromptText(text: string): void;
28
35
  /**
29
- * Update user input and cursor position
36
+ * Get the formatted prompt string
37
+ */
38
+ getPrompt(): string;
39
+ /**
40
+ * Update user input state (for tracking only - readline handles display)
30
41
  */
31
42
  updateInput(input: string, cursorPos: number): void;
32
43
  /**
@@ -34,41 +45,69 @@ export declare class PersistentPrompt {
34
45
  */
35
46
  updateStatusBar(state: Partial<StatusBarState>): void;
36
47
  /**
37
- * Show the persistent prompt
48
+ * Show a status line above the prompt (call before readline.prompt())
49
+ */
50
+ showStatus(): void;
51
+ /**
52
+ * Show the prompt
38
53
  */
39
54
  show(): void;
40
55
  /**
41
- * Hide the persistent prompt
56
+ * Hide the prompt
42
57
  */
43
58
  hide(): void;
44
59
  /**
45
- * Enable or disable the prompt
60
+ * Enable or disable
46
61
  */
47
62
  setEnabled(enabled: boolean): void;
48
63
  /**
49
- * Clear the persistent prompt area
64
+ * Clear - no-op for minimal implementation
50
65
  */
51
66
  clear(): void;
52
67
  /**
53
- * Render the persistent prompt
68
+ * Build status line string
54
69
  */
55
- private render;
70
+ private buildStatusLine;
56
71
  /**
57
- * Strip ANSI escape codes to get visible text length
72
+ * Handle terminal resize - no-op for minimal implementation
58
73
  */
59
- private stripAnsi;
74
+ handleResize(): void;
60
75
  /**
61
- * Build the prompt line with user input
76
+ * Dispose
62
77
  */
63
- private buildPromptLine;
64
- private buildStatusLine;
78
+ dispose(): void;
79
+ }
80
+ /**
81
+ * Simple input box that wraps readline with stable behavior
82
+ */
83
+ export declare class SimpleInputBox {
84
+ private rl;
85
+ private promptText;
86
+ private statusText;
87
+ constructor(promptText?: string);
65
88
  /**
66
- * Handle terminal resize
89
+ * Initialize readline interface
67
90
  */
68
- handleResize(): void;
91
+ init(input: NodeJS.ReadStream, output: NodeJS.WriteStream): readline.Interface;
69
92
  /**
70
- * Dispose and clean up
93
+ * Set prompt text
71
94
  */
72
- dispose(): void;
95
+ setPrompt(text: string): void;
96
+ /**
97
+ * Set status text (shown above prompt on next prompt())
98
+ */
99
+ setStatus(text: string): void;
100
+ /**
101
+ * Show prompt with optional status line
102
+ */
103
+ prompt(preserveCursor?: boolean): void;
104
+ /**
105
+ * Get readline interface
106
+ */
107
+ getInterface(): readline.Interface | null;
108
+ /**
109
+ * Close and cleanup
110
+ */
111
+ close(): void;
73
112
  }
74
113
  //# sourceMappingURL=persistentPrompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistentPrompt.d.ts","sourceRoot":"","sources":["../../src/ui/persistentPrompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,iBAAiB,CAAa;gBAGpC,WAAW,EAAE,MAAM,CAAC,WAAW,EAC/B,UAAU,GAAE,MAAa;IAc3B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKjC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAMnD;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAKrD;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IASlC;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,OAAO,CAAC,MAAM;IAmCd;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"persistentPrompt.d.ts","sourceRoot":"","sources":["../../src/ui/persistentPrompt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAG1C,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,WAAW,CAAc;gBAErB,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,UAAU,GAAE,MAAa;IAWtE;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKnD;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAIrD;;OAEG;IACH,UAAU,IAAI,IAAI;IASlB;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIlC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAc;gBAEpB,UAAU,GAAE,MAAa;IAIrC;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC,SAAS;IAU9E;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO7B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI;IAYtC;;OAEG;IACH,YAAY,IAAI,QAAQ,CAAC,SAAS,GAAG,IAAI;IAIzC;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd"}
@@ -1,132 +1,95 @@
1
1
  /**
2
- * PersistentPrompt - Manages a persistent chat box at the bottom of the terminal
3
- * Similar to Claude Code's interface with separator lines and status bar
2
+ * PersistentPrompt - Minimal, stable chat input at bottom of terminal
3
+ *
4
+ * Design principles:
5
+ * - Simple: No complex cursor manipulation or multi-line rendering
6
+ * - Stable: Uses standard readline without fighting it
7
+ * - Reliable: Clear separation between output area and input area
4
8
  */
9
+ import * as readline from 'node:readline';
5
10
  import { theme } from './theme.js';
11
+ /**
12
+ * Minimal prompt manager that doesn't fight with readline
13
+ */
6
14
  export class PersistentPrompt {
7
15
  writeStream;
8
- promptState;
9
- statusBarState;
10
16
  promptText;
17
+ statusBarState;
11
18
  isEnabled = true;
12
- lastRenderedLines = 0;
19
+ promptState;
13
20
  constructor(writeStream, promptText = '> ') {
14
21
  this.writeStream = writeStream;
15
22
  this.promptText = promptText;
23
+ this.statusBarState = {};
16
24
  this.promptState = {
17
25
  userInput: '',
18
26
  cursorPosition: 0,
19
27
  isVisible: true,
20
28
  };
21
- this.statusBarState = {
22
- acceptEditsEnabled: true,
23
- };
24
29
  }
25
30
  /**
26
- * Update the prompt text (e.g., profile name)
31
+ * Update the prompt text
27
32
  */
28
33
  setPromptText(text) {
29
34
  this.promptText = text;
30
- this.render();
31
35
  }
32
36
  /**
33
- * Update user input and cursor position
37
+ * Get the formatted prompt string
38
+ */
39
+ getPrompt() {
40
+ return this.promptText;
41
+ }
42
+ /**
43
+ * Update user input state (for tracking only - readline handles display)
34
44
  */
35
45
  updateInput(input, cursorPos) {
36
46
  this.promptState.userInput = input;
37
47
  this.promptState.cursorPosition = cursorPos;
38
- this.render();
39
48
  }
40
49
  /**
41
50
  * Update status bar information
42
51
  */
43
52
  updateStatusBar(state) {
44
53
  this.statusBarState = { ...this.statusBarState, ...state };
45
- this.render();
46
54
  }
47
55
  /**
48
- * Show the persistent prompt
56
+ * Show a status line above the prompt (call before readline.prompt())
57
+ */
58
+ showStatus() {
59
+ if (!this.isEnabled)
60
+ return;
61
+ const status = this.buildStatusLine();
62
+ if (status) {
63
+ this.writeStream.write('\n' + status + '\n');
64
+ }
65
+ }
66
+ /**
67
+ * Show the prompt
49
68
  */
50
69
  show() {
51
70
  this.promptState.isVisible = true;
52
- this.render();
53
71
  }
54
72
  /**
55
- * Hide the persistent prompt
73
+ * Hide the prompt
56
74
  */
57
75
  hide() {
58
76
  this.promptState.isVisible = false;
59
- this.clear();
60
77
  }
61
78
  /**
62
- * Enable or disable the prompt
79
+ * Enable or disable
63
80
  */
64
81
  setEnabled(enabled) {
65
82
  this.isEnabled = enabled;
66
- if (!enabled) {
67
- this.clear();
68
- }
69
- else {
70
- this.render();
71
- }
72
83
  }
73
84
  /**
74
- * Clear the persistent prompt area
85
+ * Clear - no-op for minimal implementation
75
86
  */
76
87
  clear() {
77
- if (this.lastRenderedLines === 0)
78
- return;
79
- // Move cursor up and clear lines
80
- for (let i = 0; i < this.lastRenderedLines; i++) {
81
- this.writeStream.write('\x1b[A'); // Move up
82
- this.writeStream.write('\x1b[2K'); // Clear line
83
- }
84
- this.lastRenderedLines = 0;
85
- }
86
- /**
87
- * Render the persistent prompt
88
- */
89
- render() {
90
- if (!this.isEnabled || !this.promptState.isVisible) {
91
- return;
92
- }
93
- // Clear previous render
94
- this.clear();
95
- const lines = [];
96
- // Add empty line for spacing (no separator line to avoid wireframe appearance)
97
- lines.push('');
98
- const statusLine = this.buildStatusLine();
99
- if (statusLine) {
100
- lines.push(statusLine);
101
- }
102
- // Input line with prompt
103
- const promptLine = this.buildPromptLine();
104
- lines.push(promptLine);
105
- // Write all lines (no bottom separator to avoid conflicts)
106
- const output = lines.join('\n');
107
- this.writeStream.write(output);
108
- this.lastRenderedLines = lines.length;
109
- // Position cursor at input position
110
- const visiblePromptLength = this.stripAnsi(this.promptText).length;
111
- const cursorCol = visiblePromptLength + this.promptState.cursorPosition;
112
- // Move cursor to correct position: up to prompt line and to column
113
- this.writeStream.write(`\x1b[${this.lastRenderedLines - 1}A`); // Move up to prompt line
114
- this.writeStream.write(`\x1b[${cursorCol + 1}G`); // Move to column (1-indexed)
88
+ // Intentionally minimal - let readline handle clearing
115
89
  }
116
90
  /**
117
- * Strip ANSI escape codes to get visible text length
91
+ * Build status line string
118
92
  */
119
- stripAnsi(text) {
120
- return text.replace(/\u001B\[[0-?]*[ -/]*[@-~]/g, '');
121
- }
122
- /**
123
- * Build the prompt line with user input
124
- */
125
- buildPromptLine() {
126
- const prompt = theme.primary(this.promptText);
127
- const input = this.promptState.userInput;
128
- return `${prompt}${input}`;
129
- }
130
93
  buildStatusLine() {
131
94
  const parts = [];
132
95
  if (this.statusBarState.fileChanges) {
@@ -134,7 +97,7 @@ export class PersistentPrompt {
134
97
  }
135
98
  if (typeof this.statusBarState.contextUsage === 'number') {
136
99
  const remaining = Math.max(0, 100 - this.statusBarState.contextUsage);
137
- parts.push(`${remaining}%`);
100
+ parts.push(`${remaining}% context`);
138
101
  }
139
102
  if (this.statusBarState.message?.trim()) {
140
103
  parts.push(this.statusBarState.message.trim());
@@ -145,16 +108,82 @@ export class PersistentPrompt {
145
108
  return theme.ui.muted(parts.join(' • '));
146
109
  }
147
110
  /**
148
- * Handle terminal resize
111
+ * Handle terminal resize - no-op for minimal implementation
149
112
  */
150
113
  handleResize() {
151
- this.render();
114
+ // Readline handles resize
152
115
  }
153
116
  /**
154
- * Dispose and clean up
117
+ * Dispose
155
118
  */
156
119
  dispose() {
157
- this.clear();
120
+ // Nothing to clean up in minimal implementation
121
+ }
122
+ }
123
+ /**
124
+ * Simple input box that wraps readline with stable behavior
125
+ */
126
+ export class SimpleInputBox {
127
+ rl = null;
128
+ promptText;
129
+ statusText = '';
130
+ constructor(promptText = '> ') {
131
+ this.promptText = promptText;
132
+ }
133
+ /**
134
+ * Initialize readline interface
135
+ */
136
+ init(input, output) {
137
+ this.rl = readline.createInterface({
138
+ input,
139
+ output,
140
+ prompt: this.promptText,
141
+ terminal: true,
142
+ });
143
+ return this.rl;
144
+ }
145
+ /**
146
+ * Set prompt text
147
+ */
148
+ setPrompt(text) {
149
+ this.promptText = text;
150
+ if (this.rl) {
151
+ this.rl.setPrompt(text);
152
+ }
153
+ }
154
+ /**
155
+ * Set status text (shown above prompt on next prompt())
156
+ */
157
+ setStatus(text) {
158
+ this.statusText = text;
159
+ }
160
+ /**
161
+ * Show prompt with optional status line
162
+ */
163
+ prompt(preserveCursor) {
164
+ if (!this.rl)
165
+ return;
166
+ // Show status line if set
167
+ if (this.statusText) {
168
+ process.stdout.write('\n' + theme.ui.muted(this.statusText) + '\n');
169
+ this.statusText = '';
170
+ }
171
+ this.rl.prompt(preserveCursor);
172
+ }
173
+ /**
174
+ * Get readline interface
175
+ */
176
+ getInterface() {
177
+ return this.rl;
178
+ }
179
+ /**
180
+ * Close and cleanup
181
+ */
182
+ close() {
183
+ if (this.rl) {
184
+ this.rl.close();
185
+ this.rl = null;
186
+ }
158
187
  }
159
188
  }
160
189
  //# sourceMappingURL=persistentPrompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistentPrompt.js","sourceRoot":"","sources":["../../src/ui/persistentPrompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"persistentPrompt.js","sourceRoot":"","sources":["../../src/ui/persistentPrompt.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "erosolar-cli",
3
- "version": "1.1.4",
4
- "description": "Independent security research CLI for third-party, governed assessments and vulnerability discovery.",
3
+ "version": "1.1.6",
4
+ "description": "Unified AI Agent Framework - Multi-provider CLI with schema-driven tools, code intelligence, and Alpha Zero competitive RL",
5
5
  "main": "dist/bin/erosolar.js",
6
6
  "type": "module",
7
7
  "files": [
@@ -41,11 +41,16 @@
41
41
  },
42
42
  "keywords": [
43
43
  "cli",
44
- "codex",
45
- "openai",
46
44
  "ai",
47
45
  "agent",
48
- "productivity"
46
+ "llm",
47
+ "anthropic",
48
+ "openai",
49
+ "google",
50
+ "unified-schema",
51
+ "code-intelligence",
52
+ "alpha-zero",
53
+ "multi-provider"
49
54
  ],
50
55
  "author": "Independent Security Research Collective",
51
56
  "license": "MIT",