@memrosetta/cli 0.3.2 → 0.4.1
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/dist/chunk-356QK7TK.js +533 -0
- package/dist/chunk-3LSITXZ4.js +69 -0
- package/dist/chunk-6IOTBMUB.js +570 -0
- package/dist/chunk-72IW6TAV.js +59 -0
- package/dist/chunk-BGXZ3MDD.js +341 -0
- package/dist/chunk-EZVP3OY7.js +52 -0
- package/dist/chunk-FCHV2JMZ.js +347 -0
- package/dist/{chunk-F7ZMZ6HN.js → chunk-HXZ7MAT6.js} +2 -1
- package/dist/chunk-IM6H35RB.js +341 -0
- package/dist/chunk-JGE6RXXH.js +48 -0
- package/dist/chunk-JPBSMZ26.js +343 -0
- package/dist/chunk-KSKRPUZZ.js +43 -0
- package/dist/chunk-L6S3TXHR.js +326 -0
- package/dist/chunk-MISLIVUL.js +70 -0
- package/dist/chunk-NU5ZJJXP.js +63 -0
- package/dist/{chunk-326TFH4F.js → chunk-OCCU5YEG.js} +11 -42
- package/dist/chunk-PW52BB6L.js +61 -0
- package/dist/chunk-RABFL4EN.js +528 -0
- package/dist/chunk-RDUU53MG.js +343 -0
- package/dist/chunk-RYPYJJ2K.js +70 -0
- package/dist/chunk-SEPYQK3J.js +60 -0
- package/dist/{chunk-CATBN3ZT.js → chunk-TQOH7ZXN.js} +6 -18
- package/dist/chunk-Y6NH6K27.js +209 -0
- package/dist/{clear-MTL4CQM3.js → clear-47OFIDME.js} +10 -5
- package/dist/clear-4RQW6SYW.js +39 -0
- package/dist/clear-5SZVGYBX.js +39 -0
- package/dist/clear-BYRCL5ZN.js +39 -0
- package/dist/clear-ETQ7XFMV.js +39 -0
- package/dist/clear-P6H55OKZ.js +39 -0
- package/dist/clear-T3TWJQKL.js +39 -0
- package/dist/{compress-Z46R4N4M.js → compress-HDNYPXZ3.js} +10 -5
- package/dist/compress-S6MS4QW7.js +33 -0
- package/dist/compress-SEFTKZMU.js +33 -0
- package/dist/compress-TVWXLW3L.js +33 -0
- package/dist/compress-VLYNZ5BQ.js +33 -0
- package/dist/compress-YNY6YNFU.js +33 -0
- package/dist/compress-ZXWRRGHT.js +33 -0
- package/dist/{count-4TZ3C524.js → count-26AGY5XL.js} +10 -5
- package/dist/count-AMSEVDWR.js +24 -0
- package/dist/count-AVG5ZIRW.js +24 -0
- package/dist/count-CJIYYJKN.js +24 -0
- package/dist/count-KFFD4ML7.js +24 -0
- package/dist/count-UUAD3GEJ.js +24 -0
- package/dist/count-Z67KBEMV.js +24 -0
- package/dist/feedback-QDOWDWHM.js +40 -0
- package/dist/feedback-XGBKFQXC.js +40 -0
- package/dist/{get-B6AL75EW.js → get-75MGS4LN.js} +4 -2
- package/dist/get-NY5H3MUA.js +30 -0
- package/dist/hooks/on-prompt.js +2 -2
- package/dist/hooks/on-stop.js +2 -2
- package/dist/index.js +35 -18
- package/dist/ingest-A3BAI2C4.js +95 -0
- package/dist/ingest-E7QDD5NY.js +95 -0
- package/dist/ingest-GSJMWDV5.js +95 -0
- package/dist/ingest-IGI7RXR4.js +95 -0
- package/dist/ingest-JPIHSH7W.js +95 -0
- package/dist/ingest-QGXA4Y6C.js +95 -0
- package/dist/ingest-TZEVA25F.js +95 -0
- package/dist/init-2PRW64KV.js +146 -0
- package/dist/init-C3CONL23.js +146 -0
- package/dist/init-DAKOWQSW.js +169 -0
- package/dist/init-FYPMJDRN.js +146 -0
- package/dist/{init-C335O4TX.js → init-GCT4XEI6.js} +2 -2
- package/dist/init-GRVRJ6RO.js +205 -0
- package/dist/init-HBEIXY3N.js +146 -0
- package/dist/init-LK4UQISR.js +205 -0
- package/dist/init-MISGIVCC.js +146 -0
- package/dist/init-MNM4TXXJ.js +146 -0
- package/dist/{init-YAGOXYWG.js → init-OQW3KXTR.js} +2 -2
- package/dist/init-SIEKAILM.js +113 -0
- package/dist/init-TM7GTHTJ.js +146 -0
- package/dist/init-VYWOSISP.js +146 -0
- package/dist/init-WCL7FZOJ.js +182 -0
- package/dist/init-ZLUDTJAP.js +182 -0
- package/dist/invalidate-BY5VNFSE.js +25 -0
- package/dist/{invalidate-C54IVIGL.js → invalidate-D2O4VWZU.js} +4 -2
- package/dist/{maintain-ZPHG47YY.js → maintain-B65WIMGJ.js} +10 -5
- package/dist/maintain-EWOU3DGT.js +37 -0
- package/dist/maintain-FELKLG7O.js +37 -0
- package/dist/maintain-SGM56XKE.js +37 -0
- package/dist/maintain-VX2VWB2L.js +37 -0
- package/dist/maintain-WRRDXEG3.js +37 -0
- package/dist/maintain-XTCSOQBU.js +37 -0
- package/dist/{relate-R6DQUJCQ.js → relate-2QMG5H2I.js} +5 -3
- package/dist/relate-C22YYJZT.js +46 -0
- package/dist/relate-L5464WV5.js +47 -0
- package/dist/relate-SGZLG7JU.js +47 -0
- package/dist/relate-V5RYMJJ5.js +47 -0
- package/dist/relate-W4BXPFJA.js +46 -0
- package/dist/reset-45EUG44R.js +95 -0
- package/dist/reset-5NDHFUC3.js +95 -0
- package/dist/reset-C7I3LA5M.js +95 -0
- package/dist/reset-CYY4KYAB.js +129 -0
- package/dist/reset-F6F2R6BR.js +95 -0
- package/dist/reset-K3K4K5CT.js +95 -0
- package/dist/reset-K4WZJ4WU.js +95 -0
- package/dist/{reset-P63V46RN.js → reset-NNQQJN6L.js} +2 -2
- package/dist/{reset-GPV46GSD.js → reset-P5FXLI4E.js} +2 -2
- package/dist/reset-SORHIEKY.js +112 -0
- package/dist/reset-SVJMWYAK.js +95 -0
- package/dist/reset-W22RJGYZ.js +112 -0
- package/dist/reset-W3QVA632.js +95 -0
- package/dist/reset-WYEU6XJQ.js +112 -0
- package/dist/{search-YEYKOEXC.js → search-2SU5WQYK.js} +9 -4
- package/dist/search-5EE3XB2R.js +48 -0
- package/dist/search-BJ2YV5IS.js +48 -0
- package/dist/search-L6P3XY47.js +48 -0
- package/dist/search-PT4POELX.js +48 -0
- package/dist/search-UA7Y55LQ.js +48 -0
- package/dist/search-ZKLRJXFT.js +48 -0
- package/dist/status-3XVXJF7M.js +170 -0
- package/dist/status-4THJLSJL.js +131 -0
- package/dist/status-4UYY7TOE.js +131 -0
- package/dist/status-7G3RMR6A.js +139 -0
- package/dist/status-7M4TJVDH.js +170 -0
- package/dist/status-7MEEKEC2.js +131 -0
- package/dist/status-BQL4VJ6Y.js +149 -0
- package/dist/status-BTEVCZ5K.js +125 -0
- package/dist/status-F3NZGGPH.js +131 -0
- package/dist/status-GQMXOMRN.js +131 -0
- package/dist/status-HJGTMHTD.js +131 -0
- package/dist/{status-AMMF6QGI.js → status-IEKR6SSH.js} +35 -6
- package/dist/status-JJGVWESB.js +139 -0
- package/dist/status-LDVRVYZH.js +131 -0
- package/dist/{status-XNQRRFWF.js → status-TATIX3R6.js} +1 -1
- package/dist/{status-PYD6U7U7.js → status-TVY32MZD.js} +10 -3
- package/dist/{store-ZMERYHI6.js → store-2USP33HQ.js} +12 -7
- package/dist/store-6D5OJ2DX.js +91 -0
- package/dist/store-I4JNJWAZ.js +91 -0
- package/dist/store-R4LXYE57.js +91 -0
- package/dist/store-UMR2NOT7.js +91 -0
- package/dist/store-XCFYGYBE.js +91 -0
- package/dist/store-ZDI5AH4M.js +91 -0
- package/dist/sync-643GTA5X.js +319 -0
- package/dist/sync-BPVMHW34.js +319 -0
- package/dist/sync-OZQLBYT2.js +317 -0
- package/dist/sync-WURX2HJZ.js +321 -0
- package/dist/update-XJLMXCDZ.js +36 -0
- package/dist/{working-memory-2RRQFX4Q.js → working-memory-2U33JHJB.js} +10 -6
- package/dist/working-memory-35TMFU3P.js +53 -0
- package/dist/working-memory-IBWGIXLW.js +53 -0
- package/dist/working-memory-RZE3GYQZ.js +53 -0
- package/dist/working-memory-UYVEJJYW.js +53 -0
- package/dist/working-memory-VP6L2QV6.js +53 -0
- package/dist/working-memory-WGB5DZ3B.js +53 -0
- package/package.json +5 -4
- package/dist/chunk-MWLPPS7U.js +0 -133
- package/dist/ingest-ZOR3XSAE.js +0 -152
- package/dist/init-7VFBCA4O.js +0 -26
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isClaudeCodeConfigured,
|
|
3
|
+
isCodexConfigured,
|
|
4
|
+
isCursorConfigured,
|
|
5
|
+
isGenericMCPConfigured
|
|
6
|
+
} from "./chunk-OCCU5YEG.js";
|
|
7
|
+
import {
|
|
8
|
+
getDefaultDbPath
|
|
9
|
+
} from "./chunk-POK32V2J.js";
|
|
10
|
+
import {
|
|
11
|
+
output
|
|
12
|
+
} from "./chunk-ET6TNQOJ.js";
|
|
13
|
+
import {
|
|
14
|
+
getConfig
|
|
15
|
+
} from "./chunk-TU5EHSDE.js";
|
|
16
|
+
|
|
17
|
+
// src/commands/status.ts
|
|
18
|
+
import { existsSync, statSync } from "fs";
|
|
19
|
+
import { createRequire } from "module";
|
|
20
|
+
function getVersion() {
|
|
21
|
+
try {
|
|
22
|
+
const require2 = createRequire(import.meta.url);
|
|
23
|
+
const pkg = require2("../../package.json");
|
|
24
|
+
return pkg.version;
|
|
25
|
+
} catch {
|
|
26
|
+
try {
|
|
27
|
+
const require2 = createRequire(import.meta.url);
|
|
28
|
+
const pkg = require2("@memrosetta/cli/package.json");
|
|
29
|
+
return pkg.version;
|
|
30
|
+
} catch {
|
|
31
|
+
return "unknown";
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function run(options) {
|
|
36
|
+
const { format, db, noEmbeddings } = options;
|
|
37
|
+
const config = getConfig();
|
|
38
|
+
const dbPath = db ?? config.dbPath ?? getDefaultDbPath();
|
|
39
|
+
const exists = existsSync(dbPath);
|
|
40
|
+
let sizeBytes = 0;
|
|
41
|
+
let sizeFormatted = "0B";
|
|
42
|
+
let memoryCount = 0;
|
|
43
|
+
let userList = [];
|
|
44
|
+
const embeddingsEnabled = !noEmbeddings && config.enableEmbeddings !== false;
|
|
45
|
+
if (exists) {
|
|
46
|
+
const stat = statSync(dbPath);
|
|
47
|
+
sizeBytes = stat.size;
|
|
48
|
+
sizeFormatted = formatSize(sizeBytes);
|
|
49
|
+
try {
|
|
50
|
+
const Database = (await import("better-sqlite3")).default;
|
|
51
|
+
const dbConn = new Database(dbPath);
|
|
52
|
+
dbConn.pragma("journal_mode = WAL");
|
|
53
|
+
const countRow = dbConn.prepare("SELECT COUNT(*) as count FROM memories").get();
|
|
54
|
+
memoryCount = countRow.count;
|
|
55
|
+
const userRows = dbConn.prepare("SELECT DISTINCT user_id FROM memories ORDER BY user_id").all();
|
|
56
|
+
userList = userRows.map((r) => r.user_id);
|
|
57
|
+
dbConn.close();
|
|
58
|
+
} catch {
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const claudeCodeStatus = isClaudeCodeConfigured();
|
|
62
|
+
const cursorStatus = isCursorConfigured();
|
|
63
|
+
const codexStatus = isCodexConfigured();
|
|
64
|
+
const mcpStatus = isGenericMCPConfigured();
|
|
65
|
+
if (format === "text") {
|
|
66
|
+
process.stdout.write("MemRosetta Status\n");
|
|
67
|
+
process.stdout.write(`${"=".repeat(40)}
|
|
68
|
+
|
|
69
|
+
`);
|
|
70
|
+
process.stdout.write(
|
|
71
|
+
`Database: ${dbPath} (${exists ? `exists, ${sizeFormatted}` : "not found"})
|
|
72
|
+
`
|
|
73
|
+
);
|
|
74
|
+
process.stdout.write(`Memories: ${memoryCount}
|
|
75
|
+
`);
|
|
76
|
+
if (userList.length > 0) {
|
|
77
|
+
process.stdout.write(
|
|
78
|
+
`Users: ${userList.length} (${userList.join(", ")})
|
|
79
|
+
`
|
|
80
|
+
);
|
|
81
|
+
} else {
|
|
82
|
+
process.stdout.write("Users: 0\n");
|
|
83
|
+
}
|
|
84
|
+
const embeddingModelLabel = getEmbeddingModelLabel();
|
|
85
|
+
process.stdout.write(
|
|
86
|
+
`Embeddings: ${embeddingsEnabled ? `enabled (${embeddingModelLabel})` : "disabled"}
|
|
87
|
+
`
|
|
88
|
+
);
|
|
89
|
+
process.stdout.write("\nIntegrations:\n");
|
|
90
|
+
process.stdout.write(
|
|
91
|
+
` Claude Code: ${claudeCodeStatus ? "configured (hooks + MCP)" : "not configured"}
|
|
92
|
+
`
|
|
93
|
+
);
|
|
94
|
+
process.stdout.write(
|
|
95
|
+
` Cursor: ${cursorStatus ? "configured (MCP)" : "not configured"}
|
|
96
|
+
`
|
|
97
|
+
);
|
|
98
|
+
process.stdout.write(
|
|
99
|
+
` Codex: ${codexStatus ? "configured (MCP)" : "not configured"}
|
|
100
|
+
`
|
|
101
|
+
);
|
|
102
|
+
process.stdout.write(
|
|
103
|
+
` MCP (generic): ${mcpStatus ? "configured" : "not configured"}
|
|
104
|
+
`
|
|
105
|
+
);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
output(
|
|
109
|
+
{
|
|
110
|
+
version: getVersion(),
|
|
111
|
+
database: {
|
|
112
|
+
path: dbPath,
|
|
113
|
+
exists,
|
|
114
|
+
sizeBytes,
|
|
115
|
+
sizeFormatted
|
|
116
|
+
},
|
|
117
|
+
memories: memoryCount,
|
|
118
|
+
users: userList,
|
|
119
|
+
embeddings: embeddingsEnabled,
|
|
120
|
+
embeddingModel: getEmbeddingModelLabel(),
|
|
121
|
+
embeddingPreset: getConfig().embeddingPreset ?? "en",
|
|
122
|
+
integrations: {
|
|
123
|
+
claudeCode: claudeCodeStatus,
|
|
124
|
+
cursor: cursorStatus,
|
|
125
|
+
codex: codexStatus,
|
|
126
|
+
mcp: mcpStatus
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
format
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
function formatSize(bytes) {
|
|
133
|
+
if (bytes < 1024) return `${bytes}B`;
|
|
134
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;
|
|
135
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
136
|
+
}
|
|
137
|
+
var PRESET_MODEL_LABELS = {
|
|
138
|
+
en: "bge-small-en-v1.5",
|
|
139
|
+
multilingual: "multilingual-e5-small",
|
|
140
|
+
ko: "ko-sroberta-multitask"
|
|
141
|
+
};
|
|
142
|
+
function getEmbeddingModelLabel() {
|
|
143
|
+
const config = getConfig();
|
|
144
|
+
const preset = config.embeddingPreset ?? "en";
|
|
145
|
+
return PRESET_MODEL_LABELS[preset] ?? preset;
|
|
146
|
+
}
|
|
147
|
+
export {
|
|
148
|
+
run
|
|
149
|
+
};
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isClaudeCodeConfigured,
|
|
3
|
+
isCursorConfigured,
|
|
4
|
+
isGenericMCPConfigured
|
|
5
|
+
} from "./chunk-L6S3TXHR.js";
|
|
6
|
+
import {
|
|
7
|
+
getConfig
|
|
8
|
+
} from "./chunk-JGE6RXXH.js";
|
|
9
|
+
import {
|
|
10
|
+
getDefaultDbPath
|
|
11
|
+
} from "./chunk-2ZBEEETG.js";
|
|
12
|
+
import {
|
|
13
|
+
output
|
|
14
|
+
} from "./chunk-ET6TNQOJ.js";
|
|
15
|
+
|
|
16
|
+
// src/commands/status.ts
|
|
17
|
+
import { existsSync, statSync } from "fs";
|
|
18
|
+
async function run(options) {
|
|
19
|
+
const { format, db, noEmbeddings } = options;
|
|
20
|
+
const dbPath = db ?? getDefaultDbPath();
|
|
21
|
+
const exists = existsSync(dbPath);
|
|
22
|
+
let sizeBytes = 0;
|
|
23
|
+
let sizeFormatted = "0B";
|
|
24
|
+
let memoryCount = 0;
|
|
25
|
+
let userList = [];
|
|
26
|
+
const embeddingsEnabled = !noEmbeddings;
|
|
27
|
+
if (exists) {
|
|
28
|
+
const stat = statSync(dbPath);
|
|
29
|
+
sizeBytes = stat.size;
|
|
30
|
+
sizeFormatted = formatSize(sizeBytes);
|
|
31
|
+
try {
|
|
32
|
+
const Database = (await import("better-sqlite3")).default;
|
|
33
|
+
const dbConn = new Database(dbPath);
|
|
34
|
+
dbConn.pragma("journal_mode = WAL");
|
|
35
|
+
const countRow = dbConn.prepare("SELECT COUNT(*) as count FROM memories").get();
|
|
36
|
+
memoryCount = countRow.count;
|
|
37
|
+
const userRows = dbConn.prepare("SELECT DISTINCT user_id FROM memories ORDER BY user_id").all();
|
|
38
|
+
userList = userRows.map((r) => r.user_id);
|
|
39
|
+
dbConn.close();
|
|
40
|
+
} catch {
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const claudeCodeStatus = isClaudeCodeConfigured();
|
|
44
|
+
const cursorStatus = isCursorConfigured();
|
|
45
|
+
const mcpStatus = isGenericMCPConfigured();
|
|
46
|
+
if (format === "text") {
|
|
47
|
+
process.stdout.write("MemRosetta Status\n");
|
|
48
|
+
process.stdout.write(`${"=".repeat(40)}
|
|
49
|
+
|
|
50
|
+
`);
|
|
51
|
+
process.stdout.write(
|
|
52
|
+
`Database: ${dbPath} (${exists ? `exists, ${sizeFormatted}` : "not found"})
|
|
53
|
+
`
|
|
54
|
+
);
|
|
55
|
+
process.stdout.write(`Memories: ${memoryCount}
|
|
56
|
+
`);
|
|
57
|
+
if (userList.length > 0) {
|
|
58
|
+
process.stdout.write(
|
|
59
|
+
`Users: ${userList.length} (${userList.join(", ")})
|
|
60
|
+
`
|
|
61
|
+
);
|
|
62
|
+
} else {
|
|
63
|
+
process.stdout.write("Users: 0\n");
|
|
64
|
+
}
|
|
65
|
+
const embeddingModelLabel = getEmbeddingModelLabel();
|
|
66
|
+
process.stdout.write(
|
|
67
|
+
`Embeddings: ${embeddingsEnabled ? `enabled (${embeddingModelLabel})` : "disabled"}
|
|
68
|
+
`
|
|
69
|
+
);
|
|
70
|
+
process.stdout.write("\nIntegrations:\n");
|
|
71
|
+
process.stdout.write(
|
|
72
|
+
` Claude Code: ${claudeCodeStatus ? "configured (hooks + MCP)" : "not configured"}
|
|
73
|
+
`
|
|
74
|
+
);
|
|
75
|
+
process.stdout.write(
|
|
76
|
+
` Cursor: ${cursorStatus ? "configured (MCP)" : "not configured"}
|
|
77
|
+
`
|
|
78
|
+
);
|
|
79
|
+
process.stdout.write(
|
|
80
|
+
` MCP (generic): ${mcpStatus ? "configured" : "not configured"}
|
|
81
|
+
`
|
|
82
|
+
);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
output(
|
|
86
|
+
{
|
|
87
|
+
version: "0.1.0",
|
|
88
|
+
database: {
|
|
89
|
+
path: dbPath,
|
|
90
|
+
exists,
|
|
91
|
+
sizeBytes,
|
|
92
|
+
sizeFormatted
|
|
93
|
+
},
|
|
94
|
+
memories: memoryCount,
|
|
95
|
+
users: userList,
|
|
96
|
+
embeddings: embeddingsEnabled,
|
|
97
|
+
embeddingModel: getEmbeddingModelLabel(),
|
|
98
|
+
embeddingPreset: getConfig().embeddingPreset ?? "en",
|
|
99
|
+
integrations: {
|
|
100
|
+
claudeCode: claudeCodeStatus,
|
|
101
|
+
cursor: cursorStatus,
|
|
102
|
+
mcp: mcpStatus
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
format
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
function formatSize(bytes) {
|
|
109
|
+
if (bytes < 1024) return `${bytes}B`;
|
|
110
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;
|
|
111
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
112
|
+
}
|
|
113
|
+
var PRESET_MODEL_LABELS = {
|
|
114
|
+
en: "bge-small-en-v1.5",
|
|
115
|
+
multilingual: "multilingual-e5-small",
|
|
116
|
+
ko: "ko-sroberta-multitask"
|
|
117
|
+
};
|
|
118
|
+
function getEmbeddingModelLabel() {
|
|
119
|
+
const config = getConfig();
|
|
120
|
+
const preset = config.embeddingPreset ?? "en";
|
|
121
|
+
return PRESET_MODEL_LABELS[preset] ?? preset;
|
|
122
|
+
}
|
|
123
|
+
export {
|
|
124
|
+
run
|
|
125
|
+
};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isClaudeCodeConfigured,
|
|
3
|
+
isCursorConfigured,
|
|
4
|
+
isGenericMCPConfigured
|
|
5
|
+
} from "./chunk-JPBSMZ26.js";
|
|
6
|
+
import {
|
|
7
|
+
getConfig
|
|
8
|
+
} from "./chunk-TU5EHSDE.js";
|
|
9
|
+
import {
|
|
10
|
+
getDefaultDbPath
|
|
11
|
+
} from "./chunk-2ZBEEETG.js";
|
|
12
|
+
import {
|
|
13
|
+
output
|
|
14
|
+
} from "./chunk-ET6TNQOJ.js";
|
|
15
|
+
|
|
16
|
+
// src/commands/status.ts
|
|
17
|
+
import { existsSync, statSync } from "fs";
|
|
18
|
+
import { createRequire } from "module";
|
|
19
|
+
function getVersion() {
|
|
20
|
+
const require2 = createRequire(import.meta.url);
|
|
21
|
+
const pkg = require2("../../package.json");
|
|
22
|
+
return pkg.version;
|
|
23
|
+
}
|
|
24
|
+
async function run(options) {
|
|
25
|
+
const { format, db, noEmbeddings } = options;
|
|
26
|
+
const dbPath = db ?? getDefaultDbPath();
|
|
27
|
+
const exists = existsSync(dbPath);
|
|
28
|
+
let sizeBytes = 0;
|
|
29
|
+
let sizeFormatted = "0B";
|
|
30
|
+
let memoryCount = 0;
|
|
31
|
+
let userList = [];
|
|
32
|
+
const embeddingsEnabled = !noEmbeddings;
|
|
33
|
+
if (exists) {
|
|
34
|
+
const stat = statSync(dbPath);
|
|
35
|
+
sizeBytes = stat.size;
|
|
36
|
+
sizeFormatted = formatSize(sizeBytes);
|
|
37
|
+
try {
|
|
38
|
+
const Database = (await import("better-sqlite3")).default;
|
|
39
|
+
const dbConn = new Database(dbPath);
|
|
40
|
+
dbConn.pragma("journal_mode = WAL");
|
|
41
|
+
const countRow = dbConn.prepare("SELECT COUNT(*) as count FROM memories").get();
|
|
42
|
+
memoryCount = countRow.count;
|
|
43
|
+
const userRows = dbConn.prepare("SELECT DISTINCT user_id FROM memories ORDER BY user_id").all();
|
|
44
|
+
userList = userRows.map((r) => r.user_id);
|
|
45
|
+
dbConn.close();
|
|
46
|
+
} catch {
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const claudeCodeStatus = isClaudeCodeConfigured();
|
|
50
|
+
const cursorStatus = isCursorConfigured();
|
|
51
|
+
const mcpStatus = isGenericMCPConfigured();
|
|
52
|
+
if (format === "text") {
|
|
53
|
+
process.stdout.write("MemRosetta Status\n");
|
|
54
|
+
process.stdout.write(`${"=".repeat(40)}
|
|
55
|
+
|
|
56
|
+
`);
|
|
57
|
+
process.stdout.write(
|
|
58
|
+
`Database: ${dbPath} (${exists ? `exists, ${sizeFormatted}` : "not found"})
|
|
59
|
+
`
|
|
60
|
+
);
|
|
61
|
+
process.stdout.write(`Memories: ${memoryCount}
|
|
62
|
+
`);
|
|
63
|
+
if (userList.length > 0) {
|
|
64
|
+
process.stdout.write(
|
|
65
|
+
`Users: ${userList.length} (${userList.join(", ")})
|
|
66
|
+
`
|
|
67
|
+
);
|
|
68
|
+
} else {
|
|
69
|
+
process.stdout.write("Users: 0\n");
|
|
70
|
+
}
|
|
71
|
+
const embeddingModelLabel = getEmbeddingModelLabel();
|
|
72
|
+
process.stdout.write(
|
|
73
|
+
`Embeddings: ${embeddingsEnabled ? `enabled (${embeddingModelLabel})` : "disabled"}
|
|
74
|
+
`
|
|
75
|
+
);
|
|
76
|
+
process.stdout.write("\nIntegrations:\n");
|
|
77
|
+
process.stdout.write(
|
|
78
|
+
` Claude Code: ${claudeCodeStatus ? "configured (hooks + MCP)" : "not configured"}
|
|
79
|
+
`
|
|
80
|
+
);
|
|
81
|
+
process.stdout.write(
|
|
82
|
+
` Cursor: ${cursorStatus ? "configured (MCP)" : "not configured"}
|
|
83
|
+
`
|
|
84
|
+
);
|
|
85
|
+
process.stdout.write(
|
|
86
|
+
` MCP (generic): ${mcpStatus ? "configured" : "not configured"}
|
|
87
|
+
`
|
|
88
|
+
);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
output(
|
|
92
|
+
{
|
|
93
|
+
version: getVersion(),
|
|
94
|
+
database: {
|
|
95
|
+
path: dbPath,
|
|
96
|
+
exists,
|
|
97
|
+
sizeBytes,
|
|
98
|
+
sizeFormatted
|
|
99
|
+
},
|
|
100
|
+
memories: memoryCount,
|
|
101
|
+
users: userList,
|
|
102
|
+
embeddings: embeddingsEnabled,
|
|
103
|
+
embeddingModel: getEmbeddingModelLabel(),
|
|
104
|
+
embeddingPreset: getConfig().embeddingPreset ?? "en",
|
|
105
|
+
integrations: {
|
|
106
|
+
claudeCode: claudeCodeStatus,
|
|
107
|
+
cursor: cursorStatus,
|
|
108
|
+
mcp: mcpStatus
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
format
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
function formatSize(bytes) {
|
|
115
|
+
if (bytes < 1024) return `${bytes}B`;
|
|
116
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;
|
|
117
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
118
|
+
}
|
|
119
|
+
var PRESET_MODEL_LABELS = {
|
|
120
|
+
en: "bge-small-en-v1.5",
|
|
121
|
+
multilingual: "multilingual-e5-small",
|
|
122
|
+
ko: "ko-sroberta-multitask"
|
|
123
|
+
};
|
|
124
|
+
function getEmbeddingModelLabel() {
|
|
125
|
+
const config = getConfig();
|
|
126
|
+
const preset = config.embeddingPreset ?? "en";
|
|
127
|
+
return PRESET_MODEL_LABELS[preset] ?? preset;
|
|
128
|
+
}
|
|
129
|
+
export {
|
|
130
|
+
run
|
|
131
|
+
};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isClaudeCodeConfigured,
|
|
3
|
+
isCursorConfigured,
|
|
4
|
+
isGenericMCPConfigured
|
|
5
|
+
} from "./chunk-BGXZ3MDD.js";
|
|
6
|
+
import {
|
|
7
|
+
getConfig
|
|
8
|
+
} from "./chunk-TU5EHSDE.js";
|
|
9
|
+
import {
|
|
10
|
+
getDefaultDbPath
|
|
11
|
+
} from "./chunk-2ZBEEETG.js";
|
|
12
|
+
import {
|
|
13
|
+
output
|
|
14
|
+
} from "./chunk-ET6TNQOJ.js";
|
|
15
|
+
|
|
16
|
+
// src/commands/status.ts
|
|
17
|
+
import { existsSync, statSync } from "fs";
|
|
18
|
+
import { createRequire } from "module";
|
|
19
|
+
function getVersion() {
|
|
20
|
+
const require2 = createRequire(import.meta.url);
|
|
21
|
+
const pkg = require2("../../package.json");
|
|
22
|
+
return pkg.version;
|
|
23
|
+
}
|
|
24
|
+
async function run(options) {
|
|
25
|
+
const { format, db, noEmbeddings } = options;
|
|
26
|
+
const dbPath = db ?? getDefaultDbPath();
|
|
27
|
+
const exists = existsSync(dbPath);
|
|
28
|
+
let sizeBytes = 0;
|
|
29
|
+
let sizeFormatted = "0B";
|
|
30
|
+
let memoryCount = 0;
|
|
31
|
+
let userList = [];
|
|
32
|
+
const embeddingsEnabled = !noEmbeddings;
|
|
33
|
+
if (exists) {
|
|
34
|
+
const stat = statSync(dbPath);
|
|
35
|
+
sizeBytes = stat.size;
|
|
36
|
+
sizeFormatted = formatSize(sizeBytes);
|
|
37
|
+
try {
|
|
38
|
+
const Database = (await import("better-sqlite3")).default;
|
|
39
|
+
const dbConn = new Database(dbPath);
|
|
40
|
+
dbConn.pragma("journal_mode = WAL");
|
|
41
|
+
const countRow = dbConn.prepare("SELECT COUNT(*) as count FROM memories").get();
|
|
42
|
+
memoryCount = countRow.count;
|
|
43
|
+
const userRows = dbConn.prepare("SELECT DISTINCT user_id FROM memories ORDER BY user_id").all();
|
|
44
|
+
userList = userRows.map((r) => r.user_id);
|
|
45
|
+
dbConn.close();
|
|
46
|
+
} catch {
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const claudeCodeStatus = isClaudeCodeConfigured();
|
|
50
|
+
const cursorStatus = isCursorConfigured();
|
|
51
|
+
const mcpStatus = isGenericMCPConfigured();
|
|
52
|
+
if (format === "text") {
|
|
53
|
+
process.stdout.write("MemRosetta Status\n");
|
|
54
|
+
process.stdout.write(`${"=".repeat(40)}
|
|
55
|
+
|
|
56
|
+
`);
|
|
57
|
+
process.stdout.write(
|
|
58
|
+
`Database: ${dbPath} (${exists ? `exists, ${sizeFormatted}` : "not found"})
|
|
59
|
+
`
|
|
60
|
+
);
|
|
61
|
+
process.stdout.write(`Memories: ${memoryCount}
|
|
62
|
+
`);
|
|
63
|
+
if (userList.length > 0) {
|
|
64
|
+
process.stdout.write(
|
|
65
|
+
`Users: ${userList.length} (${userList.join(", ")})
|
|
66
|
+
`
|
|
67
|
+
);
|
|
68
|
+
} else {
|
|
69
|
+
process.stdout.write("Users: 0\n");
|
|
70
|
+
}
|
|
71
|
+
const embeddingModelLabel = getEmbeddingModelLabel();
|
|
72
|
+
process.stdout.write(
|
|
73
|
+
`Embeddings: ${embeddingsEnabled ? `enabled (${embeddingModelLabel})` : "disabled"}
|
|
74
|
+
`
|
|
75
|
+
);
|
|
76
|
+
process.stdout.write("\nIntegrations:\n");
|
|
77
|
+
process.stdout.write(
|
|
78
|
+
` Claude Code: ${claudeCodeStatus ? "configured (hooks + MCP)" : "not configured"}
|
|
79
|
+
`
|
|
80
|
+
);
|
|
81
|
+
process.stdout.write(
|
|
82
|
+
` Cursor: ${cursorStatus ? "configured (MCP)" : "not configured"}
|
|
83
|
+
`
|
|
84
|
+
);
|
|
85
|
+
process.stdout.write(
|
|
86
|
+
` MCP (generic): ${mcpStatus ? "configured" : "not configured"}
|
|
87
|
+
`
|
|
88
|
+
);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
output(
|
|
92
|
+
{
|
|
93
|
+
version: getVersion(),
|
|
94
|
+
database: {
|
|
95
|
+
path: dbPath,
|
|
96
|
+
exists,
|
|
97
|
+
sizeBytes,
|
|
98
|
+
sizeFormatted
|
|
99
|
+
},
|
|
100
|
+
memories: memoryCount,
|
|
101
|
+
users: userList,
|
|
102
|
+
embeddings: embeddingsEnabled,
|
|
103
|
+
embeddingModel: getEmbeddingModelLabel(),
|
|
104
|
+
embeddingPreset: getConfig().embeddingPreset ?? "en",
|
|
105
|
+
integrations: {
|
|
106
|
+
claudeCode: claudeCodeStatus,
|
|
107
|
+
cursor: cursorStatus,
|
|
108
|
+
mcp: mcpStatus
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
format
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
function formatSize(bytes) {
|
|
115
|
+
if (bytes < 1024) return `${bytes}B`;
|
|
116
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;
|
|
117
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
118
|
+
}
|
|
119
|
+
var PRESET_MODEL_LABELS = {
|
|
120
|
+
en: "bge-small-en-v1.5",
|
|
121
|
+
multilingual: "multilingual-e5-small",
|
|
122
|
+
ko: "ko-sroberta-multitask"
|
|
123
|
+
};
|
|
124
|
+
function getEmbeddingModelLabel() {
|
|
125
|
+
const config = getConfig();
|
|
126
|
+
const preset = config.embeddingPreset ?? "en";
|
|
127
|
+
return PRESET_MODEL_LABELS[preset] ?? preset;
|
|
128
|
+
}
|
|
129
|
+
export {
|
|
130
|
+
run
|
|
131
|
+
};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isClaudeCodeConfigured,
|
|
3
|
+
isCursorConfigured,
|
|
4
|
+
isGenericMCPConfigured
|
|
5
|
+
} from "./chunk-IM6H35RB.js";
|
|
6
|
+
import {
|
|
7
|
+
getConfig
|
|
8
|
+
} from "./chunk-TU5EHSDE.js";
|
|
9
|
+
import {
|
|
10
|
+
getDefaultDbPath
|
|
11
|
+
} from "./chunk-2ZBEEETG.js";
|
|
12
|
+
import {
|
|
13
|
+
output
|
|
14
|
+
} from "./chunk-ET6TNQOJ.js";
|
|
15
|
+
|
|
16
|
+
// src/commands/status.ts
|
|
17
|
+
import { existsSync, statSync } from "fs";
|
|
18
|
+
import { createRequire } from "module";
|
|
19
|
+
function getVersion() {
|
|
20
|
+
const require2 = createRequire(import.meta.url);
|
|
21
|
+
const pkg = require2("../../package.json");
|
|
22
|
+
return pkg.version;
|
|
23
|
+
}
|
|
24
|
+
async function run(options) {
|
|
25
|
+
const { format, db, noEmbeddings } = options;
|
|
26
|
+
const dbPath = db ?? getDefaultDbPath();
|
|
27
|
+
const exists = existsSync(dbPath);
|
|
28
|
+
let sizeBytes = 0;
|
|
29
|
+
let sizeFormatted = "0B";
|
|
30
|
+
let memoryCount = 0;
|
|
31
|
+
let userList = [];
|
|
32
|
+
const embeddingsEnabled = !noEmbeddings;
|
|
33
|
+
if (exists) {
|
|
34
|
+
const stat = statSync(dbPath);
|
|
35
|
+
sizeBytes = stat.size;
|
|
36
|
+
sizeFormatted = formatSize(sizeBytes);
|
|
37
|
+
try {
|
|
38
|
+
const Database = (await import("better-sqlite3")).default;
|
|
39
|
+
const dbConn = new Database(dbPath);
|
|
40
|
+
dbConn.pragma("journal_mode = WAL");
|
|
41
|
+
const countRow = dbConn.prepare("SELECT COUNT(*) as count FROM memories").get();
|
|
42
|
+
memoryCount = countRow.count;
|
|
43
|
+
const userRows = dbConn.prepare("SELECT DISTINCT user_id FROM memories ORDER BY user_id").all();
|
|
44
|
+
userList = userRows.map((r) => r.user_id);
|
|
45
|
+
dbConn.close();
|
|
46
|
+
} catch {
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const claudeCodeStatus = isClaudeCodeConfigured();
|
|
50
|
+
const cursorStatus = isCursorConfigured();
|
|
51
|
+
const mcpStatus = isGenericMCPConfigured();
|
|
52
|
+
if (format === "text") {
|
|
53
|
+
process.stdout.write("MemRosetta Status\n");
|
|
54
|
+
process.stdout.write(`${"=".repeat(40)}
|
|
55
|
+
|
|
56
|
+
`);
|
|
57
|
+
process.stdout.write(
|
|
58
|
+
`Database: ${dbPath} (${exists ? `exists, ${sizeFormatted}` : "not found"})
|
|
59
|
+
`
|
|
60
|
+
);
|
|
61
|
+
process.stdout.write(`Memories: ${memoryCount}
|
|
62
|
+
`);
|
|
63
|
+
if (userList.length > 0) {
|
|
64
|
+
process.stdout.write(
|
|
65
|
+
`Users: ${userList.length} (${userList.join(", ")})
|
|
66
|
+
`
|
|
67
|
+
);
|
|
68
|
+
} else {
|
|
69
|
+
process.stdout.write("Users: 0\n");
|
|
70
|
+
}
|
|
71
|
+
const embeddingModelLabel = getEmbeddingModelLabel();
|
|
72
|
+
process.stdout.write(
|
|
73
|
+
`Embeddings: ${embeddingsEnabled ? `enabled (${embeddingModelLabel})` : "disabled"}
|
|
74
|
+
`
|
|
75
|
+
);
|
|
76
|
+
process.stdout.write("\nIntegrations:\n");
|
|
77
|
+
process.stdout.write(
|
|
78
|
+
` Claude Code: ${claudeCodeStatus ? "configured (hooks + MCP)" : "not configured"}
|
|
79
|
+
`
|
|
80
|
+
);
|
|
81
|
+
process.stdout.write(
|
|
82
|
+
` Cursor: ${cursorStatus ? "configured (MCP)" : "not configured"}
|
|
83
|
+
`
|
|
84
|
+
);
|
|
85
|
+
process.stdout.write(
|
|
86
|
+
` MCP (generic): ${mcpStatus ? "configured" : "not configured"}
|
|
87
|
+
`
|
|
88
|
+
);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
output(
|
|
92
|
+
{
|
|
93
|
+
version: getVersion(),
|
|
94
|
+
database: {
|
|
95
|
+
path: dbPath,
|
|
96
|
+
exists,
|
|
97
|
+
sizeBytes,
|
|
98
|
+
sizeFormatted
|
|
99
|
+
},
|
|
100
|
+
memories: memoryCount,
|
|
101
|
+
users: userList,
|
|
102
|
+
embeddings: embeddingsEnabled,
|
|
103
|
+
embeddingModel: getEmbeddingModelLabel(),
|
|
104
|
+
embeddingPreset: getConfig().embeddingPreset ?? "en",
|
|
105
|
+
integrations: {
|
|
106
|
+
claudeCode: claudeCodeStatus,
|
|
107
|
+
cursor: cursorStatus,
|
|
108
|
+
mcp: mcpStatus
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
format
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
function formatSize(bytes) {
|
|
115
|
+
if (bytes < 1024) return `${bytes}B`;
|
|
116
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;
|
|
117
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
118
|
+
}
|
|
119
|
+
var PRESET_MODEL_LABELS = {
|
|
120
|
+
en: "bge-small-en-v1.5",
|
|
121
|
+
multilingual: "multilingual-e5-small",
|
|
122
|
+
ko: "ko-sroberta-multitask"
|
|
123
|
+
};
|
|
124
|
+
function getEmbeddingModelLabel() {
|
|
125
|
+
const config = getConfig();
|
|
126
|
+
const preset = config.embeddingPreset ?? "en";
|
|
127
|
+
return PRESET_MODEL_LABELS[preset] ?? preset;
|
|
128
|
+
}
|
|
129
|
+
export {
|
|
130
|
+
run
|
|
131
|
+
};
|