context-vault 3.1.7 → 3.2.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 +11 -11
- package/dist/archive.d.ts +23 -0
- package/dist/archive.d.ts.map +1 -0
- package/dist/archive.js +197 -0
- package/dist/archive.js.map +1 -0
- package/dist/consolidation.d.ts +14 -0
- package/dist/consolidation.d.ts.map +1 -0
- package/dist/consolidation.js +59 -0
- package/dist/consolidation.js.map +1 -0
- package/dist/error-log.d.ts +4 -0
- package/dist/error-log.d.ts.map +1 -0
- package/dist/error-log.js +33 -0
- package/dist/error-log.js.map +1 -0
- package/dist/helpers.d.ts +10 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +42 -0
- package/dist/helpers.js.map +1 -0
- package/dist/linking.d.ts +13 -0
- package/dist/linking.d.ts.map +1 -0
- package/dist/linking.js +86 -0
- package/dist/linking.js.map +1 -0
- package/dist/migrate-dirs.d.ts +16 -0
- package/dist/migrate-dirs.d.ts.map +1 -0
- package/dist/migrate-dirs.js +127 -0
- package/dist/migrate-dirs.js.map +1 -0
- package/dist/register-tools.d.ts +3 -0
- package/dist/register-tools.d.ts.map +1 -0
- package/dist/register-tools.js +161 -0
- package/dist/register-tools.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +241 -0
- package/dist/server.js.map +1 -0
- package/dist/status.d.ts +18 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +265 -0
- package/dist/status.js.map +1 -0
- package/dist/telemetry.d.ts +6 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +74 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/temporal.d.ts +9 -0
- package/dist/temporal.d.ts.map +1 -0
- package/dist/temporal.js +76 -0
- package/dist/temporal.js.map +1 -0
- package/dist/tools/clear-context.d.ts +11 -0
- package/dist/tools/clear-context.d.ts.map +1 -0
- package/dist/tools/clear-context.js +28 -0
- package/dist/tools/clear-context.js.map +1 -0
- package/dist/tools/context-status.d.ts +6 -0
- package/dist/tools/context-status.d.ts.map +1 -0
- package/dist/tools/context-status.js +160 -0
- package/dist/tools/context-status.js.map +1 -0
- package/dist/tools/create-snapshot.d.ts +13 -0
- package/dist/tools/create-snapshot.d.ts.map +1 -0
- package/dist/tools/create-snapshot.js +161 -0
- package/dist/tools/create-snapshot.js.map +1 -0
- package/dist/tools/delete-context.d.ts +9 -0
- package/dist/tools/delete-context.d.ts.map +1 -0
- package/dist/tools/delete-context.js +45 -0
- package/dist/tools/delete-context.js.map +1 -0
- package/dist/tools/get-context.d.ts +83 -0
- package/dist/tools/get-context.d.ts.map +1 -0
- package/dist/tools/get-context.js +598 -0
- package/dist/tools/get-context.js.map +1 -0
- package/dist/tools/ingest-project.d.ts +11 -0
- package/dist/tools/ingest-project.d.ts.map +1 -0
- package/dist/tools/ingest-project.js +226 -0
- package/dist/tools/ingest-project.js.map +1 -0
- package/dist/tools/ingest-url.d.ts +11 -0
- package/dist/tools/ingest-url.d.ts.map +1 -0
- package/dist/tools/ingest-url.js +62 -0
- package/dist/tools/ingest-url.js.map +1 -0
- package/dist/tools/list-buckets.d.ts +9 -0
- package/dist/tools/list-buckets.d.ts.map +1 -0
- package/dist/tools/list-buckets.js +76 -0
- package/dist/tools/list-buckets.js.map +1 -0
- package/dist/tools/list-context.d.ts +19 -0
- package/dist/tools/list-context.d.ts.map +1 -0
- package/dist/tools/list-context.js +110 -0
- package/dist/tools/list-context.js.map +1 -0
- package/dist/tools/save-context.d.ts +36 -0
- package/dist/tools/save-context.d.ts.map +1 -0
- package/dist/tools/save-context.js +466 -0
- package/dist/tools/save-context.js.map +1 -0
- package/dist/tools/session-start.d.ts +11 -0
- package/dist/tools/session-start.d.ts.map +1 -0
- package/dist/tools/session-start.js +224 -0
- package/dist/tools/session-start.js.map +1 -0
- package/dist/types.d.ts +37 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/node_modules/@context-vault/core/dist/constants.d.ts +1 -1
- package/node_modules/@context-vault/core/dist/constants.d.ts.map +1 -1
- package/node_modules/@context-vault/core/dist/constants.js +1 -1
- package/node_modules/@context-vault/core/dist/constants.js.map +1 -1
- package/node_modules/@context-vault/core/dist/search.d.ts +2 -1
- package/node_modules/@context-vault/core/dist/search.d.ts.map +1 -1
- package/node_modules/@context-vault/core/dist/search.js +6 -2
- package/node_modules/@context-vault/core/dist/search.js.map +1 -1
- package/node_modules/@context-vault/core/dist/types.d.ts +1 -0
- package/node_modules/@context-vault/core/dist/types.d.ts.map +1 -1
- package/node_modules/@context-vault/core/package.json +1 -1
- package/node_modules/@context-vault/core/src/constants.ts +1 -1
- package/node_modules/@context-vault/core/src/search.ts +7 -0
- package/node_modules/@context-vault/core/src/types.ts +1 -0
- package/package.json +10 -4
- package/src/{archive.js → archive.ts} +63 -30
- package/src/consolidation.ts +78 -0
- package/src/{error-log.js → error-log.ts} +3 -3
- package/src/{helpers.js → helpers.ts} +11 -5
- package/src/{linking.js → linking.ts} +14 -9
- package/src/{migrate-dirs.js → migrate-dirs.ts} +21 -8
- package/src/{register-tools.js → register-tools.ts} +21 -11
- package/src/{server.js → server.ts} +26 -20
- package/src/{status.js → status.ts} +60 -38
- package/src/{telemetry.js → telemetry.ts} +8 -4
- package/src/{temporal.js → temporal.ts} +10 -3
- package/src/tools/{clear-context.js → clear-context.ts} +2 -5
- package/src/tools/{context-status.js → context-status.ts} +6 -9
- package/src/tools/{create-snapshot.js → create-snapshot.ts} +11 -10
- package/src/tools/{delete-context.js → delete-context.ts} +9 -9
- package/src/tools/{get-context.js → get-context.ts} +72 -62
- package/src/tools/{ingest-project.js → ingest-project.ts} +19 -11
- package/src/tools/{ingest-url.js → ingest-url.ts} +11 -8
- package/src/tools/{list-buckets.js → list-buckets.ts} +11 -15
- package/src/tools/{list-context.js → list-context.ts} +13 -15
- package/src/tools/{save-context.js → save-context.ts} +54 -42
- package/src/tools/{session-start.js → session-start.ts} +29 -20
- package/src/types.ts +29 -0
package/dist/status.js
ADDED
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { walkDir } from '@context-vault/core/files';
|
|
4
|
+
import { isEmbedAvailable } from '@context-vault/core/embed';
|
|
5
|
+
import { KIND_STALENESS_DAYS } from '@context-vault/core/categories';
|
|
6
|
+
function countArchivedEntries(vaultDir) {
|
|
7
|
+
const archRoot = join(vaultDir, '_archive');
|
|
8
|
+
if (!existsSync(archRoot))
|
|
9
|
+
return 0;
|
|
10
|
+
try {
|
|
11
|
+
return walkDir(archRoot).length;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return 0;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function gatherVaultStatus(ctx, opts = {}) {
|
|
18
|
+
void opts;
|
|
19
|
+
const { db, config } = ctx;
|
|
20
|
+
const errors = [];
|
|
21
|
+
let fileCount = 0;
|
|
22
|
+
const subdirs = [];
|
|
23
|
+
try {
|
|
24
|
+
if (existsSync(config.vaultDir)) {
|
|
25
|
+
for (const d of readdirSync(config.vaultDir, { withFileTypes: true })) {
|
|
26
|
+
if (d.isDirectory()) {
|
|
27
|
+
const dir = join(config.vaultDir, d.name);
|
|
28
|
+
const count = walkDir(dir).length;
|
|
29
|
+
fileCount += count;
|
|
30
|
+
if (count > 0)
|
|
31
|
+
subdirs.push({ name: d.name, count });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
errors.push(`File scan failed: ${e.message}`);
|
|
38
|
+
}
|
|
39
|
+
let kindCounts = [];
|
|
40
|
+
try {
|
|
41
|
+
kindCounts = db.prepare(`SELECT kind, COUNT(*) as c FROM vault GROUP BY kind`).all();
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
errors.push(`Kind count query failed: ${e.message}`);
|
|
45
|
+
}
|
|
46
|
+
let categoryCounts = [];
|
|
47
|
+
try {
|
|
48
|
+
categoryCounts = db
|
|
49
|
+
.prepare(`SELECT category, COUNT(*) as c FROM vault GROUP BY category`)
|
|
50
|
+
.all();
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
errors.push(`Category count query failed: ${e.message}`);
|
|
54
|
+
}
|
|
55
|
+
let dbSize = 'n/a';
|
|
56
|
+
let dbSizeBytes = 0;
|
|
57
|
+
try {
|
|
58
|
+
if (existsSync(config.dbPath)) {
|
|
59
|
+
dbSizeBytes = statSync(config.dbPath).size;
|
|
60
|
+
dbSize =
|
|
61
|
+
dbSizeBytes > 1024 * 1024
|
|
62
|
+
? `${(dbSizeBytes / 1024 / 1024).toFixed(1)}MB`
|
|
63
|
+
: `${(dbSizeBytes / 1024).toFixed(1)}KB`;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
errors.push(`DB size check failed: ${e.message}`);
|
|
68
|
+
}
|
|
69
|
+
let stalePaths = false;
|
|
70
|
+
let staleCount = 0;
|
|
71
|
+
try {
|
|
72
|
+
const result = db
|
|
73
|
+
.prepare(`SELECT COUNT(*) as c FROM vault WHERE file_path NOT LIKE ? || '%'`)
|
|
74
|
+
.get(config.vaultDir);
|
|
75
|
+
staleCount = result?.c ?? 0;
|
|
76
|
+
stalePaths = staleCount > 0;
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
errors.push(`Stale path check failed: ${e.message}`);
|
|
80
|
+
}
|
|
81
|
+
let expiredCount = 0;
|
|
82
|
+
try {
|
|
83
|
+
const row = db
|
|
84
|
+
.prepare(`SELECT COUNT(*) as c FROM vault WHERE expires_at IS NOT NULL AND expires_at <= datetime('now')`)
|
|
85
|
+
.get();
|
|
86
|
+
expiredCount = row?.c ?? 0;
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
errors.push(`Expired count failed: ${e.message}`);
|
|
90
|
+
}
|
|
91
|
+
let eventCount = 0;
|
|
92
|
+
try {
|
|
93
|
+
const row = db.prepare(`SELECT COUNT(*) as c FROM vault WHERE category = 'event'`).get();
|
|
94
|
+
eventCount = row?.c ?? 0;
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
errors.push(`Event count failed: ${e.message}`);
|
|
98
|
+
}
|
|
99
|
+
let eventsWithoutTtlCount = 0;
|
|
100
|
+
try {
|
|
101
|
+
const row = db
|
|
102
|
+
.prepare(`SELECT COUNT(*) as c FROM vault WHERE category = 'event' AND expires_at IS NULL`)
|
|
103
|
+
.get();
|
|
104
|
+
eventsWithoutTtlCount = row?.c ?? 0;
|
|
105
|
+
}
|
|
106
|
+
catch (e) {
|
|
107
|
+
errors.push(`Events without TTL count failed: ${e.message}`);
|
|
108
|
+
}
|
|
109
|
+
let embeddingStatus = null;
|
|
110
|
+
try {
|
|
111
|
+
const totalRow = db.prepare(`SELECT COUNT(*) as c FROM vault`).get();
|
|
112
|
+
const indexedRow = db
|
|
113
|
+
.prepare(`SELECT COUNT(*) as c FROM vault WHERE rowid IN (SELECT rowid FROM vault_vec)`)
|
|
114
|
+
.get();
|
|
115
|
+
const total = totalRow?.c ?? 0;
|
|
116
|
+
const indexed = indexedRow?.c ?? 0;
|
|
117
|
+
embeddingStatus = { indexed, total, missing: total - indexed };
|
|
118
|
+
}
|
|
119
|
+
catch (e) {
|
|
120
|
+
errors.push(`Embedding status check failed: ${e.message}`);
|
|
121
|
+
}
|
|
122
|
+
const embedModelAvailable = isEmbedAvailable();
|
|
123
|
+
let autoCapturedFeedbackCount = 0;
|
|
124
|
+
try {
|
|
125
|
+
const row = db
|
|
126
|
+
.prepare(`SELECT COUNT(*) as c FROM vault WHERE kind = 'feedback' AND tags LIKE '%"auto-captured"%'`)
|
|
127
|
+
.get();
|
|
128
|
+
autoCapturedFeedbackCount = row?.c ?? 0;
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
errors.push(`Auto-captured feedback count failed: ${e.message}`);
|
|
132
|
+
}
|
|
133
|
+
let archivedCount = 0;
|
|
134
|
+
try {
|
|
135
|
+
archivedCount = countArchivedEntries(config.vaultDir);
|
|
136
|
+
}
|
|
137
|
+
catch (e) {
|
|
138
|
+
errors.push(`Archived count failed: ${e.message}`);
|
|
139
|
+
}
|
|
140
|
+
let staleKnowledge = [];
|
|
141
|
+
try {
|
|
142
|
+
const stalenessKinds = Object.entries(KIND_STALENESS_DAYS);
|
|
143
|
+
if (stalenessKinds.length > 0) {
|
|
144
|
+
const kindClauses = stalenessKinds
|
|
145
|
+
.map(([kind, days]) => `(kind = '${kind}' AND COALESCE(updated_at, created_at) <= datetime('now', '-${days} days'))`)
|
|
146
|
+
.join(' OR ');
|
|
147
|
+
staleKnowledge = db
|
|
148
|
+
.prepare(`SELECT kind, title, COALESCE(updated_at, created_at) as last_updated FROM vault WHERE category = 'knowledge' AND (${kindClauses}) AND (expires_at IS NULL OR expires_at > datetime('now')) ORDER BY last_updated ASC LIMIT 10`)
|
|
149
|
+
.all();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (e) {
|
|
153
|
+
errors.push(`Stale knowledge check failed: ${e.message}`);
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
fileCount,
|
|
157
|
+
subdirs,
|
|
158
|
+
kindCounts,
|
|
159
|
+
categoryCounts,
|
|
160
|
+
dbSize,
|
|
161
|
+
dbSizeBytes,
|
|
162
|
+
stalePaths,
|
|
163
|
+
staleCount,
|
|
164
|
+
expiredCount,
|
|
165
|
+
eventCount,
|
|
166
|
+
eventsWithoutTtlCount,
|
|
167
|
+
embeddingStatus,
|
|
168
|
+
embedModelAvailable,
|
|
169
|
+
autoCapturedFeedbackCount,
|
|
170
|
+
archivedCount,
|
|
171
|
+
staleKnowledge,
|
|
172
|
+
resolvedFrom: config.resolvedFrom,
|
|
173
|
+
errors,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
export function computeGrowthWarnings(status, thresholds) {
|
|
177
|
+
if (!thresholds)
|
|
178
|
+
return {
|
|
179
|
+
warnings: [],
|
|
180
|
+
hasCritical: false,
|
|
181
|
+
hasWarnings: false,
|
|
182
|
+
actions: [],
|
|
183
|
+
kindBreakdown: [],
|
|
184
|
+
};
|
|
185
|
+
const t = thresholds;
|
|
186
|
+
const warnings = [];
|
|
187
|
+
const actions = [];
|
|
188
|
+
const total = status.embeddingStatus?.total ?? 0;
|
|
189
|
+
const { eventCount = 0, eventsWithoutTtlCount = 0, expiredCount = 0, dbSizeBytes = 0 } = status;
|
|
190
|
+
let totalExceeded = false;
|
|
191
|
+
if (t.totalEntries?.critical != null && total >= t.totalEntries.critical) {
|
|
192
|
+
totalExceeded = true;
|
|
193
|
+
warnings.push({
|
|
194
|
+
level: 'critical',
|
|
195
|
+
message: `Total entries: ${total.toLocaleString()} (exceeds critical limit of ${t.totalEntries.critical.toLocaleString()})`,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
else if (t.totalEntries?.warn != null && total >= t.totalEntries.warn) {
|
|
199
|
+
totalExceeded = true;
|
|
200
|
+
warnings.push({
|
|
201
|
+
level: 'warn',
|
|
202
|
+
message: `Total entries: ${total.toLocaleString()} (exceeds recommended ${t.totalEntries.warn.toLocaleString()})`,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
if (t.eventEntries?.critical != null && eventCount >= t.eventEntries.critical) {
|
|
206
|
+
warnings.push({
|
|
207
|
+
level: 'critical',
|
|
208
|
+
message: `Event entries: ${eventCount.toLocaleString()} (exceeds critical limit of ${t.eventEntries.critical.toLocaleString()})`,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
else if (t.eventEntries?.warn != null && eventCount >= t.eventEntries.warn) {
|
|
212
|
+
const ttlNote = eventsWithoutTtlCount > 0 ? ` (${eventsWithoutTtlCount.toLocaleString()} without TTL)` : '';
|
|
213
|
+
warnings.push({
|
|
214
|
+
level: 'warn',
|
|
215
|
+
message: `Event entries: ${eventCount.toLocaleString()}${ttlNote} (exceeds recommended ${t.eventEntries.warn.toLocaleString()})`,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
if (t.vaultSizeBytes?.critical != null && dbSizeBytes >= t.vaultSizeBytes.critical) {
|
|
219
|
+
warnings.push({
|
|
220
|
+
level: 'critical',
|
|
221
|
+
message: `Database size: ${(dbSizeBytes / 1024 / 1024).toFixed(1)}MB (exceeds critical limit of ${(t.vaultSizeBytes.critical / 1024 / 1024).toFixed(0)}MB)`,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
else if (t.vaultSizeBytes?.warn != null && dbSizeBytes >= t.vaultSizeBytes.warn) {
|
|
225
|
+
warnings.push({
|
|
226
|
+
level: 'warn',
|
|
227
|
+
message: `Database size: ${(dbSizeBytes / 1024 / 1024).toFixed(1)}MB (exceeds recommended ${(t.vaultSizeBytes.warn / 1024 / 1024).toFixed(0)}MB)`,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
if (t.eventsWithoutTtl?.warn != null && eventsWithoutTtlCount >= t.eventsWithoutTtl.warn) {
|
|
231
|
+
warnings.push({
|
|
232
|
+
level: 'warn',
|
|
233
|
+
message: `Event entries without expires_at: ${eventsWithoutTtlCount.toLocaleString()} (exceeds recommended ${t.eventsWithoutTtl.warn.toLocaleString()})`,
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
const hasCritical = warnings.some((w) => w.level === 'critical');
|
|
237
|
+
if (expiredCount > 0) {
|
|
238
|
+
actions.push(`Run \`context-vault prune\` to remove ${expiredCount} expired event entr${expiredCount === 1 ? 'y' : 'ies'}`);
|
|
239
|
+
}
|
|
240
|
+
if (eventsWithoutTtlCount > 0 &&
|
|
241
|
+
(eventCount >= (t.eventEntries?.warn ?? Infinity) ||
|
|
242
|
+
eventsWithoutTtlCount >= (t.eventsWithoutTtl?.warn ?? Infinity))) {
|
|
243
|
+
actions.push('Add `expires_at` to event/session entries to enable automatic cleanup');
|
|
244
|
+
}
|
|
245
|
+
if (total >= (t.totalEntries?.warn ?? Infinity)) {
|
|
246
|
+
actions.push('Run `context-vault archive` to move old ephemeral/event entries to _archive/');
|
|
247
|
+
}
|
|
248
|
+
const kindBreakdown = totalExceeded && status.kindCounts?.length
|
|
249
|
+
? [...status.kindCounts]
|
|
250
|
+
.sort((a, b) => b.c - a.c)
|
|
251
|
+
.map(({ kind, c }) => ({
|
|
252
|
+
kind,
|
|
253
|
+
count: c,
|
|
254
|
+
pct: Math.round((c / total) * 100),
|
|
255
|
+
}))
|
|
256
|
+
: [];
|
|
257
|
+
return {
|
|
258
|
+
warnings,
|
|
259
|
+
hasCritical,
|
|
260
|
+
hasWarnings: warnings.length > 0,
|
|
261
|
+
actions,
|
|
262
|
+
kindBreakdown,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { VaultConfig } from '@context-vault/core/types';
|
|
2
|
+
export declare function isTelemetryEnabled(config: VaultConfig | null | undefined): boolean;
|
|
3
|
+
export declare function sendTelemetryEvent(config: VaultConfig | null | undefined, payload: Record<string, unknown>): void;
|
|
4
|
+
export declare function maybeShowTelemetryNotice(dataDir: string): void;
|
|
5
|
+
export declare function maybeShowFeedbackPrompt(dataDir: string): void;
|
|
6
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAM7D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAIlF;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,IAAI,CAoBN;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAoB9D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAiB7D"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { existsSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { API_URL, MARKETING_URL, GITHUB_ISSUES_URL } from '@context-vault/core/constants';
|
|
4
|
+
const TELEMETRY_ENDPOINT = `${API_URL}/telemetry`;
|
|
5
|
+
const NOTICE_MARKER = '.telemetry-notice-shown';
|
|
6
|
+
const FEEDBACK_PROMPT_MARKER = '.feedback-prompt-shown';
|
|
7
|
+
export function isTelemetryEnabled(config) {
|
|
8
|
+
const envVal = process.env.CONTEXT_VAULT_TELEMETRY;
|
|
9
|
+
if (envVal !== undefined)
|
|
10
|
+
return envVal === '1' || envVal === 'true';
|
|
11
|
+
return config?.telemetry === true;
|
|
12
|
+
}
|
|
13
|
+
export function sendTelemetryEvent(config, payload) {
|
|
14
|
+
if (!isTelemetryEnabled(config))
|
|
15
|
+
return;
|
|
16
|
+
const event = {
|
|
17
|
+
event: payload.event,
|
|
18
|
+
code: payload.code || null,
|
|
19
|
+
tool: payload.tool || null,
|
|
20
|
+
cv_version: payload.cv_version,
|
|
21
|
+
node_version: process.version,
|
|
22
|
+
platform: process.platform,
|
|
23
|
+
arch: process.arch,
|
|
24
|
+
ts: new Date().toISOString(),
|
|
25
|
+
};
|
|
26
|
+
fetch(TELEMETRY_ENDPOINT, {
|
|
27
|
+
method: 'POST',
|
|
28
|
+
headers: { 'Content-Type': 'application/json' },
|
|
29
|
+
body: JSON.stringify(event),
|
|
30
|
+
signal: AbortSignal.timeout(5000),
|
|
31
|
+
}).catch(() => { });
|
|
32
|
+
}
|
|
33
|
+
export function maybeShowTelemetryNotice(dataDir) {
|
|
34
|
+
try {
|
|
35
|
+
const markerPath = join(dataDir, NOTICE_MARKER);
|
|
36
|
+
if (existsSync(markerPath))
|
|
37
|
+
return;
|
|
38
|
+
writeFileSync(markerPath, new Date().toISOString() + '\n');
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const lines = [
|
|
44
|
+
'[context-vault] Telemetry: disabled by default.',
|
|
45
|
+
'[context-vault] To help improve context-vault, you can opt in to anonymous error reporting.',
|
|
46
|
+
'[context-vault] Reports contain only: event type, error code, tool name, version, node version, platform, arch, timestamp.',
|
|
47
|
+
'[context-vault] No vault content, file paths, or personal data is ever sent.',
|
|
48
|
+
'[context-vault] Opt in: set "telemetry": true in ~/.context-mcp/config.json or set CONTEXT_VAULT_TELEMETRY=1.',
|
|
49
|
+
`[context-vault] Full payload schema: ${MARKETING_URL}/telemetry`,
|
|
50
|
+
];
|
|
51
|
+
for (const line of lines) {
|
|
52
|
+
process.stderr.write(line + '\n');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function maybeShowFeedbackPrompt(dataDir) {
|
|
56
|
+
try {
|
|
57
|
+
const markerPath = join(dataDir, FEEDBACK_PROMPT_MARKER);
|
|
58
|
+
if (existsSync(markerPath))
|
|
59
|
+
return;
|
|
60
|
+
writeFileSync(markerPath, new Date().toISOString() + '\n');
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const lines = [
|
|
66
|
+
'[context-vault] First entry saved — nice work!',
|
|
67
|
+
'[context-vault] Got feedback, a bug, or a feature request?',
|
|
68
|
+
`[context-vault] Open an issue: ${GITHUB_ISSUES_URL}`,
|
|
69
|
+
];
|
|
70
|
+
for (const line of lines) {
|
|
71
|
+
process.stderr.write(line + '\n');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function resolveTemporalShortcut(role: 'since' | 'until', value: string, now?: Date): string;
|
|
2
|
+
export declare function resolveTemporalParams(params: {
|
|
3
|
+
since?: string;
|
|
4
|
+
until?: string;
|
|
5
|
+
}, now?: Date): {
|
|
6
|
+
since?: string;
|
|
7
|
+
until?: string;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=temporal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temporal.d.ts","sourceRoot":"","sources":["../src/temporal.ts"],"names":[],"mappings":"AAQA,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,GAAG,OAAO,EACvB,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,IAAiB,GACrB,MAAM,CAuDR;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1C,GAAG,GAAE,IAAiB,GACrB;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAapC"}
|
package/dist/temporal.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
const SHORTCUT_RE = /^last[_ ](\d+)[_ ](day|days|week|weeks|month|months)$/i;
|
|
2
|
+
function startOfToday(now) {
|
|
3
|
+
const d = new Date(now);
|
|
4
|
+
d.setUTCHours(0, 0, 0, 0);
|
|
5
|
+
return d;
|
|
6
|
+
}
|
|
7
|
+
export function resolveTemporalShortcut(role, value, now = new Date()) {
|
|
8
|
+
if (!value || typeof value !== 'string')
|
|
9
|
+
return value;
|
|
10
|
+
const trimmed = value.trim().toLowerCase().replace(/\s+/g, '_');
|
|
11
|
+
if (trimmed === 'today') {
|
|
12
|
+
const start = startOfToday(now);
|
|
13
|
+
if (role === 'until') {
|
|
14
|
+
const end = new Date(start);
|
|
15
|
+
end.setUTCDate(end.getUTCDate() + 1);
|
|
16
|
+
return end.toISOString();
|
|
17
|
+
}
|
|
18
|
+
return start.toISOString();
|
|
19
|
+
}
|
|
20
|
+
if (trimmed === 'yesterday') {
|
|
21
|
+
const todayStart = startOfToday(now);
|
|
22
|
+
const yesterdayStart = new Date(todayStart);
|
|
23
|
+
yesterdayStart.setUTCDate(yesterdayStart.getUTCDate() - 1);
|
|
24
|
+
if (role === 'since')
|
|
25
|
+
return yesterdayStart.toISOString();
|
|
26
|
+
return todayStart.toISOString();
|
|
27
|
+
}
|
|
28
|
+
if (trimmed === 'this_week') {
|
|
29
|
+
const todayStart = startOfToday(now);
|
|
30
|
+
const dayOfWeek = todayStart.getUTCDay();
|
|
31
|
+
const daysFromMonday = (dayOfWeek + 6) % 7;
|
|
32
|
+
const monday = new Date(todayStart);
|
|
33
|
+
monday.setUTCDate(monday.getUTCDate() - daysFromMonday);
|
|
34
|
+
if (role === 'since')
|
|
35
|
+
return monday.toISOString();
|
|
36
|
+
const endOfToday = new Date(todayStart);
|
|
37
|
+
endOfToday.setUTCDate(endOfToday.getUTCDate() + 1);
|
|
38
|
+
return endOfToday.toISOString();
|
|
39
|
+
}
|
|
40
|
+
if (trimmed === 'this_month') {
|
|
41
|
+
const d = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), 1));
|
|
42
|
+
if (role === 'since')
|
|
43
|
+
return d.toISOString();
|
|
44
|
+
const endOfMonth = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth() + 1, 1));
|
|
45
|
+
return endOfMonth.toISOString();
|
|
46
|
+
}
|
|
47
|
+
const m = SHORTCUT_RE.exec(trimmed);
|
|
48
|
+
if (m) {
|
|
49
|
+
const n = parseInt(m[1], 10);
|
|
50
|
+
const unit = m[2].replace(/s$/, '');
|
|
51
|
+
let ms;
|
|
52
|
+
if (unit === 'day')
|
|
53
|
+
ms = n * 86400000;
|
|
54
|
+
else if (unit === 'week')
|
|
55
|
+
ms = n * 7 * 86400000;
|
|
56
|
+
else
|
|
57
|
+
ms = n * 30 * 86400000;
|
|
58
|
+
const target = new Date(now.getTime() - ms);
|
|
59
|
+
target.setUTCHours(0, 0, 0, 0);
|
|
60
|
+
return target.toISOString();
|
|
61
|
+
}
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
export function resolveTemporalParams(params, now = new Date()) {
|
|
65
|
+
let { since, until } = params;
|
|
66
|
+
if (since?.trim().toLowerCase() === 'yesterday' && (until === undefined || until === null)) {
|
|
67
|
+
since = resolveTemporalShortcut('since', since, now);
|
|
68
|
+
until = resolveTemporalShortcut('until', 'yesterday', now);
|
|
69
|
+
return { since, until };
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
since: since !== undefined ? resolveTemporalShortcut('since', since, now) : since,
|
|
73
|
+
until: until !== undefined ? resolveTemporalShortcut('until', until, now) : until,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=temporal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temporal.js","sourceRoot":"","sources":["../src/temporal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { ToolResult } from '../types.js';
|
|
3
|
+
export declare const name = "clear_context";
|
|
4
|
+
export declare const description = "Reset active in-memory session context without deleting vault entries. Call this when switching projects or topics mid-session. With `scope`, all subsequent get_context calls should filter to that tag/project. Vault data is never modified.";
|
|
5
|
+
export declare const inputSchema: {
|
|
6
|
+
scope: z.ZodOptional<z.ZodString>;
|
|
7
|
+
};
|
|
8
|
+
export declare function handler({ scope }?: {
|
|
9
|
+
scope?: string;
|
|
10
|
+
}): ToolResult;
|
|
11
|
+
//# sourceMappingURL=clear-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-context.d.ts","sourceRoot":"","sources":["../../src/tools/clear-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,IAAI,kBAAkB,CAAC;AAEpC,eAAO,MAAM,WAAW,oPAC2N,CAAC;AAEpP,eAAO,MAAM,WAAW;;CAOvB,CAAC;AAEF,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,UAAU,CAsBtE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ok } from '../helpers.js';
|
|
3
|
+
export const name = 'clear_context';
|
|
4
|
+
export const description = 'Reset active in-memory session context without deleting vault entries. Call this when switching projects or topics mid-session. With `scope`, all subsequent get_context calls should filter to that tag/project. Vault data is never modified.';
|
|
5
|
+
export const inputSchema = {
|
|
6
|
+
scope: z
|
|
7
|
+
.string()
|
|
8
|
+
.optional()
|
|
9
|
+
.describe('Optional tag or project name to focus on going forward. When provided, treat subsequent get_context calls as if filtered to this tag.'),
|
|
10
|
+
};
|
|
11
|
+
export function handler({ scope } = {}) {
|
|
12
|
+
const lines = [
|
|
13
|
+
'## Context Reset',
|
|
14
|
+
'',
|
|
15
|
+
'Active session context has been cleared. All previous context from this session should be disregarded.',
|
|
16
|
+
'',
|
|
17
|
+
'Vault entries are unchanged — no data was deleted.',
|
|
18
|
+
];
|
|
19
|
+
if (scope?.trim()) {
|
|
20
|
+
const trimmed = scope.trim();
|
|
21
|
+
lines.push('', `### Active Scope: \`${trimmed}\``, '', `Going forward, treat \`get_context\` calls as scoped to the tag or project **"${trimmed}"** unless the user explicitly requests a different scope or passes their own tag filters.`);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
lines.push('', 'No scope set. Use `get_context` normally — all vault entries are accessible.');
|
|
25
|
+
}
|
|
26
|
+
return ok(lines.join('\n'));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=clear-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-context.js","sourceRoot":"","sources":["../../src/tools/clear-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAGnC,MAAM,CAAC,MAAM,IAAI,GAAG,eAAe,CAAC;AAEpC,MAAM,CAAC,MAAM,WAAW,GACtB,iPAAiP,CAAC;AAEpP,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,uIAAuI,CACxI;CACJ,CAAC;AAEF,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,KAAyB,EAAE;IACxD,MAAM,KAAK,GAAG;QACZ,kBAAkB;QAClB,EAAE;QACF,wGAAwG;QACxG,EAAE;QACF,oDAAoD;KACrD,CAAC;IAEF,IAAI,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CACR,EAAE,EACF,uBAAuB,OAAO,IAAI,EAClC,EAAE,EACF,iFAAiF,OAAO,4FAA4F,CACrL,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,8EAA8E,CAAC,CAAC;IACjG,CAAC;IAED,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LocalCtx, ToolResult } from '../types.js';
|
|
2
|
+
export declare const name = "context_status";
|
|
3
|
+
export declare const description = "Show vault health: resolved config, file counts per kind, database size, and any issues. Use to verify setup or troubleshoot. Call this when a user asks about their vault or to debug search issues.";
|
|
4
|
+
export declare const inputSchema: {};
|
|
5
|
+
export declare function handler(_args: Record<string, any>, ctx: LocalCtx): ToolResult;
|
|
6
|
+
//# sourceMappingURL=context-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-status.d.ts","sourceRoot":"","sources":["../../src/tools/context-status.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAWxD,eAAO,MAAM,IAAI,mBAAmB,CAAC;AAErC,eAAO,MAAM,WAAW,0MACiL,CAAC;AAE1M,eAAO,MAAM,WAAW,IAAK,CAAC;AAE9B,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,UAAU,CA2J7E"}
|