-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathretag-empty.js
More file actions
53 lines (44 loc) · 1.6 KB
/
Copy pathretag-empty.js
File metadata and controls
53 lines (44 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import { loadDotEnv } from '../src/env/load-env.js';
await loadDotEnv();
const [
{ query },
{ generateTagsWithOpenClaw, mergeTags },
] = await Promise.all([
import('../src/server/db/client.js'),
import('../src/worker/tag-model.js'),
]);
async function retagEmpty() {
const result = await query(
`SELECT id, content, memory_kind, task_tag FROM memory_chunks
WHERE status = 'active'
AND (tags IS NULL OR jsonb_array_length(tags) = 0)
ORDER BY id ASC`
);
console.log(`Found ${result.rows.length} chunks without tags`);
for (const row of result.rows) {
try {
console.log(`Processing chunk ${row.id}...`);
const generated = await generateTagsWithOpenClaw(row.content);
if (!generated.tags.length && !generated.summary && !Object.keys(generated.facets || {}).length) {
console.log(`- Chunk ${row.id}: tagger unavailable or empty output, skipped`);
continue;
}
const taskTag = generated.tags.length > 0 ? generated.tags.join('; ') : null;
await query(
`UPDATE memory_chunks
SET tags = $2::jsonb, memory_kind = $3, task_tag = $4, updated_at = NOW()
WHERE id = $1`,
[row.id, JSON.stringify(generated.tags), generated.memory_kind || row.memory_kind, taskTag || row.task_tag]
);
console.log(`✓ Chunk ${row.id}: ${generated.tags.length} tags, kind=${generated.memory_kind}`);
} catch (e) {
console.error(`✗ Chunk ${row.id} failed:`, e.message);
}
}
console.log('Done!');
process.exit(0);
}
retagEmpty().catch((e) => {
console.error('Fatal error:', e);
process.exit(1);
});