erosolar-cli 2.1.238 → 2.1.240

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 (142) hide show
  1. package/README.md +9 -0
  2. package/dist/contracts/tools.schema.json +3 -1
  3. package/dist/core/agent.d.ts.map +1 -1
  4. package/dist/core/agent.js +5 -1
  5. package/dist/core/agent.js.map +1 -1
  6. package/dist/core/agentOrchestrator.d.ts +4 -0
  7. package/dist/core/agentOrchestrator.d.ts.map +1 -1
  8. package/dist/core/agentOrchestrator.js +58 -6
  9. package/dist/core/agentOrchestrator.js.map +1 -1
  10. package/dist/core/autoExecutionOrchestrator.d.ts +172 -0
  11. package/dist/core/autoExecutionOrchestrator.d.ts.map +1 -0
  12. package/dist/core/autoExecutionOrchestrator.js +591 -0
  13. package/dist/core/autoExecutionOrchestrator.js.map +1 -0
  14. package/dist/core/contextManager.d.ts.map +1 -1
  15. package/dist/core/contextManager.js.map +1 -1
  16. package/dist/core/dualAgentOrchestrator.d.ts +34 -0
  17. package/dist/core/dualAgentOrchestrator.d.ts.map +1 -0
  18. package/dist/core/dualAgentOrchestrator.js +94 -0
  19. package/dist/core/dualAgentOrchestrator.js.map +1 -0
  20. package/dist/core/errors/safetyValidator.d.ts +25 -12
  21. package/dist/core/errors/safetyValidator.d.ts.map +1 -1
  22. package/dist/core/errors/safetyValidator.js +165 -17
  23. package/dist/core/errors/safetyValidator.js.map +1 -1
  24. package/dist/core/governmentProcedures.d.ts +118 -0
  25. package/dist/core/governmentProcedures.d.ts.map +1 -0
  26. package/dist/core/governmentProcedures.js +912 -0
  27. package/dist/core/governmentProcedures.js.map +1 -0
  28. package/dist/core/infrastructureTemplates.d.ts +123 -0
  29. package/dist/core/infrastructureTemplates.d.ts.map +1 -0
  30. package/dist/core/infrastructureTemplates.js +1326 -0
  31. package/dist/core/infrastructureTemplates.js.map +1 -0
  32. package/dist/core/integrityVerification.d.ts +250 -0
  33. package/dist/core/integrityVerification.d.ts.map +1 -0
  34. package/dist/core/integrityVerification.js +616 -0
  35. package/dist/core/integrityVerification.js.map +1 -0
  36. package/dist/core/orchestration.d.ts +534 -0
  37. package/dist/core/orchestration.d.ts.map +1 -0
  38. package/dist/core/orchestration.js +2009 -0
  39. package/dist/core/orchestration.js.map +1 -0
  40. package/dist/core/persistentObjectiveStore.d.ts +292 -0
  41. package/dist/core/persistentObjectiveStore.d.ts.map +1 -0
  42. package/dist/core/persistentObjectiveStore.js +613 -0
  43. package/dist/core/persistentObjectiveStore.js.map +1 -0
  44. package/dist/core/preferences.js +1 -1
  45. package/dist/core/preferences.js.map +1 -1
  46. package/dist/core/reliabilityPrompt.d.ts.map +1 -1
  47. package/dist/core/reliabilityPrompt.js +3 -0
  48. package/dist/core/reliabilityPrompt.js.map +1 -1
  49. package/dist/core/securityDeliverableGenerator.d.ts +292 -0
  50. package/dist/core/securityDeliverableGenerator.d.ts.map +1 -0
  51. package/dist/core/securityDeliverableGenerator.js +1590 -0
  52. package/dist/core/securityDeliverableGenerator.js.map +1 -0
  53. package/dist/core/taskCompletionDetector.d.ts.map +1 -1
  54. package/dist/core/taskCompletionDetector.js +4 -1
  55. package/dist/core/taskCompletionDetector.js.map +1 -1
  56. package/dist/shell/autoExecutor.d.ts.map +1 -1
  57. package/dist/shell/autoExecutor.js +32 -3
  58. package/dist/shell/autoExecutor.js.map +1 -1
  59. package/dist/shell/interactiveShell.d.ts +9 -0
  60. package/dist/shell/interactiveShell.d.ts.map +1 -1
  61. package/dist/shell/interactiveShell.js +282 -190
  62. package/dist/shell/interactiveShell.js.map +1 -1
  63. package/dist/tools/bashTools.d.ts +3 -5
  64. package/dist/tools/bashTools.d.ts.map +1 -1
  65. package/dist/tools/bashTools.js +259 -161
  66. package/dist/tools/bashTools.js.map +1 -1
  67. package/dist/tools/tao/index.d.ts +4 -4
  68. package/dist/tools/tao/index.d.ts.map +1 -1
  69. package/dist/tools/tao/index.js +15 -5
  70. package/dist/tools/tao/index.js.map +1 -1
  71. package/dist/tools/tao/rl.d.ts +164 -0
  72. package/dist/tools/tao/rl.d.ts.map +1 -0
  73. package/dist/tools/tao/rl.js +2998 -0
  74. package/dist/tools/tao/rl.js.map +1 -0
  75. package/dist/tools/taoTools.d.ts +2 -2
  76. package/dist/tools/taoTools.d.ts.map +1 -1
  77. package/dist/tools/taoTools.js +103 -20
  78. package/dist/tools/taoTools.js.map +1 -1
  79. package/dist/ui/PromptController.d.ts +3 -0
  80. package/dist/ui/PromptController.d.ts.map +1 -1
  81. package/dist/ui/PromptController.js +3 -0
  82. package/dist/ui/PromptController.js.map +1 -1
  83. package/dist/ui/UnifiedUIRenderer.d.ts +4 -0
  84. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  85. package/dist/ui/UnifiedUIRenderer.js +37 -6
  86. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  87. package/dist/ui/display.d.ts +9 -1
  88. package/dist/ui/display.d.ts.map +1 -1
  89. package/dist/ui/display.js +66 -9
  90. package/dist/ui/display.js.map +1 -1
  91. package/dist/ui/shortcutsHelp.d.ts.map +1 -1
  92. package/dist/ui/shortcutsHelp.js +1 -0
  93. package/dist/ui/shortcutsHelp.js.map +1 -1
  94. package/package.json +3 -2
  95. package/dist/capabilities/askUserCapability.d.ts +0 -14
  96. package/dist/capabilities/askUserCapability.d.ts.map +0 -1
  97. package/dist/capabilities/askUserCapability.js +0 -134
  98. package/dist/capabilities/askUserCapability.js.map +0 -1
  99. package/dist/capabilities/codeGenerationCapability.d.ts +0 -13
  100. package/dist/capabilities/codeGenerationCapability.d.ts.map +0 -1
  101. package/dist/capabilities/codeGenerationCapability.js +0 -25
  102. package/dist/capabilities/codeGenerationCapability.js.map +0 -1
  103. package/dist/capabilities/performanceMonitoringCapability.d.ts +0 -108
  104. package/dist/capabilities/performanceMonitoringCapability.d.ts.map +0 -1
  105. package/dist/capabilities/performanceMonitoringCapability.js +0 -176
  106. package/dist/capabilities/performanceMonitoringCapability.js.map +0 -1
  107. package/dist/capabilities/todoCapability.d.ts +0 -19
  108. package/dist/capabilities/todoCapability.d.ts.map +0 -1
  109. package/dist/capabilities/todoCapability.js +0 -170
  110. package/dist/capabilities/todoCapability.js.map +0 -1
  111. package/dist/core/baseToolFactory.d.ts +0 -187
  112. package/dist/core/baseToolFactory.d.ts.map +0 -1
  113. package/dist/core/baseToolFactory.js +0 -352
  114. package/dist/core/baseToolFactory.js.map +0 -1
  115. package/dist/core/intelligentSummarizer.d.ts +0 -79
  116. package/dist/core/intelligentSummarizer.d.ts.map +0 -1
  117. package/dist/core/intelligentSummarizer.js +0 -273
  118. package/dist/core/intelligentSummarizer.js.map +0 -1
  119. package/dist/core/memorySystem.d.ts +0 -67
  120. package/dist/core/memorySystem.d.ts.map +0 -1
  121. package/dist/core/memorySystem.js +0 -334
  122. package/dist/core/memorySystem.js.map +0 -1
  123. package/dist/core/outputStyles.d.ts +0 -48
  124. package/dist/core/outputStyles.d.ts.map +0 -1
  125. package/dist/core/outputStyles.js +0 -270
  126. package/dist/core/outputStyles.js.map +0 -1
  127. package/dist/core/toolPatternAnalyzer.d.ts +0 -87
  128. package/dist/core/toolPatternAnalyzer.d.ts.map +0 -1
  129. package/dist/core/toolPatternAnalyzer.js +0 -272
  130. package/dist/core/toolPatternAnalyzer.js.map +0 -1
  131. package/dist/tools/backgroundBashTools.d.ts +0 -21
  132. package/dist/tools/backgroundBashTools.d.ts.map +0 -1
  133. package/dist/tools/backgroundBashTools.js +0 -215
  134. package/dist/tools/backgroundBashTools.js.map +0 -1
  135. package/dist/tools/code-quality-dashboard.d.ts +0 -57
  136. package/dist/tools/code-quality-dashboard.d.ts.map +0 -1
  137. package/dist/tools/code-quality-dashboard.js +0 -218
  138. package/dist/tools/code-quality-dashboard.js.map +0 -1
  139. package/dist/tools/tao/rlEngine.d.ts +0 -40
  140. package/dist/tools/tao/rlEngine.d.ts.map +0 -1
  141. package/dist/tools/tao/rlEngine.js +0 -237
  142. package/dist/tools/tao/rlEngine.js.map +0 -1
@@ -1,334 +0,0 @@
1
- /**
2
- * Memory System - Erosolar-CLI Style (EROSOLAR.md)
3
- *
4
- * Hierarchical memory files for persistent context and project-specific instructions.
5
- * Similar to Erosolar-CLI's CLAUDE.md system.
6
- *
7
- * Memory Hierarchy (highest to lowest priority):
8
- * 1. Enterprise policy (~/.erosolar/EROSOLAR.md at OS level)
9
- * 2. User memory (~/.erosolar/EROSOLAR.md)
10
- * 3. Project memory (./EROSOLAR.md or ./.erosolar/EROSOLAR.md)
11
- * 4. Directory memory (./subdirectory/EROSOLAR.md - recursive discovery)
12
- *
13
- * Features:
14
- * - Automatic loading on session start
15
- * - Recursive discovery in file tree
16
- * - Import syntax (@path/to/import) for referencing other files
17
- * - Maximum 5-level import depth
18
- * - Quick addition via # prefix input
19
- * - Direct editing with /memory command
20
- */
21
- import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync, statSync } from 'node:fs';
22
- import { homedir } from 'node:os';
23
- import { join, dirname, resolve, isAbsolute } from 'node:path';
24
- const MEMORY_FILENAME = 'EROSOLAR.md';
25
- const MAX_IMPORT_DEPTH = 5;
26
- const MAX_MEMORY_SIZE = 100 * 1024; // 100KB max per file
27
- /**
28
- * Get user memory directory
29
- */
30
- function getUserMemoryDir() {
31
- return join(homedir(), '.erosolar');
32
- }
33
- /**
34
- * Get user memory file path
35
- */
36
- function getUserMemoryPath() {
37
- return join(getUserMemoryDir(), MEMORY_FILENAME);
38
- }
39
- /**
40
- * Get project memory file path (tries both locations)
41
- */
42
- function getProjectMemoryPath(workingDir) {
43
- // Try root level first
44
- const rootPath = join(workingDir, MEMORY_FILENAME);
45
- if (existsSync(rootPath)) {
46
- return rootPath;
47
- }
48
- // Try .erosolar directory
49
- const dotPath = join(workingDir, '.erosolar', MEMORY_FILENAME);
50
- if (existsSync(dotPath)) {
51
- return dotPath;
52
- }
53
- // Return default path for creation
54
- return rootPath;
55
- }
56
- /**
57
- * Find all memory files in directory tree (recursive upward and downward)
58
- */
59
- function findMemoryFiles(workingDir, searchDownward = true) {
60
- const files = [];
61
- // Search upward to find project root memory files
62
- let currentDir = workingDir;
63
- const visited = new Set();
64
- while (currentDir && !visited.has(currentDir)) {
65
- visited.add(currentDir);
66
- const memoryPath = join(currentDir, MEMORY_FILENAME);
67
- if (existsSync(memoryPath)) {
68
- files.push(memoryPath);
69
- }
70
- const dotMemoryPath = join(currentDir, '.erosolar', MEMORY_FILENAME);
71
- if (existsSync(dotMemoryPath)) {
72
- files.push(dotMemoryPath);
73
- }
74
- const parentDir = dirname(currentDir);
75
- if (parentDir === currentDir)
76
- break;
77
- currentDir = parentDir;
78
- }
79
- // Optionally search downward (only one level to avoid performance issues)
80
- if (searchDownward) {
81
- try {
82
- const entries = readdirSync(workingDir, { withFileTypes: true });
83
- for (const entry of entries) {
84
- if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules') {
85
- const subMemoryPath = join(workingDir, entry.name, MEMORY_FILENAME);
86
- if (existsSync(subMemoryPath)) {
87
- files.push(subMemoryPath);
88
- }
89
- }
90
- }
91
- }
92
- catch {
93
- // Ignore directory read errors
94
- }
95
- }
96
- return [...new Set(files)]; // Deduplicate
97
- }
98
- /**
99
- * Read file content safely with size limit
100
- */
101
- function readFileSafe(path, maxSize = MAX_MEMORY_SIZE) {
102
- try {
103
- if (!existsSync(path)) {
104
- return null;
105
- }
106
- const stats = statSync(path);
107
- if (stats.size > maxSize) {
108
- // Return truncated content with warning
109
- const content = readFileSync(path, 'utf8').slice(0, maxSize);
110
- return `${content}\n\n[Content truncated - file exceeds maximum size]`;
111
- }
112
- return readFileSync(path, 'utf8');
113
- }
114
- catch {
115
- return null;
116
- }
117
- }
118
- /**
119
- * Resolve @import syntax in memory files
120
- */
121
- function resolveImportsRecursive(content, basePath, depth, visited) {
122
- if (depth > MAX_IMPORT_DEPTH) {
123
- return `${content}\n\n[Import depth limit reached]`;
124
- }
125
- // Match @path/to/file or @./relative/path patterns
126
- const importPattern = /@([^\s\n]+)/g;
127
- let result = content;
128
- let match;
129
- while ((match = importPattern.exec(content)) !== null) {
130
- const importPath = match[1];
131
- const fullPath = isAbsolute(importPath)
132
- ? importPath
133
- : resolve(dirname(basePath), importPath);
134
- if (visited.has(fullPath)) {
135
- continue; // Prevent circular imports
136
- }
137
- const importedContent = readFileSafe(fullPath);
138
- if (importedContent !== null) {
139
- visited.add(fullPath);
140
- const resolvedContent = resolveImportsRecursive(importedContent, fullPath, depth + 1, visited);
141
- result = result.replace(match[0], resolvedContent);
142
- }
143
- }
144
- return result;
145
- }
146
- /**
147
- * Determine memory source type from path
148
- */
149
- function getMemorySource(path, workingDir) {
150
- const userDir = getUserMemoryDir();
151
- if (path.startsWith(userDir)) {
152
- return 'user';
153
- }
154
- if (path === join(workingDir, MEMORY_FILENAME) ||
155
- path === join(workingDir, '.erosolar', MEMORY_FILENAME)) {
156
- return 'project';
157
- }
158
- return 'directory';
159
- }
160
- /**
161
- * Create the memory system
162
- */
163
- export function createMemorySystem() {
164
- return {
165
- loadAllMemory(workingDir) {
166
- const memoryFiles = [];
167
- let priority = 0;
168
- // Load user memory (highest priority)
169
- const userMemoryPath = getUserMemoryPath();
170
- const userContent = readFileSafe(userMemoryPath);
171
- if (userContent) {
172
- memoryFiles.push({
173
- path: userMemoryPath,
174
- content: userContent,
175
- source: 'user',
176
- priority: priority++,
177
- });
178
- }
179
- // Load project and directory memory files
180
- const projectFiles = findMemoryFiles(workingDir);
181
- for (const filePath of projectFiles) {
182
- const content = readFileSafe(filePath);
183
- if (content) {
184
- memoryFiles.push({
185
- path: filePath,
186
- content,
187
- source: getMemorySource(filePath, workingDir),
188
- priority: priority++,
189
- });
190
- }
191
- }
192
- return memoryFiles;
193
- },
194
- loadMemoryFile(path) {
195
- const content = readFileSafe(path);
196
- if (!content) {
197
- return null;
198
- }
199
- return {
200
- path,
201
- content,
202
- source: 'directory', // Will be overridden by caller if needed
203
- priority: 0,
204
- };
205
- },
206
- saveToProjectMemory(workingDir, content) {
207
- const memoryPath = getProjectMemoryPath(workingDir) ?? join(workingDir, MEMORY_FILENAME);
208
- try {
209
- const dir = dirname(memoryPath);
210
- mkdirSync(dir, { recursive: true });
211
- writeFileSync(memoryPath, content, 'utf8');
212
- return true;
213
- }
214
- catch {
215
- return false;
216
- }
217
- },
218
- saveToUserMemory(content) {
219
- const memoryPath = getUserMemoryPath();
220
- try {
221
- mkdirSync(getUserMemoryDir(), { recursive: true });
222
- writeFileSync(memoryPath, content, 'utf8');
223
- return true;
224
- }
225
- catch {
226
- return false;
227
- }
228
- },
229
- appendToProjectMemory(workingDir, content) {
230
- const memoryPath = getProjectMemoryPath(workingDir) ?? join(workingDir, MEMORY_FILENAME);
231
- const existingContent = readFileSafe(memoryPath) ?? '';
232
- const timestamp = new Date().toISOString().split('T')[0];
233
- const newEntry = `\n\n## Added ${timestamp}\n\n${content}`;
234
- return this.saveToProjectMemory(workingDir, existingContent + newEntry);
235
- },
236
- appendToUserMemory(content) {
237
- const existingContent = readFileSafe(getUserMemoryPath()) ?? '';
238
- const timestamp = new Date().toISOString().split('T')[0];
239
- const newEntry = `\n\n## Added ${timestamp}\n\n${content}`;
240
- return this.saveToUserMemory(existingContent + newEntry);
241
- },
242
- getMemoryPaths(workingDir) {
243
- const paths = [];
244
- const userPath = getUserMemoryPath();
245
- if (existsSync(userPath)) {
246
- paths.push(userPath);
247
- }
248
- paths.push(...findMemoryFiles(workingDir));
249
- return [...new Set(paths)];
250
- },
251
- resolveImports(content, basePath, depth = 0) {
252
- return resolveImportsRecursive(content, basePath, depth, new Set());
253
- },
254
- parseAtReferences(input, workingDir) {
255
- const references = [];
256
- // Match @path/to/file or @path/to/file:10-20 (with line range)
257
- const refPattern = /@([^\s]+?)(?::(\d+)(?:-(\d+))?)?(?=\s|$)/g;
258
- let cleanInput = input;
259
- let match;
260
- while ((match = refPattern.exec(input)) !== null) {
261
- const refPath = match[1];
262
- const startLine = match[2] ? parseInt(match[2], 10) : undefined;
263
- const endLine = match[3] ? parseInt(match[3], 10) : startLine;
264
- const fullPath = isAbsolute(refPath)
265
- ? refPath
266
- : resolve(workingDir, refPath);
267
- const content = readFileSafe(fullPath, MAX_MEMORY_SIZE * 2);
268
- if (content !== null) {
269
- let fileContent = content;
270
- // Extract line range if specified
271
- if (startLine !== undefined) {
272
- const lines = content.split('\n');
273
- const start = Math.max(0, startLine - 1);
274
- const end = endLine ? Math.min(lines.length, endLine) : start + 1;
275
- fileContent = lines.slice(start, end).join('\n');
276
- }
277
- references.push({
278
- path: refPath,
279
- content: fileContent,
280
- lineRange: startLine ? { start: startLine, end: endLine ?? startLine } : undefined,
281
- });
282
- cleanInput = cleanInput.replace(match[0], '');
283
- }
284
- }
285
- return { cleanInput: cleanInput.trim(), references };
286
- },
287
- };
288
- }
289
- /**
290
- * Format memory content for display in system prompt
291
- */
292
- export function formatMemoryForPrompt(memoryFiles) {
293
- if (memoryFiles.length === 0) {
294
- return '';
295
- }
296
- const sections = [];
297
- for (const memory of memoryFiles) {
298
- const sourceLabel = {
299
- 'enterprise': 'Enterprise Policy',
300
- 'user': 'User Preferences',
301
- 'project': 'Project Memory',
302
- 'directory': 'Directory Context',
303
- }[memory.source];
304
- sections.push(`<memory source="${sourceLabel}" path="${memory.path}">\n${memory.content}\n</memory>`);
305
- }
306
- return `\n<project-memory>\n${sections.join('\n\n')}\n</project-memory>\n`;
307
- }
308
- /**
309
- * Format referenced files for prompt context
310
- */
311
- export function formatReferencesForPrompt(references) {
312
- if (references.length === 0) {
313
- return '';
314
- }
315
- const sections = [];
316
- for (const ref of references) {
317
- const rangeStr = ref.lineRange
318
- ? ` lines ${ref.lineRange.start}-${ref.lineRange.end}`
319
- : '';
320
- sections.push(`<file path="${ref.path}"${rangeStr}>\n${ref.content}\n</file>`);
321
- }
322
- return `\n<referenced-files>\n${sections.join('\n\n')}\n</referenced-files>\n`;
323
- }
324
- /**
325
- * Global memory system instance
326
- */
327
- let globalMemorySystem = null;
328
- export function getMemorySystem() {
329
- if (!globalMemorySystem) {
330
- globalMemorySystem = createMemorySystem();
331
- }
332
- return globalMemorySystem;
333
- }
334
- //# sourceMappingURL=memorySystem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memorySystem.js","sourceRoot":"","sources":["../../src/core/memorySystem.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- /**
2
- * Output Styles System - Erosolar-CLI Style
3
- *
4
- * Configurable output styles that modify how the agent responds.
5
- * Similar to Erosolar-CLI's output-styles feature.
6
- *
7
- * Built-in Styles:
8
- * - Default: Standard system prompt for efficient software engineering
9
- * - Explanatory: Educational insights between coding tasks
10
- * - Learning: Collaborative learn-by-doing mode with TODO(human) markers
11
- * - Concise: Minimal output, focuses on code changes only
12
- *
13
- * Custom styles can be created in:
14
- * - ~/.erosolar/output-styles/ (user-level)
15
- * - .erosolar/output-styles/ (project-level)
16
- */
17
- export type BuiltInStyleId = 'default' | 'explanatory' | 'learning' | 'concise';
18
- export interface OutputStyle {
19
- id: string;
20
- name: string;
21
- description: string;
22
- instructions: string;
23
- isBuiltIn: boolean;
24
- source: 'built-in' | 'user' | 'project';
25
- }
26
- /**
27
- * Get all available output styles
28
- */
29
- export declare function getAvailableStyles(workingDir: string): OutputStyle[];
30
- /**
31
- * Get a specific output style by ID
32
- */
33
- export declare function getOutputStyle(id: string, workingDir: string): OutputStyle | null;
34
- /**
35
- * Create a custom output style
36
- */
37
- export declare function createCustomStyle(style: Omit<OutputStyle, 'isBuiltIn' | 'source'>, location: 'user' | 'project', workingDir?: string): boolean;
38
- /**
39
- * Format style for system prompt injection
40
- */
41
- export declare function formatStyleForPrompt(style: OutputStyle): string;
42
- export declare function getCurrentStyleId(): string;
43
- export declare function setCurrentStyleId(id: string): void;
44
- /**
45
- * Format styles list for display
46
- */
47
- export declare function formatStylesListForDisplay(styles: OutputStyle[], currentId: string): string;
48
- //# sourceMappingURL=outputStyles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"outputStyles.d.ts","sourceRoot":"","sources":["../../src/core/outputStyles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAEhF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;CACzC;AA6ID;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,EAAE,CAoBpE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAuBjF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,QAAQ,CAAC,EAChD,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAsBT;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAI/D;AAOD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAiC3F"}
@@ -1,270 +0,0 @@
1
- /**
2
- * Output Styles System - Erosolar-CLI Style
3
- *
4
- * Configurable output styles that modify how the agent responds.
5
- * Similar to Erosolar-CLI's output-styles feature.
6
- *
7
- * Built-in Styles:
8
- * - Default: Standard system prompt for efficient software engineering
9
- * - Explanatory: Educational insights between coding tasks
10
- * - Learning: Collaborative learn-by-doing mode with TODO(human) markers
11
- * - Concise: Minimal output, focuses on code changes only
12
- *
13
- * Custom styles can be created in:
14
- * - ~/.erosolar/output-styles/ (user-level)
15
- * - .erosolar/output-styles/ (project-level)
16
- */
17
- import { existsSync, readFileSync, readdirSync, mkdirSync, writeFileSync } from 'node:fs';
18
- import { homedir } from 'node:os';
19
- import { join } from 'node:path';
20
- const USER_STYLES_DIR = join(homedir(), '.erosolar', 'output-styles');
21
- const PROJECT_STYLES_SUBDIR = '.erosolar/output-styles';
22
- /**
23
- * Built-in output styles
24
- */
25
- const BUILT_IN_STYLES = {
26
- default: {
27
- id: 'default',
28
- name: 'Default',
29
- description: 'Standard efficient software engineering mode',
30
- instructions: `You are an expert software engineer. Focus on:
31
- - Writing clean, maintainable code
32
- - Providing direct, actionable solutions
33
- - Following best practices and conventions
34
- - Being concise while remaining helpful
35
- - Explaining only when necessary for understanding`,
36
- },
37
- explanatory: {
38
- id: 'explanatory',
39
- name: 'Explanatory',
40
- description: 'Educational mode with detailed explanations',
41
- instructions: `You are an expert software engineer and educator. Focus on:
42
- - Explaining the "why" behind code decisions
43
- - Teaching concepts as you implement solutions
44
- - Providing context about patterns and best practices
45
- - Breaking down complex problems step by step
46
- - Offering alternative approaches when relevant
47
- - Including comments that explain non-obvious code
48
-
49
- When making changes:
50
- 1. Briefly explain what you're about to do and why
51
- 2. Implement the solution with inline comments
52
- 3. Summarize key learnings after completion`,
53
- },
54
- learning: {
55
- id: 'learning',
56
- name: 'Learning',
57
- description: 'Collaborative learn-by-doing mode',
58
- instructions: `You are a collaborative coding mentor helping the user learn by doing. Focus on:
59
- - Guiding rather than solving directly
60
- - Asking questions to prompt thinking
61
- - Leaving room for the user to complete parts of the solution
62
- - Using TODO(human) markers for tasks the user should complete
63
- - Explaining concepts as they become relevant
64
- - Celebrating progress and building confidence
65
-
66
- When implementing solutions:
67
- 1. Start with a high-level plan
68
- 2. Implement core structure, leaving some parts as TODO(human)
69
- 3. Explain what each TODO requires
70
- 4. Encourage the user to try implementing those parts
71
-
72
- Example TODO format:
73
- \`\`\`
74
- // TODO(human): Implement the validation logic here
75
- // Hint: Check if the input is a valid email format
76
- // Consider using a regex pattern like /^[^@]+@[^@]+\\.[^@]+$/
77
- \`\`\``,
78
- },
79
- concise: {
80
- id: 'concise',
81
- name: 'Concise',
82
- description: 'Minimal output, code-focused',
83
- instructions: `Be extremely concise. Focus exclusively on code changes.
84
- - No explanations unless critical for understanding
85
- - No summaries or recaps
86
- - Direct code modifications only
87
- - Single-line responses when possible
88
- - Skip pleasantries and transitions`,
89
- },
90
- };
91
- /**
92
- * Parse a custom style file (Markdown with YAML frontmatter)
93
- */
94
- function parseStyleFile(content, source) {
95
- try {
96
- // Extract YAML frontmatter
97
- const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
98
- if (!frontmatterMatch) {
99
- // No frontmatter, use entire content as instructions
100
- return null;
101
- }
102
- const [, frontmatter, body] = frontmatterMatch;
103
- if (!frontmatter || !body)
104
- return null;
105
- // Parse simple YAML (id, name, description)
106
- const parseYamlField = (yaml, field) => {
107
- const match = yaml.match(new RegExp(`^${field}:\\s*(.+)$`, 'm'));
108
- return match ? match[1].trim().replace(/^["']|["']$/g, '') : null;
109
- };
110
- const id = parseYamlField(frontmatter, 'id');
111
- const name = parseYamlField(frontmatter, 'name') ?? id;
112
- const description = parseYamlField(frontmatter, 'description') ?? '';
113
- if (!id)
114
- return null;
115
- return {
116
- id,
117
- name: name ?? id,
118
- description,
119
- instructions: body.trim(),
120
- isBuiltIn: false,
121
- source,
122
- };
123
- }
124
- catch {
125
- return null;
126
- }
127
- }
128
- /**
129
- * Load custom styles from a directory
130
- */
131
- function loadStylesFromDir(dir, source) {
132
- if (!existsSync(dir)) {
133
- return [];
134
- }
135
- const styles = [];
136
- try {
137
- const files = readdirSync(dir).filter(f => f.endsWith('.md'));
138
- for (const file of files) {
139
- const content = readFileSync(join(dir, file), 'utf8');
140
- const style = parseStyleFile(content, source);
141
- if (style) {
142
- styles.push(style);
143
- }
144
- }
145
- }
146
- catch {
147
- // Ignore directory read errors
148
- }
149
- return styles;
150
- }
151
- /**
152
- * Get all available output styles
153
- */
154
- export function getAvailableStyles(workingDir) {
155
- const styles = [];
156
- // Add built-in styles
157
- for (const style of Object.values(BUILT_IN_STYLES)) {
158
- styles.push({
159
- ...style,
160
- isBuiltIn: true,
161
- source: 'built-in',
162
- });
163
- }
164
- // Add user styles
165
- styles.push(...loadStylesFromDir(USER_STYLES_DIR, 'user'));
166
- // Add project styles
167
- const projectStylesDir = join(workingDir, PROJECT_STYLES_SUBDIR);
168
- styles.push(...loadStylesFromDir(projectStylesDir, 'project'));
169
- return styles;
170
- }
171
- /**
172
- * Get a specific output style by ID
173
- */
174
- export function getOutputStyle(id, workingDir) {
175
- // Check built-in styles first
176
- if (id in BUILT_IN_STYLES) {
177
- const style = BUILT_IN_STYLES[id];
178
- return {
179
- ...style,
180
- isBuiltIn: true,
181
- source: 'built-in',
182
- };
183
- }
184
- // Check user styles
185
- const userStyles = loadStylesFromDir(USER_STYLES_DIR, 'user');
186
- const userStyle = userStyles.find(s => s.id === id);
187
- if (userStyle)
188
- return userStyle;
189
- // Check project styles
190
- const projectStylesDir = join(workingDir, PROJECT_STYLES_SUBDIR);
191
- const projectStyles = loadStylesFromDir(projectStylesDir, 'project');
192
- const projectStyle = projectStyles.find(s => s.id === id);
193
- if (projectStyle)
194
- return projectStyle;
195
- return null;
196
- }
197
- /**
198
- * Create a custom output style
199
- */
200
- export function createCustomStyle(style, location, workingDir) {
201
- const dir = location === 'user'
202
- ? USER_STYLES_DIR
203
- : join(workingDir ?? process.cwd(), PROJECT_STYLES_SUBDIR);
204
- try {
205
- mkdirSync(dir, { recursive: true });
206
- const content = `---
207
- id: ${style.id}
208
- name: ${style.name}
209
- description: ${style.description}
210
- ---
211
-
212
- ${style.instructions}
213
- `;
214
- writeFileSync(join(dir, `${style.id}.md`), content, 'utf8');
215
- return true;
216
- }
217
- catch {
218
- return false;
219
- }
220
- }
221
- /**
222
- * Format style for system prompt injection
223
- */
224
- export function formatStyleForPrompt(style) {
225
- return `<output-style name="${style.name}">
226
- ${style.instructions}
227
- </output-style>`;
228
- }
229
- /**
230
- * Style preference storage
231
- */
232
- let currentStyleId = 'default';
233
- export function getCurrentStyleId() {
234
- return currentStyleId;
235
- }
236
- export function setCurrentStyleId(id) {
237
- currentStyleId = id;
238
- }
239
- /**
240
- * Format styles list for display
241
- */
242
- export function formatStylesListForDisplay(styles, currentId) {
243
- const lines = ['Available Output Styles:', ''];
244
- const bySource = {
245
- 'built-in': styles.filter(s => s.source === 'built-in'),
246
- 'user': styles.filter(s => s.source === 'user'),
247
- 'project': styles.filter(s => s.source === 'project'),
248
- };
249
- const formatStyle = (s) => {
250
- const marker = s.id === currentId ? '●' : '○';
251
- return ` ${marker} ${s.name} (${s.id}) - ${s.description}`;
252
- };
253
- if (bySource['built-in'].length > 0) {
254
- lines.push('Built-in:');
255
- lines.push(...bySource['built-in'].map(formatStyle));
256
- lines.push('');
257
- }
258
- if (bySource['user'].length > 0) {
259
- lines.push('User (~/.erosolar/output-styles/):');
260
- lines.push(...bySource['user'].map(formatStyle));
261
- lines.push('');
262
- }
263
- if (bySource['project'].length > 0) {
264
- lines.push('Project (.erosolar/output-styles/):');
265
- lines.push(...bySource['project'].map(formatStyle));
266
- lines.push('');
267
- }
268
- return lines.join('\n');
269
- }
270
- //# sourceMappingURL=outputStyles.js.map