fivocell 6.1.0 → 6.3.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 (188) hide show
  1. package/README.md +197 -202
  2. package/dist/__tests__/cell-mirror.test.js +2 -2
  3. package/dist/__tests__/cell-mirror.test.js.map +1 -1
  4. package/dist/__tests__/cli-regression.test.js +1 -1
  5. package/dist/__tests__/cli-regression.test.js.map +1 -1
  6. package/dist/core/search-engine.d.ts.map +1 -1
  7. package/dist/core/search-engine.js +8 -11
  8. package/dist/core/search-engine.js.map +1 -1
  9. package/dist/walls/02-scanner/blindspots/code-scanner.d.ts +11 -0
  10. package/dist/walls/02-scanner/blindspots/code-scanner.d.ts.map +1 -1
  11. package/dist/walls/02-scanner/blindspots/code-scanner.js +63 -0
  12. package/dist/walls/02-scanner/blindspots/code-scanner.js.map +1 -1
  13. package/dist/walls/03-knowledge/decisions/branch-snapshot.d.ts +14 -0
  14. package/dist/walls/03-knowledge/decisions/branch-snapshot.d.ts.map +1 -1
  15. package/dist/walls/03-knowledge/decisions/branch-snapshot.js +88 -21
  16. package/dist/walls/03-knowledge/decisions/branch-snapshot.js.map +1 -1
  17. package/dist/walls/03-knowledge/decisions/failure-memory.d.ts +15 -0
  18. package/dist/walls/03-knowledge/decisions/failure-memory.d.ts.map +1 -1
  19. package/dist/walls/03-knowledge/decisions/failure-memory.js +141 -54
  20. package/dist/walls/03-knowledge/decisions/failure-memory.js.map +1 -1
  21. package/dist/walls/03-knowledge/decisions/predictive-engine.d.ts +8 -0
  22. package/dist/walls/03-knowledge/decisions/predictive-engine.d.ts.map +1 -1
  23. package/dist/walls/03-knowledge/decisions/predictive-engine.js +41 -0
  24. package/dist/walls/03-knowledge/decisions/predictive-engine.js.map +1 -1
  25. package/dist/walls/06-memory/archive/blob-vault.d.ts.map +1 -1
  26. package/dist/walls/06-memory/archive/blob-vault.js +20 -4
  27. package/dist/walls/06-memory/archive/blob-vault.js.map +1 -1
  28. package/dist/walls/06-memory/archive/memory-archive.d.ts.map +1 -1
  29. package/dist/walls/06-memory/archive/memory-archive.js +19 -29
  30. package/dist/walls/06-memory/archive/memory-archive.js.map +1 -1
  31. package/dist/walls/06-memory/mirror/cell-mirror.d.ts +4 -0
  32. package/dist/walls/06-memory/mirror/cell-mirror.d.ts.map +1 -1
  33. package/dist/walls/06-memory/mirror/cell-mirror.js +156 -32
  34. package/dist/walls/06-memory/mirror/cell-mirror.js.map +1 -1
  35. package/dist/walls/06-memory/privacy/key-provider-os.d.ts +6 -0
  36. package/dist/walls/06-memory/privacy/key-provider-os.d.ts.map +1 -1
  37. package/dist/walls/06-memory/privacy/key-provider-os.js +33 -9
  38. package/dist/walls/06-memory/privacy/key-provider-os.js.map +1 -1
  39. package/dist/walls/06-memory/privacy/key-provider.d.ts +27 -0
  40. package/dist/walls/06-memory/privacy/key-provider.d.ts.map +1 -1
  41. package/dist/walls/06-memory/privacy/key-provider.js +39 -0
  42. package/dist/walls/06-memory/privacy/key-provider.js.map +1 -1
  43. package/dist/walls/06-memory/retrieval/context-pipeline.d.ts +2 -0
  44. package/dist/walls/06-memory/retrieval/context-pipeline.d.ts.map +1 -1
  45. package/dist/walls/06-memory/retrieval/context-pipeline.js +130 -16
  46. package/dist/walls/06-memory/retrieval/context-pipeline.js.map +1 -1
  47. package/dist/walls/06-memory/stores/memory-search.d.ts +21 -0
  48. package/dist/walls/06-memory/stores/memory-search.d.ts.map +1 -1
  49. package/dist/walls/06-memory/stores/memory-search.js +97 -13
  50. package/dist/walls/06-memory/stores/memory-search.js.map +1 -1
  51. package/dist/walls/06-memory/stores/weekly-report.d.ts +5 -0
  52. package/dist/walls/06-memory/stores/weekly-report.d.ts.map +1 -1
  53. package/dist/walls/06-memory/stores/weekly-report.js +24 -2
  54. package/dist/walls/06-memory/stores/weekly-report.js.map +1 -1
  55. package/dist/walls/07-runtime/cli/cli.js +100 -4545
  56. package/dist/walls/07-runtime/cli/cli.js.map +1 -1
  57. package/dist/walls/07-runtime/cli/commands/branch.d.ts +7 -0
  58. package/dist/walls/07-runtime/cli/commands/branch.d.ts.map +1 -0
  59. package/dist/walls/07-runtime/cli/commands/branch.js +169 -0
  60. package/dist/walls/07-runtime/cli/commands/branch.js.map +1 -0
  61. package/dist/walls/07-runtime/cli/commands/ci.d.ts +2 -0
  62. package/dist/walls/07-runtime/cli/commands/ci.d.ts.map +1 -0
  63. package/dist/walls/07-runtime/cli/commands/ci.js +57 -0
  64. package/dist/walls/07-runtime/cli/commands/ci.js.map +1 -0
  65. package/dist/walls/07-runtime/cli/commands/community.d.ts +2 -0
  66. package/dist/walls/07-runtime/cli/commands/community.d.ts.map +1 -0
  67. package/dist/walls/07-runtime/cli/commands/community.js +64 -0
  68. package/dist/walls/07-runtime/cli/commands/community.js.map +1 -0
  69. package/dist/walls/07-runtime/cli/commands/dashboard.d.ts +3 -0
  70. package/dist/walls/07-runtime/cli/commands/dashboard.d.ts.map +1 -0
  71. package/dist/walls/07-runtime/cli/commands/dashboard.js +45 -0
  72. package/dist/walls/07-runtime/cli/commands/dashboard.js.map +1 -0
  73. package/dist/walls/07-runtime/cli/commands/help.d.ts +4 -0
  74. package/dist/walls/07-runtime/cli/commands/help.d.ts.map +1 -0
  75. package/dist/walls/07-runtime/cli/commands/help.js +91 -0
  76. package/dist/walls/07-runtime/cli/commands/help.js.map +1 -0
  77. package/dist/walls/07-runtime/cli/commands/memory.d.ts +5 -0
  78. package/dist/walls/07-runtime/cli/commands/memory.d.ts.map +1 -0
  79. package/dist/walls/07-runtime/cli/commands/memory.js +252 -0
  80. package/dist/walls/07-runtime/cli/commands/memory.js.map +1 -0
  81. package/dist/walls/07-runtime/cli/commands/repl.d.ts +2 -0
  82. package/dist/walls/07-runtime/cli/commands/repl.d.ts.map +1 -0
  83. package/dist/walls/07-runtime/cli/commands/repl.js +63 -0
  84. package/dist/walls/07-runtime/cli/commands/repl.js.map +1 -0
  85. package/dist/walls/07-runtime/cli/commands/scan.d.ts +4 -0
  86. package/dist/walls/07-runtime/cli/commands/scan.d.ts.map +1 -0
  87. package/dist/walls/07-runtime/cli/commands/scan.js +244 -0
  88. package/dist/walls/07-runtime/cli/commands/scan.js.map +1 -0
  89. package/dist/walls/07-runtime/cli/commands/session.d.ts +4 -0
  90. package/dist/walls/07-runtime/cli/commands/session.d.ts.map +1 -0
  91. package/dist/walls/07-runtime/cli/commands/session.js +79 -0
  92. package/dist/walls/07-runtime/cli/commands/session.js.map +1 -0
  93. package/dist/walls/07-runtime/cli/commands/setup.d.ts +4 -0
  94. package/dist/walls/07-runtime/cli/commands/setup.d.ts.map +1 -0
  95. package/dist/walls/07-runtime/cli/commands/setup.js +216 -0
  96. package/dist/walls/07-runtime/cli/commands/setup.js.map +1 -0
  97. package/dist/walls/07-runtime/cli/commands/status.d.ts +4 -0
  98. package/dist/walls/07-runtime/cli/commands/status.d.ts.map +1 -0
  99. package/dist/walls/07-runtime/cli/commands/status.js +352 -0
  100. package/dist/walls/07-runtime/cli/commands/status.js.map +1 -0
  101. package/dist/walls/07-runtime/cli/commands/sync.d.ts +4 -0
  102. package/dist/walls/07-runtime/cli/commands/sync.d.ts.map +1 -0
  103. package/dist/walls/07-runtime/cli/commands/sync.js +116 -0
  104. package/dist/walls/07-runtime/cli/commands/sync.js.map +1 -0
  105. package/dist/walls/07-runtime/cli/commands/team.d.ts +2 -0
  106. package/dist/walls/07-runtime/cli/commands/team.d.ts.map +1 -0
  107. package/dist/walls/07-runtime/cli/commands/team.js +58 -0
  108. package/dist/walls/07-runtime/cli/commands/team.js.map +1 -0
  109. package/dist/walls/07-runtime/cli/commands/watch.d.ts +4 -0
  110. package/dist/walls/07-runtime/cli/commands/watch.d.ts.map +1 -0
  111. package/dist/walls/07-runtime/cli/commands/watch.js +129 -0
  112. package/dist/walls/07-runtime/cli/commands/watch.js.map +1 -0
  113. package/dist/walls/07-runtime/cli/utils.d.ts +26 -0
  114. package/dist/walls/07-runtime/cli/utils.d.ts.map +1 -0
  115. package/dist/walls/07-runtime/cli/utils.js +217 -0
  116. package/dist/walls/07-runtime/cli/utils.js.map +1 -0
  117. package/dist/walls/07-runtime/daemon/routes/community.d.ts +3 -0
  118. package/dist/walls/07-runtime/daemon/routes/community.d.ts.map +1 -0
  119. package/dist/walls/07-runtime/daemon/routes/community.js +191 -0
  120. package/dist/walls/07-runtime/daemon/routes/community.js.map +1 -0
  121. package/dist/walls/07-runtime/daemon/routes/cost.d.ts +3 -0
  122. package/dist/walls/07-runtime/daemon/routes/cost.d.ts.map +1 -0
  123. package/dist/walls/07-runtime/daemon/routes/cost.js +73 -0
  124. package/dist/walls/07-runtime/daemon/routes/cost.js.map +1 -0
  125. package/dist/walls/07-runtime/daemon/routes/health.d.ts +3 -0
  126. package/dist/walls/07-runtime/daemon/routes/health.d.ts.map +1 -0
  127. package/dist/walls/07-runtime/daemon/routes/health.js +40 -0
  128. package/dist/walls/07-runtime/daemon/routes/health.js.map +1 -0
  129. package/dist/walls/07-runtime/daemon/routes/memory.d.ts +3 -0
  130. package/dist/walls/07-runtime/daemon/routes/memory.d.ts.map +1 -0
  131. package/dist/walls/07-runtime/daemon/routes/memory.js +75 -0
  132. package/dist/walls/07-runtime/daemon/routes/memory.js.map +1 -0
  133. package/dist/walls/07-runtime/daemon/routes/privacy.d.ts +3 -0
  134. package/dist/walls/07-runtime/daemon/routes/privacy.d.ts.map +1 -0
  135. package/dist/walls/07-runtime/daemon/routes/privacy.js +160 -0
  136. package/dist/walls/07-runtime/daemon/routes/privacy.js.map +1 -0
  137. package/dist/walls/07-runtime/daemon/routes/project.d.ts +3 -0
  138. package/dist/walls/07-runtime/daemon/routes/project.d.ts.map +1 -0
  139. package/dist/walls/07-runtime/daemon/routes/project.js +59 -0
  140. package/dist/walls/07-runtime/daemon/routes/project.js.map +1 -0
  141. package/dist/walls/07-runtime/daemon/routes/session.d.ts +3 -0
  142. package/dist/walls/07-runtime/daemon/routes/session.d.ts.map +1 -0
  143. package/dist/walls/07-runtime/daemon/routes/session.js +100 -0
  144. package/dist/walls/07-runtime/daemon/routes/session.js.map +1 -0
  145. package/dist/walls/07-runtime/daemon/routes/signal.d.ts +3 -0
  146. package/dist/walls/07-runtime/daemon/routes/signal.d.ts.map +1 -0
  147. package/dist/walls/07-runtime/daemon/routes/signal.js +60 -0
  148. package/dist/walls/07-runtime/daemon/routes/signal.js.map +1 -0
  149. package/dist/walls/07-runtime/daemon/routes/workflow.d.ts +3 -0
  150. package/dist/walls/07-runtime/daemon/routes/workflow.d.ts.map +1 -0
  151. package/dist/walls/07-runtime/daemon/routes/workflow.js +105 -0
  152. package/dist/walls/07-runtime/daemon/routes/workflow.js.map +1 -0
  153. package/dist/walls/07-runtime/daemon/server.d.ts.map +1 -1
  154. package/dist/walls/07-runtime/daemon/server.js +19 -0
  155. package/dist/walls/07-runtime/daemon/server.js.map +1 -1
  156. package/package.json +1 -1
  157. package/dist/walls/03-knowledge/decisions/cross-model-engine.d.ts +0 -38
  158. package/dist/walls/03-knowledge/decisions/cross-model-engine.d.ts.map +0 -1
  159. package/dist/walls/03-knowledge/decisions/cross-model-engine.js +0 -98
  160. package/dist/walls/03-knowledge/decisions/cross-model-engine.js.map +0 -1
  161. package/dist/walls/03-knowledge/decisions/insight-generator.d.ts +0 -58
  162. package/dist/walls/03-knowledge/decisions/insight-generator.d.ts.map +0 -1
  163. package/dist/walls/03-knowledge/decisions/insight-generator.js +0 -314
  164. package/dist/walls/03-knowledge/decisions/insight-generator.js.map +0 -1
  165. package/dist/walls/05-community/stats/community-advanced-engine.d.ts +0 -30
  166. package/dist/walls/05-community/stats/community-advanced-engine.d.ts.map +0 -1
  167. package/dist/walls/05-community/stats/community-advanced-engine.js +0 -103
  168. package/dist/walls/05-community/stats/community-advanced-engine.js.map +0 -1
  169. package/dist/walls/05-community/stats/community-engine.d.ts +0 -62
  170. package/dist/walls/05-community/stats/community-engine.d.ts.map +0 -1
  171. package/dist/walls/05-community/stats/community-engine.js +0 -194
  172. package/dist/walls/05-community/stats/community-engine.js.map +0 -1
  173. package/dist/walls/05-community/stats/community-v2.d.ts +0 -106
  174. package/dist/walls/05-community/stats/community-v2.d.ts.map +0 -1
  175. package/dist/walls/05-community/stats/community-v2.js +0 -378
  176. package/dist/walls/05-community/stats/community-v2.js.map +0 -1
  177. package/dist/walls/08-cloud-bridge/sync/ai-bridge.d.ts +0 -20
  178. package/dist/walls/08-cloud-bridge/sync/ai-bridge.d.ts.map +0 -1
  179. package/dist/walls/08-cloud-bridge/sync/ai-bridge.js +0 -250
  180. package/dist/walls/08-cloud-bridge/sync/ai-bridge.js.map +0 -1
  181. package/dist/walls/08-cloud-bridge/sync/cloud-client.d.ts +0 -40
  182. package/dist/walls/08-cloud-bridge/sync/cloud-client.d.ts.map +0 -1
  183. package/dist/walls/08-cloud-bridge/sync/cloud-client.js +0 -126
  184. package/dist/walls/08-cloud-bridge/sync/cloud-client.js.map +0 -1
  185. package/dist/walls/08-cloud-bridge/sync/cloud-sync.d.ts +0 -66
  186. package/dist/walls/08-cloud-bridge/sync/cloud-sync.d.ts.map +0 -1
  187. package/dist/walls/08-cloud-bridge/sync/cloud-sync.js +0 -328
  188. package/dist/walls/08-cloud-bridge/sync/cloud-sync.js.map +0 -1
@@ -4,6 +4,8 @@ export interface MirrorOptions {
4
4
  }
5
5
  export declare function syncPatternsToCell(projectDir: string, project: string): void;
6
6
  export declare function syncContextToCell(projectDir: string, project: string): void;
7
+ export declare function syncSummariesToCell(projectDir: string, project: string): void;
8
+ export declare function syncStyleToCell(projectDir: string, project: string): void;
7
9
  export declare function syncCellMirror(projectDir: string, project: string): void;
8
10
  export interface CellHealth {
9
11
  handoffCurrent: boolean;
@@ -25,6 +27,8 @@ export interface CellHealth {
25
27
  privateDir: boolean;
26
28
  totalFiles: number;
27
29
  issues: string[];
30
+ warnings: string[];
31
+ status: 'healthy' | 'fresh' | 'degraded' | 'broken';
28
32
  }
29
33
  export declare function verifyCellHealth(projectDir: string): CellHealth;
30
34
  //# sourceMappingURL=cell-mirror.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cell-mirror.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/mirror/cell-mirror.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAiDD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA6C5E;AAMD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA0I3E;AAMD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAoBxE;AAMD,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAqD/D"}
1
+ {"version":3,"file":"cell-mirror.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/mirror/cell-mirror.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AA6DD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA6C5E;AAMD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CA0I3E;AAMD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAsC7E;AAMD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAmCzE;AAMD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAsBxE;AAMD,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;CACrD;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAoG/D"}
@@ -35,6 +35,8 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.syncPatternsToCell = syncPatternsToCell;
37
37
  exports.syncContextToCell = syncContextToCell;
38
+ exports.syncSummariesToCell = syncSummariesToCell;
39
+ exports.syncStyleToCell = syncStyleToCell;
38
40
  exports.syncCellMirror = syncCellMirror;
39
41
  exports.verifyCellHealth = verifyCellHealth;
40
42
  const fs = __importStar(require("fs"));
@@ -50,11 +52,21 @@ function getCellRoot(projectDir) {
50
52
  function getMemoryDir(projectDir) {
51
53
  return path.join(getCellRoot(projectDir), 'memory');
52
54
  }
55
+ function getSummariesDir(projectDir, period) {
56
+ const dir = path.join(getMemoryDir(projectDir), 'summaries', period);
57
+ ensureDir(dir);
58
+ return dir;
59
+ }
53
60
  function getPatternsDir(projectDir) {
54
61
  const dir = path.join(getMemoryDir(projectDir), 'patterns');
55
62
  ensureDir(dir);
56
63
  return dir;
57
64
  }
65
+ function getStyleDir(projectDir) {
66
+ const dir = path.join(getMemoryDir(projectDir), 'style');
67
+ ensureDir(dir);
68
+ return dir;
69
+ }
58
70
  function getContextDir(projectDir) {
59
71
  const dir = path.join(getMemoryDir(projectDir), 'context');
60
72
  ensureDir(dir);
@@ -77,7 +89,7 @@ function readJsonSafe(filePath) {
77
89
  function syncPatternsToCell(projectDir, project) {
78
90
  const db = (0, database_1.getDb)();
79
91
  const dir = getPatternsDir(projectDir);
80
- const rows = db.prepare(`SELECT pattern, category, confidence, importance, created_at, last_seen
92
+ const rows = db.prepare(`SELECT pattern, category, confidence, importance, created_at, last_seen
81
93
  FROM memory_patterns WHERE project = ? ORDER BY importance DESC`).all(project);
82
94
  const buckets = {
83
95
  code: [],
@@ -120,7 +132,7 @@ function syncContextToCell(projectDir, project) {
120
132
  const db = (0, database_1.getDb)();
121
133
  const dir = getContextDir(projectDir);
122
134
  // 1. short.md — top 10 recent important events
123
- const recentImportant = db.prepare(`SELECT type, summary, topic, importance, created_at FROM memory_events
135
+ const recentImportant = db.prepare(`SELECT type, summary, topic, importance, created_at FROM memory_events
124
136
  WHERE project = ? ORDER BY importance DESC, created_at DESC LIMIT 10`).all(project);
125
137
  let shortMd = '# Short Context\n\n';
126
138
  shortMd += `_Generated: ${new Date().toISOString().slice(0, 16)}_\n\n`;
@@ -133,8 +145,8 @@ function syncContextToCell(projectDir, project) {
133
145
  const lastSession = db.prepare(`SELECT id, start_time, end_time FROM sessions WHERE project = ? ORDER BY id DESC LIMIT 1`).get(project);
134
146
  let lastSessionMd = '# Last Session\n\n';
135
147
  if (lastSession) {
136
- const sessionEvents = db.prepare(`SELECT type, summary, topic, importance FROM memory_events
137
- WHERE project = ? AND created_at >= ? AND created_at <= ?
148
+ const sessionEvents = db.prepare(`SELECT type, summary, topic, importance FROM memory_events
149
+ WHERE project = ? AND created_at >= ? AND created_at <= ?
138
150
  ORDER BY importance DESC`).all(project, lastSession.start_time, lastSession.end_time || new Date().toISOString());
139
151
  lastSessionMd += `_Session #${lastSession.id}: ${lastSession.start_time} — ${lastSession.end_time || 'active'}_\n\n`;
140
152
  lastSessionMd += `**${sessionEvents.length} events**\n\n`;
@@ -150,8 +162,8 @@ function syncContextToCell(projectDir, project) {
150
162
  // 3. branch-*.md — top recent events per branch
151
163
  const branches = db.prepare(`SELECT DISTINCT branch FROM memory_events WHERE project = ? AND branch IS NOT NULL AND branch != ''`).all(project);
152
164
  for (const { branch } of branches) {
153
- const branchEvents = db.prepare(`SELECT type, summary, topic, importance, created_at FROM memory_events
154
- WHERE project = ? AND branch = ?
165
+ const branchEvents = db.prepare(`SELECT type, summary, topic, importance, created_at FROM memory_events
166
+ WHERE project = ? AND branch = ?
155
167
  ORDER BY importance DESC, created_at DESC LIMIT 20`).all(project, branch);
156
168
  let branchMd = `# Branch: ${branch}\n\n`;
157
169
  branchMd += `_Updated: ${new Date().toISOString().slice(0, 16)} | ${branchEvents.length} events_\n\n`;
@@ -162,16 +174,16 @@ function syncContextToCell(projectDir, project) {
162
174
  fs.writeFileSync(path.join(dir, `branch-${branch}.md`), branchMd);
163
175
  }
164
176
  // 4. full.md — comprehensive context (recent + decisions + errors + fixes)
165
- const recentDecisions = db.prepare(`SELECT summary, topic, importance, created_at FROM memory_events
166
- WHERE project = ? AND type = 'decision'
177
+ const recentDecisions = db.prepare(`SELECT summary, topic, importance, created_at FROM memory_events
178
+ WHERE project = ? AND type = 'decision'
167
179
  ORDER BY importance DESC, created_at DESC LIMIT 10`).all(project);
168
- const recentErrors = db.prepare(`SELECT summary, topic, importance, created_at FROM memory_events
169
- WHERE project = ? AND type = 'error'
180
+ const recentErrors = db.prepare(`SELECT summary, topic, importance, created_at FROM memory_events
181
+ WHERE project = ? AND type = 'error'
170
182
  ORDER BY importance DESC, created_at DESC LIMIT 10`).all(project);
171
- const recentFixes = db.prepare(`SELECT summary, topic, importance, created_at FROM memory_events
172
- WHERE project = ? AND type = 'fix'
183
+ const recentFixes = db.prepare(`SELECT summary, topic, importance, created_at FROM memory_events
184
+ WHERE project = ? AND type = 'fix'
173
185
  ORDER BY importance DESC, created_at DESC LIMIT 10`).all(project);
174
- const recentPatterns = db.prepare(`SELECT pattern, category, importance FROM memory_patterns
186
+ const recentPatterns = db.prepare(`SELECT pattern, category, importance FROM memory_patterns
175
187
  WHERE project = ? ORDER BY importance DESC LIMIT 10`).all(project);
176
188
  let fullMd = '# Full Context\n\n';
177
189
  fullMd += `_Generated: ${new Date().toISOString().slice(0, 16)}_\n\n`;
@@ -212,6 +224,69 @@ function syncContextToCell(projectDir, project) {
212
224
  fs.writeFileSync(path.join(dir, 'full.md'), fullMd);
213
225
  }
214
226
  // ============================================================
227
+ // Summaries Mirror — writes .cell/memory/summaries/period/*.json
228
+ // ============================================================
229
+ function syncSummariesToCell(projectDir, project) {
230
+ const db = (0, database_1.getDb)();
231
+ // Daily summaries (last 30 days)
232
+ const dailyRows = db.prepare(`SELECT * FROM memory_summaries WHERE project = ? AND period = 'daily'
233
+ ORDER BY date DESC LIMIT 30`).all(project);
234
+ for (const row of dailyRows) {
235
+ const date = String(row.date || '').slice(0, 10);
236
+ if (date) {
237
+ writeJson(path.join(getSummariesDir(projectDir, 'daily'), `${date}.json`), row);
238
+ }
239
+ }
240
+ // Weekly summaries (last 12 weeks)
241
+ const weeklyRows = db.prepare(`SELECT * FROM memory_summaries WHERE project = ? AND period = 'weekly'
242
+ ORDER BY date DESC LIMIT 12`).all(project);
243
+ for (const row of weeklyRows) {
244
+ const date = String(row.date || '').slice(0, 10);
245
+ if (date) {
246
+ writeJson(path.join(getSummariesDir(projectDir, 'weekly'), `${date}.json`), row);
247
+ }
248
+ }
249
+ // Monthly summaries (last 12 months)
250
+ const monthlyRows = db.prepare(`SELECT * FROM memory_summaries WHERE project = ? AND period = 'monthly'
251
+ ORDER BY date DESC LIMIT 12`).all(project);
252
+ for (const row of monthlyRows) {
253
+ const date = String(row.date || '').slice(0, 7);
254
+ if (date) {
255
+ writeJson(path.join(getSummariesDir(projectDir, 'monthly'), `${date}.json`), row);
256
+ }
257
+ }
258
+ }
259
+ // ============================================================
260
+ // Style Mirror — writes .cell/memory/style/*.json + communication.md
261
+ // ============================================================
262
+ function syncStyleToCell(projectDir, project) {
263
+ const db = (0, database_1.getDb)();
264
+ const dir = getStyleDir(projectDir);
265
+ // Developer style profile
266
+ const devStyle = db.prepare(`SELECT * FROM style_profiles WHERE project = ? AND type = 'developer' LIMIT 1`).get(project);
267
+ if (devStyle) {
268
+ writeJson(path.join(dir, 'developer-style.json'), devStyle);
269
+ }
270
+ // Project style profile
271
+ const projStyle = db.prepare(`SELECT * FROM style_profiles WHERE project = ? AND type = 'project' LIMIT 1`).get(project);
272
+ if (projStyle) {
273
+ writeJson(path.join(dir, 'project-style.json'), projStyle);
274
+ }
275
+ // Communication style (from style_profiles or generate default)
276
+ const commStyle = db.prepare(`SELECT * FROM style_profiles WHERE project = ? AND type = 'communication' LIMIT 1`).get(project);
277
+ if (commStyle) {
278
+ let commMd = '# Communication Style\n\n';
279
+ commMd += `_Updated: ${new Date().toISOString().slice(0, 16)}_\n\n`;
280
+ const prefs = commStyle.preferences;
281
+ if (prefs) {
282
+ for (const [key, value] of Object.entries(prefs)) {
283
+ commMd += `- **${key}**: ${value}\n`;
284
+ }
285
+ }
286
+ fs.writeFileSync(path.join(dir, 'communication.md'), commMd);
287
+ }
288
+ }
289
+ // ============================================================
215
290
  // Master mirror sync — call after any significant DB write
216
291
  // ============================================================
217
292
  function syncCellMirror(projectDir, project) {
@@ -240,41 +315,77 @@ function syncCellMirror(projectDir, project) {
240
315
  syncContextToCell(projectDir, project);
241
316
  }
242
317
  catch { /* non-critical */ }
318
+ try {
319
+ syncSummariesToCell(projectDir, project);
320
+ }
321
+ catch { /* non-critical */ }
322
+ try {
323
+ syncStyleToCell(projectDir, project);
324
+ }
325
+ catch { /* non-critical */ }
243
326
  }
244
327
  function verifyCellHealth(projectDir) {
245
328
  const cellRoot = getCellRoot(projectDir);
246
329
  const memDir = getMemoryDir(projectDir);
247
330
  const issues = [];
331
+ const warnings = [];
248
332
  function exists(p) { return fs.existsSync(p); }
249
- function check(p, label) {
333
+ // Check if .cell directory exists at all
334
+ const cellExists = exists(cellRoot);
335
+ // Check if database has any data for this project
336
+ let hasData = false;
337
+ try {
338
+ const db = (0, database_1.getDb)();
339
+ const project = path.basename(projectDir);
340
+ const count = db.prepare('SELECT COUNT(*) as c FROM memory_events WHERE project = ?').get(project);
341
+ hasData = count.c > 0;
342
+ }
343
+ catch { /* ignore */ }
344
+ // Critical checks — these indicate actual problems
345
+ function criticalCheck(p, label) {
250
346
  const ok = exists(p);
251
347
  if (!ok)
252
348
  issues.push(`Missing: ${label}`);
253
349
  return ok;
254
350
  }
351
+ // Optional checks — these are expected to be missing on fresh projects
352
+ function optionalCheck(p, label) {
353
+ const ok = exists(p);
354
+ if (!ok && hasData)
355
+ warnings.push(`Not yet generated: ${label} (will appear after more usage)`);
356
+ return ok;
357
+ }
255
358
  const health = {
256
- handoffCurrent: check(path.join(cellRoot, 'handoff', 'current.md'), 'handoff/current.md'),
257
- handoffHistory: exists(path.join(cellRoot, 'handoff', 'history')),
258
- summariesDaily: check(path.join(memDir, 'summaries', 'daily'), 'memory/summaries/daily/'),
259
- summariesWeekly: check(path.join(memDir, 'summaries', 'weekly'), 'memory/summaries/weekly/'),
260
- summariesMonthly: check(path.join(memDir, 'summaries', 'monthly'), 'memory/summaries/monthly/'),
261
- patternsCode: check(path.join(memDir, 'patterns', 'code-patterns.json'), 'memory/patterns/code-patterns.json'),
262
- patternsError: check(path.join(memDir, 'patterns', 'error-patterns.json'), 'memory/patterns/error-patterns.json'),
263
- patternsFix: check(path.join(memDir, 'patterns', 'fix-patterns.json'), 'memory/patterns/fix-patterns.json'),
264
- patternsArch: check(path.join(memDir, 'patterns', 'architecture-patterns.json'), 'memory/patterns/architecture-patterns.json'),
265
- styleDeveloper: check(path.join(memDir, 'style', 'developer-style.json'), 'memory/style/developer-style.json'),
266
- styleProject: check(path.join(memDir, 'style', 'project-style.json'), 'memory/style/project-style.json'),
267
- styleCommunication: check(path.join(memDir, 'style', 'communication.md'), 'memory/style/communication.md'),
268
- contextShort: check(path.join(memDir, 'context', 'short.md'), 'memory/context/short.md'),
269
- contextFull: check(path.join(memDir, 'context', 'full.md'), 'memory/context/full.md'),
270
- contextLastSession: check(path.join(memDir, 'context', 'last-session.md'), 'memory/context/last-session.md'),
271
- archiveDir: check(path.join(memDir, 'archive'), 'memory/archive/'),
272
- privateDir: check(path.join(cellRoot, 'private'), 'private/'),
359
+ // Critical: .cell structure must exist
360
+ handoffCurrent: cellExists ? criticalCheck(path.join(cellRoot, 'handoff', 'current.md'), 'handoff/current.md') : false,
361
+ handoffHistory: cellExists ? exists(path.join(cellRoot, 'handoff', 'history')) : false,
362
+ // Optional: these depend on data accumulation
363
+ summariesDaily: optionalCheck(path.join(memDir, 'summaries', 'daily'), 'memory/summaries/daily/'),
364
+ summariesWeekly: optionalCheck(path.join(memDir, 'summaries', 'weekly'), 'memory/summaries/weekly/'),
365
+ summariesMonthly: optionalCheck(path.join(memDir, 'summaries', 'monthly'), 'memory/summaries/monthly/'),
366
+ // Patterns — check if any exist
367
+ patternsCode: optionalCheck(path.join(memDir, 'patterns', 'code-patterns.json'), 'memory/patterns/code-patterns.json'),
368
+ patternsError: optionalCheck(path.join(memDir, 'patterns', 'error-patterns.json'), 'memory/patterns/error-patterns.json'),
369
+ patternsFix: optionalCheck(path.join(memDir, 'patterns', 'fix-patterns.json'), 'memory/patterns/fix-patterns.json'),
370
+ patternsArch: optionalCheck(path.join(memDir, 'patterns', 'architecture-patterns.json'), 'memory/patterns/architecture-patterns.json'),
371
+ // Style — check if generated
372
+ styleDeveloper: optionalCheck(path.join(memDir, 'style', 'developer-style.json'), 'memory/style/developer-style.json'),
373
+ styleProject: optionalCheck(path.join(memDir, 'style', 'project-style.json'), 'memory/style/project-style.json'),
374
+ styleCommunication: optionalCheck(path.join(memDir, 'style', 'communication.md'), 'memory/style/communication.md'),
375
+ // Context — check if generated
376
+ contextShort: optionalCheck(path.join(memDir, 'context', 'short.md'), 'memory/context/short.md'),
377
+ contextFull: optionalCheck(path.join(memDir, 'context', 'full.md'), 'memory/context/full.md'),
378
+ contextLastSession: optionalCheck(path.join(memDir, 'context', 'last-session.md'), 'memory/context/last-session.md'),
379
+ // Archive and private — should exist
380
+ archiveDir: cellExists ? criticalCheck(path.join(memDir, 'archive'), 'memory/archive/') : false,
381
+ privateDir: cellExists ? criticalCheck(path.join(cellRoot, 'private'), 'private/') : false,
273
382
  totalFiles: 0,
274
383
  issues,
384
+ warnings,
385
+ status: 'healthy',
275
386
  };
276
387
  // Count total files
277
- if (exists(cellRoot)) {
388
+ if (cellExists) {
278
389
  try {
279
390
  const walk = (dir) => {
280
391
  let count = 0;
@@ -292,6 +403,19 @@ function verifyCellHealth(projectDir) {
292
403
  }
293
404
  catch { /* ignore */ }
294
405
  }
406
+ // Determine overall status
407
+ if (!cellExists) {
408
+ health.status = 'fresh'; // No .cell directory yet — expected for new projects
409
+ }
410
+ else if (issues.length > 0) {
411
+ health.status = 'broken'; // Critical files missing
412
+ }
413
+ else if (warnings.length > 3) {
414
+ health.status = 'degraded'; // Many optional files missing
415
+ }
416
+ else {
417
+ health.status = 'healthy';
418
+ }
295
419
  return health;
296
420
  }
297
421
  //# sourceMappingURL=cell-mirror.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cell-mirror.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/mirror/cell-mirror.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkFA,gDA6CC;AAMD,8CA0IC;AAMD,wCAoBC;AA4BD,4CAqDC;AA1XD,uCAAyB;AACzB,2CAA6B;AAC7B,mDAA6C;AAiC7C,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,WAAW,CAAC,UAAkB;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,YAAY,CAAC,UAAkB;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;IAC5D,SAAS,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,UAAkB;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,CAAC;IAC3D,SAAS,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,IAAa;IAChD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB;IACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AACvF,CAAC;AAeD,SAAgB,kBAAkB,CAAC,UAAkB,EAAE,OAAe;IACpE,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,GAAG,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAEvC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB;qEACiE,CAClE,CAAC,GAAG,CAAC,OAAO,CAGX,CAAC;IAEH,MAAM,OAAO,GAAmC;QAC9C,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,EAAE;QACT,GAAG,EAAE,EAAE;QACP,YAAY,EAAE,EAAE;KACjB,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAiB;YAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU;SAC3C,CAAC;QAEF,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpF,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAChE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,4BAA4B,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AAChF,CAAC;AAED,+DAA+D;AAC/D,oDAAoD;AACpD,+DAA+D;AAE/D,SAAgB,iBAAiB,CAAC,UAAkB,EAAE,OAAe;IACnE,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAEtC,+CAA+C;IAC/C,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC;0EACsE,CACvE,CAAC,GAAG,CAAC,OAAO,CAGX,CAAC;IAEH,IAAI,OAAO,GAAG,qBAAqB,CAAC;IACpC,OAAO,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;IACvE,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,IAAI,QAAQ,EAAE,CAAC,IAAI,YAAY,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,OAAO,GAAG,QAAQ,IAAI,CAAC;IACpF,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;IAEtD,uDAAuD;IACvD,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,0FAA0F,CAC3F,CAAC,GAAG,CAAC,OAAO,CAA4E,CAAC;IAE1F,IAAI,aAAa,GAAG,oBAAoB,CAAC;IACzC,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAC9B;;gCAE0B,CAC3B,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAErF,CAAC;QAEH,aAAa,IAAI,aAAa,WAAW,CAAC,EAAE,KAAK,WAAW,CAAC,UAAU,MAAM,WAAW,CAAC,QAAQ,IAAI,QAAQ,OAAO,CAAC;QACrH,aAAa,IAAI,KAAK,aAAa,CAAC,MAAM,eAAe,CAAC;QAC1D,KAAK,MAAM,EAAE,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,aAAa,IAAI,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,OAAO,GAAG,QAAQ,IAAI,CAAC;QACtF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,aAAa,IAAI,6BAA6B,CAAC;IACjD,CAAC;IACD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,aAAa,CAAC,CAAC;IAEnE,gDAAgD;IAChD,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CACzB,qGAAqG,CACtG,CAAC,GAAG,CAAC,OAAO,CAA8B,CAAC;IAE5C,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAC7B;;0DAEoD,CACrD,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAGnB,CAAC;QAEH,IAAI,QAAQ,GAAG,aAAa,MAAM,MAAM,CAAC;QACzC,QAAQ,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,YAAY,CAAC,MAAM,cAAc,CAAC;QACtG,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,QAAQ,IAAI,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,OAAO,GAAG,QAAQ,IAAI,CAAC;QACjF,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,MAAM,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,2EAA2E;IAC3E,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC;;wDAEoD,CACrD,CAAC,GAAG,CAAC,OAAO,CAA6F,CAAC;IAE3G,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAC7B;;wDAEoD,CACrD,CAAC,GAAG,CAAC,OAAO,CAA6F,CAAC;IAE3G,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B;;wDAEoD,CACrD,CAAC,GAAG,CAAC,OAAO,CAA6F,CAAC;IAE3G,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAC/B;yDACqD,CACtD,CAAC,GAAG,CAAC,OAAO,CAAqE,CAAC;IAEnF,IAAI,MAAM,GAAG,oBAAoB,CAAC;IAClC,MAAM,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;IAEtE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,sBAAsB,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;YAChC,MAAM,IAAI,UAAU,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC;QACrD,CAAC;QACD,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,sBAAsB,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,MAAM,IAAI,UAAU,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC;QACrD,CAAC;QACD,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,qBAAqB,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,MAAM,IAAI,UAAU,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC;QACrD,CAAC;QACD,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,iBAAiB,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;YAC/B,MAAM,IAAI,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC;QAC/C,CAAC;QACD,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,mCAAmC,CAAC;QAC9C,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;YACjC,MAAM,IAAI,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC,OAAO,IAAI,CAAC;QACpE,CAAC;IACH,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,+DAA+D;AAC/D,2DAA2D;AAC3D,+DAA+D;AAE/D,SAAgB,cAAc,CAAC,UAAkB,EAAE,OAAe;IAChE,yBAAyB;IACzB,MAAM,IAAI,GAAG;QACX,WAAW,CAAC,UAAU,CAAC;QACvB,YAAY,CAAC,UAAU,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC;KAC9C,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAEnC,kBAAkB;IAClB,IAAI,CAAC;QAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC7E,IAAI,CAAC;QAAC,iBAAiB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC9E,CAAC;AA4BD,SAAgB,gBAAgB,CAAC,UAAkB;IACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,SAAS,MAAM,CAAC,CAAS,IAAa,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,SAAS,KAAK,CAAC,CAAS,EAAE,KAAa;QACrC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAe;QACzB,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,oBAAoB,CAAC;QACzF,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACjE,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,yBAAyB,CAAC;QACzF,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,0BAA0B,CAAC;QAC5F,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,2BAA2B,CAAC;QAC/F,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,oBAAoB,CAAC,EAAE,oCAAoC,CAAC;QAC9G,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,qBAAqB,CAAC,EAAE,qCAAqC,CAAC;QACjH,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,mBAAmB,CAAC,EAAE,mCAAmC,CAAC;QAC3G,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,4BAA4B,CAAC,EAAE,4CAA4C,CAAC;QAC9H,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,sBAAsB,CAAC,EAAE,mCAAmC,CAAC;QAC9G,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,oBAAoB,CAAC,EAAE,iCAAiC,CAAC;QACxG,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,+BAA+B,CAAC;QAC1G,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,yBAAyB,CAAC;QACxF,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,wBAAwB,CAAC;QACrF,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAAE,gCAAgC,CAAC;QAC5G,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,iBAAiB,CAAC;QAClE,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC;QAC7D,UAAU,EAAE,CAAC;QACb,MAAM;KACP,CAAC;IAEF,oBAAoB;IACpB,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,GAAW,EAAU,EAAE;gBACnC,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;oBACjE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;wBACxB,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC5C,CAAC;yBAAM,CAAC;wBACN,KAAK,EAAE,CAAC;oBACV,CAAC;gBACH,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;YACF,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"cell-mirror.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/mirror/cell-mirror.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,12 @@ export declare class OSKeyProvider implements KeyProvider {
3
3
  name: string;
4
4
  private osType;
5
5
  isAvailable(): boolean;
6
+ healthCheck(): {
7
+ available: boolean;
8
+ os: string;
9
+ method: string;
10
+ details: string;
11
+ };
6
12
  private isWindowsAvailable;
7
13
  private windowsGetKey;
8
14
  private windowsSetKey;
@@ -1 +1 @@
1
- {"version":3,"file":"key-provider-os.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/privacy/key-provider-os.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAY,MAAM,gBAAgB,CAAC;AAYvD,qBAAa,aAAc,YAAW,WAAW;IAC/C,IAAI,SAAe;IACnB,OAAO,CAAC,MAAM,CAAc;IAE5B,WAAW,IAAI,OAAO;IAetB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,cAAc;IActB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASjC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IASxC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAQ/B"}
1
+ {"version":3,"file":"key-provider-os.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/privacy/key-provider-os.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAY,MAAM,gBAAgB,CAAC;AAYvD,qBAAa,aAAc,YAAW,WAAW;IAC/C,IAAI,SAAe;IACnB,OAAO,CAAC,MAAM,CAAc;IAE5B,WAAW,IAAI,OAAO;IAWtB,WAAW,IAAI;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAmBlF,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,cAAc;IActB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASjC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;IASxC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAQ/B"}
@@ -6,7 +6,7 @@ const key_provider_1 = require("./key-provider");
6
6
  // ============================================================
7
7
  // key-provider-os.ts — OS-native key storage provider
8
8
  //
9
- // Windows: PowerShell ConvertTo-SecureString / ConvertFrom-SecureString
9
+ // Windows: DPAPI via ConvertFrom-Clixml (real encryption, not hex file)
10
10
  // macOS: security (Keychain CLI)
11
11
  // Linux: secret-tool (GNOME Keyring / KWallet)
12
12
  //
@@ -28,8 +28,22 @@ class OSKeyProvider {
28
28
  return false;
29
29
  }
30
30
  }
31
+ healthCheck() {
32
+ const available = this.isAvailable();
33
+ switch (this.osType) {
34
+ case 'windows':
35
+ return { available, os: 'windows', method: 'DPAPI-SecureString', details: available ? 'PowerShell ConvertTo-SecureString/ConvertFrom-SecureString' : 'PowerShell not available' };
36
+ case 'macos':
37
+ return { available, os: 'macos', method: 'Keychain', details: available ? 'security CLI available' : 'security CLI not found' };
38
+ case 'linux':
39
+ return { available, os: 'linux', method: 'SecretService', details: available ? 'secret-tool available' : 'secret-tool not found' };
40
+ default:
41
+ return { available: false, os: 'unknown', method: 'none', details: 'Unsupported OS' };
42
+ }
43
+ }
31
44
  // ============================================================
32
- // Windows — PowerShell SecureString
45
+ // Windows — DPAPI via ConvertFrom-SecureString
46
+ // Uses current user's DPAPI scope — keys only readable by same user on same machine
33
47
  // ============================================================
34
48
  isWindowsAvailable() {
35
49
  try {
@@ -45,11 +59,12 @@ class OSKeyProvider {
45
59
  windowsGetKey(id) {
46
60
  try {
47
61
  const safeId = id.replace(/[^a-zA-Z0-9_-]/g, '_');
48
- const cmd = `powershell -Command "try { Get-Content -Path '$env:USERPROFILE\\.fivo\\cell\\keys\\os-${safeId}.txt' -ErrorAction Stop } catch { exit 1 }"`;
49
- const result = (0, child_process_1.execSync)(cmd, { encoding: 'utf-8', timeout: 5000, stdio: 'pipe' }).trim();
50
- if (!result)
62
+ // Read the DPAPI-encrypted string from file, then decrypt with current user scope
63
+ const cmd = `powershell -Command "$enc = Get-Content -Path '$env:USERPROFILE\\.fivo\\cell\\keys\\os-${safeId}.dpapi' -ErrorAction Stop; $sec = ConvertTo-SecureString $enc; [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($sec))"`;
64
+ const hex = (0, child_process_1.execSync)(cmd, { encoding: 'utf-8', timeout: 5000, stdio: 'pipe' }).trim();
65
+ if (!hex)
51
66
  return null;
52
- return Buffer.from(result, 'hex');
67
+ return Buffer.from(hex, 'hex');
53
68
  }
54
69
  catch {
55
70
  return null;
@@ -58,8 +73,18 @@ class OSKeyProvider {
58
73
  windowsSetKey(id, key) {
59
74
  try {
60
75
  const safeId = id.replace(/[^a-zA-Z0-9_-]/g, '_');
61
- const cmd = `powershell -Command "New-Item -Path '$env:USERPROFILE\\.fivo\\cell\\keys' -ItemType Directory -Force | Out-Null; Set-Content -Path '$env:USERPROFILE\\.fivo\\cell\\keys\\os-${safeId}.txt' -Value '${key.toString('hex')}' -Force"`;
76
+ // Convert hex to SecureString (DPAPI-encrypted in current user scope), then save
77
+ const hex = key.toString('hex');
78
+ const cmd = `powershell -Command "New-Item -Path '$env:USERPROFILE\\.fivo\\cell\\keys' -ItemType Directory -Force | Out-Null; $sec = ConvertTo-SecureString '${hex}' -AsPlainText -Force; $enc = ConvertFrom-SecureString $sec; Set-Content -Path '$env:USERPROFILE\\.fivo\\cell\\keys\\os-${safeId}.dpapi' -Value $enc -Force"`;
62
79
  (0, child_process_1.execSync)(cmd, { encoding: 'utf-8', timeout: 5000, stdio: 'pipe' });
80
+ // Clean up old hex file if it exists
81
+ try {
82
+ const fs = require('fs');
83
+ const oldPath = require('path').join(require('os').homedir(), '.fivo', 'cell', 'keys', `os-${safeId}.txt`);
84
+ if (fs.existsSync(oldPath))
85
+ fs.unlinkSync(oldPath);
86
+ }
87
+ catch { /* ignore */ }
63
88
  return true;
64
89
  }
65
90
  catch {
@@ -69,7 +94,7 @@ class OSKeyProvider {
69
94
  windowsDeleteKey(id) {
70
95
  try {
71
96
  const safeId = id.replace(/[^a-zA-Z0-9_-]/g, '_');
72
- const cmd = `powershell -Command "Remove-Item -Path '$env:USERPROFILE\\.fivo\\cell\\keys\\os-${safeId}.txt' -Force -ErrorAction SilentlyContinue"`;
97
+ const cmd = `powershell -Command "Remove-Item -Path '$env:USERPROFILE\\.fivo\\cell\\keys\\os-${safeId}.dpapi' -Force -ErrorAction SilentlyContinue; Remove-Item -Path '$env:USERPROFILE\\.fivo\\cell\\keys\\os-${safeId}.txt' -Force -ErrorAction SilentlyContinue"`;
73
98
  (0, child_process_1.execSync)(cmd, { encoding: 'utf-8', timeout: 5000, stdio: 'pipe' });
74
99
  return true;
75
100
  }
@@ -102,7 +127,6 @@ class OSKeyProvider {
102
127
  }
103
128
  macosSetKey(id, key) {
104
129
  try {
105
- // Delete existing first (security add fails if already exists)
106
130
  try {
107
131
  (0, child_process_1.execSync)(`security delete-generic-password -a fivocell -s "cell-${id}" 2>/dev/null`, {
108
132
  encoding: 'utf-8', timeout: 5000, stdio: 'pipe',
@@ -1 +1 @@
1
- {"version":3,"file":"key-provider-os.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/privacy/key-provider-os.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"key-provider-os.js","sourceRoot":"","sources":["../../../../src/walls/06-memory/privacy/key-provider-os.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,12 @@ export interface KeyProvider {
4
4
  getKey(id: string): Buffer | null;
5
5
  setKey(id: string, key: Buffer): boolean;
6
6
  deleteKey(id: string): boolean;
7
+ healthCheck?(): {
8
+ available: boolean;
9
+ os: string;
10
+ method: string;
11
+ details: string;
12
+ };
7
13
  }
8
14
  export type OSType = 'windows' | 'macos' | 'linux' | 'unknown';
9
15
  export declare function detectOS(): OSType;
@@ -18,4 +24,25 @@ export declare function getKeyProviderInfo(): {
18
24
  os: OSType;
19
25
  available: boolean;
20
26
  };
27
+ export declare function getProviderHealthCheck(): {
28
+ name: string;
29
+ os: OSType;
30
+ available: boolean;
31
+ health?: {
32
+ available: boolean;
33
+ os: string;
34
+ method: string;
35
+ details: string;
36
+ };
37
+ };
38
+ /**
39
+ * Get key provider confidence level
40
+ * High: OS-native provider available and working
41
+ * Medium: File-based provider (weaker encryption)
42
+ * Low: No provider available
43
+ */
44
+ export declare function getKeyProviderConfidence(): {
45
+ level: 'high' | 'medium' | 'low';
46
+ reason: string;
47
+ };
21
48
  //# sourceMappingURL=key-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"key-provider.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/privacy/key-provider.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,IAAI,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CAChC;AAED,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/D,wBAAgB,QAAQ,IAAI,MAAM,CAOjC;AAUD,wBAAgB,gBAAgB,IAAI,MAAM,CAQzC;AAuBD,wBAAgB,cAAc,IAAI,WAAW,CAK5C;AAMD,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM,CAOzE;AAED,wBAAgB,kBAAkB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAQrF"}
1
+ {"version":3,"file":"key-provider.d.ts","sourceRoot":"","sources":["../../../../src/walls/06-memory/privacy/key-provider.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,IAAI,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACzC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,WAAW,CAAC,IAAI;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACrF;AAED,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/D,wBAAgB,QAAQ,IAAI,MAAM,CAOjC;AAUD,wBAAgB,gBAAgB,IAAI,MAAM,CAQzC;AAuBD,wBAAgB,cAAc,IAAI,WAAW,CAK5C;AAMD,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,GAAE,MAAW,GAAG,MAAM,CAOzE;AAED,wBAAgB,kBAAkB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAQrF;AAED,wBAAgB,sBAAsB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CASvK;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI;IAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkB/F"}
@@ -41,6 +41,8 @@ exports.setKey = setKey;
41
41
  exports.deleteKey = deleteKey;
42
42
  exports.getOrCreateKey = getOrCreateKey;
43
43
  exports.getKeyProviderInfo = getKeyProviderInfo;
44
+ exports.getProviderHealthCheck = getProviderHealthCheck;
45
+ exports.getKeyProviderConfidence = getKeyProviderConfidence;
44
46
  const crypto = __importStar(require("crypto"));
45
47
  const os = __importStar(require("os"));
46
48
  function detectOS() {
@@ -120,4 +122,41 @@ function getKeyProviderInfo() {
120
122
  return { name: 'none', os: osType, available: false };
121
123
  }
122
124
  }
125
+ function getProviderHealthCheck() {
126
+ const osType = detectOS();
127
+ try {
128
+ const provider = getKeyProvider();
129
+ const health = provider.healthCheck ? provider.healthCheck() : undefined;
130
+ return { name: provider.name, os: osType, available: true, health };
131
+ }
132
+ catch {
133
+ return { name: 'none', os: osType, available: false };
134
+ }
135
+ }
136
+ /**
137
+ * Get key provider confidence level
138
+ * High: OS-native provider available and working
139
+ * Medium: File-based provider (weaker encryption)
140
+ * Low: No provider available
141
+ */
142
+ function getKeyProviderConfidence() {
143
+ const osType = detectOS();
144
+ try {
145
+ const provider = getKeyProvider();
146
+ if (provider.name === 'os-native') {
147
+ return { level: 'high', reason: `OS-native provider active (${osType})` };
148
+ }
149
+ if (provider.name === 'file-encrypted') {
150
+ let reason = 'Using file-based encryption (weaker than OS-native)';
151
+ if (osType === 'windows') {
152
+ reason = 'Windows DPAPI not available (PowerShell may be blocked). Using file-based encryption.';
153
+ }
154
+ return { level: 'medium', reason };
155
+ }
156
+ return { level: 'low', reason: 'Unknown provider' };
157
+ }
158
+ catch {
159
+ return { level: 'low', reason: 'No key provider available' };
160
+ }
161
+ }
123
162
  //# sourceMappingURL=key-provider.js.map