memctx 1.0.0
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/LICENSE +21 -0
- package/README.md +289 -0
- package/dist/bin/claudectx.d.ts +2 -0
- package/dist/bin/claudectx.js +304 -0
- package/dist/bin/claudectx.js.map +1 -0
- package/dist/installer/daemon.d.ts +3 -0
- package/dist/installer/daemon.js +80 -0
- package/dist/installer/daemon.js.map +1 -0
- package/dist/installer/patch-settings.d.ts +2 -0
- package/dist/installer/patch-settings.js +83 -0
- package/dist/installer/patch-settings.js.map +1 -0
- package/dist/src/api/consolidate.d.ts +3 -0
- package/dist/src/api/consolidate.js +29 -0
- package/dist/src/api/consolidate.js.map +1 -0
- package/dist/src/api/context.d.ts +1 -0
- package/dist/src/api/context.js +26 -0
- package/dist/src/api/context.js.map +1 -0
- package/dist/src/api/force-end-session.d.ts +2 -0
- package/dist/src/api/force-end-session.js +60 -0
- package/dist/src/api/force-end-session.js.map +1 -0
- package/dist/src/api/health.d.ts +1 -0
- package/dist/src/api/health.js +27 -0
- package/dist/src/api/health.js.map +1 -0
- package/dist/src/api/hook.d.ts +2 -0
- package/dist/src/api/hook.js +187 -0
- package/dist/src/api/hook.js.map +1 -0
- package/dist/src/api/logs.d.ts +2 -0
- package/dist/src/api/logs.js +66 -0
- package/dist/src/api/logs.js.map +1 -0
- package/dist/src/api/memory.d.ts +2 -0
- package/dist/src/api/memory.js +93 -0
- package/dist/src/api/memory.js.map +1 -0
- package/dist/src/api/metrics.d.ts +3 -0
- package/dist/src/api/metrics.js +58 -0
- package/dist/src/api/metrics.js.map +1 -0
- package/dist/src/api/observations.d.ts +1 -0
- package/dist/src/api/observations.js +31 -0
- package/dist/src/api/observations.js.map +1 -0
- package/dist/src/api/projects.d.ts +1 -0
- package/dist/src/api/projects.js +29 -0
- package/dist/src/api/projects.js.map +1 -0
- package/dist/src/api/resync.d.ts +3 -0
- package/dist/src/api/resync.js +188 -0
- package/dist/src/api/resync.js.map +1 -0
- package/dist/src/api/search.d.ts +1 -0
- package/dist/src/api/search.js +36 -0
- package/dist/src/api/search.js.map +1 -0
- package/dist/src/api/sessions.d.ts +1 -0
- package/dist/src/api/sessions.js +137 -0
- package/dist/src/api/sessions.js.map +1 -0
- package/dist/src/api/settings.d.ts +2 -0
- package/dist/src/api/settings.js +90 -0
- package/dist/src/api/settings.js.map +1 -0
- package/dist/src/api/tags.d.ts +1 -0
- package/dist/src/api/tags.js +89 -0
- package/dist/src/api/tags.js.map +1 -0
- package/dist/src/config.d.ts +17 -0
- package/dist/src/config.js +39 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/db/client.d.ts +3 -0
- package/dist/src/db/client.js +38 -0
- package/dist/src/db/client.js.map +1 -0
- package/dist/src/db/migrate.d.ts +1 -0
- package/dist/src/db/migrate.js +56 -0
- package/dist/src/db/migrate.js.map +1 -0
- package/dist/src/db/migrations/001_add_memory_tables.sql +149 -0
- package/dist/src/db/migrations/002_add_project_id_to_memory.sql +25 -0
- package/dist/src/db/migrations/003_enhance_sessions_schema.sql +27 -0
- package/dist/src/db/migrations/004_add_bookmarks.sql +5 -0
- package/dist/src/db/migrations/005_add_tags.sql +21 -0
- package/dist/src/db/migrations/006_add_notes.sql +2 -0
- package/dist/src/db/migrations/007_add_archived.sql +2 -0
- package/dist/src/db/queries.d.ts +104 -0
- package/dist/src/db/queries.js +432 -0
- package/dist/src/db/queries.js.map +1 -0
- package/dist/src/db/schema.d.ts +1 -0
- package/dist/src/db/schema.js +81 -0
- package/dist/src/db/schema.js.map +1 -0
- package/dist/src/hooks/post-tool-use.d.ts +1 -0
- package/dist/src/hooks/post-tool-use.js +23 -0
- package/dist/src/hooks/post-tool-use.js.map +1 -0
- package/dist/src/hooks/pre-compact.d.ts +1 -0
- package/dist/src/hooks/pre-compact.js +18 -0
- package/dist/src/hooks/pre-compact.js.map +1 -0
- package/dist/src/hooks/session-end.d.ts +1 -0
- package/dist/src/hooks/session-end.js +20 -0
- package/dist/src/hooks/session-end.js.map +1 -0
- package/dist/src/hooks/session-start.d.ts +1 -0
- package/dist/src/hooks/session-start.js +32 -0
- package/dist/src/hooks/session-start.js.map +1 -0
- package/dist/src/hooks/stop.d.ts +1 -0
- package/dist/src/hooks/stop.js +22 -0
- package/dist/src/hooks/stop.js.map +1 -0
- package/dist/src/hooks/user-prompt-submit.d.ts +1 -0
- package/dist/src/hooks/user-prompt-submit.js +18 -0
- package/dist/src/hooks/user-prompt-submit.js.map +1 -0
- package/dist/src/hooks/utils.d.ts +3 -0
- package/dist/src/hooks/utils.js +96 -0
- package/dist/src/hooks/utils.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +92 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/services/auto-summarizer.d.ts +5 -0
- package/dist/src/services/auto-summarizer.js +50 -0
- package/dist/src/services/auto-summarizer.js.map +1 -0
- package/dist/src/services/claude-md-updater.d.ts +1 -0
- package/dist/src/services/claude-md-updater.js +43 -0
- package/dist/src/services/claude-md-updater.js.map +1 -0
- package/dist/src/services/context-builder.d.ts +1 -0
- package/dist/src/services/context-builder.js +97 -0
- package/dist/src/services/context-builder.js.map +1 -0
- package/dist/src/services/fuzzy-task-matcher.d.ts +37 -0
- package/dist/src/services/fuzzy-task-matcher.js +96 -0
- package/dist/src/services/fuzzy-task-matcher.js.map +1 -0
- package/dist/src/services/logger.d.ts +20 -0
- package/dist/src/services/logger.js +43 -0
- package/dist/src/services/logger.js.map +1 -0
- package/dist/src/services/memory-consolidator.d.ts +32 -0
- package/dist/src/services/memory-consolidator.js +192 -0
- package/dist/src/services/memory-consolidator.js.map +1 -0
- package/dist/src/services/memory-decay.d.ts +16 -0
- package/dist/src/services/memory-decay.js +79 -0
- package/dist/src/services/memory-decay.js.map +1 -0
- package/dist/src/services/metrics.d.ts +58 -0
- package/dist/src/services/metrics.js +100 -0
- package/dist/src/services/metrics.js.map +1 -0
- package/dist/src/services/project-detector.d.ts +5 -0
- package/dist/src/services/project-detector.js +43 -0
- package/dist/src/services/project-detector.js.map +1 -0
- package/dist/src/services/queue.d.ts +2 -0
- package/dist/src/services/queue.js +16 -0
- package/dist/src/services/queue.js.map +1 -0
- package/dist/src/services/session-timeout.d.ts +1 -0
- package/dist/src/services/session-timeout.js +50 -0
- package/dist/src/services/session-timeout.js.map +1 -0
- package/dist/src/services/summarization-queue.d.ts +43 -0
- package/dist/src/services/summarization-queue.js +150 -0
- package/dist/src/services/summarization-queue.js.map +1 -0
- package/dist/src/services/summarizer.d.ts +2 -0
- package/dist/src/services/summarizer.js +239 -0
- package/dist/src/services/summarizer.js.map +1 -0
- package/dist/src/services/transcript-reader.d.ts +9 -0
- package/dist/src/services/transcript-reader.js +50 -0
- package/dist/src/services/transcript-reader.js.map +1 -0
- package/dist/src/services/watcher.d.ts +1 -0
- package/dist/src/services/watcher.js +34 -0
- package/dist/src/services/watcher.js.map +1 -0
- package/dist/src/ws/broadcast.d.ts +3 -0
- package/dist/src/ws/broadcast.js +24 -0
- package/dist/src/ws/broadcast.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
export declare const queries: {
|
|
2
|
+
upsertProject(p: {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
root_path: string;
|
|
6
|
+
git_remote: string | null;
|
|
7
|
+
}): void;
|
|
8
|
+
getProject(id: string): any;
|
|
9
|
+
getAllProjects(): any[];
|
|
10
|
+
getProjectWithSessions(id: string): any;
|
|
11
|
+
upsertSession(s: {
|
|
12
|
+
id: string;
|
|
13
|
+
project_id: string;
|
|
14
|
+
started_at: number;
|
|
15
|
+
status: string;
|
|
16
|
+
}): void;
|
|
17
|
+
updateSession(id: string, fields: Record<string, any>): void;
|
|
18
|
+
getSession(id: string): any;
|
|
19
|
+
deleteSession(id: string): void;
|
|
20
|
+
updateSessionBookmark(id: string, bookmarked: number): void;
|
|
21
|
+
updateSessionArchived(id: string, archived: number): void;
|
|
22
|
+
getSessions(opts: {
|
|
23
|
+
project_id?: string;
|
|
24
|
+
limit?: number;
|
|
25
|
+
offset?: number;
|
|
26
|
+
status?: string;
|
|
27
|
+
}): any[];
|
|
28
|
+
getActiveSessions(): any[];
|
|
29
|
+
getLastNCompletedSessions(project_id: string, n: number): any[];
|
|
30
|
+
getSessionWithObservations(id: string): any;
|
|
31
|
+
insertObservation(o: {
|
|
32
|
+
session_id: string;
|
|
33
|
+
project_id: string;
|
|
34
|
+
event_type: string;
|
|
35
|
+
tool_name?: string;
|
|
36
|
+
file_path?: string;
|
|
37
|
+
content?: string;
|
|
38
|
+
metadata?: string;
|
|
39
|
+
}): void;
|
|
40
|
+
incrementTurnStats(session_id: string, field: "turns" | "tool_calls"): void;
|
|
41
|
+
addFileTouched(session_id: string, file_path: string): void;
|
|
42
|
+
searchObservations(query: string, project_id?: string): any[];
|
|
43
|
+
getSetting(key: string): string | null;
|
|
44
|
+
setSetting(key: string, value: string): void;
|
|
45
|
+
getRecentActivity(days?: number): any[];
|
|
46
|
+
getPreferences(projectId?: string, category?: string): any[];
|
|
47
|
+
setPreference(category: string, key: string, value: string, confidence?: number, sessionId?: string, projectId?: string): void;
|
|
48
|
+
getKnowledge(category?: string, limit?: number, projectId?: string): any[];
|
|
49
|
+
addKnowledge(item: {
|
|
50
|
+
id: string;
|
|
51
|
+
category: string;
|
|
52
|
+
topic: string;
|
|
53
|
+
content: string;
|
|
54
|
+
confidence?: number;
|
|
55
|
+
sessionId?: string;
|
|
56
|
+
projectId?: string;
|
|
57
|
+
}): void;
|
|
58
|
+
getPatterns(type?: string, limit?: number, projectId?: string): any[];
|
|
59
|
+
addPattern(pattern: {
|
|
60
|
+
id: string;
|
|
61
|
+
type: string;
|
|
62
|
+
title: string;
|
|
63
|
+
description: string;
|
|
64
|
+
example?: string;
|
|
65
|
+
projectId?: string;
|
|
66
|
+
}): void;
|
|
67
|
+
incrementPatternSuccess(id: string): void;
|
|
68
|
+
getTasks(status?: string, projectId?: string): any[];
|
|
69
|
+
addTask(task: {
|
|
70
|
+
id: string;
|
|
71
|
+
title: string;
|
|
72
|
+
description?: string;
|
|
73
|
+
status?: string;
|
|
74
|
+
priority?: string;
|
|
75
|
+
projectId?: string;
|
|
76
|
+
sessionId?: string;
|
|
77
|
+
}): void;
|
|
78
|
+
updateTask(id: string, fields: {
|
|
79
|
+
status?: string;
|
|
80
|
+
priority?: string;
|
|
81
|
+
completedSessionId?: string;
|
|
82
|
+
}): void;
|
|
83
|
+
getContacts(projectId?: string, type?: string): any[];
|
|
84
|
+
addContact(contact: {
|
|
85
|
+
id: string;
|
|
86
|
+
name: string;
|
|
87
|
+
type: string;
|
|
88
|
+
role?: string;
|
|
89
|
+
email?: string;
|
|
90
|
+
metadata?: string;
|
|
91
|
+
projectId?: string;
|
|
92
|
+
}): void;
|
|
93
|
+
addInteraction(contactId: string, sessionId: string, type: string, context: string): void;
|
|
94
|
+
deletePreference(id: number): void;
|
|
95
|
+
deleteKnowledge(id: string): void;
|
|
96
|
+
deletePattern(id: string): void;
|
|
97
|
+
getTags(projectId: string): any[];
|
|
98
|
+
createTag(projectId: string, name: string, color?: string): number | bigint;
|
|
99
|
+
getSessionTags(sessionId: string): any[];
|
|
100
|
+
addSessionTag(sessionId: string, tagId: number): void;
|
|
101
|
+
removeSessionTag(sessionId: string, tagId: number): void;
|
|
102
|
+
deleteTag(tagId: number): void;
|
|
103
|
+
updateSessionNotes(sessionId: string, notes: string): void;
|
|
104
|
+
};
|
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queries = void 0;
|
|
4
|
+
const client_1 = require("./client");
|
|
5
|
+
function run(sql, ...params) {
|
|
6
|
+
const db = (0, client_1.getDB)();
|
|
7
|
+
const stmt = db.prepare(sql);
|
|
8
|
+
return stmt.run(...params);
|
|
9
|
+
}
|
|
10
|
+
function get(sql, ...params) {
|
|
11
|
+
const db = (0, client_1.getDB)();
|
|
12
|
+
const stmt = db.prepare(sql);
|
|
13
|
+
return stmt.get(...params) ?? null;
|
|
14
|
+
}
|
|
15
|
+
function all(sql, ...params) {
|
|
16
|
+
const db = (0, client_1.getDB)();
|
|
17
|
+
const stmt = db.prepare(sql);
|
|
18
|
+
return stmt.all(...params) ?? [];
|
|
19
|
+
}
|
|
20
|
+
exports.queries = {
|
|
21
|
+
upsertProject(p) {
|
|
22
|
+
run(`
|
|
23
|
+
INSERT INTO projects (id, name, root_path, git_remote, updated_at)
|
|
24
|
+
VALUES (?, ?, ?, ?, unixepoch())
|
|
25
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
26
|
+
name = excluded.name,
|
|
27
|
+
git_remote = excluded.git_remote,
|
|
28
|
+
updated_at = unixepoch()
|
|
29
|
+
`, p.id, p.name, p.root_path, p.git_remote);
|
|
30
|
+
},
|
|
31
|
+
getProject(id) {
|
|
32
|
+
return get('SELECT * FROM projects WHERE id = ?', id);
|
|
33
|
+
},
|
|
34
|
+
getAllProjects() {
|
|
35
|
+
return all(`
|
|
36
|
+
SELECT p.*,
|
|
37
|
+
COUNT(DISTINCT s.id) as session_count,
|
|
38
|
+
MAX(s.started_at) as last_session_at
|
|
39
|
+
FROM projects p
|
|
40
|
+
LEFT JOIN sessions s ON s.project_id = p.id
|
|
41
|
+
GROUP BY p.id
|
|
42
|
+
ORDER BY last_session_at DESC
|
|
43
|
+
`);
|
|
44
|
+
},
|
|
45
|
+
getProjectWithSessions(id) {
|
|
46
|
+
const project = get('SELECT * FROM projects WHERE id = ?', id);
|
|
47
|
+
if (!project)
|
|
48
|
+
return null;
|
|
49
|
+
const sessions = all(`
|
|
50
|
+
SELECT * FROM sessions WHERE project_id = ? ORDER BY started_at DESC LIMIT 50
|
|
51
|
+
`, id);
|
|
52
|
+
return { ...project, sessions };
|
|
53
|
+
},
|
|
54
|
+
upsertSession(s) {
|
|
55
|
+
run(`
|
|
56
|
+
INSERT INTO sessions (id, project_id, started_at, status)
|
|
57
|
+
VALUES (?, ?, ?, ?)
|
|
58
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
59
|
+
status = excluded.status
|
|
60
|
+
`, s.id, s.project_id, s.started_at, s.status);
|
|
61
|
+
},
|
|
62
|
+
updateSession(id, fields) {
|
|
63
|
+
const keys = Object.keys(fields);
|
|
64
|
+
if (keys.length === 0)
|
|
65
|
+
return;
|
|
66
|
+
let attempts = 0;
|
|
67
|
+
while (attempts < 3) {
|
|
68
|
+
try {
|
|
69
|
+
const setClauses = keys.map(k => `${k} = ?`).join(', ');
|
|
70
|
+
const values = keys.map(k => fields[k]);
|
|
71
|
+
run(`UPDATE sessions SET ${setClauses} WHERE id = ?`, ...values, id);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
if (err.message?.includes('SQLITE_BUSY') && attempts < 2) {
|
|
76
|
+
attempts++;
|
|
77
|
+
const start = Date.now();
|
|
78
|
+
while (Date.now() - start < 100) { }
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
throw err;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
getSession(id) {
|
|
87
|
+
return get('SELECT * FROM sessions WHERE id = ?', id);
|
|
88
|
+
},
|
|
89
|
+
deleteSession(id) {
|
|
90
|
+
// Delete all related data first
|
|
91
|
+
run('DELETE FROM observations WHERE session_id = ?', id);
|
|
92
|
+
run('DELETE FROM preferences WHERE source_session_id = ?', id);
|
|
93
|
+
run('DELETE FROM knowledge_items WHERE source_session_id = ?', id);
|
|
94
|
+
run('DELETE FROM tasks WHERE created_session_id = ? OR completed_session_id = ?', id, id);
|
|
95
|
+
// learned_patterns and contacts don't have session_id columns, so skip them
|
|
96
|
+
// Finally delete the session
|
|
97
|
+
run('DELETE FROM sessions WHERE id = ?', id);
|
|
98
|
+
},
|
|
99
|
+
updateSessionBookmark(id, bookmarked) {
|
|
100
|
+
run('UPDATE sessions SET is_bookmarked = ? WHERE id = ?', bookmarked, id);
|
|
101
|
+
},
|
|
102
|
+
updateSessionArchived(id, archived) {
|
|
103
|
+
run('UPDATE sessions SET is_archived = ? WHERE id = ?', archived, id);
|
|
104
|
+
},
|
|
105
|
+
getSessions(opts) {
|
|
106
|
+
const conditions = ['1=1'];
|
|
107
|
+
const params = [];
|
|
108
|
+
if (opts.project_id) {
|
|
109
|
+
conditions.push('project_id = ?');
|
|
110
|
+
params.push(opts.project_id);
|
|
111
|
+
}
|
|
112
|
+
if (opts.status) {
|
|
113
|
+
conditions.push('status = ?');
|
|
114
|
+
params.push(opts.status);
|
|
115
|
+
}
|
|
116
|
+
params.push(opts.limit ?? 20, opts.offset ?? 0);
|
|
117
|
+
return all(`SELECT * FROM sessions WHERE ${conditions.join(' AND ')} ORDER BY started_at DESC LIMIT ? OFFSET ?`, ...params);
|
|
118
|
+
},
|
|
119
|
+
getActiveSessions() {
|
|
120
|
+
return all(`
|
|
121
|
+
SELECT * FROM sessions
|
|
122
|
+
WHERE status = 'active' OR (status IS NULL AND ended_at IS NULL)
|
|
123
|
+
ORDER BY started_at DESC
|
|
124
|
+
`);
|
|
125
|
+
},
|
|
126
|
+
getLastNCompletedSessions(project_id, n) {
|
|
127
|
+
return all(`
|
|
128
|
+
SELECT * FROM sessions
|
|
129
|
+
WHERE project_id = ?
|
|
130
|
+
AND status IN ('completed', 'compacted')
|
|
131
|
+
AND summary_title IS NOT NULL
|
|
132
|
+
ORDER BY started_at DESC
|
|
133
|
+
LIMIT ?
|
|
134
|
+
`, project_id, n);
|
|
135
|
+
},
|
|
136
|
+
getSessionWithObservations(id) {
|
|
137
|
+
const session = get('SELECT * FROM sessions WHERE id = ?', id);
|
|
138
|
+
if (!session)
|
|
139
|
+
return null;
|
|
140
|
+
const observations = all('SELECT * FROM observations WHERE session_id = ? ORDER BY created_at ASC', id);
|
|
141
|
+
return { ...session, observations };
|
|
142
|
+
},
|
|
143
|
+
insertObservation(o) {
|
|
144
|
+
run(`
|
|
145
|
+
INSERT INTO observations (session_id, project_id, event_type, tool_name, file_path, content, metadata)
|
|
146
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
147
|
+
`, o.session_id, o.project_id, o.event_type, o.tool_name ?? null, o.file_path ?? null, o.content ?? null, o.metadata ?? '{}');
|
|
148
|
+
},
|
|
149
|
+
incrementTurnStats(session_id, field) {
|
|
150
|
+
const col = field === 'turns' ? 'total_turns' : 'total_tool_calls';
|
|
151
|
+
run(`UPDATE sessions SET ${col} = COALESCE(${col}, 0) + 1 WHERE id = ?`, session_id);
|
|
152
|
+
},
|
|
153
|
+
addFileTouched(session_id, file_path) {
|
|
154
|
+
const session = get('SELECT files_touched FROM sessions WHERE id = ?', session_id);
|
|
155
|
+
if (!session)
|
|
156
|
+
return;
|
|
157
|
+
let files = [];
|
|
158
|
+
try {
|
|
159
|
+
files = JSON.parse(session.files_touched || '[]');
|
|
160
|
+
}
|
|
161
|
+
catch { }
|
|
162
|
+
if (!files.includes(file_path)) {
|
|
163
|
+
files.push(file_path);
|
|
164
|
+
run('UPDATE sessions SET files_touched = ? WHERE id = ?', JSON.stringify(files), session_id);
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
searchObservations(query, project_id) {
|
|
168
|
+
if (project_id) {
|
|
169
|
+
return all(`
|
|
170
|
+
SELECT o.*, s.summary_title as session_title, p.name as project_name,
|
|
171
|
+
rank as relevance_rank
|
|
172
|
+
FROM obs_fts
|
|
173
|
+
JOIN observations o ON obs_fts.rowid = o.id
|
|
174
|
+
JOIN sessions s ON o.session_id = s.id
|
|
175
|
+
JOIN projects p ON o.project_id = p.id
|
|
176
|
+
WHERE obs_fts MATCH ? AND o.project_id = ?
|
|
177
|
+
ORDER BY rank
|
|
178
|
+
LIMIT 50
|
|
179
|
+
`, query, project_id);
|
|
180
|
+
}
|
|
181
|
+
return all(`
|
|
182
|
+
SELECT o.*, s.summary_title as session_title, p.name as project_name,
|
|
183
|
+
rank as relevance_rank
|
|
184
|
+
FROM obs_fts
|
|
185
|
+
JOIN observations o ON obs_fts.rowid = o.id
|
|
186
|
+
JOIN sessions s ON o.session_id = s.id
|
|
187
|
+
JOIN projects p ON o.project_id = p.id
|
|
188
|
+
WHERE obs_fts MATCH ?
|
|
189
|
+
ORDER BY rank
|
|
190
|
+
LIMIT 50
|
|
191
|
+
`, query);
|
|
192
|
+
},
|
|
193
|
+
getSetting(key) {
|
|
194
|
+
const row = get('SELECT value FROM settings WHERE key = ?', key);
|
|
195
|
+
return row ? row.value : null;
|
|
196
|
+
},
|
|
197
|
+
setSetting(key, value) {
|
|
198
|
+
run('INSERT OR REPLACE INTO settings (key, value) VALUES (?, ?)', key, value);
|
|
199
|
+
},
|
|
200
|
+
getRecentActivity(days = 14) {
|
|
201
|
+
return all(`
|
|
202
|
+
SELECT date(started_at, 'unixepoch') as day, COUNT(*) as session_count
|
|
203
|
+
FROM sessions
|
|
204
|
+
WHERE started_at > unixepoch('now', '-${days} days')
|
|
205
|
+
GROUP BY day
|
|
206
|
+
ORDER BY day ASC
|
|
207
|
+
`);
|
|
208
|
+
},
|
|
209
|
+
// Memory System Queries
|
|
210
|
+
// Preferences
|
|
211
|
+
getPreferences(projectId, category) {
|
|
212
|
+
const conditions = [];
|
|
213
|
+
const params = [];
|
|
214
|
+
if (projectId) {
|
|
215
|
+
conditions.push('project_id = ?');
|
|
216
|
+
params.push(projectId);
|
|
217
|
+
}
|
|
218
|
+
if (category) {
|
|
219
|
+
conditions.push('category = ?');
|
|
220
|
+
params.push(category);
|
|
221
|
+
}
|
|
222
|
+
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
223
|
+
return all(`SELECT * FROM preferences ${where} ORDER BY category, key`, ...params);
|
|
224
|
+
},
|
|
225
|
+
setPreference(category, key, value, confidence = 1.0, sessionId, projectId) {
|
|
226
|
+
run(`
|
|
227
|
+
INSERT INTO preferences (category, key, value, confidence, source_session_id, project_id)
|
|
228
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
229
|
+
ON CONFLICT(category, key) DO UPDATE SET
|
|
230
|
+
value = excluded.value,
|
|
231
|
+
confidence = excluded.confidence,
|
|
232
|
+
source_session_id = excluded.source_session_id,
|
|
233
|
+
project_id = excluded.project_id,
|
|
234
|
+
updated_at = unixepoch()
|
|
235
|
+
`, category, key, value, confidence, sessionId ?? null, projectId ?? null);
|
|
236
|
+
},
|
|
237
|
+
// Knowledge
|
|
238
|
+
getKnowledge(category, limit = 10, projectId) {
|
|
239
|
+
const conditions = [];
|
|
240
|
+
const params = [];
|
|
241
|
+
if (projectId) {
|
|
242
|
+
conditions.push('project_id = ?');
|
|
243
|
+
params.push(projectId);
|
|
244
|
+
}
|
|
245
|
+
if (category) {
|
|
246
|
+
conditions.push('category = ?');
|
|
247
|
+
params.push(category);
|
|
248
|
+
}
|
|
249
|
+
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
250
|
+
params.push(limit);
|
|
251
|
+
return all(`
|
|
252
|
+
SELECT * FROM knowledge_items
|
|
253
|
+
${where}
|
|
254
|
+
ORDER BY confidence DESC, updated_at DESC
|
|
255
|
+
LIMIT ?
|
|
256
|
+
`, ...params);
|
|
257
|
+
},
|
|
258
|
+
addKnowledge(item) {
|
|
259
|
+
run(`
|
|
260
|
+
INSERT INTO knowledge_items (id, category, topic, content, confidence, source_session_id, project_id)
|
|
261
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
262
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
263
|
+
content = excluded.content,
|
|
264
|
+
confidence = excluded.confidence,
|
|
265
|
+
updated_at = unixepoch()
|
|
266
|
+
`, item.id, item.category, item.topic, item.content, item.confidence ?? 0.5, item.sessionId ?? null, item.projectId ?? null);
|
|
267
|
+
},
|
|
268
|
+
// Patterns
|
|
269
|
+
getPatterns(type, limit = 10, projectId) {
|
|
270
|
+
const conditions = [];
|
|
271
|
+
const params = [];
|
|
272
|
+
if (projectId) {
|
|
273
|
+
conditions.push('project_id = ?');
|
|
274
|
+
params.push(projectId);
|
|
275
|
+
}
|
|
276
|
+
if (type) {
|
|
277
|
+
conditions.push('pattern_type = ?');
|
|
278
|
+
params.push(type);
|
|
279
|
+
}
|
|
280
|
+
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
281
|
+
params.push(limit);
|
|
282
|
+
return all(`
|
|
283
|
+
SELECT * FROM learned_patterns
|
|
284
|
+
${where}
|
|
285
|
+
ORDER BY success_count DESC, last_used_at DESC
|
|
286
|
+
LIMIT ?
|
|
287
|
+
`, ...params);
|
|
288
|
+
},
|
|
289
|
+
addPattern(pattern) {
|
|
290
|
+
run(`
|
|
291
|
+
INSERT INTO learned_patterns (id, pattern_type, title, description, example, project_id)
|
|
292
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
293
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
294
|
+
description = excluded.description,
|
|
295
|
+
example = excluded.example,
|
|
296
|
+
updated_at = unixepoch()
|
|
297
|
+
`, pattern.id, pattern.type, pattern.title, pattern.description, pattern.example ?? null, pattern.projectId ?? null);
|
|
298
|
+
},
|
|
299
|
+
incrementPatternSuccess(id) {
|
|
300
|
+
run(`
|
|
301
|
+
UPDATE learned_patterns
|
|
302
|
+
SET success_count = success_count + 1, last_used_at = unixepoch()
|
|
303
|
+
WHERE id = ?
|
|
304
|
+
`, id);
|
|
305
|
+
},
|
|
306
|
+
// Tasks
|
|
307
|
+
getTasks(status, projectId) {
|
|
308
|
+
const conditions = ['1=1'];
|
|
309
|
+
const params = [];
|
|
310
|
+
if (status) {
|
|
311
|
+
conditions.push('status = ?');
|
|
312
|
+
params.push(status);
|
|
313
|
+
}
|
|
314
|
+
if (projectId) {
|
|
315
|
+
conditions.push('project_id = ?');
|
|
316
|
+
params.push(projectId);
|
|
317
|
+
}
|
|
318
|
+
return all(`
|
|
319
|
+
SELECT * FROM tasks
|
|
320
|
+
WHERE ${conditions.join(' AND ')}
|
|
321
|
+
ORDER BY
|
|
322
|
+
CASE priority
|
|
323
|
+
WHEN 'urgent' THEN 1
|
|
324
|
+
WHEN 'high' THEN 2
|
|
325
|
+
WHEN 'medium' THEN 3
|
|
326
|
+
ELSE 4
|
|
327
|
+
END,
|
|
328
|
+
created_at DESC
|
|
329
|
+
`, ...params);
|
|
330
|
+
},
|
|
331
|
+
addTask(task) {
|
|
332
|
+
run(`
|
|
333
|
+
INSERT INTO tasks (id, title, description, status, priority, project_id, created_session_id)
|
|
334
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
335
|
+
`, task.id, task.title, task.description ?? null, task.status ?? 'pending', task.priority ?? 'medium', task.projectId ?? null, task.sessionId ?? null);
|
|
336
|
+
},
|
|
337
|
+
updateTask(id, fields) {
|
|
338
|
+
const updates = [];
|
|
339
|
+
const params = [];
|
|
340
|
+
if (fields.status) {
|
|
341
|
+
updates.push('status = ?');
|
|
342
|
+
params.push(fields.status);
|
|
343
|
+
}
|
|
344
|
+
if (fields.priority) {
|
|
345
|
+
updates.push('priority = ?');
|
|
346
|
+
params.push(fields.priority);
|
|
347
|
+
}
|
|
348
|
+
if (fields.completedSessionId) {
|
|
349
|
+
updates.push('completed_session_id = ?');
|
|
350
|
+
params.push(fields.completedSessionId);
|
|
351
|
+
updates.push('completed_at = unixepoch()');
|
|
352
|
+
}
|
|
353
|
+
if (updates.length > 0) {
|
|
354
|
+
updates.push('updated_at = unixepoch()');
|
|
355
|
+
params.push(id);
|
|
356
|
+
run(`UPDATE tasks SET ${updates.join(', ')} WHERE id = ?`, ...params);
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
// Contacts
|
|
360
|
+
getContacts(projectId, type) {
|
|
361
|
+
const conditions = [];
|
|
362
|
+
const params = [];
|
|
363
|
+
if (projectId) {
|
|
364
|
+
conditions.push('project_id = ?');
|
|
365
|
+
params.push(projectId);
|
|
366
|
+
}
|
|
367
|
+
if (type) {
|
|
368
|
+
conditions.push('type = ?');
|
|
369
|
+
params.push(type);
|
|
370
|
+
}
|
|
371
|
+
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
372
|
+
return all(`SELECT * FROM contacts ${where} ORDER BY type, name`, ...params);
|
|
373
|
+
},
|
|
374
|
+
addContact(contact) {
|
|
375
|
+
run(`
|
|
376
|
+
INSERT INTO contacts (id, name, type, role, email, metadata, project_id)
|
|
377
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
378
|
+
ON CONFLICT(id) DO UPDATE SET
|
|
379
|
+
name = excluded.name,
|
|
380
|
+
role = excluded.role,
|
|
381
|
+
email = excluded.email,
|
|
382
|
+
metadata = excluded.metadata,
|
|
383
|
+
project_id = excluded.project_id,
|
|
384
|
+
updated_at = unixepoch()
|
|
385
|
+
`, contact.id, contact.name, contact.type, contact.role ?? null, contact.email ?? null, contact.metadata ?? null, contact.projectId ?? null);
|
|
386
|
+
},
|
|
387
|
+
addInteraction(contactId, sessionId, type, context) {
|
|
388
|
+
run(`
|
|
389
|
+
INSERT INTO interactions (contact_id, session_id, interaction_type, context)
|
|
390
|
+
VALUES (?, ?, ?, ?)
|
|
391
|
+
`, contactId, sessionId, type, context);
|
|
392
|
+
},
|
|
393
|
+
// Delete methods for consolidation
|
|
394
|
+
deletePreference(id) {
|
|
395
|
+
run('DELETE FROM preferences WHERE id = ?', id);
|
|
396
|
+
},
|
|
397
|
+
deleteKnowledge(id) {
|
|
398
|
+
run('DELETE FROM knowledge_items WHERE id = ?', id);
|
|
399
|
+
},
|
|
400
|
+
deletePattern(id) {
|
|
401
|
+
run('DELETE FROM learned_patterns WHERE id = ?', id);
|
|
402
|
+
},
|
|
403
|
+
// Tags
|
|
404
|
+
getTags(projectId) {
|
|
405
|
+
return all('SELECT * FROM tags WHERE project_id = ? ORDER BY name', projectId);
|
|
406
|
+
},
|
|
407
|
+
createTag(projectId, name, color) {
|
|
408
|
+
const result = run('INSERT INTO tags (project_id, name, color) VALUES (?, ?, ?) ON CONFLICT(project_id, name) DO UPDATE SET color = excluded.color RETURNING id', projectId, name, color ?? null);
|
|
409
|
+
return result.lastInsertRowid;
|
|
410
|
+
},
|
|
411
|
+
getSessionTags(sessionId) {
|
|
412
|
+
return all(`
|
|
413
|
+
SELECT t.* FROM tags t
|
|
414
|
+
JOIN session_tags st ON st.tag_id = t.id
|
|
415
|
+
WHERE st.session_id = ?
|
|
416
|
+
ORDER BY t.name
|
|
417
|
+
`, sessionId);
|
|
418
|
+
},
|
|
419
|
+
addSessionTag(sessionId, tagId) {
|
|
420
|
+
run('INSERT OR IGNORE INTO session_tags (session_id, tag_id) VALUES (?, ?)', sessionId, tagId);
|
|
421
|
+
},
|
|
422
|
+
removeSessionTag(sessionId, tagId) {
|
|
423
|
+
run('DELETE FROM session_tags WHERE session_id = ? AND tag_id = ?', sessionId, tagId);
|
|
424
|
+
},
|
|
425
|
+
deleteTag(tagId) {
|
|
426
|
+
run('DELETE FROM tags WHERE id = ?', tagId);
|
|
427
|
+
},
|
|
428
|
+
updateSessionNotes(sessionId, notes) {
|
|
429
|
+
run('UPDATE sessions SET notes = ? WHERE id = ?', notes, sessionId);
|
|
430
|
+
}
|
|
431
|
+
};
|
|
432
|
+
//# sourceMappingURL=queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/db/queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SCHEMA_SQL = "\nCREATE TABLE IF NOT EXISTS projects (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n root_path TEXT NOT NULL UNIQUE,\n git_remote TEXT,\n created_at INTEGER NOT NULL DEFAULT (unixepoch()),\n updated_at INTEGER NOT NULL DEFAULT (unixepoch())\n);\n\nCREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n project_id TEXT NOT NULL REFERENCES projects(id),\n started_at INTEGER NOT NULL DEFAULT (unixepoch()),\n ended_at INTEGER,\n transcript_path TEXT,\n status TEXT NOT NULL DEFAULT 'active',\n summary_title TEXT,\n summary_status TEXT,\n summary_what_we_did TEXT,\n summary_decisions TEXT,\n summary_files_changed TEXT,\n summary_next_steps TEXT,\n summary_gotchas TEXT,\n summary_tech_notes TEXT,\n summary_mood TEXT,\n summary_complexity TEXT,\n summary_blockers TEXT,\n summary_resolved TEXT,\n summary_key_insight TEXT,\n duration_seconds INTEGER,\n embedding_summary TEXT,\n total_turns INTEGER DEFAULT 0,\n total_tool_calls INTEGER DEFAULT 0,\n files_touched TEXT,\n tools_used TEXT,\n estimated_tokens INTEGER DEFAULT 0\n);\n\nCREATE TABLE IF NOT EXISTS observations (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n session_id TEXT NOT NULL REFERENCES sessions(id),\n project_id TEXT NOT NULL REFERENCES projects(id),\n event_type TEXT NOT NULL,\n tool_name TEXT,\n file_path TEXT,\n content TEXT,\n metadata TEXT,\n created_at INTEGER NOT NULL DEFAULT (unixepoch())\n);\n\nCREATE VIRTUAL TABLE IF NOT EXISTS obs_fts USING fts5(\n content,\n event_type,\n session_id UNINDEXED,\n project_id UNINDEXED,\n tokenize = 'porter ascii'\n);\n\nCREATE TRIGGER IF NOT EXISTS obs_ai AFTER INSERT ON observations BEGIN\n INSERT INTO obs_fts(rowid, content, event_type, session_id, project_id)\n VALUES (new.id, new.content, new.event_type, new.session_id, new.project_id);\nEND;\n\nCREATE TRIGGER IF NOT EXISTS obs_ad AFTER DELETE ON observations BEGIN\n DELETE FROM obs_fts WHERE rowid = old.id;\nEND;\n\nCREATE TABLE IF NOT EXISTS settings (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL\n);\n\nINSERT OR IGNORE INTO settings VALUES ('context_sessions', '3');\nINSERT OR IGNORE INTO settings VALUES ('api_key_set', 'false');\nINSERT OR IGNORE INTO settings VALUES ('summaries_enabled', 'true');\n";
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SCHEMA_SQL = void 0;
|
|
4
|
+
exports.SCHEMA_SQL = `
|
|
5
|
+
CREATE TABLE IF NOT EXISTS projects (
|
|
6
|
+
id TEXT PRIMARY KEY,
|
|
7
|
+
name TEXT NOT NULL,
|
|
8
|
+
root_path TEXT NOT NULL UNIQUE,
|
|
9
|
+
git_remote TEXT,
|
|
10
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
11
|
+
updated_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
15
|
+
id TEXT PRIMARY KEY,
|
|
16
|
+
project_id TEXT NOT NULL REFERENCES projects(id),
|
|
17
|
+
started_at INTEGER NOT NULL DEFAULT (unixepoch()),
|
|
18
|
+
ended_at INTEGER,
|
|
19
|
+
transcript_path TEXT,
|
|
20
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
21
|
+
summary_title TEXT,
|
|
22
|
+
summary_status TEXT,
|
|
23
|
+
summary_what_we_did TEXT,
|
|
24
|
+
summary_decisions TEXT,
|
|
25
|
+
summary_files_changed TEXT,
|
|
26
|
+
summary_next_steps TEXT,
|
|
27
|
+
summary_gotchas TEXT,
|
|
28
|
+
summary_tech_notes TEXT,
|
|
29
|
+
summary_mood TEXT,
|
|
30
|
+
summary_complexity TEXT,
|
|
31
|
+
summary_blockers TEXT,
|
|
32
|
+
summary_resolved TEXT,
|
|
33
|
+
summary_key_insight TEXT,
|
|
34
|
+
duration_seconds INTEGER,
|
|
35
|
+
embedding_summary TEXT,
|
|
36
|
+
total_turns INTEGER DEFAULT 0,
|
|
37
|
+
total_tool_calls INTEGER DEFAULT 0,
|
|
38
|
+
files_touched TEXT,
|
|
39
|
+
tools_used TEXT,
|
|
40
|
+
estimated_tokens INTEGER DEFAULT 0
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
CREATE TABLE IF NOT EXISTS observations (
|
|
44
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
45
|
+
session_id TEXT NOT NULL REFERENCES sessions(id),
|
|
46
|
+
project_id TEXT NOT NULL REFERENCES projects(id),
|
|
47
|
+
event_type TEXT NOT NULL,
|
|
48
|
+
tool_name TEXT,
|
|
49
|
+
file_path TEXT,
|
|
50
|
+
content TEXT,
|
|
51
|
+
metadata TEXT,
|
|
52
|
+
created_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS obs_fts USING fts5(
|
|
56
|
+
content,
|
|
57
|
+
event_type,
|
|
58
|
+
session_id UNINDEXED,
|
|
59
|
+
project_id UNINDEXED,
|
|
60
|
+
tokenize = 'porter ascii'
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
CREATE TRIGGER IF NOT EXISTS obs_ai AFTER INSERT ON observations BEGIN
|
|
64
|
+
INSERT INTO obs_fts(rowid, content, event_type, session_id, project_id)
|
|
65
|
+
VALUES (new.id, new.content, new.event_type, new.session_id, new.project_id);
|
|
66
|
+
END;
|
|
67
|
+
|
|
68
|
+
CREATE TRIGGER IF NOT EXISTS obs_ad AFTER DELETE ON observations BEGIN
|
|
69
|
+
DELETE FROM obs_fts WHERE rowid = old.id;
|
|
70
|
+
END;
|
|
71
|
+
|
|
72
|
+
CREATE TABLE IF NOT EXISTS settings (
|
|
73
|
+
key TEXT PRIMARY KEY,
|
|
74
|
+
value TEXT NOT NULL
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
INSERT OR IGNORE INTO settings VALUES ('context_sessions', '3');
|
|
78
|
+
INSERT OR IGNORE INTO settings VALUES ('api_key_set', 'false');
|
|
79
|
+
INSERT OR IGNORE INTO settings VALUES ('summaries_enabled', 'true');
|
|
80
|
+
`;
|
|
81
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/db/schema.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4EzB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("./utils");
|
|
4
|
+
async function main() {
|
|
5
|
+
const input = await (0, utils_1.readStdin)();
|
|
6
|
+
try {
|
|
7
|
+
await (0, utils_1.postToWorker)('/api/hook', {
|
|
8
|
+
event: 'PostToolUse',
|
|
9
|
+
session_id: input.session_id,
|
|
10
|
+
cwd: input.cwd,
|
|
11
|
+
tool_name: input.tool_name,
|
|
12
|
+
file_path: input.tool_input?.file_path || input.tool_input?.path || null,
|
|
13
|
+
command: input.tool_input?.command?.slice(0, 200) || null,
|
|
14
|
+
success: !input.tool_response?.error
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// Never block Claude Code
|
|
19
|
+
}
|
|
20
|
+
process.exit(0);
|
|
21
|
+
}
|
|
22
|
+
main();
|
|
23
|
+
//# sourceMappingURL=post-tool-use.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../../src/hooks/post-tool-use.ts"],"names":[],"mappings":";;AAAA,mCAAiD;AAEjD,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,MAAM,IAAA,iBAAS,GAAE,CAAA;IAE/B,IAAI,CAAC;QACH,MAAM,IAAA,oBAAY,EAAC,WAAW,EAAE;YAC9B,KAAK,EAAE,aAAa;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,IAAI;YACxE,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI;YACzD,OAAO,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK;SACrC,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,IAAI,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|