erosolar-cli 2.1.170 → 2.1.172
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.
- package/README.md +1 -1
- package/agents/erosolar-code.rules.json +2 -2
- package/agents/general.rules.json +3 -21
- package/dist/StringUtils.d.ts +8 -0
- package/dist/StringUtils.d.ts.map +1 -0
- package/dist/StringUtils.js +11 -0
- package/dist/StringUtils.js.map +1 -0
- package/dist/capabilities/statusCapability.js +2 -2
- package/dist/capabilities/statusCapability.js.map +1 -1
- package/dist/contracts/agent-schemas.json +5 -5
- package/dist/core/agent.d.ts +24 -83
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +248 -499
- package/dist/core/agent.js.map +1 -1
- package/dist/core/aiFlowSupervisor.d.ts +44 -0
- package/dist/core/aiFlowSupervisor.d.ts.map +1 -0
- package/dist/core/aiFlowSupervisor.js +299 -0
- package/dist/core/aiFlowSupervisor.js.map +1 -0
- package/dist/core/cliTestHarness.d.ts +200 -0
- package/dist/core/cliTestHarness.d.ts.map +1 -0
- package/dist/core/cliTestHarness.js +549 -0
- package/dist/core/cliTestHarness.js.map +1 -0
- package/dist/core/preferences.d.ts +0 -1
- package/dist/core/preferences.d.ts.map +1 -1
- package/dist/core/preferences.js +1 -8
- package/dist/core/preferences.js.map +1 -1
- package/dist/core/schemaValidator.js +3 -3
- package/dist/core/schemaValidator.js.map +1 -1
- package/dist/core/testUtils.d.ts +121 -0
- package/dist/core/testUtils.d.ts.map +1 -0
- package/dist/core/testUtils.js +235 -0
- package/dist/core/testUtils.js.map +1 -0
- package/dist/core/toolPreconditions.d.ts +11 -0
- package/dist/core/toolPreconditions.d.ts.map +1 -1
- package/dist/core/toolPreconditions.js +164 -33
- package/dist/core/toolPreconditions.js.map +1 -1
- package/dist/core/toolRuntime.d.ts.map +1 -1
- package/dist/core/toolRuntime.js +114 -9
- package/dist/core/toolRuntime.js.map +1 -1
- package/dist/core/toolValidation.d.ts +116 -0
- package/dist/core/toolValidation.d.ts.map +1 -0
- package/dist/core/toolValidation.js +282 -0
- package/dist/core/toolValidation.js.map +1 -0
- package/dist/core/updateChecker.d.ts +1 -61
- package/dist/core/updateChecker.d.ts.map +1 -1
- package/dist/core/updateChecker.js +3 -147
- package/dist/core/updateChecker.js.map +1 -1
- package/dist/headless/headlessApp.d.ts.map +1 -1
- package/dist/headless/headlessApp.js +39 -0
- package/dist/headless/headlessApp.js.map +1 -1
- package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
- package/dist/plugins/tools/nodeDefaults.js +2 -0
- package/dist/plugins/tools/nodeDefaults.js.map +1 -1
- package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
- package/dist/providers/openaiResponsesProvider.js +74 -79
- package/dist/providers/openaiResponsesProvider.js.map +1 -1
- package/dist/runtime/agentController.d.ts.map +1 -1
- package/dist/runtime/agentController.js +3 -6
- package/dist/runtime/agentController.js.map +1 -1
- package/dist/runtime/agentSession.d.ts +2 -0
- package/dist/runtime/agentSession.d.ts.map +1 -1
- package/dist/runtime/agentSession.js +2 -2
- package/dist/runtime/agentSession.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +18 -11
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +291 -273
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/shellApp.d.ts.map +1 -1
- package/dist/shell/shellApp.js +1 -7
- package/dist/shell/shellApp.js.map +1 -1
- package/dist/shell/systemPrompt.d.ts.map +1 -1
- package/dist/shell/systemPrompt.js +15 -4
- package/dist/shell/systemPrompt.js.map +1 -1
- package/dist/subagents/taskRunner.js +1 -2
- package/dist/subagents/taskRunner.js.map +1 -1
- package/dist/tools/bashTools.d.ts.map +1 -1
- package/dist/tools/bashTools.js +8 -101
- package/dist/tools/bashTools.js.map +1 -1
- package/dist/tools/diffUtils.d.ts +2 -8
- package/dist/tools/diffUtils.d.ts.map +1 -1
- package/dist/tools/diffUtils.js +13 -72
- package/dist/tools/diffUtils.js.map +1 -1
- package/dist/tools/grepTools.d.ts.map +1 -1
- package/dist/tools/grepTools.js +2 -10
- package/dist/tools/grepTools.js.map +1 -1
- package/dist/tools/planningTools.d.ts +10 -0
- package/dist/tools/planningTools.d.ts.map +1 -1
- package/dist/tools/planningTools.js +16 -0
- package/dist/tools/planningTools.js.map +1 -1
- package/dist/tools/searchTools.d.ts.map +1 -1
- package/dist/tools/searchTools.js +2 -4
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/ui/PromptController.d.ts +4 -1
- package/dist/ui/PromptController.d.ts.map +1 -1
- package/dist/ui/PromptController.js +7 -1
- package/dist/ui/PromptController.js.map +1 -1
- package/dist/ui/ShellUIAdapter.d.ts +28 -292
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
- package/dist/ui/ShellUIAdapter.js +121 -1513
- package/dist/ui/ShellUIAdapter.js.map +1 -1
- package/dist/ui/UnifiedUIRenderer.d.ts +30 -133
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +370 -939
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/dist/ui/animatedStatus.d.ts +6 -128
- package/dist/ui/animatedStatus.d.ts.map +1 -1
- package/dist/ui/animatedStatus.js +50 -383
- package/dist/ui/animatedStatus.js.map +1 -1
- package/dist/ui/display.d.ts +26 -182
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +97 -678
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/layout.d.ts +1 -0
- package/dist/ui/layout.d.ts.map +1 -1
- package/dist/ui/layout.js +12 -0
- package/dist/ui/layout.js.map +1 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts +7 -61
- package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +1 -1
- package/dist/ui/orchestration/UIUpdateCoordinator.js +20 -232
- package/dist/ui/orchestration/UIUpdateCoordinator.js.map +1 -1
- package/dist/ui/planOverlay.d.ts +28 -0
- package/dist/ui/planOverlay.d.ts.map +1 -0
- package/dist/ui/planOverlay.js +156 -0
- package/dist/ui/planOverlay.js.map +1 -0
- package/dist/ui/shortcutsHelp.d.ts.map +1 -1
- package/dist/ui/shortcutsHelp.js +1 -0
- package/dist/ui/shortcutsHelp.js.map +1 -1
- package/dist/ui/streamingFormatter.d.ts +30 -0
- package/dist/ui/streamingFormatter.d.ts.map +1 -0
- package/dist/ui/streamingFormatter.js +91 -0
- package/dist/ui/streamingFormatter.js.map +1 -0
- package/dist/ui/unified/index.d.ts +1 -30
- package/dist/ui/unified/index.d.ts.map +1 -1
- package/dist/ui/unified/index.js +2 -45
- package/dist/ui/unified/index.js.map +1 -1
- package/dist/utils/errorUtils.d.ts +16 -0
- package/dist/utils/errorUtils.d.ts.map +1 -0
- package/dist/utils/errorUtils.js +66 -0
- package/dist/utils/errorUtils.js.map +1 -0
- package/package.json +2 -1
- package/dist/core/reliabilityPrompt.d.ts +0 -9
- package/dist/core/reliabilityPrompt.d.ts.map +0 -1
- package/dist/core/reliabilityPrompt.js +0 -31
- package/dist/core/reliabilityPrompt.js.map +0 -1
- package/dist/ui/UnifiedUIController.d.ts +0 -81
- package/dist/ui/UnifiedUIController.d.ts.map +0 -1
- package/dist/ui/UnifiedUIController.js +0 -212
- package/dist/ui/UnifiedUIController.js.map +0 -1
- package/dist/ui/animation/AnimationScheduler.d.ts +0 -192
- package/dist/ui/animation/AnimationScheduler.d.ts.map +0 -1
- package/dist/ui/animation/AnimationScheduler.js +0 -432
- package/dist/ui/animation/AnimationScheduler.js.map +0 -1
- package/dist/ui/inPlaceUpdater.d.ts +0 -181
- package/dist/ui/inPlaceUpdater.d.ts.map +0 -1
- package/dist/ui/inPlaceUpdater.js +0 -515
- package/dist/ui/inPlaceUpdater.js.map +0 -1
- package/dist/ui/interrupts/InterruptManager.d.ts +0 -142
- package/dist/ui/interrupts/InterruptManager.d.ts.map +0 -1
- package/dist/ui/interrupts/InterruptManager.js +0 -439
- package/dist/ui/interrupts/InterruptManager.js.map +0 -1
- package/dist/ui/telemetry/ResponseTracker.d.ts +0 -22
- package/dist/ui/telemetry/ResponseTracker.d.ts.map +0 -1
- package/dist/ui/telemetry/ResponseTracker.js +0 -60
- package/dist/ui/telemetry/ResponseTracker.js.map +0 -1
- package/dist/ui/telemetry/UITelemetry.d.ts +0 -181
- package/dist/ui/telemetry/UITelemetry.d.ts.map +0 -1
- package/dist/ui/telemetry/UITelemetry.js +0 -446
- package/dist/ui/telemetry/UITelemetry.js.map +0 -1
- package/dist/ui/unified/layout.d.ts +0 -12
- package/dist/ui/unified/layout.d.ts.map +0 -1
- package/dist/ui/unified/layout.js +0 -96
- package/dist/ui/unified/layout.js.map +0 -1
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { theme } from './theme.js';
|
|
2
|
+
/**
|
|
3
|
+
* Renders a compact, persistent plan panel similar to the Codex CLI todo strip.
|
|
4
|
+
* Keeps status-aware progress and a short note without consuming scrollback.
|
|
5
|
+
*/
|
|
6
|
+
export class PlanOverlay {
|
|
7
|
+
state = null;
|
|
8
|
+
setPlan(steps, explanation) {
|
|
9
|
+
const normalized = (steps || [])
|
|
10
|
+
.map((step) => ({
|
|
11
|
+
step: step.step.trim(),
|
|
12
|
+
status: normalizeStatus(step.status),
|
|
13
|
+
}))
|
|
14
|
+
.filter((step) => step.step.length > 0);
|
|
15
|
+
if (!normalized.length) {
|
|
16
|
+
this.state = null;
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
this.state = {
|
|
20
|
+
steps: normalized,
|
|
21
|
+
explanation: explanation?.trim() || undefined,
|
|
22
|
+
updatedAt: Date.now(),
|
|
23
|
+
visible: true,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
clear() {
|
|
27
|
+
this.state = null;
|
|
28
|
+
}
|
|
29
|
+
show() {
|
|
30
|
+
if (!this.state)
|
|
31
|
+
return;
|
|
32
|
+
this.state.visible = true;
|
|
33
|
+
}
|
|
34
|
+
hide() {
|
|
35
|
+
if (!this.state)
|
|
36
|
+
return;
|
|
37
|
+
this.state.visible = false;
|
|
38
|
+
}
|
|
39
|
+
toggle(show) {
|
|
40
|
+
if (!this.state)
|
|
41
|
+
return;
|
|
42
|
+
if (typeof show === 'boolean') {
|
|
43
|
+
this.state.visible = show;
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.state.visible = !this.state.visible;
|
|
47
|
+
}
|
|
48
|
+
hasPlan() {
|
|
49
|
+
return Boolean(this.state && this.state.steps.length > 0);
|
|
50
|
+
}
|
|
51
|
+
getProgressLabel() {
|
|
52
|
+
if (!this.state || !this.state.steps.length) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const total = this.state.steps.length;
|
|
56
|
+
const completed = this.state.steps.filter((step) => step.status === 'completed').length;
|
|
57
|
+
const inProgress = this.state.steps.filter((step) => step.status === 'in_progress').length;
|
|
58
|
+
if (total === 0) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const segments = [`${completed}/${total} done`];
|
|
62
|
+
if (inProgress > 0) {
|
|
63
|
+
segments.push(`${inProgress} in flight`);
|
|
64
|
+
}
|
|
65
|
+
return segments.join(', ');
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Render a short, persistent panel that sits in the control bar overlay.
|
|
69
|
+
* Kept intentionally short so it fits under the prompt without crowding.
|
|
70
|
+
*/
|
|
71
|
+
render(maxSteps = 7) {
|
|
72
|
+
if (!this.state || !this.state.visible || this.state.steps.length === 0) {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
const lines = [];
|
|
76
|
+
const progress = this.getProgressLabel();
|
|
77
|
+
const stamp = formatRelative(this.state.updatedAt);
|
|
78
|
+
const headerParts = [
|
|
79
|
+
theme.gradient.primary('Plan'),
|
|
80
|
+
progress ? theme.ui.muted(`(${progress})`) : null,
|
|
81
|
+
stamp ? theme.ui.muted(`· ${stamp}`) : null,
|
|
82
|
+
].filter(Boolean);
|
|
83
|
+
lines.push(headerParts.join(' '));
|
|
84
|
+
const cappedSteps = this.state.steps.slice(0, Math.max(1, maxSteps));
|
|
85
|
+
for (const step of cappedSteps) {
|
|
86
|
+
lines.push(` ${formatStatus(step.status)} ${step.step}`);
|
|
87
|
+
}
|
|
88
|
+
const remaining = this.state.steps.length - cappedSteps.length;
|
|
89
|
+
if (remaining > 0) {
|
|
90
|
+
lines.push(theme.ui.muted(` … plus ${remaining} more step${remaining === 1 ? '' : 's'}`));
|
|
91
|
+
}
|
|
92
|
+
if (this.state.explanation) {
|
|
93
|
+
lines.push(theme.ui.muted(` note: ${truncate(this.state.explanation, 64)}`));
|
|
94
|
+
}
|
|
95
|
+
return lines;
|
|
96
|
+
}
|
|
97
|
+
asText() {
|
|
98
|
+
if (!this.state || this.state.steps.length === 0) {
|
|
99
|
+
return 'No active plan.';
|
|
100
|
+
}
|
|
101
|
+
const lines = [];
|
|
102
|
+
const progress = this.getProgressLabel();
|
|
103
|
+
const stamp = formatRelative(this.state.updatedAt);
|
|
104
|
+
const header = ['Plan', progress ? `(${progress})` : null, stamp ? `- ${stamp}` : null]
|
|
105
|
+
.filter(Boolean)
|
|
106
|
+
.join(' ');
|
|
107
|
+
lines.push(header);
|
|
108
|
+
for (const step of this.state.steps) {
|
|
109
|
+
lines.push(` ${formatStatus(step.status)} ${step.step}`);
|
|
110
|
+
}
|
|
111
|
+
if (this.state.explanation) {
|
|
112
|
+
lines.push('');
|
|
113
|
+
lines.push(`note: ${this.state.explanation}`);
|
|
114
|
+
}
|
|
115
|
+
return lines.join('\n');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function formatStatus(status) {
|
|
119
|
+
switch (status) {
|
|
120
|
+
case 'completed':
|
|
121
|
+
return theme.success('✓');
|
|
122
|
+
case 'in_progress':
|
|
123
|
+
return theme.info('•');
|
|
124
|
+
default:
|
|
125
|
+
return theme.ui.muted('∙');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function normalizeStatus(status) {
|
|
129
|
+
if (status === 'completed' || status === 'in_progress' || status === 'pending') {
|
|
130
|
+
return status;
|
|
131
|
+
}
|
|
132
|
+
return 'pending';
|
|
133
|
+
}
|
|
134
|
+
function truncate(text, maxLength) {
|
|
135
|
+
const normalized = (text || '').trim();
|
|
136
|
+
if (normalized.length <= maxLength) {
|
|
137
|
+
return normalized;
|
|
138
|
+
}
|
|
139
|
+
return `${normalized.slice(0, Math.max(0, maxLength - 1))}…`;
|
|
140
|
+
}
|
|
141
|
+
function formatRelative(timestamp) {
|
|
142
|
+
const deltaMs = Date.now() - timestamp;
|
|
143
|
+
if (deltaMs < 5_000)
|
|
144
|
+
return 'just now';
|
|
145
|
+
const minutes = Math.floor(deltaMs / 60_000);
|
|
146
|
+
if (minutes < 1)
|
|
147
|
+
return 'seconds ago';
|
|
148
|
+
if (minutes < 60)
|
|
149
|
+
return `${minutes}m ago`;
|
|
150
|
+
const hours = Math.floor(minutes / 60);
|
|
151
|
+
if (hours < 24)
|
|
152
|
+
return `${hours}h ago`;
|
|
153
|
+
const days = Math.floor(hours / 24);
|
|
154
|
+
return `${days}d ago`;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=planOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planOverlay.js","sourceRoot":"","sources":["../../src/ui/planOverlay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortcutsHelp.d.ts","sourceRoot":"","sources":["../../src/ui/shortcutsHelp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"shortcutsHelp.d.ts","sourceRoot":"","sources":["../../src/ui/shortcutsHelp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;CACJ;AA4DD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA8B5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAS7C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAiB7E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAY5E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAMrE"}
|
package/dist/ui/shortcutsHelp.js
CHANGED
|
@@ -10,6 +10,7 @@ const EROSOLAR_SHORTCUTS = [
|
|
|
10
10
|
{ keys: 'Shift+Tab', description: 'Cycle edit mode (auto/ask/plan)' },
|
|
11
11
|
{ keys: 'Tab', description: 'Toggle thinking (balanced/longer)' },
|
|
12
12
|
{ keys: 'Ctrl+Shift+V', description: 'Toggle verification' },
|
|
13
|
+
{ keys: 'Ctrl+Shift+C', description: 'Toggle auto-continue' },
|
|
13
14
|
{ keys: 'Ctrl+Shift+A', description: 'Toggle approvals for high-impact actions' },
|
|
14
15
|
{ keys: 'Ctrl+Shift+E', description: 'Toggle edit permission mode' },
|
|
15
16
|
{ keys: 'Ctrl+Shift+X', description: 'Clear/compact context' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortcutsHelp.js","sourceRoot":"","sources":["../../src/ui/shortcutsHelp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shortcutsHelp.js","sourceRoot":"","sources":["../../src/ui/shortcutsHelp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StreamingResponseFormatter
|
|
3
|
+
* Claude Code style: Stream plain text without forcing ⏺ bullets.
|
|
4
|
+
* Keeps formatting lightweight so responses flow naturally.
|
|
5
|
+
*/
|
|
6
|
+
export declare class StreamingResponseFormatter {
|
|
7
|
+
private lineOpen;
|
|
8
|
+
private currentLine;
|
|
9
|
+
private mode;
|
|
10
|
+
constructor(columns?: number);
|
|
11
|
+
header(): string;
|
|
12
|
+
/**
|
|
13
|
+
* Set the streaming mode (content vs reasoning)
|
|
14
|
+
* Reasoning chunks are visually distinguished with muted styling
|
|
15
|
+
*/
|
|
16
|
+
setMode(mode: 'content' | 'reasoning'): void;
|
|
17
|
+
formatChunk(chunk: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Format reasoning chunk with visual indicator
|
|
20
|
+
* Used for extended thinking mode
|
|
21
|
+
*/
|
|
22
|
+
formatReasoningChunk(chunk: string): string;
|
|
23
|
+
finish(options?: string | {
|
|
24
|
+
note?: string;
|
|
25
|
+
mode?: 'update' | 'complete' | 'stop' | 'quit';
|
|
26
|
+
}): string;
|
|
27
|
+
private resetState;
|
|
28
|
+
private modeIcon;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=streamingFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamingFormatter.d.ts","sourceRoot":"","sources":["../../src/ui/streamingFormatter.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,IAAI,CAAsC;gBAEtC,OAAO,CAAC,EAAE,MAAM;IAI5B,MAAM,IAAI,MAAM;IAKhB;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,IAAI;IAI5C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAkBlC;;;OAGG;IACH,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAa3C,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM;IAsBpG,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,QAAQ;CAajB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { theme } from './theme.js';
|
|
2
|
+
/**
|
|
3
|
+
* StreamingResponseFormatter
|
|
4
|
+
* Claude Code style: Stream plain text without forcing ⏺ bullets.
|
|
5
|
+
* Keeps formatting lightweight so responses flow naturally.
|
|
6
|
+
*/
|
|
7
|
+
export class StreamingResponseFormatter {
|
|
8
|
+
lineOpen = false;
|
|
9
|
+
currentLine = '';
|
|
10
|
+
mode = 'content';
|
|
11
|
+
constructor(columns) {
|
|
12
|
+
clamp(columns ?? 80, 48, 110);
|
|
13
|
+
}
|
|
14
|
+
header() {
|
|
15
|
+
// Start on a clean line before streaming content
|
|
16
|
+
return '\n';
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Set the streaming mode (content vs reasoning)
|
|
20
|
+
* Reasoning chunks are visually distinguished with muted styling
|
|
21
|
+
*/
|
|
22
|
+
setMode(mode) {
|
|
23
|
+
this.mode = mode;
|
|
24
|
+
}
|
|
25
|
+
formatChunk(chunk) {
|
|
26
|
+
if (!chunk) {
|
|
27
|
+
return '';
|
|
28
|
+
}
|
|
29
|
+
const normalized = chunk.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
30
|
+
// Apply visual distinction for reasoning blocks
|
|
31
|
+
const formatted = this.mode === 'reasoning'
|
|
32
|
+
? theme.ui.muted(normalized)
|
|
33
|
+
: normalized;
|
|
34
|
+
// Track whether the line ended cleanly so finish() can close it if needed
|
|
35
|
+
this.lineOpen = !normalized.endsWith('\n');
|
|
36
|
+
this.currentLine = normalized.split('\n').pop() ?? '';
|
|
37
|
+
return formatted;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Format reasoning chunk with visual indicator
|
|
41
|
+
* Used for extended thinking mode
|
|
42
|
+
*/
|
|
43
|
+
formatReasoningChunk(chunk) {
|
|
44
|
+
if (!chunk) {
|
|
45
|
+
return '';
|
|
46
|
+
}
|
|
47
|
+
const normalized = chunk.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
48
|
+
const formatted = theme.ui.muted(normalized);
|
|
49
|
+
this.lineOpen = !normalized.endsWith('\n');
|
|
50
|
+
this.currentLine = normalized.split('\n').pop() ?? '';
|
|
51
|
+
return formatted;
|
|
52
|
+
}
|
|
53
|
+
finish(options) {
|
|
54
|
+
const resolved = typeof options === 'string' ? { note: options } : options ?? {};
|
|
55
|
+
const note = resolved.note?.trim();
|
|
56
|
+
const mode = resolved.mode ?? 'complete';
|
|
57
|
+
let output = '';
|
|
58
|
+
// Close any open line so the status note lands on its own line
|
|
59
|
+
if (this.lineOpen) {
|
|
60
|
+
output += '\n';
|
|
61
|
+
}
|
|
62
|
+
if (note) {
|
|
63
|
+
const icon = this.modeIcon(mode);
|
|
64
|
+
const statusText = icon ? `${icon} ${note}` : note;
|
|
65
|
+
output += `${statusText}\n`;
|
|
66
|
+
}
|
|
67
|
+
this.resetState();
|
|
68
|
+
return output;
|
|
69
|
+
}
|
|
70
|
+
resetState() {
|
|
71
|
+
this.lineOpen = false;
|
|
72
|
+
this.currentLine = '';
|
|
73
|
+
}
|
|
74
|
+
modeIcon(mode) {
|
|
75
|
+
switch (mode) {
|
|
76
|
+
case 'update':
|
|
77
|
+
return theme.info('↺');
|
|
78
|
+
case 'stop':
|
|
79
|
+
return theme.warning('■');
|
|
80
|
+
case 'quit':
|
|
81
|
+
return theme.error('■');
|
|
82
|
+
case 'complete':
|
|
83
|
+
default:
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function clamp(value, min, max) {
|
|
89
|
+
return Math.max(min, Math.min(max, value));
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=streamingFormatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamingFormatter.js","sourceRoot":"","sources":["../../src/ui/streamingFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;;GAIG;AACH,MAAM,OAAO,0BAA0B;IAC7B,QAAQ,GAAG,KAAK,CAAC;IACjB,WAAW,GAAG,EAAE,CAAC;IACjB,IAAI,GAA4B,SAAS,CAAC;IAElD,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,MAAM;QACJ,iDAAiD;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,IAA6B;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAErE,gDAAgD;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW;YACzC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;YAC5B,CAAC,CAAC,UAAU,CAAC;QAEf,0EAA0E;QAC1E,IAAI,CAAC,QAAQ,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAAC,KAAa;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,OAAoF;QACzF,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QACjF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAC;QAEzC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,+DAA+D;QAC/D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACnD,MAAM,IAAI,GAAG,UAAU,IAAI,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAEO,QAAQ,CAAC,IAA6C;QAC5D,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC5B,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1B,KAAK,UAAU,CAAC;YAChB;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;CACF;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -1,26 +1,11 @@
|
|
|
1
|
+
import type { ToolRuntimeObserver } from '../../core/toolRuntime.js';
|
|
1
2
|
import type { Display } from '../display.js';
|
|
2
3
|
import { ShellUIAdapter } from '../ShellUIAdapter.js';
|
|
3
4
|
import { UIUpdateCoordinator } from '../orchestration/UIUpdateCoordinator.js';
|
|
4
|
-
import type { ToolRuntimeObserver } from '../../core/toolRuntime.js';
|
|
5
|
-
import type { ToolCallRequest } from '../../core/types.js';
|
|
6
|
-
export { type ToolOperation, type Badge, type BadgeStyle } from '../ShellUIAdapter.js';
|
|
7
|
-
export { inPlaceUpdater, InPlaceUpdater, updateInPlace, showProgress, finishProgress } from '../inPlaceUpdater.js';
|
|
8
|
-
export { theme, icons, spinnerFrames, progressChars, boxChars } from '../theme.js';
|
|
9
5
|
export interface UnifiedUiOptions {
|
|
10
|
-
writeStream?: NodeJS.WriteStream;
|
|
11
6
|
display?: Display;
|
|
12
|
-
enableTelemetry?: boolean;
|
|
13
|
-
debugMode?: boolean;
|
|
14
|
-
plainOutput?: boolean;
|
|
15
7
|
updateCoordinator?: UIUpdateCoordinator;
|
|
16
8
|
}
|
|
17
|
-
/**
|
|
18
|
-
* UnifiedUiLayer - single entry point for all terminal UI wiring.
|
|
19
|
-
*
|
|
20
|
-
* This layer standardizes how the shell interacts with the Unified UI Controller,
|
|
21
|
-
* the Display system, and update coordination/telemetry. It ensures both the
|
|
22
|
-
* TypeScript and Python CLIs share the same conceptual contract.
|
|
23
|
-
*/
|
|
24
9
|
export declare class UnifiedUiLayer {
|
|
25
10
|
readonly display: Display;
|
|
26
11
|
readonly adapter: ShellUIAdapter;
|
|
@@ -31,20 +16,6 @@ export declare class UnifiedUiLayer {
|
|
|
31
16
|
startProcessing(message?: string): void;
|
|
32
17
|
endProcessing(message?: string): void;
|
|
33
18
|
updateContextUsage(percentage: number): void;
|
|
34
|
-
setOverlayEnabled(enabled: boolean): void;
|
|
35
|
-
getTelemetry(): ReturnType<ShellUIAdapter['getTelemetry']>;
|
|
36
|
-
getState(): ReturnType<ShellUIAdapter['getState']>;
|
|
37
|
-
showInterrupt(message: string, type?: 'confirmation' | 'alert' | 'question', handler?: () => void | Promise<void>): string;
|
|
38
|
-
completeInterrupt(id: string): void;
|
|
39
|
-
onToolStart(toolCall: ToolCallRequest): void;
|
|
40
|
-
/**
|
|
41
|
-
* Set file change tracking callback
|
|
42
|
-
*/
|
|
43
|
-
setFileChangeCallback(callback: (path: string, type: 'edit' | 'write' | 'delete', additions: number, removals: number) => void): void;
|
|
44
|
-
/**
|
|
45
|
-
* Set tool status callback for dynamic status updates
|
|
46
|
-
*/
|
|
47
|
-
setToolStatusCallback(callback: (status: string | null) => void): void;
|
|
48
19
|
dispose(): void;
|
|
49
20
|
}
|
|
50
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/unified/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/unified/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAE9E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,mBAAmB,CAAC;CACzC;AAED,qBAAa,cAAc;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;IACjE,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;gBAE1B,OAAO,GAAE,gBAAqB;IAO1C,kBAAkB,IAAI,mBAAmB;IAIzC,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIvC,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAIrC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI5C,OAAO,IAAI,IAAI;CAIhB"}
|
package/dist/ui/unified/index.js
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
import { display as defaultDisplay } from '../display.js';
|
|
2
2
|
import { ShellUIAdapter } from '../ShellUIAdapter.js';
|
|
3
3
|
import { UIUpdateCoordinator } from '../orchestration/UIUpdateCoordinator.js';
|
|
4
|
-
export { inPlaceUpdater, InPlaceUpdater, updateInPlace, showProgress, finishProgress } from '../inPlaceUpdater.js';
|
|
5
|
-
export { theme, icons, spinnerFrames, progressChars, boxChars } from '../theme.js';
|
|
6
|
-
/**
|
|
7
|
-
* UnifiedUiLayer - single entry point for all terminal UI wiring.
|
|
8
|
-
*
|
|
9
|
-
* This layer standardizes how the shell interacts with the Unified UI Controller,
|
|
10
|
-
* the Display system, and update coordination/telemetry. It ensures both the
|
|
11
|
-
* TypeScript and Python CLIs share the same conceptual contract.
|
|
12
|
-
*/
|
|
13
4
|
export class UnifiedUiLayer {
|
|
14
5
|
display;
|
|
15
6
|
adapter;
|
|
@@ -18,12 +9,7 @@ export class UnifiedUiLayer {
|
|
|
18
9
|
constructor(options = {}) {
|
|
19
10
|
this.display = options.display ?? defaultDisplay;
|
|
20
11
|
this.updates = options.updateCoordinator ?? new UIUpdateCoordinator();
|
|
21
|
-
|
|
22
|
-
enableOverlay: !options.plainOutput,
|
|
23
|
-
enableTelemetry: options.enableTelemetry ?? true,
|
|
24
|
-
debugMode: options.debugMode ?? false,
|
|
25
|
-
};
|
|
26
|
-
this.adapter = new ShellUIAdapter((options.writeStream ?? process.stdout), this.display, adapterConfig, this.updates);
|
|
12
|
+
this.adapter = new ShellUIAdapter(this.display, {});
|
|
27
13
|
this.controller = this.adapter.getController();
|
|
28
14
|
}
|
|
29
15
|
createToolObserver() {
|
|
@@ -38,38 +24,9 @@ export class UnifiedUiLayer {
|
|
|
38
24
|
updateContextUsage(percentage) {
|
|
39
25
|
this.adapter.updateContextUsage(percentage);
|
|
40
26
|
}
|
|
41
|
-
setOverlayEnabled(enabled) {
|
|
42
|
-
this.adapter.setOverlayEnabled(enabled);
|
|
43
|
-
}
|
|
44
|
-
getTelemetry() {
|
|
45
|
-
return this.adapter.getTelemetry();
|
|
46
|
-
}
|
|
47
|
-
getState() {
|
|
48
|
-
return this.adapter.getState();
|
|
49
|
-
}
|
|
50
|
-
showInterrupt(message, type = 'alert', handler) {
|
|
51
|
-
return this.adapter.showInterrupt(message, type, handler);
|
|
52
|
-
}
|
|
53
|
-
completeInterrupt(id) {
|
|
54
|
-
this.adapter.completeInterrupt(id);
|
|
55
|
-
}
|
|
56
|
-
onToolStart(toolCall) {
|
|
57
|
-
this.controller.onToolStart(toolCall);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Set file change tracking callback
|
|
61
|
-
*/
|
|
62
|
-
setFileChangeCallback(callback) {
|
|
63
|
-
this.adapter.setFileChangeCallback(callback);
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Set tool status callback for dynamic status updates
|
|
67
|
-
*/
|
|
68
|
-
setToolStatusCallback(callback) {
|
|
69
|
-
this.adapter.setToolStatusCallback(callback);
|
|
70
|
-
}
|
|
71
27
|
dispose() {
|
|
72
28
|
this.adapter.dispose();
|
|
29
|
+
this.updates.dispose();
|
|
73
30
|
}
|
|
74
31
|
}
|
|
75
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/unified/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/unified/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAO9E,MAAM,OAAO,cAAc;IAChB,OAAO,CAAU;IACjB,OAAO,CAAiB;IACxB,UAAU,CAA8C;IACxD,OAAO,CAAsB;IAEtC,YAAY,UAA4B,EAAE;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,iBAAiB,IAAI,IAAI,mBAAmB,EAAE,CAAC;QACtE,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACjD,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAC3C,CAAC;IAED,eAAe,CAAC,OAAgB;QAC9B,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,aAAa,CAAC,OAAgB;QAC5B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,kBAAkB,CAAC,UAAkB;QACnC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced error utilities for better debugging and error reporting
|
|
3
|
+
*/
|
|
4
|
+
import type { ErrorContext } from '../core/errors.js';
|
|
5
|
+
export interface ErrorDetails {
|
|
6
|
+
message: string;
|
|
7
|
+
code?: string;
|
|
8
|
+
context?: ErrorContext;
|
|
9
|
+
stack?: string;
|
|
10
|
+
timestamp: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function createErrorDetails(error: unknown, context?: ErrorContext, code?: string): ErrorDetails;
|
|
13
|
+
export declare function formatErrorForLogging(error: unknown, context?: ErrorContext): string;
|
|
14
|
+
export declare function isRetryableError(error: unknown): boolean;
|
|
15
|
+
export declare function withRetry<T>(operation: () => Promise<T>, maxRetries?: number, delayMs?: number): Promise<T>;
|
|
16
|
+
//# sourceMappingURL=errorUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorUtils.d.ts","sourceRoot":"","sources":["../../src/utils/errorUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAcD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,YAAY,EACtB,IAAI,CAAC,EAAE,MAAM,GACZ,YAAY,CAWd;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,CAkBpF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAOxD;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,UAAU,GAAE,MAAU,EACtB,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,CAAC,CAAC,CAkBZ"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced error utilities for better debugging and error reporting
|
|
3
|
+
*/
|
|
4
|
+
// Centralized configuration for retryable error patterns
|
|
5
|
+
const RETRYABLE_ERROR_PATTERNS = [
|
|
6
|
+
'timeout',
|
|
7
|
+
'network',
|
|
8
|
+
'rate limit',
|
|
9
|
+
'too many requests',
|
|
10
|
+
'service unavailable',
|
|
11
|
+
'gateway timeout',
|
|
12
|
+
'bad gateway',
|
|
13
|
+
'internal server error',
|
|
14
|
+
];
|
|
15
|
+
export function createErrorDetails(error, context, code) {
|
|
16
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
17
|
+
const stack = error instanceof Error ? error.stack : undefined;
|
|
18
|
+
return {
|
|
19
|
+
message,
|
|
20
|
+
code,
|
|
21
|
+
context,
|
|
22
|
+
stack,
|
|
23
|
+
timestamp: new Date().toISOString(),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function formatErrorForLogging(error, context) {
|
|
27
|
+
const details = createErrorDetails(error, context);
|
|
28
|
+
const parts = [
|
|
29
|
+
`[${details.timestamp}]`,
|
|
30
|
+
details.code ? `[${details.code}]` : '',
|
|
31
|
+
details.message,
|
|
32
|
+
];
|
|
33
|
+
if (details.context && Object.keys(details.context).length > 0) {
|
|
34
|
+
parts.push(`Context: ${JSON.stringify(details.context)}`);
|
|
35
|
+
}
|
|
36
|
+
if (details.stack) {
|
|
37
|
+
parts.push(`Stack: ${details.stack}`);
|
|
38
|
+
}
|
|
39
|
+
return parts.filter(Boolean).join(' ');
|
|
40
|
+
}
|
|
41
|
+
export function isRetryableError(error) {
|
|
42
|
+
if (!(error instanceof Error)) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
const message = error.message.toLowerCase();
|
|
46
|
+
return RETRYABLE_ERROR_PATTERNS.some(pattern => message.includes(pattern));
|
|
47
|
+
}
|
|
48
|
+
export async function withRetry(operation, maxRetries = 3, delayMs = 1000) {
|
|
49
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
50
|
+
try {
|
|
51
|
+
return await operation();
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
// Don't retry if we've exhausted attempts or error is not retryable
|
|
55
|
+
if (attempt === maxRetries || !isRetryableError(error)) {
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
// Exponential backoff
|
|
59
|
+
const backoffDelay = delayMs * Math.pow(2, attempt);
|
|
60
|
+
await new Promise(resolve => setTimeout(resolve, backoffDelay));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// This should never be reached due to the throw above, but TypeScript needs it
|
|
64
|
+
throw new Error('Retry logic failed unexpectedly');
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=errorUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errorUtils.js","sourceRoot":"","sources":["../../src/utils/errorUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,yDAAyD;AACzD,MAAM,wBAAwB,GAAG;IAC/B,SAAS;IACT,SAAS;IACT,YAAY;IACZ,mBAAmB;IACnB,qBAAqB;IACrB,iBAAiB;IACjB,aAAa;IACb,uBAAuB;CACf,CAAC;AAEX,MAAM,UAAU,kBAAkB,CAChC,KAAc,EACd,OAAsB,EACtB,IAAa;IAEb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAE/D,OAAO;QACL,OAAO;QACP,IAAI;QACJ,OAAO;QACP,KAAK;QACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc,EAAE,OAAsB;IAC1E,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEnD,MAAM,KAAK,GAAG;QACZ,IAAI,OAAO,CAAC,SAAS,GAAG;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;QACvC,OAAO,CAAC,OAAO;KAChB,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAA2B,EAC3B,aAAqB,CAAC,EACtB,UAAkB,IAAI;IAEtB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oEAAoE;YACpE,IAAI,OAAO,KAAK,UAAU,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,MAAM,KAAK,CAAC;YACd,CAAC;YAED,sBAAsB;YACtB,MAAM,YAAY,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "erosolar-cli",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.172",
|
|
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",
|
|
@@ -124,6 +124,7 @@
|
|
|
124
124
|
"boxen": "^5.1.2",
|
|
125
125
|
"chalk": "^4.1.2",
|
|
126
126
|
"cli-spinners": "^2.9.2",
|
|
127
|
+
"erosolar-cli": "^2.1.168",
|
|
127
128
|
"gradient-string": "^2.0.2",
|
|
128
129
|
"nanospinner": "^1.1.0",
|
|
129
130
|
"nodemailer": "^7.0.10",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared reliability directives applied to all erosolar-cli runtimes.
|
|
3
|
-
* Ensures the agent keeps working, acknowledges the user before tools,
|
|
4
|
-
* and surfaces useful insights instead of stalling.
|
|
5
|
-
*/
|
|
6
|
-
declare const RELIABILITY_SENTINEL = "[EROSOLAR_RELIABILITY_RULES]";
|
|
7
|
-
export declare function applyReliabilityDirectives(basePrompt: string): string;
|
|
8
|
-
export { RELIABILITY_SENTINEL };
|
|
9
|
-
//# sourceMappingURL=reliabilityPrompt.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reliabilityPrompt.d.ts","sourceRoot":"","sources":["../../src/core/reliabilityPrompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,QAAA,MAAM,oBAAoB,iCAAiC,CAAC;AAgB5D,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CASrE;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared reliability directives applied to all erosolar-cli runtimes.
|
|
3
|
-
* Ensures the agent keeps working, acknowledges the user before tools,
|
|
4
|
-
* and surfaces useful insights instead of stalling.
|
|
5
|
-
*/
|
|
6
|
-
const RELIABILITY_SENTINEL = '[EROSOLAR_RELIABILITY_RULES]';
|
|
7
|
-
const RELIABILITY_DIRECTIVES = `${RELIABILITY_SENTINEL}
|
|
8
|
-
CRITICAL RELIABILITY RULES:
|
|
9
|
-
1) COMPLETE THE TASK end-to-end. Do not stop until you have concrete results with file:line citations.
|
|
10
|
-
2) NEVER stop after calling a tool if the task is still unfinished. Keep going without prompting the user.
|
|
11
|
-
3) NEVER say "I need to do X" and then stop. Actually do the work in the same response.
|
|
12
|
-
4) Prefer multiple tool calls in a single response when needed; avoid unnecessary waits between steps.
|
|
13
|
-
5) Do not call the same tool with identical arguments twice in a row; use previous results to move forward.
|
|
14
|
-
6) ALWAYS acknowledge the user's request before the first tool call with a brief, actionable insight tied to their command (no filler like "Noted").
|
|
15
|
-
7) Keep planning internal: avoid dumping long "Understanding/Plan" sections; share only a one-line intent when truly helpful, then act with tools.
|
|
16
|
-
8) Only show user-facing text when it conveys useful state or next actions; omit boilerplate and redundant prefaces.
|
|
17
|
-
9) If a tool fails or a plan stalls, immediately choose an alternative approach and continue.
|
|
18
|
-
10) Surface concise insights or progress updates to the UI whenever they help the user stay oriented.
|
|
19
|
-
`;
|
|
20
|
-
export function applyReliabilityDirectives(basePrompt) {
|
|
21
|
-
const prompt = (basePrompt ?? '').trim();
|
|
22
|
-
if (prompt.includes(RELIABILITY_SENTINEL)) {
|
|
23
|
-
return prompt;
|
|
24
|
-
}
|
|
25
|
-
if (!prompt) {
|
|
26
|
-
return RELIABILITY_DIRECTIVES.trim();
|
|
27
|
-
}
|
|
28
|
-
return `${prompt}\n\n${RELIABILITY_DIRECTIVES}`.trim();
|
|
29
|
-
}
|
|
30
|
-
export { RELIABILITY_SENTINEL };
|
|
31
|
-
//# sourceMappingURL=reliabilityPrompt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reliabilityPrompt.js","sourceRoot":"","sources":["../../src/core/reliabilityPrompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,8BAA8B,CAAC;AAE5D,MAAM,sBAAsB,GAAG,GAAG,oBAAoB;;;;;;;;;;;;CAYrD,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,UAAkB;IAC3D,MAAM,MAAM,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,sBAAsB,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,GAAG,MAAM,OAAO,sBAAsB,EAAE,CAAC,IAAI,EAAE,CAAC;AACzD,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|