erosolar-cli 1.7.155 → 1.7.157

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 (90) hide show
  1. package/README.md +7 -17
  2. package/agents/erosolar-code.rules.json +1 -111
  3. package/agents/general.rules.json +0 -6
  4. package/dist/bin/erosolar.js +0 -22
  5. package/dist/bin/erosolar.js.map +1 -1
  6. package/dist/bin/selfTest.js +2 -190
  7. package/dist/bin/selfTest.js.map +1 -1
  8. package/dist/core/agent.d.ts +0 -12
  9. package/dist/core/agent.d.ts.map +1 -1
  10. package/dist/core/agent.js +12 -75
  11. package/dist/core/agent.js.map +1 -1
  12. package/dist/core/contextManager.d.ts +1 -2
  13. package/dist/core/contextManager.d.ts.map +1 -1
  14. package/dist/core/contextManager.js +2 -11
  15. package/dist/core/contextManager.js.map +1 -1
  16. package/dist/core/multilinePasteHandler.d.ts +4 -8
  17. package/dist/core/multilinePasteHandler.d.ts.map +1 -1
  18. package/dist/core/multilinePasteHandler.js +17 -67
  19. package/dist/core/multilinePasteHandler.js.map +1 -1
  20. package/dist/core/preferences.js +2 -8
  21. package/dist/core/preferences.js.map +1 -1
  22. package/dist/core/resultVerification.d.ts +1 -1
  23. package/dist/core/resultVerification.d.ts.map +1 -1
  24. package/dist/core/resultVerification.js +10 -11
  25. package/dist/core/resultVerification.js.map +1 -1
  26. package/dist/core/schemaValidator.d.ts.map +1 -1
  27. package/dist/core/schemaValidator.js +1 -36
  28. package/dist/core/schemaValidator.js.map +1 -1
  29. package/dist/core/toolRuntime.d.ts +0 -61
  30. package/dist/core/toolRuntime.d.ts.map +1 -1
  31. package/dist/core/toolRuntime.js +1 -303
  32. package/dist/core/toolRuntime.js.map +1 -1
  33. package/dist/core/unified/schema.d.ts.map +1 -1
  34. package/dist/core/unified/schema.js +1 -34
  35. package/dist/core/unified/schema.js.map +1 -1
  36. package/dist/headless/headlessApp.d.ts.map +1 -1
  37. package/dist/headless/headlessApp.js +0 -3
  38. package/dist/headless/headlessApp.js.map +1 -1
  39. package/dist/providers/anthropicProvider.d.ts.map +1 -1
  40. package/dist/providers/anthropicProvider.js +1 -4
  41. package/dist/providers/anthropicProvider.js.map +1 -1
  42. package/dist/shell/bracketedPasteManager.d.ts.map +1 -1
  43. package/dist/shell/bracketedPasteManager.js +3 -5
  44. package/dist/shell/bracketedPasteManager.js.map +1 -1
  45. package/dist/shell/composableMessage.js +2 -2
  46. package/dist/shell/composableMessage.js.map +1 -1
  47. package/dist/shell/interactiveShell.d.ts +1 -6
  48. package/dist/shell/interactiveShell.d.ts.map +1 -1
  49. package/dist/shell/interactiveShell.js +95 -421
  50. package/dist/shell/interactiveShell.js.map +1 -1
  51. package/dist/shell/shellApp.d.ts.map +1 -1
  52. package/dist/shell/shellApp.js +0 -7
  53. package/dist/shell/shellApp.js.map +1 -1
  54. package/dist/shell/systemPrompt.js +5 -5
  55. package/dist/shell/systemPrompt.js.map +1 -1
  56. package/dist/tools/bashTools.d.ts +0 -8
  57. package/dist/tools/bashTools.d.ts.map +1 -1
  58. package/dist/tools/bashTools.js +5 -80
  59. package/dist/tools/bashTools.js.map +1 -1
  60. package/dist/tools/diffUtils.d.ts.map +1 -1
  61. package/dist/tools/diffUtils.js +8 -12
  62. package/dist/tools/diffUtils.js.map +1 -1
  63. package/dist/tools/editTools.d.ts.map +1 -1
  64. package/dist/tools/editTools.js +36 -386
  65. package/dist/tools/editTools.js.map +1 -1
  66. package/dist/tools/fileTools.d.ts.map +1 -1
  67. package/dist/tools/fileTools.js +130 -25
  68. package/dist/tools/fileTools.js.map +1 -1
  69. package/dist/ui/ShellUIAdapter.d.ts +0 -5
  70. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  71. package/dist/ui/ShellUIAdapter.js +0 -21
  72. package/dist/ui/ShellUIAdapter.js.map +1 -1
  73. package/dist/ui/persistentPrompt.d.ts +10 -83
  74. package/dist/ui/persistentPrompt.d.ts.map +1 -1
  75. package/dist/ui/persistentPrompt.js +119 -521
  76. package/dist/ui/persistentPrompt.js.map +1 -1
  77. package/dist/ui/richText.js +4 -4
  78. package/dist/ui/richText.js.map +1 -1
  79. package/dist/ui/shortcutsHelp.d.ts.map +1 -1
  80. package/dist/ui/shortcutsHelp.js +13 -31
  81. package/dist/ui/shortcutsHelp.js.map +1 -1
  82. package/package.json +1 -4
  83. package/dist/ui/EnhancedPinnedChatBox.d.ts +0 -93
  84. package/dist/ui/EnhancedPinnedChatBox.d.ts.map +0 -1
  85. package/dist/ui/EnhancedPinnedChatBox.js +0 -309
  86. package/dist/ui/EnhancedPinnedChatBox.js.map +0 -1
  87. package/dist/ui/PinnedChatBoxEnhancer.d.ts +0 -88
  88. package/dist/ui/PinnedChatBoxEnhancer.d.ts.map +0 -1
  89. package/dist/ui/PinnedChatBoxEnhancer.js +0 -205
  90. package/dist/ui/PinnedChatBoxEnhancer.js.map +0 -1
@@ -1,309 +0,0 @@
1
- /**
2
- * EnhancedPinnedChatBox - Persistent chat box with streaming-aware input handling
3
- *
4
- * Features:
5
- * - Supports typing while AI is streaming responses
6
- * - Gracefully handles long pastes without submission errors
7
- * - Only submits to AI when user hits Enter key
8
- * - Maintains compatibility with existing Erosolar-cli interface
9
- */
10
- import { PinnedChatBox } from './persistentPrompt.js';
11
- export class EnhancedPinnedChatBox extends PinnedChatBox {
12
- config;
13
- isStreaming = false;
14
- pasteBuffer = '';
15
- pasteStartTime = 0;
16
- pasteTimeoutId;
17
- constructor(writeStream, config = {}) {
18
- super(writeStream);
19
- this.config = {
20
- maxPasteLength: 5000,
21
- enablePasteSummarization: true,
22
- allowInputDuringStreaming: true,
23
- promptText: '> ',
24
- ...config
25
- };
26
- // Override the default prompt text
27
- this.updatePromptText(this.config.promptText);
28
- }
29
- /**
30
- * Set streaming state - allows/disallows input during streaming
31
- */
32
- setStreamingState(isStreaming) {
33
- this.isStreaming = isStreaming;
34
- if (isStreaming && this.config.allowInputDuringStreaming) {
35
- // Show a subtle indicator that AI is streaming
36
- this.updateStatusBar({
37
- message: 'AI is responding... (you can still type)'
38
- });
39
- }
40
- else if (!isStreaming) {
41
- // Clear streaming indicator
42
- this.updateStatusBar({
43
- message: undefined
44
- });
45
- }
46
- }
47
- /**
48
- * Enhanced input handler that supports long pastes
49
- */
50
- handleInput(input) {
51
- // Check if this looks like a paste operation (multiple lines or rapid input)
52
- const isPaste = this.detectPasteOperation(input);
53
- if (isPaste && this.config.enablePasteSummarization) {
54
- this.handlePasteInput(input);
55
- }
56
- else {
57
- // Normal input handling
58
- this.handleNormalInput(input);
59
- }
60
- }
61
- /**
62
- * Detect if input is likely a paste operation
63
- */
64
- detectPasteOperation(input) {
65
- const now = Date.now();
66
- const timeSinceLastInput = now - this.pasteStartTime;
67
- // Multiple lines suggest paste
68
- if (input.includes('\n')) {
69
- return true;
70
- }
71
- // Rapid input suggests paste
72
- if (timeSinceLastInput < 100 && input.length > 10) {
73
- return true;
74
- }
75
- // Very long single line suggests paste
76
- if (input.length > 100) {
77
- return true;
78
- }
79
- this.pasteStartTime = now;
80
- return false;
81
- }
82
- /**
83
- * Handle paste operations with summarization
84
- */
85
- handlePasteInput(input) {
86
- // Add to paste buffer
87
- this.pasteBuffer += input;
88
- // Clear any existing timeout
89
- if (this.pasteTimeoutId) {
90
- clearTimeout(this.pasteTimeoutId);
91
- }
92
- // Set timeout to process paste after user stops pasting
93
- this.pasteTimeoutId = setTimeout(() => {
94
- this.processPasteBuffer();
95
- }, 500); // Wait 500ms after last paste input
96
- // Show paste progress indicator
97
- const pasteLength = this.pasteBuffer.length;
98
- const lines = this.pasteBuffer.split('\n').length;
99
- this.updateStatusBar({
100
- message: `Pasting... (${pasteLength} chars, ${lines} lines)`
101
- });
102
- }
103
- /**
104
- * Process the accumulated paste buffer
105
- */
106
- processPasteBuffer() {
107
- if (!this.pasteBuffer)
108
- return;
109
- const pasteLength = this.pasteBuffer.length;
110
- const lines = this.pasteBuffer.split('\n').length;
111
- // Check if paste needs summarization
112
- if (pasteLength > this.config.maxPasteLength && this.config.enablePasteSummarization) {
113
- this.summarizeAndQueuePaste(this.pasteBuffer);
114
- }
115
- else {
116
- // Queue the paste as-is
117
- this.queueCommand({
118
- command: this.pasteBuffer,
119
- timestamp: Date.now(),
120
- source: 'paste'
121
- });
122
- }
123
- // Clear paste buffer and indicators
124
- this.pasteBuffer = '';
125
- this.updateStatusBar({
126
- message: `Pasted ${pasteLength} chars, ${lines} lines (ready for Enter)`
127
- });
128
- // Clear the message after a delay
129
- setTimeout(() => {
130
- this.updateStatusBar({
131
- message: undefined
132
- });
133
- }, 3000);
134
- }
135
- /**
136
- * Summarize long pastes to avoid context overflow
137
- */
138
- summarizeAndQueuePaste(content) {
139
- const lines = content.split('\n');
140
- const totalLines = lines.length;
141
- const totalChars = content.length;
142
- // Create a summary that preserves key information
143
- const summary = this.createPasteSummary(content, lines);
144
- // Queue the summarized version
145
- this.queueCommand({
146
- command: summary,
147
- timestamp: Date.now(),
148
- source: 'paste-summary',
149
- metadata: {
150
- originalLength: totalChars,
151
- originalLines: totalLines,
152
- summarizedLength: summary.length
153
- }
154
- });
155
- // Show summary notification
156
- this.updateStatusBar({
157
- message: `Long paste summarized: ${totalChars} chars → ${summary.length} chars`
158
- });
159
- }
160
- /**
161
- * Create a smart summary of long paste content
162
- */
163
- createPasteSummary(content, lines) {
164
- const totalLines = lines.length;
165
- const totalChars = content.length;
166
- // For very long content, create a structured summary
167
- if (totalChars > 10000) {
168
- return this.createStructuredSummary(content, lines);
169
- }
170
- // For moderately long content, take first and last parts
171
- const maxLines = Math.min(50, Math.floor(totalLines * 0.3));
172
- const firstLines = lines.slice(0, maxLines).join('\n');
173
- const lastLines = lines.slice(-maxLines).join('\n');
174
- return `[PASTE SUMMARY - ${totalChars} chars, ${totalLines} lines]
175
- ${firstLines}
176
-
177
- [... ${totalLines - (maxLines * 2)} lines omitted ...]
178
-
179
- ${lastLines}
180
-
181
- [End of paste - ${totalChars} total characters]`;
182
- }
183
- /**
184
- * Create structured summary for very long pastes
185
- */
186
- createStructuredSummary(content, lines) {
187
- const totalLines = lines.length;
188
- const totalChars = content.length;
189
- // Analyze content type
190
- const isCode = this.detectCodeContent(content);
191
- const isLog = this.detectLogContent(content);
192
- let summary = `[LONG PASTE SUMMARY - ${totalChars} chars, ${totalLines} lines]\n`;
193
- if (isCode) {
194
- summary += `Content type: Code\n`;
195
- // Include file headers and key functions
196
- const fileHeaders = lines.filter(line => line.includes('import ') ||
197
- line.includes('export ') ||
198
- line.includes('function ') ||
199
- line.includes('class ')).slice(0, 10);
200
- if (fileHeaders.length > 0) {
201
- summary += `Key elements:\n${fileHeaders.join('\n')}\n`;
202
- }
203
- }
204
- else if (isLog) {
205
- summary += `Content type: Log file\n`;
206
- // Include first and last log entries
207
- const firstLogs = lines.slice(0, 5).join('\n');
208
- const lastLogs = lines.slice(-5).join('\n');
209
- summary += `First entries:\n${firstLogs}\n\nLast entries:\n${lastLogs}\n`;
210
- }
211
- else {
212
- // Text content - include first and last paragraphs
213
- const firstPart = lines.slice(0, 10).join('\n');
214
- const lastPart = lines.slice(-10).join('\n');
215
- summary += `First part:\n${firstPart}\n\nLast part:\n${lastPart}\n`;
216
- }
217
- summary += `\n[Use '/full' command to see complete content if needed]`;
218
- return summary;
219
- }
220
- /**
221
- * Detect if content is code
222
- */
223
- detectCodeContent(content) {
224
- const codeIndicators = [
225
- 'function ', 'class ', 'import ', 'export ', 'const ', 'let ', 'var ',
226
- 'if (', 'for (', 'while (', 'return ', '=>', '{', '}', ';'
227
- ];
228
- return codeIndicators.some(indicator => content.includes(indicator));
229
- }
230
- /**
231
- * Detect if content is log data
232
- */
233
- detectLogContent(content) {
234
- const logIndicators = [
235
- 'ERROR', 'WARN', 'INFO', 'DEBUG',
236
- '\t', ' ', ' ', // Common log indentation
237
- 'at ', 'Exception:', 'Error:'
238
- ];
239
- return logIndicators.some(indicator => content.includes(indicator));
240
- }
241
- /**
242
- * Handle normal (non-paste) input
243
- */
244
- handleNormalInput(input) {
245
- // Clear any pending paste operations
246
- if (this.pasteTimeoutId) {
247
- clearTimeout(this.pasteTimeoutId);
248
- this.pasteTimeoutId = undefined;
249
- }
250
- this.pasteBuffer = '';
251
- // Handle Enter key submission
252
- if (input === '\n' || input === '\r') {
253
- this.handleEnterKey();
254
- }
255
- else {
256
- // Update input display
257
- this.updateInput(input, input.length);
258
- }
259
- }
260
- /**
261
- * Handle Enter key - only submit when user explicitly presses Enter
262
- */
263
- handleEnterKey() {
264
- const currentInput = this.getCurrentInput();
265
- if (currentInput.trim()) {
266
- // Queue the command for processing
267
- this.queueCommand({
268
- command: currentInput,
269
- timestamp: Date.now(),
270
- source: 'manual'
271
- });
272
- // Clear input after queuing
273
- this.updateInput('', 0);
274
- }
275
- }
276
- /**
277
- * Get current input text
278
- */
279
- getCurrentInput() {
280
- // Access the protected/private input buffer
281
- // This might need adjustment based on the actual PinnedChatBox implementation
282
- return this.inputBuffer || '';
283
- }
284
- /**
285
- * Enhanced dispose method
286
- */
287
- dispose() {
288
- // Clear any pending timeouts
289
- if (this.pasteTimeoutId) {
290
- clearTimeout(this.pasteTimeoutId);
291
- this.pasteTimeoutId = undefined;
292
- }
293
- // Call parent dispose
294
- super.dispose();
295
- }
296
- /**
297
- * Check if input is allowed (respects streaming state)
298
- */
299
- isInputAllowed() {
300
- return this.config.allowInputDuringStreaming || !this.isStreaming;
301
- }
302
- /**
303
- * Get current streaming state
304
- */
305
- getStreamingState() {
306
- return this.isStreaming;
307
- }
308
- } // Test file
309
- //# 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,88 +0,0 @@
1
- /**
2
- * PinnedChatBoxEnhancer - Patches existing PinnedChatBox to add enhanced features
3
- *
4
- * This enhancer can be used to upgrade existing PinnedChatBox instances
5
- * without requiring major code changes to the interactive shell.
6
- */
7
- import { PinnedChatBox } from './persistentPrompt.js';
8
- import { EnhancedPinnedChatBox, type EnhancedPinnedChatBoxConfig } from './EnhancedPinnedChatBox.js';
9
- export interface PatchOptions {
10
- /** Replace the original chat box completely */
11
- replaceOriginal?: boolean;
12
- /** Enhanced configuration */
13
- config?: EnhancedPinnedChatBoxConfig;
14
- /** Callback when streaming state changes */
15
- onStreamingStateChange?: (isStreaming: boolean) => void;
16
- }
17
- /**
18
- * Enhanced PinnedChatBox with patched methods
19
- */
20
- export declare class PatchedPinnedChatBox extends PinnedChatBox {
21
- private enhancedChatBox;
22
- private enhancedMethods;
23
- private originalMethods;
24
- private isEnhanced;
25
- constructor(original: PinnedChatBox, enhancedChatBox: EnhancedPinnedChatBox);
26
- /**
27
- * Patch methods to use enhanced functionality
28
- */
29
- private patchMethods;
30
- /**
31
- * Patch a specific method
32
- */
33
- private patchMethod;
34
- /**
35
- * Get the underlying enhanced chat box
36
- */
37
- getEnhancedChatBox(): EnhancedPinnedChatBox;
38
- /**
39
- * Check if patching was successful
40
- */
41
- isPatched(): boolean;
42
- }
43
- /**
44
- * Main enhancer class that handles patching
45
- */
46
- export declare class PinnedChatBoxEnhancer {
47
- private originalChatBox?;
48
- private enhancedChatBox?;
49
- private patchedChatBox?;
50
- private isPatched;
51
- /**
52
- * Patch an existing PinnedChatBox instance
53
- */
54
- patch(originalChatBox: PinnedChatBox, options?: PatchOptions): PinnedChatBox;
55
- /**
56
- * Create a new enhanced chat box (alternative to patching)
57
- */
58
- createEnhanced(config?: EnhancedPinnedChatBoxConfig): EnhancedPinnedChatBox;
59
- /**
60
- * Set streaming state on the enhanced chat box
61
- */
62
- setStreamingState(isStreaming: boolean): void;
63
- /**
64
- * Get the enhanced chat box instance
65
- */
66
- getEnhancedChatBox(): EnhancedPinnedChatBox | undefined;
67
- /**
68
- * Get the patched chat box instance
69
- */
70
- getPatchedChatBox(): PatchedPinnedChatBox | undefined;
71
- /**
72
- * Check if patching was successful
73
- */
74
- isPatched(): boolean;
75
- /**
76
- * Revert to original chat box
77
- */
78
- revert(): PinnedChatBox | undefined;
79
- /**
80
- * Dispose of all resources
81
- */
82
- dispose(): void;
83
- }
84
- export declare function getGlobalEnhancer(): PinnedChatBoxEnhancer;
85
- export declare function patchPinnedChatBox(originalChatBox: PinnedChatBox, options?: PatchOptions): PinnedChatBox;
86
- export declare function setStreamingState(isStreaming: boolean): void;
87
- export declare function disposeEnhancer(): void;
88
- //# sourceMappingURL=PinnedChatBoxEnhancer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PinnedChatBoxEnhancer.d.ts","sourceRoot":"","sources":["../../src/ui/PinnedChatBoxEnhancer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAA+C,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,qBAAqB,EAAE,KAAK,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAErG,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6BAA6B;IAC7B,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,4CAA4C;IAC5C,sBAAsB,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;CACzD;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;IAOnD,OAAO,CAAC,eAAe;IANzB,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,UAAU,CAAkB;gBAGlC,QAAQ,EAAE,aAAa,EACf,eAAe,EAAE,qBAAqB;IAkBhD;;OAEG;IACH,OAAO,CAAC,YAAY;IA2CpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAUnB;;OAEG;IACH,kBAAkB,IAAI,qBAAqB;IAI3C;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,eAAe,CAAC,CAAgB;IACxC,OAAO,CAAC,eAAe,CAAC,CAAwB;IAChD,OAAO,CAAC,cAAc,CAAC,CAAuB;IAC9C,OAAO,CAAC,SAAS,CAAkB;IAEnC;;OAEG;IACH,KAAK,CACH,eAAe,EAAE,aAAa,EAC9B,OAAO,GAAE,YAAiB,GACzB,aAAa;IAyBhB;;OAEG;IACH,cAAc,CAAC,MAAM,CAAC,EAAE,2BAA2B,GAAG,qBAAqB;IAK3E;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAM7C;;OAEG;IACH,kBAAkB,IAAI,qBAAqB,GAAG,SAAS;IAIvD;;OAEG;IACH,iBAAiB,IAAI,oBAAoB,GAAG,SAAS;IAIrD;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,MAAM,IAAI,aAAa,GAAG,SAAS;IAiBnC;;OAEG;IACH,OAAO,IAAI,IAAI;CAUhB;AAOD,wBAAgB,iBAAiB,IAAI,qBAAqB,CAKzD;AAED,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,aAAa,EAC9B,OAAO,GAAE,YAAiB,GACzB,aAAa,CAGf;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAG5D;AAED,wBAAgB,eAAe,IAAI,IAAI,CAKtC"}
@@ -1,205 +0,0 @@
1
- /**
2
- * PinnedChatBoxEnhancer - Patches existing PinnedChatBox to add enhanced features
3
- *
4
- * This enhancer can be used to upgrade existing PinnedChatBox instances
5
- * without requiring major code changes to the interactive shell.
6
- */
7
- import { PinnedChatBox } from './persistentPrompt.js';
8
- import { EnhancedPinnedChatBox } from './EnhancedPinnedChatBox.js';
9
- /**
10
- * Enhanced PinnedChatBox with patched methods
11
- */
12
- export class PatchedPinnedChatBox extends PinnedChatBox {
13
- enhancedChatBox;
14
- enhancedMethods = new Map();
15
- originalMethods = new Map();
16
- isEnhanced = false;
17
- constructor(original, enhancedChatBox) {
18
- // We need to work around the constructor limitation
19
- // by patching methods on the existing instance
20
- super(process.stdout); // This will be overridden
21
- this.enhancedChatBox = enhancedChatBox;
22
- // Copy all properties from original
23
- Object.getOwnPropertyNames(original).forEach(prop => {
24
- if (prop in this)
25
- return; // Skip existing properties
26
- const descriptor = Object.getOwnPropertyDescriptor(original, prop);
27
- if (descriptor) {
28
- Object.defineProperty(this, prop, descriptor);
29
- }
30
- });
31
- this.patchMethods();
32
- }
33
- /**
34
- * Patch methods to use enhanced functionality
35
- */
36
- patchMethods() {
37
- // Patch handleInput to use enhanced input handling
38
- this.patchMethod('handleInput', (input) => {
39
- this.enhancedChatBox.handleInput(input);
40
- });
41
- // Patch dispose to clean up enhanced chat box
42
- this.patchMethod('dispose', () => {
43
- this.enhancedChatBox.dispose();
44
- // Call original dispose if it exists
45
- const originalDispose = this.originalMethods.get('dispose');
46
- if (originalDispose) {
47
- originalDispose.call(this);
48
- }
49
- });
50
- // Patch queueCommand to route through enhanced chat box
51
- this.patchMethod('queueCommand', (command) => {
52
- this.enhancedChatBox.queueCommand(command);
53
- });
54
- // Patch updateInput to sync with enhanced chat box
55
- this.patchMethod('updateInput', (input, cursorPos) => {
56
- this.enhancedChatBox.updateInput(input, cursorPos);
57
- });
58
- // Patch updateStatusBar to sync with enhanced chat box
59
- this.patchMethod('updateStatusBar', (state) => {
60
- this.enhancedChatBox.updateStatusBar(state);
61
- });
62
- // Patch show/hide methods
63
- this.patchMethod('show', () => {
64
- this.enhancedChatBox.show();
65
- });
66
- this.patchMethod('hide', () => {
67
- this.enhancedChatBox.hide();
68
- });
69
- this.isEnhanced = true;
70
- }
71
- /**
72
- * Patch a specific method
73
- */
74
- patchMethod(methodName, enhancedImpl) {
75
- const originalMethod = this[methodName];
76
- if (originalMethod && typeof originalMethod === 'function') {
77
- this.originalMethods.set(methodName, originalMethod);
78
- }
79
- this[methodName] = enhancedImpl;
80
- this.enhancedMethods.set(methodName, enhancedImpl);
81
- }
82
- /**
83
- * Get the underlying enhanced chat box
84
- */
85
- getEnhancedChatBox() {
86
- return this.enhancedChatBox;
87
- }
88
- /**
89
- * Check if patching was successful
90
- */
91
- isPatched() {
92
- return this.isEnhanced;
93
- }
94
- }
95
- /**
96
- * Main enhancer class that handles patching
97
- */
98
- export class PinnedChatBoxEnhancer {
99
- originalChatBox;
100
- enhancedChatBox;
101
- patchedChatBox;
102
- isPatched = false;
103
- /**
104
- * Patch an existing PinnedChatBox instance
105
- */
106
- patch(originalChatBox, options = {}) {
107
- this.originalChatBox = originalChatBox;
108
- // Create enhanced chat box
109
- this.enhancedChatBox = new EnhancedPinnedChatBox(process.stdout, options.config);
110
- // Create patched version
111
- this.patchedChatBox = new PatchedPinnedChatBox(originalChatBox, this.enhancedChatBox);
112
- this.isPatched = true;
113
- // Set up streaming state callback
114
- if (options.onStreamingStateChange) {
115
- // We'll handle this through the enhanced chat box methods
116
- }
117
- return this.patchedChatBox;
118
- }
119
- /**
120
- * Create a new enhanced chat box (alternative to patching)
121
- */
122
- createEnhanced(config) {
123
- this.enhancedChatBox = new EnhancedPinnedChatBox(process.stdout, config);
124
- return this.enhancedChatBox;
125
- }
126
- /**
127
- * Set streaming state on the enhanced chat box
128
- */
129
- setStreamingState(isStreaming) {
130
- if (this.enhancedChatBox) {
131
- this.enhancedChatBox.setStreamingState(isStreaming);
132
- }
133
- }
134
- /**
135
- * Get the enhanced chat box instance
136
- */
137
- getEnhancedChatBox() {
138
- return this.enhancedChatBox;
139
- }
140
- /**
141
- * Get the patched chat box instance
142
- */
143
- getPatchedChatBox() {
144
- return this.patchedChatBox;
145
- }
146
- /**
147
- * Check if patching was successful
148
- */
149
- isPatched() {
150
- return this.isPatched;
151
- }
152
- /**
153
- * Revert to original chat box
154
- */
155
- revert() {
156
- if (!this.originalChatBox) {
157
- return undefined;
158
- }
159
- // Dispose enhanced chat box
160
- if (this.enhancedChatBox) {
161
- this.enhancedChatBox.dispose();
162
- this.enhancedChatBox = undefined;
163
- }
164
- this.patchedChatBox = undefined;
165
- this.isPatched = false;
166
- return this.originalChatBox;
167
- }
168
- /**
169
- * Dispose of all resources
170
- */
171
- dispose() {
172
- if (this.enhancedChatBox) {
173
- this.enhancedChatBox.dispose();
174
- this.enhancedChatBox = undefined;
175
- }
176
- this.originalChatBox = undefined;
177
- this.patchedChatBox = undefined;
178
- this.isPatched = false;
179
- }
180
- }
181
- /**
182
- * Global enhancer instance for easy access
183
- */
184
- let globalEnhancer;
185
- export function getGlobalEnhancer() {
186
- if (!globalEnhancer) {
187
- globalEnhancer = new PinnedChatBoxEnhancer();
188
- }
189
- return globalEnhancer;
190
- }
191
- export function patchPinnedChatBox(originalChatBox, options = {}) {
192
- const enhancer = getGlobalEnhancer();
193
- return enhancer.patch(originalChatBox, options);
194
- }
195
- export function setStreamingState(isStreaming) {
196
- const enhancer = getGlobalEnhancer();
197
- enhancer.setStreamingState(isStreaming);
198
- }
199
- export function disposeEnhancer() {
200
- if (globalEnhancer) {
201
- globalEnhancer.dispose();
202
- globalEnhancer = undefined;
203
- }
204
- }
205
- //# sourceMappingURL=PinnedChatBoxEnhancer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PinnedChatBoxEnhancer.js","sourceRoot":"","sources":["../../src/ui/PinnedChatBoxEnhancer.ts"],"names":[],"mappings":"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"}