erosolar-cli 1.7.30 → 1.7.32

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.
@@ -0,0 +1,106 @@
1
+ /**
2
+ * MultiLinePasteManager - Enhanced multi-line paste handling with improved UX
3
+ *
4
+ * Features:
5
+ * - Short block description during input: "[Pasted: 15 lines]"
6
+ * - Full content sent to AI on submission
7
+ * - Graceful handling of large pastes
8
+ * - Visual feedback for paste operations
9
+ * - Configurable preview length
10
+ */
11
+ export interface MultiLinePasteResult {
12
+ handled: boolean;
13
+ result?: string;
14
+ isPending?: boolean;
15
+ lineCount?: number;
16
+ preview?: string;
17
+ fullContent?: string;
18
+ }
19
+ export interface MultiLinePasteConfig {
20
+ enabled: boolean;
21
+ /** Maximum characters for preview display */
22
+ maxPreviewLength: number;
23
+ /** Time threshold (ms) for multi-line detection */
24
+ pasteThresholdMs: number;
25
+ /** Enable debug logging */
26
+ debug: boolean;
27
+ /** Show visual indicators for paste operations */
28
+ showVisualIndicators: boolean;
29
+ }
30
+ export interface PasteState {
31
+ enabled: boolean;
32
+ inPaste: boolean;
33
+ pasteBuffer: string[];
34
+ multiLineBuffer: string[];
35
+ multiLineMode: boolean;
36
+ lastInputTime: number;
37
+ rawPasteBuffer: string;
38
+ capturingRaw: boolean;
39
+ pasteJustCaptured: boolean;
40
+ pasteJustCapturedLineCount: number;
41
+ }
42
+ export declare class MultiLinePasteManager {
43
+ private config;
44
+ private state;
45
+ constructor(config?: Partial<MultiLinePasteConfig>);
46
+ /**
47
+ * Process input and detect multi-line pastes
48
+ */
49
+ process(input: string): MultiLinePasteResult;
50
+ /**
51
+ * Handle bracketed paste mode (ANSI escape sequences)
52
+ */
53
+ private handleBracketedPaste;
54
+ /**
55
+ * Handle multi-line detection via timing
56
+ */
57
+ private handleMultiLineDetection;
58
+ /**
59
+ * Get result for bracketed paste
60
+ */
61
+ private getBracketedPasteResult;
62
+ /**
63
+ * Generate a short preview description of the paste
64
+ */
65
+ private generatePreview;
66
+ /**
67
+ * Finalize any pending paste operation
68
+ */
69
+ finalize(): MultiLinePasteResult | null;
70
+ /**
71
+ * Check if currently processing a paste
72
+ */
73
+ isInPaste(): boolean;
74
+ /**
75
+ * Get current paste buffer
76
+ */
77
+ getPasteBuffer(): string[];
78
+ /**
79
+ * Reset paste state
80
+ */
81
+ reset(): void;
82
+ /**
83
+ * Enable/disable paste handling
84
+ */
85
+ setEnabled(enabled: boolean): void;
86
+ /**
87
+ * Update configuration
88
+ */
89
+ updateConfig(config: Partial<MultiLinePasteConfig>): void;
90
+ /**
91
+ * Get current state for debugging
92
+ */
93
+ getState(): PasteState;
94
+ /**
95
+ * Get current configuration
96
+ */
97
+ getConfig(): MultiLinePasteConfig;
98
+ /**
99
+ * Validate state consistency
100
+ */
101
+ validateState(): {
102
+ valid: boolean;
103
+ issues: string[];
104
+ };
105
+ }
106
+ //# sourceMappingURL=multiLinePasteManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiLinePasteManager.d.ts","sourceRoot":"","sources":["../../src/shell/multiLinePasteManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,gBAAgB,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,kDAAkD;IAClD,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,0BAA0B,EAAE,MAAM,CAAC;CACpC;AAKD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,KAAK,CAAa;gBAEd,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAwBtD;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB;IAkB5C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmD5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA2DhC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA4B/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,QAAQ,IAAI,oBAAoB,GAAG,IAAI;IAoCvC;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAWb;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAOlC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI;IAKzD;;OAEG;IACH,QAAQ,IAAI,UAAU;IAItB;;OAEG;IACH,SAAS,IAAI,oBAAoB;IAIjC;;OAEG;IACH,aAAa,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAoBtD"}
@@ -0,0 +1,308 @@
1
+ /**
2
+ * MultiLinePasteManager - Enhanced multi-line paste handling with improved UX
3
+ *
4
+ * Features:
5
+ * - Short block description during input: "[Pasted: 15 lines]"
6
+ * - Full content sent to AI on submission
7
+ * - Graceful handling of large pastes
8
+ * - Visual feedback for paste operations
9
+ * - Configurable preview length
10
+ */
11
+ const BRACKETED_PASTE_START = '\u001b[200~';
12
+ const BRACKETED_PASTE_END = '\u001b[201~';
13
+ export class MultiLinePasteManager {
14
+ config;
15
+ state;
16
+ constructor(config = {}) {
17
+ this.config = {
18
+ enabled: true,
19
+ maxPreviewLength: 80,
20
+ pasteThresholdMs: 50,
21
+ debug: false,
22
+ showVisualIndicators: true,
23
+ ...config
24
+ };
25
+ this.state = {
26
+ enabled: this.config.enabled,
27
+ inPaste: false,
28
+ pasteBuffer: [],
29
+ multiLineBuffer: [],
30
+ multiLineMode: false,
31
+ lastInputTime: 0,
32
+ rawPasteBuffer: '',
33
+ capturingRaw: false,
34
+ pasteJustCaptured: false,
35
+ pasteJustCapturedLineCount: 0
36
+ };
37
+ }
38
+ /**
39
+ * Process input and detect multi-line pastes
40
+ */
41
+ process(input) {
42
+ if (!this.state.enabled) {
43
+ return { handled: false };
44
+ }
45
+ const currentTime = Date.now();
46
+ const timeSinceLastInput = currentTime - this.state.lastInputTime;
47
+ this.state.lastInputTime = currentTime;
48
+ // Handle bracketed paste mode
49
+ if (this.handleBracketedPaste(input)) {
50
+ return this.getBracketedPasteResult();
51
+ }
52
+ // Handle multi-line detection via timing
53
+ return this.handleMultiLineDetection(input, timeSinceLastInput);
54
+ }
55
+ /**
56
+ * Handle bracketed paste mode (ANSI escape sequences)
57
+ */
58
+ handleBracketedPaste(input) {
59
+ if (input.includes(BRACKETED_PASTE_START)) {
60
+ this.state.inPaste = true;
61
+ this.state.pasteBuffer = [];
62
+ const startIndex = input.indexOf(BRACKETED_PASTE_START);
63
+ const contentAfterStart = input.slice(startIndex + BRACKETED_PASTE_START.length);
64
+ if (contentAfterStart.includes(BRACKETED_PASTE_END)) {
65
+ // Complete paste in single input
66
+ const endIndex = contentAfterStart.indexOf(BRACKETED_PASTE_END);
67
+ const pasteContent = contentAfterStart.slice(0, endIndex);
68
+ this.state.pasteBuffer = pasteContent.split('\n');
69
+ this.state.inPaste = false;
70
+ this.state.pasteJustCaptured = true;
71
+ this.state.pasteJustCapturedLineCount = this.state.pasteBuffer.length;
72
+ if (this.config.debug) {
73
+ console.log(`[MultiLinePaste] Complete bracketed paste: ${this.state.pasteBuffer.length} lines`);
74
+ }
75
+ }
76
+ else {
77
+ // Start of multi-part paste
78
+ this.state.pasteBuffer = contentAfterStart.split('\n');
79
+ }
80
+ return true;
81
+ }
82
+ if (this.state.inPaste && input.includes(BRACKETED_PASTE_END)) {
83
+ // End of multi-part paste
84
+ const endIndex = input.indexOf(BRACKETED_PASTE_END);
85
+ const contentBeforeEnd = input.slice(0, endIndex);
86
+ this.state.pasteBuffer.push(...contentBeforeEnd.split('\n'));
87
+ this.state.inPaste = false;
88
+ this.state.pasteJustCaptured = true;
89
+ this.state.pasteJustCapturedLineCount = this.state.pasteBuffer.length;
90
+ if (this.config.debug) {
91
+ console.log(`[MultiLinePaste] Completed multi-part paste: ${this.state.pasteBuffer.length} lines`);
92
+ }
93
+ return true;
94
+ }
95
+ if (this.state.inPaste) {
96
+ // Continue accumulating paste content
97
+ this.state.pasteBuffer.push(...input.split('\n'));
98
+ return true;
99
+ }
100
+ return false;
101
+ }
102
+ /**
103
+ * Handle multi-line detection via timing
104
+ */
105
+ handleMultiLineDetection(input, timeSinceLastInput) {
106
+ const lines = input.split('\n');
107
+ const isRapidInput = timeSinceLastInput < this.config.pasteThresholdMs;
108
+ if (lines.length > 1 && isRapidInput) {
109
+ // Likely a multi-line paste
110
+ if (!this.state.multiLineMode) {
111
+ this.state.multiLineMode = true;
112
+ this.state.multiLineBuffer = [];
113
+ }
114
+ this.state.multiLineBuffer.push(...lines);
115
+ if (this.config.debug) {
116
+ console.log(`[MultiLinePaste] Multi-line paste detected: ${this.state.multiLineBuffer.length} lines`);
117
+ }
118
+ return {
119
+ handled: true,
120
+ isPending: true,
121
+ lineCount: this.state.multiLineBuffer.length,
122
+ preview: this.generatePreview(this.state.multiLineBuffer.join('\n'), this.state.multiLineBuffer.length)
123
+ };
124
+ }
125
+ if (this.state.multiLineMode) {
126
+ if (isRapidInput) {
127
+ // Continue accumulating
128
+ this.state.multiLineBuffer.push(...lines);
129
+ return {
130
+ handled: true,
131
+ isPending: true,
132
+ lineCount: this.state.multiLineBuffer.length,
133
+ preview: this.generatePreview(this.state.multiLineBuffer.join('\n'), this.state.multiLineBuffer.length)
134
+ };
135
+ }
136
+ else {
137
+ // End of paste
138
+ const result = this.state.multiLineBuffer.join('\n');
139
+ const lineCount = this.state.multiLineBuffer.length;
140
+ this.state.multiLineMode = false;
141
+ this.state.multiLineBuffer = [];
142
+ if (this.config.debug) {
143
+ console.log(`[MultiLinePaste] Multi-line paste completed: ${lineCount} lines`);
144
+ }
145
+ return {
146
+ handled: true,
147
+ result,
148
+ lineCount,
149
+ preview: this.generatePreview(result, lineCount),
150
+ fullContent: result
151
+ };
152
+ }
153
+ }
154
+ return { handled: false };
155
+ }
156
+ /**
157
+ * Get result for bracketed paste
158
+ */
159
+ getBracketedPasteResult() {
160
+ if (this.state.inPaste) {
161
+ return {
162
+ handled: true,
163
+ isPending: true,
164
+ lineCount: this.state.pasteBuffer.length,
165
+ preview: this.generatePreview(this.state.pasteBuffer.join('\n'), this.state.pasteBuffer.length)
166
+ };
167
+ }
168
+ if (this.state.pasteJustCaptured) {
169
+ const result = this.state.pasteBuffer.join('\n');
170
+ const lineCount = this.state.pasteJustCapturedLineCount;
171
+ this.state.pasteJustCaptured = false;
172
+ this.state.pasteJustCapturedLineCount = 0;
173
+ return {
174
+ handled: true,
175
+ result,
176
+ lineCount,
177
+ preview: this.generatePreview(result, lineCount),
178
+ fullContent: result
179
+ };
180
+ }
181
+ return { handled: false };
182
+ }
183
+ /**
184
+ * Generate a short preview description of the paste
185
+ */
186
+ generatePreview(content, lineCount) {
187
+ if (!content.trim()) {
188
+ return `[Empty paste: ${lineCount} lines]`;
189
+ }
190
+ const lines = content.split('\n').map(l => l.trim()).filter(Boolean);
191
+ if (lines.length === 0) {
192
+ return `[Empty paste: ${lineCount} lines]`;
193
+ }
194
+ const firstLine = lines[0] || '';
195
+ const maxLength = this.config.maxPreviewLength - 15; // Reserve space for line count
196
+ let preview = firstLine;
197
+ if (preview && preview.length > maxLength) {
198
+ preview = preview.slice(0, maxLength - 3) + '...';
199
+ }
200
+ const visualIndicator = this.config.showVisualIndicators ? '📋 ' : '';
201
+ return `${visualIndicator}${preview} [${lineCount} lines]`;
202
+ }
203
+ /**
204
+ * Finalize any pending paste operation
205
+ */
206
+ finalize() {
207
+ if (this.state.multiLineMode && this.state.multiLineBuffer.length > 0) {
208
+ const result = this.state.multiLineBuffer.join('\n');
209
+ const lineCount = this.state.multiLineBuffer.length;
210
+ this.state.multiLineMode = false;
211
+ this.state.multiLineBuffer = [];
212
+ return {
213
+ handled: true,
214
+ result,
215
+ lineCount,
216
+ preview: this.generatePreview(result, lineCount),
217
+ fullContent: result
218
+ };
219
+ }
220
+ if (this.state.inPaste && this.state.pasteBuffer.length > 0) {
221
+ const result = this.state.pasteBuffer.join('\n');
222
+ const lineCount = this.state.pasteBuffer.length;
223
+ this.state.inPaste = false;
224
+ this.state.pasteBuffer = [];
225
+ return {
226
+ handled: true,
227
+ result,
228
+ lineCount,
229
+ preview: this.generatePreview(result, lineCount),
230
+ fullContent: result
231
+ };
232
+ }
233
+ return null;
234
+ }
235
+ /**
236
+ * Check if currently processing a paste
237
+ */
238
+ isInPaste() {
239
+ return this.state.inPaste || this.state.multiLineMode;
240
+ }
241
+ /**
242
+ * Get current paste buffer
243
+ */
244
+ getPasteBuffer() {
245
+ return this.state.inPaste ? [...this.state.pasteBuffer] : [...this.state.multiLineBuffer];
246
+ }
247
+ /**
248
+ * Reset paste state
249
+ */
250
+ reset() {
251
+ this.state.inPaste = false;
252
+ this.state.pasteBuffer = [];
253
+ this.state.multiLineMode = false;
254
+ this.state.multiLineBuffer = [];
255
+ this.state.rawPasteBuffer = '';
256
+ this.state.capturingRaw = false;
257
+ this.state.pasteJustCaptured = false;
258
+ this.state.pasteJustCapturedLineCount = 0;
259
+ }
260
+ /**
261
+ * Enable/disable paste handling
262
+ */
263
+ setEnabled(enabled) {
264
+ this.state.enabled = enabled;
265
+ if (!enabled) {
266
+ this.reset();
267
+ }
268
+ }
269
+ /**
270
+ * Update configuration
271
+ */
272
+ updateConfig(config) {
273
+ this.config = { ...this.config, ...config };
274
+ this.state.enabled = this.config.enabled;
275
+ }
276
+ /**
277
+ * Get current state for debugging
278
+ */
279
+ getState() {
280
+ return { ...this.state };
281
+ }
282
+ /**
283
+ * Get current configuration
284
+ */
285
+ getConfig() {
286
+ return { ...this.config };
287
+ }
288
+ /**
289
+ * Validate state consistency
290
+ */
291
+ validateState() {
292
+ const issues = [];
293
+ if (this.state.inPaste && this.state.pasteBuffer.length === 0) {
294
+ issues.push('In paste mode but buffer is empty');
295
+ }
296
+ if (this.state.multiLineMode && this.state.multiLineBuffer.length === 0) {
297
+ issues.push('In multi-line mode but buffer is empty');
298
+ }
299
+ if (this.state.inPaste && this.state.multiLineMode) {
300
+ issues.push('Both paste and multi-line modes active simultaneously');
301
+ }
302
+ return {
303
+ valid: issues.length === 0,
304
+ issues
305
+ };
306
+ }
307
+ }
308
+ //# sourceMappingURL=multiLinePasteManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multiLinePasteManager.js","sourceRoot":"","sources":["../../src/shell/multiLinePasteManager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateManager.d.ts","sourceRoot":"","sources":["../../src/shell/updateManager.ts"],"names":[],"mappings":"AASA,wBAAsB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAiDlF"}
1
+ {"version":3,"file":"updateManager.d.ts","sourceRoot":"","sources":["../../src/shell/updateManager.ts"],"names":[],"mappings":"AAoDA,wBAAsB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAiElF"}
@@ -1,11 +1,56 @@
1
- import { spawn } from 'node:child_process';
1
+ import { spawn, execSync } from 'node:child_process';
2
2
  import { stdin as input, stdout as output } from 'node:process';
3
3
  import { createInterface } from 'node:readline/promises';
4
4
  import { display } from '../ui/display.js';
5
5
  const PACKAGE_NAME = 'erosolar-cli';
6
6
  const REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
7
7
  const FETCH_TIMEOUT_MS = 4000;
8
+ /**
9
+ * Auto-relaunch the CLI after an update.
10
+ * Uses exec to replace the current process with a fresh instance.
11
+ */
12
+ function relaunchCLI() {
13
+ const args = process.argv.slice(2);
14
+ display.showInfo('🔄 Relaunching CLI with updated version...\n');
15
+ // Small delay to let the message display
16
+ setTimeout(() => {
17
+ try {
18
+ // Find the CLI path
19
+ const npmRoot = execSync('npm root -g', { encoding: 'utf8' }).trim();
20
+ const cliPath = `${npmRoot}/${PACKAGE_NAME}/dist/bin/erosolar.js`;
21
+ // Spawn a detached process that will outlive the current one
22
+ const child = spawn('node', [cliPath, ...args], {
23
+ stdio: 'inherit',
24
+ detached: false,
25
+ env: {
26
+ ...process.env,
27
+ EROSOLAR_JUST_UPDATED: '1', // Signal to skip update check
28
+ },
29
+ });
30
+ // Exit the current process once child is running
31
+ child.on('spawn', () => {
32
+ // Give child a moment to start
33
+ setTimeout(() => process.exit(0), 100);
34
+ });
35
+ child.on('error', (err) => {
36
+ display.showWarning(`Auto-relaunch failed: ${err.message}`);
37
+ display.showInfo(`Please restart the CLI manually.`);
38
+ });
39
+ }
40
+ catch (err) {
41
+ display.showWarning(`Auto-relaunch failed: ${err instanceof Error ? err.message : 'unknown error'}`);
42
+ display.showInfo(`Please restart the CLI manually.`);
43
+ }
44
+ }, 500);
45
+ }
8
46
  export async function maybeOfferCliUpdate(currentVersion) {
47
+ // Skip update check if we just relaunched after an update
48
+ if (process.env['EROSOLAR_JUST_UPDATED'] === '1') {
49
+ display.showInfo(`✨ Now running ${PACKAGE_NAME}@${currentVersion}`);
50
+ // Clear the flag for future runs
51
+ delete process.env['EROSOLAR_JUST_UPDATED'];
52
+ return true;
53
+ }
9
54
  try {
10
55
  const latestVersion = await fetchLatestVersion();
11
56
  if (!latestVersion) {
@@ -30,7 +75,15 @@ export async function maybeOfferCliUpdate(currentVersion) {
30
75
  }
31
76
  const success = await installLatestVersion();
32
77
  if (success) {
33
- display.showInfo(`Update complete. Relaunch the CLI to start using ${PACKAGE_NAME}@${latestVersion}.`);
78
+ display.showInfo(`✅ Update to ${PACKAGE_NAME}@${latestVersion} complete!`);
79
+ // Ask if user wants auto-relaunch
80
+ const shouldRelaunch = await promptForRelaunch();
81
+ if (shouldRelaunch) {
82
+ relaunchCLI();
83
+ // Return false to signal we're exiting (relaunch handles the rest)
84
+ return false;
85
+ }
86
+ display.showInfo(`Restart the CLI to use the new version.`);
34
87
  return false;
35
88
  }
36
89
  display.showWarning(`Failed to install ${PACKAGE_NAME}@latest. Please run "npm install -g ${PACKAGE_NAME}@latest" manually.`);
@@ -96,6 +149,17 @@ async function promptForUpdate() {
96
149
  prompt.close();
97
150
  }
98
151
  }
152
+ async function promptForRelaunch() {
153
+ const prompt = createInterface({ input, output });
154
+ try {
155
+ const answer = await prompt.question('Relaunch now? (Y/n): ');
156
+ const normalized = answer.trim().toLowerCase();
157
+ return normalized === '' || normalized === 'y' || normalized === 'yes';
158
+ }
159
+ finally {
160
+ prompt.close();
161
+ }
162
+ }
99
163
  async function installLatestVersion() {
100
164
  const binary = process.platform === 'win32' ? 'npm.cmd' : 'npm';
101
165
  return new Promise((resolve) => {
@@ -1 +1 @@
1
- {"version":3,"file":"updateManager.js","sourceRoot":"","sources":["../../src/shell/updateManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updateManager.js","sourceRoot":"","sources":["../../src/shell/updateManager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "erosolar-cli",
3
- "version": "1.7.30",
3
+ "version": "1.7.32",
4
4
  "description": "Unified AI agent framework for the command line - Multi-provider support with schema-driven tools, code intelligence, and transparent reasoning",
5
5
  "main": "dist/bin/erosolar-optimized.js",
6
6
  "type": "module",