context-vault 3.18.0 → 3.20.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/bin/cli.js +673 -4
- package/dist/register-tools.d.ts.map +1 -1
- package/dist/register-tools.js +0 -2
- package/dist/register-tools.js.map +1 -1
- package/dist/server.js +78 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/recall.d.ts +1 -1
- package/dist/tools/recall.d.ts.map +1 -1
- package/dist/tools/recall.js +50 -100
- package/dist/tools/recall.js.map +1 -1
- package/node_modules/@context-vault/core/dist/assemble.d.ts +22 -0
- package/node_modules/@context-vault/core/dist/assemble.d.ts.map +1 -0
- package/node_modules/@context-vault/core/dist/assemble.js +143 -0
- package/node_modules/@context-vault/core/dist/assemble.js.map +1 -0
- package/node_modules/@context-vault/core/dist/capture.d.ts.map +1 -1
- package/node_modules/@context-vault/core/dist/capture.js +10 -5
- package/node_modules/@context-vault/core/dist/capture.js.map +1 -1
- package/node_modules/@context-vault/core/dist/consolidation.d.ts +40 -0
- package/node_modules/@context-vault/core/dist/consolidation.d.ts.map +1 -0
- package/node_modules/@context-vault/core/dist/consolidation.js +229 -0
- package/node_modules/@context-vault/core/dist/consolidation.js.map +1 -0
- package/node_modules/@context-vault/core/dist/db.d.ts +25 -1
- package/node_modules/@context-vault/core/dist/db.d.ts.map +1 -1
- package/node_modules/@context-vault/core/dist/db.js +92 -4
- package/node_modules/@context-vault/core/dist/db.js.map +1 -1
- package/node_modules/@context-vault/core/dist/frontmatter.d.ts.map +1 -1
- package/node_modules/@context-vault/core/dist/frontmatter.js +26 -3
- package/node_modules/@context-vault/core/dist/frontmatter.js.map +1 -1
- package/node_modules/@context-vault/core/dist/index.d.ts.map +1 -1
- package/node_modules/@context-vault/core/dist/index.js +225 -184
- package/node_modules/@context-vault/core/dist/index.js.map +1 -1
- package/node_modules/@context-vault/core/dist/main.d.ts +3 -0
- package/node_modules/@context-vault/core/dist/main.d.ts.map +1 -1
- package/node_modules/@context-vault/core/dist/main.js +4 -0
- package/node_modules/@context-vault/core/dist/main.js.map +1 -1
- package/node_modules/@context-vault/core/dist/search.d.ts +6 -0
- package/node_modules/@context-vault/core/dist/search.d.ts.map +1 -1
- package/node_modules/@context-vault/core/dist/search.js +106 -5
- package/node_modules/@context-vault/core/dist/search.js.map +1 -1
- package/node_modules/@context-vault/core/dist/search.test.d.ts +2 -0
- package/node_modules/@context-vault/core/dist/search.test.d.ts.map +1 -0
- package/node_modules/@context-vault/core/dist/search.test.js +49 -0
- package/node_modules/@context-vault/core/dist/search.test.js.map +1 -0
- package/node_modules/@context-vault/core/dist/summarize.d.ts +5 -0
- package/node_modules/@context-vault/core/dist/summarize.d.ts.map +1 -0
- package/node_modules/@context-vault/core/dist/summarize.js +146 -0
- package/node_modules/@context-vault/core/dist/summarize.js.map +1 -0
- package/node_modules/@context-vault/core/dist/types.d.ts +2 -0
- package/node_modules/@context-vault/core/dist/types.d.ts.map +1 -1
- package/node_modules/@context-vault/core/package.json +13 -1
- package/node_modules/@context-vault/core/src/assemble.ts +187 -0
- package/node_modules/@context-vault/core/src/capture.ts +10 -5
- package/node_modules/@context-vault/core/src/consolidation.ts +356 -0
- package/node_modules/@context-vault/core/src/db.ts +95 -4
- package/node_modules/@context-vault/core/src/frontmatter.ts +25 -4
- package/node_modules/@context-vault/core/src/index.ts +127 -88
- package/node_modules/@context-vault/core/src/main.ts +7 -0
- package/node_modules/@context-vault/core/src/search.test.ts +59 -0
- package/node_modules/@context-vault/core/src/search.ts +112 -5
- package/node_modules/@context-vault/core/src/summarize.ts +157 -0
- package/node_modules/@context-vault/core/src/types.ts +2 -0
- package/package.json +2 -2
- package/scripts/validate-epipe-shutdown.mjs +183 -0
- package/scripts/validate-sqlite-busy-retry.mjs +243 -0
- package/src/register-tools.ts +0 -2
- package/src/server.ts +76 -1
- package/src/tools/recall.ts +51 -110
- package/.claude-plugin/README.md +0 -219
- package/.claude-plugin/plugin.json +0 -11
- package/commands/vault-cleanup.md +0 -43
- package/commands/vault-snapshot.md +0 -43
- package/commands/vault-status.md +0 -35
- package/dist/tools/session-start.d.ts +0 -25
- package/dist/tools/session-start.d.ts.map +0 -1
- package/dist/tools/session-start.js +0 -469
- package/dist/tools/session-start.js.map +0 -1
- package/skills/context-assembly/SKILL.md +0 -308
- package/skills/knowledge-capture/SKILL.md +0 -303
- package/skills/memory-management/SKILL.md +0 -237
- package/src/tools/session-start.ts +0 -527
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { hybridSearch } from './search.js';
|
|
4
|
+
const TOKEN_TO_CHAR_RATIO = 4; // approximate conversion
|
|
5
|
+
const CONDENSED_SUFFIX = '\n... [truncated for context budget]';
|
|
6
|
+
const CONDENSED_BODY_CHARS = 400;
|
|
7
|
+
const DEFAULT_ROLE_PROFILES = {
|
|
8
|
+
worker: {
|
|
9
|
+
rules: ['coding', 'patterns', 'standards', 'error-handling', 'debugging'],
|
|
10
|
+
skills: ['git', 'compile', 'test', 'local'],
|
|
11
|
+
memory: ['feedback', 'user', 'project', 'reference']
|
|
12
|
+
},
|
|
13
|
+
pm: {
|
|
14
|
+
rules: ['orchestration', 'planning', 'spec-writing', 'review', 'debugging-escalation'],
|
|
15
|
+
skills: ['dispatch', 'review', 'triage', 'report'],
|
|
16
|
+
memory: ['project', 'team', 'feedback']
|
|
17
|
+
},
|
|
18
|
+
ceo: {
|
|
19
|
+
rules: ['strategy', 'epistemic-honesty', 'decision-making', 'business-logic'],
|
|
20
|
+
skills: ['triage', 'delegate', 'report'],
|
|
21
|
+
memory: ['north-star', 'project', 'user']
|
|
22
|
+
},
|
|
23
|
+
steer: {
|
|
24
|
+
rules: ['steer', 'strategy', 'feedback-loops', 'analysis'],
|
|
25
|
+
skills: ['triage', 'report', 'analyze'],
|
|
26
|
+
memory: ['north-star', 'feedback']
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
function loadRoleProfiles(dataDir) {
|
|
30
|
+
const rolesPath = join(dataDir, 'roles.json');
|
|
31
|
+
if (existsSync(rolesPath)) {
|
|
32
|
+
try {
|
|
33
|
+
const raw = readFileSync(rolesPath, 'utf-8');
|
|
34
|
+
const parsed = JSON.parse(raw);
|
|
35
|
+
if (parsed && typeof parsed === 'object') {
|
|
36
|
+
return parsed;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// fall through to defaults
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Seed roles.json with defaults so the user can edit it later
|
|
45
|
+
try {
|
|
46
|
+
writeFileSync(rolesPath, JSON.stringify(DEFAULT_ROLE_PROFILES, null, 2) + '\n');
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// non-fatal: writable failure just means we use in-memory defaults
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return DEFAULT_ROLE_PROFILES;
|
|
53
|
+
}
|
|
54
|
+
export async function assembleContext(db, config, options) {
|
|
55
|
+
const { role, task, budget } = options;
|
|
56
|
+
// 1. Load role profiles (dynamic — falls back to defaults)
|
|
57
|
+
const ROLE_PROFILES = loadRoleProfiles(config.dataDir);
|
|
58
|
+
const profile = ROLE_PROFILES[role] || ROLE_PROFILES.worker || DEFAULT_ROLE_PROFILES.worker;
|
|
59
|
+
const charsBudget = budget * TOKEN_TO_CHAR_RATIO;
|
|
60
|
+
// Allocate slots
|
|
61
|
+
const rulesChars = Math.floor(charsBudget * 0.2); // 20% for rules
|
|
62
|
+
const skillsChars = Math.floor(charsBudget * 0.1); // 10% for skills
|
|
63
|
+
const taskChars = Math.floor(charsBudget * 0.2); // 20% for task
|
|
64
|
+
const vaultChars = Math.floor(charsBudget * 0.3); // 30% for dynamically retrieved vault context
|
|
65
|
+
// reserve 20%
|
|
66
|
+
let markdown = `# Assembled Context: ${role.toUpperCase()}\n\n`;
|
|
67
|
+
let totalCharsUsed = markdown.length;
|
|
68
|
+
// 2. Add Task Spec
|
|
69
|
+
const taskSection = `## Active Task\n\n${task}\n\n`;
|
|
70
|
+
markdown += taskSection;
|
|
71
|
+
totalCharsUsed += taskSection.length;
|
|
72
|
+
// 3. Dynamic Vault Retrieval based on task
|
|
73
|
+
let entriesIncluded = 0;
|
|
74
|
+
const includedEntries = [];
|
|
75
|
+
const totalBudgetChars = vaultChars + taskChars + rulesChars + skillsChars;
|
|
76
|
+
if (vaultChars > 0 && task.trim().length > 0) {
|
|
77
|
+
try {
|
|
78
|
+
// Over-retrieve candidates
|
|
79
|
+
const searchResults = await hybridSearch({
|
|
80
|
+
db,
|
|
81
|
+
config,
|
|
82
|
+
stmts: {},
|
|
83
|
+
insertVec: () => { },
|
|
84
|
+
deleteVec: () => { },
|
|
85
|
+
embed: async () => new Float32Array(384),
|
|
86
|
+
insertCtxVec: () => { },
|
|
87
|
+
deleteCtxVec: () => { }
|
|
88
|
+
}, task, { limit: 20 });
|
|
89
|
+
if (searchResults && searchResults.length > 0) {
|
|
90
|
+
markdown += `## Retrieved Context\n\n`;
|
|
91
|
+
const retrievedHeaderLen = `## Retrieved Context\n\n`.length;
|
|
92
|
+
totalCharsUsed += retrievedHeaderLen;
|
|
93
|
+
for (const item of searchResults) {
|
|
94
|
+
const entry = 'entry' in item ? item.entry : item;
|
|
95
|
+
const fullBody = entry.body || '';
|
|
96
|
+
const titleText = entry.title ? `### ${entry.title}\n` : '';
|
|
97
|
+
const entryTitle = entry.title || '(untitled)';
|
|
98
|
+
const fullEntryMarkdown = `${titleText}${fullBody}\n\n`;
|
|
99
|
+
if (totalCharsUsed + fullEntryMarkdown.length <= totalBudgetChars) {
|
|
100
|
+
// Full entry fits
|
|
101
|
+
markdown += fullEntryMarkdown;
|
|
102
|
+
totalCharsUsed += fullEntryMarkdown.length;
|
|
103
|
+
entriesIncluded++;
|
|
104
|
+
includedEntries.push({ title: entryTitle, status: 'full' });
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
// Try condensed version
|
|
108
|
+
const condensedBody = fullBody.slice(0, CONDENSED_BODY_CHARS) + CONDENSED_SUFFIX;
|
|
109
|
+
const condensedEntryMarkdown = `${titleText}${condensedBody}\n\n`;
|
|
110
|
+
if (totalCharsUsed + condensedEntryMarkdown.length <= totalBudgetChars) {
|
|
111
|
+
markdown += condensedEntryMarkdown;
|
|
112
|
+
totalCharsUsed += condensedEntryMarkdown.length;
|
|
113
|
+
entriesIncluded++;
|
|
114
|
+
includedEntries.push({ title: entryTitle, status: 'condensed' });
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// Neither fits — stop adding vault entries
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (e) {
|
|
125
|
+
console.error("Vault retrieval error during assembly:", e);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// 4. Construct System Prompts/Rules/Skills
|
|
129
|
+
const rulesSection = `## Role Directives\n\n### Rules\n${profile.rules.join(', ')}\n\n### Skills\n${profile.skills.join(', ')}\n\n`;
|
|
130
|
+
markdown = rulesSection + markdown; // U-Curve: Rules at the top
|
|
131
|
+
totalCharsUsed += rulesSection.length;
|
|
132
|
+
return {
|
|
133
|
+
markdown,
|
|
134
|
+
metadata: {
|
|
135
|
+
tokens_used: Math.ceil(totalCharsUsed / TOKEN_TO_CHAR_RATIO),
|
|
136
|
+
budget,
|
|
137
|
+
entries_included: entriesIncluded,
|
|
138
|
+
role,
|
|
139
|
+
included_entries: includedEntries
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=assemble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assemble.js","sourceRoot":"","sources":["../src/assemble.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyB3C,MAAM,mBAAmB,GAAG,CAAC,CAAC,CAAC,yBAAyB;AAExD,MAAM,gBAAgB,GAAG,sCAAsC,CAAC;AAChE,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAIjC,MAAM,qBAAqB,GAAgC;IACzD,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,CAAC;QACzE,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;QAC3C,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC;KACrD;IACD,EAAE,EAAE;QACF,KAAK,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,sBAAsB,CAAC;QACtF,MAAM,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAClD,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;KACxC;IACD,GAAG,EAAE;QACH,KAAK,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;QAC7E,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;QACxC,MAAM,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC;KAC1C;IACD,KAAK,EAAE;QACL,KAAK,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,CAAC;QAC1D,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;QACvC,MAAM,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC;KACnC;CACF,CAAC;AAEF,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,OAAO,MAAqC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,8DAA8D;QAC9D,IAAI,CAAC;YACH,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;QACrE,CAAC;IACH,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAsC,EACtC,MAAmB,EACnB,OAAwB;IAExB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEvC,2DAA2D;IAC3D,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC;IAC5F,MAAM,WAAW,GAAG,MAAM,GAAG,mBAAmB,CAAC;IAEjD,iBAAiB;IACjB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB;IAClE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,iBAAiB;IACpE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAG,eAAe;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAE,8CAA8C;IACjG,cAAc;IAEd,IAAI,QAAQ,GAAG,wBAAwB,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;IAChE,IAAI,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;IAErC,mBAAmB;IACnB,MAAM,WAAW,GAAG,qBAAqB,IAAI,MAAM,CAAC;IACpD,QAAQ,IAAI,WAAW,CAAC;IACxB,cAAc,IAAI,WAAW,CAAC,MAAM,CAAC;IAErC,2CAA2C;IAC3C,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,MAAM,eAAe,GAAwB,EAAE,CAAC;IAChD,MAAM,gBAAgB,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;IAE3E,IAAI,UAAU,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,2BAA2B;YAC3B,MAAM,aAAa,GAAG,MAAM,YAAY,CACtC;gBACE,EAAE;gBACF,MAAM;gBACN,KAAK,EAAE,EAAS;gBAChB,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;gBACnB,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC;gBACnB,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC;gBACxC,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;gBACtB,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;aACvB,EACD,IAAI,EACJ,EAAE,KAAK,EAAE,EAAE,EAAE,CACd,CAAC;YAEF,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,QAAQ,IAAI,0BAA0B,CAAC;gBACvC,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,MAAM,CAAC;gBAC7D,cAAc,IAAI,kBAAkB,CAAC;gBAErC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;oBACjC,MAAM,KAAK,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAE,IAAY,CAAC,KAAK,CAAC,CAAC,CAAE,IAAY,CAAC;oBACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;oBAClC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,IAAI,YAAY,CAAC;oBAE/C,MAAM,iBAAiB,GAAG,GAAG,SAAS,GAAG,QAAQ,MAAM,CAAC;oBAExD,IAAI,cAAc,GAAG,iBAAiB,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC;wBAClE,kBAAkB;wBAClB,QAAQ,IAAI,iBAAiB,CAAC;wBAC9B,cAAc,IAAI,iBAAiB,CAAC,MAAM,CAAC;wBAC3C,eAAe,EAAE,CAAC;wBAClB,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACN,wBAAwB;wBACxB,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,GAAG,gBAAgB,CAAC;wBACjF,MAAM,sBAAsB,GAAG,GAAG,SAAS,GAAG,aAAa,MAAM,CAAC;wBAElE,IAAI,cAAc,GAAG,sBAAsB,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC;4BACvE,QAAQ,IAAI,sBAAsB,CAAC;4BACnC,cAAc,IAAI,sBAAsB,CAAC,MAAM,CAAC;4BAChD,eAAe,EAAE,CAAC;4BAClB,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;wBACnE,CAAC;6BAAM,CAAC;4BACN,2CAA2C;4BAC3C,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,MAAM,YAAY,GAAG,oCAAoC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpI,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC,4BAA4B;IAChE,cAAc,IAAI,YAAY,CAAC,MAAM,CAAC;IAEtC,OAAO;QACL,QAAQ;QACR,QAAQ,EAAE;YACR,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,mBAAmB,CAAC;YAC5D,MAAM;YACN,gBAAgB,EAAE,eAAe;YACjC,IAAI;YACJ,gBAAgB,EAAE,eAAe;SAClC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAgGxF,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,aAAa,CA+E1E;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;CAC7D,GACA,eAAe,GAAG;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CAC9B,CAiFA;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,YAAY,EAClB,oBAAoB,CAAC,EAAE,YAAY,GAAG,IAAI,GACzC,OAAO,CAAC,aAAa,CAAC,CA+CxB"}
|
|
@@ -5,6 +5,7 @@ import { categoryFor } from './categories.js';
|
|
|
5
5
|
import { parseFrontmatter, formatFrontmatter } from './frontmatter.js';
|
|
6
6
|
import { formatBody } from './formatters.js';
|
|
7
7
|
import { indexEntry } from './index.js';
|
|
8
|
+
import { withBusyRetry } from './db.js';
|
|
8
9
|
function safeFolderPath(vaultDir, kind, folder) {
|
|
9
10
|
const base = resolve(vaultDir, kindToPath(kind));
|
|
10
11
|
if (!folder)
|
|
@@ -254,14 +255,18 @@ export async function captureAndIndex(ctx, data, precomputedEmbedding) {
|
|
|
254
255
|
try {
|
|
255
256
|
await indexEntry(ctx, entry, precomputedEmbedding);
|
|
256
257
|
if (entry.supersedes?.length && ctx.stmts.updateSupersededBy) {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
258
|
+
await withBusyRetry(() => {
|
|
259
|
+
for (const supersededId of entry.supersedes) {
|
|
260
|
+
if (typeof supersededId === 'string' && supersededId.trim()) {
|
|
261
|
+
ctx.stmts.updateSupersededBy.run(entry.id, supersededId.trim());
|
|
262
|
+
}
|
|
260
263
|
}
|
|
261
|
-
}
|
|
264
|
+
});
|
|
262
265
|
}
|
|
263
266
|
if (entry.related_to?.length && ctx.stmts.updateRelatedTo) {
|
|
264
|
-
|
|
267
|
+
await withBusyRetry(() => {
|
|
268
|
+
ctx.stmts.updateRelatedTo.run(JSON.stringify(entry.related_to), entry.id);
|
|
269
|
+
});
|
|
265
270
|
}
|
|
266
271
|
return entry;
|
|
267
272
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { BaseCtx } from './types.js';
|
|
2
|
+
export interface DuplicateGroup {
|
|
3
|
+
canonical_id: string;
|
|
4
|
+
duplicate_ids: string[];
|
|
5
|
+
similarity: number;
|
|
6
|
+
importance_signal: number;
|
|
7
|
+
canonical_title: string;
|
|
8
|
+
sample_titles: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface MergeResult {
|
|
11
|
+
canonical_id: string;
|
|
12
|
+
merged_count: number;
|
|
13
|
+
new_recall_count: number;
|
|
14
|
+
removed_ids: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface DecayScore {
|
|
17
|
+
id: string;
|
|
18
|
+
title: string;
|
|
19
|
+
kind: string;
|
|
20
|
+
score: number;
|
|
21
|
+
days_since_recall: number;
|
|
22
|
+
recall_count: number;
|
|
23
|
+
recommendation: 'keep' | 'compact' | 'archive';
|
|
24
|
+
}
|
|
25
|
+
export declare function findDuplicates(ctx: BaseCtx, opts?: {
|
|
26
|
+
threshold?: number;
|
|
27
|
+
limit?: number;
|
|
28
|
+
kind?: string;
|
|
29
|
+
dryRun?: boolean;
|
|
30
|
+
}): Promise<DuplicateGroup[]>;
|
|
31
|
+
export declare function mergeEntries(ctx: BaseCtx, opts: {
|
|
32
|
+
canonical_id: string;
|
|
33
|
+
duplicate_ids: string[];
|
|
34
|
+
dryRun?: boolean;
|
|
35
|
+
}): MergeResult;
|
|
36
|
+
export declare function computeDecayScores(ctx: BaseCtx, opts?: {
|
|
37
|
+
limit?: number;
|
|
38
|
+
minAgeDays?: number;
|
|
39
|
+
}): DecayScore[];
|
|
40
|
+
//# sourceMappingURL=consolidation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidation.d.ts","sourceRoot":"","sources":["../src/consolidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;CAChD;AA2BD,wBAAsB,cAAc,CAClC,GAAG,EAAE,OAAO,EACZ,IAAI,CAAC,EAAE;IACL,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,OAAO,CAAC,cAAc,EAAE,CAAC,CA2H3B;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE;IACJ,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,WAAW,CA+Eb;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,IAAI,CAAC,EAAE;IACL,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,UAAU,EAAE,CA0Ed"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { dotProduct } from './search.js';
|
|
2
|
+
const KIND_WEIGHTS = {
|
|
3
|
+
insight: 10,
|
|
4
|
+
decision: 8,
|
|
5
|
+
pattern: 7,
|
|
6
|
+
reference: 5,
|
|
7
|
+
event: 2,
|
|
8
|
+
};
|
|
9
|
+
export async function findDuplicates(ctx, opts) {
|
|
10
|
+
const threshold = opts?.threshold ?? 0.85;
|
|
11
|
+
const limit = opts?.limit ?? 50;
|
|
12
|
+
const kind = opts?.kind ?? null;
|
|
13
|
+
const whereParts = [
|
|
14
|
+
'indexed = 1',
|
|
15
|
+
'superseded_by IS NULL',
|
|
16
|
+
"(expires_at IS NULL OR expires_at > datetime('now'))",
|
|
17
|
+
];
|
|
18
|
+
const params = [];
|
|
19
|
+
if (kind) {
|
|
20
|
+
whereParts.push('kind = ?');
|
|
21
|
+
params.push(kind);
|
|
22
|
+
}
|
|
23
|
+
const entries = ctx.db
|
|
24
|
+
.prepare(`SELECT rowid, id, title, kind, recall_count, recall_sessions, last_recalled_at, updated_at, created_at
|
|
25
|
+
FROM vault WHERE ${whereParts.join(' AND ')} ORDER BY recall_count DESC`)
|
|
26
|
+
.all(...params);
|
|
27
|
+
if (entries.length === 0)
|
|
28
|
+
return [];
|
|
29
|
+
const entryMap = new Map();
|
|
30
|
+
const rowidToId = new Map();
|
|
31
|
+
for (const e of entries) {
|
|
32
|
+
entryMap.set(e.id, e);
|
|
33
|
+
rowidToId.set(e.rowid, e.id);
|
|
34
|
+
}
|
|
35
|
+
// Load embeddings for all eligible entries via vault_vec KNN
|
|
36
|
+
const embeddingMap = new Map();
|
|
37
|
+
const rowids = entries.map((e) => e.rowid);
|
|
38
|
+
if (rowids.length > 0) {
|
|
39
|
+
const batchSize = 500;
|
|
40
|
+
for (let i = 0; i < rowids.length; i += batchSize) {
|
|
41
|
+
const batch = rowids.slice(i, i + batchSize);
|
|
42
|
+
const placeholders = batch.map(() => '?').join(',');
|
|
43
|
+
const vecRows = ctx.db
|
|
44
|
+
.prepare(`SELECT rowid, embedding FROM vault_vec WHERE rowid IN (${placeholders})`)
|
|
45
|
+
.all(...batch);
|
|
46
|
+
for (const row of vecRows) {
|
|
47
|
+
const id = rowidToId.get(Number(row.rowid));
|
|
48
|
+
if (id && row.embedding) {
|
|
49
|
+
embeddingMap.set(id, new Float32Array(row.embedding.buffer, row.embedding.byteOffset, row.embedding.byteLength / 4));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (embeddingMap.size === 0)
|
|
55
|
+
return [];
|
|
56
|
+
// Find duplicate groups using pairwise similarity
|
|
57
|
+
const merged = new Set();
|
|
58
|
+
const groups = [];
|
|
59
|
+
// For each entry with an embedding, use KNN to find neighbors
|
|
60
|
+
const entriesWithVec = entries.filter((e) => embeddingMap.has(e.id));
|
|
61
|
+
for (const entry of entriesWithVec) {
|
|
62
|
+
if (merged.has(entry.id))
|
|
63
|
+
continue;
|
|
64
|
+
const entryVec = embeddingMap.get(entry.id);
|
|
65
|
+
const neighbors = [];
|
|
66
|
+
// Compare against all other entries with embeddings
|
|
67
|
+
for (const other of entriesWithVec) {
|
|
68
|
+
if (other.id === entry.id || merged.has(other.id))
|
|
69
|
+
continue;
|
|
70
|
+
const otherVec = embeddingMap.get(other.id);
|
|
71
|
+
if (!otherVec)
|
|
72
|
+
continue;
|
|
73
|
+
const sim = dotProduct(entryVec, otherVec);
|
|
74
|
+
if (sim >= threshold) {
|
|
75
|
+
neighbors.push({ id: other.id, sim });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (neighbors.length === 0)
|
|
79
|
+
continue;
|
|
80
|
+
// Build the group: canonical is the one with highest recall_count
|
|
81
|
+
const allIds = [entry.id, ...neighbors.map((n) => n.id)];
|
|
82
|
+
let canonicalId = entry.id;
|
|
83
|
+
let maxRecall = entry.recall_count;
|
|
84
|
+
for (const nId of neighbors.map((n) => n.id)) {
|
|
85
|
+
const nEntry = entryMap.get(nId);
|
|
86
|
+
if (nEntry && nEntry.recall_count > maxRecall) {
|
|
87
|
+
maxRecall = nEntry.recall_count;
|
|
88
|
+
canonicalId = nId;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const duplicateIds = allIds.filter((id) => id !== canonicalId);
|
|
92
|
+
const avgSim = neighbors.reduce((sum, n) => sum + n.sim, 0) / neighbors.length;
|
|
93
|
+
const canonical = entryMap.get(canonicalId);
|
|
94
|
+
const sampleTitles = duplicateIds
|
|
95
|
+
.map((id) => entryMap.get(id)?.title)
|
|
96
|
+
.filter((t) => t != null)
|
|
97
|
+
.slice(0, 5);
|
|
98
|
+
groups.push({
|
|
99
|
+
canonical_id: canonicalId,
|
|
100
|
+
duplicate_ids: duplicateIds,
|
|
101
|
+
similarity: Math.round(avgSim * 1000) / 1000,
|
|
102
|
+
importance_signal: allIds.length,
|
|
103
|
+
canonical_title: canonical.title ?? '(untitled)',
|
|
104
|
+
sample_titles: sampleTitles,
|
|
105
|
+
});
|
|
106
|
+
for (const id of allIds)
|
|
107
|
+
merged.add(id);
|
|
108
|
+
if (groups.length >= limit)
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
// Sort by importance (more duplicates = more important)
|
|
112
|
+
groups.sort((a, b) => b.importance_signal - a.importance_signal);
|
|
113
|
+
return groups.slice(0, limit);
|
|
114
|
+
}
|
|
115
|
+
export function mergeEntries(ctx, opts) {
|
|
116
|
+
const dryRun = opts.dryRun ?? true;
|
|
117
|
+
const { canonical_id, duplicate_ids } = opts;
|
|
118
|
+
if (duplicate_ids.length === 0) {
|
|
119
|
+
const canonical = ctx.db
|
|
120
|
+
.prepare('SELECT recall_count FROM vault WHERE id = ?')
|
|
121
|
+
.get(canonical_id);
|
|
122
|
+
return {
|
|
123
|
+
canonical_id,
|
|
124
|
+
merged_count: 0,
|
|
125
|
+
new_recall_count: canonical?.recall_count ?? 0,
|
|
126
|
+
removed_ids: [],
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
// Gather recall stats from all entries
|
|
130
|
+
const allIds = [canonical_id, ...duplicate_ids];
|
|
131
|
+
const placeholders = allIds.map(() => '?').join(',');
|
|
132
|
+
const rows = ctx.db
|
|
133
|
+
.prepare(`SELECT id, recall_count, recall_sessions FROM vault WHERE id IN (${placeholders})`)
|
|
134
|
+
.all(...allIds);
|
|
135
|
+
let totalRecallCount = 0;
|
|
136
|
+
let totalRecallSessions = 0;
|
|
137
|
+
for (const row of rows) {
|
|
138
|
+
totalRecallCount += row.recall_count ?? 0;
|
|
139
|
+
totalRecallSessions += row.recall_sessions ?? 0;
|
|
140
|
+
}
|
|
141
|
+
if (dryRun) {
|
|
142
|
+
return {
|
|
143
|
+
canonical_id,
|
|
144
|
+
merged_count: duplicate_ids.length,
|
|
145
|
+
new_recall_count: totalRecallCount,
|
|
146
|
+
removed_ids: duplicate_ids,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
const now = new Date().toISOString();
|
|
150
|
+
const dateStr = now.slice(0, 10);
|
|
151
|
+
// Update canonical: sum recall counts, append consolidation note
|
|
152
|
+
ctx.db
|
|
153
|
+
.prepare(`UPDATE vault SET
|
|
154
|
+
recall_count = ?,
|
|
155
|
+
recall_sessions = ?,
|
|
156
|
+
updated_at = ?,
|
|
157
|
+
body = body || ?
|
|
158
|
+
WHERE id = ?`)
|
|
159
|
+
.run(totalRecallCount, totalRecallSessions, now, `\n\n[Consolidated from ${duplicate_ids.length + 1} entries on ${dateStr}]`, canonical_id);
|
|
160
|
+
// Mark duplicates as superseded
|
|
161
|
+
for (const dupId of duplicate_ids) {
|
|
162
|
+
ctx.db
|
|
163
|
+
.prepare('UPDATE vault SET superseded_by = ?, updated_at = ? WHERE id = ?')
|
|
164
|
+
.run(canonical_id, now, dupId);
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
canonical_id,
|
|
168
|
+
merged_count: duplicate_ids.length,
|
|
169
|
+
new_recall_count: totalRecallCount,
|
|
170
|
+
removed_ids: duplicate_ids,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
export function computeDecayScores(ctx, opts) {
|
|
174
|
+
const limit = opts?.limit ?? 100;
|
|
175
|
+
const minAgeDays = opts?.minAgeDays ?? 0;
|
|
176
|
+
const now = Date.now();
|
|
177
|
+
const cutoffDate = minAgeDays > 0
|
|
178
|
+
? new Date(now - minAgeDays * 86400000).toISOString()
|
|
179
|
+
: null;
|
|
180
|
+
const whereParts = [
|
|
181
|
+
'indexed = 1',
|
|
182
|
+
'superseded_by IS NULL',
|
|
183
|
+
"(expires_at IS NULL OR expires_at > datetime('now'))",
|
|
184
|
+
];
|
|
185
|
+
const params = [];
|
|
186
|
+
if (cutoffDate) {
|
|
187
|
+
whereParts.push('created_at <= ?');
|
|
188
|
+
params.push(cutoffDate);
|
|
189
|
+
}
|
|
190
|
+
const rows = ctx.db
|
|
191
|
+
.prepare(`SELECT id, title, kind, recall_count, last_recalled_at, updated_at, created_at
|
|
192
|
+
FROM vault WHERE ${whereParts.join(' AND ')}
|
|
193
|
+
ORDER BY updated_at ASC`)
|
|
194
|
+
.all(...params);
|
|
195
|
+
const scores = [];
|
|
196
|
+
for (const row of rows) {
|
|
197
|
+
const lastActivity = row.last_recalled_at ?? row.updated_at ?? row.created_at;
|
|
198
|
+
const daysSinceRecall = (now - new Date(lastActivity).getTime()) / 86400000;
|
|
199
|
+
const baseValue = KIND_WEIGHTS[row.kind] ?? 5;
|
|
200
|
+
const timeDecay = Math.exp(-0.02 * daysSinceRecall);
|
|
201
|
+
const recallBoost = 1 + Math.log((row.recall_count ?? 0) + 1);
|
|
202
|
+
const rawScore = baseValue * timeDecay * recallBoost;
|
|
203
|
+
// Normalize to 0-100 scale (max possible: ~10 * 1.0 * ~5 = 50 for heavily recalled insight)
|
|
204
|
+
const score = Math.max(0, Math.min(100, Math.round(rawScore * 10)));
|
|
205
|
+
let recommendation;
|
|
206
|
+
if (score >= 30) {
|
|
207
|
+
recommendation = 'keep';
|
|
208
|
+
}
|
|
209
|
+
else if (score >= 10) {
|
|
210
|
+
recommendation = 'compact';
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
recommendation = 'archive';
|
|
214
|
+
}
|
|
215
|
+
scores.push({
|
|
216
|
+
id: row.id,
|
|
217
|
+
title: row.title ?? '(untitled)',
|
|
218
|
+
kind: row.kind,
|
|
219
|
+
score,
|
|
220
|
+
days_since_recall: Math.round(daysSinceRecall),
|
|
221
|
+
recall_count: row.recall_count ?? 0,
|
|
222
|
+
recommendation,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
// Sort by score ascending (most decayed first)
|
|
226
|
+
scores.sort((a, b) => a.score - b.score);
|
|
227
|
+
return scores.slice(0, limit);
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=consolidation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consolidation.js","sourceRoot":"","sources":["../src/consolidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,31 @@ export declare class NativeModuleError extends Error {
|
|
|
4
4
|
originalError: Error;
|
|
5
5
|
constructor(originalError: Error);
|
|
6
6
|
}
|
|
7
|
-
export declare
|
|
7
|
+
export declare function isBusyError(err: unknown): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Execute `fn` and retry on transient SQLITE_BUSY errors.
|
|
10
|
+
*
|
|
11
|
+
* WAL + busy_timeout=5000ms already handles most single-statement contention.
|
|
12
|
+
* This helper guards transactions / multi-statement paths where a single
|
|
13
|
+
* statement can still exceed the busy grace under N-parallel-daemon load,
|
|
14
|
+
* surfacing SQLITE_BUSY to callers.
|
|
15
|
+
*
|
|
16
|
+
* Delays follow the pattern 50ms / 150ms / 500ms with small jitter.
|
|
17
|
+
* On final failure, the original SQLITE_BUSY error is propagated as-is.
|
|
18
|
+
*/
|
|
19
|
+
export declare function withBusyRetry<T>(fn: () => T | Promise<T>, opts?: {
|
|
20
|
+
attempts?: number;
|
|
21
|
+
baseDelayMs?: number;
|
|
22
|
+
}): Promise<T>;
|
|
23
|
+
/**
|
|
24
|
+
* Synchronous variant. Uses Atomics.wait for backoff so it can run inside
|
|
25
|
+
* non-async hot paths (watcher, CLI init, migration).
|
|
26
|
+
*/
|
|
27
|
+
export declare function withBusyRetrySync<T>(fn: () => T, opts?: {
|
|
28
|
+
attempts?: number;
|
|
29
|
+
baseDelayMs?: number;
|
|
30
|
+
}): T;
|
|
31
|
+
export declare const SCHEMA_DDL = "\n CREATE TABLE IF NOT EXISTS vault (\n id TEXT PRIMARY KEY,\n kind TEXT NOT NULL,\n category TEXT NOT NULL DEFAULT 'knowledge',\n title TEXT,\n body TEXT NOT NULL,\n meta TEXT,\n tags TEXT,\n source TEXT,\n file_path TEXT UNIQUE,\n identity_key TEXT,\n expires_at TEXT,\n superseded_by TEXT,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT,\n hit_count INTEGER DEFAULT 0,\n last_accessed_at TEXT,\n source_files TEXT,\n tier TEXT DEFAULT 'working' CHECK(tier IN ('ephemeral', 'working', 'durable')),\n related_to TEXT,\n indexed INTEGER DEFAULT 1,\n recall_count INTEGER DEFAULT 0,\n recall_sessions INTEGER DEFAULT 0,\n last_recalled_at TEXT,\n heat_tier TEXT CHECK(heat_tier IN ('hot', 'warm', 'cold')),\n summary_condensed TEXT,\n summary_keypoint TEXT\n );\n\n CREATE INDEX IF NOT EXISTS idx_vault_kind ON vault(kind);\n CREATE INDEX IF NOT EXISTS idx_vault_category ON vault(category);\n CREATE INDEX IF NOT EXISTS idx_vault_category_created ON vault(category, created_at DESC);\n CREATE INDEX IF NOT EXISTS idx_vault_updated ON vault(updated_at DESC);\n CREATE UNIQUE INDEX IF NOT EXISTS idx_vault_identity ON vault(kind, identity_key) WHERE identity_key IS NOT NULL AND category = 'entity';\n CREATE INDEX IF NOT EXISTS idx_vault_superseded ON vault(superseded_by) WHERE superseded_by IS NOT NULL;\n CREATE INDEX IF NOT EXISTS idx_vault_tier ON vault(tier);\n CREATE INDEX IF NOT EXISTS idx_vault_indexed ON vault(indexed);\n CREATE INDEX IF NOT EXISTS idx_vault_heat_tier ON vault(heat_tier) WHERE heat_tier IS NOT NULL;\n\n CREATE VIRTUAL TABLE IF NOT EXISTS vault_fts USING fts5(\n title, body, tags, kind,\n content='vault', content_rowid='rowid'\n );\n\n CREATE TRIGGER IF NOT EXISTS vault_ai AFTER INSERT ON vault WHEN new.indexed = 1 BEGIN\n INSERT INTO vault_fts(rowid, title, body, tags, kind)\n VALUES (new.rowid, new.title, new.body, new.tags, new.kind);\n END;\n CREATE TRIGGER IF NOT EXISTS vault_ad AFTER DELETE ON vault WHEN old.indexed = 1 BEGIN\n INSERT INTO vault_fts(vault_fts, rowid, title, body, tags, kind)\n VALUES ('delete', old.rowid, old.title, old.body, old.tags, old.kind);\n END;\n CREATE TRIGGER IF NOT EXISTS vault_au AFTER UPDATE ON vault WHEN old.indexed = 1 OR new.indexed = 1 BEGIN\n INSERT INTO vault_fts(vault_fts, rowid, title, body, tags, kind)\n VALUES ('delete', old.rowid, old.title, old.body, old.tags, old.kind);\n INSERT INTO vault_fts(rowid, title, body, tags, kind)\n SELECT new.rowid, new.title, new.body, new.tags, new.kind WHERE new.indexed = 1;\n END;\n\n CREATE VIRTUAL TABLE IF NOT EXISTS vault_vec USING vec0(embedding float[384]);\n\n CREATE VIRTUAL TABLE IF NOT EXISTS vault_ctx_vec USING vec0(embedding float[384]);\n\n CREATE TABLE IF NOT EXISTS co_retrievals (\n entry_a TEXT NOT NULL,\n entry_b TEXT NOT NULL,\n count INTEGER DEFAULT 1,\n last_at TEXT NOT NULL,\n PRIMARY KEY (entry_a, entry_b)\n );\n\n CREATE TABLE IF NOT EXISTS access_log (\n id INTEGER PRIMARY KEY,\n entry_id TEXT NOT NULL,\n query TEXT,\n session_id TEXT,\n session_goal TEXT,\n accessed_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n CREATE INDEX IF NOT EXISTS idx_access_log_entry_at ON access_log(entry_id, accessed_at);\n CREATE INDEX IF NOT EXISTS idx_access_log_goal ON access_log(session_goal) WHERE session_goal IS NOT NULL;\n";
|
|
8
32
|
export declare function initDatabase(dbPath: string): Promise<DatabaseSync>;
|
|
9
33
|
export declare function prepareStatements(db: DatabaseSync): PreparedStatements;
|
|
10
34
|
export declare function insertVec(stmts: PreparedStatements, rowid: number, embedding: Float32Array): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAiDrD,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,aAAa,EAAE,KAAK,CAAC;gBACT,aAAa,EAAE,KAAK;CAMjC;AAiED,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAiDrD,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,aAAa,EAAE,KAAK,CAAC;gBACT,aAAa,EAAE,KAAK;CAMjC;AAiED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAQjD;AAID;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACxB,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACrD,OAAO,CAAC,CAAC,CAAC,CAmBZ;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,EAAE,EAAE,MAAM,CAAC,EACX,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACrD,CAAC,CAoBH;AAED,eAAO,MAAM,UAAU,6jHAkFtB,CAAC;AAIF,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA2KxE;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY,GAAG,kBAAkB,CAmCtE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI,CAIjG;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIxE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,GAAG,IAAI,CAIpG;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI3E;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAOxD"}
|