purmemo-mcp 15.2.6 → 15.2.7

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.
Files changed (39) hide show
  1. package/dist/hooks/purmemo_capture.js +9 -5
  2. package/dist/hooks/purmemo_capture.js.map +1 -1
  3. package/dist/hooks/purmemo_first_message.js +3 -3
  4. package/dist/hooks/purmemo_first_message.js.map +1 -1
  5. package/dist/hooks/purmemo_lib.d.ts +5 -1
  6. package/dist/hooks/purmemo_lib.d.ts.map +1 -1
  7. package/dist/hooks/purmemo_lib.js +65 -11
  8. package/dist/hooks/purmemo_lib.js.map +1 -1
  9. package/dist/hooks/purmemo_recall.d.ts +8 -3
  10. package/dist/hooks/purmemo_recall.d.ts.map +1 -1
  11. package/dist/hooks/purmemo_recall.js +131 -24
  12. package/dist/hooks/purmemo_recall.js.map +1 -1
  13. package/dist/lib/api-client.d.ts +38 -0
  14. package/dist/lib/api-client.d.ts.map +1 -0
  15. package/dist/lib/api-client.js +269 -0
  16. package/dist/lib/api-client.js.map +1 -0
  17. package/dist/lib/logger.d.ts +12 -0
  18. package/dist/lib/logger.d.ts.map +1 -0
  19. package/dist/lib/logger.js +21 -0
  20. package/dist/lib/logger.js.map +1 -0
  21. package/dist/remote/start.d.ts +8 -0
  22. package/dist/remote/start.d.ts.map +1 -0
  23. package/dist/remote/start.js +1185 -0
  24. package/dist/remote/start.js.map +1 -0
  25. package/dist/server.js +200 -3674
  26. package/dist/server.js.map +1 -1
  27. package/dist/tools/handlers.d.ts +94 -0
  28. package/dist/tools/handlers.d.ts.map +1 -0
  29. package/dist/tools/handlers.js +1692 -0
  30. package/dist/tools/handlers.js.map +1 -0
  31. package/dist/tools/handoff.d.ts +28 -0
  32. package/dist/tools/handoff.d.ts.map +1 -0
  33. package/dist/tools/handoff.js +374 -0
  34. package/dist/tools/handoff.js.map +1 -0
  35. package/dist/workflows/engine.d.ts +180 -0
  36. package/dist/workflows/engine.d.ts.map +1 -0
  37. package/dist/workflows/engine.js +476 -0
  38. package/dist/workflows/engine.js.map +1 -0
  39. package/package.json +1 -1
@@ -21,7 +21,7 @@
21
21
  * Silent on all errors — never blocks Claude Code.
22
22
  */
23
23
  import * as path from 'node:path';
24
- import { dbg, readState, writeState, loadApiKey, readTranscript, extractMessages, buildContent, apiPost, readHookInput, detectPlatform, initPlatformPaths, normalizeEvent, } from './purmemo_lib.js';
24
+ import { dbg, errLog, readState, writeState, pruneState, loadApiKey, readTranscript, extractMessages, buildContent, apiPost, readHookInput, detectPlatform, initPlatformPaths, normalizeEvent, } from './purmemo_lib.js';
25
25
  const TAG = 'capture';
26
26
  const COOLDOWNS = { Stop: 120_000, PreCompact: 30_000 };
27
27
  const HEARTBEAT_INTERVAL = 10;
@@ -73,7 +73,11 @@ async function main() {
73
73
  return;
74
74
  // Normalize Gemini event names to internal (Claude) names
75
75
  const event = normalizeEvent(hook_event_name || 'unknown');
76
- const state = readState();
76
+ let state = readState();
77
+ // Prune stale keys on Stop (low frequency, good trigger for cleanup)
78
+ if (event === 'Stop') {
79
+ state = pruneState(state);
80
+ }
77
81
  // ── Heartbeat: count tool calls, only save at intervals ──────────────────
78
82
  if (event === 'PostToolUse') {
79
83
  const countKey = `hb_count_${session_id}`;
@@ -102,7 +106,7 @@ async function main() {
102
106
  dbg(TAG, `${event} fired — session=${session_id} transcript=${transcript_path || 'none'}`);
103
107
  const apiKey = loadApiKey();
104
108
  if (!apiKey) {
105
- dbg(TAG, 'skipno api key');
109
+ errLog(TAG, 'no API key set PURMEMO_API_KEY or run purmemo setup');
106
110
  return;
107
111
  }
108
112
  // ── Read and build content ───────────────────────────────────────────────
@@ -147,9 +151,9 @@ async function main() {
147
151
  dbg(TAG, `${event} saved — ${messages.length} msgs, ${content.length} chars, convId=${conversationId}`);
148
152
  }
149
153
  else {
150
- dbg(TAG, `${event} errorsave failed`);
154
+ errLog(TAG, `${event} save failed ${messages.length} msgs, ${content.length} chars`);
151
155
  }
152
156
  }
153
157
  // Top-level await keeps the process alive until all HTTP requests complete
154
- await main().catch(() => { });
158
+ await main().catch((e) => { process.stderr.write(`[purmemo:capture] fatal: ${e.message}\n`); });
155
159
  //# sourceMappingURL=purmemo_capture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"purmemo_capture.js","sourceRoot":"","sources":["../../src/hooks/purmemo_capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"purmemo_capture.js","sourceRoot":"","sources":["../../src/hooks/purmemo_capture.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  */
9
9
  import * as fs from 'node:fs';
10
10
  import * as os from 'node:os';
11
- import { dbg, readState, writeState, loadApiKey, apiGet, readHookInput, detectPlatform, initPlatformPaths, platformEvent, } from './purmemo_lib.js';
11
+ import { dbg, errLog, readState, writeState, loadApiKey, apiGet, readHookInput, detectPlatform, initPlatformPaths, platformEvent, } from './purmemo_lib.js';
12
12
  const TAG = 'first_msg';
13
13
  function countUserMessages(transcriptPath) {
14
14
  try {
@@ -104,10 +104,10 @@ async function main() {
104
104
  return;
105
105
  }
106
106
  }
107
- dbg(TAG, `failed to load ${memId}`);
107
+ errLog(TAG, `failed to load memory ${memId}`);
108
108
  }
109
109
  }
110
110
  dbg(TAG, `first message — no number shortcut, session ${session_id}`);
111
111
  }
112
- await main().catch(() => { });
112
+ await main().catch((e) => { process.stderr.write(`[purmemo:first_msg] fatal: ${e.message}\n`); });
113
113
  //# sourceMappingURL=purmemo_first_message.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"purmemo_first_message.js","sourceRoot":"","sources":["../../src/hooks/purmemo_first_message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"purmemo_first_message.js","sourceRoot":"","sources":["../../src/hooks/purmemo_first_message.ts"],"names":[],"mappings":"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"}
@@ -47,10 +47,14 @@ export declare function platformEvent(internalName: string, platform: Platform):
47
47
  /** Call after detectPlatform() to switch state/debug paths */
48
48
  export declare function initPlatformPaths(platform: Platform): void;
49
49
  export declare function dbg(tag: string, msg: string): void;
50
+ /** Log errors to stderr so Claude Code can surface them. Use sparingly. */
51
+ export declare function errLog(tag: string, msg: string): void;
50
52
  export declare function readState(): Record<string, unknown>;
51
53
  export declare function writeState(state: Record<string, unknown>): void;
54
+ /** Remove stale per-session keys older than 7 days. */
55
+ export declare function pruneState(state: Record<string, unknown>): Record<string, unknown>;
52
56
  export declare function loadApiKey(): string | null;
53
- /** Read Claude Code JSONL transcript */
57
+ /** Read Claude Code JSONL or Gemini JSON transcript */
54
58
  export declare function readTranscript(transcriptPath: string | undefined): TranscriptEntry[];
55
59
  export declare function extractMessages(entries: TranscriptEntry[]): Message[];
56
60
  export declare function buildContent(messages: Message[]): string;
@@ -1 +1 @@
1
- {"version":3,"file":"purmemo_lib.d.ts","sourceRoot":"","sources":["../../src/hooks/purmemo_lib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"purmemo_lib.d.ts","sourceRoot":"","sources":["../../src/hooks/purmemo_lib.ts"],"names":[],"mappings":"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"}
@@ -88,12 +88,21 @@ export function dbg(tag, msg) {
88
88
  }
89
89
  catch { }
90
90
  }
91
+ /** Log errors to stderr so Claude Code can surface them. Use sparingly. */
92
+ export function errLog(tag, msg) {
93
+ dbg(tag, `ERROR: ${msg}`);
94
+ process.stderr.write(`[purmemo:${tag}] ${msg}\n`);
95
+ }
91
96
  // ─── State management ────────────────────────────────────────────────────────
97
+ const STATE_KEY_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000; // 7 days
92
98
  export function readState() {
93
99
  try {
94
100
  return JSON.parse(fs.readFileSync(_paths.stateFile, 'utf8'));
95
101
  }
96
- catch {
102
+ catch (e) {
103
+ if (e.code !== 'ENOENT') {
104
+ errLog('state', `corrupted state file, resetting: ${e.message}`);
105
+ }
97
106
  return {};
98
107
  }
99
108
  }
@@ -105,7 +114,36 @@ export function writeState(state) {
105
114
  fs.writeFileSync(tmp, JSON.stringify(state), 'utf8');
106
115
  fs.renameSync(tmp, _paths.stateFile);
107
116
  }
108
- catch { }
117
+ catch (e) {
118
+ errLog('state', `write failed: ${e.message}`);
119
+ }
120
+ }
121
+ /** Remove stale per-session keys older than 7 days. */
122
+ export function pruneState(state) {
123
+ const now = Date.now();
124
+ const prefixes = ['session_recall_', 'banner_shown_', 'hb_count_', 'cd_', 'stop_', 'precompact_'];
125
+ let pruned = 0;
126
+ for (const key of Object.keys(state)) {
127
+ const isSessionKey = prefixes.some(p => key.startsWith(p));
128
+ if (!isSessionKey)
129
+ continue;
130
+ const val = state[key];
131
+ if (typeof val === 'number' && val < now - STATE_KEY_MAX_AGE_MS) {
132
+ delete state[key];
133
+ pruned++;
134
+ }
135
+ else if (typeof val !== 'number') {
136
+ const sessionId = key.replace(/^(session_recall_|banner_shown_|hb_count_|cd_\w+_|stop_|precompact_)/, '');
137
+ const hasRecentActivity = Object.keys(state).some(k => k.endsWith(sessionId) && typeof state[k] === 'number' && state[k] > now - STATE_KEY_MAX_AGE_MS);
138
+ if (!hasRecentActivity) {
139
+ delete state[key];
140
+ pruned++;
141
+ }
142
+ }
143
+ }
144
+ if (pruned > 0)
145
+ dbg('state', `pruned ${pruned} stale keys (${Object.keys(state).length} remaining)`);
146
+ return state;
109
147
  }
110
148
  // ─── Auth ────────────────────────────────────────────────────────────────────
111
149
  function getEncryptionKey() {
@@ -131,7 +169,7 @@ export function loadApiKey() {
131
169
  }
132
170
  }
133
171
  // ─── Transcript reading ──────────────────────────────────────────────────────
134
- /** Read Claude Code JSONL transcript */
172
+ /** Read Claude Code JSONL or Gemini JSON transcript */
135
173
  export function readTranscript(transcriptPath) {
136
174
  try {
137
175
  if (!transcriptPath || !fs.existsSync(transcriptPath))
@@ -139,8 +177,10 @@ export function readTranscript(transcriptPath) {
139
177
  const raw = fs.readFileSync(transcriptPath, 'utf8').trim();
140
178
  if (!raw)
141
179
  return [];
142
- // Auto-detect: if it starts with '{' or '[', it's Gemini JSON; otherwise JSONL
143
- if (raw.startsWith('{') || raw.startsWith('[')) {
180
+ // Use platform detection (set by detectPlatform() before this runs).
181
+ // JSONL lines also start with '{', so content-sniffing was wrong — it
182
+ // routed every Claude Code transcript to the Gemini JSON parser.
183
+ if (_detectedPlatform === 'gemini') {
144
184
  return readGeminiTranscript(raw);
145
185
  }
146
186
  const lines = raw.split('\n').filter(Boolean);
@@ -239,15 +279,22 @@ export function apiGet(apiKey, urlPath, timeout = 8000) {
239
279
  res.on('data', (chunk) => chunks.push(chunk));
240
280
  res.on('end', () => {
241
281
  try {
242
- resolve(JSON.parse(Buffer.concat(chunks).toString('utf8')));
282
+ const body = JSON.parse(Buffer.concat(chunks).toString('utf8'));
283
+ if (res.statusCode && res.statusCode >= 400) {
284
+ errLog('api', `GET ${urlPath} → ${res.statusCode}: ${body?.error || body?.message || 'unknown'}`);
285
+ resolve(null);
286
+ return;
287
+ }
288
+ resolve(body);
243
289
  }
244
290
  catch {
291
+ errLog('api', `GET ${urlPath} → ${res.statusCode} (invalid JSON)`);
245
292
  resolve(null);
246
293
  }
247
294
  });
248
295
  });
249
- req.on('error', () => resolve(null));
250
- req.on('timeout', () => { req.destroy(); resolve(null); });
296
+ req.on('error', (e) => { errLog('api', `GET ${urlPath} → network error: ${e.message}`); resolve(null); });
297
+ req.on('timeout', () => { req.destroy(); errLog('api', `GET ${urlPath} → timeout (${timeout}ms)`); resolve(null); });
251
298
  req.end();
252
299
  });
253
300
  }
@@ -271,15 +318,22 @@ export function apiPost(apiKey, urlPath, payload, timeout = 15000) {
271
318
  res.on('data', (chunk) => chunks.push(chunk));
272
319
  res.on('end', () => {
273
320
  try {
274
- resolve(JSON.parse(Buffer.concat(chunks).toString('utf8')));
321
+ const parsed = JSON.parse(Buffer.concat(chunks).toString('utf8'));
322
+ if (res.statusCode && res.statusCode >= 400) {
323
+ errLog('api', `POST ${urlPath} → ${res.statusCode}: ${parsed?.error || parsed?.message || 'unknown'}`);
324
+ resolve(null);
325
+ return;
326
+ }
327
+ resolve(parsed);
275
328
  }
276
329
  catch {
330
+ errLog('api', `POST ${urlPath} → ${res.statusCode} (invalid JSON)`);
277
331
  resolve(null);
278
332
  }
279
333
  });
280
334
  });
281
- req.on('error', () => resolve(null));
282
- req.on('timeout', () => { req.destroy(); resolve(null); });
335
+ req.on('error', (e) => { errLog('api', `POST ${urlPath} → network error: ${e.message}`); resolve(null); });
336
+ req.on('timeout', () => { req.destroy(); errLog('api', `POST ${urlPath} → timeout (${timeout}ms)`); resolve(null); });
283
337
  req.write(body);
284
338
  req.end();
285
339
  });
@@ -1 +1 @@
1
- {"version":3,"file":"purmemo_lib.js","sourceRoot":"","sources":["../../src/hooks/purmemo_lib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"purmemo_lib.js","sourceRoot":"","sources":["../../src/hooks/purmemo_lib.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Purmemo Claude Code — Session Recall
3
+ * Purmemo Claude Code — Session Recall + Handoff Brief
4
4
  *
5
5
  * Fires on SessionStart. Fetches the 5 most recently user-touched memories
6
- * and injects them as numbered context. Sorts by user_updated_at (not
7
- * updated_at, which gets bumped by background Gemini processing).
6
+ * and active todos, then composes a handoff brief using 5-layer compaction:
7
+ * Layer 1: Intent (what user was doing never cut)
8
+ * Layer 2: Decisions & completions
9
+ * Layer 3: Open loops (blockers, todos)
10
+ * Layer 4: Context (tech stack, projects)
11
+ * Layer 5: Content excerpts (trimmed to budget)
8
12
  *
13
+ * Sorts by user_updated_at (not updated_at, which gets bumped by Gemini).
9
14
  * Skips on compact/clear. Posts a session context heartbeat.
10
15
  * Never blocks session start on any error.
11
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"purmemo_recall.d.ts","sourceRoot":"","sources":["../../src/hooks/purmemo_recall.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
1
+ {"version":3,"file":"purmemo_recall.d.ts","sourceRoot":"","sources":["../../src/hooks/purmemo_recall.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG"}
@@ -1,19 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Purmemo Claude Code — Session Recall
3
+ * Purmemo Claude Code — Session Recall + Handoff Brief
4
4
  *
5
5
  * Fires on SessionStart. Fetches the 5 most recently user-touched memories
6
- * and injects them as numbered context. Sorts by user_updated_at (not
7
- * updated_at, which gets bumped by background Gemini processing).
6
+ * and active todos, then composes a handoff brief using 5-layer compaction:
7
+ * Layer 1: Intent (what user was doing never cut)
8
+ * Layer 2: Decisions & completions
9
+ * Layer 3: Open loops (blockers, todos)
10
+ * Layer 4: Context (tech stack, projects)
11
+ * Layer 5: Content excerpts (trimmed to budget)
8
12
  *
13
+ * Sorts by user_updated_at (not updated_at, which gets bumped by Gemini).
9
14
  * Skips on compact/clear. Posts a session context heartbeat.
10
15
  * Never blocks session start on any error.
11
16
  */
12
17
  import * as path from 'node:path';
13
- import { dbg, readState, writeState, loadApiKey, apiGet, apiPost, readHookInput, checkForUpdate, autoUpdateHooks, HOOKS_VERSION, detectPlatform, initPlatformPaths, platformEvent, } from './purmemo_lib.js';
18
+ import { dbg, errLog, readState, writeState, pruneState, loadApiKey, apiGet, apiPost, readHookInput, checkForUpdate, autoUpdateHooks, HOOKS_VERSION, detectPlatform, initPlatformPaths, platformEvent, } from './purmemo_lib.js';
14
19
  const TAG = 'recall';
15
20
  const MAX_MEMORIES = 5;
16
21
  const MAX_PREVIEW = 300;
22
+ const MAX_TODOS = 8;
17
23
  function relativeTime(date) {
18
24
  const diff = Date.now() - date.getTime();
19
25
  const mins = Math.floor(diff / 60000);
@@ -27,6 +33,111 @@ function relativeTime(date) {
27
33
  const days = Math.floor(hrs / 24);
28
34
  return `${days}d ago`;
29
35
  }
36
+ // ── Handoff Brief Composer ──────────────────────────────────────────────────
37
+ // Compaction hierarchy: Intent → Decisions → Open Loops → Context → Content
38
+ function composeHandoffBrief(memories, todos, projectName) {
39
+ if (!memories.length)
40
+ return '';
41
+ const lines = [`[Purmemo — handoff brief for "${projectName}"]`];
42
+ // Layer 1: Intent — what user was trying to accomplish
43
+ const primary = memories[0];
44
+ if (primary.primary_intent)
45
+ lines.push(`Goal: ${primary.primary_intent}`);
46
+ if (primary.summary)
47
+ lines.push(`Last session: ${primary.summary}`);
48
+ if (primary.key_result)
49
+ lines.push(`Key result: ${primary.key_result}`);
50
+ if (primary.next_phase_hint && primary.next_phase_hint !== 'other') {
51
+ lines.push(`Next phase: ${primary.next_phase_hint}`);
52
+ }
53
+ // Prior session summaries (dedup by project)
54
+ const seenProjects = new Set();
55
+ if (primary.project_name)
56
+ seenProjects.add(primary.project_name);
57
+ for (let i = 1; i < memories.length; i++) {
58
+ const m = memories[i];
59
+ if (!m.summary)
60
+ continue;
61
+ const proj = m.project_name || '';
62
+ if (proj && seenProjects.has(proj))
63
+ continue;
64
+ if (proj)
65
+ seenProjects.add(proj);
66
+ lines.push(`Prior: ${m.summary}`);
67
+ }
68
+ // Layer 2: Decisions & completions (prefer V2.1 decisions[] over work_items)
69
+ const decisions = [];
70
+ const completions = [];
71
+ for (const m of memories) {
72
+ const decisionsList = m.decisions || [];
73
+ if (decisionsList.length > 0) {
74
+ for (const d of decisionsList) {
75
+ if (decisions.length < 4) {
76
+ const rationale = d.rationale ? ` — ${d.rationale}` : '';
77
+ decisions.push(` - ${d.text}${rationale}`);
78
+ }
79
+ }
80
+ }
81
+ else {
82
+ const workItems = m.work_items || [];
83
+ for (const item of workItems) {
84
+ if (item.type === 'decision' && decisions.length < 4) {
85
+ decisions.push(` - ${item.text}`);
86
+ }
87
+ }
88
+ }
89
+ const comps = m.completions || [];
90
+ for (const c of comps) {
91
+ if (completions.length < 3)
92
+ completions.push(` - ${c.text}`);
93
+ }
94
+ }
95
+ if (decisions.length)
96
+ lines.push(`Decisions:\n${decisions.join('\n')}`);
97
+ if (completions.length)
98
+ lines.push(`Completed:\n${completions.join('\n')}`);
99
+ // Layer 3: Open loops — blockers, open items, todos
100
+ const blockers = [];
101
+ const openItems = [];
102
+ for (const m of memories) {
103
+ const bList = m.blockers || [];
104
+ for (const b of bList) {
105
+ if (blockers.length < 4)
106
+ blockers.push(` - ${b.text}`);
107
+ }
108
+ const wList = m.work_items || [];
109
+ for (const item of wList) {
110
+ if (item.type !== 'decision' && item.status !== 'done' && openItems.length < 4) {
111
+ openItems.push(` - ${item.text}`);
112
+ }
113
+ }
114
+ }
115
+ const activeTodos = [];
116
+ for (const t of todos) {
117
+ if (t.status !== 'done' && activeTodos.length < 4) {
118
+ const prio = t.priority ? ` [${t.priority}]` : '';
119
+ activeTodos.push(` - ${t.text}${prio}`);
120
+ }
121
+ }
122
+ if (blockers.length)
123
+ lines.push(`Blockers:\n${blockers.join('\n')}`);
124
+ if (openItems.length)
125
+ lines.push(`Open items:\n${openItems.join('\n')}`);
126
+ if (activeTodos.length)
127
+ lines.push(`Active todos:\n${activeTodos.join('\n')}`);
128
+ // Layer 4: Context — technologies, projects
129
+ const techs = new Set();
130
+ for (const m of memories) {
131
+ const tList = m.technologies || [];
132
+ for (const t of tList)
133
+ techs.add(t);
134
+ }
135
+ if (techs.size > 0)
136
+ lines.push(`Stack: ${Array.from(techs).slice(0, 8).join(', ')}`);
137
+ lines.push('');
138
+ lines.push(`${memories.length} recent memories loaded. Type a number to load fully.`);
139
+ return lines.join('\n');
140
+ }
30
141
  async function main() {
31
142
  let hookData;
32
143
  try {
@@ -47,7 +158,7 @@ async function main() {
47
158
  }
48
159
  const apiKey = loadApiKey();
49
160
  if (!apiKey) {
50
- dbg(TAG, 'skipno api key');
161
+ errLog(TAG, 'no API key set PURMEMO_API_KEY or run purmemo setup');
51
162
  return;
52
163
  }
53
164
  const projectName = path.basename(cwd || process.cwd());
@@ -56,40 +167,36 @@ async function main() {
56
167
  apiPost(apiKey, '/api/v1/identity/session', {
57
168
  project: projectName, platform: platformName, auto: true,
58
169
  }, 5000).then(r => dbg(TAG, `session POST → ${r ? 'ok' : 'error'}`));
59
- // Fetch most recent memories by user activity (not background processing)
170
+ // Fetch recent memories + active todos in parallel
60
171
  const params = new URLSearchParams({
61
172
  limit: String(MAX_MEMORIES),
62
173
  sort: 'user_updated_at',
63
174
  order: 'desc',
64
175
  });
65
- const result = await apiGet(apiKey, `/api/v1/memories/?${params}`);
66
- const memories = result?.memories || [];
67
- dbg(TAG, `recalled ${memories.length} recent memories`);
176
+ const [memResult, todosResult] = await Promise.all([
177
+ apiGet(apiKey, `/api/v1/memories/?${params}`),
178
+ apiGet(apiKey, `/api/v1/todos?limit=${MAX_TODOS}`).catch(() => null),
179
+ ]);
180
+ const memories = memResult?.memories || [];
181
+ const todos = (Array.isArray(todosResult) ? todosResult : todosResult?.todos) || [];
182
+ dbg(TAG, `recalled ${memories.length} memories, ${todos.length} todos`);
68
183
  if (!memories.length) {
69
184
  dbg(TAG, 'no memories found');
70
185
  return;
71
186
  }
72
- // Build context for Claude (injected silently)
73
- const contextLines = [
74
- `[Purmemo recent context for "${projectName}"]`,
75
- `${memories.length} recent memories:\n`,
76
- ];
187
+ // Compose handoff brief from V2 intelligence data
188
+ const handoffBrief = composeHandoffBrief(memories, todos, projectName);
189
+ // Also build numbered list for quick-load (backward compat)
190
+ const contextLines = [handoffBrief];
191
+ contextLines.push('');
77
192
  memories.forEach((mem, i) => {
78
193
  const title = mem.title || 'Untitled';
79
- const preview = (mem.content_preview || mem.content || '')
80
- .replace(/\n+/g, ' ').trim().slice(0, MAX_PREVIEW);
81
194
  const ts = mem.updated_at || mem.created_at;
82
195
  const when = ts ? relativeTime(new Date(ts)) : '';
83
196
  contextLines.push(`${i + 1}. ${title}${when ? ` (${when})` : ''}`);
84
- if (preview)
85
- contextLines.push(` ${preview}${preview.length >= MAX_PREVIEW ? '…' : ''}`);
86
- contextLines.push('');
87
197
  });
88
- contextLines.push(source === 'resume'
89
- ? '(Session resumed — context above from Purmemo)'
90
- : '(New session — context auto-loaded from Purmemo. Type a number to load fully.)');
91
198
  // Store recall data for first_message hook
92
- const state = readState();
199
+ let state = pruneState(readState());
93
200
  state[`session_recall_${session_id}`] = {
94
201
  project: projectName,
95
202
  titles: memories.map(m => m.title || 'Untitled'),
@@ -118,5 +225,5 @@ async function main() {
118
225
  systemMessage: `${updateNotice}${banner}\n\nType a number to load a memory.`,
119
226
  }));
120
227
  }
121
- await main().catch(() => { });
228
+ await main().catch((e) => { process.stderr.write(`[purmemo:recall] fatal: ${e.message}\n`); });
122
229
  //# sourceMappingURL=purmemo_recall.js.map