erosolar-cli 1.7.194 → 1.7.196
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.d.ts +6 -0
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +10 -1
- package/dist/core/agent.js.map +1 -1
- package/dist/core/errors/errorUtils.d.ts +87 -0
- package/dist/core/errors/errorUtils.d.ts.map +1 -0
- package/dist/core/errors/errorUtils.js +158 -0
- package/dist/core/errors/errorUtils.js.map +1 -0
- package/dist/core/resultVerification.js.map +1 -1
- package/dist/core/toolValidation.d.ts +117 -0
- package/dist/core/toolValidation.d.ts.map +1 -0
- package/dist/core/toolValidation.js +282 -0
- package/dist/core/toolValidation.js.map +1 -0
- package/dist/core/types/utilityTypes.d.ts +192 -0
- package/dist/core/types/utilityTypes.d.ts.map +1 -0
- package/dist/core/types/utilityTypes.js +272 -0
- package/dist/core/types/utilityTypes.js.map +1 -0
- package/dist/shell/interactiveShell.d.ts +9 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +69 -1
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/systemPrompt.d.ts.map +1 -1
- package/dist/shell/systemPrompt.js +5 -0
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/shell/terminalInput.d.ts +1 -0
- package/dist/shell/terminalInput.d.ts.map +1 -1
- package/dist/shell/terminalInput.js +9 -2
- package/dist/shell/terminalInput.js.map +1 -1
- package/dist/shell/terminalInputAdapter.d.ts +4 -0
- package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
- package/dist/shell/terminalInputAdapter.js +6 -0
- package/dist/shell/terminalInputAdapter.js.map +1 -1
- package/dist/tools/planningTools.d.ts +1 -0
- package/dist/tools/planningTools.d.ts.map +1 -1
- package/dist/tools/planningTools.js +48 -0
- package/dist/tools/planningTools.js.map +1 -1
- package/dist/ui/display.d.ts +5 -49
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +36 -335
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/toolDisplay.d.ts.map +1 -1
- package/dist/ui/toolDisplay.js +17 -0
- package/dist/ui/toolDisplay.js.map +1 -1
- package/dist/utils/planFormatter.d.ts +34 -0
- package/dist/utils/planFormatter.d.ts.map +1 -0
- package/dist/utils/planFormatter.js +140 -0
- package/dist/utils/planFormatter.js.map +1 -0
- package/package.json +2 -2
- package/dist/shell/bracketedPasteManager.d.ts +0 -128
- package/dist/shell/bracketedPasteManager.d.ts.map +0 -1
- package/dist/shell/bracketedPasteManager.enhanced.d.ts +0 -2
- package/dist/shell/bracketedPasteManager.enhanced.d.ts.map +0 -1
- package/dist/shell/bracketedPasteManager.enhanced.js +0 -4
- package/dist/shell/bracketedPasteManager.enhanced.js.map +0 -1
- package/dist/shell/bracketedPasteManager.js +0 -372
- package/dist/shell/bracketedPasteManager.js.map +0 -1
- package/dist/shell/chatBox.d.ts +0 -228
- package/dist/shell/chatBox.d.ts.map +0 -1
- package/dist/shell/chatBox.js +0 -811
- package/dist/shell/chatBox.js.map +0 -1
- package/dist/shell/unifiedChatBox.d.ts +0 -194
- package/dist/shell/unifiedChatBox.d.ts.map +0 -1
- package/dist/shell/unifiedChatBox.js +0 -585
- package/dist/shell/unifiedChatBox.js.map +0 -1
- package/dist/ui/persistentPrompt.d.ts +0 -545
- package/dist/ui/persistentPrompt.d.ts.map +0 -1
- package/dist/ui/persistentPrompt.js +0 -1529
- package/dist/ui/persistentPrompt.js.map +0 -1
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript Utility Types and Helper Functions
|
|
3
|
+
*
|
|
4
|
+
* Provides comprehensive TypeScript utilities for:
|
|
5
|
+
* - Advanced type manipulation
|
|
6
|
+
* - Functional programming patterns
|
|
7
|
+
* - Immutable data structures
|
|
8
|
+
* - Runtime type checking
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Runtime type checking utilities
|
|
12
|
+
*/
|
|
13
|
+
export class TypeGuards {
|
|
14
|
+
/**
|
|
15
|
+
* Check if value is a string
|
|
16
|
+
*/
|
|
17
|
+
static isString(value) {
|
|
18
|
+
return typeof value === 'string';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check if value is a number
|
|
22
|
+
*/
|
|
23
|
+
static isNumber(value) {
|
|
24
|
+
return typeof value === 'number' && !isNaN(value);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if value is a boolean
|
|
28
|
+
*/
|
|
29
|
+
static isBoolean(value) {
|
|
30
|
+
return typeof value === 'boolean';
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check if value is an object (not null, not array)
|
|
34
|
+
*/
|
|
35
|
+
static isObject(value) {
|
|
36
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if value is an array
|
|
40
|
+
*/
|
|
41
|
+
static isArray(value) {
|
|
42
|
+
return Array.isArray(value);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check if value is a function
|
|
46
|
+
*/
|
|
47
|
+
static isFunction(value) {
|
|
48
|
+
return typeof value === 'function';
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check if value is null or undefined
|
|
52
|
+
*/
|
|
53
|
+
static isNil(value) {
|
|
54
|
+
return value === null || value === undefined;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check if value has a specific property
|
|
58
|
+
*/
|
|
59
|
+
static hasProperty(value, property) {
|
|
60
|
+
return TypeGuards.isObject(value) && property in value;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Functional programming utilities
|
|
65
|
+
*/
|
|
66
|
+
export class Functional {
|
|
67
|
+
/**
|
|
68
|
+
* Compose multiple functions
|
|
69
|
+
*/
|
|
70
|
+
static compose(...fns) {
|
|
71
|
+
return (x) => fns.reduceRight((acc, fn) => fn(acc), x);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Pipe value through multiple functions
|
|
75
|
+
*/
|
|
76
|
+
static pipe(value, ...fns) {
|
|
77
|
+
return fns.reduce((acc, fn) => fn(acc), value);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Memoize function with cache
|
|
81
|
+
*/
|
|
82
|
+
static memoize(fn, cacheKey) {
|
|
83
|
+
const cache = new Map();
|
|
84
|
+
return ((...args) => {
|
|
85
|
+
const key = cacheKey ? cacheKey(...args) : JSON.stringify(args);
|
|
86
|
+
if (cache.has(key)) {
|
|
87
|
+
return cache.get(key);
|
|
88
|
+
}
|
|
89
|
+
const result = fn(...args);
|
|
90
|
+
cache.set(key, result);
|
|
91
|
+
return result;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Debounce function execution
|
|
96
|
+
*/
|
|
97
|
+
static debounce(fn, delay) {
|
|
98
|
+
let timeoutId;
|
|
99
|
+
return (...args) => {
|
|
100
|
+
clearTimeout(timeoutId);
|
|
101
|
+
timeoutId = setTimeout(() => fn(...args), delay);
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Throttle function execution
|
|
106
|
+
*/
|
|
107
|
+
static throttle(fn, delay) {
|
|
108
|
+
let lastCall = 0;
|
|
109
|
+
return (...args) => {
|
|
110
|
+
const now = Date.now();
|
|
111
|
+
if (now - lastCall >= delay) {
|
|
112
|
+
lastCall = now;
|
|
113
|
+
fn(...args);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Immutable data utilities
|
|
120
|
+
*/
|
|
121
|
+
export class Immutable {
|
|
122
|
+
/**
|
|
123
|
+
* Deep freeze object
|
|
124
|
+
*/
|
|
125
|
+
static deepFreeze(obj) {
|
|
126
|
+
if (typeof obj !== 'object' || obj === null) {
|
|
127
|
+
return obj;
|
|
128
|
+
}
|
|
129
|
+
Object.freeze(obj);
|
|
130
|
+
Object.getOwnPropertyNames(obj).forEach(prop => {
|
|
131
|
+
const value = obj[prop];
|
|
132
|
+
if (value &&
|
|
133
|
+
typeof value === 'object' &&
|
|
134
|
+
!Object.isFrozen(value)) {
|
|
135
|
+
Immutable.deepFreeze(value);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
return obj;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Create immutable copy with updates
|
|
142
|
+
*/
|
|
143
|
+
static update(obj, updates) {
|
|
144
|
+
return { ...obj, ...updates };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Create immutable copy with nested updates
|
|
148
|
+
*/
|
|
149
|
+
static updateIn(obj, path, value) {
|
|
150
|
+
if (path.length === 0) {
|
|
151
|
+
return obj;
|
|
152
|
+
}
|
|
153
|
+
const [first, ...rest] = path;
|
|
154
|
+
if (rest.length === 0) {
|
|
155
|
+
return { ...obj, [first]: value };
|
|
156
|
+
}
|
|
157
|
+
const current = obj[first];
|
|
158
|
+
if (!TypeGuards.isObject(current)) {
|
|
159
|
+
throw new Error(`Cannot update non-object at path: ${first}`);
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
...obj,
|
|
163
|
+
[first]: Immutable.updateIn(current, rest, value)
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Type-safe event emitter
|
|
169
|
+
*/
|
|
170
|
+
export class TypedEventEmitter {
|
|
171
|
+
listeners = {};
|
|
172
|
+
/**
|
|
173
|
+
* Add event listener
|
|
174
|
+
*/
|
|
175
|
+
on(event, listener) {
|
|
176
|
+
if (!this.listeners[event]) {
|
|
177
|
+
this.listeners[event] = [];
|
|
178
|
+
}
|
|
179
|
+
this.listeners[event].push(listener);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Remove event listener
|
|
183
|
+
*/
|
|
184
|
+
off(event, listener) {
|
|
185
|
+
if (!this.listeners[event]) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const index = this.listeners[event].indexOf(listener);
|
|
189
|
+
if (index !== -1) {
|
|
190
|
+
this.listeners[event].splice(index, 1);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Emit event
|
|
195
|
+
*/
|
|
196
|
+
emit(event, ...args) {
|
|
197
|
+
if (!this.listeners[event]) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
this.listeners[event].forEach(listener => {
|
|
201
|
+
try {
|
|
202
|
+
listener(...args);
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
console.error(`Error in event listener for ${String(event)}:`, error);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Remove all listeners
|
|
211
|
+
*/
|
|
212
|
+
removeAllListeners() {
|
|
213
|
+
this.listeners = {};
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Utility functions for common TypeScript patterns
|
|
218
|
+
*/
|
|
219
|
+
export class TypeScriptUtils {
|
|
220
|
+
/**
|
|
221
|
+
* Assert value is not null or undefined
|
|
222
|
+
*/
|
|
223
|
+
static assertDefined(value, message) {
|
|
224
|
+
if (value === null || value === undefined) {
|
|
225
|
+
throw new Error(message ?? 'Value is null or undefined');
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Create type-safe enum from array
|
|
230
|
+
*/
|
|
231
|
+
static createStringEnum(values) {
|
|
232
|
+
return values.reduce((acc, value) => {
|
|
233
|
+
acc[value] = value;
|
|
234
|
+
return acc;
|
|
235
|
+
}, {});
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Create branded type
|
|
239
|
+
*/
|
|
240
|
+
static createBranded(value) {
|
|
241
|
+
return value;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Extract keys from type that match a condition
|
|
245
|
+
*/
|
|
246
|
+
static extractKeys(obj, predicate) {
|
|
247
|
+
return Object.keys(obj).filter(key => predicate(key, obj[key]));
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Pick properties from object
|
|
251
|
+
*/
|
|
252
|
+
static pick(obj, keys) {
|
|
253
|
+
const result = {};
|
|
254
|
+
keys.forEach(key => {
|
|
255
|
+
if (key in obj) {
|
|
256
|
+
result[key] = obj[key];
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
return result;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Omit properties from object
|
|
263
|
+
*/
|
|
264
|
+
static omit(obj, keys) {
|
|
265
|
+
const result = { ...obj };
|
|
266
|
+
keys.forEach(key => {
|
|
267
|
+
delete result[key];
|
|
268
|
+
});
|
|
269
|
+
return result;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=utilityTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utilityTypes.js","sourceRoot":"","sources":["../../../src/core/types/utilityTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,6 +76,10 @@ export declare class InteractiveShell {
|
|
|
76
76
|
private cachedProviderStatus;
|
|
77
77
|
private autoTestInFlight;
|
|
78
78
|
private lastAutoTestRun;
|
|
79
|
+
private streamingHeartbeat;
|
|
80
|
+
private streamingHeartbeatStart;
|
|
81
|
+
private streamingHeartbeatFrame;
|
|
82
|
+
private promptRefreshTimer;
|
|
79
83
|
constructor(config: ShellConfig);
|
|
80
84
|
private initializeSessionHistory;
|
|
81
85
|
private showSessionResumeNotice;
|
|
@@ -134,6 +138,10 @@ export declare class InteractiveShell {
|
|
|
134
138
|
* Ensure the terminal input is ready for interactive input.
|
|
135
139
|
*/
|
|
136
140
|
private ensureReadlineReady;
|
|
141
|
+
private requestPromptRefresh;
|
|
142
|
+
private clearPromptRefreshTimer;
|
|
143
|
+
private startStreamingHeartbeat;
|
|
144
|
+
private stopStreamingHeartbeat;
|
|
137
145
|
private refreshQueueIndicators;
|
|
138
146
|
private enqueueFollowUpAction;
|
|
139
147
|
private scheduleQueueProcessing;
|
|
@@ -256,6 +264,7 @@ export declare class InteractiveShell {
|
|
|
256
264
|
private buildSummaryPrompt;
|
|
257
265
|
private buildTrimmedHistory;
|
|
258
266
|
private handleAgentSetupError;
|
|
267
|
+
private handleStreamingFallback;
|
|
259
268
|
private handleProviderError;
|
|
260
269
|
private handleApiKeyIssue;
|
|
261
270
|
private showSecretGuidance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactiveShell.d.ts","sourceRoot":"","sources":["../../src/shell/interactiveShell.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"interactiveShell.d.ts","sourceRoot":"","sources":["../../src/shell/interactiveShell.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAiCtE,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAyB,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAStF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AA2BzD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,WAAW,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,cAAc,CAAC;IAC7B,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,aAAa,EAAE,iBAAiB,CAAC;IACjC,SAAS,EAAE,cAAc,CAAC;IAC1B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,oBAAoB;IAC5B,cAAc,EAAE,WAAW,CAAC;IAC5B,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAkGD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,kBAAkB,CAAmD;IAC7E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuC;IACzE,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;IACzD,OAAO,CAAC,kBAAkB,CAAwD;IAClF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA2B;IAC9D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAClD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;IACxD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,yBAAyB,CAAuB;IACxD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,mBAAmB,CAAU;IACrC,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,sBAAsB,CAAuB;IACrD,OAAO,CAAC,kBAAkB,CAAsC;IAChE,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmC;IACpE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAC5D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAW;IAE3C,OAAO,CAAC,oBAAoB,CAKpB;IAER,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,eAAe,CAAuB;IAE9C,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,uBAAuB,CAAuB;IACtD,OAAO,CAAC,uBAAuB,CAAK;IACpC,OAAO,CAAC,kBAAkB,CAA+B;gBAE7C,MAAM,EAAE,WAAW;IA+F/B,OAAO,CAAC,wBAAwB;IAsChC,OAAO,CAAC,uBAAuB;IAQzB,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAkC7B,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAoChB;;OAEG;IACH,OAAO,CAAC,mBAAmB;YAIb,uBAAuB;YAyDvB,oBAAoB;YAoBpB,yBAAyB;YA8CzB,qBAAqB;IA6BnC,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,+BAA+B;IAmBvC,OAAO,CAAC,6BAA6B;IAUrC,OAAO,CAAC,uBAAuB;IAgB/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,uBAAuB;IAmB/B,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,qBAAqB;IA2B7B,OAAO,CAAC,uBAAuB;IAW/B;;OAEG;YACW,oBAAoB;YA2BpB,iBAAiB;IAiD/B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;YAWlB,wBAAwB;YA6BxB,mBAAmB;YAoFnB,qBAAqB;IA+BnC,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,SAAS;YAwCH,oBAAoB;YAiBpB,8BAA8B;IAkC5C,OAAO,CAAC,0BAA0B;YAgDpB,oBAAoB;YAsCpB,mBAAmB;YA0EnB,eAAe;IAS7B,OAAO,CAAC,qBAAqB;IA6B7B,OAAO,CAAC,sBAAsB;IAK9B,OAAO,CAAC,qBAAqB;IA4C7B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,0BAA0B;IA4BlC,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,eAAe;YAmCT,kBAAkB;YA8BlB,kBAAkB;IA8BhC,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,yBAAyB;IAkCjC,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,4BAA4B;IAIpC,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,qBAAqB;YAQf,aAAa;IA+B3B,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,iCAAiC;IA8EzC,OAAO,CAAC,kBAAkB;IAkE1B,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,qBAAqB;YA0Bf,4BAA4B;YAsC5B,oBAAoB;YA6CpB,gBAAgB;YAyBhB,qBAAqB;YAuCrB,iBAAiB;YA+CjB,cAAc;IA+E5B;;;;;;;;;;;OAWG;YACW,wBAAwB;IAoQtC;;;;OAIG;IACH,OAAO,CAAC,+BAA+B;IAiGvC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAwBhC;;OAEG;IACH,OAAO,CAAC,sBAAsB;YAahB,mBAAmB;IAwBjC,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,kBAAkB;YAOZ,gBAAgB;IAkD9B,OAAO,CAAC,YAAY;IA8JpB;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,WAAW;YAaL,iBAAiB;IAyD/B,OAAO,CAAC,gBAAgB;YAkBV,mBAAmB;IA2BjC,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,wBAAwB;IAUhC;;OAEG;YACW,qBAAqB;IA6DnC;;OAEG;YACW,qBAAqB;IAyCnC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA0B/B;;OAEG;YACW,kBAAkB;IAyBhC;;OAEG;YACW,kBAAkB;IA6EhC;;OAEG;IACH,OAAO,CAAC,aAAa;IAsBrB;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC;QACjC,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,GAAG,IAAI;IAIT;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAG7B"}
|
|
@@ -110,6 +110,11 @@ export class InteractiveShell {
|
|
|
110
110
|
// Auto-test tracking
|
|
111
111
|
autoTestInFlight = false;
|
|
112
112
|
lastAutoTestRun = null;
|
|
113
|
+
// Streaming UX tracking
|
|
114
|
+
streamingHeartbeat = null;
|
|
115
|
+
streamingHeartbeatStart = null;
|
|
116
|
+
streamingHeartbeatFrame = 0;
|
|
117
|
+
promptRefreshTimer = null;
|
|
113
118
|
constructor(config) {
|
|
114
119
|
this.profile = config.profile;
|
|
115
120
|
this.profileLabel = config.profileLabel;
|
|
@@ -357,6 +362,8 @@ export class InteractiveShell {
|
|
|
357
362
|
this.shuttingDown = true;
|
|
358
363
|
// Stop any active spinner to prevent process hang
|
|
359
364
|
display.stopThinking(false);
|
|
365
|
+
this.stopStreamingHeartbeat();
|
|
366
|
+
this.clearPromptRefreshTimer();
|
|
360
367
|
this.teardownStatusTracking();
|
|
361
368
|
// Clear any pending cleanup to prevent hanging
|
|
362
369
|
this.pendingCleanup = null;
|
|
@@ -603,6 +610,52 @@ export class InteractiveShell {
|
|
|
603
610
|
ensureReadlineReady() {
|
|
604
611
|
this.terminalInput.render();
|
|
605
612
|
}
|
|
613
|
+
requestPromptRefresh(force = false) {
|
|
614
|
+
if (force) {
|
|
615
|
+
this.terminalInput.forceRender();
|
|
616
|
+
return;
|
|
617
|
+
}
|
|
618
|
+
if (this.promptRefreshTimer) {
|
|
619
|
+
return;
|
|
620
|
+
}
|
|
621
|
+
this.promptRefreshTimer = setTimeout(() => {
|
|
622
|
+
this.promptRefreshTimer = null;
|
|
623
|
+
this.terminalInput.render();
|
|
624
|
+
}, 48);
|
|
625
|
+
}
|
|
626
|
+
clearPromptRefreshTimer() {
|
|
627
|
+
if (this.promptRefreshTimer) {
|
|
628
|
+
clearTimeout(this.promptRefreshTimer);
|
|
629
|
+
this.promptRefreshTimer = null;
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
startStreamingHeartbeat(label = 'Streaming response') {
|
|
633
|
+
this.stopStreamingHeartbeat();
|
|
634
|
+
this.streamingHeartbeatStart = Date.now();
|
|
635
|
+
this.streamingHeartbeatFrame = 0;
|
|
636
|
+
const frames = ['●', '◐', '◉', '◐'];
|
|
637
|
+
const tick = () => {
|
|
638
|
+
const frame = frames[this.streamingHeartbeatFrame % frames.length];
|
|
639
|
+
this.streamingHeartbeatFrame++;
|
|
640
|
+
const elapsed = this.streamingHeartbeatStart
|
|
641
|
+
? Math.floor((Date.now() - this.streamingHeartbeatStart) / 1000)
|
|
642
|
+
: 0;
|
|
643
|
+
const suffix = elapsed > 0 ? ` • ${elapsed}s` : '';
|
|
644
|
+
display.updateStreamingStatus(`${theme.info(frame)} ${label}${suffix}`);
|
|
645
|
+
this.requestPromptRefresh();
|
|
646
|
+
};
|
|
647
|
+
tick();
|
|
648
|
+
this.streamingHeartbeat = setInterval(tick, 2000);
|
|
649
|
+
}
|
|
650
|
+
stopStreamingHeartbeat() {
|
|
651
|
+
if (this.streamingHeartbeat) {
|
|
652
|
+
clearInterval(this.streamingHeartbeat);
|
|
653
|
+
this.streamingHeartbeat = null;
|
|
654
|
+
}
|
|
655
|
+
this.streamingHeartbeatStart = null;
|
|
656
|
+
display.clearStreamingStatus();
|
|
657
|
+
this.requestPromptRefresh();
|
|
658
|
+
}
|
|
606
659
|
refreshQueueIndicators() {
|
|
607
660
|
if (this.isProcessing) {
|
|
608
661
|
this.setProcessingStatus();
|
|
@@ -1952,6 +2005,7 @@ export class InteractiveShell {
|
|
|
1952
2005
|
// Claude Code style: Show unified streaming header before response
|
|
1953
2006
|
// This provides visual consistency with the startup Ready bar
|
|
1954
2007
|
display.showStreamingHeader();
|
|
2008
|
+
this.startStreamingHeartbeat('Streaming response');
|
|
1955
2009
|
display.showThinking('Responding...');
|
|
1956
2010
|
// Stream responses so users immediately see progress like Claude Code
|
|
1957
2011
|
responseText = await agent.send(request, true);
|
|
@@ -1974,6 +2028,7 @@ export class InteractiveShell {
|
|
|
1974
2028
|
}
|
|
1975
2029
|
finally {
|
|
1976
2030
|
display.stopThinking(false);
|
|
2031
|
+
this.stopStreamingHeartbeat();
|
|
1977
2032
|
this.isProcessing = false;
|
|
1978
2033
|
this.terminalInput.setStreaming(false);
|
|
1979
2034
|
this.uiAdapter.endProcessing('Ready for prompts');
|
|
@@ -2029,6 +2084,7 @@ export class InteractiveShell {
|
|
|
2029
2084
|
this.setProcessingStatus();
|
|
2030
2085
|
// Claude Code style: Show unified streaming header before response
|
|
2031
2086
|
display.showStreamingHeader();
|
|
2087
|
+
this.startStreamingHeartbeat('Continuous streaming');
|
|
2032
2088
|
let iteration = 0;
|
|
2033
2089
|
let lastResponse = '';
|
|
2034
2090
|
let consecutiveNoProgress = 0;
|
|
@@ -2202,6 +2258,7 @@ What's the next action?`;
|
|
|
2202
2258
|
this.updateStatusMessage(null);
|
|
2203
2259
|
this.uiAdapter.endProcessing('Ready for prompts');
|
|
2204
2260
|
this.setIdleStatus();
|
|
2261
|
+
this.stopStreamingHeartbeat();
|
|
2205
2262
|
display.newLine();
|
|
2206
2263
|
// Claude Code style: Show unified status bar before prompt
|
|
2207
2264
|
// This creates consistent UI between startup and post-streaming
|
|
@@ -2472,7 +2529,9 @@ What's the next action?`;
|
|
|
2472
2529
|
display.stream('\n');
|
|
2473
2530
|
}
|
|
2474
2531
|
display.stream(chunk);
|
|
2532
|
+
this.requestPromptRefresh();
|
|
2475
2533
|
},
|
|
2534
|
+
onStreamFallback: (info) => this.handleStreamingFallback(info),
|
|
2476
2535
|
onAssistantMessage: (content, metadata) => {
|
|
2477
2536
|
const enriched = this.buildDisplayMetadata(metadata);
|
|
2478
2537
|
// Update spinner based on message type
|
|
@@ -2515,13 +2574,14 @@ What's the next action?`;
|
|
|
2515
2574
|
display.showNarrative(content.trim());
|
|
2516
2575
|
}
|
|
2517
2576
|
// The isProcessing flag already shows "⏳ Processing..." - no need for duplicate status
|
|
2518
|
-
this.
|
|
2577
|
+
this.requestPromptRefresh();
|
|
2519
2578
|
return;
|
|
2520
2579
|
}
|
|
2521
2580
|
const cleanup = this.handleContextTelemetry(metadata, enriched);
|
|
2522
2581
|
if (cleanup) {
|
|
2523
2582
|
this.pendingCleanup = cleanup;
|
|
2524
2583
|
}
|
|
2584
|
+
this.requestPromptRefresh();
|
|
2525
2585
|
},
|
|
2526
2586
|
onContextSquishing: (message) => {
|
|
2527
2587
|
// Show notification in UI when auto context squishing occurs
|
|
@@ -2567,6 +2627,7 @@ What's the next action?`;
|
|
|
2567
2627
|
// Update UI to show operation was cancelled
|
|
2568
2628
|
display.showWarning('Operation cancelled.');
|
|
2569
2629
|
this.updateStatusMessage(null);
|
|
2630
|
+
this.stopStreamingHeartbeat();
|
|
2570
2631
|
this.terminalInput.setStreaming(false);
|
|
2571
2632
|
this.terminalInput.render();
|
|
2572
2633
|
},
|
|
@@ -2865,6 +2926,13 @@ What's the next action?`;
|
|
|
2865
2926
|
const message = error instanceof Error ? error.message : String(error);
|
|
2866
2927
|
display.showError(message);
|
|
2867
2928
|
}
|
|
2929
|
+
handleStreamingFallback(info) {
|
|
2930
|
+
const detailText = info.message.trim();
|
|
2931
|
+
const detail = detailText ? ` Error: ${detailText}` : '';
|
|
2932
|
+
display.showWarning(`Streaming failed, retrying without streaming.${detail}`);
|
|
2933
|
+
this.startStreamingHeartbeat('Fallback in progress');
|
|
2934
|
+
this.requestPromptRefresh(true);
|
|
2935
|
+
}
|
|
2868
2936
|
handleProviderError(error, retryAction) {
|
|
2869
2937
|
const apiKeyIssue = detectApiKeyError(error, this.sessionState.provider);
|
|
2870
2938
|
if (!apiKeyIssue) {
|