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 -
|
|
3
|
-
*
|
|
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
|
|
29
|
+
private promptState;
|
|
23
30
|
constructor(writeStream: NodeJS.WriteStream, promptText?: string);
|
|
24
31
|
/**
|
|
25
|
-
* Update the prompt text
|
|
32
|
+
* Update the prompt text
|
|
26
33
|
*/
|
|
27
34
|
setPromptText(text: string): void;
|
|
28
35
|
/**
|
|
29
|
-
*
|
|
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
|
|
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
|
|
56
|
+
* Hide the prompt
|
|
42
57
|
*/
|
|
43
58
|
hide(): void;
|
|
44
59
|
/**
|
|
45
|
-
* Enable or disable
|
|
60
|
+
* Enable or disable
|
|
46
61
|
*/
|
|
47
62
|
setEnabled(enabled: boolean): void;
|
|
48
63
|
/**
|
|
49
|
-
* Clear
|
|
64
|
+
* Clear - no-op for minimal implementation
|
|
50
65
|
*/
|
|
51
66
|
clear(): void;
|
|
52
67
|
/**
|
|
53
|
-
*
|
|
68
|
+
* Build status line string
|
|
54
69
|
*/
|
|
55
|
-
private
|
|
70
|
+
private buildStatusLine;
|
|
56
71
|
/**
|
|
57
|
-
*
|
|
72
|
+
* Handle terminal resize - no-op for minimal implementation
|
|
58
73
|
*/
|
|
59
|
-
|
|
74
|
+
handleResize(): void;
|
|
60
75
|
/**
|
|
61
|
-
*
|
|
76
|
+
* Dispose
|
|
62
77
|
*/
|
|
63
|
-
|
|
64
|
-
|
|
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
|
-
*
|
|
89
|
+
* Initialize readline interface
|
|
67
90
|
*/
|
|
68
|
-
|
|
91
|
+
init(input: NodeJS.ReadStream, output: NodeJS.WriteStream): readline.Interface;
|
|
69
92
|
/**
|
|
70
|
-
*
|
|
93
|
+
* Set prompt text
|
|
71
94
|
*/
|
|
72
|
-
|
|
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
|
|
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 -
|
|
3
|
-
*
|
|
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
|
-
|
|
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
|
|
31
|
+
* Update the prompt text
|
|
27
32
|
*/
|
|
28
33
|
setPromptText(text) {
|
|
29
34
|
this.promptText = text;
|
|
30
|
-
this.render();
|
|
31
35
|
}
|
|
32
36
|
/**
|
|
33
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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
|
|
85
|
+
* Clear - no-op for minimal implementation
|
|
75
86
|
*/
|
|
76
87
|
clear() {
|
|
77
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
114
|
+
// Readline handles resize
|
|
152
115
|
}
|
|
153
116
|
/**
|
|
154
|
-
* Dispose
|
|
117
|
+
* Dispose
|
|
155
118
|
*/
|
|
156
119
|
dispose() {
|
|
157
|
-
|
|
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":"AAAA
|
|
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
|
-
"description": "
|
|
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
|
-
"
|
|
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",
|