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,299 @@
|
|
|
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.rebuildCommand = rebuildCommand;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const fs_1 = require("../core/fs");
|
|
39
|
+
const manifest_1 = require("../core/manifest");
|
|
40
|
+
const db_1 = require("../core/db");
|
|
41
|
+
const hash_1 = require("../core/hash");
|
|
42
|
+
const yaml_1 = require("../core/yaml");
|
|
43
|
+
const PMEM_DIR = '.pmem';
|
|
44
|
+
function rebuildCommand(options = {}) {
|
|
45
|
+
const cwd = process.cwd();
|
|
46
|
+
const pmemPath = path.join(cwd, PMEM_DIR);
|
|
47
|
+
const manifest = (0, manifest_1.loadManifest)(pmemPath);
|
|
48
|
+
if (!manifest) {
|
|
49
|
+
if ((0, fs_1.fileExists)(pmemPath)) {
|
|
50
|
+
console.log('.pmem/manifest.yml not found. Run `pmem init` to regenerate the manifest, or restore it from backup.');
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
console.log('No .pmem directory found. Run `pmem init` first.');
|
|
54
|
+
}
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const db = (0, db_1.openDatabase)(pmemPath);
|
|
58
|
+
(0, db_1.createSchema)(db);
|
|
59
|
+
(0, db_1.setSchemaVersion)(db, manifest.pmem.schema_version);
|
|
60
|
+
const isFull = options.full === true;
|
|
61
|
+
const isSingleCard = typeof options.card === 'string';
|
|
62
|
+
if (isFull) {
|
|
63
|
+
(0, db_1.clearAllTables)(db);
|
|
64
|
+
console.log('Full rebuild: cleared all tables.');
|
|
65
|
+
}
|
|
66
|
+
// Scan all .md files under .pmem/, excluding non-card files
|
|
67
|
+
const cardFiles = (0, fs_1.listFiles)(pmemPath, /\.md$/).filter(f => {
|
|
68
|
+
const rel = path.relative(pmemPath, f);
|
|
69
|
+
return !['index.md', 'state.md', 'next.md'].includes(rel) &&
|
|
70
|
+
!rel.startsWith('skills/') &&
|
|
71
|
+
!rel.startsWith('integrations/') &&
|
|
72
|
+
!rel.startsWith('summaries/') &&
|
|
73
|
+
!rel.startsWith('indexes/') &&
|
|
74
|
+
!rel.startsWith('backups/');
|
|
75
|
+
});
|
|
76
|
+
const nodes = [];
|
|
77
|
+
const edges = [];
|
|
78
|
+
let processed = 0;
|
|
79
|
+
let skipped = 0;
|
|
80
|
+
let updated = 0;
|
|
81
|
+
// Wrap all per-card SQLite writes in a single transaction for performance
|
|
82
|
+
const doRebuild = db.transaction(() => {
|
|
83
|
+
for (const file of cardFiles) {
|
|
84
|
+
const parsed = parseCard(file);
|
|
85
|
+
if (!parsed)
|
|
86
|
+
continue;
|
|
87
|
+
// In --card mode, skip cards that don't match the target ID
|
|
88
|
+
if (isSingleCard && parsed.frontmatter.id !== options.card)
|
|
89
|
+
continue;
|
|
90
|
+
const relPath = path.relative(cwd, file);
|
|
91
|
+
processed++;
|
|
92
|
+
const fm = parsed.frontmatter;
|
|
93
|
+
const title = extractTitle(parsed.bodyText) || fm.id;
|
|
94
|
+
// Build legacy graph node (always, for backward compat output)
|
|
95
|
+
nodes.push({
|
|
96
|
+
id: fm.id,
|
|
97
|
+
type: fm.type,
|
|
98
|
+
title,
|
|
99
|
+
status: fm.status,
|
|
100
|
+
file: relPath,
|
|
101
|
+
tags: fm.tags,
|
|
102
|
+
aliases: fm.aliases,
|
|
103
|
+
});
|
|
104
|
+
// Build legacy graph edges (always, for backward compat output)
|
|
105
|
+
collectLegacyEdges(fm, edges);
|
|
106
|
+
// Compute content hashes
|
|
107
|
+
const hashes = (0, hash_1.computeCardHashes)(parsed.fullContent, parsed.frontmatterText, parsed.bodyText);
|
|
108
|
+
// In --changed mode, skip cards whose hashes match what's in SQLite
|
|
109
|
+
if (!isFull) {
|
|
110
|
+
const existing = (0, db_1.getCardHash)(db, relPath);
|
|
111
|
+
if (existing &&
|
|
112
|
+
existing.file_hash === hashes.fileHash &&
|
|
113
|
+
existing.frontmatter_hash === hashes.frontmatterHash &&
|
|
114
|
+
existing.body_hash === hashes.bodyHash) {
|
|
115
|
+
skipped++;
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
updated++;
|
|
120
|
+
const tokCount = (0, hash_1.tokenCount)(parsed.fullContent);
|
|
121
|
+
const secCount = (0, hash_1.sectionCount)(parsed.bodyText);
|
|
122
|
+
const isCandidate = relPath.includes('/candidates/') ? 1 : 0;
|
|
123
|
+
// Build CardRow and upsert
|
|
124
|
+
const cardRow = {
|
|
125
|
+
id: fm.id,
|
|
126
|
+
type: fm.type,
|
|
127
|
+
title,
|
|
128
|
+
status: fm.status ?? null,
|
|
129
|
+
priority: fm.priority ?? null,
|
|
130
|
+
file_path: relPath,
|
|
131
|
+
summary: null,
|
|
132
|
+
schema_version: fm.schema_version ?? null,
|
|
133
|
+
card_version: fm.version ?? 1,
|
|
134
|
+
created_at: null,
|
|
135
|
+
updated_at: fm.updated ?? null,
|
|
136
|
+
last_verified_at: fm.last_verified ?? null,
|
|
137
|
+
file_hash: hashes.fileHash,
|
|
138
|
+
frontmatter_hash: hashes.frontmatterHash,
|
|
139
|
+
body_hash: hashes.bodyHash,
|
|
140
|
+
token_count: tokCount,
|
|
141
|
+
section_count: secCount,
|
|
142
|
+
is_deleted: 0,
|
|
143
|
+
is_candidate: isCandidate,
|
|
144
|
+
};
|
|
145
|
+
(0, db_1.upsertCard)(db, cardRow);
|
|
146
|
+
// Clear existing relations before re-inserting
|
|
147
|
+
(0, db_1.deleteCardEdges)(db, fm.id);
|
|
148
|
+
(0, db_1.deleteCardAliases)(db, fm.id);
|
|
149
|
+
(0, db_1.deleteCardTags)(db, fm.id);
|
|
150
|
+
(0, db_1.deleteCardPaths)(db, fm.id);
|
|
151
|
+
// Re-insert aliases
|
|
152
|
+
if (fm.aliases) {
|
|
153
|
+
for (const alias of fm.aliases) {
|
|
154
|
+
(0, db_1.insertAlias)(db, fm.id, alias);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Re-insert tags
|
|
158
|
+
if (fm.tags) {
|
|
159
|
+
for (const tag of fm.tags) {
|
|
160
|
+
(0, db_1.insertTag)(db, fm.id, tag);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Re-insert source_files as paths
|
|
164
|
+
if (fm.source_files) {
|
|
165
|
+
for (const sf of fm.source_files) {
|
|
166
|
+
(0, db_1.insertPath)(db, fm.id, sf, 'source_file');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const now = new Date().toISOString();
|
|
170
|
+
// Insert depends_on edges
|
|
171
|
+
if (fm.depends_on) {
|
|
172
|
+
for (const target of fm.depends_on) {
|
|
173
|
+
const edgeRow = {
|
|
174
|
+
from_id: fm.id,
|
|
175
|
+
to_id: target,
|
|
176
|
+
type: 'depends_on',
|
|
177
|
+
source: 'explicit',
|
|
178
|
+
confidence: 1.0,
|
|
179
|
+
created_at: now,
|
|
180
|
+
updated_at: now,
|
|
181
|
+
};
|
|
182
|
+
(0, db_1.insertEdge)(db, edgeRow);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Insert related_to edges
|
|
186
|
+
if (fm.related) {
|
|
187
|
+
for (const target of fm.related) {
|
|
188
|
+
const edgeRow = {
|
|
189
|
+
from_id: fm.id,
|
|
190
|
+
to_id: target,
|
|
191
|
+
type: 'related_to',
|
|
192
|
+
source: 'explicit',
|
|
193
|
+
confidence: 1.0,
|
|
194
|
+
created_at: now,
|
|
195
|
+
updated_at: now,
|
|
196
|
+
};
|
|
197
|
+
(0, db_1.insertEdge)(db, edgeRow);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Derived edges: task type with module.* related → next_step_of
|
|
201
|
+
if (fm.type === 'task' && fm.related) {
|
|
202
|
+
for (const target of fm.related) {
|
|
203
|
+
if (target.startsWith('module.')) {
|
|
204
|
+
const edgeRow = {
|
|
205
|
+
from_id: fm.id,
|
|
206
|
+
to_id: target,
|
|
207
|
+
type: 'next_step_of',
|
|
208
|
+
source: 'inferred',
|
|
209
|
+
confidence: 0.8,
|
|
210
|
+
created_at: now,
|
|
211
|
+
updated_at: now,
|
|
212
|
+
};
|
|
213
|
+
(0, db_1.insertEdge)(db, edgeRow);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
// Execute all SQLite writes in a single transaction
|
|
220
|
+
doRebuild();
|
|
221
|
+
// Create FTS5 virtual table for full-text search (outside transaction)
|
|
222
|
+
(0, db_1.createFTS5)(db);
|
|
223
|
+
// Write legacy graph.json for backward compatibility
|
|
224
|
+
const allContent = cardFiles.map(f => (0, fs_1.readFile)(f) || '').join('');
|
|
225
|
+
const sourceHash = (0, hash_1.computeHash)(allContent);
|
|
226
|
+
const graphIndex = {
|
|
227
|
+
kind: 'pmem.graph_index',
|
|
228
|
+
pmem_version: manifest.pmem.protocol_version,
|
|
229
|
+
generated_at: new Date().toISOString(),
|
|
230
|
+
source: {
|
|
231
|
+
type: 'markdown_frontmatter',
|
|
232
|
+
glob: '.pmem/**/*.md',
|
|
233
|
+
source_hash: sourceHash,
|
|
234
|
+
},
|
|
235
|
+
node_count: nodes.length,
|
|
236
|
+
edge_count: edges.length,
|
|
237
|
+
nodes,
|
|
238
|
+
edges,
|
|
239
|
+
};
|
|
240
|
+
const indexesDir = path.join(pmemPath, 'indexes');
|
|
241
|
+
(0, fs_1.ensureDir)(indexesDir);
|
|
242
|
+
(0, fs_1.writeJson)(path.join(indexesDir, 'graph.json'), graphIndex);
|
|
243
|
+
// Output summary
|
|
244
|
+
const modeLabel = isFull
|
|
245
|
+
? 'Full rebuild'
|
|
246
|
+
: isSingleCard
|
|
247
|
+
? `Single card: ${options.card}`
|
|
248
|
+
: 'Incremental rebuild';
|
|
249
|
+
console.log(`${modeLabel}: ${processed} cards processed, ${skipped} skipped (hash match), ${updated} updated`);
|
|
250
|
+
console.log(`Graph: ${nodes.length} nodes, ${edges.length} edges`);
|
|
251
|
+
(0, db_1.closeDatabase)();
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Parse a .md memory card file into its constituent parts.
|
|
255
|
+
* Reads the file once, extracts YAML frontmatter (between --- markers),
|
|
256
|
+
* the markdown body, and parses the frontmatter into a CardFrontmatter object.
|
|
257
|
+
*/
|
|
258
|
+
function parseCard(filePath) {
|
|
259
|
+
const fullContent = (0, fs_1.readFile)(filePath);
|
|
260
|
+
if (!fullContent)
|
|
261
|
+
return null;
|
|
262
|
+
const parsed = (0, yaml_1.parseFrontmatter)(fullContent);
|
|
263
|
+
if (!parsed)
|
|
264
|
+
return null;
|
|
265
|
+
const frontmatter = parsed.data;
|
|
266
|
+
if (!frontmatter.id)
|
|
267
|
+
return null;
|
|
268
|
+
// Extract frontmatter text for hash computation
|
|
269
|
+
const fmMatch = fullContent.match(/^---\n([\s\S]*?)\n---/);
|
|
270
|
+
const frontmatterText = fmMatch ? fmMatch[1] : '';
|
|
271
|
+
return { fullContent, frontmatterText, bodyText: parsed.body, frontmatter };
|
|
272
|
+
}
|
|
273
|
+
/** Extract the first # heading from markdown body text as the card title. */
|
|
274
|
+
function extractTitle(bodyText) {
|
|
275
|
+
const match = bodyText.match(/^#\s+(.+)$/m);
|
|
276
|
+
return match ? match[1].trim() : null;
|
|
277
|
+
}
|
|
278
|
+
/** Build legacy GraphEdge entries from a card's frontmatter (for backward-compat graph.json). */
|
|
279
|
+
function collectLegacyEdges(fm, edges) {
|
|
280
|
+
if (fm.depends_on) {
|
|
281
|
+
for (const target of fm.depends_on) {
|
|
282
|
+
edges.push({ from: fm.id, to: target, type: 'depends_on' });
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
if (fm.related) {
|
|
286
|
+
for (const target of fm.related) {
|
|
287
|
+
edges.push({ from: fm.id, to: target, type: 'related_to' });
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
// Derived edge: task → module
|
|
291
|
+
if (fm.type === 'task' && fm.related) {
|
|
292
|
+
for (const target of fm.related) {
|
|
293
|
+
if (target.startsWith('module.')) {
|
|
294
|
+
edges.push({ from: fm.id, to: target, type: 'next_step_of', derived: true });
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=rebuild.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rebuild.js","sourceRoot":"","sources":["../../src/commands/rebuild.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../../src/commands/recall.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,SAAS,EAAW,MAAM,UAAU,CAAC;AAIjE,wBAAgB,aAAa,CAAC,MAAM,GAAE,MAAa,EAAE,MAAM,GAAE,SAAqB,GAAG,IAAI,CAwGxF"}
|
|
@@ -0,0 +1,140 @@
|
|
|
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.recallCommand = recallCommand;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const fs_1 = require("../core/fs");
|
|
39
|
+
const db_1 = require("../core/db");
|
|
40
|
+
const format_1 = require("../core/format");
|
|
41
|
+
const PMEM_DIR = '.pmem';
|
|
42
|
+
function recallCommand(budget = 2000, format = 'compact') {
|
|
43
|
+
const cwd = process.cwd();
|
|
44
|
+
const pmemPath = path.join(cwd, PMEM_DIR);
|
|
45
|
+
if (!(0, fs_1.fileExists)(pmemPath)) {
|
|
46
|
+
console.log('No .pmem directory found. Run `pmem init` first.');
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Read hot memory files: index.md, state.md, next.md
|
|
50
|
+
const indexContent = (0, fs_1.readFile)(path.join(pmemPath, 'index.md'));
|
|
51
|
+
const stateContent = (0, fs_1.readFile)(path.join(pmemPath, 'state.md'));
|
|
52
|
+
const nextContent = (0, fs_1.readFile)(path.join(pmemPath, 'next.md'));
|
|
53
|
+
if (!indexContent) {
|
|
54
|
+
console.log('No .pmem/index.md found. Run `pmem init` first.');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// Parse project info from index
|
|
58
|
+
const projectName = extractField(indexContent, 'Name:');
|
|
59
|
+
const projectStage = extractField(indexContent, 'Stage:');
|
|
60
|
+
const currentFocus = extractField(indexContent, 'Current Focus');
|
|
61
|
+
// Parse state lines
|
|
62
|
+
const stateLines = [];
|
|
63
|
+
if (stateContent) {
|
|
64
|
+
const lines = stateContent.split('\n');
|
|
65
|
+
let inSection = false;
|
|
66
|
+
for (const line of lines) {
|
|
67
|
+
if (line.startsWith('## ')) {
|
|
68
|
+
inSection = !line.includes('Overall Status');
|
|
69
|
+
}
|
|
70
|
+
else if (inSection && line.trim().startsWith('-')) {
|
|
71
|
+
stateLines.push(line.trim());
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Parse next step
|
|
76
|
+
const nextStep = nextContent
|
|
77
|
+
? extractField(nextContent, '## Recommended Next Step')
|
|
78
|
+
: 'No next step recorded.';
|
|
79
|
+
// Build result
|
|
80
|
+
const result = {
|
|
81
|
+
project: projectName || 'Unknown',
|
|
82
|
+
stage: projectStage || undefined,
|
|
83
|
+
focus: currentFocus || 'No focus recorded.',
|
|
84
|
+
state: stateLines,
|
|
85
|
+
next: nextStep || 'No next step recorded.',
|
|
86
|
+
mustRead: [],
|
|
87
|
+
dirty_flags_count: 0,
|
|
88
|
+
recent_updates: [],
|
|
89
|
+
active_modules: [],
|
|
90
|
+
};
|
|
91
|
+
// Query SQLite for richer project info
|
|
92
|
+
try {
|
|
93
|
+
const db = (0, db_1.openDatabase)(pmemPath);
|
|
94
|
+
(0, db_1.createSchema)(db);
|
|
95
|
+
// Query active cards (non-deleted, non-candidate)
|
|
96
|
+
const activeCards = db.prepare("SELECT * FROM cards WHERE is_deleted = 0 AND is_candidate = 0").all();
|
|
97
|
+
// Modules for recommendations
|
|
98
|
+
const modules = activeCards.filter(c => c.type === 'module');
|
|
99
|
+
result.active_modules = modules.map(m => m.file_path);
|
|
100
|
+
// Build mustRead list
|
|
101
|
+
result.mustRead.push(path.join('.pmem', 'state.md'));
|
|
102
|
+
result.mustRead.push(path.join('.pmem', 'next.md'));
|
|
103
|
+
for (const mod of modules.slice(0, 5)) {
|
|
104
|
+
result.mustRead.push(mod.file_path);
|
|
105
|
+
}
|
|
106
|
+
// Query unresolved dirty flags
|
|
107
|
+
const dirtyFlagResult = db.prepare("SELECT COUNT(*) as count FROM dirty_flags WHERE resolved_at IS NULL").get();
|
|
108
|
+
result.dirty_flags_count = dirtyFlagResult.count;
|
|
109
|
+
// Query recent updates
|
|
110
|
+
const recentUpdates = db.prepare("SELECT action, summary, created_at FROM update_log ORDER BY created_at DESC LIMIT 5").all();
|
|
111
|
+
result.recent_updates = recentUpdates;
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
// DB may not exist yet or be uninitialized; file-based mustRead is sufficient
|
|
115
|
+
if (result.mustRead.length === 0) {
|
|
116
|
+
result.mustRead.push(path.join('.pmem', 'state.md'));
|
|
117
|
+
result.mustRead.push(path.join('.pmem', 'next.md'));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Output
|
|
121
|
+
const output = (0, format_1.formatOutput)(result, format, budget);
|
|
122
|
+
console.log(output);
|
|
123
|
+
}
|
|
124
|
+
function extractField(content, fieldName) {
|
|
125
|
+
const lines = content.split('\n');
|
|
126
|
+
for (let i = 0; i < lines.length; i++) {
|
|
127
|
+
const line = lines[i];
|
|
128
|
+
if (line.includes(fieldName)) {
|
|
129
|
+
const val = line.split(fieldName)[1]?.trim();
|
|
130
|
+
if (val)
|
|
131
|
+
return val;
|
|
132
|
+
// Next line (for "## Current Focus" style)
|
|
133
|
+
if (i + 1 < lines.length && lines[i + 1].trim()) {
|
|
134
|
+
return lines[i + 1].trim();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=recall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/commands/recall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"AAMA,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CA6C5D;AAED,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CA0E5D"}
|
|
@@ -0,0 +1,147 @@
|
|
|
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.sessionStartCommand = sessionStartCommand;
|
|
37
|
+
exports.sessionEndCommand = sessionEndCommand;
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const fs_1 = require("../core/fs");
|
|
40
|
+
const db_1 = require("../core/db");
|
|
41
|
+
const PMEM_DIR = '.pmem';
|
|
42
|
+
function sessionStartCommand(agentName) {
|
|
43
|
+
const pmemPath = path.join(process.cwd(), PMEM_DIR);
|
|
44
|
+
// 1. Check .pmem/ exists
|
|
45
|
+
if (!(0, fs_1.fileExists)(pmemPath)) {
|
|
46
|
+
console.log('No .pmem directory found. Run `pmem init` first.');
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Check DB file exists
|
|
50
|
+
if (!(0, fs_1.fileExists)(path.join(pmemPath, 'pmem.db'))) {
|
|
51
|
+
console.log('No SQLite database found. Run `pmem rebuild` first.');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
// 2. Open SQLite DB, createSchema
|
|
55
|
+
const db = (0, db_1.openDatabase)(pmemPath);
|
|
56
|
+
(0, db_1.createSchema)(db);
|
|
57
|
+
// 3. Check if there's already an active session
|
|
58
|
+
const active = (0, db_1.getActiveSession)(db);
|
|
59
|
+
if (active) {
|
|
60
|
+
console.log(`Active session already exists: ${active.id}. End it first with \`pmem session end\`.`);
|
|
61
|
+
(0, db_1.closeDatabase)();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// 4. Generate session ID: "session-YYYYMMDD-HHmmss"
|
|
65
|
+
const now = new Date();
|
|
66
|
+
const dateStr = now.toISOString().slice(0, 10).replace(/-/g, '');
|
|
67
|
+
const timeStr = now.toISOString().slice(11, 19).replace(/:/g, '');
|
|
68
|
+
const sessionId = `session-${dateStr}-${timeStr}`;
|
|
69
|
+
// 5. Call startSession
|
|
70
|
+
(0, db_1.startSession)(db, sessionId, agentName);
|
|
71
|
+
// 6. Print
|
|
72
|
+
console.log(`Session started: ${sessionId}`);
|
|
73
|
+
if (agentName) {
|
|
74
|
+
console.log(` Agent: ${agentName}`);
|
|
75
|
+
}
|
|
76
|
+
console.log(' Run `pmem session end` when done.');
|
|
77
|
+
// 7. closeDatabase
|
|
78
|
+
(0, db_1.closeDatabase)();
|
|
79
|
+
}
|
|
80
|
+
function sessionEndCommand(taskSummary) {
|
|
81
|
+
const pmemPath = path.join(process.cwd(), PMEM_DIR);
|
|
82
|
+
// 1. Check .pmem/ exists
|
|
83
|
+
if (!(0, fs_1.fileExists)(pmemPath)) {
|
|
84
|
+
console.log('No .pmem directory found. Run `pmem init` first.');
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
// Check DB file exists
|
|
88
|
+
if (!(0, fs_1.fileExists)(path.join(pmemPath, 'pmem.db'))) {
|
|
89
|
+
console.log('No SQLite database found. Run `pmem rebuild` first.');
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
// 2. Open DB, createSchema
|
|
93
|
+
const db = (0, db_1.openDatabase)(pmemPath);
|
|
94
|
+
(0, db_1.createSchema)(db);
|
|
95
|
+
// 3. Get active session
|
|
96
|
+
const active = (0, db_1.getActiveSession)(db);
|
|
97
|
+
// 4. If no active session
|
|
98
|
+
if (!active) {
|
|
99
|
+
console.log('No active session found.');
|
|
100
|
+
(0, db_1.closeDatabase)();
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
// 5. Call endSession
|
|
104
|
+
(0, db_1.endSession)(db, active.id, 'completed', taskSummary);
|
|
105
|
+
// 6. Query session update log for summary
|
|
106
|
+
const logs = db.prepare("SELECT action, summary, created_at, success, affected_cards FROM update_log WHERE session_id = ? ORDER BY created_at").all(active.id);
|
|
107
|
+
// Count actions by type
|
|
108
|
+
let updateCount = 0, traceCount = 0, errorCount = 0;
|
|
109
|
+
const allAffected = new Set();
|
|
110
|
+
for (const log of logs) {
|
|
111
|
+
if (!log.success) {
|
|
112
|
+
errorCount++;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (log.action === 'confirm_update')
|
|
116
|
+
updateCount++;
|
|
117
|
+
if (log.action === 'create_trace')
|
|
118
|
+
traceCount++;
|
|
119
|
+
if (log.affected_cards) {
|
|
120
|
+
try {
|
|
121
|
+
const cards = JSON.parse(log.affected_cards);
|
|
122
|
+
cards.forEach(c => allAffected.add(c));
|
|
123
|
+
}
|
|
124
|
+
catch { }
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Query unresolved dirty flags for this session
|
|
128
|
+
const dirtyFlags = db.prepare("SELECT scope, target, reason FROM dirty_flags WHERE session_id = ? AND resolved_at IS NULL").all(active.id);
|
|
129
|
+
// Print summary
|
|
130
|
+
console.log(`Session ended: ${active.id}`);
|
|
131
|
+
if (taskSummary)
|
|
132
|
+
console.log(` Summary: ${taskSummary}`);
|
|
133
|
+
console.log(` Actions: ${updateCount} update(s), ${traceCount} trace(s) created${errorCount > 0 ? `, ${errorCount} error(s)` : ''}`);
|
|
134
|
+
if (allAffected.size > 0) {
|
|
135
|
+
console.log(` Cards affected: ${[...allAffected].join(', ')}`);
|
|
136
|
+
}
|
|
137
|
+
if (dirtyFlags.length > 0) {
|
|
138
|
+
console.log(` Unresolved dirty flags: ${dirtyFlags.length}`);
|
|
139
|
+
for (const df of dirtyFlags) {
|
|
140
|
+
console.log(` [${df.scope}] ${df.target}: ${df.reason}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
console.log(`\nRun: pmem verify`);
|
|
144
|
+
// 7. closeDatabase
|
|
145
|
+
(0, db_1.closeDatabase)();
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/commands/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AA0DA,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAqJhF"}
|