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.
Files changed (68) hide show
  1. package/dist/core/agent.d.ts +6 -0
  2. package/dist/core/agent.d.ts.map +1 -1
  3. package/dist/core/agent.js +10 -1
  4. package/dist/core/agent.js.map +1 -1
  5. package/dist/core/errors/errorUtils.d.ts +87 -0
  6. package/dist/core/errors/errorUtils.d.ts.map +1 -0
  7. package/dist/core/errors/errorUtils.js +158 -0
  8. package/dist/core/errors/errorUtils.js.map +1 -0
  9. package/dist/core/resultVerification.js.map +1 -1
  10. package/dist/core/toolValidation.d.ts +117 -0
  11. package/dist/core/toolValidation.d.ts.map +1 -0
  12. package/dist/core/toolValidation.js +282 -0
  13. package/dist/core/toolValidation.js.map +1 -0
  14. package/dist/core/types/utilityTypes.d.ts +192 -0
  15. package/dist/core/types/utilityTypes.d.ts.map +1 -0
  16. package/dist/core/types/utilityTypes.js +272 -0
  17. package/dist/core/types/utilityTypes.js.map +1 -0
  18. package/dist/shell/interactiveShell.d.ts +9 -0
  19. package/dist/shell/interactiveShell.d.ts.map +1 -1
  20. package/dist/shell/interactiveShell.js +69 -1
  21. package/dist/shell/interactiveShell.js.map +1 -1
  22. package/dist/shell/systemPrompt.d.ts.map +1 -1
  23. package/dist/shell/systemPrompt.js +5 -0
  24. package/dist/shell/systemPrompt.js.map +1 -1
  25. package/dist/shell/terminalInput.d.ts +1 -0
  26. package/dist/shell/terminalInput.d.ts.map +1 -1
  27. package/dist/shell/terminalInput.js +9 -2
  28. package/dist/shell/terminalInput.js.map +1 -1
  29. package/dist/shell/terminalInputAdapter.d.ts +4 -0
  30. package/dist/shell/terminalInputAdapter.d.ts.map +1 -1
  31. package/dist/shell/terminalInputAdapter.js +6 -0
  32. package/dist/shell/terminalInputAdapter.js.map +1 -1
  33. package/dist/tools/planningTools.d.ts +1 -0
  34. package/dist/tools/planningTools.d.ts.map +1 -1
  35. package/dist/tools/planningTools.js +48 -0
  36. package/dist/tools/planningTools.js.map +1 -1
  37. package/dist/ui/display.d.ts +5 -49
  38. package/dist/ui/display.d.ts.map +1 -1
  39. package/dist/ui/display.js +36 -335
  40. package/dist/ui/display.js.map +1 -1
  41. package/dist/ui/toolDisplay.d.ts.map +1 -1
  42. package/dist/ui/toolDisplay.js +17 -0
  43. package/dist/ui/toolDisplay.js.map +1 -1
  44. package/dist/utils/planFormatter.d.ts +34 -0
  45. package/dist/utils/planFormatter.d.ts.map +1 -0
  46. package/dist/utils/planFormatter.js +140 -0
  47. package/dist/utils/planFormatter.js.map +1 -0
  48. package/package.json +2 -2
  49. package/dist/shell/bracketedPasteManager.d.ts +0 -128
  50. package/dist/shell/bracketedPasteManager.d.ts.map +0 -1
  51. package/dist/shell/bracketedPasteManager.enhanced.d.ts +0 -2
  52. package/dist/shell/bracketedPasteManager.enhanced.d.ts.map +0 -1
  53. package/dist/shell/bracketedPasteManager.enhanced.js +0 -4
  54. package/dist/shell/bracketedPasteManager.enhanced.js.map +0 -1
  55. package/dist/shell/bracketedPasteManager.js +0 -372
  56. package/dist/shell/bracketedPasteManager.js.map +0 -1
  57. package/dist/shell/chatBox.d.ts +0 -228
  58. package/dist/shell/chatBox.d.ts.map +0 -1
  59. package/dist/shell/chatBox.js +0 -811
  60. package/dist/shell/chatBox.js.map +0 -1
  61. package/dist/shell/unifiedChatBox.d.ts +0 -194
  62. package/dist/shell/unifiedChatBox.d.ts.map +0 -1
  63. package/dist/shell/unifiedChatBox.js +0 -585
  64. package/dist/shell/unifiedChatBox.js.map +0 -1
  65. package/dist/ui/persistentPrompt.d.ts +0 -545
  66. package/dist/ui/persistentPrompt.d.ts.map +0 -1
  67. package/dist/ui/persistentPrompt.js +0 -1529
  68. 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":"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;gBAElC,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;IAkChB;;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,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;IA6E5B;;;;;;;;;;;OAWG;YACW,wBAAwB;IAkQtC;;;;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;IA0JpB;;;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,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"}
1
+ {"version":3,"file":"interactiveShell.d.ts","sourceRoot":"","sources":["../../src/shell/interactiveShell.ts"],"names":[],"mappings":"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"}
@@ -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.terminalInput.render();
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) {