erosolar-cli 1.7.372 → 1.7.377

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 (97) hide show
  1. package/dist/capabilities/agentSpawningCapability.d.ts.map +1 -1
  2. package/dist/capabilities/agentSpawningCapability.js +29 -1
  3. package/dist/capabilities/agentSpawningCapability.js.map +1 -1
  4. package/dist/contracts/agent-schemas.json +100 -0
  5. package/dist/core/alphaZeroEngine.d.ts +269 -0
  6. package/dist/core/alphaZeroEngine.d.ts.map +1 -0
  7. package/dist/core/alphaZeroEngine.js +523 -0
  8. package/dist/core/alphaZeroEngine.js.map +1 -0
  9. package/dist/core/alphaZeroOrchestrator.d.ts +140 -0
  10. package/dist/core/alphaZeroOrchestrator.d.ts.map +1 -0
  11. package/dist/core/alphaZeroOrchestrator.js +418 -0
  12. package/dist/core/alphaZeroOrchestrator.js.map +1 -0
  13. package/dist/core/checkpoint.d.ts +76 -0
  14. package/dist/core/checkpoint.d.ts.map +1 -0
  15. package/dist/core/checkpoint.js +278 -0
  16. package/dist/core/checkpoint.js.map +1 -0
  17. package/dist/core/claudeCodeFeatures.d.ts +64 -0
  18. package/dist/core/claudeCodeFeatures.d.ts.map +1 -0
  19. package/dist/core/claudeCodeFeatures.js +163 -0
  20. package/dist/core/claudeCodeFeatures.js.map +1 -0
  21. package/dist/core/costTracker.d.ts +87 -0
  22. package/dist/core/costTracker.d.ts.map +1 -0
  23. package/dist/core/costTracker.js +285 -0
  24. package/dist/core/costTracker.js.map +1 -0
  25. package/dist/core/failureRecovery.d.ts +122 -0
  26. package/dist/core/failureRecovery.d.ts.map +1 -0
  27. package/dist/core/failureRecovery.js +477 -0
  28. package/dist/core/failureRecovery.js.map +1 -0
  29. package/dist/core/learningPersistence.d.ts +145 -0
  30. package/dist/core/learningPersistence.d.ts.map +1 -0
  31. package/dist/core/learningPersistence.js +477 -0
  32. package/dist/core/learningPersistence.js.map +1 -0
  33. package/dist/core/memorySystem.d.ts +67 -0
  34. package/dist/core/memorySystem.d.ts.map +1 -0
  35. package/dist/core/memorySystem.js +334 -0
  36. package/dist/core/memorySystem.js.map +1 -0
  37. package/dist/core/metricsTracker.d.ts +35 -0
  38. package/dist/core/metricsTracker.d.ts.map +1 -1
  39. package/dist/core/metricsTracker.js +67 -0
  40. package/dist/core/metricsTracker.js.map +1 -1
  41. package/dist/core/outputStyles.d.ts +48 -0
  42. package/dist/core/outputStyles.d.ts.map +1 -0
  43. package/dist/core/outputStyles.js +270 -0
  44. package/dist/core/outputStyles.js.map +1 -0
  45. package/dist/core/selfEvolution.d.ts +155 -0
  46. package/dist/core/selfEvolution.d.ts.map +1 -0
  47. package/dist/core/selfEvolution.js +1000 -0
  48. package/dist/core/selfEvolution.js.map +1 -0
  49. package/dist/core/selfImprovement.d.ts +141 -0
  50. package/dist/core/selfImprovement.d.ts.map +1 -0
  51. package/dist/core/selfImprovement.js +700 -0
  52. package/dist/core/selfImprovement.js.map +1 -0
  53. package/dist/core/updateManager.d.ts +62 -0
  54. package/dist/core/updateManager.d.ts.map +1 -0
  55. package/dist/core/updateManager.js +266 -0
  56. package/dist/core/updateManager.js.map +1 -0
  57. package/dist/shell/interactiveShell.d.ts +45 -0
  58. package/dist/shell/interactiveShell.d.ts.map +1 -1
  59. package/dist/shell/interactiveShell.js +1157 -4
  60. package/dist/shell/interactiveShell.js.map +1 -1
  61. package/dist/shell/keyboardShortcuts.d.ts +53 -0
  62. package/dist/shell/keyboardShortcuts.d.ts.map +1 -0
  63. package/dist/shell/keyboardShortcuts.js +163 -0
  64. package/dist/shell/keyboardShortcuts.js.map +1 -0
  65. package/dist/shell/terminalInput.d.ts +1 -1
  66. package/dist/shell/terminalInput.d.ts.map +1 -1
  67. package/dist/shell/terminalInput.js +8 -4
  68. package/dist/shell/terminalInput.js.map +1 -1
  69. package/dist/shell/vimMode.d.ts +66 -0
  70. package/dist/shell/vimMode.d.ts.map +1 -0
  71. package/dist/shell/vimMode.js +434 -0
  72. package/dist/shell/vimMode.js.map +1 -0
  73. package/dist/subagents/parallelAgentManager.d.ts +99 -0
  74. package/dist/subagents/parallelAgentManager.d.ts.map +1 -0
  75. package/dist/subagents/parallelAgentManager.js +249 -0
  76. package/dist/subagents/parallelAgentManager.js.map +1 -0
  77. package/dist/subagents/taskRunner.d.ts +6 -1
  78. package/dist/subagents/taskRunner.d.ts.map +1 -1
  79. package/dist/subagents/taskRunner.js +57 -2
  80. package/dist/subagents/taskRunner.js.map +1 -1
  81. package/dist/tools/planningTools.d.ts +9 -0
  82. package/dist/tools/planningTools.d.ts.map +1 -1
  83. package/dist/tools/planningTools.js +90 -0
  84. package/dist/tools/planningTools.js.map +1 -1
  85. package/dist/ui/ShellUIAdapter.d.ts +11 -1
  86. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  87. package/dist/ui/ShellUIAdapter.js +73 -9
  88. package/dist/ui/ShellUIAdapter.js.map +1 -1
  89. package/dist/ui/display.d.ts +5 -0
  90. package/dist/ui/display.d.ts.map +1 -1
  91. package/dist/ui/display.js +14 -0
  92. package/dist/ui/display.js.map +1 -1
  93. package/dist/ui/shortcutsHelp.d.ts +11 -0
  94. package/dist/ui/shortcutsHelp.d.ts.map +1 -1
  95. package/dist/ui/shortcutsHelp.js +59 -3
  96. package/dist/ui/shortcutsHelp.js.map +1 -1
  97. package/package.json +1 -1
@@ -0,0 +1,278 @@
1
+ /**
2
+ * Checkpoint System - Claude Code Style
3
+ *
4
+ * Automatic checkpointing before code changes with instant rewind capability.
5
+ * Saves both code state and conversation state for full restoration.
6
+ *
7
+ * Features:
8
+ * - Automatic checkpoint creation before file modifications
9
+ * - Rewind to any previous checkpoint (code only, conversation only, or both)
10
+ * - Efficient diff-based storage to minimize disk usage
11
+ * - Integration with session management
12
+ */
13
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, unlinkSync, statSync } from 'node:fs';
14
+ import { homedir } from 'node:os';
15
+ import { join, dirname, relative } from 'node:path';
16
+ import { createHash } from 'node:crypto';
17
+ const CHECKPOINT_DIR = join(homedir(), '.erosolar', 'checkpoints');
18
+ const MAX_CHECKPOINTS = 50; // Keep last 50 checkpoints per session
19
+ const MAX_CHECKPOINT_AGE_DAYS = 7;
20
+ /**
21
+ * Create a hash for file content
22
+ */
23
+ function hashContent(content) {
24
+ return createHash('sha256').update(content).digest('hex').slice(0, 16);
25
+ }
26
+ /**
27
+ * Generate a unique checkpoint ID
28
+ */
29
+ function generateCheckpointId() {
30
+ const timestamp = Date.now().toString(36);
31
+ const random = Math.random().toString(36).slice(2, 8);
32
+ return `cp_${timestamp}_${random}`;
33
+ }
34
+ /**
35
+ * Get session checkpoint directory
36
+ */
37
+ function getSessionCheckpointDir(sessionId) {
38
+ const sanitized = sessionId.replace(/[^a-zA-Z0-9_-]/g, '_');
39
+ return join(CHECKPOINT_DIR, sanitized);
40
+ }
41
+ /**
42
+ * Read file content safely
43
+ */
44
+ function readFileSafe(filePath) {
45
+ try {
46
+ if (!existsSync(filePath)) {
47
+ return null;
48
+ }
49
+ const stats = statSync(filePath);
50
+ const content = readFileSync(filePath, 'utf8');
51
+ return { content, mtime: stats.mtimeMs };
52
+ }
53
+ catch {
54
+ return null;
55
+ }
56
+ }
57
+ /**
58
+ * Write file content safely with directory creation
59
+ */
60
+ function writeFileSafe(filePath, content) {
61
+ try {
62
+ const dir = dirname(filePath);
63
+ mkdirSync(dir, { recursive: true });
64
+ writeFileSync(filePath, content, 'utf8');
65
+ return true;
66
+ }
67
+ catch {
68
+ return false;
69
+ }
70
+ }
71
+ /**
72
+ * Create a checkpoint manager for a working directory
73
+ */
74
+ export function createCheckpointManager(workingDir) {
75
+ // Ensure checkpoint directory exists
76
+ mkdirSync(CHECKPOINT_DIR, { recursive: true });
77
+ return {
78
+ async createCheckpoint(options) {
79
+ const checkpointId = generateCheckpointId();
80
+ const timestamp = Date.now();
81
+ // Snapshot specified files (or use metadata.filePath)
82
+ const filesToSnapshot = options.files ??
83
+ (options.metadata?.filePath ? [options.metadata.filePath] : []);
84
+ const fileSnapshots = [];
85
+ for (const filePath of filesToSnapshot) {
86
+ const fullPath = filePath.startsWith('/') ? filePath : join(workingDir, filePath);
87
+ const fileData = readFileSafe(fullPath);
88
+ if (fileData) {
89
+ fileSnapshots.push({
90
+ path: relative(workingDir, fullPath) || fullPath,
91
+ content: fileData.content,
92
+ hash: hashContent(fileData.content),
93
+ mtime: fileData.mtime,
94
+ });
95
+ }
96
+ }
97
+ const checkpoint = {
98
+ id: checkpointId,
99
+ timestamp,
100
+ sessionId: options.sessionId,
101
+ description: options.description,
102
+ trigger: options.trigger,
103
+ files: fileSnapshots,
104
+ conversation: options.conversation,
105
+ metadata: options.metadata ?? {},
106
+ };
107
+ // Save checkpoint
108
+ const sessionDir = getSessionCheckpointDir(options.sessionId);
109
+ mkdirSync(sessionDir, { recursive: true });
110
+ const checkpointPath = join(sessionDir, `${checkpointId}.json`);
111
+ writeFileSafe(checkpointPath, JSON.stringify(checkpoint, null, 2));
112
+ // Cleanup old checkpoints
113
+ this.cleanupOldCheckpoints();
114
+ return checkpoint;
115
+ },
116
+ getCheckpoints(sessionId) {
117
+ const sessionDir = getSessionCheckpointDir(sessionId);
118
+ if (!existsSync(sessionDir)) {
119
+ return [];
120
+ }
121
+ const checkpoints = [];
122
+ try {
123
+ const files = readdirSync(sessionDir).filter(f => f.endsWith('.json'));
124
+ for (const file of files) {
125
+ try {
126
+ const content = readFileSync(join(sessionDir, file), 'utf8');
127
+ const checkpoint = JSON.parse(content);
128
+ checkpoints.push(checkpoint);
129
+ }
130
+ catch {
131
+ // Skip invalid checkpoint files
132
+ }
133
+ }
134
+ }
135
+ catch {
136
+ return [];
137
+ }
138
+ // Sort by timestamp descending (newest first)
139
+ return checkpoints.sort((a, b) => b.timestamp - a.timestamp);
140
+ },
141
+ getCheckpoint(id) {
142
+ // Search all session directories for the checkpoint
143
+ if (!existsSync(CHECKPOINT_DIR)) {
144
+ return null;
145
+ }
146
+ try {
147
+ const sessions = readdirSync(CHECKPOINT_DIR);
148
+ for (const session of sessions) {
149
+ const checkpointPath = join(CHECKPOINT_DIR, session, `${id}.json`);
150
+ if (existsSync(checkpointPath)) {
151
+ const content = readFileSync(checkpointPath, 'utf8');
152
+ return JSON.parse(content);
153
+ }
154
+ }
155
+ }
156
+ catch {
157
+ return null;
158
+ }
159
+ return null;
160
+ },
161
+ async rewind(options) {
162
+ const checkpoint = this.getCheckpoint(options.checkpointId);
163
+ if (!checkpoint) {
164
+ return {
165
+ success: false,
166
+ checkpoint: {},
167
+ restoredFiles: [],
168
+ restoredConversation: false,
169
+ errors: [`Checkpoint not found: ${options.checkpointId}`],
170
+ };
171
+ }
172
+ const errors = [];
173
+ const restoredFiles = [];
174
+ let restoredConversation = false;
175
+ // Restore files if requested
176
+ if (options.mode === 'code-only' || options.mode === 'both') {
177
+ for (const fileSnapshot of checkpoint.files) {
178
+ const fullPath = fileSnapshot.path.startsWith('/')
179
+ ? fileSnapshot.path
180
+ : join(workingDir, fileSnapshot.path);
181
+ if (writeFileSafe(fullPath, fileSnapshot.content)) {
182
+ restoredFiles.push(fileSnapshot.path);
183
+ }
184
+ else {
185
+ errors.push(`Failed to restore: ${fileSnapshot.path}`);
186
+ }
187
+ }
188
+ }
189
+ // Conversation restoration is handled by the caller (session manager)
190
+ if (options.mode === 'conversation-only' || options.mode === 'both') {
191
+ if (checkpoint.conversation) {
192
+ restoredConversation = true;
193
+ }
194
+ }
195
+ return {
196
+ success: errors.length === 0,
197
+ checkpoint,
198
+ restoredFiles,
199
+ restoredConversation,
200
+ errors,
201
+ };
202
+ },
203
+ cleanupOldCheckpoints() {
204
+ if (!existsSync(CHECKPOINT_DIR)) {
205
+ return;
206
+ }
207
+ const now = Date.now();
208
+ const maxAge = MAX_CHECKPOINT_AGE_DAYS * 24 * 60 * 60 * 1000;
209
+ try {
210
+ const sessions = readdirSync(CHECKPOINT_DIR);
211
+ for (const session of sessions) {
212
+ const sessionDir = join(CHECKPOINT_DIR, session);
213
+ const files = readdirSync(sessionDir)
214
+ .filter(f => f.endsWith('.json'))
215
+ .map(f => ({
216
+ name: f,
217
+ path: join(sessionDir, f),
218
+ mtime: statSync(join(sessionDir, f)).mtimeMs,
219
+ }))
220
+ .sort((a, b) => b.mtime - a.mtime);
221
+ // Remove old checkpoints beyond max count
222
+ for (let i = MAX_CHECKPOINTS; i < files.length; i++) {
223
+ try {
224
+ unlinkSync(files[i].path);
225
+ }
226
+ catch {
227
+ // Ignore deletion errors
228
+ }
229
+ }
230
+ // Remove checkpoints older than max age
231
+ for (const file of files) {
232
+ if (now - file.mtime > maxAge) {
233
+ try {
234
+ unlinkSync(file.path);
235
+ }
236
+ catch {
237
+ // Ignore deletion errors
238
+ }
239
+ }
240
+ }
241
+ }
242
+ }
243
+ catch {
244
+ // Ignore cleanup errors
245
+ }
246
+ },
247
+ };
248
+ }
249
+ /**
250
+ * Format checkpoint for display
251
+ */
252
+ export function formatCheckpointForDisplay(checkpoint) {
253
+ const date = new Date(checkpoint.timestamp);
254
+ const timeStr = date.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' });
255
+ const dateStr = date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
256
+ const filesStr = checkpoint.files.length > 0
257
+ ? `${checkpoint.files.length} file${checkpoint.files.length > 1 ? 's' : ''}`
258
+ : 'no files';
259
+ const triggerIcon = {
260
+ 'auto': '⚙',
261
+ 'manual': '📌',
262
+ 'pre-edit': '✏️',
263
+ 'pre-write': '📝',
264
+ 'pre-delete': '🗑️',
265
+ }[checkpoint.trigger] || '•';
266
+ return `${triggerIcon} ${dateStr} ${timeStr} - ${checkpoint.description} (${filesStr})`;
267
+ }
268
+ /**
269
+ * Global checkpoint manager instance
270
+ */
271
+ let globalCheckpointManager = null;
272
+ export function getCheckpointManager(workingDir) {
273
+ if (!globalCheckpointManager || workingDir) {
274
+ globalCheckpointManager = createCheckpointManager(workingDir ?? process.cwd());
275
+ }
276
+ return globalCheckpointManager;
277
+ }
278
+ //# sourceMappingURL=checkpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/core/checkpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Claude Code Features - Unified Integration Module
3
+ *
4
+ * This module exports all Claude Code style features integrated into erosolar-cli.
5
+ * Use this as the main entry point for accessing the new capabilities.
6
+ *
7
+ * Features included:
8
+ * - Checkpointing/Rewind System
9
+ * - EROSOLAR.md Memory System
10
+ * - Output Styles
11
+ * - Cost Tracking
12
+ * - Update Manager
13
+ * - Vim Mode
14
+ * - Keyboard Shortcuts
15
+ */
16
+ export * from './checkpoint.js';
17
+ export * from './memorySystem.js';
18
+ export * from './outputStyles.js';
19
+ export * from './costTracker.js';
20
+ export * from './updateManager.js';
21
+ import { type CheckpointManager } from './checkpoint.js';
22
+ import { type MemorySystem, type MemoryFile } from './memorySystem.js';
23
+ import { type CostTracker } from './costTracker.js';
24
+ import { type VersionInfo } from './updateManager.js';
25
+ /**
26
+ * Claude Code Feature State
27
+ */
28
+ export interface ClaudeCodeState {
29
+ checkpointManager: CheckpointManager;
30
+ memorySystem: MemorySystem;
31
+ costTracker: CostTracker;
32
+ currentOutputStyle: string;
33
+ memory: MemoryFile[];
34
+ lastUpdateCheck: VersionInfo | null;
35
+ }
36
+ /**
37
+ * Initialize all Claude Code features
38
+ */
39
+ export declare function initializeClaudeCodeFeatures(workingDir: string, sessionId?: string): Promise<ClaudeCodeState>;
40
+ /**
41
+ * Build system prompt additions from Claude Code features
42
+ */
43
+ export declare function buildSystemPromptAdditions(state: ClaudeCodeState, workingDir: string): string;
44
+ /**
45
+ * Feature availability check
46
+ */
47
+ export interface FeatureAvailability {
48
+ checkpointing: boolean;
49
+ memory: boolean;
50
+ outputStyles: boolean;
51
+ costTracking: boolean;
52
+ vimMode: boolean;
53
+ updates: boolean;
54
+ }
55
+ export declare function checkFeatureAvailability(): FeatureAvailability;
56
+ /**
57
+ * Format feature status for /doctor command
58
+ */
59
+ export declare function formatFeatureStatus(): string;
60
+ /**
61
+ * Help text for Claude Code features
62
+ */
63
+ export declare function formatClaudeCodeHelp(): string;
64
+ //# sourceMappingURL=claudeCodeFeatures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeCodeFeatures.d.ts","sourceRoot":"","sources":["../../src/core/claudeCodeFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAA0C,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/G,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAqC,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEzF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,eAAe,EAAE,WAAW,GAAG,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAgC1B;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,eAAe,EACtB,UAAU,EAAE,MAAM,GACjB,MAAM,CAeR;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,wBAAwB,IAAI,mBAAmB,CAS9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAsB5C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAkD7C"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Claude Code Features - Unified Integration Module
3
+ *
4
+ * This module exports all Claude Code style features integrated into erosolar-cli.
5
+ * Use this as the main entry point for accessing the new capabilities.
6
+ *
7
+ * Features included:
8
+ * - Checkpointing/Rewind System
9
+ * - EROSOLAR.md Memory System
10
+ * - Output Styles
11
+ * - Cost Tracking
12
+ * - Update Manager
13
+ * - Vim Mode
14
+ * - Keyboard Shortcuts
15
+ */
16
+ // Re-export all feature modules
17
+ export * from './checkpoint.js';
18
+ export * from './memorySystem.js';
19
+ export * from './outputStyles.js';
20
+ export * from './costTracker.js';
21
+ export * from './updateManager.js';
22
+ // Import for unified initialization
23
+ import { getCheckpointManager } from './checkpoint.js';
24
+ import { getMemorySystem, formatMemoryForPrompt } from './memorySystem.js';
25
+ import { getOutputStyle, getCurrentStyleId, formatStyleForPrompt } from './outputStyles.js';
26
+ import { getCostTracker } from './costTracker.js';
27
+ import { checkForUpdates, isUpdateCheckDue } from './updateManager.js';
28
+ /**
29
+ * Initialize all Claude Code features
30
+ */
31
+ export async function initializeClaudeCodeFeatures(workingDir, sessionId) {
32
+ // Initialize checkpoint manager
33
+ const checkpointManager = getCheckpointManager(workingDir);
34
+ // Initialize memory system and load memory files
35
+ const memorySystem = getMemorySystem();
36
+ const memory = memorySystem.loadAllMemory(workingDir);
37
+ // Initialize cost tracker
38
+ const costTracker = getCostTracker(sessionId);
39
+ // Check for updates (non-blocking)
40
+ let lastUpdateCheck = null;
41
+ if (isUpdateCheckDue()) {
42
+ try {
43
+ const result = await checkForUpdates();
44
+ if (result.success && result.versionInfo) {
45
+ lastUpdateCheck = result.versionInfo;
46
+ }
47
+ }
48
+ catch {
49
+ // Ignore update check errors
50
+ }
51
+ }
52
+ return {
53
+ checkpointManager,
54
+ memorySystem,
55
+ costTracker,
56
+ currentOutputStyle: getCurrentStyleId(),
57
+ memory,
58
+ lastUpdateCheck,
59
+ };
60
+ }
61
+ /**
62
+ * Build system prompt additions from Claude Code features
63
+ */
64
+ export function buildSystemPromptAdditions(state, workingDir) {
65
+ const additions = [];
66
+ // Add memory content
67
+ if (state.memory.length > 0) {
68
+ additions.push(formatMemoryForPrompt(state.memory));
69
+ }
70
+ // Add output style
71
+ const style = getOutputStyle(state.currentOutputStyle, workingDir);
72
+ if (style) {
73
+ additions.push(formatStyleForPrompt(style));
74
+ }
75
+ return additions.join('\n');
76
+ }
77
+ export function checkFeatureAvailability() {
78
+ return {
79
+ checkpointing: true,
80
+ memory: true,
81
+ outputStyles: true,
82
+ costTracking: true,
83
+ vimMode: true,
84
+ updates: true,
85
+ };
86
+ }
87
+ /**
88
+ * Format feature status for /doctor command
89
+ */
90
+ export function formatFeatureStatus() {
91
+ const features = checkFeatureAvailability();
92
+ const lines = [
93
+ 'Claude Code Features:',
94
+ '',
95
+ ];
96
+ const formatStatus = (name, available, extra) => {
97
+ const icon = available ? '✓' : '✗';
98
+ const status = available ? 'enabled' : 'disabled';
99
+ return ` ${icon} ${name}: ${status}${extra ? ` (${extra})` : ''}`;
100
+ };
101
+ lines.push(formatStatus('Checkpointing', features.checkpointing, '/rewind'));
102
+ lines.push(formatStatus('Memory System', features.memory, 'EROSOLAR.md'));
103
+ lines.push(formatStatus('Output Styles', features.outputStyles, '/output-style'));
104
+ lines.push(formatStatus('Cost Tracking', features.costTracking, '/cost'));
105
+ lines.push(formatStatus('Vim Mode', features.vimMode, '/vim'));
106
+ lines.push(formatStatus('Auto Updates', features.updates, '/update'));
107
+ return lines.join('\n');
108
+ }
109
+ /**
110
+ * Help text for Claude Code features
111
+ */
112
+ export function formatClaudeCodeHelp() {
113
+ return `
114
+ Claude Code Features in Erosolar CLI
115
+ =====================================
116
+
117
+ Checkpointing & Rewind (/rewind)
118
+ Automatic snapshots before code changes
119
+ Rewind to any checkpoint (code only, conversation only, or both)
120
+ Press Esc+Esc to open rewind menu
121
+
122
+ Memory System (EROSOLAR.md)
123
+ Hierarchical memory files for persistent context
124
+ ~/.erosolar/EROSOLAR.md (user preferences)
125
+ ./EROSOLAR.md (project memory)
126
+ Use @path/to/file to reference files in prompts
127
+ Use # prefix to quickly add to memory
128
+
129
+ Output Styles (/output-style)
130
+ default - Standard efficient coding mode
131
+ explanatory - Educational with detailed explanations
132
+ learning - Collaborative with TODO(human) markers
133
+ concise - Minimal output, code-focused only
134
+ Custom styles in ~/.erosolar/output-styles/
135
+
136
+ Cost Tracking (/cost, /usage)
137
+ Real-time token usage and cost display
138
+ Session and lifetime tracking
139
+ Breakdown by model
140
+
141
+ Vim Mode (/vim)
142
+ Toggle vim-style editing in input
143
+ Normal/Insert/Visual modes
144
+ Standard vim navigation (hjkl, w/b, etc.)
145
+
146
+ Keyboard Shortcuts
147
+ Ctrl+C Cancel/Clear
148
+ Ctrl+D Exit
149
+ Ctrl+B Background task
150
+ Esc+Esc Rewind menu
151
+ Shift+Tab Cycle edit modes
152
+ Tab Cycle thinking modes
153
+ Alt+V Toggle verification
154
+ Alt+C Toggle auto-continue
155
+ Alt+T Toggle thinking
156
+ PageUp/Down Scroll output
157
+
158
+ Updates (/update)
159
+ Check for new versions
160
+ Auto-update CLI
161
+ `.trim();
162
+ }
163
+ //# sourceMappingURL=claudeCodeFeatures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeCodeFeatures.js","sourceRoot":"","sources":["../../src/core/claudeCodeFeatures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Cost Tracker - Claude Code Style
3
+ *
4
+ * Tracks token usage and API costs across the session.
5
+ * Provides real-time cost display and detailed breakdowns.
6
+ *
7
+ * Features:
8
+ * - Real-time token counting (input/output)
9
+ * - Cost estimation based on model pricing
10
+ * - Session and lifetime cost tracking
11
+ * - Detailed breakdown by model and request
12
+ */
13
+ export interface TokenUsage {
14
+ inputTokens: number;
15
+ outputTokens: number;
16
+ totalTokens: number;
17
+ }
18
+ export interface RequestCost {
19
+ timestamp: number;
20
+ model: string;
21
+ inputTokens: number;
22
+ outputTokens: number;
23
+ inputCost: number;
24
+ outputCost: number;
25
+ totalCost: number;
26
+ requestType: 'chat' | 'tool' | 'embedding';
27
+ }
28
+ export interface SessionUsage {
29
+ sessionId: string;
30
+ startTime: number;
31
+ requests: RequestCost[];
32
+ totalInputTokens: number;
33
+ totalOutputTokens: number;
34
+ totalCost: number;
35
+ }
36
+ export interface LifetimeUsage {
37
+ totalInputTokens: number;
38
+ totalOutputTokens: number;
39
+ totalCost: number;
40
+ sessions: number;
41
+ firstUse: number;
42
+ lastUse: number;
43
+ }
44
+ /**
45
+ * Cost Tracker class
46
+ */
47
+ export declare class CostTracker {
48
+ private sessionId;
49
+ private startTime;
50
+ private requests;
51
+ constructor(sessionId?: string);
52
+ /**
53
+ * Record a request's token usage
54
+ */
55
+ recordUsage(model: string, inputTokens: number, outputTokens: number, requestType?: 'chat' | 'tool' | 'embedding'): RequestCost;
56
+ /**
57
+ * Get session usage summary
58
+ */
59
+ getSessionUsage(): SessionUsage;
60
+ /**
61
+ * Get lifetime usage
62
+ */
63
+ getLifetimeUsage(): LifetimeUsage;
64
+ /**
65
+ * Save request to lifetime usage
66
+ */
67
+ private saveToLifetime;
68
+ /**
69
+ * Format session usage for display
70
+ */
71
+ formatSessionUsage(): string;
72
+ /**
73
+ * Format cost breakdown for display
74
+ */
75
+ formatCostBreakdown(): string;
76
+ /**
77
+ * Format compact cost display for status bar
78
+ */
79
+ formatCompactCost(): string;
80
+ /**
81
+ * Reset session tracking
82
+ */
83
+ reset(): void;
84
+ }
85
+ export declare function getCostTracker(sessionId?: string): CostTracker;
86
+ export declare function resetCostTracker(): void;
87
+ //# sourceMappingURL=costTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"costTracker.d.ts","sourceRoot":"","sources":["../../src/core/costTracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA2CH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAuCD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAqB;gBAEzB,SAAS,CAAC,EAAE,MAAM;IAK9B;;OAEG;IACH,WAAW,CACT,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,GAAE,MAAM,GAAG,MAAM,GAAG,WAAoB,GAClD,WAAW;IAoBd;;OAEG;IACH,eAAe,IAAI,YAAY;IAqB/B;;OAEG;IACH,gBAAgB,IAAI,aAAa;IA2BjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,kBAAkB,IAAI,MAAM;IA0B5B;;OAEG;IACH,mBAAmB,IAAI,MAAM;IA2C7B;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAM3B;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AA2BD,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,CAK9D;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}