erosolar-cli 1.7.214 → 1.7.215

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.
@@ -1,35 +1,54 @@
1
1
  /**
2
- * Global write lock installer.
2
+ * Global Write Lock - Simplified streaming-safe output coordination
3
3
  *
4
- * Wraps process stdout/stderr (and any additional streams provided) so all writes
5
- * respect the shared write lock, preventing interleaved output with the prompt renderer.
4
+ * This module provides a simple mechanism to ensure streaming content
5
+ * is not interrupted by other UI components during streaming.
6
+ *
7
+ * Design Principle:
8
+ * - During streaming, ONLY streaming content writes to stdout
9
+ * - All other UI components (status, input area, etc.) wait until streaming ends
10
+ * - No complex lock nesting or queuing - just a simple boolean flag
11
+ *
12
+ * This prevents the garbled output and cutoffs that occur when multiple
13
+ * components try to write simultaneously with cursor positioning.
14
+ */
15
+ let streamingActive = false;
16
+ /**
17
+ * Check if streaming mode is currently active
18
+ */
19
+ export function isStreamingMode() {
20
+ return streamingActive;
21
+ }
22
+ /**
23
+ * Enter streaming mode - blocks all non-streaming output
24
+ */
25
+ export function enterStreamingMode() {
26
+ streamingActive = true;
27
+ }
28
+ /**
29
+ * Exit streaming mode - allows normal UI output to resume
30
+ */
31
+ export function exitStreamingMode() {
32
+ streamingActive = false;
33
+ }
34
+ /**
35
+ * Execute a callback only if not in streaming mode.
36
+ * Returns true if the callback was executed, false if skipped.
6
37
  */
7
- import { writeLock } from './writeLock.js';
8
- const WRAPPED_FLAG = '__erosolarLockWrapped';
9
- export function installGlobalWriteLock(streams = [process.stdout, process.stderr]) {
10
- for (const stream of streams) {
11
- if (!stream || typeof stream.write !== 'function') {
12
- continue;
13
- }
14
- // Avoid double wrapping
15
- if (stream[WRAPPED_FLAG]) {
16
- continue;
17
- }
18
- const originalWrite = stream.write.bind(stream);
19
- const lockedWrite = function lockedWrite(chunk, encoding, cb) {
20
- let result = true;
21
- const run = () => {
22
- result = originalWrite(chunk, encoding, cb);
23
- };
24
- if (writeLock.isLocked()) {
25
- writeLock.safeWrite(run);
26
- return result;
27
- }
28
- writeLock.withLock(run, 'global-stream-write');
29
- return result;
30
- };
31
- stream.write = lockedWrite;
32
- stream[WRAPPED_FLAG] = true;
38
+ export function ifNotStreaming(callback) {
39
+ if (streamingActive) {
40
+ return false;
33
41
  }
42
+ callback();
43
+ return true;
44
+ }
45
+ /**
46
+ * Legacy: installGlobalWriteLock is now a no-op
47
+ * The old approach of wrapping stdout.write caused nested lock issues.
48
+ * We now use a simpler streaming mode flag instead.
49
+ */
50
+ export function installGlobalWriteLock() {
51
+ // No-op - we no longer wrap stdout.write
52
+ // The streaming mode flag handles coordination instead
34
53
  }
35
54
  //# sourceMappingURL=globalWriteLock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"globalWriteLock.js","sourceRoot":"","sources":["../../src/ui/globalWriteLock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI3C,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAE7C,MAAM,UAAU,sBAAsB,CAAC,UAA4B,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;IACjG,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YAClD,SAAS;QACX,CAAC;QAED,wBAAwB;QACxB,IAAK,MAAyB,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7C,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhD,MAAM,WAAW,GAAwB,SAAS,WAAW,CAAC,KAAU,EAAE,QAAc,EAAE,EAAQ;YAChG,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,MAAM,GAAG,GAAG,GAAS,EAAE;gBACrB,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,QAAe,EAAE,EAAS,CAAC,CAAC;YAC5D,CAAC,CAAC;YAEF,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACzB,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACzB,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;YAC/C,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;QAC1B,MAAyB,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;IAClD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"globalWriteLock.js","sourceRoot":"","sources":["../../src/ui/globalWriteLock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,eAAe,GAAG,IAAI,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,eAAe,GAAG,KAAK,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAAoB;IACjD,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,QAAQ,EAAE,CAAC;IACX,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,yCAAyC;IACzC,uDAAuD;AACzD,CAAC"}
@@ -0,0 +1,27 @@
1
+ interface FrameOptions {
2
+ width?: number;
3
+ }
4
+ export interface SessionFrameProps extends FrameOptions {
5
+ profileLabel: string;
6
+ profileName: string;
7
+ model: string;
8
+ provider: string;
9
+ workspace: string;
10
+ version?: string;
11
+ }
12
+ export interface LiveFrameProps extends FrameOptions {
13
+ model: string;
14
+ provider: string;
15
+ workspace?: string;
16
+ label?: string;
17
+ }
18
+ export interface StatusLinePart {
19
+ text: string;
20
+ tone?: 'info' | 'warn' | 'error' | 'success' | 'muted';
21
+ }
22
+ export declare const renderSessionFrame: (props: SessionFrameProps) => string;
23
+ export declare const renderLiveFrame: (props: LiveFrameProps) => string;
24
+ export declare const renderDivider: (width: number, label?: string) => string;
25
+ export declare const renderStatusLine: (parts: StatusLinePart[], width: number) => string;
26
+ export {};
27
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/ui/unified/layout.ts"],"names":[],"mappings":"AAIA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;CACxD;AA2BD,eAAO,MAAM,kBAAkB,GAAI,OAAO,iBAAiB,KAAG,MAgB7D,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,cAAc,KAAG,MASvD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,MAY7D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,cAAc,EAAE,EAAE,OAAO,MAAM,KAAG,MAwBzE,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { theme } from '../theme.js';
2
+ const ANSI_PATTERN = /\u001B\[[0-?]*[ -/]*[@-~]/g;
3
+ const clampWidth = (width, min = 42, max = 110) => {
4
+ if (!Number.isFinite(width) || !width) {
5
+ return max;
6
+ }
7
+ return Math.max(min, Math.min(max, Math.floor(width)));
8
+ };
9
+ const stripAnsi = (value) => value.replace(ANSI_PATTERN, '');
10
+ const visibleLength = (value) => stripAnsi(value).length;
11
+ const padLine = (content, innerWidth) => {
12
+ const visible = visibleLength(content);
13
+ const padding = Math.max(0, innerWidth - visible);
14
+ return `${theme.ui.border('┃')} ${content}${' '.repeat(padding)} ${theme.ui.border('┃')}`;
15
+ };
16
+ const framedBlock = (lines, width) => {
17
+ const innerWidth = clampWidth(width ? width - 2 : undefined, 32, 96);
18
+ const top = theme.ui.border(`╭${'─'.repeat(innerWidth)}╮`);
19
+ const bottom = theme.ui.border(`╰${'─'.repeat(innerWidth)}╯`);
20
+ const body = lines.map((line) => padLine(line, innerWidth));
21
+ return [top, ...body, bottom].join('\n');
22
+ };
23
+ export const renderSessionFrame = (props) => {
24
+ const versionStr = props.version ? `v${props.version}` : 'live';
25
+ const profile = props.profileLabel || props.profileName || 'Default';
26
+ const modelLabel = props.model;
27
+ const workspace = abbreviatePath(props.workspace, Math.max(16, clampWidth(props.width) - 18));
28
+ const shortcuts = theme.ui.muted('/help · /model · /clear · /quit');
29
+ const lines = [
30
+ `${theme.gradient.cool('⚡ EROSOLAR CLI')} ${theme.ui.muted(versionStr)}`,
31
+ `${theme.ui.muted('Profile')} ${theme.info(profile)}`,
32
+ `${theme.ui.muted('Model')} ${theme.info(modelLabel)} ${theme.ui.muted('via')} ${theme.accent(props.provider)}`,
33
+ `${theme.ui.muted('Workspace')} ${workspace}`,
34
+ `${theme.ui.muted('Shortcuts')} ${shortcuts}`,
35
+ ];
36
+ return framedBlock(lines, props.width);
37
+ };
38
+ export const renderLiveFrame = (props) => {
39
+ const label = props.label ?? 'Live stream';
40
+ const workspace = props.workspace
41
+ ? `${theme.ui.muted('Workspace')} ${abbreviatePath(props.workspace, 48)}`
42
+ : null;
43
+ const header = `${theme.gradient.cool('▶')} ${theme.info(label)} ${theme.ui.muted('•')} ${theme.info(props.model)} ${theme.ui.muted('@')} ${theme.accent(props.provider)}`;
44
+ const lines = workspace ? [header, workspace] : [header];
45
+ return framedBlock(lines, props.width);
46
+ };
47
+ export const renderDivider = (width, label) => {
48
+ const maxWidth = clampWidth(width, 16, 140);
49
+ if (!label) {
50
+ return theme.ui.muted('─'.repeat(maxWidth));
51
+ }
52
+ const cleanLabel = theme.ui.muted(`[${label}]`);
53
+ const labelLen = visibleLength(cleanLabel);
54
+ const side = Math.max(2, Math.floor((maxWidth - labelLen - 2) / 2));
55
+ const left = '─'.repeat(side);
56
+ const right = '─'.repeat(Math.max(0, maxWidth - side - labelLen - 2));
57
+ return theme.ui.muted(`${left} ${cleanLabel} ${right}`);
58
+ };
59
+ export const renderStatusLine = (parts, width) => {
60
+ const segments = parts
61
+ .filter((part) => part.text.trim())
62
+ .map((part) => colorize(part.text.trim(), part.tone));
63
+ // Join with muted separators for consistent rhythm
64
+ const separator = theme.ui.muted(' · ');
65
+ const joined = segments.join(separator);
66
+ const maxLen = clampWidth(width, 8, 180);
67
+ if (visibleLength(joined) <= maxLen) {
68
+ return joined;
69
+ }
70
+ let result = '';
71
+ for (const segment of segments) {
72
+ const next = result ? `${result}${separator}${segment}` : segment;
73
+ if (visibleLength(next) > maxLen) {
74
+ break;
75
+ }
76
+ result = next;
77
+ }
78
+ return result || segments.slice(0, 1).join('');
79
+ };
80
+ const colorize = (text, tone) => {
81
+ switch (tone) {
82
+ case 'info':
83
+ return theme.info(text);
84
+ case 'warn':
85
+ return theme.warning(text);
86
+ case 'error':
87
+ return theme.error(text);
88
+ case 'success':
89
+ return theme.success(text);
90
+ case 'muted':
91
+ default:
92
+ return theme.ui.muted(text);
93
+ }
94
+ };
95
+ const abbreviatePath = (path, maxLen) => {
96
+ if (!path)
97
+ return '';
98
+ if (visibleLength(path) <= maxLen)
99
+ return path;
100
+ const parts = path.split('/').filter(Boolean);
101
+ if (parts.length <= 2) {
102
+ return `${path.slice(0, maxLen - 3)}...`;
103
+ }
104
+ const first = parts[0] ?? '';
105
+ const last = parts[parts.length - 1] ?? '';
106
+ const middleBudget = Math.max(0, maxLen - visibleLength(first) - visibleLength(last) - 7);
107
+ const middle = middleBudget > 0 ? parts.slice(1, -1).join('/').slice(0, middleBudget) : '';
108
+ return `${first}/.../${middle ? `${middle}/` : ''}${last}`;
109
+ };
110
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/ui/unified/layout.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.214",
3
+ "version": "1.7.215",
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",