@su-record/vibe 2.6.23 → 2.6.25
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/commands/vibe.review.md +9 -5
- package/commands/vibe.run.md +9 -5
- package/commands/vibe.spec.review.md +18 -12
- package/dist/lib/MemoryManager.d.ts +11 -0
- package/dist/lib/MemoryManager.d.ts.map +1 -1
- package/dist/lib/MemoryManager.js +21 -0
- package/dist/lib/MemoryManager.js.map +1 -1
- package/dist/lib/memory/MemorySearch.d.ts +3 -1
- package/dist/lib/memory/MemorySearch.d.ts.map +1 -1
- package/dist/lib/memory/MemorySearch.js +60 -0
- package/dist/lib/memory/MemorySearch.js.map +1 -1
- package/dist/lib/memory/MemoryStorage.d.ts +12 -1
- package/dist/lib/memory/MemoryStorage.d.ts.map +1 -1
- package/dist/lib/memory/MemoryStorage.js +127 -1
- package/dist/lib/memory/MemoryStorage.js.map +1 -1
- package/dist/lib/memory/ObservationStore.d.ts +61 -0
- package/dist/lib/memory/ObservationStore.d.ts.map +1 -0
- package/dist/lib/memory/ObservationStore.js +120 -0
- package/dist/lib/memory/ObservationStore.js.map +1 -0
- package/dist/lib/memory/SessionSummarizer.d.ts +50 -0
- package/dist/lib/memory/SessionSummarizer.d.ts.map +1 -0
- package/dist/lib/memory/SessionSummarizer.js +157 -0
- package/dist/lib/memory/SessionSummarizer.js.map +1 -0
- package/dist/lib/memory/index.d.ts +1 -0
- package/dist/lib/memory/index.d.ts.map +1 -1
- package/dist/lib/memory/index.js +1 -0
- package/dist/lib/memory/index.js.map +1 -1
- package/dist/tools/memory/addObservation.d.ts +16 -0
- package/dist/tools/memory/addObservation.d.ts.map +1 -0
- package/dist/tools/memory/addObservation.js +71 -0
- package/dist/tools/memory/addObservation.js.map +1 -0
- package/dist/tools/memory/index.d.ts +2 -0
- package/dist/tools/memory/index.d.ts.map +1 -1
- package/dist/tools/memory/index.js +2 -0
- package/dist/tools/memory/index.js.map +1 -1
- package/dist/tools/memory/searchMemoriesAdvanced.d.ts.map +1 -1
- package/dist/tools/memory/searchMemoriesAdvanced.js +7 -5
- package/dist/tools/memory/searchMemoriesAdvanced.js.map +1 -1
- package/dist/tools/memory/searchObservations.d.ts +12 -0
- package/dist/tools/memory/searchObservations.d.ts.map +1 -0
- package/dist/tools/memory/searchObservations.js +67 -0
- package/dist/tools/memory/searchObservations.js.map +1 -0
- package/dist/tools/memory/startSession.d.ts.map +1 -1
- package/dist/tools/memory/startSession.js +16 -2
- package/dist/tools/memory/startSession.js.map +1 -1
- package/dist/types/tool.d.ts +1 -1
- package/dist/types/tool.d.ts.map +1 -1
- package/hooks/scripts/code-check.js +49 -1
- package/hooks/scripts/context-save.js +21 -1
- package/package.json +1 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { MemoryStorage } from './MemoryStorage.js';
|
|
2
|
+
export type ObservationType = 'decision' | 'bugfix' | 'feature' | 'refactor' | 'discovery';
|
|
3
|
+
export interface Observation {
|
|
4
|
+
id: number;
|
|
5
|
+
sessionId: string | null;
|
|
6
|
+
type: ObservationType;
|
|
7
|
+
title: string;
|
|
8
|
+
narrative: string | null;
|
|
9
|
+
facts: string[];
|
|
10
|
+
concepts: string[];
|
|
11
|
+
filesModified: string[];
|
|
12
|
+
timestamp: string;
|
|
13
|
+
projectPath: string | null;
|
|
14
|
+
}
|
|
15
|
+
export interface ObservationInput {
|
|
16
|
+
sessionId?: string;
|
|
17
|
+
type: ObservationType;
|
|
18
|
+
title: string;
|
|
19
|
+
narrative?: string;
|
|
20
|
+
facts?: string[];
|
|
21
|
+
concepts?: string[];
|
|
22
|
+
filesModified?: string[];
|
|
23
|
+
projectPath?: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class ObservationStore {
|
|
26
|
+
private db;
|
|
27
|
+
constructor(storage: MemoryStorage);
|
|
28
|
+
/**
|
|
29
|
+
* Add a new observation
|
|
30
|
+
*/
|
|
31
|
+
add(input: ObservationInput): number;
|
|
32
|
+
/**
|
|
33
|
+
* Get observations by session ID
|
|
34
|
+
*/
|
|
35
|
+
getBySession(sessionId: string, limit?: number): Observation[];
|
|
36
|
+
/**
|
|
37
|
+
* Get recent observations
|
|
38
|
+
*/
|
|
39
|
+
getRecent(limit?: number, type?: ObservationType): Observation[];
|
|
40
|
+
/**
|
|
41
|
+
* Get observations by type
|
|
42
|
+
*/
|
|
43
|
+
getByType(type: ObservationType, limit?: number): Observation[];
|
|
44
|
+
/**
|
|
45
|
+
* Search observations using FTS5 (with LIKE fallback)
|
|
46
|
+
*/
|
|
47
|
+
search(query: string, limit?: number): Observation[];
|
|
48
|
+
/**
|
|
49
|
+
* Get observation statistics
|
|
50
|
+
*/
|
|
51
|
+
getStats(): {
|
|
52
|
+
total: number;
|
|
53
|
+
byType: Record<string, number>;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Delete observations by session ID
|
|
57
|
+
*/
|
|
58
|
+
deleteBySession(sessionId: string): number;
|
|
59
|
+
private rowToObservation;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=ObservationStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObservationStore.d.ts","sourceRoot":"","sources":["../../../src/lib/memory/ObservationStore.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;AAE3F,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAeD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,EAAE,CAAoB;gBAElB,OAAO,EAAE,aAAa;IAIlC;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM;IAsB3C;;OAEG;IACI,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE;IASzE;;OAEG;IACI,SAAS,CAAC,KAAK,GAAE,MAAW,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,WAAW,EAAE;IAiB3E;;OAEG;IACI,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE;IAS1E;;OAEG;IACI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,WAAW,EAAE;IAyB/D;;OAEG;IACI,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAepE;;OAEG;IACI,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAKjD,OAAO,CAAC,gBAAgB;CAczB"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// Structured observation storage for automatic tool-use capture
|
|
2
|
+
// Inspired by claude-mem's observation model
|
|
3
|
+
export class ObservationStore {
|
|
4
|
+
db;
|
|
5
|
+
constructor(storage) {
|
|
6
|
+
this.db = storage.getDatabase();
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Add a new observation
|
|
10
|
+
*/
|
|
11
|
+
add(input) {
|
|
12
|
+
const timestamp = new Date().toISOString();
|
|
13
|
+
const stmt = this.db.prepare(`
|
|
14
|
+
INSERT INTO observations (sessionId, type, title, narrative, facts, concepts, filesModified, timestamp, projectPath)
|
|
15
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
16
|
+
`);
|
|
17
|
+
const result = stmt.run(input.sessionId || null, input.type, input.title, input.narrative || null, input.facts ? JSON.stringify(input.facts) : null, input.concepts ? JSON.stringify(input.concepts) : null, input.filesModified ? JSON.stringify(input.filesModified) : null, timestamp, input.projectPath || null);
|
|
18
|
+
return result.lastInsertRowid;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get observations by session ID
|
|
22
|
+
*/
|
|
23
|
+
getBySession(sessionId, limit = 50) {
|
|
24
|
+
const rows = this.db.prepare(`
|
|
25
|
+
SELECT * FROM observations WHERE sessionId = ?
|
|
26
|
+
ORDER BY timestamp DESC LIMIT ?
|
|
27
|
+
`).all(sessionId, limit);
|
|
28
|
+
return rows.map(this.rowToObservation);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get recent observations
|
|
32
|
+
*/
|
|
33
|
+
getRecent(limit = 10, type) {
|
|
34
|
+
if (type) {
|
|
35
|
+
const rows = this.db.prepare(`
|
|
36
|
+
SELECT * FROM observations WHERE type = ?
|
|
37
|
+
ORDER BY timestamp DESC LIMIT ?
|
|
38
|
+
`).all(type, limit);
|
|
39
|
+
return rows.map(this.rowToObservation);
|
|
40
|
+
}
|
|
41
|
+
const rows = this.db.prepare(`
|
|
42
|
+
SELECT * FROM observations
|
|
43
|
+
ORDER BY timestamp DESC LIMIT ?
|
|
44
|
+
`).all(limit);
|
|
45
|
+
return rows.map(this.rowToObservation);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get observations by type
|
|
49
|
+
*/
|
|
50
|
+
getByType(type, limit = 20) {
|
|
51
|
+
const rows = this.db.prepare(`
|
|
52
|
+
SELECT * FROM observations WHERE type = ?
|
|
53
|
+
ORDER BY timestamp DESC LIMIT ?
|
|
54
|
+
`).all(type, limit);
|
|
55
|
+
return rows.map(this.rowToObservation);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Search observations using FTS5 (with LIKE fallback)
|
|
59
|
+
*/
|
|
60
|
+
search(query, limit = 20) {
|
|
61
|
+
try {
|
|
62
|
+
const rows = this.db.prepare(`
|
|
63
|
+
SELECT o.*, bm25(observations_fts) as rank
|
|
64
|
+
FROM observations_fts fts
|
|
65
|
+
JOIN observations o ON o.id = fts.rowid
|
|
66
|
+
WHERE observations_fts MATCH ?
|
|
67
|
+
ORDER BY rank
|
|
68
|
+
LIMIT ?
|
|
69
|
+
`).all(query, limit);
|
|
70
|
+
return rows.map(this.rowToObservation);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// FTS5 not available, fallback to LIKE
|
|
74
|
+
const pattern = `%${query}%`;
|
|
75
|
+
const rows = this.db.prepare(`
|
|
76
|
+
SELECT * FROM observations
|
|
77
|
+
WHERE title LIKE ? OR narrative LIKE ? OR facts LIKE ? OR concepts LIKE ?
|
|
78
|
+
ORDER BY timestamp DESC LIMIT ?
|
|
79
|
+
`).all(pattern, pattern, pattern, pattern, limit);
|
|
80
|
+
return rows.map(this.rowToObservation);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get observation statistics
|
|
85
|
+
*/
|
|
86
|
+
getStats() {
|
|
87
|
+
const types = this.db.prepare(`
|
|
88
|
+
SELECT type, COUNT(*) as count FROM observations GROUP BY type
|
|
89
|
+
`).all();
|
|
90
|
+
const byType = {};
|
|
91
|
+
let total = 0;
|
|
92
|
+
types.forEach(t => {
|
|
93
|
+
byType[t.type] = t.count;
|
|
94
|
+
total += t.count;
|
|
95
|
+
});
|
|
96
|
+
return { total, byType };
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Delete observations by session ID
|
|
100
|
+
*/
|
|
101
|
+
deleteBySession(sessionId) {
|
|
102
|
+
const result = this.db.prepare(`DELETE FROM observations WHERE sessionId = ?`).run(sessionId);
|
|
103
|
+
return result.changes;
|
|
104
|
+
}
|
|
105
|
+
rowToObservation(row) {
|
|
106
|
+
return {
|
|
107
|
+
id: row.id,
|
|
108
|
+
sessionId: row.sessionId,
|
|
109
|
+
type: row.type,
|
|
110
|
+
title: row.title,
|
|
111
|
+
narrative: row.narrative,
|
|
112
|
+
facts: row.facts ? JSON.parse(row.facts) : [],
|
|
113
|
+
concepts: row.concepts ? JSON.parse(row.concepts) : [],
|
|
114
|
+
filesModified: row.filesModified ? JSON.parse(row.filesModified) : [],
|
|
115
|
+
timestamp: row.timestamp,
|
|
116
|
+
projectPath: row.projectPath,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=ObservationStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObservationStore.js","sourceRoot":"","sources":["../../../src/lib/memory/ObservationStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { MemoryStorage } from './MemoryStorage.js';
|
|
2
|
+
export interface SessionSummary {
|
|
3
|
+
id: number;
|
|
4
|
+
sessionId: string;
|
|
5
|
+
request: string | null;
|
|
6
|
+
investigated: string | null;
|
|
7
|
+
learned: string | null;
|
|
8
|
+
completed: string | null;
|
|
9
|
+
nextSteps: string | null;
|
|
10
|
+
filesRead: string[];
|
|
11
|
+
filesEdited: string[];
|
|
12
|
+
timestamp: string;
|
|
13
|
+
}
|
|
14
|
+
export interface SessionSummaryInput {
|
|
15
|
+
sessionId: string;
|
|
16
|
+
request?: string;
|
|
17
|
+
investigated?: string;
|
|
18
|
+
learned?: string;
|
|
19
|
+
completed?: string;
|
|
20
|
+
nextSteps?: string;
|
|
21
|
+
filesRead?: string[];
|
|
22
|
+
filesEdited?: string[];
|
|
23
|
+
}
|
|
24
|
+
export declare class SessionSummarizer {
|
|
25
|
+
private db;
|
|
26
|
+
private observations;
|
|
27
|
+
constructor(storage: MemoryStorage);
|
|
28
|
+
/**
|
|
29
|
+
* Save or update a session summary
|
|
30
|
+
*/
|
|
31
|
+
saveSummary(input: SessionSummaryInput): number;
|
|
32
|
+
/**
|
|
33
|
+
* Get recent session summaries
|
|
34
|
+
*/
|
|
35
|
+
getRecentSummaries(limit?: number): SessionSummary[];
|
|
36
|
+
/**
|
|
37
|
+
* Get summary for a specific session
|
|
38
|
+
*/
|
|
39
|
+
getSummary(sessionId: string): SessionSummary | null;
|
|
40
|
+
/**
|
|
41
|
+
* Auto-generate a session summary from observations
|
|
42
|
+
*/
|
|
43
|
+
generateSummaryFromObservations(sessionId: string): SessionSummaryInput;
|
|
44
|
+
/**
|
|
45
|
+
* Generate rich context markdown for session start
|
|
46
|
+
*/
|
|
47
|
+
generateSessionContext(tokenBudget?: number): string;
|
|
48
|
+
private rowToSummary;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=SessionSummarizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionSummarizer.d.ts","sourceRoot":"","sources":["../../../src/lib/memory/SessionSummarizer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAeD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,YAAY,CAAmB;gBAE3B,OAAO,EAAE,aAAa;IAKlC;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;IAuBtD;;OAEG;IACI,kBAAkB,CAAC,KAAK,GAAE,MAAU,GAAG,cAAc,EAAE;IAS9D;;OAEG;IACI,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAQ3D;;OAEG;IACI,+BAA+B,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB;IAmC9E;;OAEG;IACI,sBAAsB,CAAC,WAAW,GAAE,MAAa,GAAG,MAAM;IAuEjE,OAAO,CAAC,YAAY;CAcrB"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// Session summarization and rich context injection
|
|
2
|
+
// Generates session summaries from observations and provides context for next session
|
|
3
|
+
import { ObservationStore } from './ObservationStore.js';
|
|
4
|
+
export class SessionSummarizer {
|
|
5
|
+
db;
|
|
6
|
+
observations;
|
|
7
|
+
constructor(storage) {
|
|
8
|
+
this.db = storage.getDatabase();
|
|
9
|
+
this.observations = new ObservationStore(storage);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Save or update a session summary
|
|
13
|
+
*/
|
|
14
|
+
saveSummary(input) {
|
|
15
|
+
const timestamp = new Date().toISOString();
|
|
16
|
+
const stmt = this.db.prepare(`
|
|
17
|
+
INSERT OR REPLACE INTO session_summaries
|
|
18
|
+
(sessionId, request, investigated, learned, completed, nextSteps, filesRead, filesEdited, timestamp)
|
|
19
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
20
|
+
`);
|
|
21
|
+
const result = stmt.run(input.sessionId, input.request || null, input.investigated || null, input.learned || null, input.completed || null, input.nextSteps || null, input.filesRead ? JSON.stringify(input.filesRead) : null, input.filesEdited ? JSON.stringify(input.filesEdited) : null, timestamp);
|
|
22
|
+
return result.lastInsertRowid;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get recent session summaries
|
|
26
|
+
*/
|
|
27
|
+
getRecentSummaries(limit = 3) {
|
|
28
|
+
const rows = this.db.prepare(`
|
|
29
|
+
SELECT * FROM session_summaries
|
|
30
|
+
ORDER BY timestamp DESC LIMIT ?
|
|
31
|
+
`).all(limit);
|
|
32
|
+
return rows.map(this.rowToSummary);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get summary for a specific session
|
|
36
|
+
*/
|
|
37
|
+
getSummary(sessionId) {
|
|
38
|
+
const row = this.db.prepare(`
|
|
39
|
+
SELECT * FROM session_summaries WHERE sessionId = ?
|
|
40
|
+
`).get(sessionId);
|
|
41
|
+
return row ? this.rowToSummary(row) : null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Auto-generate a session summary from observations
|
|
45
|
+
*/
|
|
46
|
+
generateSummaryFromObservations(sessionId) {
|
|
47
|
+
const observations = this.observations.getBySession(sessionId, 50);
|
|
48
|
+
if (observations.length === 0) {
|
|
49
|
+
return { sessionId };
|
|
50
|
+
}
|
|
51
|
+
const decisions = observations.filter(o => o.type === 'decision');
|
|
52
|
+
const discoveries = observations.filter(o => o.type === 'discovery');
|
|
53
|
+
const features = observations.filter(o => o.type === 'feature');
|
|
54
|
+
const bugfixes = observations.filter(o => o.type === 'bugfix');
|
|
55
|
+
const refactors = observations.filter(o => o.type === 'refactor');
|
|
56
|
+
const allFiles = new Set();
|
|
57
|
+
observations.forEach(o => o.filesModified.forEach(f => allFiles.add(f)));
|
|
58
|
+
const learned = [
|
|
59
|
+
...decisions.map(o => o.title),
|
|
60
|
+
...discoveries.map(o => o.title),
|
|
61
|
+
].slice(0, 5).join('; ');
|
|
62
|
+
const completed = [
|
|
63
|
+
...features.map(o => o.title),
|
|
64
|
+
...bugfixes.map(o => o.title),
|
|
65
|
+
...refactors.map(o => o.title),
|
|
66
|
+
].slice(0, 5).join('; ');
|
|
67
|
+
return {
|
|
68
|
+
sessionId,
|
|
69
|
+
learned: learned || undefined,
|
|
70
|
+
completed: completed || undefined,
|
|
71
|
+
filesEdited: Array.from(allFiles).slice(0, 10),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Generate rich context markdown for session start
|
|
76
|
+
*/
|
|
77
|
+
generateSessionContext(tokenBudget = 2000) {
|
|
78
|
+
const charBudget = tokenBudget * 4; // ~4 chars per token
|
|
79
|
+
let context = '';
|
|
80
|
+
// 1. Recent session summaries (최근 3개)
|
|
81
|
+
const summaries = this.getRecentSummaries(3);
|
|
82
|
+
if (summaries.length > 0) {
|
|
83
|
+
context += '\n## Previous Sessions\n';
|
|
84
|
+
for (const s of summaries) {
|
|
85
|
+
const date = new Date(s.timestamp).toLocaleDateString();
|
|
86
|
+
context += `\n### ${date}`;
|
|
87
|
+
if (s.completed)
|
|
88
|
+
context += `\n- Completed: ${s.completed}`;
|
|
89
|
+
if (s.learned)
|
|
90
|
+
context += `\n- Learned: ${s.learned}`;
|
|
91
|
+
if (s.nextSteps)
|
|
92
|
+
context += `\n- Next: ${s.nextSteps}`;
|
|
93
|
+
if (s.filesEdited.length > 0) {
|
|
94
|
+
context += `\n- Files: ${s.filesEdited.slice(0, 5).join(', ')}`;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
context += '\n';
|
|
98
|
+
}
|
|
99
|
+
// 2. Key observations (decision/discovery 우선, 최근 5개)
|
|
100
|
+
if (context.length < charBudget) {
|
|
101
|
+
const keyObs = [
|
|
102
|
+
...this.observations.getRecent(3, 'decision'),
|
|
103
|
+
...this.observations.getRecent(3, 'discovery'),
|
|
104
|
+
].sort((a, b) => b.timestamp.localeCompare(a.timestamp)).slice(0, 5);
|
|
105
|
+
if (keyObs.length > 0) {
|
|
106
|
+
context += '\n## Key Observations\n';
|
|
107
|
+
for (const obs of keyObs) {
|
|
108
|
+
context += `- [${obs.type}] ${obs.title}`;
|
|
109
|
+
if (obs.facts.length > 0) {
|
|
110
|
+
context += `: ${obs.facts[0]}`;
|
|
111
|
+
}
|
|
112
|
+
context += '\n';
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// 3. Recently modified files map
|
|
117
|
+
if (context.length < charBudget) {
|
|
118
|
+
const recentObs = this.observations.getRecent(20);
|
|
119
|
+
const fileMap = new Map();
|
|
120
|
+
for (const obs of recentObs) {
|
|
121
|
+
for (const f of obs.filesModified) {
|
|
122
|
+
fileMap.set(f, (fileMap.get(f) || 0) + 1);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (fileMap.size > 0) {
|
|
126
|
+
const sortedFiles = Array.from(fileMap.entries())
|
|
127
|
+
.sort((a, b) => b[1] - a[1])
|
|
128
|
+
.slice(0, 8);
|
|
129
|
+
context += '\n## Recently Modified Files\n';
|
|
130
|
+
for (const [file, count] of sortedFiles) {
|
|
131
|
+
const shortName = file.split(/[\\/]/).slice(-2).join('/');
|
|
132
|
+
context += `- ${shortName} (${count}x)\n`;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Truncate if over budget
|
|
137
|
+
if (context.length > charBudget) {
|
|
138
|
+
context = context.substring(0, charBudget) + '\n...(truncated)';
|
|
139
|
+
}
|
|
140
|
+
return context;
|
|
141
|
+
}
|
|
142
|
+
rowToSummary(row) {
|
|
143
|
+
return {
|
|
144
|
+
id: row.id,
|
|
145
|
+
sessionId: row.sessionId,
|
|
146
|
+
request: row.request,
|
|
147
|
+
investigated: row.investigated,
|
|
148
|
+
learned: row.learned,
|
|
149
|
+
completed: row.completed,
|
|
150
|
+
nextSteps: row.nextSteps,
|
|
151
|
+
filesRead: row.filesRead ? JSON.parse(row.filesRead) : [],
|
|
152
|
+
filesEdited: row.filesEdited ? JSON.parse(row.filesEdited) : [],
|
|
153
|
+
timestamp: row.timestamp,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=SessionSummarizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionSummarizer.js","sourceRoot":"","sources":["../../../src/lib/memory/SessionSummarizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { MemoryStorage, MemoryItem } from './MemoryStorage.js';
|
|
2
2
|
export { KnowledgeGraph } from './KnowledgeGraph.js';
|
|
3
3
|
export { MemorySearch, SearchStrategy, SearchOptions } from './MemorySearch.js';
|
|
4
|
+
export { ObservationStore, Observation, ObservationInput, ObservationType } from './ObservationStore.js';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/memory/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/memory/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/lib/memory/index.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
export { MemoryStorage } from './MemoryStorage.js';
|
|
4
4
|
export { KnowledgeGraph } from './KnowledgeGraph.js';
|
|
5
5
|
export { MemorySearch } from './MemorySearch.js';
|
|
6
|
+
export { ObservationStore } from './ObservationStore.js';
|
|
6
7
|
// Re-export MemoryManager facade from parent for backward compatibility
|
|
7
8
|
// Note: MemoryManager is in parent directory, import it from there
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/memory/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,mEAAmE;AAEnE,OAAO,EAAE,aAAa,EAAc,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAiC,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/memory/index.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,mEAAmE;AAEnE,OAAO,EAAE,aAAa,EAAc,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAiC,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAkD,MAAM,uBAAuB,CAAC;AAEzG,wEAAwE;AACxE,mEAAmE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ToolResult, ToolDefinition } from '../../types/tool.js';
|
|
2
|
+
import { ObservationType } from '../../lib/memory/ObservationStore.js';
|
|
3
|
+
export declare const addObservationDefinition: ToolDefinition;
|
|
4
|
+
interface AddObservationArgs {
|
|
5
|
+
type: ObservationType;
|
|
6
|
+
title: string;
|
|
7
|
+
narrative?: string;
|
|
8
|
+
facts?: string[];
|
|
9
|
+
concepts?: string[];
|
|
10
|
+
filesModified?: string[];
|
|
11
|
+
sessionId?: string;
|
|
12
|
+
projectPath?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function addObservation(args: AddObservationArgs): Promise<ToolResult>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=addObservation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addObservation.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/addObservation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,eAAO,MAAM,wBAAwB,EAAE,cAyCtC,CAAC;AAEF,UAAU,kBAAkB;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyBlF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// Tool for manually adding structured observations
|
|
2
|
+
import { MemoryManager } from '../../lib/MemoryManager.js';
|
|
3
|
+
export const addObservationDefinition = {
|
|
4
|
+
name: 'add_observation',
|
|
5
|
+
description: 'Record a structured observation (decision, bugfix, feature, refactor, discovery)',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
type: {
|
|
10
|
+
type: 'string',
|
|
11
|
+
description: 'Observation type',
|
|
12
|
+
enum: ['decision', 'bugfix', 'feature', 'refactor', 'discovery']
|
|
13
|
+
},
|
|
14
|
+
title: { type: 'string', description: 'Short title for the observation' },
|
|
15
|
+
narrative: { type: 'string', description: 'Detailed description' },
|
|
16
|
+
facts: {
|
|
17
|
+
type: 'array',
|
|
18
|
+
items: { type: 'string' },
|
|
19
|
+
description: 'Key facts as bullet points'
|
|
20
|
+
},
|
|
21
|
+
concepts: {
|
|
22
|
+
type: 'array',
|
|
23
|
+
items: { type: 'string' },
|
|
24
|
+
description: 'Tags/categories for this observation'
|
|
25
|
+
},
|
|
26
|
+
filesModified: {
|
|
27
|
+
type: 'array',
|
|
28
|
+
items: { type: 'string' },
|
|
29
|
+
description: 'Files modified in this observation'
|
|
30
|
+
},
|
|
31
|
+
sessionId: { type: 'string', description: 'Session identifier' },
|
|
32
|
+
projectPath: { type: 'string', description: 'Project directory path' }
|
|
33
|
+
},
|
|
34
|
+
required: ['type', 'title']
|
|
35
|
+
},
|
|
36
|
+
annotations: {
|
|
37
|
+
title: 'Add Observation',
|
|
38
|
+
audience: ['assistant'],
|
|
39
|
+
readOnlyHint: false,
|
|
40
|
+
destructiveHint: false,
|
|
41
|
+
idempotentHint: false,
|
|
42
|
+
openWorldHint: false
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
export async function addObservation(args) {
|
|
46
|
+
try {
|
|
47
|
+
const mm = MemoryManager.getInstance(args.projectPath);
|
|
48
|
+
const id = mm.addObservation({
|
|
49
|
+
type: args.type,
|
|
50
|
+
title: args.title,
|
|
51
|
+
narrative: args.narrative,
|
|
52
|
+
facts: args.facts,
|
|
53
|
+
concepts: args.concepts,
|
|
54
|
+
filesModified: args.filesModified,
|
|
55
|
+
sessionId: args.sessionId,
|
|
56
|
+
projectPath: args.projectPath,
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
content: [{
|
|
60
|
+
type: 'text',
|
|
61
|
+
text: `Observation #${id} recorded: [${args.type}] ${args.title}`
|
|
62
|
+
}]
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
return {
|
|
67
|
+
content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : 'Unknown error'}` }]
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=addObservation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addObservation.js","sourceRoot":"","sources":["../../../src/tools/memory/addObservation.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAI3D,MAAM,CAAC,MAAM,wBAAwB,GAAmB;IACtD,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,kFAAkF;IAC/F,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC;aACjE;YACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;YACzE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;YAClE,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,4BAA4B;aAC1C;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,sCAAsC;aACpD;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,oCAAoC;aAClD;YACD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;YAChE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;SACvE;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;KAC5B;IACD,WAAW,EAAE;QACX,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,CAAC,WAAW,CAAC;QACvB,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;KACrB;CACF,CAAC;AAaF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAwB;IAC3D,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,gBAAgB,EAAE,eAAe,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;iBAClE,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC;SACxG,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -16,4 +16,6 @@ export { createMemoryTimeline } from './createMemoryTimeline.js';
|
|
|
16
16
|
export { restoreSessionContext } from './restoreSessionContext.js';
|
|
17
17
|
export { prioritizeMemory } from './prioritizeMemory.js';
|
|
18
18
|
export { getSessionContext } from './getSessionContext.js';
|
|
19
|
+
export { addObservation } from './addObservation.js';
|
|
20
|
+
export { searchObservations } from './searchObservations.js';
|
|
19
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -16,4 +16,6 @@ export { createMemoryTimeline } from './createMemoryTimeline.js';
|
|
|
16
16
|
export { restoreSessionContext } from './restoreSessionContext.js';
|
|
17
17
|
export { prioritizeMemory } from './prioritizeMemory.js';
|
|
18
18
|
export { getSessionContext } from './getSessionContext.js';
|
|
19
|
+
export { addObservation } from './addObservation.js';
|
|
20
|
+
export { searchObservations } from './searchObservations.js';
|
|
19
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/memory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/memory/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchMemoriesAdvanced.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/searchMemoriesAdvanced.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGjF,eAAO,MAAM,gCAAgC,EAAE,
|
|
1
|
+
{"version":3,"file":"searchMemoriesAdvanced.d.ts","sourceRoot":"","sources":["../../../src/tools/memory/searchMemoriesAdvanced.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGjF,eAAO,MAAM,gCAAgC,EAAE,cAgE9C,CAAC;AAEF,UAAU,0BAA0B;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,UAAU,CAAC,CAyFlG"}
|
|
@@ -7,11 +7,12 @@ export const searchMemoriesAdvancedDefinition = {
|
|
|
7
7
|
Keywords: advanced search, find memories, smart search
|
|
8
8
|
|
|
9
9
|
**Search strategies:**
|
|
10
|
-
- keyword: Traditional keyword search
|
|
10
|
+
- keyword: Traditional keyword search (FTS5 enhanced)
|
|
11
|
+
- fulltext: Full-text search with bm25 ranking (FTS5)
|
|
11
12
|
- graph_traversal: Graph-based related memory exploration
|
|
12
13
|
- temporal: Sort by time
|
|
13
14
|
- priority: Priority-based
|
|
14
|
-
- context_aware: Combined strategy (
|
|
15
|
+
- context_aware: Combined strategy (FTS5 rank + priority + recency)
|
|
15
16
|
|
|
16
17
|
Usage examples:
|
|
17
18
|
- "advanced search for authentication-related memories"
|
|
@@ -26,7 +27,7 @@ Usage examples:
|
|
|
26
27
|
strategy: {
|
|
27
28
|
type: 'string',
|
|
28
29
|
description: 'Search strategy',
|
|
29
|
-
enum: ['keyword', 'graph_traversal', 'temporal', 'priority', 'context_aware']
|
|
30
|
+
enum: ['keyword', 'fulltext', 'graph_traversal', 'temporal', 'priority', 'context_aware']
|
|
30
31
|
},
|
|
31
32
|
limit: {
|
|
32
33
|
type: 'number',
|
|
@@ -140,11 +141,12 @@ Try a different search strategy:
|
|
|
140
141
|
}
|
|
141
142
|
function getStrategyDescription(strategy) {
|
|
142
143
|
const descriptions = {
|
|
143
|
-
keyword: 'Keyword matching',
|
|
144
|
+
keyword: 'Keyword matching (FTS5 enhanced)',
|
|
145
|
+
fulltext: 'Full-text search with bm25 ranking',
|
|
144
146
|
graph_traversal: 'Graph traversal',
|
|
145
147
|
temporal: 'Time-based sorting',
|
|
146
148
|
priority: 'Priority-based',
|
|
147
|
-
context_aware: 'Combined strategy (
|
|
149
|
+
context_aware: 'Combined strategy (FTS5 rank + priority + recency)'
|
|
148
150
|
};
|
|
149
151
|
return descriptions[strategy] || strategy;
|
|
150
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchMemoriesAdvanced.js","sourceRoot":"","sources":["../../../src/tools/memory/searchMemoriesAdvanced.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,CAAC,MAAM,gCAAgC,GAAmB;IAC9D,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"searchMemoriesAdvanced.js","sourceRoot":"","sources":["../../../src/tools/memory/searchMemoriesAdvanced.ts"],"names":[],"mappings":"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"}
|