openhorse 0.2.6 → 0.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +49 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/core/checkpoint.d.ts +42 -0
- package/dist/core/checkpoint.d.ts.map +1 -0
- package/dist/core/checkpoint.js +222 -0
- package/dist/core/checkpoint.js.map +1 -0
- package/dist/core/tool-artifacts.d.ts.map +1 -1
- package/dist/core/tool-artifacts.js +19 -15
- package/dist/core/tool-artifacts.js.map +1 -1
- package/dist/framework/index.d.ts +1 -0
- package/dist/framework/index.d.ts.map +1 -1
- package/dist/framework/index.js +5 -1
- package/dist/framework/index.js.map +1 -1
- package/dist/framework/tool-serializer.d.ts +21 -0
- package/dist/framework/tool-serializer.d.ts.map +1 -0
- package/dist/framework/tool-serializer.js +68 -0
- package/dist/framework/tool-serializer.js.map +1 -0
- package/dist/framework/tool.d.ts +5 -1
- package/dist/framework/tool.d.ts.map +1 -1
- package/dist/framework/tool.js.map +1 -1
- package/dist/harness/context-harness.d.ts.map +1 -1
- package/dist/harness/context-harness.js +5 -0
- package/dist/harness/context-harness.js.map +1 -1
- package/dist/harness/evidence.d.ts +5 -0
- package/dist/harness/evidence.d.ts.map +1 -1
- package/dist/harness/evidence.js +23 -0
- package/dist/harness/evidence.js.map +1 -1
- package/dist/harness/index.d.ts +1 -1
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +2 -1
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/intent.d.ts.map +1 -1
- package/dist/harness/intent.js +8 -0
- package/dist/harness/intent.js.map +1 -1
- package/dist/harness/types.d.ts +4 -1
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/memory/storage.d.ts +2 -0
- package/dist/memory/storage.d.ts.map +1 -1
- package/dist/memory/storage.js +56 -32
- package/dist/memory/storage.js.map +1 -1
- package/dist/memory/vector-store.d.ts +23 -3
- package/dist/memory/vector-store.d.ts.map +1 -1
- package/dist/memory/vector-store.js +107 -37
- package/dist/memory/vector-store.js.map +1 -1
- package/dist/services/concurrent-sessions.d.ts.map +1 -1
- package/dist/services/concurrent-sessions.js +6 -7
- package/dist/services/concurrent-sessions.js.map +1 -1
- package/dist/services/config-dir.d.ts +29 -6
- package/dist/services/config-dir.d.ts.map +1 -1
- package/dist/services/config-dir.js +118 -17
- package/dist/services/config-dir.js.map +1 -1
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +137 -0
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/session-storage.d.ts.map +1 -1
- package/dist/services/session-storage.js +42 -89
- package/dist/services/session-storage.js.map +1 -1
- package/dist/services/storage-maintenance.d.ts +53 -0
- package/dist/services/storage-maintenance.d.ts.map +1 -0
- package/dist/services/storage-maintenance.js +375 -0
- package/dist/services/storage-maintenance.js.map +1 -0
- package/dist/tools/index.js +9 -9
- package/dist/tools/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.collectStorageReport = collectStorageReport;
|
|
7
|
+
exports.cleanupStorage = cleanupStorage;
|
|
8
|
+
exports.repairProjectMetadata = repairProjectMetadata;
|
|
9
|
+
exports.formatStorageReport = formatStorageReport;
|
|
10
|
+
exports.formatStorageCleanupResult = formatStorageCleanupResult;
|
|
11
|
+
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
12
|
+
const fs_1 = require("fs");
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const config_dir_1 = require("./config-dir");
|
|
15
|
+
const HASH_PROJECT_RE = /^[a-f0-9]{16}$/;
|
|
16
|
+
const TEMP_PROJECT_RE = /^(private-tmp-|private-var-folders-.*openhorse-|tmp-openhorse-|test-project$)/;
|
|
17
|
+
function collectStorageReport() {
|
|
18
|
+
const configHome = (0, config_dir_1.getConfigHome)();
|
|
19
|
+
const projectsDir = (0, config_dir_1.getProjectsDir)();
|
|
20
|
+
const projects = listProjectSummaries(projectsDir);
|
|
21
|
+
const validProjectKeys = new Set(projects
|
|
22
|
+
.filter(project => !HASH_PROJECT_RE.test(project.projectKey) && !TEMP_PROJECT_RE.test(project.projectKey))
|
|
23
|
+
.map(project => project.projectKey));
|
|
24
|
+
const vectorProjects = inspectVectorProjects(configHome, validProjectKeys);
|
|
25
|
+
const issues = [];
|
|
26
|
+
const legacySessions = (0, path_1.join)(configHome, 'sessions');
|
|
27
|
+
const legacyMemory = (0, path_1.join)(configHome, 'memory');
|
|
28
|
+
if ((0, fs_1.existsSync)(legacySessions)) {
|
|
29
|
+
issues.push({
|
|
30
|
+
kind: 'legacy-global-sessions',
|
|
31
|
+
path: legacySessions,
|
|
32
|
+
summary: 'Legacy global sessions directory exists',
|
|
33
|
+
bytes: dirSize(legacySessions),
|
|
34
|
+
canCleanup: true,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if ((0, fs_1.existsSync)(legacyMemory)) {
|
|
38
|
+
issues.push({
|
|
39
|
+
kind: 'legacy-global-memory',
|
|
40
|
+
path: legacyMemory,
|
|
41
|
+
summary: 'Legacy global memory directory exists',
|
|
42
|
+
bytes: dirSize(legacyMemory),
|
|
43
|
+
canCleanup: true,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
for (const project of projects) {
|
|
47
|
+
if (HASH_PROJECT_RE.test(project.projectKey)) {
|
|
48
|
+
issues.push({
|
|
49
|
+
kind: 'legacy-hash-project',
|
|
50
|
+
path: project.path,
|
|
51
|
+
projectKey: project.projectKey,
|
|
52
|
+
summary: 'Legacy hash project storage directory',
|
|
53
|
+
bytes: project.bytes,
|
|
54
|
+
canCleanup: true,
|
|
55
|
+
});
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (TEMP_PROJECT_RE.test(project.projectKey)) {
|
|
59
|
+
issues.push({
|
|
60
|
+
kind: 'temp-project',
|
|
61
|
+
path: project.path,
|
|
62
|
+
projectKey: project.projectKey,
|
|
63
|
+
summary: 'Test or temporary project storage directory',
|
|
64
|
+
bytes: project.bytes,
|
|
65
|
+
canCleanup: true,
|
|
66
|
+
});
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (project.bytes === 0) {
|
|
70
|
+
issues.push({
|
|
71
|
+
kind: 'empty-project',
|
|
72
|
+
path: project.path,
|
|
73
|
+
projectKey: project.projectKey,
|
|
74
|
+
summary: 'Empty project storage directory',
|
|
75
|
+
bytes: 0,
|
|
76
|
+
canCleanup: true,
|
|
77
|
+
});
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (!project.hasMetadata) {
|
|
81
|
+
issues.push({
|
|
82
|
+
kind: 'missing-project-metadata',
|
|
83
|
+
path: (0, config_dir_1.getProjectMetadataPath)(project.projectPath || project.path),
|
|
84
|
+
projectKey: project.projectKey,
|
|
85
|
+
summary: 'Project metadata file is missing',
|
|
86
|
+
bytes: project.bytes,
|
|
87
|
+
canCleanup: false,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
else if (project.projectPath && (0, config_dir_1.getCanonicalProjectKey)(project.projectPath) !== project.projectKey) {
|
|
91
|
+
issues.push({
|
|
92
|
+
kind: 'invalid-project-metadata',
|
|
93
|
+
path: (0, config_dir_1.getProjectMetadataPath)(project.projectPath),
|
|
94
|
+
projectKey: project.projectKey,
|
|
95
|
+
summary: 'Project metadata does not match the canonical project key',
|
|
96
|
+
bytes: project.bytes,
|
|
97
|
+
canCleanup: false,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
for (const vectorProject of vectorProjects) {
|
|
102
|
+
if (!vectorProject.orphan)
|
|
103
|
+
continue;
|
|
104
|
+
issues.push({
|
|
105
|
+
kind: 'vector-orphan-project',
|
|
106
|
+
projectKey: vectorProject.project,
|
|
107
|
+
summary: `Vector DB has ${vectorProject.rows} row(s) for a missing project`,
|
|
108
|
+
canCleanup: true,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
configHome,
|
|
113
|
+
projectsDir,
|
|
114
|
+
projects,
|
|
115
|
+
vectorProjects,
|
|
116
|
+
issues,
|
|
117
|
+
totalBytes: dirSize(configHome),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function cleanupStorage(options = {}) {
|
|
121
|
+
const opts = {
|
|
122
|
+
dryRun: options.dryRun ?? false,
|
|
123
|
+
includeLegacy: options.includeLegacy ?? true,
|
|
124
|
+
includeTemp: options.includeTemp ?? true,
|
|
125
|
+
includeEmpty: options.includeEmpty ?? true,
|
|
126
|
+
includeVectorOrphans: options.includeVectorOrphans ?? true,
|
|
127
|
+
};
|
|
128
|
+
const report = collectStorageReport();
|
|
129
|
+
const deletedPaths = [];
|
|
130
|
+
const skippedPaths = [];
|
|
131
|
+
let vectorDeletedRows = 0;
|
|
132
|
+
for (const issue of report.issues) {
|
|
133
|
+
const shouldDeletePath = (opts.includeLegacy && (issue.kind === 'legacy-global-sessions' || issue.kind === 'legacy-global-memory' || issue.kind === 'legacy-hash-project')) ||
|
|
134
|
+
(opts.includeTemp && issue.kind === 'temp-project') ||
|
|
135
|
+
(opts.includeEmpty && issue.kind === 'empty-project');
|
|
136
|
+
if (shouldDeletePath && issue.path) {
|
|
137
|
+
if (!opts.dryRun) {
|
|
138
|
+
(0, fs_1.rmSync)(issue.path, { recursive: true, force: true });
|
|
139
|
+
}
|
|
140
|
+
deletedPaths.push(issue.path);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (opts.includeVectorOrphans && issue.kind === 'vector-orphan-project' && issue.projectKey) {
|
|
144
|
+
const deleted = deleteVectorProjectRows(report.configHome, issue.projectKey, opts.dryRun);
|
|
145
|
+
vectorDeletedRows += deleted;
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (issue.canCleanup) {
|
|
149
|
+
skippedPaths.push(issue.path || issue.projectKey || issue.kind);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
if (!opts.dryRun) {
|
|
153
|
+
repairProjectMetadata();
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
dryRun: opts.dryRun,
|
|
157
|
+
deletedPaths,
|
|
158
|
+
skippedPaths,
|
|
159
|
+
vectorDeletedRows,
|
|
160
|
+
issues: report.issues,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function repairProjectMetadata() {
|
|
164
|
+
const projectsDir = (0, config_dir_1.getProjectsDir)();
|
|
165
|
+
const repaired = [];
|
|
166
|
+
const skipped = [];
|
|
167
|
+
if (!(0, fs_1.existsSync)(projectsDir)) {
|
|
168
|
+
(0, fs_1.mkdirSync)(projectsDir, { recursive: true, mode: 0o700 });
|
|
169
|
+
return { repaired, skipped };
|
|
170
|
+
}
|
|
171
|
+
for (const entry of (0, fs_1.readdirSync)(projectsDir)) {
|
|
172
|
+
if (HASH_PROJECT_RE.test(entry) || TEMP_PROJECT_RE.test(entry)) {
|
|
173
|
+
skipped.push(entry);
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
const projectDir = (0, path_1.join)(projectsDir, entry);
|
|
177
|
+
if (!safeIsDirectory(projectDir))
|
|
178
|
+
continue;
|
|
179
|
+
const projectPath = inferProjectPath(projectDir);
|
|
180
|
+
if (!projectPath) {
|
|
181
|
+
skipped.push(entry);
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
(0, config_dir_1.updateProjectMetadata)(projectPath);
|
|
185
|
+
repaired.push(entry);
|
|
186
|
+
}
|
|
187
|
+
return { repaired, skipped };
|
|
188
|
+
}
|
|
189
|
+
function formatStorageReport(report) {
|
|
190
|
+
const lines = [
|
|
191
|
+
'OpenHorse Storage',
|
|
192
|
+
'─'.repeat(40),
|
|
193
|
+
`Config ${report.configHome}`,
|
|
194
|
+
`Projects ${report.projects.length}`,
|
|
195
|
+
`Size ${formatBytes(report.totalBytes)}`,
|
|
196
|
+
`Issues ${report.issues.length}`,
|
|
197
|
+
'',
|
|
198
|
+
];
|
|
199
|
+
if (report.issues.length === 0) {
|
|
200
|
+
lines.push('✓ Storage layout is clean');
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
for (const issue of report.issues) {
|
|
204
|
+
const size = issue.bytes !== undefined ? ` ${formatBytes(issue.bytes)}` : '';
|
|
205
|
+
const target = issue.path || issue.projectKey || '';
|
|
206
|
+
lines.push(`! ${issue.kind}${size}`);
|
|
207
|
+
lines.push(` ${issue.summary}`);
|
|
208
|
+
if (target)
|
|
209
|
+
lines.push(` ${target}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (report.vectorProjects.length > 0) {
|
|
213
|
+
lines.push('', 'Vector Projects');
|
|
214
|
+
for (const project of report.vectorProjects.slice(0, 12)) {
|
|
215
|
+
lines.push(` ${project.orphan ? '!' : '✓'} ${project.project} ${project.rows} rows`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return lines.join('\n');
|
|
219
|
+
}
|
|
220
|
+
function formatStorageCleanupResult(result) {
|
|
221
|
+
const lines = [
|
|
222
|
+
result.dryRun ? 'OpenHorse Storage Cleanup (dry run)' : 'OpenHorse Storage Cleanup',
|
|
223
|
+
'─'.repeat(40),
|
|
224
|
+
`Paths ${result.deletedPaths.length}`,
|
|
225
|
+
`Vector rows ${result.vectorDeletedRows}`,
|
|
226
|
+
];
|
|
227
|
+
for (const path of result.deletedPaths.slice(0, 20)) {
|
|
228
|
+
lines.push(` ${result.dryRun ? 'would delete' : 'deleted'} ${path}`);
|
|
229
|
+
}
|
|
230
|
+
if (result.deletedPaths.length > 20) {
|
|
231
|
+
lines.push(` ... ${result.deletedPaths.length - 20} more`);
|
|
232
|
+
}
|
|
233
|
+
if (result.skippedPaths.length > 0) {
|
|
234
|
+
lines.push(`Skipped ${result.skippedPaths.length}`);
|
|
235
|
+
}
|
|
236
|
+
return lines.join('\n');
|
|
237
|
+
}
|
|
238
|
+
function listProjectSummaries(projectsDir) {
|
|
239
|
+
if (!(0, fs_1.existsSync)(projectsDir))
|
|
240
|
+
return [];
|
|
241
|
+
const summaries = [];
|
|
242
|
+
for (const projectKey of (0, fs_1.readdirSync)(projectsDir)) {
|
|
243
|
+
const projectDir = (0, path_1.join)(projectsDir, projectKey);
|
|
244
|
+
if (!safeIsDirectory(projectDir))
|
|
245
|
+
continue;
|
|
246
|
+
const projectPath = inferProjectPath(projectDir);
|
|
247
|
+
const metadata = projectPath ? (0, config_dir_1.readProjectMetadata)(projectPath) : null;
|
|
248
|
+
const sessionsDir = (0, path_1.join)(projectDir, 'sessions');
|
|
249
|
+
const sessions = (0, fs_1.existsSync)(sessionsDir)
|
|
250
|
+
? (0, fs_1.readdirSync)(sessionsDir).filter(file => file.endsWith('.json') && !file.endsWith('.harness.json') && !file.endsWith('.index.json')).length
|
|
251
|
+
: 0;
|
|
252
|
+
summaries.push({
|
|
253
|
+
projectKey,
|
|
254
|
+
path: projectDir,
|
|
255
|
+
bytes: dirSize(projectDir),
|
|
256
|
+
hasMetadata: !!metadata,
|
|
257
|
+
projectPath,
|
|
258
|
+
sessions,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
return summaries.sort((a, b) => b.bytes - a.bytes || a.projectKey.localeCompare(b.projectKey));
|
|
262
|
+
}
|
|
263
|
+
function inferProjectPath(projectDir) {
|
|
264
|
+
const metadataPath = (0, path_1.join)(projectDir, 'project.json');
|
|
265
|
+
try {
|
|
266
|
+
const parsed = JSON.parse((0, fs_1.readFileSync)(metadataPath, 'utf8'));
|
|
267
|
+
if (typeof parsed.projectPath === 'string' && parsed.projectPath) {
|
|
268
|
+
return parsed.projectPath;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
catch {
|
|
272
|
+
// Fall through to session metadata.
|
|
273
|
+
}
|
|
274
|
+
const sessionsDir = (0, path_1.join)(projectDir, 'sessions');
|
|
275
|
+
if (!(0, fs_1.existsSync)(sessionsDir))
|
|
276
|
+
return undefined;
|
|
277
|
+
for (const file of (0, fs_1.readdirSync)(sessionsDir)) {
|
|
278
|
+
if (!file.endsWith('.json') || file.endsWith('.harness.json') || file.endsWith('.index.json'))
|
|
279
|
+
continue;
|
|
280
|
+
try {
|
|
281
|
+
const parsed = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(sessionsDir, file), 'utf8'));
|
|
282
|
+
if (typeof parsed.projectPath === 'string' && parsed.projectPath) {
|
|
283
|
+
return parsed.projectPath;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
// Try the next session file.
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return undefined;
|
|
291
|
+
}
|
|
292
|
+
function inspectVectorProjects(configHome, validProjectKeys) {
|
|
293
|
+
const dbPath = (0, path_1.join)(configHome, 'vector.db');
|
|
294
|
+
if (!(0, fs_1.existsSync)(dbPath))
|
|
295
|
+
return [];
|
|
296
|
+
let db = null;
|
|
297
|
+
try {
|
|
298
|
+
db = new better_sqlite3_1.default(dbPath, { readonly: true });
|
|
299
|
+
const hasMemories = db.prepare("SELECT name FROM sqlite_master WHERE name = 'memories'").get();
|
|
300
|
+
if (!hasMemories)
|
|
301
|
+
return [];
|
|
302
|
+
const rows = db.prepare(`
|
|
303
|
+
SELECT COALESCE(project, 'global') as project, COUNT(*) as rows
|
|
304
|
+
FROM memories
|
|
305
|
+
GROUP BY COALESCE(project, 'global')
|
|
306
|
+
ORDER BY rows DESC, project ASC
|
|
307
|
+
`).all();
|
|
308
|
+
return rows.map(row => ({
|
|
309
|
+
project: row.project,
|
|
310
|
+
rows: row.rows,
|
|
311
|
+
orphan: row.project !== 'global' && !validProjectKeys.has(row.project),
|
|
312
|
+
}));
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
return [];
|
|
316
|
+
}
|
|
317
|
+
finally {
|
|
318
|
+
db?.close();
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
function deleteVectorProjectRows(configHome, project, dryRun) {
|
|
322
|
+
const dbPath = (0, path_1.join)(configHome, 'vector.db');
|
|
323
|
+
if (!(0, fs_1.existsSync)(dbPath))
|
|
324
|
+
return 0;
|
|
325
|
+
const db = new better_sqlite3_1.default(dbPath);
|
|
326
|
+
try {
|
|
327
|
+
const hasMemories = db.prepare("SELECT name FROM sqlite_master WHERE name = 'memories'").get();
|
|
328
|
+
if (!hasMemories)
|
|
329
|
+
return 0;
|
|
330
|
+
const ids = db.prepare('SELECT id FROM memories WHERE project = ?').all(project).map(row => row.id);
|
|
331
|
+
if (dryRun || ids.length === 0)
|
|
332
|
+
return ids.length;
|
|
333
|
+
const placeholders = ids.map(() => '?').join(', ');
|
|
334
|
+
if (db.prepare("SELECT name FROM sqlite_master WHERE name = 'vec_memories'").get() && db.prepare("SELECT name FROM sqlite_master WHERE name = 'memory_vectors'").get()) {
|
|
335
|
+
db.prepare(`DELETE FROM vec_memories WHERE rowid IN (SELECT vector_rowid FROM memory_vectors WHERE memory_id IN (${placeholders}))`).run(...ids);
|
|
336
|
+
db.prepare(`DELETE FROM memory_vectors WHERE memory_id IN (${placeholders})`).run(...ids);
|
|
337
|
+
}
|
|
338
|
+
db.prepare(`DELETE FROM memories WHERE id IN (${placeholders})`).run(...ids);
|
|
339
|
+
return ids.length;
|
|
340
|
+
}
|
|
341
|
+
finally {
|
|
342
|
+
db.close();
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
function dirSize(target) {
|
|
346
|
+
if (!(0, fs_1.existsSync)(target))
|
|
347
|
+
return 0;
|
|
348
|
+
try {
|
|
349
|
+
const stat = (0, fs_1.statSync)(target);
|
|
350
|
+
if (stat.isFile())
|
|
351
|
+
return stat.size;
|
|
352
|
+
if (!stat.isDirectory())
|
|
353
|
+
return 0;
|
|
354
|
+
return (0, fs_1.readdirSync)(target).reduce((sum, entry) => sum + dirSize((0, path_1.join)(target, entry)), 0);
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
return 0;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
function safeIsDirectory(target) {
|
|
361
|
+
try {
|
|
362
|
+
return (0, fs_1.statSync)(target).isDirectory();
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
return false;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
function formatBytes(bytes) {
|
|
369
|
+
if (bytes < 1024)
|
|
370
|
+
return `${bytes}B`;
|
|
371
|
+
if (bytes < 1024 * 1024)
|
|
372
|
+
return `${(bytes / 1024).toFixed(1)}KB`;
|
|
373
|
+
return `${(bytes / 1024 / 1024).toFixed(1)}MB`;
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=storage-maintenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-maintenance.js","sourceRoot":"","sources":["../../src/services/storage-maintenance.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.js
CHANGED
|
@@ -66,7 +66,7 @@ exports.TOOLS = [
|
|
|
66
66
|
},
|
|
67
67
|
required: ['path'],
|
|
68
68
|
},
|
|
69
|
-
execute: async (args) => {
|
|
69
|
+
execute: async (args, context) => {
|
|
70
70
|
// Ensure path is a valid string
|
|
71
71
|
const path = args.path;
|
|
72
72
|
if (!path || typeof path !== 'string') {
|
|
@@ -102,7 +102,7 @@ exports.TOOLS = [
|
|
|
102
102
|
},
|
|
103
103
|
required: ['path', 'content'],
|
|
104
104
|
},
|
|
105
|
-
execute: async (args) => {
|
|
105
|
+
execute: async (args, context) => {
|
|
106
106
|
// Ensure path and content are valid strings
|
|
107
107
|
const path = args.path;
|
|
108
108
|
const content = args.content;
|
|
@@ -411,7 +411,7 @@ exports.TOOLS = [
|
|
|
411
411
|
},
|
|
412
412
|
required: ['name', 'type', 'content'],
|
|
413
413
|
},
|
|
414
|
-
execute: async (args) => {
|
|
414
|
+
execute: async (args, context) => {
|
|
415
415
|
const name = args.name;
|
|
416
416
|
const type = args.type;
|
|
417
417
|
const content = args.content;
|
|
@@ -426,7 +426,7 @@ exports.TOOLS = [
|
|
|
426
426
|
return { success: false, output: '', error: 'memory_save requires a content parameter' };
|
|
427
427
|
}
|
|
428
428
|
try {
|
|
429
|
-
const projectPath = process.cwd();
|
|
429
|
+
const projectPath = context?.cwd || process.cwd();
|
|
430
430
|
const entry = {
|
|
431
431
|
name,
|
|
432
432
|
type,
|
|
@@ -476,9 +476,9 @@ exports.TOOLS = [
|
|
|
476
476
|
},
|
|
477
477
|
required: [],
|
|
478
478
|
},
|
|
479
|
-
execute: async (args) => {
|
|
479
|
+
execute: async (args, context) => {
|
|
480
480
|
try {
|
|
481
|
-
const projectPath = process.cwd();
|
|
481
|
+
const projectPath = context?.cwd || process.cwd();
|
|
482
482
|
const query = args.query || '';
|
|
483
483
|
const type = args.type;
|
|
484
484
|
let memories;
|
|
@@ -561,13 +561,13 @@ exports.TOOLS = [
|
|
|
561
561
|
},
|
|
562
562
|
required: ['name'],
|
|
563
563
|
},
|
|
564
|
-
execute: async (args) => {
|
|
564
|
+
execute: async (args, context) => {
|
|
565
565
|
const name = args.name;
|
|
566
566
|
if (!name || typeof name !== 'string') {
|
|
567
567
|
return { success: false, output: '', error: 'memory_forget requires a name parameter' };
|
|
568
568
|
}
|
|
569
569
|
try {
|
|
570
|
-
const projectPath = process.cwd();
|
|
570
|
+
const projectPath = context?.cwd || process.cwd();
|
|
571
571
|
const existing = (0, memory_1.loadMemory)(name, projectPath);
|
|
572
572
|
if (!existing) {
|
|
573
573
|
return { success: false, output: '', error: `Memory not found: ${name}` };
|
|
@@ -576,7 +576,7 @@ exports.TOOLS = [
|
|
|
576
576
|
if ((0, semantic_search_1.isSemanticEnabled)()) {
|
|
577
577
|
try {
|
|
578
578
|
const { getVectorStore } = require('../memory/vector-store');
|
|
579
|
-
getVectorStore().delete(name);
|
|
579
|
+
getVectorStore().delete(name, projectPath);
|
|
580
580
|
}
|
|
581
581
|
catch {
|
|
582
582
|
// Vector store cleanup is best-effort
|