pmem-ai 0.5.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/CHANGELOG.md +57 -0
- package/LICENSE +21 -0
- package/README.md +349 -0
- package/dist/commands/ask.d.ts +3 -0
- package/dist/commands/ask.d.ts.map +1 -0
- package/dist/commands/ask.js +303 -0
- package/dist/commands/ask.js.map +1 -0
- package/dist/commands/distill.d.ts +6 -0
- package/dist/commands/distill.d.ts.map +1 -0
- package/dist/commands/distill.js +425 -0
- package/dist/commands/distill.js.map +1 -0
- package/dist/commands/graph.d.ts +6 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +216 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +566 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/integration.d.ts +2 -0
- package/dist/commands/integration.d.ts.map +1 -0
- package/dist/commands/integration.js +216 -0
- package/dist/commands/integration.js.map +1 -0
- package/dist/commands/migrate.d.ts +6 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +379 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/rebuild.d.ts +8 -0
- package/dist/commands/rebuild.d.ts.map +1 -0
- package/dist/commands/rebuild.js +299 -0
- package/dist/commands/rebuild.js.map +1 -0
- package/dist/commands/recall.d.ts +3 -0
- package/dist/commands/recall.d.ts.map +1 -0
- package/dist/commands/recall.js +140 -0
- package/dist/commands/recall.js.map +1 -0
- package/dist/commands/session.d.ts +3 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +147 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +275 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +14 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +536 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/verify.d.ts +4 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +296 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/core/db.d.ts +47 -0
- package/dist/core/db.d.ts.map +1 -0
- package/dist/core/db.js +326 -0
- package/dist/core/db.js.map +1 -0
- package/dist/core/format.d.ts +3 -0
- package/dist/core/format.d.ts.map +1 -0
- package/dist/core/format.js +221 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/fs.d.ts +16 -0
- package/dist/core/fs.d.ts.map +1 -0
- package/dist/core/fs.js +175 -0
- package/dist/core/fs.js.map +1 -0
- package/dist/core/git.d.ts +6 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +20 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/hash.d.ts +10 -0
- package/dist/core/hash.d.ts.map +1 -0
- package/dist/core/hash.js +25 -0
- package/dist/core/hash.js.map +1 -0
- package/dist/core/manifest.d.ts +6 -0
- package/dist/core/manifest.d.ts.map +1 -0
- package/dist/core/manifest.js +207 -0
- package/dist/core/manifest.js.map +1 -0
- package/dist/core/yaml.d.ts +11 -0
- package/dist/core/yaml.d.ts.map +1 -0
- package/dist/core/yaml.js +94 -0
- package/dist/core/yaml.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +167 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +351 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/docs/Voorlopige projekidee.md +695 -0
- package/docs/handover-v0.3.md +355 -0
- package/docs/handover-v0.4.md +367 -0
- package/docs/prd.md +318 -0
- package/docs/project-roadmap.md +279 -0
- package/docs/release-checklist-v0.5.md +109 -0
- package/docs/v0.2 pre-design.md +182 -0
- package/docs/v0.2 pre-roadmap.md +270 -0
- package/docs/v0.3 pre-design.md +686 -0
- package/docs/v0.4 pre-design.md +417 -0
- package/docs/v0.5 pre-design.md +481 -0
- package/package.json +67 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.verifyCommand = verifyCommand;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const fs_1 = require("fs");
|
|
39
|
+
const fs_2 = require("../core/fs");
|
|
40
|
+
const manifest_1 = require("../core/manifest");
|
|
41
|
+
const db_1 = require("../core/db");
|
|
42
|
+
const hash_1 = require("../core/hash");
|
|
43
|
+
const rebuild_1 = require("./rebuild");
|
|
44
|
+
const PMEM_DIR = '.pmem';
|
|
45
|
+
function verifyCommand(options) {
|
|
46
|
+
const cwd = process.cwd();
|
|
47
|
+
const pmemPath = path.join(cwd, PMEM_DIR);
|
|
48
|
+
if (!(0, fs_2.fileExists)(pmemPath)) {
|
|
49
|
+
console.log('No .pmem directory found. Run `pmem init` first.');
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const issues = [];
|
|
53
|
+
// 1. Check manifest exists
|
|
54
|
+
const manifest = (0, manifest_1.loadManifest)(pmemPath);
|
|
55
|
+
if (!manifest) {
|
|
56
|
+
issues.push({
|
|
57
|
+
severity: 'error',
|
|
58
|
+
type: 'missing_manifest',
|
|
59
|
+
message: '.pmem/manifest.yml not found or invalid.',
|
|
60
|
+
fix: 'Run: pmem init',
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
// 2. Check SQLite DB exists
|
|
64
|
+
const dbPath = path.join(pmemPath, 'pmem.db');
|
|
65
|
+
const dbExists = (0, fs_2.fileExists)(dbPath);
|
|
66
|
+
let db = null;
|
|
67
|
+
if (!dbExists) {
|
|
68
|
+
issues.push({
|
|
69
|
+
severity: 'warning',
|
|
70
|
+
type: 'missing_database',
|
|
71
|
+
message: '.pmem/pmem.db not found.',
|
|
72
|
+
fix: 'Run: pmem rebuild',
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
try {
|
|
77
|
+
db = (0, db_1.openDatabase)(pmemPath);
|
|
78
|
+
(0, db_1.createSchema)(db);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
issues.push({
|
|
82
|
+
severity: 'error',
|
|
83
|
+
type: 'corrupt_database',
|
|
84
|
+
message: err?.message || '.pmem/pmem.db is corrupted.',
|
|
85
|
+
fix: 'Back up the file if needed, then run: pmem rebuild --full',
|
|
86
|
+
});
|
|
87
|
+
db = null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (manifest) {
|
|
91
|
+
// 3. Check schema version
|
|
92
|
+
const currentSchema = manifest.pmem?.schema_version;
|
|
93
|
+
if (!currentSchema) {
|
|
94
|
+
issues.push({
|
|
95
|
+
severity: 'warning',
|
|
96
|
+
type: 'missing_schema_version',
|
|
97
|
+
message: 'Manifest is missing pmem.schema_version.',
|
|
98
|
+
fix: 'Run: pmem migrate --to 0.3',
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else if (currentSchema < '0.3') {
|
|
102
|
+
issues.push({
|
|
103
|
+
severity: 'warning',
|
|
104
|
+
type: 'old_schema_version',
|
|
105
|
+
message: `Project schema version is ${currentSchema}. Current CLI supports 0.3.`,
|
|
106
|
+
fix: 'Run: pmem migrate --to 0.3',
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
else if (currentSchema > '0.3') {
|
|
110
|
+
issues.push({
|
|
111
|
+
severity: 'error',
|
|
112
|
+
type: 'newer_schema_version',
|
|
113
|
+
message: `Project schema version is ${currentSchema}. Current CLI only supports up to 0.3.`,
|
|
114
|
+
fix: 'Please upgrade pmem CLI to a newer version.',
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
if (db) {
|
|
118
|
+
const cards = db.prepare('SELECT * FROM cards WHERE is_deleted = 0').all();
|
|
119
|
+
// 4. Hash consistency — compare DB file_hash against actual .md file content
|
|
120
|
+
for (const card of cards) {
|
|
121
|
+
const cardFilePath = path.join(cwd, card.file_path);
|
|
122
|
+
if (!(0, fs_2.fileExists)(cardFilePath)) {
|
|
123
|
+
issues.push({
|
|
124
|
+
severity: 'warning',
|
|
125
|
+
type: 'missing_card_file',
|
|
126
|
+
message: `Card "${card.id}" references missing file: ${card.file_path}`,
|
|
127
|
+
fix: 'Run: pmem rebuild',
|
|
128
|
+
});
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const content = (0, fs_2.readFile)(cardFilePath);
|
|
132
|
+
if (!content)
|
|
133
|
+
continue;
|
|
134
|
+
const currentFileHash = (0, hash_1.computeHash)(content);
|
|
135
|
+
if (currentFileHash !== card.file_hash) {
|
|
136
|
+
issues.push({
|
|
137
|
+
severity: 'warning',
|
|
138
|
+
type: 'stale_index',
|
|
139
|
+
message: `Card "${card.id}" file hash mismatch (stored: ${card.file_hash}, current: ${currentFileHash}).`,
|
|
140
|
+
fix: 'Run: pmem rebuild',
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// 5. Orphan edges — edges referencing non-existent card IDs
|
|
145
|
+
const orphanFrom = db.prepare('SELECT e.* FROM edges e LEFT JOIN cards c ON e.from_id = c.id WHERE c.id IS NULL').all();
|
|
146
|
+
const orphanTo = db.prepare('SELECT e.* FROM edges e LEFT JOIN cards c ON e.to_id = c.id WHERE c.id IS NULL').all();
|
|
147
|
+
const orphanEdgeSet = new Map();
|
|
148
|
+
for (const e of orphanFrom) {
|
|
149
|
+
if (e.id !== undefined)
|
|
150
|
+
orphanEdgeSet.set(e.id, e);
|
|
151
|
+
}
|
|
152
|
+
for (const e of orphanTo) {
|
|
153
|
+
if (e.id !== undefined && !orphanEdgeSet.has(e.id))
|
|
154
|
+
orphanEdgeSet.set(e.id, e);
|
|
155
|
+
}
|
|
156
|
+
if (orphanEdgeSet.size > 0) {
|
|
157
|
+
issues.push({
|
|
158
|
+
severity: 'warning',
|
|
159
|
+
type: 'orphan_edges',
|
|
160
|
+
message: `${orphanEdgeSet.size} edge(s) reference non-existent card IDs.`,
|
|
161
|
+
fix: 'Run: pmem rebuild',
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
// 6. Card policy checks
|
|
165
|
+
if (manifest.card_policy) {
|
|
166
|
+
const policy = manifest.card_policy;
|
|
167
|
+
// 6a. ID naming pattern
|
|
168
|
+
const idRegex = new RegExp(policy.id_pattern);
|
|
169
|
+
for (const card of cards) {
|
|
170
|
+
if (!idRegex.test(card.id)) {
|
|
171
|
+
issues.push({
|
|
172
|
+
severity: 'warning',
|
|
173
|
+
type: 'card_id_violation',
|
|
174
|
+
message: `Card "${card.id}" does not match naming pattern.`,
|
|
175
|
+
fix: `Rename card ID to match: ${policy.id_pattern}`,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// 6b. Token count limits — read files and estimate tokens
|
|
180
|
+
for (const card of cards) {
|
|
181
|
+
const filePath = path.join(cwd, card.file_path);
|
|
182
|
+
const content = (0, fs_2.readFile)(filePath);
|
|
183
|
+
if (content) {
|
|
184
|
+
const estimatedTokens = (0, hash_1.tokenCount)(content);
|
|
185
|
+
const maxForType = policy.max_tokens[card.type];
|
|
186
|
+
if (maxForType && estimatedTokens > maxForType) {
|
|
187
|
+
issues.push({
|
|
188
|
+
severity: 'warning',
|
|
189
|
+
type: 'card_too_large',
|
|
190
|
+
message: `Card "${card.id}" is ~${estimatedTokens} tokens (max for ${card.type}: ${maxForType}).`,
|
|
191
|
+
fix: 'Consider splitting this card or run `pmem distill --suggest-splits`.',
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
// 6c. Relation count threshold
|
|
197
|
+
for (const card of cards) {
|
|
198
|
+
const { count: relatedEdgeCount } = db.prepare('SELECT COUNT(*) as count FROM edges WHERE from_id = ? OR to_id = ?').get(card.id, card.id);
|
|
199
|
+
if (relatedEdgeCount > policy.warn_when_related_count_gt) {
|
|
200
|
+
issues.push({
|
|
201
|
+
severity: 'warning',
|
|
202
|
+
type: 'too_many_relations',
|
|
203
|
+
message: `Card "${card.id}" has ${relatedEdgeCount} relations (threshold: ${policy.warn_when_related_count_gt}).`,
|
|
204
|
+
fix: 'Review whether all relations are necessary.',
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// 9. Stale memory: source files newer than card update time
|
|
210
|
+
for (const card of cards) {
|
|
211
|
+
const sourceFiles = db.prepare("SELECT p.path FROM paths p WHERE p.card_id = ? AND p.relation = 'source_file'").all(card.id);
|
|
212
|
+
const cardUpdated = card.updated_at || card.last_verified_at;
|
|
213
|
+
if (!cardUpdated)
|
|
214
|
+
continue;
|
|
215
|
+
const cardUpdatedMs = new Date(cardUpdated).getTime();
|
|
216
|
+
for (const sourceFile of sourceFiles) {
|
|
217
|
+
const absPath = path.join(cwd, sourceFile.path);
|
|
218
|
+
if (!(0, fs_2.fileExists)(absPath))
|
|
219
|
+
continue;
|
|
220
|
+
try {
|
|
221
|
+
const sourceStat = (0, fs_1.statSync)(absPath);
|
|
222
|
+
if (sourceStat.mtimeMs > cardUpdatedMs) {
|
|
223
|
+
issues.push({
|
|
224
|
+
severity: 'warning',
|
|
225
|
+
type: 'stale_memory',
|
|
226
|
+
message: `${card.id} may be stale — ${sourceFile.path} modified after last card update`,
|
|
227
|
+
fix: `Run: pmem update --confirm to update ${card.id}.`,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// skip files that can't be stat'd
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// 7. Check AGENTS.md exists
|
|
238
|
+
if (!(0, fs_2.fileExists)(path.join(cwd, 'AGENTS.md'))) {
|
|
239
|
+
issues.push({
|
|
240
|
+
severity: 'warning',
|
|
241
|
+
type: 'missing_agents',
|
|
242
|
+
message: 'AGENTS.md not found in project root.',
|
|
243
|
+
fix: 'Run: pmem init',
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
// 8. Check memory_status.dirty
|
|
247
|
+
if (manifest.memory_status?.dirty) {
|
|
248
|
+
issues.push({
|
|
249
|
+
severity: 'warning',
|
|
250
|
+
type: 'memory_dirty',
|
|
251
|
+
message: `Memory is marked dirty since ${manifest.memory_status.dirty_since || 'unknown'}. Reason: ${manifest.memory_status.dirty_reason || 'unknown'}.`,
|
|
252
|
+
fix: 'Run: pmem update --auto (to detect changes) or pmem update --confirm (to record updates).',
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// Build result
|
|
257
|
+
const errors = issues.filter(i => i.severity === 'error');
|
|
258
|
+
const warnings = issues.filter(i => i.severity === 'warning');
|
|
259
|
+
const passed = errors.length === 0;
|
|
260
|
+
const score = Math.max(0, 100 - errors.length * 30 - warnings.length * 5);
|
|
261
|
+
const result = { passed, score, issues };
|
|
262
|
+
// Output
|
|
263
|
+
if (passed && warnings.length === 0) {
|
|
264
|
+
console.log(`✓ Memory verification passed.`);
|
|
265
|
+
console.log(` Score: ${score}/100`);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
console.log(`Memory Verify Result: ${passed ? 'Warnings found' : 'Failed'}`);
|
|
269
|
+
console.log(`Score: ${score}/100`);
|
|
270
|
+
console.log('');
|
|
271
|
+
for (const issue of issues) {
|
|
272
|
+
const icon = issue.severity === 'error' ? '✗' : '⚠';
|
|
273
|
+
console.log(`${icon} [${issue.type}] ${issue.message}`);
|
|
274
|
+
console.log(` Fix: ${issue.fix}`);
|
|
275
|
+
console.log('');
|
|
276
|
+
}
|
|
277
|
+
// Auto-fix if requested
|
|
278
|
+
if (options.fix) {
|
|
279
|
+
const fixableIssue = issues.find(i => i.type === 'stale_index' ||
|
|
280
|
+
i.type === 'missing_database' ||
|
|
281
|
+
i.type === 'missing_card_file' ||
|
|
282
|
+
i.type === 'orphan_edges');
|
|
283
|
+
if (fixableIssue) {
|
|
284
|
+
console.log('Auto-fixing: rebuilding indexes...');
|
|
285
|
+
(0, rebuild_1.rebuildCommand)();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
const hasErrors = issues.some(i => i.severity === 'error');
|
|
289
|
+
const hasWarnings = issues.some(i => i.severity === 'warning');
|
|
290
|
+
if (hasErrors)
|
|
291
|
+
process.exit(2);
|
|
292
|
+
if (hasWarnings)
|
|
293
|
+
process.exit(1);
|
|
294
|
+
process.exit(0);
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
export declare function openDatabase(pmemPath: string): Database.Database;
|
|
3
|
+
export declare function closeDatabase(): void;
|
|
4
|
+
export declare function getDatabase(): Database.Database | null;
|
|
5
|
+
export declare function createSchema(db: Database.Database): void;
|
|
6
|
+
export declare function hasFTS5(db: Database.Database): boolean;
|
|
7
|
+
export declare function createFTS5(db: Database.Database): void;
|
|
8
|
+
export declare function getSchemaVersion(db: Database.Database): string | null;
|
|
9
|
+
export declare function setSchemaVersion(db: Database.Database, version: string): void;
|
|
10
|
+
export declare function upsertCard(db: Database.Database, card: import('../types').CardRow): void;
|
|
11
|
+
export declare function deleteCardEdges(db: Database.Database, cardId: string): void;
|
|
12
|
+
export declare function insertEdge(db: Database.Database, edge: import('../types').EdgeRow): void;
|
|
13
|
+
export declare function deleteCardAliases(db: Database.Database, cardId: string): void;
|
|
14
|
+
export declare function insertAlias(db: Database.Database, cardId: string, alias: string, language?: string): void;
|
|
15
|
+
export declare function deleteCardTags(db: Database.Database, cardId: string): void;
|
|
16
|
+
export declare function insertTag(db: Database.Database, cardId: string, tag: string): void;
|
|
17
|
+
export declare function deleteCardPaths(db: Database.Database, cardId: string): void;
|
|
18
|
+
export declare function insertPath(db: Database.Database, cardId: string, filePath: string, relation: string): void;
|
|
19
|
+
export declare function clearAllTables(db: Database.Database): void;
|
|
20
|
+
export declare function getCardHash(db: Database.Database, filePath: string): {
|
|
21
|
+
file_hash: string;
|
|
22
|
+
frontmatter_hash: string;
|
|
23
|
+
body_hash: string;
|
|
24
|
+
} | null;
|
|
25
|
+
export declare function insertDirtyFlag(db: Database.Database, scope: string, target: string, reason: string, sessionId?: string): void;
|
|
26
|
+
export declare function resolveDirtyFlags(db: Database.Database, scope?: string, target?: string): number;
|
|
27
|
+
export declare function getUnresolvedDirtyFlags(db: Database.Database): Array<{
|
|
28
|
+
scope: string;
|
|
29
|
+
target: string;
|
|
30
|
+
reason: string;
|
|
31
|
+
created_at: string;
|
|
32
|
+
}>;
|
|
33
|
+
export declare function startSession(db: Database.Database, id: string, agentName?: string): void;
|
|
34
|
+
export declare function endSession(db: Database.Database, id: string, status?: string, taskSummary?: string): void;
|
|
35
|
+
export declare function getActiveSession(db: Database.Database): {
|
|
36
|
+
id: string;
|
|
37
|
+
agent_name: string | null;
|
|
38
|
+
started_at: string;
|
|
39
|
+
} | null;
|
|
40
|
+
export declare function insertUpdateLog(db: Database.Database, action: string, summary?: string, sessionId?: string, affectedCards?: string[], success?: boolean, error?: string): void;
|
|
41
|
+
export declare function getRecentUpdateLogs(db: Database.Database, limit?: number): Array<{
|
|
42
|
+
action: string;
|
|
43
|
+
summary: string | null;
|
|
44
|
+
created_at: string;
|
|
45
|
+
success: number;
|
|
46
|
+
}>;
|
|
47
|
+
//# sourceMappingURL=db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/core/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAMtC,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAkBhE;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAEtD;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAmGxD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAOtD;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAYtD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,CAOrE;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7E;AAID,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,UAAU,EAAE,OAAO,GAAG,IAAI,CASxF;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE3E;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,UAAU,EAAE,OAAO,GAAG,IAAI,CAKxF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE7E;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAIzG;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE1E;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAIlF;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAE3E;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAG1G;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAW1D;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAI9I;AAID,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAI9H;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAUhG;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAI3I;AAID,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAIxF;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAIzG;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAK5H;AAID,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAa9K;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAE,MAAW,GAAG,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAIrK"}
|