fivocell 6.0.3 → 6.2.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 (65) hide show
  1. package/dist/__tests__/archive-versioning.test.d.ts +2 -0
  2. package/dist/__tests__/archive-versioning.test.d.ts.map +1 -0
  3. package/dist/__tests__/archive-versioning.test.js +131 -0
  4. package/dist/__tests__/archive-versioning.test.js.map +1 -0
  5. package/dist/__tests__/blob-vault.test.d.ts +2 -0
  6. package/dist/__tests__/blob-vault.test.d.ts.map +1 -0
  7. package/dist/__tests__/blob-vault.test.js +125 -0
  8. package/dist/__tests__/blob-vault.test.js.map +1 -0
  9. package/dist/__tests__/cell-mirror.test.d.ts +2 -0
  10. package/dist/__tests__/cell-mirror.test.d.ts.map +1 -0
  11. package/dist/__tests__/cell-mirror.test.js +122 -0
  12. package/dist/__tests__/cell-mirror.test.js.map +1 -0
  13. package/dist/__tests__/context-pipeline.test.d.ts +2 -0
  14. package/dist/__tests__/context-pipeline.test.d.ts.map +1 -0
  15. package/dist/__tests__/context-pipeline.test.js +119 -0
  16. package/dist/__tests__/context-pipeline.test.js.map +1 -0
  17. package/dist/__tests__/key-provider.test.d.ts +2 -0
  18. package/dist/__tests__/key-provider.test.d.ts.map +1 -0
  19. package/dist/__tests__/key-provider.test.js +74 -0
  20. package/dist/__tests__/key-provider.test.js.map +1 -0
  21. package/dist/walls/06-memory/archive/archive-versioning.d.ts +33 -0
  22. package/dist/walls/06-memory/archive/archive-versioning.d.ts.map +1 -0
  23. package/dist/walls/06-memory/archive/archive-versioning.js +201 -0
  24. package/dist/walls/06-memory/archive/archive-versioning.js.map +1 -0
  25. package/dist/walls/06-memory/archive/blob-vault.d.ts +47 -0
  26. package/dist/walls/06-memory/archive/blob-vault.d.ts.map +1 -0
  27. package/dist/walls/06-memory/archive/blob-vault.js +289 -0
  28. package/dist/walls/06-memory/archive/blob-vault.js.map +1 -0
  29. package/dist/walls/06-memory/archive/memory-archive.d.ts.map +1 -1
  30. package/dist/walls/06-memory/archive/memory-archive.js +29 -5
  31. package/dist/walls/06-memory/archive/memory-archive.js.map +1 -1
  32. package/dist/walls/06-memory/mirror/cell-mirror.d.ts +32 -0
  33. package/dist/walls/06-memory/mirror/cell-mirror.d.ts.map +1 -0
  34. package/dist/walls/06-memory/mirror/cell-mirror.js +380 -0
  35. package/dist/walls/06-memory/mirror/cell-mirror.js.map +1 -0
  36. package/dist/walls/06-memory/privacy/key-migration.d.ts +14 -0
  37. package/dist/walls/06-memory/privacy/key-migration.d.ts.map +1 -0
  38. package/dist/walls/06-memory/privacy/key-migration.js +124 -0
  39. package/dist/walls/06-memory/privacy/key-migration.js.map +1 -0
  40. package/dist/walls/06-memory/privacy/key-provider-file.d.ts +9 -0
  41. package/dist/walls/06-memory/privacy/key-provider-file.d.ts.map +1 -0
  42. package/dist/walls/06-memory/privacy/key-provider-file.js +129 -0
  43. package/dist/walls/06-memory/privacy/key-provider-file.js.map +1 -0
  44. package/dist/walls/06-memory/privacy/key-provider-os.d.ts +28 -0
  45. package/dist/walls/06-memory/privacy/key-provider-os.d.ts.map +1 -0
  46. package/dist/walls/06-memory/privacy/key-provider-os.js +225 -0
  47. package/dist/walls/06-memory/privacy/key-provider-os.js.map +1 -0
  48. package/dist/walls/06-memory/privacy/key-provider.d.ts +38 -0
  49. package/dist/walls/06-memory/privacy/key-provider.d.ts.map +1 -0
  50. package/dist/walls/06-memory/privacy/key-provider.js +135 -0
  51. package/dist/walls/06-memory/privacy/key-provider.js.map +1 -0
  52. package/dist/walls/06-memory/retrieval/context-pipeline.d.ts +36 -0
  53. package/dist/walls/06-memory/retrieval/context-pipeline.d.ts.map +1 -0
  54. package/dist/walls/06-memory/retrieval/context-pipeline.js +321 -0
  55. package/dist/walls/06-memory/retrieval/context-pipeline.js.map +1 -0
  56. package/dist/walls/06-memory/stores/memory-search.d.ts +12 -0
  57. package/dist/walls/06-memory/stores/memory-search.d.ts.map +1 -1
  58. package/dist/walls/06-memory/stores/memory-search.js +51 -2
  59. package/dist/walls/06-memory/stores/memory-search.js.map +1 -1
  60. package/dist/walls/06-memory/stores/sync-engine.d.ts.map +1 -1
  61. package/dist/walls/06-memory/stores/sync-engine.js +15 -0
  62. package/dist/walls/06-memory/stores/sync-engine.js.map +1 -1
  63. package/dist/walls/07-runtime/cli/cli.js +254 -0
  64. package/dist/walls/07-runtime/cli/cli.js.map +1 -1
  65. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sync-engine.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/sync-engine.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC;CACrD;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiCD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAwC9D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,CAqD1F;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,GAAG,UAAU,CAqCxF;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,YAAY,EAAE,EACzB,QAAQ,EAAE,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,WAAW,GAClE,YAAY,EAAE,CAmBhB;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CA0BzD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAKzD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY,GAAG,GAAG,EAAE,CAI7E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAWtD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAgBtE"}
1
+ {"version":3,"file":"sync-engine.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/sync-engine.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC;CACrD;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA+CD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAwC9D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,CAqD1F;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,GAAG,UAAU,CAqCxF;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,YAAY,EAAE,EACzB,QAAQ,EAAE,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,WAAW,GAClE,YAAY,EAAE,CAmBhB;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CA0BzD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAKzD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY,GAAG,GAAG,EAAE,CAI7E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAWtD;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAgBtE"}
@@ -51,6 +51,7 @@ const database_1 = require("../database/database");
51
51
  function getArchiveKey() {
52
52
  const globalKeyDir = path.join(os.homedir(), '.fivo', 'cell', 'keys');
53
53
  const globalKeyPath = path.join(globalKeyDir, 'local.key');
54
+ // 1. Check global key file
54
55
  if (fs.existsSync(globalKeyPath)) {
55
56
  try {
56
57
  const hex = fs.readFileSync(globalKeyPath, 'utf-8').trim();
@@ -58,6 +59,19 @@ function getArchiveKey() {
58
59
  }
59
60
  catch { /* regenerate */ }
60
61
  }
62
+ // 2. Try key provider
63
+ try {
64
+ const { getOrCreateKey } = require('../privacy/key-provider');
65
+ const key = getOrCreateKey('fivocell-archive', 32);
66
+ if (key && key.length === 32) {
67
+ if (!fs.existsSync(globalKeyDir))
68
+ fs.mkdirSync(globalKeyDir, { recursive: true });
69
+ fs.writeFileSync(globalKeyPath, key.toString('hex'), 'utf-8');
70
+ return key;
71
+ }
72
+ }
73
+ catch { /* fallback */ }
74
+ // 3. Fallback: project-local
61
75
  const localKeyPath = path.join(process.cwd(), '.cell', 'private', '.archive.key');
62
76
  if (fs.existsSync(localKeyPath)) {
63
77
  try {
@@ -70,6 +84,7 @@ function getArchiveKey() {
70
84
  }
71
85
  catch { /* regenerate */ }
72
86
  }
87
+ // 4. Create new
73
88
  const key = crypto.randomBytes(32);
74
89
  if (!fs.existsSync(globalKeyDir))
75
90
  fs.mkdirSync(globalKeyDir, { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"sync-engine.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/sync-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-engine.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/stores/sync-engine.ts"],"names":[],"mappings":"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"}
@@ -1740,6 +1740,135 @@ async function doDoctor() {
1740
1740
  console.log(` ${C.dim('--')} First-run not completed yet`);
1741
1741
  issues.push('first-run');
1742
1742
  }
1743
+ // 12. Key provider health
1744
+ try {
1745
+ const { getProviderHealthCheck } = require('../../06-memory/privacy/key-provider');
1746
+ const health = getProviderHealthCheck();
1747
+ if (health.available) {
1748
+ console.log(` ${C.success('OK')} Key provider: ${health.name} (${health.health?.method || 'unknown'})`);
1749
+ passes.push('key-provider');
1750
+ }
1751
+ else {
1752
+ console.log(` ${C.warn('--')} Key provider not available — will fallback to file encryption`);
1753
+ issues.push('key-provider');
1754
+ }
1755
+ }
1756
+ catch {
1757
+ console.log(` ${C.dim('--')} Key provider check skipped (module not loaded)`);
1758
+ }
1759
+ // 13. Blob vault health
1760
+ try {
1761
+ const { getBlobStats } = require('../../06-memory/archive/blob-vault');
1762
+ const blobStats = getBlobStats(cwd);
1763
+ if (blobStats.totalBlobs > 0) {
1764
+ console.log(` ${C.success('OK')} Blob vault: ${blobStats.totalBlobs} blobs, ${blobStats.dedupSavingsPercent}% dedup savings`);
1765
+ }
1766
+ else {
1767
+ console.log(` ${C.dim('--')} Blob vault: empty (no large content stored yet)`);
1768
+ }
1769
+ passes.push('blob-vault');
1770
+ }
1771
+ catch {
1772
+ console.log(` ${C.dim('--')} Blob vault check skipped`);
1773
+ }
1774
+ // 14. FTS index health
1775
+ try {
1776
+ const dbPathCheck = path.join(os.homedir(), '.fivo', 'cell', 'cell.db');
1777
+ if (fs.existsSync(dbPathCheck)) {
1778
+ const Database = require('better-sqlite3');
1779
+ const db = new Database(dbPathCheck, { readonly: true });
1780
+ try {
1781
+ const eventCount = db.prepare('SELECT COUNT(*) as c FROM memory_events').get();
1782
+ let ftsCount = 0;
1783
+ try {
1784
+ const ftsRow = db.prepare('SELECT COUNT(*) as c FROM memory_events_fts').get();
1785
+ ftsCount = ftsRow?.c || 0;
1786
+ }
1787
+ catch { /* FTS might not exist */ }
1788
+ const ratio = eventCount.c > 0 ? Math.round(ftsCount / eventCount.c * 100) : 100;
1789
+ if (ratio >= 80) {
1790
+ console.log(` ${C.success('OK')} FTS index: ${ftsCount}/${eventCount.c} events indexed (${ratio}%)`);
1791
+ }
1792
+ else {
1793
+ console.log(` ${C.warn('--')} FTS index stale: ${ftsCount}/${eventCount.c} events indexed (${ratio}%) — run 'cell memory verify'`);
1794
+ }
1795
+ passes.push('fts');
1796
+ }
1797
+ catch {
1798
+ console.log(` ${C.dim('--')} FTS index check failed`);
1799
+ }
1800
+ finally {
1801
+ db.close();
1802
+ }
1803
+ }
1804
+ }
1805
+ catch {
1806
+ console.log(` ${C.dim('--')} FTS health check skipped`);
1807
+ }
1808
+ // 15. DB integrity
1809
+ try {
1810
+ const dbPathCheck = path.join(os.homedir(), '.fivo', 'cell', 'cell.db');
1811
+ if (fs.existsSync(dbPathCheck)) {
1812
+ const Database = require('better-sqlite3');
1813
+ const db = new Database(dbPathCheck, { readonly: true });
1814
+ try {
1815
+ const result = db.pragma('integrity_check');
1816
+ if (result[0]?.integrity_check === 'ok') {
1817
+ console.log(` ${C.success('OK')} Database integrity: OK`);
1818
+ }
1819
+ else {
1820
+ console.log(` ${C.warn('!!')} Database integrity: FAILED — ${result[0]?.integrity_check}`);
1821
+ issues.push('db-integrity');
1822
+ }
1823
+ passes.push('db-integrity');
1824
+ }
1825
+ catch {
1826
+ console.log(` ${C.dim('--')} Database integrity check failed`);
1827
+ }
1828
+ finally {
1829
+ db.close();
1830
+ }
1831
+ }
1832
+ }
1833
+ catch {
1834
+ console.log(` ${C.dim('--')} DB integrity check skipped`);
1835
+ }
1836
+ // 16. Key migration status
1837
+ try {
1838
+ const { getMigrationStatus } = require('../../06-memory/privacy/key-migration');
1839
+ const status = getMigrationStatus();
1840
+ if (status.needsMigration) {
1841
+ console.log(` ${C.warn('--')} Key migration needed — old global key exists, provider chain not populated`);
1842
+ issues.push('key-migration');
1843
+ }
1844
+ else if (status.newProviderHas) {
1845
+ console.log(` ${C.success('OK')} Key migration: provider has key`);
1846
+ passes.push('key-migration');
1847
+ }
1848
+ else {
1849
+ console.log(` ${C.dim('--')} Key migration: no existing key to migrate`);
1850
+ passes.push('key-migration');
1851
+ }
1852
+ }
1853
+ catch {
1854
+ console.log(` ${C.dim('--')} Key migration check skipped`);
1855
+ }
1856
+ // 17. Disk space
1857
+ try {
1858
+ const stats = fs.statfsSync(os.homedir());
1859
+ const freeGB = ((stats.bavail * stats.bsize) / (1024 * 1024 * 1024)).toFixed(1);
1860
+ if (Number(freeGB) > 1) {
1861
+ console.log(` ${C.success('OK')} Disk space: ${freeGB} GB free`);
1862
+ passes.push('disk');
1863
+ }
1864
+ else {
1865
+ console.log(` ${C.warn('!!')} Disk space low: ${freeGB} GB free — may affect archive writes`);
1866
+ issues.push('disk');
1867
+ }
1868
+ }
1869
+ catch {
1870
+ console.log(` ${C.dim('--')} Disk space check skipped`);
1871
+ }
1743
1872
  // ─── Summary ──────────────────────────────────────────────────────────
1744
1873
  console.log();
1745
1874
  const total = passes.length + issues.length;
@@ -1761,6 +1890,10 @@ async function doDoctor() {
1761
1890
  'first-run': 'cell setup',
1762
1891
  'git': 'git init',
1763
1892
  'node': 'npm init -y',
1893
+ 'key-provider': 'Check ~/.fivo/cell/keys/ permissions',
1894
+ 'key-migration': 'cell memory verify',
1895
+ 'db-integrity': 'Restore from backup or re-run cell start',
1896
+ 'disk': 'Free up disk space',
1764
1897
  };
1765
1898
  for (const issue of issues) {
1766
1899
  const fix = recovery[issue];
@@ -3134,6 +3267,9 @@ function doHelp() {
3134
3267
  console.log(` ${C.primary('cell why <topic>')} Search decisions by topic`);
3135
3268
  console.log(` ${C.primary('cell handoff')} Show/update handoff context`);
3136
3269
  console.log(` ${C.primary('cell memory')} Search/timeline/compact/verify/export memory`);
3270
+ console.log(` ${C.primary('cell memory doctor')} Full health check — .cell structure + archive + memory`);
3271
+ console.log(` ${C.primary('cell memory mirror')} Sync DB → .cell portable readable files`);
3272
+ console.log(` ${C.primary('cell memory context')} Show context (--short/--full/--topic <name>)`);
3137
3273
  console.log(` ${C.primary('cell cross-project')} Share/list/insights from cross-project memory`);
3138
3274
  console.log(` ${C.primary('cell dashboard')} Open web dashboard in browser`);
3139
3275
  console.log(` ${C.primary('cell perf')} Show performance stats & cache info`);
@@ -3720,6 +3856,124 @@ function doMemory() {
3720
3856
  console.log();
3721
3857
  return;
3722
3858
  }
3859
+ if (sub === 'doctor' || sub === 'd') {
3860
+ console.log(C.bold(' ── Memory Doctor ──\n'));
3861
+ try {
3862
+ const project = path.basename(cwd);
3863
+ const { verifyCellHealth } = require('../../06-memory/mirror/cell-mirror');
3864
+ const { verifyArchiveIntegrity } = require('../../06-memory/archive/archive-versioning');
3865
+ const { getMemoryStats } = require('../../06-memory/stores/memory-event-store');
3866
+ // Cell mirror health
3867
+ const cellHealth = verifyCellHealth(cwd);
3868
+ console.log(C.dim(' .cell Structure:'));
3869
+ const checks = [
3870
+ ['handoff/current.md', cellHealth.handoffCurrent],
3871
+ ['handoff/history/', cellHealth.handoffHistory],
3872
+ ['summaries/daily/', cellHealth.summariesDaily],
3873
+ ['summaries/weekly/', cellHealth.summariesWeekly],
3874
+ ['summaries/monthly/', cellHealth.summariesMonthly],
3875
+ ['patterns/code-patterns.json', cellHealth.patternsCode],
3876
+ ['patterns/error-patterns.json', cellHealth.patternsError],
3877
+ ['patterns/fix-patterns.json', cellHealth.patternsFix],
3878
+ ['patterns/architecture-patterns.json', cellHealth.patternsArch],
3879
+ ['style/developer-style.json', cellHealth.styleDeveloper],
3880
+ ['style/project-style.json', cellHealth.styleProject],
3881
+ ['style/communication.md', cellHealth.styleCommunication],
3882
+ ['context/short.md', cellHealth.contextShort],
3883
+ ['context/full.md', cellHealth.contextFull],
3884
+ ['context/last-session.md', cellHealth.contextLastSession],
3885
+ ['memory/archive/', cellHealth.archiveDir],
3886
+ ['private/', cellHealth.privateDir],
3887
+ ];
3888
+ for (const [name, ok] of checks) {
3889
+ console.log(` ${ok ? C.success('✓') : C.warn('✗')} ${name}`);
3890
+ }
3891
+ console.log(` Total .cell files: ${C.num(String(cellHealth.totalFiles))}`);
3892
+ // Archive integrity
3893
+ console.log(C.dim('\n Archive Integrity:'));
3894
+ const archiveHealth = verifyArchiveIntegrity(cwd);
3895
+ console.log(` Total chunks: ${archiveHealth.totalChunks}`);
3896
+ console.log(` Versioned: ${archiveHealth.versionedChunks}`);
3897
+ console.log(` Unversioned: ${archiveHealth.unversionedChunks}`);
3898
+ console.log(` Total events: ${archiveHealth.totalEvents}`);
3899
+ if (archiveHealth.issues.length > 0) {
3900
+ for (const issue of archiveHealth.issues) {
3901
+ console.log(` ${C.warn('⚠')} ${issue}`);
3902
+ }
3903
+ }
3904
+ else {
3905
+ console.log(` ${C.success('All chunks healthy')}`);
3906
+ }
3907
+ // Memory stats
3908
+ console.log(C.dim('\n Memory Stats:'));
3909
+ const stats = getMemoryStats();
3910
+ console.log(` Events: ${C.num(String(stats.total))}`);
3911
+ console.log(` Avg importance: ${stats.avgImportance}`);
3912
+ console.log(` Oldest: ${stats.oldestEvent || 'none'}`);
3913
+ console.log(` Newest: ${stats.newestEvent || 'none'}`);
3914
+ // Overall verdict
3915
+ const totalIssues = cellHealth.issues.length + archiveHealth.issues.length;
3916
+ console.log();
3917
+ if (totalIssues === 0) {
3918
+ console.log(C.success(' Doctor verdict: HEALTHY ✓'));
3919
+ }
3920
+ else {
3921
+ console.log(C.warn(` Doctor verdict: ${totalIssues} issue(s) found`));
3922
+ for (const issue of cellHealth.issues) {
3923
+ console.log(` ${C.warn('⚠')} ${issue}`);
3924
+ }
3925
+ }
3926
+ }
3927
+ catch (e) {
3928
+ console.log(C.warn(` Doctor failed: ${e?.message || String(e)}`));
3929
+ }
3930
+ console.log();
3931
+ return;
3932
+ }
3933
+ if (sub === 'mirror' || sub === 'm') {
3934
+ console.log(C.bold(' ── Cell Mirror Sync ──\n'));
3935
+ try {
3936
+ const project = path.basename(cwd);
3937
+ const { syncCellMirror } = require('../../06-memory/mirror/cell-mirror');
3938
+ syncCellMirror(cwd, project);
3939
+ console.log(C.success(' .cell mirror synced successfully'));
3940
+ console.log(` Project: ${project}`);
3941
+ console.log(` Location: ${path.join(cwd, '.cell')}`);
3942
+ const { verifyCellHealth } = require('../../06-memory/mirror/cell-mirror');
3943
+ const health = verifyCellHealth(cwd);
3944
+ console.log(` Files: ${health.totalFiles}`);
3945
+ if (health.issues.length > 0) {
3946
+ console.log(C.dim(` Note: ${health.issues.length} missing items`));
3947
+ }
3948
+ }
3949
+ catch (e) {
3950
+ console.log(C.warn(` Mirror sync failed: ${e?.message || String(e)}`));
3951
+ }
3952
+ console.log();
3953
+ return;
3954
+ }
3955
+ if (sub === 'context' || sub === 'ctx') {
3956
+ const ctxMode = args[0] || '--short';
3957
+ console.log(C.bold(` ── Context (${ctxMode}) ──\n`));
3958
+ try {
3959
+ const project = path.basename(cwd);
3960
+ const { buildContext } = require('../../06-memory/retrieval/context-pipeline');
3961
+ const topic = args[1];
3962
+ const result = buildContext({
3963
+ project,
3964
+ projectDir: cwd,
3965
+ mode: ctxMode === '--full' ? 'full' : ctxMode === '--topic' ? 'topic' : 'short',
3966
+ topic,
3967
+ });
3968
+ console.log(result.compactContext);
3969
+ console.log(C.dim(`\n Sources: ${result.stats.totalSources} | Events: ${result.stats.totalEvents} | Score: ${result.stats.relevanceScore.toFixed(1)}`));
3970
+ }
3971
+ catch (e) {
3972
+ console.log(C.warn(` Context failed: ${e?.message || String(e)}`));
3973
+ }
3974
+ console.log();
3975
+ return;
3976
+ }
3723
3977
  if (sub === 'export' || sub === 'e') {
3724
3978
  console.log(C.bold(' ── Memory Export ──\n'));
3725
3979
  try {