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,536 @@
|
|
|
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.updateCommand = updateCommand;
|
|
37
|
+
exports.markDirtyCommand = markDirtyCommand;
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const child_process_1 = require("child_process");
|
|
40
|
+
const fs_1 = require("../core/fs");
|
|
41
|
+
const manifest_1 = require("../core/manifest");
|
|
42
|
+
const rebuild_1 = require("./rebuild");
|
|
43
|
+
const db_1 = require("../core/db");
|
|
44
|
+
const git_1 = require("../core/git");
|
|
45
|
+
const PMEM_DIR = '.pmem';
|
|
46
|
+
function updateCommand(options) {
|
|
47
|
+
const cwd = process.cwd();
|
|
48
|
+
const pmemPath = path.join(cwd, PMEM_DIR);
|
|
49
|
+
if (!(0, fs_1.fileExists)(pmemPath)) {
|
|
50
|
+
console.log('No .pmem directory found. Run `pmem init` first.');
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const manifest = (0, manifest_1.loadManifest)(pmemPath);
|
|
54
|
+
if (!manifest) {
|
|
55
|
+
console.log('No manifest found. Run `pmem init` first.');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// --suggest: show intelligent update suggestions
|
|
59
|
+
if (options.suggest) {
|
|
60
|
+
suggestActions(pmemPath, options.format);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// --apply-suggestion: apply a specific suggestion
|
|
64
|
+
if (options.applySuggestion) {
|
|
65
|
+
applySuggestionAction(pmemPath, options.applySuggestion);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// --auto: detect changes, suggest actions
|
|
69
|
+
if (options.auto) {
|
|
70
|
+
autoUpdate(pmemPath, manifest);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// --confirm or --force: write changes
|
|
74
|
+
if (options.confirm || options.force) {
|
|
75
|
+
confirmUpdate(pmemPath, options.summary, options.next);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// no flag: show current dirty state
|
|
79
|
+
showDirtyState(pmemPath);
|
|
80
|
+
}
|
|
81
|
+
function markDirtyCommand(reason, options = {}) {
|
|
82
|
+
const cwd = process.cwd();
|
|
83
|
+
const pmemPath = path.join(cwd, PMEM_DIR);
|
|
84
|
+
if (!(0, fs_1.fileExists)(pmemPath)) {
|
|
85
|
+
console.log('No .pmem directory found. Run `pmem init` first.');
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// --auto: detect changed files via git and mark related cards as dirty
|
|
89
|
+
if (options.auto) {
|
|
90
|
+
const dbPath = path.join(pmemPath, 'pmem.db');
|
|
91
|
+
if ((0, fs_1.fileExists)(dbPath)) {
|
|
92
|
+
try {
|
|
93
|
+
const db = (0, db_1.openDatabase)(pmemPath);
|
|
94
|
+
const output = (0, child_process_1.execSync)('git status --porcelain', { encoding: 'utf8', cwd });
|
|
95
|
+
const changedFiles = (0, git_1.parseGitStatusPorcelain)(output).map(change => change.path);
|
|
96
|
+
const activeSession = (0, db_1.getActiveSession)(db);
|
|
97
|
+
const dirtyCards = [];
|
|
98
|
+
for (const filePath of changedFiles) {
|
|
99
|
+
const rows = db.prepare("SELECT card_id FROM paths WHERE ? LIKE '%' || path || '%'").all(filePath);
|
|
100
|
+
for (const row of rows) {
|
|
101
|
+
if (!dirtyCards.includes(row.card_id)) {
|
|
102
|
+
(0, db_1.insertDirtyFlag)(db, 'card', row.card_id, 'file_changed: ' + filePath, activeSession?.id);
|
|
103
|
+
dirtyCards.push(row.card_id);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
(0, db_1.closeDatabase)();
|
|
108
|
+
if (dirtyCards.length > 0) {
|
|
109
|
+
console.log(`Auto-marked ${dirtyCards.length} card(s) as dirty.`);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
console.log('No related cards found for changed files.');
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
console.error('Error during auto dirty detection:', err);
|
|
119
|
+
process.exit(2);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// DB doesn't exist: fall through to existing global dirty behavior
|
|
123
|
+
}
|
|
124
|
+
const dirtyFile = path.join(pmemPath, '.dirty');
|
|
125
|
+
const timestamp = new Date().toISOString();
|
|
126
|
+
(0, fs_1.atomicWrite)(dirtyFile, `reason: ${reason}\nsince: ${timestamp}\n`);
|
|
127
|
+
// Update manifest dirty state
|
|
128
|
+
const manifest = (0, manifest_1.loadManifest)(pmemPath);
|
|
129
|
+
if (manifest) {
|
|
130
|
+
// Update manifest.memory_status for dirty tracking
|
|
131
|
+
manifest.memory_status.dirty = true;
|
|
132
|
+
manifest.memory_status.dirty_reason = reason;
|
|
133
|
+
manifest.memory_status.dirty_since = timestamp;
|
|
134
|
+
(0, manifest_1.saveManifest)(pmemPath, manifest);
|
|
135
|
+
console.log(`Memory marked as dirty.`);
|
|
136
|
+
console.log(` Reason: ${reason}`);
|
|
137
|
+
console.log(` Since: ${timestamp}`);
|
|
138
|
+
console.log(`\nRun \`pmem update --auto\` to detect changes or \`pmem update --confirm\` to record them.`);
|
|
139
|
+
}
|
|
140
|
+
// SQLite: log dirty flag (additive — does not replace file-based dirty tracking)
|
|
141
|
+
const dbPath = path.join(pmemPath, 'pmem.db');
|
|
142
|
+
if ((0, fs_1.fileExists)(dbPath)) {
|
|
143
|
+
try {
|
|
144
|
+
const db = (0, db_1.openDatabase)(pmemPath);
|
|
145
|
+
const activeSession = (0, db_1.getActiveSession)(db);
|
|
146
|
+
(0, db_1.insertDirtyFlag)(db, 'project', '.pmem', reason, activeSession?.id);
|
|
147
|
+
(0, db_1.closeDatabase)();
|
|
148
|
+
console.log(` Dirty flag logged to SQLite.`);
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
// DB not available or schema not yet created — skip SQLite
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function showDirtyState(pmemPath) {
|
|
156
|
+
const dirtyFile = path.join(pmemPath, '.dirty');
|
|
157
|
+
if ((0, fs_1.fileExists)(dirtyFile)) {
|
|
158
|
+
const content = (0, fs_1.readFile)(dirtyFile);
|
|
159
|
+
console.log('Memory is marked as dirty:');
|
|
160
|
+
console.log(content);
|
|
161
|
+
console.log('Run `pmem update --auto` to detect changes.');
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
console.log('Memory is clean.');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function autoUpdate(pmemPath, manifest) {
|
|
168
|
+
console.log('Auto-detecting changes...\n');
|
|
169
|
+
// Check if dirty
|
|
170
|
+
const dirtyFile = path.join(pmemPath, '.dirty');
|
|
171
|
+
const isDirty = (0, fs_1.fileExists)(dirtyFile);
|
|
172
|
+
if (isDirty) {
|
|
173
|
+
const content = (0, fs_1.readFile)(dirtyFile);
|
|
174
|
+
console.log('Dirty memory detected:');
|
|
175
|
+
console.log(content);
|
|
176
|
+
}
|
|
177
|
+
// Check state.md freshness
|
|
178
|
+
const statePath = path.join(pmemPath, 'state.md');
|
|
179
|
+
if ((0, fs_1.fileExists)(statePath)) {
|
|
180
|
+
const stateStat = require('fs').statSync(statePath);
|
|
181
|
+
const hoursSinceUpdate = (Date.now() - stateStat.mtimeMs) / (1000 * 60 * 60);
|
|
182
|
+
if (hoursSinceUpdate > 24) {
|
|
183
|
+
console.log(`- state.md was last updated ${hoursSinceUpdate.toFixed(1)} hours ago.`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// Check if next.md is empty
|
|
187
|
+
const nextPath = path.join(pmemPath, 'next.md');
|
|
188
|
+
if ((0, fs_1.fileExists)(nextPath)) {
|
|
189
|
+
const nextContent = (0, fs_1.readFile)(nextPath) || '';
|
|
190
|
+
if (nextContent.replace(/#.*\n/g, '').trim().length < 50) {
|
|
191
|
+
console.log('- next.md appears to have minimal content.');
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Suggest: check for new files in project that aren't in memory
|
|
195
|
+
const sourceFiles = listSourceFiles(process.cwd());
|
|
196
|
+
console.log(`\nProject source files: ${sourceFiles.length}`);
|
|
197
|
+
console.log('\nSuggested actions:');
|
|
198
|
+
if (isDirty) {
|
|
199
|
+
console.log(' 1. Review changes and update memory cards.');
|
|
200
|
+
console.log(' 2. Create decision cards if architecture changed.');
|
|
201
|
+
console.log(' 3. Run `pmem update --confirm --summary "<what changed>" --next "<next step>"`');
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
console.log(' Memory appears up to date. No action needed.');
|
|
205
|
+
}
|
|
206
|
+
// SQLite: show unresolved dirty flags and recent update activity
|
|
207
|
+
const updateDbPath = path.join(pmemPath, 'pmem.db');
|
|
208
|
+
if ((0, fs_1.fileExists)(updateDbPath)) {
|
|
209
|
+
try {
|
|
210
|
+
const db = (0, db_1.openDatabase)(pmemPath);
|
|
211
|
+
const unresolved = (0, db_1.getUnresolvedDirtyFlags)(db);
|
|
212
|
+
if (unresolved.length > 0) {
|
|
213
|
+
console.log(`\nUnresolved dirty flags in SQLite: ${unresolved.length}`);
|
|
214
|
+
}
|
|
215
|
+
const recentLogs = (0, db_1.getRecentUpdateLogs)(db, 5);
|
|
216
|
+
if (recentLogs.length > 0) {
|
|
217
|
+
console.log('\nRecent update activity:');
|
|
218
|
+
for (const log of recentLogs) {
|
|
219
|
+
const icon = log.success ? '✓' : '✗';
|
|
220
|
+
console.log(` ${icon} [${log.created_at.slice(0, 16)}] ${log.action}${log.summary ? ': ' + log.summary.slice(0, 60) : ''}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
(0, db_1.closeDatabase)();
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
// DB not available — skip SQLite
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
function confirmUpdate(pmemPath, summary, next) {
|
|
231
|
+
const lockPath = path.join(pmemPath, '.lock');
|
|
232
|
+
if (!(0, fs_1.acquireLock)(lockPath)) {
|
|
233
|
+
console.log('Failed to acquire pmem lock. Another pmem update may be running.');
|
|
234
|
+
console.log('No memory was written. Try again later.');
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
try {
|
|
238
|
+
// Update next.md
|
|
239
|
+
if (next) {
|
|
240
|
+
const nextPath = path.join(pmemPath, 'next.md');
|
|
241
|
+
(0, fs_1.atomicWrite)(nextPath, `# Next Steps
|
|
242
|
+
|
|
243
|
+
## Recommended Next Step
|
|
244
|
+
${next}
|
|
245
|
+
|
|
246
|
+
## Why
|
|
247
|
+
Confirmed during update.
|
|
248
|
+
|
|
249
|
+
## Needed Context
|
|
250
|
+
Run \`pmem recall\` for full context.
|
|
251
|
+
`);
|
|
252
|
+
}
|
|
253
|
+
let sqliteLogged = false;
|
|
254
|
+
// Add trace if summary provided
|
|
255
|
+
if (summary) {
|
|
256
|
+
const today = new Date().toISOString().split('T')[0];
|
|
257
|
+
const traceDir = path.join(pmemPath, 'traces');
|
|
258
|
+
(0, fs_1.ensureDir)(traceDir);
|
|
259
|
+
// Find the next trace number
|
|
260
|
+
const fs = require('fs');
|
|
261
|
+
const existingTraces = fs.readdirSync(traceDir)
|
|
262
|
+
.filter((f) => f.startsWith(today))
|
|
263
|
+
.length;
|
|
264
|
+
const traceNum = String(existingTraces + 1).padStart(3, '0');
|
|
265
|
+
const traceFile = path.join(traceDir, `${today}-${traceNum}.md`);
|
|
266
|
+
(0, fs_1.atomicWrite)(traceFile, `---
|
|
267
|
+
id: trace.${today}-${traceNum}
|
|
268
|
+
type: trace
|
|
269
|
+
created: ${today}
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
# Trace: ${summary}
|
|
273
|
+
|
|
274
|
+
## What Changed
|
|
275
|
+
${summary}
|
|
276
|
+
|
|
277
|
+
## Next
|
|
278
|
+
${next || 'Continue as planned.'}
|
|
279
|
+
`);
|
|
280
|
+
console.log(`Trace written: traces/${today}-${traceNum}.md`);
|
|
281
|
+
// SQLite: resolve dirty flags and log the update (additive)
|
|
282
|
+
const confirmDbPath = path.join(pmemPath, 'pmem.db');
|
|
283
|
+
if ((0, fs_1.fileExists)(confirmDbPath)) {
|
|
284
|
+
try {
|
|
285
|
+
const db = (0, db_1.openDatabase)(pmemPath);
|
|
286
|
+
const activeSession = (0, db_1.getActiveSession)(db);
|
|
287
|
+
(0, db_1.resolveDirtyFlags)(db, 'project', '.pmem');
|
|
288
|
+
(0, db_1.insertUpdateLog)(db, 'confirm_update', summary, activeSession?.id, [`trace.${today}-${traceNum}`], true);
|
|
289
|
+
(0, db_1.closeDatabase)();
|
|
290
|
+
sqliteLogged = true;
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
// DB not available — skip SQLite
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// Clear dirty flag
|
|
298
|
+
const dirtyFile = path.join(pmemPath, '.dirty');
|
|
299
|
+
if ((0, fs_1.fileExists)(dirtyFile)) {
|
|
300
|
+
require('fs').unlinkSync(dirtyFile);
|
|
301
|
+
}
|
|
302
|
+
// Clear manifest dirty state
|
|
303
|
+
const manifest = (0, manifest_1.loadManifest)(pmemPath);
|
|
304
|
+
if (manifest) {
|
|
305
|
+
manifest.memory_status.dirty = false;
|
|
306
|
+
manifest.memory_status.dirty_reason = null;
|
|
307
|
+
manifest.memory_status.dirty_since = null;
|
|
308
|
+
(0, manifest_1.saveManifest)(pmemPath, manifest);
|
|
309
|
+
}
|
|
310
|
+
// Rebuild indexes
|
|
311
|
+
console.log('Rebuilding indexes...');
|
|
312
|
+
(0, rebuild_1.rebuildCommand)();
|
|
313
|
+
console.log('\n✓ Memory updated.');
|
|
314
|
+
if (sqliteLogged) {
|
|
315
|
+
console.log(' Update logged to SQLite.');
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
finally {
|
|
319
|
+
(0, fs_1.releaseLock)(lockPath);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
function listSourceFiles(root) {
|
|
323
|
+
const fs = require('fs');
|
|
324
|
+
const results = [];
|
|
325
|
+
const skipDirs = new Set(['node_modules', '.git', '.pmem', 'dist', 'build', '.claude']);
|
|
326
|
+
function walk(dir) {
|
|
327
|
+
if (!(0, fs_1.fileExists)(dir))
|
|
328
|
+
return;
|
|
329
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
330
|
+
for (const entry of entries) {
|
|
331
|
+
if (skipDirs.has(entry.name))
|
|
332
|
+
continue;
|
|
333
|
+
const fullPath = path.join(dir, entry.name);
|
|
334
|
+
if (entry.isDirectory()) {
|
|
335
|
+
walk(fullPath);
|
|
336
|
+
}
|
|
337
|
+
else if (/\.(ts|js|tsx|jsx|py|rs|go|java|rb|php)$/.test(entry.name)) {
|
|
338
|
+
results.push(fullPath);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
walk(root);
|
|
343
|
+
return results;
|
|
344
|
+
}
|
|
345
|
+
function generateSuggestions(pmemPath) {
|
|
346
|
+
const dbPath = path.join(pmemPath, 'pmem.db');
|
|
347
|
+
if (!(0, fs_1.fileExists)(dbPath)) {
|
|
348
|
+
console.log('No SQLite database. Run pmem rebuild first.');
|
|
349
|
+
process.exit(2);
|
|
350
|
+
}
|
|
351
|
+
let db;
|
|
352
|
+
try {
|
|
353
|
+
db = (0, db_1.openDatabase)(pmemPath);
|
|
354
|
+
}
|
|
355
|
+
catch {
|
|
356
|
+
console.log('No SQLite database. Run pmem rebuild first.');
|
|
357
|
+
process.exit(2);
|
|
358
|
+
}
|
|
359
|
+
const unresolved = (0, db_1.getUnresolvedDirtyFlags)(db);
|
|
360
|
+
const suggestions = [];
|
|
361
|
+
// Card-level dirty flags → update_card suggestions
|
|
362
|
+
for (const flag of unresolved) {
|
|
363
|
+
if (flag.scope === 'card') {
|
|
364
|
+
suggestions.push({
|
|
365
|
+
id: `suggest-${suggestions.length + 1}`,
|
|
366
|
+
action: 'update_card',
|
|
367
|
+
target: flag.target,
|
|
368
|
+
reason: flag.reason,
|
|
369
|
+
priority: 'high',
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// Project-level dirty → create_trace or confirm suggestions
|
|
374
|
+
for (const flag of unresolved) {
|
|
375
|
+
if (flag.scope === 'project') {
|
|
376
|
+
suggestions.push({
|
|
377
|
+
id: `suggest-${suggestions.length + 1}`,
|
|
378
|
+
action: 'create_trace',
|
|
379
|
+
target: flag.target,
|
|
380
|
+
reason: flag.reason,
|
|
381
|
+
priority: 'medium',
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
// Check state.md freshness
|
|
386
|
+
let stateFreshness = 'fresh';
|
|
387
|
+
const statePath = path.join(pmemPath, 'state.md');
|
|
388
|
+
if ((0, fs_1.fileExists)(statePath)) {
|
|
389
|
+
const fs = require('fs');
|
|
390
|
+
const stat = fs.statSync(statePath);
|
|
391
|
+
const hoursSinceUpdate = (Date.now() - stat.mtimeMs) / (1000 * 60 * 60);
|
|
392
|
+
if (hoursSinceUpdate > 24) {
|
|
393
|
+
stateFreshness = 'stale';
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
if (stateFreshness === 'stale') {
|
|
397
|
+
suggestions.push({
|
|
398
|
+
id: `suggest-${suggestions.length + 1}`,
|
|
399
|
+
action: 'update_state',
|
|
400
|
+
target: 'state.md',
|
|
401
|
+
reason: 'state.md has not been updated in over 24 hours',
|
|
402
|
+
priority: 'medium',
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
// Check next.md content
|
|
406
|
+
const nextPath = path.join(pmemPath, 'next.md');
|
|
407
|
+
let nextEmpty = false;
|
|
408
|
+
if ((0, fs_1.fileExists)(nextPath)) {
|
|
409
|
+
const content = (0, fs_1.readFile)(nextPath) || '';
|
|
410
|
+
if (content.replace(/#.*\n/g, '').trim().length < 50) {
|
|
411
|
+
nextEmpty = true;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
if (nextEmpty) {
|
|
415
|
+
suggestions.push({
|
|
416
|
+
id: `suggest-${suggestions.length + 1}`,
|
|
417
|
+
action: 'update_next',
|
|
418
|
+
target: 'next.md',
|
|
419
|
+
reason: 'next.md appears to have minimal content',
|
|
420
|
+
priority: 'low',
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
(0, db_1.closeDatabase)();
|
|
424
|
+
return { dirtyFlags: unresolved, stateFreshness, suggestions };
|
|
425
|
+
}
|
|
426
|
+
function suggestActions(pmemPath, format) {
|
|
427
|
+
const { dirtyFlags, stateFreshness, suggestions } = generateSuggestions(pmemPath);
|
|
428
|
+
if (format === 'json') {
|
|
429
|
+
console.log(JSON.stringify({
|
|
430
|
+
dirty_flags: dirtyFlags,
|
|
431
|
+
state_freshness: stateFreshness,
|
|
432
|
+
suggestions,
|
|
433
|
+
}, null, 2));
|
|
434
|
+
}
|
|
435
|
+
else {
|
|
436
|
+
if (dirtyFlags.length > 0) {
|
|
437
|
+
console.log(`Dirty flags: ${dirtyFlags.length}`);
|
|
438
|
+
for (const flag of dirtyFlags) {
|
|
439
|
+
console.log(` [${flag.scope}] ${flag.target}: ${flag.reason}`);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
console.log('No unresolved dirty flags.');
|
|
444
|
+
}
|
|
445
|
+
console.log(`State freshness: ${stateFreshness}`);
|
|
446
|
+
if (suggestions.length > 0) {
|
|
447
|
+
console.log(`\nSuggestions (${suggestions.length}):`);
|
|
448
|
+
for (const s of suggestions) {
|
|
449
|
+
console.log(` ${s.id}: [${s.priority}] ${s.action} ${s.target}`);
|
|
450
|
+
console.log(` ${s.reason}`);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
else {
|
|
454
|
+
console.log('\nNo suggestions. Memory is up to date.');
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
const hasSuggestions = suggestions.length > 0;
|
|
458
|
+
process.exit(hasSuggestions ? 1 : 0);
|
|
459
|
+
}
|
|
460
|
+
function applySuggestionAction(pmemPath, suggestionId) {
|
|
461
|
+
// Re-derive suggestions to find the matching one
|
|
462
|
+
const { suggestions, dirtyFlags } = generateSuggestions(pmemPath);
|
|
463
|
+
const match = suggestions.find(s => s.id === suggestionId);
|
|
464
|
+
if (!match) {
|
|
465
|
+
console.log(`Suggestion "${suggestionId}" not found. Available suggestions:`);
|
|
466
|
+
for (const s of suggestions) {
|
|
467
|
+
console.log(` ${s.id}: ${s.action} ${s.target}`);
|
|
468
|
+
}
|
|
469
|
+
process.exit(2);
|
|
470
|
+
}
|
|
471
|
+
const dbPath = path.join(pmemPath, 'pmem.db');
|
|
472
|
+
if (!(0, fs_1.fileExists)(dbPath)) {
|
|
473
|
+
console.log('No SQLite database. Run pmem rebuild first.');
|
|
474
|
+
process.exit(2);
|
|
475
|
+
}
|
|
476
|
+
switch (match.action) {
|
|
477
|
+
case 'update_card': {
|
|
478
|
+
const db = (0, db_1.openDatabase)(pmemPath);
|
|
479
|
+
// Mark the card's last_verified_at as expired
|
|
480
|
+
db.prepare("UPDATE cards SET last_verified_at = ? WHERE id = ?").run(new Date(0).toISOString(), match.target);
|
|
481
|
+
(0, db_1.closeDatabase)();
|
|
482
|
+
console.log(`Marked card "${match.target}" as needing verification.`);
|
|
483
|
+
console.log(` Reason: ${match.reason}`);
|
|
484
|
+
break;
|
|
485
|
+
}
|
|
486
|
+
case 'create_trace': {
|
|
487
|
+
const today = new Date().toISOString().split('T')[0];
|
|
488
|
+
const traceDir = path.join(pmemPath, 'traces');
|
|
489
|
+
(0, fs_1.ensureDir)(traceDir);
|
|
490
|
+
const fs = require('fs');
|
|
491
|
+
const existingTraces = fs.readdirSync(traceDir)
|
|
492
|
+
.filter((f) => f.startsWith(today))
|
|
493
|
+
.length;
|
|
494
|
+
const traceNum = String(existingTraces + 1).padStart(3, '0');
|
|
495
|
+
const traceFile = path.join(traceDir, `${today}-${traceNum}.md`);
|
|
496
|
+
(0, fs_1.atomicWrite)(traceFile, `---
|
|
497
|
+
id: trace.${today}-${traceNum}
|
|
498
|
+
type: trace
|
|
499
|
+
created: ${today}
|
|
500
|
+
---
|
|
501
|
+
|
|
502
|
+
# Trace: ${match.reason}
|
|
503
|
+
|
|
504
|
+
## What Changed
|
|
505
|
+
${match.reason}
|
|
506
|
+
|
|
507
|
+
## Next
|
|
508
|
+
Continue as planned.
|
|
509
|
+
`);
|
|
510
|
+
console.log(`Auto-created trace: traces/${today}-${traceNum}.md`);
|
|
511
|
+
console.log(` Reason: ${match.reason}`);
|
|
512
|
+
// Log in SQLite
|
|
513
|
+
const db = (0, db_1.openDatabase)(pmemPath);
|
|
514
|
+
const activeSession = (0, db_1.getActiveSession)(db);
|
|
515
|
+
(0, db_1.insertUpdateLog)(db, 'auto_trace', match.reason, activeSession?.id, [`trace.${today}-${traceNum}`], true);
|
|
516
|
+
(0, db_1.closeDatabase)();
|
|
517
|
+
break;
|
|
518
|
+
}
|
|
519
|
+
case 'update_state': {
|
|
520
|
+
console.log(`Action required: ${match.reason}`);
|
|
521
|
+
console.log(' Please run `pmem update --confirm` to update state.md.');
|
|
522
|
+
break;
|
|
523
|
+
}
|
|
524
|
+
case 'update_next': {
|
|
525
|
+
console.log(`Action required: ${match.reason}`);
|
|
526
|
+
console.log(' Please run `pmem update --confirm --next "<next step>"` to update next.md.');
|
|
527
|
+
break;
|
|
528
|
+
}
|
|
529
|
+
default: {
|
|
530
|
+
console.log(`Unknown action "${match.action}" for suggestion ${suggestionId}.`);
|
|
531
|
+
process.exit(2);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
process.exit(0);
|
|
535
|
+
}
|
|
536
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAWA,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAwR9D"}
|