get-claudia 1.55.2 → 1.55.3
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/CHANGELOG.md +4 -0
- package/bin/index.js +50 -25
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Claudia will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## 1.55.3 (2026-03-15)
|
|
6
|
+
|
|
7
|
+
- **Installer polish** -- Memory System step shows memory count from claudia.db when available instead of raw file count. DB scan shows totals ("4 databases to consolidate (2,118 memories, 319 entities)") and fixes "1 memories" grammar. MCP Config no longer warns about multiple stdio servers (they work fine now).
|
|
8
|
+
|
|
5
9
|
## 1.55.2 (2026-03-15)
|
|
6
10
|
|
|
7
11
|
- **BUG FIX: dbScan scope error** -- `dbScan` was declared inside the try block but referenced in the vault callback outside it. Moved declaration to outer scope.
|
package/bin/index.js
CHANGED
|
@@ -750,8 +750,21 @@ async function main() {
|
|
|
750
750
|
const hasExistingDb = existingDbs.length > 0;
|
|
751
751
|
|
|
752
752
|
if (hasExistingDb) {
|
|
753
|
-
|
|
754
|
-
|
|
753
|
+
// Show a quick count via sqlite3 if available
|
|
754
|
+
let quickMemCount = 0;
|
|
755
|
+
const mainDb = join(memoryDir, 'claudia.db');
|
|
756
|
+
if (existsSync(mainDb)) {
|
|
757
|
+
try {
|
|
758
|
+
quickMemCount = parseInt(execFileSync('sqlite3', [mainDb, 'SELECT COUNT(*) FROM memories;'], {
|
|
759
|
+
encoding: 'utf-8', timeout: 3000, stdio: ['pipe', 'pipe', 'pipe'],
|
|
760
|
+
}).trim(), 10) || 0;
|
|
761
|
+
} catch { /* sqlite3 CLI not available */ }
|
|
762
|
+
}
|
|
763
|
+
const memoryLabel = quickMemCount > 0
|
|
764
|
+
? `${quickMemCount.toLocaleString()} memories in claudia.db`
|
|
765
|
+
: `${existingDbs.length} database files found`;
|
|
766
|
+
renderer.update('memory', 'done', memoryLabel);
|
|
767
|
+
if (!supportsInPlace) renderer.appendLine('memory', 'done', memoryLabel);
|
|
755
768
|
} else {
|
|
756
769
|
renderer.update('memory', 'done', 'Directories ready (new install)');
|
|
757
770
|
if (!supportsInPlace) renderer.appendLine('memory', 'done', 'Directories ready');
|
|
@@ -901,12 +914,15 @@ async function main() {
|
|
|
901
914
|
} else {
|
|
902
915
|
renderer.update('mcp', 'active', 'checking .mcp.json...');
|
|
903
916
|
const mcpCheckResult = checkMcpConfig(targetPath);
|
|
904
|
-
if (mcpCheckResult.hasDaemon && mcpCheckResult.stdioCount
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
renderer.update('mcp', '
|
|
909
|
-
if (!supportsInPlace) renderer.appendLine('mcp', '
|
|
917
|
+
if (mcpCheckResult.hasDaemon && mcpCheckResult.stdioCount >= 1) {
|
|
918
|
+
const serverDetail = mcpCheckResult.stdioCount === 1
|
|
919
|
+
? 'claudia-memory configured'
|
|
920
|
+
: `claudia-memory + ${mcpCheckResult.stdioCount - 1} other server${mcpCheckResult.stdioCount > 2 ? 's' : ''}`;
|
|
921
|
+
renderer.update('mcp', 'done', serverDetail);
|
|
922
|
+
if (!supportsInPlace) renderer.appendLine('mcp', 'done', serverDetail);
|
|
923
|
+
} else if (mcpCheckResult.hasDaemon && mcpCheckResult.stdioCount === 0) {
|
|
924
|
+
renderer.update('mcp', 'warn', 'claudia-memory configured (no stdio?)');
|
|
925
|
+
if (!supportsInPlace) renderer.appendLine('mcp', 'warn', 'claudia-memory configured (no stdio?)');
|
|
910
926
|
} else {
|
|
911
927
|
renderer.update('mcp', 'warn', 'claudia-memory not in .mcp.json');
|
|
912
928
|
if (!supportsInPlace) renderer.appendLine('mcp', 'warn', 'daemon not configured');
|
|
@@ -1056,33 +1072,42 @@ async function main() {
|
|
|
1056
1072
|
if (!dbScan) return;
|
|
1057
1073
|
if (dbScan.totalMemories === 0 && dbScan.hashDbs.length === 0) return;
|
|
1058
1074
|
|
|
1075
|
+
const withData = dbScan.hashDbs.filter(d => d.memories > 0 || d.entities > 0);
|
|
1076
|
+
const empty = dbScan.hashDbs.filter(d => d.memories === 0 && d.entities === 0);
|
|
1077
|
+
|
|
1078
|
+
// Nothing interesting to show if unified DB has data and no legacy DBs
|
|
1079
|
+
if (withData.length === 0 && empty.length === 0 && dbScan.unified.memories > 0) return;
|
|
1080
|
+
|
|
1081
|
+
const pl = (n, word) => `${n.toLocaleString()} ${word}${n === 1 ? '' : (word.endsWith('y') ? word.slice(0, -1) + 'ies' : word + 's')}`;
|
|
1082
|
+
// Simpler: just handle the cases we need
|
|
1083
|
+
const memLabel = (n) => n === 1 ? '1 memory' : `${n.toLocaleString()} memories`;
|
|
1084
|
+
const entLabel = (n) => n === 1 ? '1 entity' : `${n.toLocaleString()} entities`;
|
|
1085
|
+
const dbLabel = (n) => n === 1 ? '1 database' : `${n} databases`;
|
|
1086
|
+
|
|
1059
1087
|
console.log('');
|
|
1060
1088
|
console.log(`${colors.dim}${'─'.repeat(46)}${colors.reset}`);
|
|
1061
1089
|
console.log(` ${colors.boldCyan}Memory Database Scan${colors.reset}`);
|
|
1062
1090
|
console.log('');
|
|
1063
1091
|
|
|
1064
1092
|
if (dbScan.unified.exists) {
|
|
1065
|
-
console.log(` ${colors.green}●${colors.reset} claudia.db: ${colors.bold}${dbScan.unified.memories}${colors.reset}
|
|
1093
|
+
console.log(` ${colors.green}●${colors.reset} claudia.db: ${colors.bold}${memLabel(dbScan.unified.memories)}${colors.reset}, ${colors.bold}${entLabel(dbScan.unified.entities)}${colors.reset}`);
|
|
1066
1094
|
}
|
|
1067
1095
|
|
|
1068
|
-
if (
|
|
1069
|
-
const
|
|
1070
|
-
const
|
|
1096
|
+
if (withData.length > 0) {
|
|
1097
|
+
const totalMem = withData.reduce((s, d) => s + d.memories, 0);
|
|
1098
|
+
const totalEnt = withData.reduce((s, d) => s + d.entities, 0);
|
|
1071
1099
|
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
console.log(` ${colors.dim}${db.name}${colors.reset}: ${db.memories} memories, ${db.entities} entities`);
|
|
1077
|
-
}
|
|
1078
|
-
console.log('');
|
|
1079
|
-
console.log(` ${colors.dim}These will be auto-merged into claudia.db on next startup.${colors.reset}`);
|
|
1080
|
-
}
|
|
1081
|
-
if (empty.length > 0) {
|
|
1082
|
-
console.log(` ${colors.dim}${empty.length} empty database${empty.length !== 1 ? 's' : ''} will be cleaned up automatically.${colors.reset}`);
|
|
1100
|
+
console.log('');
|
|
1101
|
+
console.log(` ${colors.yellow}${dbLabel(withData.length)} to consolidate (${memLabel(totalMem)}, ${entLabel(totalEnt)}):${colors.reset}`);
|
|
1102
|
+
for (const db of withData) {
|
|
1103
|
+
console.log(` ${colors.dim}${db.name}${colors.reset} ${memLabel(db.memories)}, ${entLabel(db.entities)}`);
|
|
1083
1104
|
}
|
|
1084
|
-
|
|
1085
|
-
console.log(` ${colors.dim}
|
|
1105
|
+
console.log('');
|
|
1106
|
+
console.log(` ${colors.dim}Auto-merged into claudia.db on next startup.${colors.reset}`);
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
if (empty.length > 0) {
|
|
1110
|
+
console.log(` ${colors.dim}${dbLabel(empty.length)} empty, will be cleaned up.${colors.reset}`);
|
|
1086
1111
|
}
|
|
1087
1112
|
|
|
1088
1113
|
console.log(`${colors.dim}${'─'.repeat(46)}${colors.reset}`);
|