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,140 @@
1
+ const ANSI_REGEX = /\u001B\[[0-9;]*m/g;
2
+ const DEFAULT_WIDTH = 78;
3
+ const MIN_WIDTH = 42;
4
+ const MAX_WIDTH = 100;
5
+ export function formatPlan(plan, options = {}) {
6
+ const width = clampWidth(options.width);
7
+ const heading = (options.heading ?? 'Updated Plan').trim() || 'Updated Plan';
8
+ const bullet = (options.bullet ?? '•').trim() || '•';
9
+ const items = normalizePlanItems(plan);
10
+ const lines = [`${bullet} ${heading}`];
11
+ if (!items.length) {
12
+ lines.push(' (no steps provided)');
13
+ return lines.join('\n');
14
+ }
15
+ const statusSymbols = buildStatusSymbols(options.statusSymbols);
16
+ items.forEach((item, index) => {
17
+ const prefix = `${index === 0 ? ' └ ' : ' '}${statusSymbols[item.status]} `;
18
+ lines.push(...wrapPlanText(item.step, prefix, width));
19
+ });
20
+ return lines.join('\n');
21
+ }
22
+ export function normalizePlanItems(plan) {
23
+ if (!Array.isArray(plan)) {
24
+ return [];
25
+ }
26
+ const items = [];
27
+ for (const entry of plan) {
28
+ if (entry === null || entry === undefined) {
29
+ continue;
30
+ }
31
+ if (typeof entry === 'string' || typeof entry === 'number' || typeof entry === 'boolean') {
32
+ const step = String(entry).trim();
33
+ if (!step) {
34
+ continue;
35
+ }
36
+ items.push({ step, status: 'pending' });
37
+ continue;
38
+ }
39
+ if (typeof entry === 'object') {
40
+ const rawStep = entry.step;
41
+ const step = typeof rawStep === 'string'
42
+ ? rawStep.trim()
43
+ : typeof rawStep === 'number' || typeof rawStep === 'boolean'
44
+ ? String(rawStep).trim()
45
+ : '';
46
+ if (!step) {
47
+ continue;
48
+ }
49
+ const status = normalizeStatus(entry.status);
50
+ items.push({ step, status });
51
+ }
52
+ }
53
+ return items;
54
+ }
55
+ /**
56
+ * Wrap plan text with a prefix, preserving indentation for continuations.
57
+ */
58
+ export function wrapPlanText(text, prefix, width) {
59
+ const normalizedWidth = clampWidth(width);
60
+ const cleanPrefix = prefix ?? '';
61
+ const prefixLength = visibleLength(cleanPrefix);
62
+ const available = Math.max(12, normalizedWidth - prefixLength);
63
+ const wrapped = wrapText(text, available);
64
+ if (!wrapped.length) {
65
+ return [cleanPrefix.trimEnd()];
66
+ }
67
+ const indent = ' '.repeat(prefixLength);
68
+ return wrapped.map((line, index) => (index === 0 ? `${cleanPrefix}${line}` : `${indent}${line}`));
69
+ }
70
+ /**
71
+ * Determine the available plan width using the terminal size if available.
72
+ */
73
+ export function resolvePlanWidth(padding = 4) {
74
+ if (typeof process !== 'undefined' &&
75
+ typeof process.stdout?.columns === 'number' &&
76
+ Number.isFinite(process.stdout.columns)) {
77
+ return Math.max(0, process.stdout.columns - padding);
78
+ }
79
+ return undefined;
80
+ }
81
+ function buildStatusSymbols(overrides) {
82
+ return {
83
+ pending: overrides?.pending?.trim() || '□',
84
+ in_progress: overrides?.in_progress?.trim() || '◐',
85
+ completed: overrides?.completed?.trim() || '✔',
86
+ };
87
+ }
88
+ function normalizeStatus(status) {
89
+ if (typeof status !== 'string') {
90
+ return 'pending';
91
+ }
92
+ const normalized = status.trim().toLowerCase().replace(/[\s-]+/g, '_');
93
+ if (normalized === 'completed' || normalized === 'complete' || normalized === 'done') {
94
+ return 'completed';
95
+ }
96
+ if (normalized === 'in_progress' || normalized === 'inprogress') {
97
+ return 'in_progress';
98
+ }
99
+ return 'pending';
100
+ }
101
+ function wrapText(text, width) {
102
+ const normalized = (text || '').trim();
103
+ if (!normalized) {
104
+ return [];
105
+ }
106
+ const words = normalized.split(/\s+/);
107
+ const lines = [];
108
+ let current = words.shift() ?? '';
109
+ for (const word of words) {
110
+ const candidate = `${current} ${word}`;
111
+ if (visibleLength(candidate) > width && current) {
112
+ lines.push(current);
113
+ current = word;
114
+ }
115
+ else {
116
+ current = candidate;
117
+ }
118
+ }
119
+ if (current) {
120
+ lines.push(current);
121
+ }
122
+ return lines;
123
+ }
124
+ function clampWidth(width) {
125
+ if (typeof width !== 'number' || !Number.isFinite(width)) {
126
+ return DEFAULT_WIDTH;
127
+ }
128
+ const normalized = Math.floor(width);
129
+ if (normalized < MIN_WIDTH) {
130
+ return MIN_WIDTH;
131
+ }
132
+ if (normalized > MAX_WIDTH) {
133
+ return MAX_WIDTH;
134
+ }
135
+ return normalized;
136
+ }
137
+ function visibleLength(value) {
138
+ return value.replace(ANSI_REGEX, '').length;
139
+ }
140
+ //# sourceMappingURL=planFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planFormatter.js","sourceRoot":"","sources":["../../src/utils/planFormatter.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.194",
3
+ "version": "1.7.196",
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.js",
6
6
  "type": "module",
@@ -34,7 +34,7 @@
34
34
  "clean": "node -e \"const { rmSync } = require('fs'); try { rmSync('dist', { recursive: true, force: true, maxRetries: 5 }); } catch (error) { if (error && error.code !== 'ENOENT') throw error; }\"",
35
35
  "build": "tsc",
36
36
  "build:watch": "tsc --watch",
37
- "prepare": "npm run build",
37
+ "prepublishOnly": "npm run build",
38
38
  "postbuild": "node scripts/postbuild.mjs",
39
39
  "dev": "node --loader ts-node/esm src/bin/erosolar.ts",
40
40
  "dev:watch": "node --watch --loader ts-node/esm src/bin/erosolar.ts",
@@ -1,128 +0,0 @@
1
- /**
2
- * Bracketed paste manager for handling terminal paste operations.
3
- *
4
- * This class handles the bracketed paste mode in terminals, which allows
5
- * pasted text to be distinguished from typed input. This is particularly
6
- * useful for handling multi-line pastes and preventing unwanted execution
7
- * of commands during paste operations.
8
- */
9
- export interface BracketedPasteResult {
10
- handled: boolean;
11
- result?: string;
12
- /** True if we're still accumulating paste content */
13
- isPending?: boolean;
14
- /** Number of lines accumulated so far (for display) */
15
- lineCount?: number;
16
- /** Preview of the content (first line truncated) */
17
- preview?: string;
18
- }
19
- export interface MultiLinePasteState {
20
- /** Full content accumulated from multi-line paste */
21
- content: string;
22
- /** Number of lines in the paste */
23
- lineCount: number;
24
- /** First line preview (truncated for display) */
25
- firstLinePreview: string;
26
- /** Last line preview (truncated for display) */
27
- lastLinePreview: string;
28
- }
29
- export declare class BracketedPasteManager {
30
- private enabled;
31
- private inPaste;
32
- private pasteBuffer;
33
- /** Tracks accumulated multi-line input even without bracketed paste support */
34
- private multiLineBuffer;
35
- private multiLineMode;
36
- /** Raw data buffer for capturing complete bracketed paste content */
37
- private rawPasteBuffer;
38
- /** Callback for when raw paste is complete */
39
- private onRawPasteComplete;
40
- /** Whether we're currently capturing raw data */
41
- private capturingRaw;
42
- /** Flag set when paste was just captured - used to ignore readline line events */
43
- private pasteJustCaptured;
44
- /** Number of lines in the paste that was just captured */
45
- private pasteJustCapturedLineCount;
46
- private static readonly START_MARKER;
47
- private static readonly END_MARKER;
48
- constructor(enabled: boolean);
49
- /**
50
- * Process raw data from stdin before readline handles it.
51
- * This intercepts bracketed paste content and captures it in full.
52
- * Returns true if the data was consumed (should not be passed to readline).
53
- */
54
- processRawData(data: string): {
55
- consumed: boolean;
56
- passThrough?: string;
57
- };
58
- /**
59
- * Set callback for when a complete paste is captured via raw data processing
60
- */
61
- setRawPasteCallback(callback: (content: string) => void): void;
62
- /**
63
- * Check if currently capturing raw paste data
64
- */
65
- isCapturingRaw(): boolean;
66
- /**
67
- * Check if paste was just captured and needs to ignore readline line events.
68
- * This returns true if paste was captured, and decrements the line counter.
69
- * When counter reaches 0, future calls return false.
70
- */
71
- shouldIgnoreLineEvent(): boolean;
72
- /**
73
- * Clear the paste-just-captured flag (call when user explicitly submits)
74
- */
75
- clearPasteJustCaptured(): void;
76
- /**
77
- * Get current raw buffer size (for display)
78
- */
79
- getRawBufferLineCount(): number;
80
- /**
81
- * Get preview of raw buffer content
82
- */
83
- getRawBufferPreview(): string;
84
- /**
85
- * Process input text, handling bracketed paste sequences
86
- */
87
- process(input: string): BracketedPasteResult;
88
- /**
89
- * Process input when bracketed paste is not enabled.
90
- *
91
- * IMPORTANT: We no longer use timing heuristics for paste detection.
92
- * The timing-based approach caused issues where fast typing was incorrectly
93
- * detected as paste, causing follow-up prompts to be held indefinitely.
94
- *
95
- * Instead, we only detect pastes that contain embedded newlines (which
96
- * is how terminal emulators typically deliver pasted multi-line content).
97
- */
98
- private processWithoutBracketed;
99
- /**
100
- * Generate a preview string for multi-line content
101
- */
102
- private getPreview;
103
- /**
104
- * Get current multi-line state for display purposes
105
- */
106
- getMultiLineState(): MultiLinePasteState | null;
107
- /**
108
- * Format a multi-line paste as a collapsed block for display
109
- */
110
- static formatCollapsedBlock(content: string, maxPreviewLength?: number): string;
111
- /**
112
- * Check if currently processing a paste
113
- */
114
- isInPaste(): boolean;
115
- /**
116
- * Get the current paste buffer
117
- */
118
- getPasteBuffer(): string[];
119
- /**
120
- * Finalize any pending multi-line input
121
- */
122
- finalize(): string | null;
123
- /**
124
- * Reset the paste state
125
- */
126
- reset(): void;
127
- }
128
- //# sourceMappingURL=bracketedPasteManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bracketedPasteManager.d.ts","sourceRoot":"","sources":["../../src/shell/bracketedPasteManager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,gBAAgB,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAgB;IAEnC,+EAA+E;IAC/E,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAS;IAE9B,qEAAqE;IACrE,OAAO,CAAC,cAAc,CAAM;IAC5B,8CAA8C;IAC9C,OAAO,CAAC,kBAAkB,CAA4C;IACtE,iDAAiD;IACjD,OAAO,CAAC,YAAY,CAAS;IAC7B,kFAAkF;IAClF,OAAO,CAAC,iBAAiB,CAAS;IAClC,0DAA0D;IAC1D,OAAO,CAAC,0BAA0B,CAAK;IAEvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAiB;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAiB;gBAEvC,OAAO,EAAE,OAAO;IAI5B;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAiFzE;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9D;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;;;OAIG;IACH,qBAAqB,IAAI,OAAO;IAWhC;;OAEG;IACH,sBAAsB,IAAI,IAAI;IAK9B;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAK/B;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAM7B;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB;IAyH5C;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;IACH,OAAO,CAAC,UAAU;IAiBlB;;OAEG;IACH,iBAAiB,IAAI,mBAAmB,GAAG,IAAI;IAmB/C;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,GAAE,MAAW,GAAG,MAAM;IAcnF;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,QAAQ,IAAI,MAAM,GAAG,IAAI;IAUzB;;OAEG;IACH,KAAK,IAAI,IAAI;CAUd"}
@@ -1,2 +0,0 @@
1
- export { BracketedPasteManager } from './bracketedPasteManager.js';
2
- //# sourceMappingURL=bracketedPasteManager.enhanced.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bracketedPasteManager.enhanced.d.ts","sourceRoot":"","sources":["../../src/shell/bracketedPasteManager.enhanced.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -1,4 +0,0 @@
1
- // Enhanced bracketed paste manager implementation
2
- // This file provides enhanced multi-line paste handling with better error recovery
3
- export { BracketedPasteManager } from './bracketedPasteManager.js';
4
- //# sourceMappingURL=bracketedPasteManager.enhanced.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bracketedPasteManager.enhanced.js","sourceRoot":"","sources":["../../src/shell/bracketedPasteManager.enhanced.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,mFAAmF;AAEnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}