attocode 0.1.0 → 0.1.3
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/CHANGELOG.md +64 -1
- package/README.md +138 -10
- package/dist/src/agent.d.ts +75 -1
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +700 -25
- package/dist/src/agent.js.map +1 -1
- package/dist/src/commands/agents-commands.d.ts +24 -0
- package/dist/src/commands/agents-commands.d.ts.map +1 -0
- package/dist/src/commands/agents-commands.js +284 -0
- package/dist/src/commands/agents-commands.js.map +1 -0
- package/dist/src/commands/handler.d.ts.map +1 -1
- package/dist/src/commands/handler.js +135 -19
- package/dist/src/commands/handler.js.map +1 -1
- package/dist/src/commands/init-commands.d.ts +35 -0
- package/dist/src/commands/init-commands.d.ts.map +1 -0
- package/dist/src/commands/init-commands.js +187 -0
- package/dist/src/commands/init-commands.js.map +1 -0
- package/dist/src/commands/skills-commands.d.ts +26 -0
- package/dist/src/commands/skills-commands.d.ts.map +1 -0
- package/dist/src/commands/skills-commands.js +309 -0
- package/dist/src/commands/skills-commands.js.map +1 -0
- package/dist/src/commands/types.d.ts +13 -2
- package/dist/src/commands/types.d.ts.map +1 -1
- package/dist/src/defaults.d.ts +29 -1
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/defaults.js +66 -0
- package/dist/src/defaults.js.map +1 -1
- package/dist/src/integrations/agent-registry.d.ts +68 -2
- package/dist/src/integrations/agent-registry.d.ts.map +1 -1
- package/dist/src/integrations/agent-registry.js +230 -23
- package/dist/src/integrations/agent-registry.js.map +1 -1
- package/dist/src/integrations/cancellation.d.ts +5 -0
- package/dist/src/integrations/cancellation.d.ts.map +1 -1
- package/dist/src/integrations/cancellation.js +7 -0
- package/dist/src/integrations/cancellation.js.map +1 -1
- package/dist/src/integrations/capabilities.d.ts +160 -0
- package/dist/src/integrations/capabilities.d.ts.map +1 -0
- package/dist/src/integrations/capabilities.js +426 -0
- package/dist/src/integrations/capabilities.js.map +1 -0
- package/dist/src/integrations/context-engineering.d.ts +6 -1
- package/dist/src/integrations/context-engineering.d.ts.map +1 -1
- package/dist/src/integrations/context-engineering.js +7 -0
- package/dist/src/integrations/context-engineering.js.map +1 -1
- package/dist/src/integrations/index.d.ts +12 -2
- package/dist/src/integrations/index.d.ts.map +1 -1
- package/dist/src/integrations/index.js +22 -2
- package/dist/src/integrations/index.js.map +1 -1
- package/dist/src/integrations/interactive-planning.d.ts +322 -0
- package/dist/src/integrations/interactive-planning.d.ts.map +1 -0
- package/dist/src/integrations/interactive-planning.js +655 -0
- package/dist/src/integrations/interactive-planning.js.map +1 -0
- package/dist/src/integrations/learning-store.d.ts +291 -0
- package/dist/src/integrations/learning-store.d.ts.map +1 -0
- package/dist/src/integrations/learning-store.js +640 -0
- package/dist/src/integrations/learning-store.js.map +1 -0
- package/dist/src/integrations/pending-plan.d.ts.map +1 -1
- package/dist/src/integrations/pending-plan.js +69 -10
- package/dist/src/integrations/pending-plan.js.map +1 -1
- package/dist/src/integrations/skill-executor.d.ts +113 -0
- package/dist/src/integrations/skill-executor.d.ts.map +1 -0
- package/dist/src/integrations/skill-executor.js +270 -0
- package/dist/src/integrations/skill-executor.js.map +1 -0
- package/dist/src/integrations/skills.d.ts +98 -7
- package/dist/src/integrations/skills.d.ts.map +1 -1
- package/dist/src/integrations/skills.js +210 -11
- package/dist/src/integrations/skills.js.map +1 -1
- package/dist/src/providers/circuit-breaker.d.ts +180 -0
- package/dist/src/providers/circuit-breaker.d.ts.map +1 -0
- package/dist/src/providers/circuit-breaker.js +349 -0
- package/dist/src/providers/circuit-breaker.js.map +1 -0
- package/dist/src/providers/fallback-chain.d.ts +194 -0
- package/dist/src/providers/fallback-chain.d.ts.map +1 -0
- package/dist/src/providers/fallback-chain.js +363 -0
- package/dist/src/providers/fallback-chain.js.map +1 -0
- package/dist/src/providers/llm-resilience.d.ts +126 -0
- package/dist/src/providers/llm-resilience.d.ts.map +1 -0
- package/dist/src/providers/llm-resilience.js +261 -0
- package/dist/src/providers/llm-resilience.js.map +1 -0
- package/dist/src/providers/resilient-provider.d.ts +124 -0
- package/dist/src/providers/resilient-provider.d.ts.map +1 -0
- package/dist/src/providers/resilient-provider.js +242 -0
- package/dist/src/providers/resilient-provider.js.map +1 -0
- package/dist/src/tricks/recursive-context.d.ts +296 -0
- package/dist/src/tricks/recursive-context.d.ts.map +1 -0
- package/dist/src/tricks/recursive-context.js +518 -0
- package/dist/src/tricks/recursive-context.js.map +1 -0
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +226 -29
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/tui/components/ApprovalDialog.d.ts.map +1 -1
- package/dist/src/tui/components/ApprovalDialog.js +1 -1
- package/dist/src/tui/components/ApprovalDialog.js.map +1 -1
- package/dist/src/tui/index.d.ts +1 -0
- package/dist/src/tui/index.d.ts.map +1 -1
- package/dist/src/tui/index.js +2 -0
- package/dist/src/tui/index.js.map +1 -1
- package/dist/src/tui/transparency-aggregator.d.ts +100 -0
- package/dist/src/tui/transparency-aggregator.d.ts.map +1 -0
- package/dist/src/tui/transparency-aggregator.js +234 -0
- package/dist/src/tui/transparency-aggregator.js.map +1 -0
- package/dist/src/types.d.ts +155 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,640 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Learning Store Integration
|
|
3
|
+
*
|
|
4
|
+
* Provides cross-session persistence for failure patterns and learnings.
|
|
5
|
+
* Extends the failure-evidence system with long-term memory.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - SQLite persistence for learnings
|
|
9
|
+
* - Pattern extraction from failures
|
|
10
|
+
* - User validation workflow
|
|
11
|
+
* - Retrieval of relevant learnings for new sessions
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const store = createLearningStore({
|
|
16
|
+
* dbPath: '.agent/learnings.db',
|
|
17
|
+
* requireValidation: true,
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Connect failure tracker to store
|
|
21
|
+
* store.connectFailureTracker(tracker);
|
|
22
|
+
*
|
|
23
|
+
* // Learnings are auto-extracted and proposed
|
|
24
|
+
* store.on((event) => {
|
|
25
|
+
* if (event.type === 'learning.proposed') {
|
|
26
|
+
* // Ask user to validate
|
|
27
|
+
* const approved = await askUser(event.learning.description);
|
|
28
|
+
* if (approved) {
|
|
29
|
+
* store.validateLearning(event.learning.id, true);
|
|
30
|
+
* }
|
|
31
|
+
* }
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* // Retrieve relevant learnings for context
|
|
35
|
+
* const learnings = store.retrieveRelevant('file operations', 5);
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
import Database from 'better-sqlite3';
|
|
39
|
+
// =============================================================================
|
|
40
|
+
// DATABASE SCHEMA
|
|
41
|
+
// =============================================================================
|
|
42
|
+
const SCHEMA = `
|
|
43
|
+
CREATE TABLE IF NOT EXISTS learnings (
|
|
44
|
+
id TEXT PRIMARY KEY,
|
|
45
|
+
created_at TEXT NOT NULL,
|
|
46
|
+
updated_at TEXT NOT NULL,
|
|
47
|
+
type TEXT NOT NULL,
|
|
48
|
+
status TEXT NOT NULL,
|
|
49
|
+
description TEXT NOT NULL,
|
|
50
|
+
details TEXT,
|
|
51
|
+
categories TEXT NOT NULL,
|
|
52
|
+
actions TEXT NOT NULL,
|
|
53
|
+
keywords TEXT NOT NULL,
|
|
54
|
+
apply_count INTEGER DEFAULT 0,
|
|
55
|
+
help_count INTEGER DEFAULT 0,
|
|
56
|
+
confidence REAL DEFAULT 0.5,
|
|
57
|
+
source_failure_ids TEXT NOT NULL,
|
|
58
|
+
user_notes TEXT
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
CREATE INDEX IF NOT EXISTS idx_learnings_status ON learnings(status);
|
|
62
|
+
CREATE INDEX IF NOT EXISTS idx_learnings_type ON learnings(type);
|
|
63
|
+
CREATE INDEX IF NOT EXISTS idx_learnings_confidence ON learnings(confidence);
|
|
64
|
+
|
|
65
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS learnings_fts USING fts5(
|
|
66
|
+
id,
|
|
67
|
+
description,
|
|
68
|
+
details,
|
|
69
|
+
keywords,
|
|
70
|
+
actions,
|
|
71
|
+
content=learnings,
|
|
72
|
+
content_rowid=rowid
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
CREATE TRIGGER IF NOT EXISTS learnings_ai AFTER INSERT ON learnings BEGIN
|
|
76
|
+
INSERT INTO learnings_fts(id, description, details, keywords, actions)
|
|
77
|
+
VALUES (NEW.id, NEW.description, NEW.details, NEW.keywords, NEW.actions);
|
|
78
|
+
END;
|
|
79
|
+
|
|
80
|
+
CREATE TRIGGER IF NOT EXISTS learnings_ad AFTER DELETE ON learnings BEGIN
|
|
81
|
+
INSERT INTO learnings_fts(learnings_fts, id, description, details, keywords, actions)
|
|
82
|
+
VALUES ('delete', OLD.id, OLD.description, OLD.details, OLD.keywords, OLD.actions);
|
|
83
|
+
END;
|
|
84
|
+
|
|
85
|
+
CREATE TRIGGER IF NOT EXISTS learnings_au AFTER UPDATE ON learnings BEGIN
|
|
86
|
+
INSERT INTO learnings_fts(learnings_fts, id, description, details, keywords, actions)
|
|
87
|
+
VALUES ('delete', OLD.id, OLD.description, OLD.details, OLD.keywords, OLD.actions);
|
|
88
|
+
INSERT INTO learnings_fts(id, description, details, keywords, actions)
|
|
89
|
+
VALUES (NEW.id, NEW.description, NEW.details, NEW.keywords, NEW.actions);
|
|
90
|
+
END;
|
|
91
|
+
`;
|
|
92
|
+
// =============================================================================
|
|
93
|
+
// LEARNING STORE
|
|
94
|
+
// =============================================================================
|
|
95
|
+
/**
|
|
96
|
+
* Manages persistent storage and retrieval of learnings.
|
|
97
|
+
*/
|
|
98
|
+
export class LearningStore {
|
|
99
|
+
config;
|
|
100
|
+
db;
|
|
101
|
+
listeners = [];
|
|
102
|
+
failureTrackerUnsubscribe;
|
|
103
|
+
constructor(config = {}) {
|
|
104
|
+
this.config = {
|
|
105
|
+
dbPath: config.dbPath ?? '.agent/learnings.db',
|
|
106
|
+
requireValidation: config.requireValidation ?? true,
|
|
107
|
+
autoValidateThreshold: config.autoValidateThreshold ?? 0.9,
|
|
108
|
+
maxLearnings: config.maxLearnings ?? 500,
|
|
109
|
+
inMemory: config.inMemory ?? false,
|
|
110
|
+
};
|
|
111
|
+
// Initialize database
|
|
112
|
+
this.db = new Database(this.config.inMemory ? ':memory:' : this.config.dbPath);
|
|
113
|
+
this.initializeSchema();
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Initialize the database schema.
|
|
117
|
+
*/
|
|
118
|
+
initializeSchema() {
|
|
119
|
+
// Execute schema statements one at a time to handle SQLite limitations
|
|
120
|
+
const statements = SCHEMA.split(';').filter(s => s.trim());
|
|
121
|
+
for (const stmt of statements) {
|
|
122
|
+
try {
|
|
123
|
+
this.db.prepare(stmt + ';').run();
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// Some statements may fail if already exists, which is fine
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Connect a failure tracker to automatically extract learnings.
|
|
132
|
+
*/
|
|
133
|
+
connectFailureTracker(tracker) {
|
|
134
|
+
this.failureTrackerUnsubscribe = tracker.on((event) => {
|
|
135
|
+
if (event.type === 'pattern.detected') {
|
|
136
|
+
this.extractLearningFromPattern(event.pattern);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
return () => {
|
|
140
|
+
if (this.failureTrackerUnsubscribe) {
|
|
141
|
+
this.failureTrackerUnsubscribe();
|
|
142
|
+
this.failureTrackerUnsubscribe = undefined;
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Propose a new learning.
|
|
148
|
+
*/
|
|
149
|
+
proposeLearning(proposal) {
|
|
150
|
+
const learning = {
|
|
151
|
+
id: `learn-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
|
|
152
|
+
createdAt: new Date().toISOString(),
|
|
153
|
+
updatedAt: new Date().toISOString(),
|
|
154
|
+
type: proposal.type,
|
|
155
|
+
status: this.shouldAutoValidate(proposal.confidence ?? 0.5) ? 'validated' : 'proposed',
|
|
156
|
+
description: proposal.description,
|
|
157
|
+
details: proposal.details,
|
|
158
|
+
categories: proposal.categories || [],
|
|
159
|
+
actions: proposal.actions || [],
|
|
160
|
+
keywords: proposal.keywords || this.extractKeywords(proposal.description),
|
|
161
|
+
applyCount: 0,
|
|
162
|
+
helpCount: 0,
|
|
163
|
+
confidence: proposal.confidence ?? 0.5,
|
|
164
|
+
sourceFailureIds: proposal.sourceFailures?.map((f) => f.id) || [],
|
|
165
|
+
};
|
|
166
|
+
this.saveLearning(learning);
|
|
167
|
+
if (learning.status === 'proposed') {
|
|
168
|
+
this.emit({ type: 'learning.proposed', learning });
|
|
169
|
+
}
|
|
170
|
+
return learning;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Validate a proposed learning.
|
|
174
|
+
*/
|
|
175
|
+
validateLearning(learningId, approved, reason) {
|
|
176
|
+
const learning = this.getLearning(learningId);
|
|
177
|
+
if (!learning)
|
|
178
|
+
return false;
|
|
179
|
+
if (approved) {
|
|
180
|
+
learning.status = 'validated';
|
|
181
|
+
learning.updatedAt = new Date().toISOString();
|
|
182
|
+
this.saveLearning(learning);
|
|
183
|
+
this.emit({ type: 'learning.validated', learningId });
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
learning.status = 'rejected';
|
|
187
|
+
learning.userNotes = reason;
|
|
188
|
+
learning.updatedAt = new Date().toISOString();
|
|
189
|
+
this.saveLearning(learning);
|
|
190
|
+
this.emit({ type: 'learning.rejected', learningId, reason });
|
|
191
|
+
}
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Record that a learning was applied.
|
|
196
|
+
*/
|
|
197
|
+
recordApply(learningId, context) {
|
|
198
|
+
const learning = this.getLearning(learningId);
|
|
199
|
+
if (!learning)
|
|
200
|
+
return false;
|
|
201
|
+
learning.applyCount++;
|
|
202
|
+
learning.updatedAt = new Date().toISOString();
|
|
203
|
+
this.saveLearning(learning);
|
|
204
|
+
this.emit({ type: 'learning.applied', learningId, context });
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Record that a learning helped.
|
|
209
|
+
*/
|
|
210
|
+
recordHelped(learningId) {
|
|
211
|
+
const learning = this.getLearning(learningId);
|
|
212
|
+
if (!learning)
|
|
213
|
+
return false;
|
|
214
|
+
learning.helpCount++;
|
|
215
|
+
// Increase confidence when learning helps
|
|
216
|
+
learning.confidence = Math.min(1, learning.confidence + 0.05);
|
|
217
|
+
learning.updatedAt = new Date().toISOString();
|
|
218
|
+
this.saveLearning(learning);
|
|
219
|
+
this.emit({ type: 'learning.helped', learningId });
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Get a learning by ID.
|
|
224
|
+
*/
|
|
225
|
+
getLearning(id) {
|
|
226
|
+
const row = this.db.prepare('SELECT * FROM learnings WHERE id = ?').get(id);
|
|
227
|
+
if (!row)
|
|
228
|
+
return null;
|
|
229
|
+
return this.rowToLearning(row);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Get all validated learnings.
|
|
233
|
+
*/
|
|
234
|
+
getValidatedLearnings() {
|
|
235
|
+
const rows = this.db
|
|
236
|
+
.prepare('SELECT * FROM learnings WHERE status = ? ORDER BY confidence DESC')
|
|
237
|
+
.all('validated');
|
|
238
|
+
return rows.map((r) => this.rowToLearning(r));
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Get proposed learnings awaiting validation.
|
|
242
|
+
*/
|
|
243
|
+
getPendingLearnings() {
|
|
244
|
+
const rows = this.db
|
|
245
|
+
.prepare('SELECT * FROM learnings WHERE status = ? ORDER BY created_at DESC')
|
|
246
|
+
.all('proposed');
|
|
247
|
+
return rows.map((r) => this.rowToLearning(r));
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Retrieve learnings relevant to a query.
|
|
251
|
+
*/
|
|
252
|
+
retrieveRelevant(query, limit = 10) {
|
|
253
|
+
// Use FTS for search
|
|
254
|
+
try {
|
|
255
|
+
const rows = this.db
|
|
256
|
+
.prepare(`SELECT learnings.* FROM learnings_fts
|
|
257
|
+
JOIN learnings ON learnings_fts.id = learnings.id
|
|
258
|
+
WHERE learnings_fts MATCH ?
|
|
259
|
+
AND learnings.status = 'validated'
|
|
260
|
+
ORDER BY rank
|
|
261
|
+
LIMIT ?`)
|
|
262
|
+
.all(this.sanitizeFtsQuery(query), limit);
|
|
263
|
+
return rows.map((r) => this.rowToLearning(r));
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
// FTS query failed, fall back to LIKE search
|
|
267
|
+
return this.retrieveByKeyword(query, limit);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Retrieve learnings by keyword (fallback).
|
|
272
|
+
*/
|
|
273
|
+
retrieveByKeyword(keyword, limit) {
|
|
274
|
+
const rows = this.db
|
|
275
|
+
.prepare(`SELECT * FROM learnings
|
|
276
|
+
WHERE status = 'validated'
|
|
277
|
+
AND (description LIKE ? OR details LIKE ? OR keywords LIKE ?)
|
|
278
|
+
ORDER BY confidence DESC
|
|
279
|
+
LIMIT ?`)
|
|
280
|
+
.all(`%${keyword}%`, `%${keyword}%`, `%${keyword}%`, limit);
|
|
281
|
+
return rows.map((r) => this.rowToLearning(r));
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Retrieve learnings by category.
|
|
285
|
+
*/
|
|
286
|
+
retrieveByCategory(category, limit = 10) {
|
|
287
|
+
const rows = this.db
|
|
288
|
+
.prepare(`SELECT * FROM learnings
|
|
289
|
+
WHERE status = 'validated'
|
|
290
|
+
AND categories LIKE ?
|
|
291
|
+
ORDER BY confidence DESC, help_count DESC
|
|
292
|
+
LIMIT ?`)
|
|
293
|
+
.all(`%${category}%`, limit);
|
|
294
|
+
return rows.map((r) => this.rowToLearning(r));
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Retrieve learnings by action.
|
|
298
|
+
*/
|
|
299
|
+
retrieveByAction(action, limit = 10) {
|
|
300
|
+
const rows = this.db
|
|
301
|
+
.prepare(`SELECT * FROM learnings
|
|
302
|
+
WHERE status = 'validated'
|
|
303
|
+
AND actions LIKE ?
|
|
304
|
+
ORDER BY confidence DESC, help_count DESC
|
|
305
|
+
LIMIT ?`)
|
|
306
|
+
.all(`%${action}%`, limit);
|
|
307
|
+
return rows.map((r) => this.rowToLearning(r));
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Get learning context formatted for LLM inclusion.
|
|
311
|
+
*/
|
|
312
|
+
getLearningContext(options = {}) {
|
|
313
|
+
const { query, categories = [], actions = [], maxLearnings = 5, } = options;
|
|
314
|
+
let learnings = [];
|
|
315
|
+
// Search by query
|
|
316
|
+
if (query) {
|
|
317
|
+
learnings = this.retrieveRelevant(query, maxLearnings);
|
|
318
|
+
}
|
|
319
|
+
// Add by categories
|
|
320
|
+
for (const cat of categories) {
|
|
321
|
+
const catLearnings = this.retrieveByCategory(cat, 2);
|
|
322
|
+
learnings.push(...catLearnings);
|
|
323
|
+
}
|
|
324
|
+
// Add by actions
|
|
325
|
+
for (const action of actions) {
|
|
326
|
+
const actionLearnings = this.retrieveByAction(action, 2);
|
|
327
|
+
learnings.push(...actionLearnings);
|
|
328
|
+
}
|
|
329
|
+
// Deduplicate and limit
|
|
330
|
+
const seen = new Set();
|
|
331
|
+
learnings = learnings.filter((l) => {
|
|
332
|
+
if (seen.has(l.id))
|
|
333
|
+
return false;
|
|
334
|
+
seen.add(l.id);
|
|
335
|
+
return true;
|
|
336
|
+
}).slice(0, maxLearnings);
|
|
337
|
+
if (learnings.length === 0) {
|
|
338
|
+
return '';
|
|
339
|
+
}
|
|
340
|
+
return formatLearningsContext(learnings);
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Archive a learning.
|
|
344
|
+
*/
|
|
345
|
+
archiveLearning(learningId) {
|
|
346
|
+
const learning = this.getLearning(learningId);
|
|
347
|
+
if (!learning)
|
|
348
|
+
return false;
|
|
349
|
+
learning.status = 'archived';
|
|
350
|
+
learning.updatedAt = new Date().toISOString();
|
|
351
|
+
this.saveLearning(learning);
|
|
352
|
+
return true;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Delete a learning.
|
|
356
|
+
*/
|
|
357
|
+
deleteLearning(learningId) {
|
|
358
|
+
const result = this.db.prepare('DELETE FROM learnings WHERE id = ?').run(learningId);
|
|
359
|
+
return result.changes > 0;
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Get learning statistics.
|
|
363
|
+
*/
|
|
364
|
+
getStats() {
|
|
365
|
+
const total = this.db.prepare('SELECT COUNT(*) as count FROM learnings').get().count;
|
|
366
|
+
const byStatus = {
|
|
367
|
+
proposed: 0,
|
|
368
|
+
validated: 0,
|
|
369
|
+
rejected: 0,
|
|
370
|
+
archived: 0,
|
|
371
|
+
};
|
|
372
|
+
const statusRows = this.db.prepare('SELECT status, COUNT(*) as count FROM learnings GROUP BY status').all();
|
|
373
|
+
for (const row of statusRows) {
|
|
374
|
+
byStatus[row.status] = row.count;
|
|
375
|
+
}
|
|
376
|
+
const byType = {
|
|
377
|
+
pattern: 0,
|
|
378
|
+
workaround: 0,
|
|
379
|
+
antipattern: 0,
|
|
380
|
+
best_practice: 0,
|
|
381
|
+
gotcha: 0,
|
|
382
|
+
};
|
|
383
|
+
const typeRows = this.db.prepare('SELECT type, COUNT(*) as count FROM learnings GROUP BY type').all();
|
|
384
|
+
for (const row of typeRows) {
|
|
385
|
+
byType[row.type] = row.count;
|
|
386
|
+
}
|
|
387
|
+
const topApplied = this.db
|
|
388
|
+
.prepare('SELECT id, description, apply_count FROM learnings ORDER BY apply_count DESC LIMIT 5')
|
|
389
|
+
.all();
|
|
390
|
+
const topHelpful = this.db
|
|
391
|
+
.prepare('SELECT id, description, help_count FROM learnings ORDER BY help_count DESC LIMIT 5')
|
|
392
|
+
.all();
|
|
393
|
+
return {
|
|
394
|
+
total,
|
|
395
|
+
byStatus,
|
|
396
|
+
byType,
|
|
397
|
+
topApplied: topApplied.map((r) => ({ id: r.id, description: r.description, applyCount: r.apply_count })),
|
|
398
|
+
topHelpful: topHelpful.map((r) => ({ id: r.id, description: r.description, helpCount: r.help_count })),
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Subscribe to events.
|
|
403
|
+
*/
|
|
404
|
+
on(listener) {
|
|
405
|
+
this.listeners.push(listener);
|
|
406
|
+
return () => {
|
|
407
|
+
const idx = this.listeners.indexOf(listener);
|
|
408
|
+
if (idx >= 0)
|
|
409
|
+
this.listeners.splice(idx, 1);
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Close the database connection.
|
|
414
|
+
*/
|
|
415
|
+
close() {
|
|
416
|
+
if (this.failureTrackerUnsubscribe) {
|
|
417
|
+
this.failureTrackerUnsubscribe();
|
|
418
|
+
}
|
|
419
|
+
this.db.close();
|
|
420
|
+
}
|
|
421
|
+
// Internal methods
|
|
422
|
+
shouldAutoValidate(confidence) {
|
|
423
|
+
return !this.config.requireValidation || confidence >= this.config.autoValidateThreshold;
|
|
424
|
+
}
|
|
425
|
+
extractLearningFromPattern(pattern) {
|
|
426
|
+
const learning = this.proposeLearning({
|
|
427
|
+
type: pattern.type === 'repeated_action' ? 'antipattern' : 'pattern',
|
|
428
|
+
description: pattern.description,
|
|
429
|
+
details: pattern.suggestion,
|
|
430
|
+
keywords: pattern.description.split(/\s+/).filter((w) => w.length > 3),
|
|
431
|
+
confidence: pattern.confidence,
|
|
432
|
+
});
|
|
433
|
+
this.emit({ type: 'pattern.extracted', pattern, learning });
|
|
434
|
+
return learning;
|
|
435
|
+
}
|
|
436
|
+
extractKeywords(text) {
|
|
437
|
+
// Simple keyword extraction - remove common words and short words
|
|
438
|
+
const stopWords = new Set([
|
|
439
|
+
'the', 'a', 'an', 'and', 'or', 'but', 'is', 'are', 'was', 'were',
|
|
440
|
+
'be', 'been', 'being', 'have', 'has', 'had', 'do', 'does', 'did',
|
|
441
|
+
'to', 'at', 'by', 'for', 'with', 'about', 'against', 'between',
|
|
442
|
+
'into', 'through', 'during', 'before', 'after', 'above', 'below',
|
|
443
|
+
'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under',
|
|
444
|
+
'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where',
|
|
445
|
+
'why', 'how', 'all', 'each', 'few', 'more', 'most', 'other', 'some',
|
|
446
|
+
'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than',
|
|
447
|
+
'too', 'very', 'can', 'will', 'just', 'should', 'now',
|
|
448
|
+
]);
|
|
449
|
+
return text
|
|
450
|
+
.toLowerCase()
|
|
451
|
+
.split(/\W+/)
|
|
452
|
+
.filter((word) => word.length > 3 && !stopWords.has(word))
|
|
453
|
+
.slice(0, 10);
|
|
454
|
+
}
|
|
455
|
+
sanitizeFtsQuery(query) {
|
|
456
|
+
// Escape special FTS5 characters
|
|
457
|
+
return query
|
|
458
|
+
.replace(/['"]/g, '')
|
|
459
|
+
.replace(/[^\w\s]/g, ' ')
|
|
460
|
+
.trim()
|
|
461
|
+
.split(/\s+/)
|
|
462
|
+
.filter((w) => w.length > 0)
|
|
463
|
+
.join(' OR ');
|
|
464
|
+
}
|
|
465
|
+
saveLearning(learning) {
|
|
466
|
+
const stmt = this.db.prepare(`
|
|
467
|
+
INSERT OR REPLACE INTO learnings (
|
|
468
|
+
id, created_at, updated_at, type, status, description, details,
|
|
469
|
+
categories, actions, keywords, apply_count, help_count, confidence,
|
|
470
|
+
source_failure_ids, user_notes
|
|
471
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
472
|
+
`);
|
|
473
|
+
stmt.run(learning.id, learning.createdAt, learning.updatedAt, learning.type, learning.status, learning.description, learning.details || null, JSON.stringify(learning.categories), JSON.stringify(learning.actions), JSON.stringify(learning.keywords), learning.applyCount, learning.helpCount, learning.confidence, JSON.stringify(learning.sourceFailureIds), learning.userNotes || null);
|
|
474
|
+
// Enforce max learnings
|
|
475
|
+
const count = this.db.prepare('SELECT COUNT(*) as count FROM learnings').get().count;
|
|
476
|
+
if (count > this.config.maxLearnings) {
|
|
477
|
+
// Delete oldest rejected or archived first, then lowest confidence
|
|
478
|
+
this.db.prepare(`
|
|
479
|
+
DELETE FROM learnings WHERE id IN (
|
|
480
|
+
SELECT id FROM learnings
|
|
481
|
+
WHERE status IN ('rejected', 'archived')
|
|
482
|
+
ORDER BY updated_at ASC
|
|
483
|
+
LIMIT ?
|
|
484
|
+
)
|
|
485
|
+
`).run(count - this.config.maxLearnings);
|
|
486
|
+
// If still over limit, delete lowest confidence
|
|
487
|
+
const remainingCount = this.db.prepare('SELECT COUNT(*) as count FROM learnings').get().count;
|
|
488
|
+
if (remainingCount > this.config.maxLearnings) {
|
|
489
|
+
this.db.prepare(`
|
|
490
|
+
DELETE FROM learnings WHERE id IN (
|
|
491
|
+
SELECT id FROM learnings
|
|
492
|
+
ORDER BY confidence ASC, apply_count ASC
|
|
493
|
+
LIMIT ?
|
|
494
|
+
)
|
|
495
|
+
`).run(remainingCount - this.config.maxLearnings);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
rowToLearning(row) {
|
|
500
|
+
return {
|
|
501
|
+
id: row.id,
|
|
502
|
+
createdAt: row.created_at,
|
|
503
|
+
updatedAt: row.updated_at,
|
|
504
|
+
type: row.type,
|
|
505
|
+
status: row.status,
|
|
506
|
+
description: row.description,
|
|
507
|
+
details: row.details || undefined,
|
|
508
|
+
categories: JSON.parse(row.categories),
|
|
509
|
+
actions: JSON.parse(row.actions),
|
|
510
|
+
keywords: JSON.parse(row.keywords),
|
|
511
|
+
applyCount: row.apply_count,
|
|
512
|
+
helpCount: row.help_count,
|
|
513
|
+
confidence: row.confidence,
|
|
514
|
+
sourceFailureIds: JSON.parse(row.source_failure_ids),
|
|
515
|
+
userNotes: row.user_notes || undefined,
|
|
516
|
+
};
|
|
517
|
+
}
|
|
518
|
+
emit(event) {
|
|
519
|
+
for (const listener of this.listeners) {
|
|
520
|
+
try {
|
|
521
|
+
listener(event);
|
|
522
|
+
}
|
|
523
|
+
catch {
|
|
524
|
+
// Ignore listener errors
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
// =============================================================================
|
|
530
|
+
// FACTORY FUNCTIONS
|
|
531
|
+
// =============================================================================
|
|
532
|
+
/**
|
|
533
|
+
* Create a learning store.
|
|
534
|
+
*
|
|
535
|
+
* @example
|
|
536
|
+
* ```typescript
|
|
537
|
+
* const store = createLearningStore({
|
|
538
|
+
* dbPath: '.agent/learnings.db',
|
|
539
|
+
* requireValidation: true,
|
|
540
|
+
* });
|
|
541
|
+
*
|
|
542
|
+
* // Propose a learning manually
|
|
543
|
+
* store.proposeLearning({
|
|
544
|
+
* type: 'gotcha',
|
|
545
|
+
* description: 'Always check file exists before reading',
|
|
546
|
+
* actions: ['read_file'],
|
|
547
|
+
* categories: ['not_found'],
|
|
548
|
+
* });
|
|
549
|
+
*
|
|
550
|
+
* // Retrieve relevant learnings
|
|
551
|
+
* const learnings = store.retrieveRelevant('file permissions');
|
|
552
|
+
* ```
|
|
553
|
+
*/
|
|
554
|
+
export function createLearningStore(config = {}) {
|
|
555
|
+
return new LearningStore(config);
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* Create an in-memory learning store (for testing).
|
|
559
|
+
*/
|
|
560
|
+
export function createInMemoryLearningStore(config = {}) {
|
|
561
|
+
return new LearningStore({
|
|
562
|
+
...config,
|
|
563
|
+
inMemory: true,
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
// =============================================================================
|
|
567
|
+
// UTILITIES
|
|
568
|
+
// =============================================================================
|
|
569
|
+
/**
|
|
570
|
+
* Format learnings as context for LLM.
|
|
571
|
+
*/
|
|
572
|
+
export function formatLearningsContext(learnings) {
|
|
573
|
+
if (learnings.length === 0)
|
|
574
|
+
return '';
|
|
575
|
+
const lines = [
|
|
576
|
+
'[Learnings from Previous Sessions]',
|
|
577
|
+
'',
|
|
578
|
+
];
|
|
579
|
+
for (const l of learnings) {
|
|
580
|
+
const typeIcon = {
|
|
581
|
+
pattern: '📊',
|
|
582
|
+
workaround: '💡',
|
|
583
|
+
antipattern: '⚠️',
|
|
584
|
+
best_practice: '✅',
|
|
585
|
+
gotcha: '🔍',
|
|
586
|
+
}[l.type];
|
|
587
|
+
lines.push(`${typeIcon} **${l.description}**`);
|
|
588
|
+
if (l.details) {
|
|
589
|
+
lines.push(` ${l.details}`);
|
|
590
|
+
}
|
|
591
|
+
if (l.actions.length > 0) {
|
|
592
|
+
lines.push(` Actions: ${l.actions.join(', ')}`);
|
|
593
|
+
}
|
|
594
|
+
lines.push('');
|
|
595
|
+
}
|
|
596
|
+
return lines.join('\n');
|
|
597
|
+
}
|
|
598
|
+
/**
|
|
599
|
+
* Format learning stats for display.
|
|
600
|
+
*/
|
|
601
|
+
export function formatLearningStats(stats) {
|
|
602
|
+
const lines = [
|
|
603
|
+
'Learning Statistics:',
|
|
604
|
+
` Total: ${stats.total}`,
|
|
605
|
+
'',
|
|
606
|
+
' By Status:',
|
|
607
|
+
];
|
|
608
|
+
for (const [status, count] of Object.entries(stats.byStatus)) {
|
|
609
|
+
if (count > 0) {
|
|
610
|
+
lines.push(` ${status}: ${count}`);
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
lines.push('');
|
|
614
|
+
lines.push(' By Type:');
|
|
615
|
+
for (const [type, count] of Object.entries(stats.byType)) {
|
|
616
|
+
if (count > 0) {
|
|
617
|
+
lines.push(` ${type}: ${count}`);
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
if (stats.topApplied.length > 0) {
|
|
621
|
+
lines.push('');
|
|
622
|
+
lines.push(' Most Applied:');
|
|
623
|
+
for (const l of stats.topApplied) {
|
|
624
|
+
if (l.applyCount > 0) {
|
|
625
|
+
lines.push(` ${l.description.slice(0, 50)}... (${l.applyCount})`);
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
if (stats.topHelpful.length > 0) {
|
|
630
|
+
lines.push('');
|
|
631
|
+
lines.push(' Most Helpful:');
|
|
632
|
+
for (const l of stats.topHelpful) {
|
|
633
|
+
if (l.helpCount > 0) {
|
|
634
|
+
lines.push(` ${l.description.slice(0, 50)}... (${l.helpCount})`);
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
return lines.join('\n');
|
|
639
|
+
}
|
|
640
|
+
//# sourceMappingURL=learning-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning-store.js","sourceRoot":"","sources":["../../../src/integrations/learning-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending-plan.d.ts","sourceRoot":"","sources":["../../../src/integrations/pending-plan.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pending-plan.d.ts","sourceRoot":"","sources":["../../../src/integrations/pending-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAMH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,oBAAoB,CAAC;AAEpF;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IAEX,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IAEb,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9B,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IAEf,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IAEd,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IAEnB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IAEX,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IAEb,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAElB,8CAA8C;IAC9C,eAAe,EAAE,cAAc,EAAE,CAAC;IAElC,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAC;IAE3B,iCAAiC;IACjC,MAAM,EAAE,UAAU,CAAC;IAEnB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yBAAyB;IACzB,OAAO,EAAE,cAAc,EAAE,CAAC;IAE1B,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAMzE;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAA4C;IAElE;;;OAGG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW;IAoBxD;;;OAGG;IACH,iBAAiB,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,GAAG,IAAI;IAsBxB;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAO5C;;OAEG;IACH,cAAc,IAAI,WAAW,GAAG,IAAI;IAIpC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;;;OAIG;IACH,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,kBAAkB;IA2B3C;;;OAGG;IACH,MAAM,IAAI,IAAI;IAYd;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAKpC;;OAEG;IACH,UAAU,IAAI,MAAM;IA0GpB;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,wBAAwB,GAAG,MAAM,IAAI;IAOzD,OAAO,CAAC,IAAI;CASb;AAMD;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,kBAAkB,CAE7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CAOjE"}
|