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.
- package/README.md +197 -202
- package/dist/__tests__/cell-mirror.test.js +2 -2
- package/dist/__tests__/cell-mirror.test.js.map +1 -1
- package/dist/__tests__/cli-regression.test.js +1 -1
- package/dist/__tests__/cli-regression.test.js.map +1 -1
- package/dist/core/search-engine.d.ts.map +1 -1
- package/dist/core/search-engine.js +8 -11
- package/dist/core/search-engine.js.map +1 -1
- package/dist/walls/02-scanner/blindspots/code-scanner.d.ts +11 -0
- package/dist/walls/02-scanner/blindspots/code-scanner.d.ts.map +1 -1
- package/dist/walls/02-scanner/blindspots/code-scanner.js +63 -0
- package/dist/walls/02-scanner/blindspots/code-scanner.js.map +1 -1
- package/dist/walls/03-knowledge/decisions/branch-snapshot.d.ts +14 -0
- package/dist/walls/03-knowledge/decisions/branch-snapshot.d.ts.map +1 -1
- package/dist/walls/03-knowledge/decisions/branch-snapshot.js +88 -21
- package/dist/walls/03-knowledge/decisions/branch-snapshot.js.map +1 -1
- package/dist/walls/03-knowledge/decisions/failure-memory.d.ts +15 -0
- package/dist/walls/03-knowledge/decisions/failure-memory.d.ts.map +1 -1
- package/dist/walls/03-knowledge/decisions/failure-memory.js +141 -54
- package/dist/walls/03-knowledge/decisions/failure-memory.js.map +1 -1
- package/dist/walls/03-knowledge/decisions/predictive-engine.d.ts +8 -0
- package/dist/walls/03-knowledge/decisions/predictive-engine.d.ts.map +1 -1
- package/dist/walls/03-knowledge/decisions/predictive-engine.js +41 -0
- package/dist/walls/03-knowledge/decisions/predictive-engine.js.map +1 -1
- package/dist/walls/06-memory/archive/blob-vault.d.ts.map +1 -1
- package/dist/walls/06-memory/archive/blob-vault.js +20 -4
- package/dist/walls/06-memory/archive/blob-vault.js.map +1 -1
- package/dist/walls/06-memory/archive/memory-archive.d.ts.map +1 -1
- package/dist/walls/06-memory/archive/memory-archive.js +19 -29
- package/dist/walls/06-memory/archive/memory-archive.js.map +1 -1
- package/dist/walls/06-memory/mirror/cell-mirror.d.ts +4 -0
- package/dist/walls/06-memory/mirror/cell-mirror.d.ts.map +1 -1
- package/dist/walls/06-memory/mirror/cell-mirror.js +156 -32
- package/dist/walls/06-memory/mirror/cell-mirror.js.map +1 -1
- package/dist/walls/06-memory/privacy/key-provider-os.d.ts +6 -0
- package/dist/walls/06-memory/privacy/key-provider-os.d.ts.map +1 -1
- package/dist/walls/06-memory/privacy/key-provider-os.js +33 -9
- package/dist/walls/06-memory/privacy/key-provider-os.js.map +1 -1
- package/dist/walls/06-memory/privacy/key-provider.d.ts +27 -0
- package/dist/walls/06-memory/privacy/key-provider.d.ts.map +1 -1
- package/dist/walls/06-memory/privacy/key-provider.js +39 -0
- package/dist/walls/06-memory/privacy/key-provider.js.map +1 -1
- package/dist/walls/06-memory/retrieval/context-pipeline.d.ts +2 -0
- package/dist/walls/06-memory/retrieval/context-pipeline.d.ts.map +1 -1
- package/dist/walls/06-memory/retrieval/context-pipeline.js +130 -16
- package/dist/walls/06-memory/retrieval/context-pipeline.js.map +1 -1
- package/dist/walls/06-memory/stores/memory-search.d.ts +21 -0
- package/dist/walls/06-memory/stores/memory-search.d.ts.map +1 -1
- package/dist/walls/06-memory/stores/memory-search.js +97 -13
- package/dist/walls/06-memory/stores/memory-search.js.map +1 -1
- package/dist/walls/06-memory/stores/weekly-report.d.ts +5 -0
- package/dist/walls/06-memory/stores/weekly-report.d.ts.map +1 -1
- package/dist/walls/06-memory/stores/weekly-report.js +24 -2
- package/dist/walls/06-memory/stores/weekly-report.js.map +1 -1
- package/dist/walls/07-runtime/cli/cli.js +100 -4545
- package/dist/walls/07-runtime/cli/cli.js.map +1 -1
- package/dist/walls/07-runtime/cli/commands/branch.d.ts +7 -0
- package/dist/walls/07-runtime/cli/commands/branch.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/branch.js +169 -0
- package/dist/walls/07-runtime/cli/commands/branch.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/ci.d.ts +2 -0
- package/dist/walls/07-runtime/cli/commands/ci.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/ci.js +57 -0
- package/dist/walls/07-runtime/cli/commands/ci.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/community.d.ts +2 -0
- package/dist/walls/07-runtime/cli/commands/community.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/community.js +64 -0
- package/dist/walls/07-runtime/cli/commands/community.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/dashboard.d.ts +3 -0
- package/dist/walls/07-runtime/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/dashboard.js +45 -0
- package/dist/walls/07-runtime/cli/commands/dashboard.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/help.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/help.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/help.js +91 -0
- package/dist/walls/07-runtime/cli/commands/help.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/memory.d.ts +5 -0
- package/dist/walls/07-runtime/cli/commands/memory.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/memory.js +252 -0
- package/dist/walls/07-runtime/cli/commands/memory.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/repl.d.ts +2 -0
- package/dist/walls/07-runtime/cli/commands/repl.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/repl.js +63 -0
- package/dist/walls/07-runtime/cli/commands/repl.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/scan.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/scan.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/scan.js +244 -0
- package/dist/walls/07-runtime/cli/commands/scan.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/session.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/session.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/session.js +79 -0
- package/dist/walls/07-runtime/cli/commands/session.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/setup.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/setup.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/setup.js +216 -0
- package/dist/walls/07-runtime/cli/commands/setup.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/status.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/status.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/status.js +352 -0
- package/dist/walls/07-runtime/cli/commands/status.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/sync.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/sync.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/sync.js +116 -0
- package/dist/walls/07-runtime/cli/commands/sync.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/team.d.ts +2 -0
- package/dist/walls/07-runtime/cli/commands/team.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/team.js +58 -0
- package/dist/walls/07-runtime/cli/commands/team.js.map +1 -0
- package/dist/walls/07-runtime/cli/commands/watch.d.ts +4 -0
- package/dist/walls/07-runtime/cli/commands/watch.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/commands/watch.js +129 -0
- package/dist/walls/07-runtime/cli/commands/watch.js.map +1 -0
- package/dist/walls/07-runtime/cli/utils.d.ts +26 -0
- package/dist/walls/07-runtime/cli/utils.d.ts.map +1 -0
- package/dist/walls/07-runtime/cli/utils.js +217 -0
- package/dist/walls/07-runtime/cli/utils.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/community.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/community.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/community.js +191 -0
- package/dist/walls/07-runtime/daemon/routes/community.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/cost.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/cost.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/cost.js +73 -0
- package/dist/walls/07-runtime/daemon/routes/cost.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/health.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/health.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/health.js +40 -0
- package/dist/walls/07-runtime/daemon/routes/health.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/memory.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/memory.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/memory.js +75 -0
- package/dist/walls/07-runtime/daemon/routes/memory.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/privacy.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/privacy.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/privacy.js +160 -0
- package/dist/walls/07-runtime/daemon/routes/privacy.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/project.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/project.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/project.js +59 -0
- package/dist/walls/07-runtime/daemon/routes/project.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/session.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/session.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/session.js +100 -0
- package/dist/walls/07-runtime/daemon/routes/session.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/signal.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/signal.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/signal.js +60 -0
- package/dist/walls/07-runtime/daemon/routes/signal.js.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/workflow.d.ts +3 -0
- package/dist/walls/07-runtime/daemon/routes/workflow.d.ts.map +1 -0
- package/dist/walls/07-runtime/daemon/routes/workflow.js +105 -0
- package/dist/walls/07-runtime/daemon/routes/workflow.js.map +1 -0
- package/dist/walls/07-runtime/daemon/server.d.ts.map +1 -1
- package/dist/walls/07-runtime/daemon/server.js +19 -0
- package/dist/walls/07-runtime/daemon/server.js.map +1 -1
- package/package.json +1 -1
- package/dist/walls/03-knowledge/decisions/cross-model-engine.d.ts +0 -38
- package/dist/walls/03-knowledge/decisions/cross-model-engine.d.ts.map +0 -1
- package/dist/walls/03-knowledge/decisions/cross-model-engine.js +0 -98
- package/dist/walls/03-knowledge/decisions/cross-model-engine.js.map +0 -1
- package/dist/walls/03-knowledge/decisions/insight-generator.d.ts +0 -58
- package/dist/walls/03-knowledge/decisions/insight-generator.d.ts.map +0 -1
- package/dist/walls/03-knowledge/decisions/insight-generator.js +0 -314
- package/dist/walls/03-knowledge/decisions/insight-generator.js.map +0 -1
- package/dist/walls/05-community/stats/community-advanced-engine.d.ts +0 -30
- package/dist/walls/05-community/stats/community-advanced-engine.d.ts.map +0 -1
- package/dist/walls/05-community/stats/community-advanced-engine.js +0 -103
- package/dist/walls/05-community/stats/community-advanced-engine.js.map +0 -1
- package/dist/walls/05-community/stats/community-engine.d.ts +0 -62
- package/dist/walls/05-community/stats/community-engine.d.ts.map +0 -1
- package/dist/walls/05-community/stats/community-engine.js +0 -194
- package/dist/walls/05-community/stats/community-engine.js.map +0 -1
- package/dist/walls/05-community/stats/community-v2.d.ts +0 -106
- package/dist/walls/05-community/stats/community-v2.d.ts.map +0 -1
- package/dist/walls/05-community/stats/community-v2.js +0 -378
- package/dist/walls/05-community/stats/community-v2.js.map +0 -1
- package/dist/walls/08-cloud-bridge/sync/ai-bridge.d.ts +0 -20
- package/dist/walls/08-cloud-bridge/sync/ai-bridge.d.ts.map +0 -1
- package/dist/walls/08-cloud-bridge/sync/ai-bridge.js +0 -250
- package/dist/walls/08-cloud-bridge/sync/ai-bridge.js.map +0 -1
- package/dist/walls/08-cloud-bridge/sync/cloud-client.d.ts +0 -40
- package/dist/walls/08-cloud-bridge/sync/cloud-client.d.ts.map +0 -1
- package/dist/walls/08-cloud-bridge/sync/cloud-client.js +0 -126
- package/dist/walls/08-cloud-bridge/sync/cloud-client.js.map +0 -1
- package/dist/walls/08-cloud-bridge/sync/cloud-sync.d.ts +0 -66
- package/dist/walls/08-cloud-bridge/sync/cloud-sync.d.ts.map +0 -1
- package/dist/walls/08-cloud-bridge/sync/cloud-sync.js +0 -328
- 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;
|
|
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
|
-
|
|
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
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
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 (
|
|
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":"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"}
|
|
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;
|
|
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:
|
|
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 —
|
|
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
|
-
|
|
49
|
-
const
|
|
50
|
-
|
|
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(
|
|
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
|
-
|
|
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":";;;AAAA,iDAAyC;AACzC,iDAAuD;AAEvD,+DAA+D;AAC/D,sDAAsD;AACtD,EAAE;AACF,wEAAwE;AACxE,iCAAiC;AACjC,+CAA+C;AAC/C,EAAE;AACF,sDAAsD;AACtD,+DAA+D;AAE/D,MAAa,aAAa;IACxB,IAAI,GAAG,WAAW,CAAC;IACX,MAAM,GAAG,IAAA,uBAAQ,GAAE,CAAC;IAE5B,WAAW;QACT,IAAI,CAAC;YACH,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACjD,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;YACxB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;IAC3B,CAAC;IAED,+DAA+D;IAC/D,
|
|
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;
|
|
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
|