erosolar-cli 1.7.118 → 1.7.119
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.
- package/dist/core/agent.js +4 -4
- package/dist/core/agent.js.map +1 -1
- package/dist/shell/systemPrompt.d.ts.map +1 -1
- package/dist/shell/systemPrompt.js +3 -4
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/tools/editTools.d.ts.map +1 -1
- package/dist/tools/editTools.js +29 -6
- package/dist/tools/editTools.js.map +1 -1
- package/dist/tools/fileTools.d.ts.map +1 -1
- package/dist/tools/fileTools.js +2 -126
- package/dist/tools/fileTools.js.map +1 -1
- package/dist/ui/EnhancedPinnedChatBox.d.ts +2 -0
- package/dist/ui/EnhancedPinnedChatBox.d.ts.map +1 -0
- package/dist/ui/EnhancedPinnedChatBox.js +3 -0
- package/dist/ui/EnhancedPinnedChatBox.js.map +1 -0
- package/dist/ui/persistentPrompt.d.ts +27 -2
- package/dist/ui/persistentPrompt.d.ts.map +1 -1
- package/dist/ui/persistentPrompt.js +189 -70
- package/dist/ui/persistentPrompt.js.map +1 -1
- package/package.json +1 -1
- package/dist/shell/enhancedInteractiveShell.d.ts +0 -56
- package/dist/shell/enhancedInteractiveShell.d.ts.map +0 -1
- package/dist/shell/enhancedInteractiveShell.js +0 -110
- package/dist/shell/enhancedInteractiveShell.js.map +0 -1
- package/dist/shell/enhancedShellApp.d.ts +0 -25
- package/dist/shell/enhancedShellApp.d.ts.map +0 -1
- package/dist/shell/enhancedShellApp.js +0 -161
- package/dist/shell/enhancedShellApp.js.map +0 -1
- package/dist/ui/enhancedPinnedChatBox.d.ts +0 -171
- package/dist/ui/enhancedPinnedChatBox.d.ts.map +0 -1
- package/dist/ui/enhancedPinnedChatBox.js +0 -370
- package/dist/ui/enhancedPinnedChatBox.js.map +0 -1
- package/dist/ui/persistentChatBox.d.ts +0 -137
- package/dist/ui/persistentChatBox.d.ts.map +0 -1
- package/dist/ui/persistentChatBox.js +0 -298
- package/dist/ui/persistentChatBox.js.map +0 -1
|
@@ -1,370 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Enhanced Pinned Chat Box - Persistent chat input during AI streaming
|
|
3
|
-
*
|
|
4
|
-
* Enhanced features:
|
|
5
|
-
* - Always visible at bottom during AI streaming
|
|
6
|
-
* - Supports typing while AI is streaming responses
|
|
7
|
-
* - Gracefully handles long pastes without errors
|
|
8
|
-
* - Only submits to AI when user hits enter key
|
|
9
|
-
* - Integrates with existing multiline paste handler
|
|
10
|
-
* - Shows paste summaries for large content
|
|
11
|
-
* - Input history navigation with up/down arrows
|
|
12
|
-
* - Visual feedback during streaming
|
|
13
|
-
*/
|
|
14
|
-
import { theme } from './theme.js';
|
|
15
|
-
import { processPaste, isMultilinePaste } from '../core/multilinePasteHandler.js';
|
|
16
|
-
export class EnhancedPinnedChatBox {
|
|
17
|
-
writeStream;
|
|
18
|
-
config;
|
|
19
|
-
state;
|
|
20
|
-
onSubmit;
|
|
21
|
-
onCancel;
|
|
22
|
-
isActive = false;
|
|
23
|
-
inputBuffer = '';
|
|
24
|
-
cursorPosition = 0;
|
|
25
|
-
history = [];
|
|
26
|
-
historyIndex = -1;
|
|
27
|
-
tempCurrentInput = '';
|
|
28
|
-
isPasteMode = false;
|
|
29
|
-
pasteBuffer = '';
|
|
30
|
-
renderScheduled = false;
|
|
31
|
-
lastRenderTime = 0;
|
|
32
|
-
renderThrottleMs = 16; // ~60fps max
|
|
33
|
-
constructor(writeStream, onSubmit, onCancel, config = {}) {
|
|
34
|
-
this.writeStream = writeStream;
|
|
35
|
-
this.onSubmit = onSubmit;
|
|
36
|
-
this.onCancel = onCancel;
|
|
37
|
-
this.config = {
|
|
38
|
-
enabled: true,
|
|
39
|
-
position: 1,
|
|
40
|
-
maxLines: 3,
|
|
41
|
-
showPasteSummaries: true,
|
|
42
|
-
autoScroll: true,
|
|
43
|
-
maxInputLength: 10000,
|
|
44
|
-
maxHistorySize: 100,
|
|
45
|
-
...config,
|
|
46
|
-
};
|
|
47
|
-
this.state = {
|
|
48
|
-
input: '',
|
|
49
|
-
isStreaming: false,
|
|
50
|
-
isTyping: false,
|
|
51
|
-
isPasteMode: false,
|
|
52
|
-
cursorPosition: 0,
|
|
53
|
-
history: [],
|
|
54
|
-
historyIndex: -1,
|
|
55
|
-
statusMessage: null,
|
|
56
|
-
isProcessing: false,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Handle character input
|
|
61
|
-
*/
|
|
62
|
-
handleInput(char) {
|
|
63
|
-
if (!this.isActive)
|
|
64
|
-
return;
|
|
65
|
-
// Detect paste by checking for multiple lines or large content
|
|
66
|
-
if (char.includes('\n') && char.length > 100) {
|
|
67
|
-
this.handlePaste(char);
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
// Normal character input
|
|
71
|
-
this.handleNormalInput(char);
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Handle normal character input
|
|
75
|
-
*/
|
|
76
|
-
handleNormalInput(char) {
|
|
77
|
-
// Respect max input length
|
|
78
|
-
const availableSpace = this.config.maxInputLength - this.inputBuffer.length;
|
|
79
|
-
if (availableSpace <= 0)
|
|
80
|
-
return;
|
|
81
|
-
const chunk = char.slice(0, availableSpace);
|
|
82
|
-
if (!chunk)
|
|
83
|
-
return;
|
|
84
|
-
// Insert character at cursor position
|
|
85
|
-
this.inputBuffer =
|
|
86
|
-
this.inputBuffer.slice(0, this.cursorPosition) +
|
|
87
|
-
chunk +
|
|
88
|
-
this.inputBuffer.slice(this.cursorPosition);
|
|
89
|
-
this.cursorPosition = Math.min(this.cursorPosition + chunk.length, this.inputBuffer.length);
|
|
90
|
-
this.updateState();
|
|
91
|
-
this.scheduleRender();
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Handle paste input
|
|
95
|
-
*/
|
|
96
|
-
handlePaste(content) {
|
|
97
|
-
this.isPasteMode = true;
|
|
98
|
-
this.pasteBuffer = content;
|
|
99
|
-
if (this.config.showPasteSummaries && isMultilinePaste(content)) {
|
|
100
|
-
const processed = processPaste(content);
|
|
101
|
-
this.setStatusMessage(processed.displaySummary);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
this.setStatusMessage('📋 Paste detected - Press Enter to submit');
|
|
105
|
-
}
|
|
106
|
-
this.updateState();
|
|
107
|
-
this.scheduleRender();
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Submit current input
|
|
111
|
-
*/
|
|
112
|
-
submit() {
|
|
113
|
-
if (!this.isActive)
|
|
114
|
-
return;
|
|
115
|
-
let inputToSubmit;
|
|
116
|
-
if (this.isPasteMode) {
|
|
117
|
-
// Submit paste content
|
|
118
|
-
inputToSubmit = this.pasteBuffer;
|
|
119
|
-
this.clearPasteMode();
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
// Submit normal input
|
|
123
|
-
inputToSubmit = this.inputBuffer.trim();
|
|
124
|
-
if (!inputToSubmit)
|
|
125
|
-
return;
|
|
126
|
-
// Add to history
|
|
127
|
-
this.addToHistory(inputToSubmit);
|
|
128
|
-
}
|
|
129
|
-
// Clear input
|
|
130
|
-
this.clearInput();
|
|
131
|
-
// Submit to AI
|
|
132
|
-
this.onSubmit(inputToSubmit);
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Cancel current input or paste
|
|
136
|
-
*/
|
|
137
|
-
cancel() {
|
|
138
|
-
if (this.isPasteMode) {
|
|
139
|
-
// Cancel paste mode
|
|
140
|
-
this.clearPasteMode();
|
|
141
|
-
this.setStatusMessage('Paste cancelled');
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
// Call cancel callback
|
|
145
|
-
this.onCancel();
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Handle history navigation - up
|
|
150
|
-
*/
|
|
151
|
-
navigateHistoryUp() {
|
|
152
|
-
if (this.history.length === 0)
|
|
153
|
-
return;
|
|
154
|
-
if (this.historyIndex === -1) {
|
|
155
|
-
// Start navigating history, save current input
|
|
156
|
-
this.tempCurrentInput = this.inputBuffer;
|
|
157
|
-
this.historyIndex = 0;
|
|
158
|
-
}
|
|
159
|
-
else if (this.historyIndex < this.history.length - 1) {
|
|
160
|
-
this.historyIndex++;
|
|
161
|
-
}
|
|
162
|
-
const historyItem = this.history[this.historyIndex];
|
|
163
|
-
this.setInput(historyItem);
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Handle history navigation - down
|
|
167
|
-
*/
|
|
168
|
-
navigateHistoryDown() {
|
|
169
|
-
if (this.historyIndex === -1)
|
|
170
|
-
return;
|
|
171
|
-
if (this.historyIndex > 0) {
|
|
172
|
-
this.historyIndex--;
|
|
173
|
-
const historyItem = this.history[this.historyIndex];
|
|
174
|
-
this.setInput(historyItem);
|
|
175
|
-
}
|
|
176
|
-
else if (this.historyIndex === 0) {
|
|
177
|
-
// Back to original input
|
|
178
|
-
this.historyIndex = -1;
|
|
179
|
-
this.setInput(this.tempCurrentInput);
|
|
180
|
-
this.tempCurrentInput = '';
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Set input text
|
|
185
|
-
*/
|
|
186
|
-
setInput(text, cursorPos) {
|
|
187
|
-
this.inputBuffer = text.slice(0, this.config.maxInputLength);
|
|
188
|
-
this.cursorPosition = typeof cursorPos === 'number'
|
|
189
|
-
? Math.max(0, Math.min(cursorPos, this.inputBuffer.length))
|
|
190
|
-
: this.inputBuffer.length;
|
|
191
|
-
this.updateState();
|
|
192
|
-
this.scheduleRender();
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Clear input
|
|
196
|
-
*/
|
|
197
|
-
clearInput() {
|
|
198
|
-
this.inputBuffer = '';
|
|
199
|
-
this.cursorPosition = 0;
|
|
200
|
-
this.historyIndex = -1;
|
|
201
|
-
this.tempCurrentInput = '';
|
|
202
|
-
this.updateState();
|
|
203
|
-
this.scheduleRender();
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Clear paste mode
|
|
207
|
-
*/
|
|
208
|
-
clearPasteMode() {
|
|
209
|
-
this.isPasteMode = false;
|
|
210
|
-
this.pasteBuffer = '';
|
|
211
|
-
this.clearStatusMessage();
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Add input to history
|
|
215
|
-
*/
|
|
216
|
-
addToHistory(input) {
|
|
217
|
-
if (input.trim() && this.history[0] !== input.trim()) {
|
|
218
|
-
this.history.unshift(input.trim());
|
|
219
|
-
if (this.history.length > this.config.maxHistorySize) {
|
|
220
|
-
this.history.pop();
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Set status message
|
|
226
|
-
*/
|
|
227
|
-
setStatusMessage(message) {
|
|
228
|
-
this.state.statusMessage = message;
|
|
229
|
-
this.updateState();
|
|
230
|
-
this.scheduleRender();
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Clear status message
|
|
234
|
-
*/
|
|
235
|
-
clearStatusMessage() {
|
|
236
|
-
this.state.statusMessage = null;
|
|
237
|
-
this.updateState();
|
|
238
|
-
this.scheduleRender();
|
|
239
|
-
}
|
|
240
|
-
/**
|
|
241
|
-
* Update internal state
|
|
242
|
-
*/
|
|
243
|
-
updateState() {
|
|
244
|
-
this.state.input = this.inputBuffer;
|
|
245
|
-
this.state.cursorPosition = this.cursorPosition;
|
|
246
|
-
this.state.isPasteMode = this.isPasteMode;
|
|
247
|
-
this.state.historyIndex = this.historyIndex;
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Set streaming state
|
|
251
|
-
*/
|
|
252
|
-
setStreaming(isStreaming) {
|
|
253
|
-
this.state.isStreaming = isStreaming;
|
|
254
|
-
this.scheduleRender();
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Set processing state
|
|
258
|
-
*/
|
|
259
|
-
setProcessing(isProcessing) {
|
|
260
|
-
this.state.isProcessing = isProcessing;
|
|
261
|
-
this.scheduleRender();
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Activate the chat box
|
|
265
|
-
*/
|
|
266
|
-
activate() {
|
|
267
|
-
if (this.isActive)
|
|
268
|
-
return;
|
|
269
|
-
this.isActive = true;
|
|
270
|
-
this.clearInput();
|
|
271
|
-
this.setStatusMessage('Type while AI streams - Press Enter to send');
|
|
272
|
-
// Initial render
|
|
273
|
-
this.forceRender();
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Deactivate the chat box
|
|
277
|
-
*/
|
|
278
|
-
deactivate() {
|
|
279
|
-
this.isActive = false;
|
|
280
|
-
this.clearStatusMessage();
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Schedule render (throttled)
|
|
284
|
-
*/
|
|
285
|
-
scheduleRender() {
|
|
286
|
-
if (this.renderScheduled)
|
|
287
|
-
return;
|
|
288
|
-
this.renderScheduled = true;
|
|
289
|
-
setTimeout(() => {
|
|
290
|
-
this.renderScheduled = false;
|
|
291
|
-
this.render();
|
|
292
|
-
}, this.renderThrottleMs);
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* Force immediate render
|
|
296
|
-
*/
|
|
297
|
-
forceRender() {
|
|
298
|
-
this.render();
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
|
-
* Render the chat box
|
|
302
|
-
*/
|
|
303
|
-
render() {
|
|
304
|
-
if (!this.isActive)
|
|
305
|
-
return;
|
|
306
|
-
const now = Date.now();
|
|
307
|
-
if (now - this.lastRenderTime < this.renderThrottleMs) {
|
|
308
|
-
return;
|
|
309
|
-
}
|
|
310
|
-
this.lastRenderTime = now;
|
|
311
|
-
// Clear the status area
|
|
312
|
-
this.writeStream.write('\x1B[s'); // Save cursor position
|
|
313
|
-
// Move to bottom position
|
|
314
|
-
this.writeStream.write(`\x1B[${this.config.position}B`);
|
|
315
|
-
this.writeStream.write('\x1B[2K\r'); // Clear line
|
|
316
|
-
// Render status message if present
|
|
317
|
-
if (this.state.statusMessage) {
|
|
318
|
-
this.writeStream.write(`${theme.info(this.state.statusMessage)}\n`);
|
|
319
|
-
this.writeStream.write('\x1B[2K\r'); // Clear next line
|
|
320
|
-
}
|
|
321
|
-
// Render input prompt
|
|
322
|
-
let prompt;
|
|
323
|
-
if (this.state.isStreaming) {
|
|
324
|
-
prompt = `${theme.info('◉')} ${theme.ui.muted('Type while AI streams (Enter to send)')}: `;
|
|
325
|
-
}
|
|
326
|
-
else if (this.state.isProcessing) {
|
|
327
|
-
prompt = `${theme.warning('◐')} ${theme.ui.muted('Processing...')}: `;
|
|
328
|
-
}
|
|
329
|
-
else {
|
|
330
|
-
prompt = `${theme.success('>')} `;
|
|
331
|
-
}
|
|
332
|
-
// Render input with cursor
|
|
333
|
-
const displayInput = this.isPasteMode
|
|
334
|
-
? `${theme.accent(this.inputBuffer)}`
|
|
335
|
-
: this.inputBuffer;
|
|
336
|
-
this.writeStream.write(`${prompt}${displayInput}`);
|
|
337
|
-
// Position cursor
|
|
338
|
-
const cursorOffset = prompt.length + this.cursorPosition;
|
|
339
|
-
this.writeStream.write(`\x1B[${cursorOffset}G`);
|
|
340
|
-
// Restore cursor position
|
|
341
|
-
this.writeStream.write('\x1B[u');
|
|
342
|
-
}
|
|
343
|
-
/**
|
|
344
|
-
* Get current state
|
|
345
|
-
*/
|
|
346
|
-
getState() {
|
|
347
|
-
return { ...this.state };
|
|
348
|
-
}
|
|
349
|
-
/**
|
|
350
|
-
* Get config
|
|
351
|
-
*/
|
|
352
|
-
getConfig() {
|
|
353
|
-
return { ...this.config };
|
|
354
|
-
}
|
|
355
|
-
/**
|
|
356
|
-
* Update config
|
|
357
|
-
*/
|
|
358
|
-
updateConfig(config) {
|
|
359
|
-
this.config = { ...this.config, ...config };
|
|
360
|
-
}
|
|
361
|
-
/**
|
|
362
|
-
* Dispose of resources
|
|
363
|
-
*/
|
|
364
|
-
dispose() {
|
|
365
|
-
this.deactivate();
|
|
366
|
-
this.clearInput();
|
|
367
|
-
this.clearStatusMessage();
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
//# sourceMappingURL=EnhancedPinnedChatBox.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EnhancedPinnedChatBox.js","sourceRoot":"","sources":["../../src/ui/EnhancedPinnedChatBox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Persistent Chat Box - Stays at bottom during AI streaming
|
|
3
|
-
*
|
|
4
|
-
* Features:
|
|
5
|
-
* - Always visible at bottom of terminal
|
|
6
|
-
* - Supports typing while AI is streaming
|
|
7
|
-
* - Gracefully handles long pastes without errors
|
|
8
|
-
* - Only submits to AI when user hits enter key
|
|
9
|
-
* - Integrates with existing multiline paste handler
|
|
10
|
-
*/
|
|
11
|
-
export interface PersistentChatBoxConfig {
|
|
12
|
-
/** Whether chat box is enabled */
|
|
13
|
-
enabled: boolean;
|
|
14
|
-
/** Position from bottom (lines) */
|
|
15
|
-
position: number;
|
|
16
|
-
/** Maximum lines for chat box display */
|
|
17
|
-
maxLines: number;
|
|
18
|
-
/** Whether to show paste summaries */
|
|
19
|
-
showPasteSummaries: boolean;
|
|
20
|
-
/** Whether to auto-scroll during streaming */
|
|
21
|
-
autoScroll: boolean;
|
|
22
|
-
}
|
|
23
|
-
export interface ChatBoxState {
|
|
24
|
-
/** Current input text */
|
|
25
|
-
input: string;
|
|
26
|
-
/** Whether AI is currently streaming */
|
|
27
|
-
isStreaming: boolean;
|
|
28
|
-
/** Whether user is currently typing */
|
|
29
|
-
isTyping: boolean;
|
|
30
|
-
/** Whether paste mode is active */
|
|
31
|
-
isPasteMode: boolean;
|
|
32
|
-
/** Cursor position */
|
|
33
|
-
cursorPosition: number;
|
|
34
|
-
/** History of inputs */
|
|
35
|
-
history: string[];
|
|
36
|
-
/** Current history index */
|
|
37
|
-
historyIndex: number;
|
|
38
|
-
}
|
|
39
|
-
export type ChatBoxSubmitCallback = (input: string) => void;
|
|
40
|
-
export type ChatBoxCancelCallback = () => void;
|
|
41
|
-
export declare class PersistentChatBox {
|
|
42
|
-
private rl;
|
|
43
|
-
private config;
|
|
44
|
-
private state;
|
|
45
|
-
private onSubmit;
|
|
46
|
-
private onCancel;
|
|
47
|
-
private isActive;
|
|
48
|
-
private originalPrompt;
|
|
49
|
-
private pasteBuffer;
|
|
50
|
-
private pasteMode;
|
|
51
|
-
constructor(onSubmit: ChatBoxSubmitCallback, onCancel: ChatBoxCancelCallback, config?: Partial<PersistentChatBoxConfig>);
|
|
52
|
-
/**
|
|
53
|
-
* Setup readline event handlers
|
|
54
|
-
*/
|
|
55
|
-
private setupEventHandlers;
|
|
56
|
-
/**
|
|
57
|
-
* Handle line input (when user presses enter)
|
|
58
|
-
*/
|
|
59
|
-
private handleLineInput;
|
|
60
|
-
/**
|
|
61
|
-
* Handle normal text input
|
|
62
|
-
*/
|
|
63
|
-
private handleNormalInput;
|
|
64
|
-
/**
|
|
65
|
-
* Handle paste completion
|
|
66
|
-
*/
|
|
67
|
-
private handlePasteComplete;
|
|
68
|
-
/**
|
|
69
|
-
* Handle raw data input for paste detection
|
|
70
|
-
*/
|
|
71
|
-
private handleDataInput;
|
|
72
|
-
/**
|
|
73
|
-
* Handle cancel (Ctrl+C)
|
|
74
|
-
*/
|
|
75
|
-
private handleCancel;
|
|
76
|
-
/**
|
|
77
|
-
* Handle close
|
|
78
|
-
*/
|
|
79
|
-
private handleClose;
|
|
80
|
-
/**
|
|
81
|
-
* Handle history navigation - up
|
|
82
|
-
*/
|
|
83
|
-
private handleHistoryUp;
|
|
84
|
-
/**
|
|
85
|
-
* Handle history navigation - down
|
|
86
|
-
*/
|
|
87
|
-
private handleHistoryDown;
|
|
88
|
-
/**
|
|
89
|
-
* Update the readline prompt
|
|
90
|
-
*/
|
|
91
|
-
private updatePrompt;
|
|
92
|
-
/**
|
|
93
|
-
* Set input text
|
|
94
|
-
*/
|
|
95
|
-
private setInput;
|
|
96
|
-
/**
|
|
97
|
-
* Clear input
|
|
98
|
-
*/
|
|
99
|
-
private clearInput;
|
|
100
|
-
/**
|
|
101
|
-
* Get default prompt based on streaming state
|
|
102
|
-
*/
|
|
103
|
-
private getDefaultPrompt;
|
|
104
|
-
/**
|
|
105
|
-
* Activate the chat box
|
|
106
|
-
*/
|
|
107
|
-
activate(): void;
|
|
108
|
-
/**
|
|
109
|
-
* Deactivate the chat box
|
|
110
|
-
*/
|
|
111
|
-
deactivate(): void;
|
|
112
|
-
/**
|
|
113
|
-
* Set streaming state
|
|
114
|
-
*/
|
|
115
|
-
setStreaming(isStreaming: boolean): void;
|
|
116
|
-
/**
|
|
117
|
-
* Add message to history
|
|
118
|
-
*/
|
|
119
|
-
addToHistory(message: string): void;
|
|
120
|
-
/**
|
|
121
|
-
* Get current state
|
|
122
|
-
*/
|
|
123
|
-
getState(): ChatBoxState;
|
|
124
|
-
/**
|
|
125
|
-
* Get config
|
|
126
|
-
*/
|
|
127
|
-
getConfig(): PersistentChatBoxConfig;
|
|
128
|
-
/**
|
|
129
|
-
* Update config
|
|
130
|
-
*/
|
|
131
|
-
updateConfig(config: Partial<PersistentChatBoxConfig>): void;
|
|
132
|
-
/**
|
|
133
|
-
* Dispose of resources
|
|
134
|
-
*/
|
|
135
|
-
dispose(): void;
|
|
136
|
-
}
|
|
137
|
-
//# sourceMappingURL=PersistentChatBox.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PersistentChatBox.d.ts","sourceRoot":"","sources":["../../src/ui/PersistentChatBox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,MAAM,WAAW,uBAAuB;IACtC,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,8CAA8C;IAC9C,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,WAAW,EAAE,OAAO,CAAC;IACrB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAC5D,MAAM,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC;AAE/C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,SAAS,CAAkB;gBAGjC,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,GAAE,OAAO,CAAC,uBAAuB,CAAM;IAmC/C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAUhB;;OAEG;IACH,UAAU,IAAI,IAAI;IAKlB;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAQxC;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASnC;;OAEG;IACH,QAAQ,IAAI,YAAY;IAIxB;;OAEG;IACH,SAAS,IAAI,uBAAuB;IAIpC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI;IAI5D;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
|