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.
Files changed (172) hide show
  1. package/README.md +1 -1
  2. package/agents/erosolar-code.rules.json +2 -2
  3. package/agents/general.rules.json +3 -21
  4. package/dist/StringUtils.d.ts +8 -0
  5. package/dist/StringUtils.d.ts.map +1 -0
  6. package/dist/StringUtils.js +11 -0
  7. package/dist/StringUtils.js.map +1 -0
  8. package/dist/capabilities/statusCapability.js +2 -2
  9. package/dist/capabilities/statusCapability.js.map +1 -1
  10. package/dist/contracts/agent-schemas.json +5 -5
  11. package/dist/core/agent.d.ts +24 -83
  12. package/dist/core/agent.d.ts.map +1 -1
  13. package/dist/core/agent.js +248 -499
  14. package/dist/core/agent.js.map +1 -1
  15. package/dist/core/aiFlowSupervisor.d.ts +44 -0
  16. package/dist/core/aiFlowSupervisor.d.ts.map +1 -0
  17. package/dist/core/aiFlowSupervisor.js +299 -0
  18. package/dist/core/aiFlowSupervisor.js.map +1 -0
  19. package/dist/core/cliTestHarness.d.ts +200 -0
  20. package/dist/core/cliTestHarness.d.ts.map +1 -0
  21. package/dist/core/cliTestHarness.js +549 -0
  22. package/dist/core/cliTestHarness.js.map +1 -0
  23. package/dist/core/preferences.d.ts +0 -1
  24. package/dist/core/preferences.d.ts.map +1 -1
  25. package/dist/core/preferences.js +1 -8
  26. package/dist/core/preferences.js.map +1 -1
  27. package/dist/core/schemaValidator.js +3 -3
  28. package/dist/core/schemaValidator.js.map +1 -1
  29. package/dist/core/testUtils.d.ts +121 -0
  30. package/dist/core/testUtils.d.ts.map +1 -0
  31. package/dist/core/testUtils.js +235 -0
  32. package/dist/core/testUtils.js.map +1 -0
  33. package/dist/core/toolPreconditions.d.ts +11 -0
  34. package/dist/core/toolPreconditions.d.ts.map +1 -1
  35. package/dist/core/toolPreconditions.js +164 -33
  36. package/dist/core/toolPreconditions.js.map +1 -1
  37. package/dist/core/toolRuntime.d.ts.map +1 -1
  38. package/dist/core/toolRuntime.js +114 -9
  39. package/dist/core/toolRuntime.js.map +1 -1
  40. package/dist/core/toolValidation.d.ts +116 -0
  41. package/dist/core/toolValidation.d.ts.map +1 -0
  42. package/dist/core/toolValidation.js +282 -0
  43. package/dist/core/toolValidation.js.map +1 -0
  44. package/dist/core/updateChecker.d.ts +1 -61
  45. package/dist/core/updateChecker.d.ts.map +1 -1
  46. package/dist/core/updateChecker.js +3 -147
  47. package/dist/core/updateChecker.js.map +1 -1
  48. package/dist/headless/headlessApp.d.ts.map +1 -1
  49. package/dist/headless/headlessApp.js +39 -0
  50. package/dist/headless/headlessApp.js.map +1 -1
  51. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  52. package/dist/plugins/tools/nodeDefaults.js +2 -0
  53. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  54. package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
  55. package/dist/providers/openaiResponsesProvider.js +74 -79
  56. package/dist/providers/openaiResponsesProvider.js.map +1 -1
  57. package/dist/runtime/agentController.d.ts.map +1 -1
  58. package/dist/runtime/agentController.js +3 -6
  59. package/dist/runtime/agentController.js.map +1 -1
  60. package/dist/runtime/agentSession.d.ts +2 -0
  61. package/dist/runtime/agentSession.d.ts.map +1 -1
  62. package/dist/runtime/agentSession.js +2 -2
  63. package/dist/runtime/agentSession.js.map +1 -1
  64. package/dist/shell/interactiveShell.d.ts +18 -11
  65. package/dist/shell/interactiveShell.d.ts.map +1 -1
  66. package/dist/shell/interactiveShell.js +291 -273
  67. package/dist/shell/interactiveShell.js.map +1 -1
  68. package/dist/shell/shellApp.d.ts.map +1 -1
  69. package/dist/shell/shellApp.js +1 -7
  70. package/dist/shell/shellApp.js.map +1 -1
  71. package/dist/shell/systemPrompt.d.ts.map +1 -1
  72. package/dist/shell/systemPrompt.js +15 -4
  73. package/dist/shell/systemPrompt.js.map +1 -1
  74. package/dist/subagents/taskRunner.js +1 -2
  75. package/dist/subagents/taskRunner.js.map +1 -1
  76. package/dist/tools/bashTools.d.ts.map +1 -1
  77. package/dist/tools/bashTools.js +8 -101
  78. package/dist/tools/bashTools.js.map +1 -1
  79. package/dist/tools/diffUtils.d.ts +2 -8
  80. package/dist/tools/diffUtils.d.ts.map +1 -1
  81. package/dist/tools/diffUtils.js +13 -72
  82. package/dist/tools/diffUtils.js.map +1 -1
  83. package/dist/tools/grepTools.d.ts.map +1 -1
  84. package/dist/tools/grepTools.js +2 -10
  85. package/dist/tools/grepTools.js.map +1 -1
  86. package/dist/tools/planningTools.d.ts +10 -0
  87. package/dist/tools/planningTools.d.ts.map +1 -1
  88. package/dist/tools/planningTools.js +16 -0
  89. package/dist/tools/planningTools.js.map +1 -1
  90. package/dist/tools/searchTools.d.ts.map +1 -1
  91. package/dist/tools/searchTools.js +2 -4
  92. package/dist/tools/searchTools.js.map +1 -1
  93. package/dist/ui/PromptController.d.ts +4 -1
  94. package/dist/ui/PromptController.d.ts.map +1 -1
  95. package/dist/ui/PromptController.js +7 -1
  96. package/dist/ui/PromptController.js.map +1 -1
  97. package/dist/ui/ShellUIAdapter.d.ts +28 -292
  98. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  99. package/dist/ui/ShellUIAdapter.js +121 -1513
  100. package/dist/ui/ShellUIAdapter.js.map +1 -1
  101. package/dist/ui/UnifiedUIRenderer.d.ts +30 -133
  102. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  103. package/dist/ui/UnifiedUIRenderer.js +370 -939
  104. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  105. package/dist/ui/animatedStatus.d.ts +6 -128
  106. package/dist/ui/animatedStatus.d.ts.map +1 -1
  107. package/dist/ui/animatedStatus.js +50 -383
  108. package/dist/ui/animatedStatus.js.map +1 -1
  109. package/dist/ui/display.d.ts +26 -182
  110. package/dist/ui/display.d.ts.map +1 -1
  111. package/dist/ui/display.js +97 -678
  112. package/dist/ui/display.js.map +1 -1
  113. package/dist/ui/layout.d.ts +1 -0
  114. package/dist/ui/layout.d.ts.map +1 -1
  115. package/dist/ui/layout.js +12 -0
  116. package/dist/ui/layout.js.map +1 -1
  117. package/dist/ui/orchestration/UIUpdateCoordinator.d.ts +7 -61
  118. package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +1 -1
  119. package/dist/ui/orchestration/UIUpdateCoordinator.js +20 -232
  120. package/dist/ui/orchestration/UIUpdateCoordinator.js.map +1 -1
  121. package/dist/ui/planOverlay.d.ts +28 -0
  122. package/dist/ui/planOverlay.d.ts.map +1 -0
  123. package/dist/ui/planOverlay.js +156 -0
  124. package/dist/ui/planOverlay.js.map +1 -0
  125. package/dist/ui/shortcutsHelp.d.ts.map +1 -1
  126. package/dist/ui/shortcutsHelp.js +1 -0
  127. package/dist/ui/shortcutsHelp.js.map +1 -1
  128. package/dist/ui/streamingFormatter.d.ts +30 -0
  129. package/dist/ui/streamingFormatter.d.ts.map +1 -0
  130. package/dist/ui/streamingFormatter.js +91 -0
  131. package/dist/ui/streamingFormatter.js.map +1 -0
  132. package/dist/ui/unified/index.d.ts +1 -30
  133. package/dist/ui/unified/index.d.ts.map +1 -1
  134. package/dist/ui/unified/index.js +2 -45
  135. package/dist/ui/unified/index.js.map +1 -1
  136. package/dist/utils/errorUtils.d.ts +16 -0
  137. package/dist/utils/errorUtils.d.ts.map +1 -0
  138. package/dist/utils/errorUtils.js +66 -0
  139. package/dist/utils/errorUtils.js.map +1 -0
  140. package/package.json +2 -1
  141. package/dist/core/reliabilityPrompt.d.ts +0 -9
  142. package/dist/core/reliabilityPrompt.d.ts.map +0 -1
  143. package/dist/core/reliabilityPrompt.js +0 -31
  144. package/dist/core/reliabilityPrompt.js.map +0 -1
  145. package/dist/ui/UnifiedUIController.d.ts +0 -81
  146. package/dist/ui/UnifiedUIController.d.ts.map +0 -1
  147. package/dist/ui/UnifiedUIController.js +0 -212
  148. package/dist/ui/UnifiedUIController.js.map +0 -1
  149. package/dist/ui/animation/AnimationScheduler.d.ts +0 -192
  150. package/dist/ui/animation/AnimationScheduler.d.ts.map +0 -1
  151. package/dist/ui/animation/AnimationScheduler.js +0 -432
  152. package/dist/ui/animation/AnimationScheduler.js.map +0 -1
  153. package/dist/ui/inPlaceUpdater.d.ts +0 -181
  154. package/dist/ui/inPlaceUpdater.d.ts.map +0 -1
  155. package/dist/ui/inPlaceUpdater.js +0 -515
  156. package/dist/ui/inPlaceUpdater.js.map +0 -1
  157. package/dist/ui/interrupts/InterruptManager.d.ts +0 -142
  158. package/dist/ui/interrupts/InterruptManager.d.ts.map +0 -1
  159. package/dist/ui/interrupts/InterruptManager.js +0 -439
  160. package/dist/ui/interrupts/InterruptManager.js.map +0 -1
  161. package/dist/ui/telemetry/ResponseTracker.d.ts +0 -22
  162. package/dist/ui/telemetry/ResponseTracker.d.ts.map +0 -1
  163. package/dist/ui/telemetry/ResponseTracker.js +0 -60
  164. package/dist/ui/telemetry/ResponseTracker.js.map +0 -1
  165. package/dist/ui/telemetry/UITelemetry.d.ts +0 -181
  166. package/dist/ui/telemetry/UITelemetry.d.ts.map +0 -1
  167. package/dist/ui/telemetry/UITelemetry.js +0 -446
  168. package/dist/ui/telemetry/UITelemetry.js.map +0 -1
  169. package/dist/ui/unified/layout.d.ts +0 -12
  170. package/dist/ui/unified/layout.d.ts.map +0 -1
  171. package/dist/ui/unified/layout.js +0 -96
  172. package/dist/ui/unified/layout.js.map +0 -1
@@ -1,96 +0,0 @@
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
- export const renderDivider = (width, label) => {
12
- const maxWidth = clampWidth(width, 16, 140);
13
- if (!label) {
14
- return theme.ui.muted('─'.repeat(maxWidth));
15
- }
16
- const cleanLabel = theme.ui.muted(`[${label}]`);
17
- const labelLen = visibleLength(cleanLabel);
18
- const side = Math.max(2, Math.floor((maxWidth - labelLen - 2) / 2));
19
- const left = '─'.repeat(side);
20
- const right = '─'.repeat(Math.max(0, maxWidth - side - labelLen - 2));
21
- return theme.ui.muted(`${left} ${cleanLabel} ${right}`);
22
- };
23
- export const renderStatusLine = (parts, width) => {
24
- const segments = parts
25
- .filter((part) => part.text.trim())
26
- .map((part) => colorize(part.text.trim(), part.tone));
27
- const separator = theme.ui.muted(' · ');
28
- const joined = segments.join(separator);
29
- const maxLen = clampWidth(width, 8, 300);
30
- if (visibleLength(joined) <= maxLen) {
31
- return joined;
32
- }
33
- let result = '';
34
- for (const segment of segments) {
35
- const next = result ? `${result}${separator}${segment}` : segment;
36
- if (visibleLength(next) > maxLen) {
37
- break;
38
- }
39
- result = next;
40
- }
41
- return result || segments.slice(0, 1).join('');
42
- };
43
- /**
44
- * Render status parts into multiple lines, wrapping as needed.
45
- * Unlike renderStatusLine, this never truncates - it wraps to new lines.
46
- */
47
- export const renderStatusLines = (parts, width) => {
48
- const segments = parts
49
- .filter((part) => part.text.trim())
50
- .map((part) => colorize(part.text.trim(), part.tone));
51
- if (segments.length === 0) {
52
- return [];
53
- }
54
- const separator = theme.ui.muted(' · ');
55
- const separatorLen = visibleLength(separator);
56
- const maxLen = Math.max(20, width);
57
- const lines = [];
58
- let currentLine = '';
59
- let currentLen = 0;
60
- for (const segment of segments) {
61
- const segmentLen = visibleLength(segment);
62
- if (currentLen === 0) {
63
- currentLine = segment;
64
- currentLen = segmentLen;
65
- }
66
- else if (currentLen + separatorLen + segmentLen <= maxLen) {
67
- currentLine = `${currentLine}${separator}${segment}`;
68
- currentLen += separatorLen + segmentLen;
69
- }
70
- else {
71
- lines.push(currentLine);
72
- currentLine = segment;
73
- currentLen = segmentLen;
74
- }
75
- }
76
- if (currentLine) {
77
- lines.push(currentLine);
78
- }
79
- return lines;
80
- };
81
- const colorize = (text, tone) => {
82
- switch (tone) {
83
- case 'info':
84
- return theme.info(text);
85
- case 'warn':
86
- return theme.warning(text);
87
- case 'error':
88
- return theme.error(text);
89
- case 'success':
90
- return theme.success(text);
91
- case 'muted':
92
- default:
93
- return theme.ui.muted(text);
94
- }
95
- };
96
- //# sourceMappingURL=layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/ui/unified/layout.ts"],"names":[],"mappings":"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"}