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.
- package/dist/capabilities/agentSpawningCapability.d.ts.map +1 -1
- package/dist/capabilities/agentSpawningCapability.js +29 -1
- package/dist/capabilities/agentSpawningCapability.js.map +1 -1
- package/dist/contracts/agent-schemas.json +100 -0
- package/dist/core/alphaZeroEngine.d.ts +269 -0
- package/dist/core/alphaZeroEngine.d.ts.map +1 -0
- package/dist/core/alphaZeroEngine.js +523 -0
- package/dist/core/alphaZeroEngine.js.map +1 -0
- package/dist/core/alphaZeroOrchestrator.d.ts +140 -0
- package/dist/core/alphaZeroOrchestrator.d.ts.map +1 -0
- package/dist/core/alphaZeroOrchestrator.js +418 -0
- package/dist/core/alphaZeroOrchestrator.js.map +1 -0
- package/dist/core/checkpoint.d.ts +76 -0
- package/dist/core/checkpoint.d.ts.map +1 -0
- package/dist/core/checkpoint.js +278 -0
- package/dist/core/checkpoint.js.map +1 -0
- package/dist/core/claudeCodeFeatures.d.ts +64 -0
- package/dist/core/claudeCodeFeatures.d.ts.map +1 -0
- package/dist/core/claudeCodeFeatures.js +163 -0
- package/dist/core/claudeCodeFeatures.js.map +1 -0
- package/dist/core/costTracker.d.ts +87 -0
- package/dist/core/costTracker.d.ts.map +1 -0
- package/dist/core/costTracker.js +285 -0
- package/dist/core/costTracker.js.map +1 -0
- package/dist/core/failureRecovery.d.ts +122 -0
- package/dist/core/failureRecovery.d.ts.map +1 -0
- package/dist/core/failureRecovery.js +477 -0
- package/dist/core/failureRecovery.js.map +1 -0
- package/dist/core/learningPersistence.d.ts +145 -0
- package/dist/core/learningPersistence.d.ts.map +1 -0
- package/dist/core/learningPersistence.js +477 -0
- package/dist/core/learningPersistence.js.map +1 -0
- package/dist/core/memorySystem.d.ts +67 -0
- package/dist/core/memorySystem.d.ts.map +1 -0
- package/dist/core/memorySystem.js +334 -0
- package/dist/core/memorySystem.js.map +1 -0
- package/dist/core/metricsTracker.d.ts +35 -0
- package/dist/core/metricsTracker.d.ts.map +1 -1
- package/dist/core/metricsTracker.js +67 -0
- package/dist/core/metricsTracker.js.map +1 -1
- package/dist/core/outputStyles.d.ts +48 -0
- package/dist/core/outputStyles.d.ts.map +1 -0
- package/dist/core/outputStyles.js +270 -0
- package/dist/core/outputStyles.js.map +1 -0
- package/dist/core/selfEvolution.d.ts +155 -0
- package/dist/core/selfEvolution.d.ts.map +1 -0
- package/dist/core/selfEvolution.js +1000 -0
- package/dist/core/selfEvolution.js.map +1 -0
- package/dist/core/selfImprovement.d.ts +141 -0
- package/dist/core/selfImprovement.d.ts.map +1 -0
- package/dist/core/selfImprovement.js +700 -0
- package/dist/core/selfImprovement.js.map +1 -0
- package/dist/core/updateManager.d.ts +62 -0
- package/dist/core/updateManager.d.ts.map +1 -0
- package/dist/core/updateManager.js +266 -0
- package/dist/core/updateManager.js.map +1 -0
- package/dist/shell/interactiveShell.d.ts +45 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +1157 -4
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/shell/keyboardShortcuts.d.ts +53 -0
- package/dist/shell/keyboardShortcuts.d.ts.map +1 -0
- package/dist/shell/keyboardShortcuts.js +163 -0
- package/dist/shell/keyboardShortcuts.js.map +1 -0
- package/dist/shell/terminalInput.d.ts +1 -1
- package/dist/shell/terminalInput.d.ts.map +1 -1
- package/dist/shell/terminalInput.js +8 -4
- package/dist/shell/terminalInput.js.map +1 -1
- package/dist/shell/vimMode.d.ts +66 -0
- package/dist/shell/vimMode.d.ts.map +1 -0
- package/dist/shell/vimMode.js +434 -0
- package/dist/shell/vimMode.js.map +1 -0
- package/dist/subagents/parallelAgentManager.d.ts +99 -0
- package/dist/subagents/parallelAgentManager.d.ts.map +1 -0
- package/dist/subagents/parallelAgentManager.js +249 -0
- package/dist/subagents/parallelAgentManager.js.map +1 -0
- package/dist/subagents/taskRunner.d.ts +6 -1
- package/dist/subagents/taskRunner.d.ts.map +1 -1
- package/dist/subagents/taskRunner.js +57 -2
- package/dist/subagents/taskRunner.js.map +1 -1
- package/dist/tools/planningTools.d.ts +9 -0
- package/dist/tools/planningTools.d.ts.map +1 -1
- package/dist/tools/planningTools.js +90 -0
- package/dist/tools/planningTools.js.map +1 -1
- package/dist/ui/ShellUIAdapter.d.ts +11 -1
- package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
- package/dist/ui/ShellUIAdapter.js +73 -9
- package/dist/ui/ShellUIAdapter.js.map +1 -1
- package/dist/ui/display.d.ts +5 -0
- package/dist/ui/display.d.ts.map +1 -1
- package/dist/ui/display.js +14 -0
- package/dist/ui/display.js.map +1 -1
- package/dist/ui/shortcutsHelp.d.ts +11 -0
- package/dist/ui/shortcutsHelp.d.ts.map +1 -1
- package/dist/ui/shortcutsHelp.js +59 -3
- package/dist/ui/shortcutsHelp.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,285 @@
|
|
|
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
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
14
|
+
import { homedir } from 'node:os';
|
|
15
|
+
import { join } from 'node:path';
|
|
16
|
+
const USAGE_FILE = join(homedir(), '.erosolar', 'usage.json');
|
|
17
|
+
/**
|
|
18
|
+
* Model pricing (per 1M tokens)
|
|
19
|
+
*/
|
|
20
|
+
const MODEL_PRICING = {
|
|
21
|
+
// Anthropic
|
|
22
|
+
'claude-sonnet-4-5-20250929': { input: 3.0, output: 15.0 },
|
|
23
|
+
'claude-opus-4-20250514': { input: 15.0, output: 75.0 },
|
|
24
|
+
'claude-haiku-4-5-20251001': { input: 0.25, output: 1.25 },
|
|
25
|
+
// OpenAI
|
|
26
|
+
'gpt-5.1-codex-mini': { input: 0.15, output: 0.60 },
|
|
27
|
+
'gpt-5.1-codex': { input: 2.5, output: 10.0 },
|
|
28
|
+
'gpt-5.1': { input: 5.0, output: 15.0 },
|
|
29
|
+
'gpt-5-pro': { input: 15.0, output: 60.0 },
|
|
30
|
+
'gpt-5-mini': { input: 0.3, output: 1.2 },
|
|
31
|
+
'gpt-5-nano': { input: 0.075, output: 0.30 },
|
|
32
|
+
// Google
|
|
33
|
+
'gemini-2.5-pro': { input: 1.25, output: 5.0 },
|
|
34
|
+
'gemini-2.5-flash': { input: 0.075, output: 0.30 },
|
|
35
|
+
// xAI
|
|
36
|
+
'grok-4': { input: 5.0, output: 15.0 },
|
|
37
|
+
'grok-4-1-fast-reasoning': { input: 2.0, output: 10.0 },
|
|
38
|
+
'grok-4-1-fast-non-reasoning': { input: 0.5, output: 2.0 },
|
|
39
|
+
'grok-code-fast-1': { input: 0.5, output: 2.0 },
|
|
40
|
+
// DeepSeek
|
|
41
|
+
'deepseek-reasoner': { input: 0.55, output: 2.19 },
|
|
42
|
+
'deepseek-chat': { input: 0.27, output: 1.10 },
|
|
43
|
+
// Default for unknown models
|
|
44
|
+
'default': { input: 1.0, output: 3.0 },
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Get pricing for a model
|
|
48
|
+
*/
|
|
49
|
+
function getModelPricing(model) {
|
|
50
|
+
// Try exact match first
|
|
51
|
+
if (MODEL_PRICING[model]) {
|
|
52
|
+
return MODEL_PRICING[model];
|
|
53
|
+
}
|
|
54
|
+
// Try prefix match (for versioned models)
|
|
55
|
+
for (const [key, pricing] of Object.entries(MODEL_PRICING)) {
|
|
56
|
+
if (model.startsWith(key) || key.startsWith(model)) {
|
|
57
|
+
return pricing;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return MODEL_PRICING['default'];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Calculate cost for tokens
|
|
64
|
+
*/
|
|
65
|
+
function calculateCost(model, inputTokens, outputTokens) {
|
|
66
|
+
const pricing = getModelPricing(model);
|
|
67
|
+
const inputCost = (inputTokens / 1_000_000) * pricing.input;
|
|
68
|
+
const outputCost = (outputTokens / 1_000_000) * pricing.output;
|
|
69
|
+
return {
|
|
70
|
+
inputCost,
|
|
71
|
+
outputCost,
|
|
72
|
+
totalCost: inputCost + outputCost,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Cost Tracker class
|
|
77
|
+
*/
|
|
78
|
+
export class CostTracker {
|
|
79
|
+
sessionId;
|
|
80
|
+
startTime;
|
|
81
|
+
requests = [];
|
|
82
|
+
constructor(sessionId) {
|
|
83
|
+
this.sessionId = sessionId ?? `session_${Date.now().toString(36)}`;
|
|
84
|
+
this.startTime = Date.now();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Record a request's token usage
|
|
88
|
+
*/
|
|
89
|
+
recordUsage(model, inputTokens, outputTokens, requestType = 'chat') {
|
|
90
|
+
const costs = calculateCost(model, inputTokens, outputTokens);
|
|
91
|
+
const request = {
|
|
92
|
+
timestamp: Date.now(),
|
|
93
|
+
model,
|
|
94
|
+
inputTokens,
|
|
95
|
+
outputTokens,
|
|
96
|
+
inputCost: costs.inputCost,
|
|
97
|
+
outputCost: costs.outputCost,
|
|
98
|
+
totalCost: costs.totalCost,
|
|
99
|
+
requestType,
|
|
100
|
+
};
|
|
101
|
+
this.requests.push(request);
|
|
102
|
+
this.saveToLifetime(request);
|
|
103
|
+
return request;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get session usage summary
|
|
107
|
+
*/
|
|
108
|
+
getSessionUsage() {
|
|
109
|
+
let totalInputTokens = 0;
|
|
110
|
+
let totalOutputTokens = 0;
|
|
111
|
+
let totalCost = 0;
|
|
112
|
+
for (const req of this.requests) {
|
|
113
|
+
totalInputTokens += req.inputTokens;
|
|
114
|
+
totalOutputTokens += req.outputTokens;
|
|
115
|
+
totalCost += req.totalCost;
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
sessionId: this.sessionId,
|
|
119
|
+
startTime: this.startTime,
|
|
120
|
+
requests: [...this.requests],
|
|
121
|
+
totalInputTokens,
|
|
122
|
+
totalOutputTokens,
|
|
123
|
+
totalCost,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get lifetime usage
|
|
128
|
+
*/
|
|
129
|
+
getLifetimeUsage() {
|
|
130
|
+
try {
|
|
131
|
+
if (!existsSync(USAGE_FILE)) {
|
|
132
|
+
return {
|
|
133
|
+
totalInputTokens: 0,
|
|
134
|
+
totalOutputTokens: 0,
|
|
135
|
+
totalCost: 0,
|
|
136
|
+
sessions: 0,
|
|
137
|
+
firstUse: Date.now(),
|
|
138
|
+
lastUse: Date.now(),
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
const data = JSON.parse(readFileSync(USAGE_FILE, 'utf8'));
|
|
142
|
+
return data;
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return {
|
|
146
|
+
totalInputTokens: 0,
|
|
147
|
+
totalOutputTokens: 0,
|
|
148
|
+
totalCost: 0,
|
|
149
|
+
sessions: 0,
|
|
150
|
+
firstUse: Date.now(),
|
|
151
|
+
lastUse: Date.now(),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Save request to lifetime usage
|
|
157
|
+
*/
|
|
158
|
+
saveToLifetime(request) {
|
|
159
|
+
try {
|
|
160
|
+
const usage = this.getLifetimeUsage();
|
|
161
|
+
usage.totalInputTokens += request.inputTokens;
|
|
162
|
+
usage.totalOutputTokens += request.outputTokens;
|
|
163
|
+
usage.totalCost += request.totalCost;
|
|
164
|
+
usage.lastUse = Date.now();
|
|
165
|
+
mkdirSync(join(homedir(), '.erosolar'), { recursive: true });
|
|
166
|
+
writeFileSync(USAGE_FILE, JSON.stringify(usage, null, 2));
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// Ignore save errors
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Format session usage for display
|
|
174
|
+
*/
|
|
175
|
+
formatSessionUsage() {
|
|
176
|
+
const usage = this.getSessionUsage();
|
|
177
|
+
const duration = Math.floor((Date.now() - this.startTime) / 1000);
|
|
178
|
+
const mins = Math.floor(duration / 60);
|
|
179
|
+
const secs = duration % 60;
|
|
180
|
+
const lines = [
|
|
181
|
+
'Session Usage:',
|
|
182
|
+
'',
|
|
183
|
+
` Duration: ${mins}m ${secs}s`,
|
|
184
|
+
` Requests: ${usage.requests.length}`,
|
|
185
|
+
'',
|
|
186
|
+
' Tokens:',
|
|
187
|
+
` Input: ${formatNumber(usage.totalInputTokens)}`,
|
|
188
|
+
` Output: ${formatNumber(usage.totalOutputTokens)}`,
|
|
189
|
+
` Total: ${formatNumber(usage.totalInputTokens + usage.totalOutputTokens)}`,
|
|
190
|
+
'',
|
|
191
|
+
' Cost:',
|
|
192
|
+
` Input: $${usage.requests.reduce((sum, r) => sum + r.inputCost, 0).toFixed(4)}`,
|
|
193
|
+
` Output: $${usage.requests.reduce((sum, r) => sum + r.outputCost, 0).toFixed(4)}`,
|
|
194
|
+
` Total: $${usage.totalCost.toFixed(4)}`,
|
|
195
|
+
];
|
|
196
|
+
return lines.join('\n');
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Format cost breakdown for display
|
|
200
|
+
*/
|
|
201
|
+
formatCostBreakdown() {
|
|
202
|
+
const usage = this.getSessionUsage();
|
|
203
|
+
const lifetime = this.getLifetimeUsage();
|
|
204
|
+
// Group by model
|
|
205
|
+
const byModel = new Map();
|
|
206
|
+
for (const req of usage.requests) {
|
|
207
|
+
const existing = byModel.get(req.model) ?? { input: 0, output: 0, cost: 0, count: 0 };
|
|
208
|
+
existing.input += req.inputTokens;
|
|
209
|
+
existing.output += req.outputTokens;
|
|
210
|
+
existing.cost += req.totalCost;
|
|
211
|
+
existing.count += 1;
|
|
212
|
+
byModel.set(req.model, existing);
|
|
213
|
+
}
|
|
214
|
+
const lines = [
|
|
215
|
+
'Cost Breakdown:',
|
|
216
|
+
'',
|
|
217
|
+
'┌─ Session ─────────────────────────────────────┐',
|
|
218
|
+
`│ Total Cost: $${usage.totalCost.toFixed(4)}`,
|
|
219
|
+
`│ Tokens: ${formatNumber(usage.totalInputTokens + usage.totalOutputTokens)} (${formatNumber(usage.totalInputTokens)} in / ${formatNumber(usage.totalOutputTokens)} out)`,
|
|
220
|
+
'│',
|
|
221
|
+
];
|
|
222
|
+
if (byModel.size > 0) {
|
|
223
|
+
lines.push('│ By Model:');
|
|
224
|
+
for (const [model, data] of byModel) {
|
|
225
|
+
const shortModel = model.length > 25 ? model.slice(0, 22) + '...' : model;
|
|
226
|
+
lines.push(`│ ${shortModel}: $${data.cost.toFixed(4)} (${data.count} req)`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
lines.push('└───────────────────────────────────────────────┘');
|
|
230
|
+
lines.push('');
|
|
231
|
+
lines.push('┌─ Lifetime ────────────────────────────────────┐');
|
|
232
|
+
lines.push(`│ Total Cost: $${lifetime.totalCost.toFixed(4)}`);
|
|
233
|
+
lines.push(`│ Total Tokens: ${formatNumber(lifetime.totalInputTokens + lifetime.totalOutputTokens)}`);
|
|
234
|
+
lines.push(`│ Sessions: ${lifetime.sessions}`);
|
|
235
|
+
lines.push('└───────────────────────────────────────────────┘');
|
|
236
|
+
return lines.join('\n');
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Format compact cost display for status bar
|
|
240
|
+
*/
|
|
241
|
+
formatCompactCost() {
|
|
242
|
+
const usage = this.getSessionUsage();
|
|
243
|
+
const totalTokens = usage.totalInputTokens + usage.totalOutputTokens;
|
|
244
|
+
return `$${usage.totalCost.toFixed(3)} · ${formatCompactNumber(totalTokens)} tok`;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Reset session tracking
|
|
248
|
+
*/
|
|
249
|
+
reset() {
|
|
250
|
+
this.requests = [];
|
|
251
|
+
this.startTime = Date.now();
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Format number with commas
|
|
256
|
+
*/
|
|
257
|
+
function formatNumber(n) {
|
|
258
|
+
return n.toLocaleString('en-US');
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Format number compactly (1.2k, 3.5M)
|
|
262
|
+
*/
|
|
263
|
+
function formatCompactNumber(n) {
|
|
264
|
+
if (n >= 1_000_000) {
|
|
265
|
+
return `${(n / 1_000_000).toFixed(1)}M`;
|
|
266
|
+
}
|
|
267
|
+
if (n >= 1_000) {
|
|
268
|
+
return `${(n / 1_000).toFixed(1)}k`;
|
|
269
|
+
}
|
|
270
|
+
return n.toString();
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Global cost tracker instance
|
|
274
|
+
*/
|
|
275
|
+
let globalCostTracker = null;
|
|
276
|
+
export function getCostTracker(sessionId) {
|
|
277
|
+
if (!globalCostTracker) {
|
|
278
|
+
globalCostTracker = new CostTracker(sessionId);
|
|
279
|
+
}
|
|
280
|
+
return globalCostTracker;
|
|
281
|
+
}
|
|
282
|
+
export function resetCostTracker() {
|
|
283
|
+
globalCostTracker = null;
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=costTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"costTracker.js","sourceRoot":"","sources":["../../src/core/costTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intelligent Failure Detection and Recovery System
|
|
3
|
+
*
|
|
4
|
+
* Detects non-working solutions and applies AlphaZero-style learning to:
|
|
5
|
+
* 1. Identify failure patterns
|
|
6
|
+
* 2. Generate alternative approaches
|
|
7
|
+
* 3. Store successful recoveries for reuse
|
|
8
|
+
* 4. Optionally update source code when patterns are reliable
|
|
9
|
+
*
|
|
10
|
+
* Principal Investigator: Bo Shang
|
|
11
|
+
*/
|
|
12
|
+
import { type ToolCallRecord } from './alphaZeroEngine.js';
|
|
13
|
+
export interface FailureSignal {
|
|
14
|
+
type: 'build' | 'test' | 'tool' | 'user-feedback' | 'verification' | 'loop-detected';
|
|
15
|
+
severity: 'critical' | 'major' | 'minor';
|
|
16
|
+
message: string;
|
|
17
|
+
context?: Record<string, unknown>;
|
|
18
|
+
timestamp: string;
|
|
19
|
+
}
|
|
20
|
+
export interface RecoveryAttempt {
|
|
21
|
+
id: string;
|
|
22
|
+
failureSignal: FailureSignal;
|
|
23
|
+
originalApproach: string;
|
|
24
|
+
alternativeApproach: string;
|
|
25
|
+
success: boolean;
|
|
26
|
+
qualityBefore: number;
|
|
27
|
+
qualityAfter: number;
|
|
28
|
+
timestamp: string;
|
|
29
|
+
}
|
|
30
|
+
export interface RecoveryStrategy {
|
|
31
|
+
id: string;
|
|
32
|
+
failureType: string;
|
|
33
|
+
errorPattern: string;
|
|
34
|
+
recoverySteps: string[];
|
|
35
|
+
successRate: number;
|
|
36
|
+
timesUsed: number;
|
|
37
|
+
lastSuccess: string;
|
|
38
|
+
}
|
|
39
|
+
export interface SourceCodeFix {
|
|
40
|
+
id: string;
|
|
41
|
+
filePath: string;
|
|
42
|
+
description: string;
|
|
43
|
+
originalCode: string;
|
|
44
|
+
fixedCode: string;
|
|
45
|
+
failureType: string;
|
|
46
|
+
validatedCount: number;
|
|
47
|
+
appliedToSource: boolean;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Detect failure from output/response
|
|
51
|
+
*/
|
|
52
|
+
export declare function detectFailure(output: string, context: {
|
|
53
|
+
toolCalls?: ToolCallRecord[];
|
|
54
|
+
userMessage?: string;
|
|
55
|
+
}): FailureSignal | null;
|
|
56
|
+
/**
|
|
57
|
+
* Record an action and detect if we're in a loop
|
|
58
|
+
*/
|
|
59
|
+
export declare function recordActionAndDetectLoop(action: string): FailureSignal | null;
|
|
60
|
+
/**
|
|
61
|
+
* Clear action history (call after successful task completion)
|
|
62
|
+
*/
|
|
63
|
+
export declare function clearActionHistory(): void;
|
|
64
|
+
/**
|
|
65
|
+
* Find a recovery strategy for a failure type
|
|
66
|
+
*/
|
|
67
|
+
export declare function findRecoveryStrategy(failure: FailureSignal): RecoveryStrategy | null;
|
|
68
|
+
/**
|
|
69
|
+
* Record a successful recovery strategy
|
|
70
|
+
*/
|
|
71
|
+
export declare function recordRecoveryStrategy(failure: FailureSignal, recoverySteps: string[], success: boolean): void;
|
|
72
|
+
/**
|
|
73
|
+
* Generate a prompt for recovering from failure
|
|
74
|
+
*/
|
|
75
|
+
export declare function generateRecoveryPrompt(failure: FailureSignal, originalApproach: string, taskType: string): string;
|
|
76
|
+
/**
|
|
77
|
+
* Record a potential source code fix
|
|
78
|
+
*/
|
|
79
|
+
export declare function recordPotentialSourceFix(filePath: string, description: string, originalCode: string, fixedCode: string, failureType: string): void;
|
|
80
|
+
/**
|
|
81
|
+
* Get all source code fixes
|
|
82
|
+
*/
|
|
83
|
+
export declare function getSourceCodeFixes(): SourceCodeFix[];
|
|
84
|
+
/**
|
|
85
|
+
* Get validated source fixes that should be applied
|
|
86
|
+
*/
|
|
87
|
+
export declare function getValidatedSourceFixes(minValidations?: number): SourceCodeFix[];
|
|
88
|
+
/**
|
|
89
|
+
* Mark a fix as applied to source
|
|
90
|
+
*/
|
|
91
|
+
export declare function markFixApplied(fixId: string): void;
|
|
92
|
+
/**
|
|
93
|
+
* Check if we should suggest applying fixes to erosolar source
|
|
94
|
+
*/
|
|
95
|
+
export declare function suggestSourceUpdates(workingDir: string): {
|
|
96
|
+
shouldSuggest: boolean;
|
|
97
|
+
fixes: SourceCodeFix[];
|
|
98
|
+
reason: string;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Generate commit message for learning-based updates
|
|
102
|
+
*/
|
|
103
|
+
export declare function generateLearningCommitMessage(fixes: SourceCodeFix[]): string;
|
|
104
|
+
export interface RecoveryResult {
|
|
105
|
+
recovered: boolean;
|
|
106
|
+
approach: string;
|
|
107
|
+
strategy?: RecoveryStrategy;
|
|
108
|
+
qualityImprovement: number;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Main entry point for failure recovery
|
|
112
|
+
* Call this when a failure is detected
|
|
113
|
+
*/
|
|
114
|
+
export declare function initiateRecovery(failure: FailureSignal, originalApproach: string, toolCalls: ToolCallRecord[], userQuery: string): {
|
|
115
|
+
recoveryPrompt: string;
|
|
116
|
+
strategy: RecoveryStrategy | null;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Record successful recovery for future use
|
|
120
|
+
*/
|
|
121
|
+
export declare function recordSuccessfulRecovery(failure: FailureSignal, recoveryApproach: string, toolCalls: ToolCallRecord[], userQuery: string, qualityScore: number): void;
|
|
122
|
+
//# sourceMappingURL=failureRecovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failureRecovery.d.ts","sourceRoot":"","sources":["../../src/core/failureRecovery.ts"],"names":[],"mappings":"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"}
|