@tznthou/ccrecall 0.4.8 → 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.
Files changed (44) hide show
  1. package/README.md +27 -51
  2. package/README_ZH.md +27 -52
  3. package/dist/api/routes.d.ts +0 -10
  4. package/dist/api/routes.d.ts.map +1 -1
  5. package/dist/api/routes.js +4 -354
  6. package/dist/api/routes.js.map +1 -1
  7. package/dist/api/server.js +3 -3
  8. package/dist/api/server.js.map +1 -1
  9. package/dist/core/database.d.ts +14 -49
  10. package/dist/core/database.d.ts.map +1 -1
  11. package/dist/core/database.js +104 -225
  12. package/dist/core/database.js.map +1 -1
  13. package/dist/core/indexer.d.ts.map +1 -1
  14. package/dist/core/indexer.js +0 -1
  15. package/dist/core/indexer.js.map +1 -1
  16. package/dist/core/maintenance-coordinator.d.ts +3 -9
  17. package/dist/core/maintenance-coordinator.d.ts.map +1 -1
  18. package/dist/core/maintenance-coordinator.js +4 -24
  19. package/dist/core/maintenance-coordinator.js.map +1 -1
  20. package/dist/core/summarizer.d.ts.map +1 -1
  21. package/dist/core/summarizer.js +0 -22
  22. package/dist/core/summarizer.js.map +1 -1
  23. package/dist/core/types.d.ts +0 -87
  24. package/dist/core/types.d.ts.map +1 -1
  25. package/dist/core/types.js.map +1 -1
  26. package/dist/index.js +0 -16
  27. package/dist/index.js.map +1 -1
  28. package/package.json +1 -1
  29. package/dist/cli/journal.d.ts +0 -11
  30. package/dist/cli/journal.d.ts.map +0 -1
  31. package/dist/cli/journal.js +0 -111
  32. package/dist/cli/journal.js.map +0 -1
  33. package/dist/core/lint.d.ts +0 -17
  34. package/dist/core/lint.d.ts.map +0 -1
  35. package/dist/core/lint.js +0 -51
  36. package/dist/core/lint.js.map +0 -1
  37. package/dist/core/outcome-extractor.d.ts +0 -6
  38. package/dist/core/outcome-extractor.d.ts.map +0 -1
  39. package/dist/core/outcome-extractor.js +0 -39
  40. package/dist/core/outcome-extractor.js.map +0 -1
  41. package/dist/core/outcome-scorer.d.ts +0 -8
  42. package/dist/core/outcome-scorer.d.ts.map +0 -1
  43. package/dist/core/outcome-scorer.js +0 -103
  44. package/dist/core/outcome-scorer.js.map +0 -1
@@ -1,15 +1,9 @@
1
1
  import { URL } from 'node:url';
2
2
  import { sendJson, parseJsonBody } from './server.js';
3
3
  import { MemoryService } from '../core/memory-service.js';
4
- import { runLint } from '../core/lint.js';
5
4
  import { scrubErrorMessage } from '../core/log-safe.js';
6
- import { scoreKnowledgeBearing } from '../core/outcome-scorer.js';
7
5
  import { applyRowBudget, DEFAULT_MAX_TOKENS, DEFAULT_PER_ROW_CHAR_CAP } from '../core/token-budget.js';
8
6
  import { appendRecallTelemetry } from '../core/recall-telemetry.js';
9
- import { deriveDepth } from '../core/types.js';
10
- const VALID_MEMORY_TYPES = new Set([
11
- 'decision', 'discovery', 'preference', 'pattern', 'feedback', 'query',
12
- ]);
13
7
  const LOOPBACK_HOSTS = new Set(['127.0.0.1', '::1', 'localhost']);
14
8
  function isLoopbackOrigin(origin) {
15
9
  if (!origin)
@@ -29,13 +23,6 @@ function memorySource(m) {
29
23
  return `${m.sessionId}:session`;
30
24
  return `memory:${m.id}`;
31
25
  }
32
- function optionalString(value, field) {
33
- if (value == null)
34
- return { value: null };
35
- if (typeof value === 'string')
36
- return { value };
37
- return { error: `${field} must be string or null` };
38
- }
39
26
  function validateSessionEndBody(raw) {
40
27
  if (!raw || typeof raw !== 'object')
41
28
  return { error: 'body must be JSON object' };
@@ -43,95 +30,7 @@ function validateSessionEndBody(raw) {
43
30
  if (typeof b.sessionId !== 'string' || b.sessionId.trim() === '') {
44
31
  return { error: 'sessionId must be non-empty string' };
45
32
  }
46
- if (b.dryRun != null && typeof b.dryRun !== 'boolean') {
47
- return { error: 'dryRun must be boolean' };
48
- }
49
- return { sessionId: b.sessionId, dryRun: b.dryRun === true };
50
- }
51
- export function inferConfidence(outcome) {
52
- if (outcome === 'committed')
53
- return 0.9;
54
- if (outcome === 'tested')
55
- return 0.8;
56
- return 0.7;
57
- }
58
- /** P1 (#21): hook auto-harvester 改寫 session_journal 不寫 memories;
59
- * manual recall_save 仍直寫 memories。promote 路徑 (C4) 會把 journal entry
60
- * 搬到 memories table 並設 confidence。
61
- *
62
- * Score 重算: summarizer 已用 scorer 過 noise/process-report hard floor,
63
- * 但 score + reasons metadata 沒儲在 sessions.harvest_text。重算成本低
64
- * (regex 對 <2KB 文字),換 schema 不變的代價可接受。 */
65
- export function buildJournalCandidate(session) {
66
- const harvestText = session.harvestText?.trim();
67
- if (!harvestText)
68
- return null;
69
- const result = scoreKnowledgeBearing(harvestText);
70
- // Defense in depth: 單元測試可能直接餵 SessionMeta, hard floor 仍應生效。
71
- if (result.reasons.includes('noise') || result.reasons.includes('process-report'))
72
- return null;
73
- return {
74
- sessionId: session.id,
75
- messageId: null,
76
- content: harvestText,
77
- score: result.score,
78
- reasonsJson: JSON.stringify(result.reasons),
79
- projectId: session.projectId ?? null,
80
- };
81
- }
82
- function validateSaveBody(raw) {
83
- if (!raw || typeof raw !== 'object')
84
- return { error: 'body must be JSON object' };
85
- const b = raw;
86
- if (typeof b.content !== 'string' || b.content.trim() === '') {
87
- return { error: 'content must be non-empty string' };
88
- }
89
- if (typeof b.type !== 'string' || !VALID_MEMORY_TYPES.has(b.type)) {
90
- return { error: `type must be one of: ${[...VALID_MEMORY_TYPES].join(', ')}` };
91
- }
92
- const sessionIdResult = optionalString(b.sessionId, 'sessionId');
93
- if ('error' in sessionIdResult)
94
- return sessionIdResult;
95
- const messageIdResult = optionalString(b.messageId, 'messageId');
96
- if ('error' in messageIdResult)
97
- return messageIdResult;
98
- const projectIdResult = optionalString(b.projectId, 'projectId');
99
- if ('error' in projectIdResult)
100
- return projectIdResult;
101
- let confidence;
102
- if (b.confidence != null) {
103
- if (typeof b.confidence !== 'number' || b.confidence < 0 || b.confidence > 1) {
104
- return { error: 'confidence must be number in [0, 1]' };
105
- }
106
- confidence = b.confidence;
107
- }
108
- return {
109
- content: b.content,
110
- type: b.type,
111
- sessionId: sessionIdResult.value,
112
- messageId: messageIdResult.value,
113
- confidence,
114
- projectId: projectIdResult.value,
115
- };
116
- }
117
- function topicWithDepth(t) {
118
- return { ...t, depth: deriveDepth(t.mentionCount) };
119
- }
120
- const SNAPSHOT_MAX_BYTES = 64 * 1024;
121
- function validateCheckpointBody(raw) {
122
- if (!raw || typeof raw !== 'object')
123
- return { error: 'body must be JSON object' };
124
- const b = raw;
125
- if (typeof b.sessionId !== 'string' || b.sessionId.trim() === '') {
126
- return { error: 'sessionId must be non-empty string' };
127
- }
128
- if (typeof b.snapshot !== 'string' || b.snapshot.trim() === '') {
129
- return { error: 'snapshot must be non-empty string' };
130
- }
131
- if (Buffer.byteLength(b.snapshot, 'utf8') > SNAPSHOT_MAX_BYTES) {
132
- return { error: `snapshot must be <= ${SNAPSHOT_MAX_BYTES} bytes` };
133
- }
134
- return { sessionId: b.sessionId, snapshot: b.snapshot };
33
+ return { sessionId: b.sessionId };
135
34
  }
136
35
  const startTime = Date.now();
137
36
  /** Coalesces concurrent rescue calls onto one underlying run. The SessionEnd
@@ -162,7 +61,6 @@ export function createRequestHandler(db, opts = {}) {
162
61
  sessionCount: db.getMainSessionCount(),
163
62
  memoryCount: db.getMemoryCount(),
164
63
  topicCount: db.getTopicCount(),
165
- journalPendingCount: db.getJournalPendingCount(),
166
64
  uptime: Math.floor((Date.now() - startTime) / 1000),
167
65
  lastIntegrityCheckAt: integrity?.at ?? null,
168
66
  lastIntegrityCheckOk: integrity?.ok ?? null,
@@ -326,141 +224,6 @@ export function createRequestHandler(db, opts = {}) {
326
224
  });
327
225
  return;
328
226
  }
329
- // GET /memory/context?session_id=...
330
- if (req.method === 'GET' && path === '/memory/context') {
331
- const sessionId = url.searchParams.get('session_id') ?? '';
332
- // TODO: integrate with session context lookup
333
- sendJson(res, 200, { summary: null, decisions: [], filesTouched: [], sessionId });
334
- return;
335
- }
336
- // POST /memory/save
337
- if (req.method === 'POST' && path === '/memory/save') {
338
- if (!isLoopbackOrigin(req.headers.origin)) {
339
- sendJson(res, 403, { error: 'cross-origin requests forbidden' });
340
- return;
341
- }
342
- const body = await parseJsonBody(req, res);
343
- if (!body.ok)
344
- return;
345
- const v = validateSaveBody(body.parsed);
346
- if ('error' in v) {
347
- sendJson(res, 400, v);
348
- return;
349
- }
350
- const id = db.saveMemory(v);
351
- sendJson(res, 200, { ok: true, id });
352
- return;
353
- }
354
- // POST /journal/promote — manual promote a journal entry to memories (#21 P1)
355
- if (req.method === 'POST' && path === '/journal/promote') {
356
- if (!isLoopbackOrigin(req.headers.origin)) {
357
- sendJson(res, 403, { error: 'cross-origin requests forbidden' });
358
- return;
359
- }
360
- const body = await parseJsonBody(req, res);
361
- if (!body.ok)
362
- return;
363
- const b = body.parsed;
364
- if (typeof b.id !== 'number' || !Number.isInteger(b.id) || b.id <= 0) {
365
- sendJson(res, 400, { error: 'id must be positive integer' });
366
- return;
367
- }
368
- const type = (typeof b.type === 'string' && VALID_MEMORY_TYPES.has(b.type))
369
- ? b.type
370
- : 'discovery';
371
- let confidence = 0.7;
372
- if (b.confidence != null) {
373
- if (typeof b.confidence !== 'number' || b.confidence < 0 || b.confidence > 1) {
374
- sendJson(res, 400, { error: 'confidence must be number in [0, 1]' });
375
- return;
376
- }
377
- confidence = b.confidence;
378
- }
379
- const entry = db.getJournalEntry(b.id);
380
- if (!entry) {
381
- sendJson(res, 404, { error: 'journal entry not found' });
382
- return;
383
- }
384
- if (entry.status !== 'pending') {
385
- sendJson(res, 409, { error: `journal entry status='${entry.status}', expected 'pending'` });
386
- return;
387
- }
388
- let memoryId = 0;
389
- try {
390
- db.runTransaction(() => {
391
- memoryId = db.saveMemory({
392
- sessionId: entry.sessionId,
393
- messageId: entry.messageId,
394
- content: entry.content,
395
- type,
396
- confidence,
397
- projectId: entry.projectId,
398
- });
399
- // 繼承 session topics → memory_topics, 重建 knowledge_map (對齊 v0.2.x harvest 行為)
400
- if (entry.sessionId) {
401
- const session = db.getSessionById(entry.sessionId);
402
- if (session) {
403
- const sessionTopics = db.getSessionTopicKeys(session.id);
404
- if (sessionTopics.length > 0) {
405
- db.saveMemoryTopics(memoryId, session.projectId, sessionTopics);
406
- }
407
- db.rebuildKnowledgeMap(session.projectId);
408
- }
409
- }
410
- // Race guard: pre-read 後 status 若被改 (multi-daemon, 直接 SQL),
411
- // promoteJournalEntry 會回 false; throw 觸發 transaction rollback,
412
- // 避免 memories 多一筆 orphan 而 journal status 沒翻 promoted。
413
- if (!db.promoteJournalEntry(entry.id, memoryId)) {
414
- throw new Error('JOURNAL_RACE: status changed during transaction');
415
- }
416
- });
417
- }
418
- catch (err) {
419
- if (err.message?.startsWith('JOURNAL_RACE:')) {
420
- sendJson(res, 409, { error: 'journal entry status changed during transaction; re-fetch and retry' });
421
- return;
422
- }
423
- throw err;
424
- }
425
- sendJson(res, 200, { ok: true, memoryId, journalId: entry.id });
426
- return;
427
- }
428
- // GET /journal/pending?limit=N — list pending journal entries for promote/reject (#21 P1 fix-up)
429
- if (req.method === 'GET' && path === '/journal/pending') {
430
- if (!isLoopbackOrigin(req.headers.origin)) {
431
- sendJson(res, 403, { error: 'cross-origin requests forbidden' });
432
- return;
433
- }
434
- const rawLimit = parseInt(url.searchParams.get('limit') ?? '20', 10);
435
- const limit = Number.isNaN(rawLimit) || rawLimit < 1 ? 20 : Math.min(rawLimit, 100);
436
- const entries = db.getPendingJournalEntries(limit);
437
- sendJson(res, 200, { entries, total: entries.length });
438
- return;
439
- }
440
- // POST /journal/reject — mark a journal entry as rejected (decay sweep cleans up)
441
- if (req.method === 'POST' && path === '/journal/reject') {
442
- if (!isLoopbackOrigin(req.headers.origin)) {
443
- sendJson(res, 403, { error: 'cross-origin requests forbidden' });
444
- return;
445
- }
446
- const body = await parseJsonBody(req, res);
447
- if (!body.ok)
448
- return;
449
- const b = body.parsed;
450
- if (typeof b.id !== 'number' || !Number.isInteger(b.id) || b.id <= 0) {
451
- sendJson(res, 400, { error: 'id must be positive integer' });
452
- return;
453
- }
454
- // Decay TTL: 7 days; sweep cron (C5) cleans up after expires_at
455
- const expiresAt = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString();
456
- const ok = db.rejectJournalEntry(b.id, expiresAt);
457
- if (!ok) {
458
- sendJson(res, 404, { error: 'journal entry not found or not pending' });
459
- return;
460
- }
461
- sendJson(res, 200, { ok: true, journalId: b.id, expiresAt });
462
- return;
463
- }
464
227
  // POST /session/end
465
228
  if (req.method === 'POST' && path === '/session/end') {
466
229
  if (!isLoopbackOrigin(req.headers.origin)) {
@@ -479,7 +242,8 @@ export function createRequestHandler(db, opts = {}) {
479
242
  if (!session && opts.rescueReindex) {
480
243
  // Fresh-session race: hook fires before the daemon has indexed the
481
244
  // JSONL. Run one reindex and retry — watcher will catch subsequent
482
- // changes but this first harvest can't wait for the next debounce.
245
+ // changes but the extraction wrapper polling /session/last can't wait
246
+ // for the next debounce (#55 fix chain).
483
247
  try {
484
248
  await opts.rescueReindex();
485
249
  }
@@ -492,121 +256,7 @@ export function createRequestHandler(db, opts = {}) {
492
256
  sendJson(res, 404, { error: 'session not found' });
493
257
  return;
494
258
  }
495
- const candidate = buildJournalCandidate(session);
496
- if (!candidate) {
497
- sendJson(res, 200, {
498
- ok: true,
499
- sessionId: v.sessionId,
500
- journalSaved: [],
501
- dryRun: v.dryRun,
502
- reason: 'session has no harvest candidate',
503
- });
504
- return;
505
- }
506
- // P1 (#21): journal 用 content_hash UNIQUE INDEX dedup; saveJournalEntry
507
- // 在重複 hash 時回 0。不再需要 v0.2.x 的 alreadyHarvested split-brain check;
508
- // memory_topics / rebuildKnowledgeMap 留給 promote 路徑 (C4) 處理。
509
- const savedIds = [];
510
- if (!v.dryRun) {
511
- const id = db.saveJournalEntry(candidate);
512
- if (id > 0)
513
- savedIds.push(id);
514
- }
515
- sendJson(res, 200, {
516
- ok: true,
517
- sessionId: v.sessionId,
518
- journalSaved: savedIds,
519
- dryRun: v.dryRun,
520
- candidate: v.dryRun ? candidate : undefined,
521
- });
522
- return;
523
- }
524
- // GET /metacognition/check?projectId=X[&topic=Y][&limit=N]
525
- if (req.method === 'GET' && path === '/metacognition/check') {
526
- // detail mode returns memory content; loopback gate matches POST mutation endpoints
527
- if (!isLoopbackOrigin(req.headers.origin)) {
528
- sendJson(res, 403, { error: 'cross-origin requests forbidden' });
529
- return;
530
- }
531
- const projectId = url.searchParams.get('projectId');
532
- if (!projectId) {
533
- sendJson(res, 400, { error: 'projectId query param required' });
534
- return;
535
- }
536
- const topicParam = url.searchParams.get('topic');
537
- const rawLimit = parseInt(url.searchParams.get('limit') ?? '10', 10);
538
- const limit = Number.isNaN(rawLimit) || rawLimit < 1 ? 10 : Math.min(rawLimit, 50);
539
- if (topicParam) {
540
- // Detail mode
541
- const topic = db.getTopic(topicParam, projectId);
542
- if (!topic) {
543
- sendJson(res, 404, { error: 'topic not found' });
544
- return;
545
- }
546
- const related = db.getRelatedTopics(topicParam, projectId, 10);
547
- const memories = db.getMemoriesByTopics(projectId, [topicParam], limit);
548
- const detail = {
549
- topicKey: topic.topicKey,
550
- projectId: topic.projectId,
551
- mentionCount: topic.mentionCount,
552
- lastTouched: topic.lastTouched,
553
- depth: deriveDepth(topic.mentionCount),
554
- memories,
555
- relatedTopics: related,
556
- };
557
- sendJson(res, 200, detail);
558
- return;
559
- }
560
- // Summary mode
561
- const top = db.getKnowledgeMap(projectId, { limit, sortBy: 'mention' }).map(topicWithDepth);
562
- const recent = db.getKnowledgeMap(projectId, { limit, sortBy: 'recent' }).map(topicWithDepth);
563
- const stale = db.getKnowledgeMap(projectId, { limit, sortBy: 'stale' }).map(topicWithDepth);
564
- const counts = db.getKnowledgeMapCounts(projectId);
565
- const summary = {
566
- projectId,
567
- topTopics: top,
568
- recentTopics: recent,
569
- staleTopics: stale,
570
- counts,
571
- };
572
- sendJson(res, 200, summary);
573
- return;
574
- }
575
- // POST /session/checkpoint
576
- if (req.method === 'POST' && path === '/session/checkpoint') {
577
- if (!isLoopbackOrigin(req.headers.origin)) {
578
- sendJson(res, 403, { error: 'cross-origin requests forbidden' });
579
- return;
580
- }
581
- const body = await parseJsonBody(req, res);
582
- if (!body.ok)
583
- return;
584
- const v = validateCheckpointBody(body.parsed);
585
- if ('error' in v) {
586
- sendJson(res, 400, v);
587
- return;
588
- }
589
- const session = db.getSessionById(v.sessionId);
590
- if (!session) {
591
- sendJson(res, 404, { error: 'session not found' });
592
- return;
593
- }
594
- const checkpointId = db.saveCheckpoint(session.id, session.projectId, v.snapshot);
595
- const result = { ok: true, checkpointId };
596
- sendJson(res, 200, result);
597
- return;
598
- }
599
- // GET /lint/warnings — orphan / stale memory detection (Phase 4d)
600
- if (req.method === 'GET' && path === '/lint/warnings') {
601
- // Reveals memory metadata (ids, session refs, decay numbers) — same
602
- // loopback gate as other introspection endpoints so a non-loopback
603
- // origin cannot enumerate recall internals via a browser prefetch.
604
- if (!isLoopbackOrigin(req.headers.origin)) {
605
- sendJson(res, 403, { error: 'cross-origin requests forbidden' });
606
- return;
607
- }
608
- const report = runLint(db);
609
- sendJson(res, 200, report);
259
+ sendJson(res, 200, { ok: true, sessionId: v.sessionId });
610
260
  return;
611
261
  }
612
262
  // 404
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"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"}
@@ -9,9 +9,9 @@ export function createServer(db, opts = {}) {
9
9
  await handleRequest(req, res);
10
10
  }
11
11
  catch (err) {
12
- // scrub before logging: SQLite errors can embed user-harvested content
13
- // (e.g. journal entry.content via constraint violations) that may carry
14
- // ANSI / CR control bytes. Pattern matches every other error log site.
12
+ // scrub before logging: SQLite errors can embed user content (e.g.
13
+ // memory content via constraint violations) that may carry ANSI / CR
14
+ // control bytes. Pattern matches every other error log site.
15
15
  console.error('Unhandled error:', scrubErrorMessage(err));
16
16
  sendJson(res, 500, { error: 'Internal server error' });
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/api/server.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,13 @@
1
- import type { Project, SessionMeta, SearchOptions, SessionSearchPage, SessionFile, OutcomeStatus, FileHistoryEntry, SubagentSession, SessionFileInput, Memory, MemoryType, Topic, SessionCheckpoint, JournalEntry, JournalEntryInput, JournalEntryPreview } from './types.js';
1
+ import type { Project, SessionMeta, SearchOptions, SessionSearchPage, SessionFile, OutcomeStatus, FileHistoryEntry, SubagentSession, SessionFileInput, Memory, MemoryType, Topic } from './types.js';
2
+ /** 64-bit signed hash for message_uuids (v24 dual-hash schema). First 8 bytes
3
+ * of SHA-256 read as a signed BigInt — exactly the SQLite INTEGER range, so
4
+ * uuid_hash doubles as the rowid (zero autoindex). Collision odds at ~400k
5
+ * rows ≈ 4e-9; a collision merely makes one replayed message skip indexing.
6
+ *
7
+ * ⚠️ Reading these values back REQUIRES `.safeIntegers(true)` on the statement:
8
+ * better-sqlite3 otherwise returns a lossy JS number for |v| > 2^53 and any
9
+ * Map<bigint, …> reverse lookup silently misses (dedup would silently die). */
10
+ export declare function hash64(s: string): bigint;
2
11
  /** 寫入 memories 時使用的參數型別 */
3
12
  export interface MemoryInput {
4
13
  sessionId: string | null;
@@ -55,7 +64,6 @@ export interface IndexSessionParams {
55
64
  tags?: string | null;
56
65
  filesTouched?: string | null;
57
66
  toolsUsed?: string | null;
58
- harvestText?: string | null;
59
67
  sessionFiles?: SessionFileInput[];
60
68
  messages: MessageInput[];
61
69
  }
@@ -167,7 +175,7 @@ export declare class Database {
167
175
  getSubagentSessions(parentSessionId: string): SubagentSession[];
168
176
  /** 刪除指定 parent session 的所有 subagent sessions */
169
177
  deleteSubagentSessions(parentSessionId: string): void;
170
- /** 刪除單一 subagent session(session_files / message_uuids 會經 FK CASCADE 清除) */
178
+ /** 刪除單一 subagent session。v24: message_uuids 無 FK CASCADE,手動清除。 */
171
179
  deleteSubagentSession(subagentId: string): void;
172
180
  /** 取得指定 parent session 的所有 subagent ID */
173
181
  getSubagentSessionIds(parentSessionId: string): string[];
@@ -175,7 +183,9 @@ export declare class Database {
175
183
  runTransaction(fn: () => void): void;
176
184
  /** 一次取得所有 subagent sessions 的 file_mtime(增量比對用) */
177
185
  getAllSubagentMtimes(): Map<string, string>;
178
- /** 查詢 DB 中已存在的 uuid(用於跨 session 去重 resumed session replay) */
186
+ /** 查詢 DB 中已存在的 uuid(用於跨 session 去重 resumed session replay)。
187
+ * v24: message_uuids 只存 64-bit hash,查詢以 hash 比對、以 Map 反查還原
188
+ * 原 uuid — 簽名與回傳不變,indexer 端零改動。 */
179
189
  getExistingUuids(uuids: string[], excludeSessionId: string): Set<string>;
180
190
  indexSession(params: IndexSessionParams): void;
181
191
  static readonly SEARCH_PAGE_SIZE = 30;
@@ -213,35 +223,6 @@ export declare class Database {
213
223
  /** 正向查詢:某 session 操作了哪些檔案 */
214
224
  getSessionFiles(sessionId: string): SessionFile[];
215
225
  saveMemory(input: MemoryInput): number;
216
- /** 寫入 journal 條目。content_hash 內部以 SHA-256 計算; 同 hash 第二次 INSERT
217
- * 會被 UNIQUE INDEX 擋下並回傳 0 (idempotency)。
218
- *
219
- * 注意: better-sqlite3 的 INSERT OR IGNORE 在 IGNORE'd 時, lastInsertRowid
220
- * 不會歸零 (保留前次成功 insert 的 rowid)。所以用 info.changes 判 dedup。 */
221
- saveJournalEntry(input: JournalEntryInput): number;
222
- /** 給 /health endpoint 用; promotion path manual-only,user 看 pending 數決定是否 invoke。 */
223
- getJournalPendingCount(): number;
224
- getJournalEntry(id: number): JournalEntry | null;
225
- /** 升級 journal entry 為 promoted; caller 已透過 saveMemory 寫入 memories table
226
- * 並拿到 memoryId,本方法只更新 journal 的 status + 回填 promoted_memory_id。
227
- * 回 false 表示 entry 不存在或已不在 'pending' 狀態 (idempotent)。 */
228
- promoteJournalEntry(id: number, memoryId: number): boolean;
229
- /** List pending journal entries (newest first) with content preview for
230
- * surfacing on the manual promotion path. content 截 200 chars 避免 response
231
- * blob 過大; caller 想看完整內容可走 promote 看 memories 或直接 sqlite3。 */
232
- getPendingJournalEntries(limit: number): JournalEntryPreview[];
233
- /** 標記 entry 為 rejected, expires_at 設為 now+7d (decay sweep 才真的刪除)。
234
- * caller 傳 expiresAt ISO string; 回 false 表示 entry 不存在或非 pending。 */
235
- rejectJournalEntry(id: number, expiresAt: string): boolean;
236
- /** Decay sweep (P1 step 7):
237
- * - rejected entries past expires_at → DELETE
238
- * - pending entries older than 30 days → DELETE
239
- * promoted entries 留著作 audit trail (有 promoted_memory_id 指 memories.id)。
240
- * manual memories 在 memories table,本方法完全不碰。 */
241
- sweepJournal(now?: Date): {
242
- rejectedDeleted: number;
243
- pendingDeleted: number;
244
- };
245
226
  queryMemories(query: string, limit: number, projectId?: string | null): Memory[];
246
227
  /** Short-token LIKE fallback for queryMemories. Trigram tokenizer cannot
247
228
  * match queries shorter than 3 chars; LIKE scans content. EFFECTIVE_CONFIDENCE
@@ -320,25 +301,9 @@ export declare class Database {
320
301
  from sessions.project_id (not the denormalized column) so repo renames / reindex won't
321
302
  leave stale cross-project associations. */
322
303
  rebuildKnowledgeMap(projectId: string): void;
323
- private static readonly TOPIC_ORDER_BY;
324
- getKnowledgeMap(projectId: string, opts?: {
325
- limit?: number;
326
- sortBy?: 'mention' | 'recent' | 'stale';
327
- }): Topic[];
328
304
  getMemoriesByTopics(projectId: string, topicKeys: string[], limit: number): Memory[];
329
305
  getTopicCount(projectId?: string): number;
330
306
  getSessionTopicKeys(sessionId: string): string[];
331
307
  getTopic(topicKey: string, projectId: string): Topic | null;
332
- /** 共現 topics(與目標共享 session 或 memory),按共現次數排序。
333
- project_id 透過 JOIN sessions 決定,避免 memory_topics 過時的 project_id 汙染。 */
334
- getRelatedTopics(topicKey: string, projectId: string, limit: number): string[];
335
- getKnowledgeMapCounts(projectId: string): {
336
- totalTopics: number;
337
- totalMemories: number;
338
- totalSessions: number;
339
- };
340
- saveCheckpoint(sessionId: string, projectId: string, snapshotText: string): number;
341
- getCheckpointById(id: number): SessionCheckpoint | null;
342
- getCheckpointsBySessionId(sessionId: string): SessionCheckpoint[];
343
308
  }
344
309
  //# sourceMappingURL=database.d.ts.map