@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.
Files changed (149) hide show
  1. package/dist/chunk-356QK7TK.js +533 -0
  2. package/dist/chunk-3LSITXZ4.js +69 -0
  3. package/dist/chunk-6IOTBMUB.js +570 -0
  4. package/dist/chunk-72IW6TAV.js +59 -0
  5. package/dist/chunk-BGXZ3MDD.js +341 -0
  6. package/dist/chunk-EZVP3OY7.js +52 -0
  7. package/dist/chunk-FCHV2JMZ.js +347 -0
  8. package/dist/{chunk-F7ZMZ6HN.js → chunk-HXZ7MAT6.js} +2 -1
  9. package/dist/chunk-IM6H35RB.js +341 -0
  10. package/dist/chunk-JGE6RXXH.js +48 -0
  11. package/dist/chunk-JPBSMZ26.js +343 -0
  12. package/dist/chunk-KSKRPUZZ.js +43 -0
  13. package/dist/chunk-L6S3TXHR.js +326 -0
  14. package/dist/chunk-MISLIVUL.js +70 -0
  15. package/dist/chunk-NU5ZJJXP.js +63 -0
  16. package/dist/{chunk-326TFH4F.js → chunk-OCCU5YEG.js} +11 -42
  17. package/dist/chunk-PW52BB6L.js +61 -0
  18. package/dist/chunk-RABFL4EN.js +528 -0
  19. package/dist/chunk-RDUU53MG.js +343 -0
  20. package/dist/chunk-RYPYJJ2K.js +70 -0
  21. package/dist/chunk-SEPYQK3J.js +60 -0
  22. package/dist/{chunk-CATBN3ZT.js → chunk-TQOH7ZXN.js} +6 -18
  23. package/dist/chunk-Y6NH6K27.js +209 -0
  24. package/dist/{clear-MTL4CQM3.js → clear-47OFIDME.js} +10 -5
  25. package/dist/clear-4RQW6SYW.js +39 -0
  26. package/dist/clear-5SZVGYBX.js +39 -0
  27. package/dist/clear-BYRCL5ZN.js +39 -0
  28. package/dist/clear-ETQ7XFMV.js +39 -0
  29. package/dist/clear-P6H55OKZ.js +39 -0
  30. package/dist/clear-T3TWJQKL.js +39 -0
  31. package/dist/{compress-Z46R4N4M.js → compress-HDNYPXZ3.js} +10 -5
  32. package/dist/compress-S6MS4QW7.js +33 -0
  33. package/dist/compress-SEFTKZMU.js +33 -0
  34. package/dist/compress-TVWXLW3L.js +33 -0
  35. package/dist/compress-VLYNZ5BQ.js +33 -0
  36. package/dist/compress-YNY6YNFU.js +33 -0
  37. package/dist/compress-ZXWRRGHT.js +33 -0
  38. package/dist/{count-4TZ3C524.js → count-26AGY5XL.js} +10 -5
  39. package/dist/count-AMSEVDWR.js +24 -0
  40. package/dist/count-AVG5ZIRW.js +24 -0
  41. package/dist/count-CJIYYJKN.js +24 -0
  42. package/dist/count-KFFD4ML7.js +24 -0
  43. package/dist/count-UUAD3GEJ.js +24 -0
  44. package/dist/count-Z67KBEMV.js +24 -0
  45. package/dist/feedback-QDOWDWHM.js +40 -0
  46. package/dist/feedback-XGBKFQXC.js +40 -0
  47. package/dist/{get-B6AL75EW.js → get-75MGS4LN.js} +4 -2
  48. package/dist/get-NY5H3MUA.js +30 -0
  49. package/dist/hooks/on-prompt.js +2 -2
  50. package/dist/hooks/on-stop.js +2 -2
  51. package/dist/index.js +35 -18
  52. package/dist/ingest-A3BAI2C4.js +95 -0
  53. package/dist/ingest-E7QDD5NY.js +95 -0
  54. package/dist/ingest-GSJMWDV5.js +95 -0
  55. package/dist/ingest-IGI7RXR4.js +95 -0
  56. package/dist/ingest-JPIHSH7W.js +95 -0
  57. package/dist/ingest-QGXA4Y6C.js +95 -0
  58. package/dist/ingest-TZEVA25F.js +95 -0
  59. package/dist/init-2PRW64KV.js +146 -0
  60. package/dist/init-C3CONL23.js +146 -0
  61. package/dist/init-DAKOWQSW.js +169 -0
  62. package/dist/init-FYPMJDRN.js +146 -0
  63. package/dist/{init-C335O4TX.js → init-GCT4XEI6.js} +2 -2
  64. package/dist/init-GRVRJ6RO.js +205 -0
  65. package/dist/init-HBEIXY3N.js +146 -0
  66. package/dist/init-LK4UQISR.js +205 -0
  67. package/dist/init-MISGIVCC.js +146 -0
  68. package/dist/init-MNM4TXXJ.js +146 -0
  69. package/dist/{init-YAGOXYWG.js → init-OQW3KXTR.js} +2 -2
  70. package/dist/init-SIEKAILM.js +113 -0
  71. package/dist/init-TM7GTHTJ.js +146 -0
  72. package/dist/init-VYWOSISP.js +146 -0
  73. package/dist/init-WCL7FZOJ.js +182 -0
  74. package/dist/init-ZLUDTJAP.js +182 -0
  75. package/dist/invalidate-BY5VNFSE.js +25 -0
  76. package/dist/{invalidate-C54IVIGL.js → invalidate-D2O4VWZU.js} +4 -2
  77. package/dist/{maintain-ZPHG47YY.js → maintain-B65WIMGJ.js} +10 -5
  78. package/dist/maintain-EWOU3DGT.js +37 -0
  79. package/dist/maintain-FELKLG7O.js +37 -0
  80. package/dist/maintain-SGM56XKE.js +37 -0
  81. package/dist/maintain-VX2VWB2L.js +37 -0
  82. package/dist/maintain-WRRDXEG3.js +37 -0
  83. package/dist/maintain-XTCSOQBU.js +37 -0
  84. package/dist/{relate-R6DQUJCQ.js → relate-2QMG5H2I.js} +5 -3
  85. package/dist/relate-C22YYJZT.js +46 -0
  86. package/dist/relate-L5464WV5.js +47 -0
  87. package/dist/relate-SGZLG7JU.js +47 -0
  88. package/dist/relate-V5RYMJJ5.js +47 -0
  89. package/dist/relate-W4BXPFJA.js +46 -0
  90. package/dist/reset-45EUG44R.js +95 -0
  91. package/dist/reset-5NDHFUC3.js +95 -0
  92. package/dist/reset-C7I3LA5M.js +95 -0
  93. package/dist/reset-CYY4KYAB.js +129 -0
  94. package/dist/reset-F6F2R6BR.js +95 -0
  95. package/dist/reset-K3K4K5CT.js +95 -0
  96. package/dist/reset-K4WZJ4WU.js +95 -0
  97. package/dist/{reset-P63V46RN.js → reset-NNQQJN6L.js} +2 -2
  98. package/dist/{reset-GPV46GSD.js → reset-P5FXLI4E.js} +2 -2
  99. package/dist/reset-SORHIEKY.js +112 -0
  100. package/dist/reset-SVJMWYAK.js +95 -0
  101. package/dist/reset-W22RJGYZ.js +112 -0
  102. package/dist/reset-W3QVA632.js +95 -0
  103. package/dist/reset-WYEU6XJQ.js +112 -0
  104. package/dist/{search-YEYKOEXC.js → search-2SU5WQYK.js} +9 -4
  105. package/dist/search-5EE3XB2R.js +48 -0
  106. package/dist/search-BJ2YV5IS.js +48 -0
  107. package/dist/search-L6P3XY47.js +48 -0
  108. package/dist/search-PT4POELX.js +48 -0
  109. package/dist/search-UA7Y55LQ.js +48 -0
  110. package/dist/search-ZKLRJXFT.js +48 -0
  111. package/dist/status-3XVXJF7M.js +170 -0
  112. package/dist/status-4THJLSJL.js +131 -0
  113. package/dist/status-4UYY7TOE.js +131 -0
  114. package/dist/status-7G3RMR6A.js +139 -0
  115. package/dist/status-7M4TJVDH.js +170 -0
  116. package/dist/status-7MEEKEC2.js +131 -0
  117. package/dist/status-BQL4VJ6Y.js +149 -0
  118. package/dist/status-BTEVCZ5K.js +125 -0
  119. package/dist/status-F3NZGGPH.js +131 -0
  120. package/dist/status-GQMXOMRN.js +131 -0
  121. package/dist/status-HJGTMHTD.js +131 -0
  122. package/dist/{status-AMMF6QGI.js → status-IEKR6SSH.js} +35 -6
  123. package/dist/status-JJGVWESB.js +139 -0
  124. package/dist/status-LDVRVYZH.js +131 -0
  125. package/dist/{status-XNQRRFWF.js → status-TATIX3R6.js} +1 -1
  126. package/dist/{status-PYD6U7U7.js → status-TVY32MZD.js} +10 -3
  127. package/dist/{store-ZMERYHI6.js → store-2USP33HQ.js} +12 -7
  128. package/dist/store-6D5OJ2DX.js +91 -0
  129. package/dist/store-I4JNJWAZ.js +91 -0
  130. package/dist/store-R4LXYE57.js +91 -0
  131. package/dist/store-UMR2NOT7.js +91 -0
  132. package/dist/store-XCFYGYBE.js +91 -0
  133. package/dist/store-ZDI5AH4M.js +91 -0
  134. package/dist/sync-643GTA5X.js +319 -0
  135. package/dist/sync-BPVMHW34.js +319 -0
  136. package/dist/sync-OZQLBYT2.js +317 -0
  137. package/dist/sync-WURX2HJZ.js +321 -0
  138. package/dist/update-XJLMXCDZ.js +36 -0
  139. package/dist/{working-memory-2RRQFX4Q.js → working-memory-2U33JHJB.js} +10 -6
  140. package/dist/working-memory-35TMFU3P.js +53 -0
  141. package/dist/working-memory-IBWGIXLW.js +53 -0
  142. package/dist/working-memory-RZE3GYQZ.js +53 -0
  143. package/dist/working-memory-UYVEJJYW.js +53 -0
  144. package/dist/working-memory-VP6L2QV6.js +53 -0
  145. package/dist/working-memory-WGB5DZ3B.js +53 -0
  146. package/package.json +5 -4
  147. package/dist/chunk-MWLPPS7U.js +0 -133
  148. package/dist/ingest-ZOR3XSAE.js +0 -152
  149. package/dist/init-7VFBCA4O.js +0 -26
@@ -0,0 +1,95 @@
1
+ import {
2
+ removeClaudeCodeHooks,
3
+ removeClaudeMdSection,
4
+ removeCursorMCP,
5
+ removeCursorRulesSection,
6
+ removeGenericMCP
7
+ } from "./chunk-JPBSMZ26.js";
8
+ import {
9
+ hasFlag
10
+ } from "./chunk-TGGGIJC4.js";
11
+ import {
12
+ output
13
+ } from "./chunk-ET6TNQOJ.js";
14
+
15
+ // src/commands/reset.ts
16
+ async function run(options) {
17
+ const { args, format } = options;
18
+ const wantClaudeCode = hasFlag(args, "--claude-code");
19
+ const wantCursor = hasFlag(args, "--cursor");
20
+ const wantMCP = hasFlag(args, "--mcp");
21
+ const wantAll = hasFlag(args, "--all");
22
+ const noFlags = !wantClaudeCode && !wantCursor && !wantMCP && !wantAll;
23
+ if (noFlags) {
24
+ const msg = "Usage: memrosetta reset [--claude-code] [--cursor] [--mcp] [--all]\n\nFlags:\n --claude-code Remove Claude Code hooks, MCP, and CLAUDE.md section\n --cursor Remove Cursor MCP configuration\n --mcp Remove generic MCP configuration (~/.mcp.json)\n --all Remove all integrations\n";
25
+ if (format === "text") {
26
+ process.stdout.write(msg);
27
+ } else {
28
+ output({ error: "No flags specified. Use --claude-code, --cursor, --mcp, or --all." }, format);
29
+ }
30
+ return;
31
+ }
32
+ const result = {
33
+ removed: {
34
+ claudeCodeHooks: false,
35
+ claudeMd: false,
36
+ mcp: false,
37
+ cursor: false,
38
+ cursorRules: false
39
+ }
40
+ };
41
+ if (wantClaudeCode || wantAll) {
42
+ const hooksRemoved = removeClaudeCodeHooks();
43
+ const mdRemoved = removeClaudeMdSection();
44
+ const mcpRemoved = removeGenericMCP();
45
+ result.removed.claudeCodeHooks = hooksRemoved;
46
+ result.removed.claudeMd = mdRemoved;
47
+ if (!wantMCP) {
48
+ result.removed.mcp = mcpRemoved;
49
+ }
50
+ }
51
+ if (wantCursor || wantAll) {
52
+ const removed = removeCursorMCP();
53
+ result.removed.cursor = removed;
54
+ const rulesRemoved = removeCursorRulesSection();
55
+ result.removed.cursorRules = rulesRemoved;
56
+ }
57
+ if (wantMCP || wantAll) {
58
+ const removed = removeGenericMCP();
59
+ result.removed.mcp = removed;
60
+ }
61
+ if (format === "text") {
62
+ printTextOutput(result);
63
+ return;
64
+ }
65
+ output(result, format);
66
+ }
67
+ function printTextOutput(result) {
68
+ const w = (s) => process.stdout.write(s);
69
+ const removed = result.removed;
70
+ if (removed.claudeCodeHooks) {
71
+ w("Removed Claude Code hooks from ~/.claude/settings.json\n");
72
+ }
73
+ if (removed.claudeMd) {
74
+ w("Removed MemRosetta section from ~/.claude/CLAUDE.md\n");
75
+ }
76
+ if (removed.mcp) {
77
+ w("Removed MCP server from ~/.mcp.json\n");
78
+ }
79
+ if (removed.cursor) {
80
+ w("Removed Cursor MCP from ~/.cursor/mcp.json\n");
81
+ }
82
+ if (removed.cursorRules) {
83
+ w("Removed MemRosetta section from ~/.cursorrules\n");
84
+ }
85
+ const anyRemoved = removed.claudeCodeHooks || removed.claudeMd || removed.mcp || removed.cursor || removed.cursorRules;
86
+ if (!anyRemoved) {
87
+ w("Nothing to remove (no integrations were configured).\n");
88
+ }
89
+ w(
90
+ "\nNote: ~/.memrosetta/ directory preserved. Delete manually if needed:\n rm -rf ~/.memrosetta\n"
91
+ );
92
+ }
93
+ export {
94
+ run
95
+ };
@@ -0,0 +1,112 @@
1
+ import {
2
+ removeAgentsMdSection,
3
+ removeClaudeCodeHooks,
4
+ removeClaudeMdSection,
5
+ removeCodexMCP,
6
+ removeCursorMCP,
7
+ removeCursorRulesSection,
8
+ removeGenericMCP
9
+ } from "./chunk-OCCU5YEG.js";
10
+ import {
11
+ hasFlag
12
+ } from "./chunk-TGGGIJC4.js";
13
+ import {
14
+ output
15
+ } from "./chunk-ET6TNQOJ.js";
16
+
17
+ // src/commands/reset.ts
18
+ async function run(options) {
19
+ const { args, format } = options;
20
+ const wantClaudeCode = hasFlag(args, "--claude-code");
21
+ const wantCursor = hasFlag(args, "--cursor");
22
+ const wantCodex = hasFlag(args, "--codex");
23
+ const wantMCP = hasFlag(args, "--mcp");
24
+ const wantAll = hasFlag(args, "--all");
25
+ const noFlags = !wantClaudeCode && !wantCursor && !wantCodex && !wantMCP && !wantAll;
26
+ if (noFlags) {
27
+ const msg = "Usage: memrosetta reset [--claude-code] [--cursor] [--codex] [--mcp] [--all]\n\nFlags:\n --claude-code Remove Claude Code hooks, MCP, and CLAUDE.md section\n --cursor Remove Cursor MCP configuration\n --codex Remove Codex MCP configuration and AGENTS.md section\n --mcp Remove generic MCP configuration (~/.mcp.json)\n --all Remove all integrations\n";
28
+ if (format === "text") {
29
+ process.stdout.write(msg);
30
+ } else {
31
+ output({ error: "No flags specified. Use --claude-code, --cursor, --mcp, or --all." }, format);
32
+ }
33
+ return;
34
+ }
35
+ const result = {
36
+ removed: {
37
+ claudeCodeHooks: false,
38
+ claudeMd: false,
39
+ mcp: false,
40
+ cursor: false,
41
+ cursorRules: false,
42
+ codex: false,
43
+ agentsMd: false
44
+ }
45
+ };
46
+ if (wantClaudeCode || wantAll) {
47
+ const hooksRemoved = removeClaudeCodeHooks();
48
+ const mdRemoved = removeClaudeMdSection();
49
+ const mcpRemoved = removeGenericMCP();
50
+ result.removed.claudeCodeHooks = hooksRemoved;
51
+ result.removed.claudeMd = mdRemoved;
52
+ if (!wantMCP) {
53
+ result.removed.mcp = mcpRemoved;
54
+ }
55
+ }
56
+ if (wantCursor || wantAll) {
57
+ const removed = removeCursorMCP();
58
+ result.removed.cursor = removed;
59
+ const rulesRemoved = removeCursorRulesSection();
60
+ result.removed.cursorRules = rulesRemoved;
61
+ }
62
+ if (wantCodex || wantAll) {
63
+ const removed = removeCodexMCP();
64
+ result.removed.codex = removed;
65
+ const mdRemoved = removeAgentsMdSection();
66
+ result.removed.agentsMd = mdRemoved;
67
+ }
68
+ if (wantMCP || wantAll) {
69
+ const removed = removeGenericMCP();
70
+ result.removed.mcp = removed;
71
+ }
72
+ if (format === "text") {
73
+ printTextOutput(result);
74
+ return;
75
+ }
76
+ output(result, format);
77
+ }
78
+ function printTextOutput(result) {
79
+ const w = (s) => process.stdout.write(s);
80
+ const removed = result.removed;
81
+ if (removed.claudeCodeHooks) {
82
+ w("Removed Claude Code hooks from ~/.claude/settings.json\n");
83
+ }
84
+ if (removed.claudeMd) {
85
+ w("Removed MemRosetta section from ~/.claude/CLAUDE.md\n");
86
+ }
87
+ if (removed.mcp) {
88
+ w("Removed MCP server from ~/.mcp.json\n");
89
+ }
90
+ if (removed.cursor) {
91
+ w("Removed Cursor MCP from ~/.cursor/mcp.json\n");
92
+ }
93
+ if (removed.cursorRules) {
94
+ w("Removed MemRosetta section from ~/.cursorrules\n");
95
+ }
96
+ if (removed.codex) {
97
+ w("Removed Codex MCP from ~/.codex/config.toml\n");
98
+ }
99
+ if (removed.agentsMd) {
100
+ w("Removed MemRosetta section from AGENTS.md\n");
101
+ }
102
+ const anyRemoved = removed.claudeCodeHooks || removed.claudeMd || removed.mcp || removed.cursor || removed.cursorRules || removed.codex || removed.agentsMd;
103
+ if (!anyRemoved) {
104
+ w("Nothing to remove (no integrations were configured).\n");
105
+ }
106
+ w(
107
+ "\nNote: ~/.memrosetta/ directory preserved. Delete manually if needed:\n rm -rf ~/.memrosetta\n"
108
+ );
109
+ }
110
+ export {
111
+ run
112
+ };
@@ -1,17 +1,22 @@
1
1
  import {
2
2
  optionalOption,
3
3
  requireOption
4
- } from "./chunk-F7ZMZ6HN.js";
4
+ } from "./chunk-PW52BB6L.js";
5
+ import {
6
+ getDefaultUserId
7
+ } from "./chunk-TU5EHSDE.js";
8
+ import {
9
+ getEngine
10
+ } from "./chunk-2ZBEEETG.js";
5
11
  import {
6
- getEngine,
7
12
  output,
8
13
  outputError
9
- } from "./chunk-MWLPPS7U.js";
14
+ } from "./chunk-ET6TNQOJ.js";
10
15
 
11
16
  // src/commands/search.ts
12
17
  async function run(options) {
13
18
  const { args, format, db, noEmbeddings } = options;
14
- const userId = requireOption(args, "--user", "user");
19
+ const userId = optionalOption(args, "--user") ?? getDefaultUserId();
15
20
  const query = requireOption(args, "--query", "query");
16
21
  const limitRaw = optionalOption(args, "--limit");
17
22
  const namespace = optionalOption(args, "--namespace");
@@ -0,0 +1,48 @@
1
+ import {
2
+ optionalOption,
3
+ requireOption
4
+ } from "./chunk-TGGGIJC4.js";
5
+ import {
6
+ getEngine
7
+ } from "./chunk-POK32V2J.js";
8
+ import {
9
+ output,
10
+ outputError
11
+ } from "./chunk-ET6TNQOJ.js";
12
+ import {
13
+ getDefaultUserId
14
+ } from "./chunk-TU5EHSDE.js";
15
+
16
+ // src/commands/search.ts
17
+ async function run(options) {
18
+ const { args, format, db, noEmbeddings } = options;
19
+ const userId = optionalOption(args, "--user") ?? getDefaultUserId();
20
+ const query = requireOption(args, "--query", "query");
21
+ const limitRaw = optionalOption(args, "--limit");
22
+ const namespace = optionalOption(args, "--namespace");
23
+ const typesRaw = optionalOption(args, "--types");
24
+ const minConfidenceRaw = optionalOption(args, "--min-confidence");
25
+ const limit = limitRaw ? parseInt(limitRaw, 10) : 5;
26
+ if (isNaN(limit) || limit < 1) {
27
+ outputError("Invalid limit value", format);
28
+ process.exitCode = 1;
29
+ return;
30
+ }
31
+ const memoryTypes = typesRaw ? typesRaw.split(",") : void 0;
32
+ const minConfidence = minConfidenceRaw ? parseFloat(minConfidenceRaw) : void 0;
33
+ const engine = await getEngine({ db, noEmbeddings });
34
+ const response = await engine.search({
35
+ userId,
36
+ query,
37
+ namespace,
38
+ limit,
39
+ filters: {
40
+ memoryTypes,
41
+ minConfidence
42
+ }
43
+ });
44
+ output(response, format);
45
+ }
46
+ export {
47
+ run
48
+ };
@@ -0,0 +1,48 @@
1
+ import {
2
+ optionalOption,
3
+ requireOption
4
+ } from "./chunk-VZQURGWB.js";
5
+ import {
6
+ getEngine
7
+ } from "./chunk-72IW6TAV.js";
8
+ import {
9
+ output,
10
+ outputError
11
+ } from "./chunk-ET6TNQOJ.js";
12
+ import {
13
+ getDefaultUserId
14
+ } from "./chunk-SEPYQK3J.js";
15
+
16
+ // src/commands/search.ts
17
+ async function run(options) {
18
+ const { args, format, db, noEmbeddings } = options;
19
+ const userId = optionalOption(args, "--user") ?? getDefaultUserId();
20
+ const query = requireOption(args, "--query", "query");
21
+ const limitRaw = optionalOption(args, "--limit");
22
+ const namespace = optionalOption(args, "--namespace");
23
+ const typesRaw = optionalOption(args, "--types");
24
+ const minConfidenceRaw = optionalOption(args, "--min-confidence");
25
+ const limit = limitRaw ? parseInt(limitRaw, 10) : 5;
26
+ if (isNaN(limit) || limit < 1) {
27
+ outputError("Invalid limit value", format);
28
+ process.exitCode = 1;
29
+ return;
30
+ }
31
+ const memoryTypes = typesRaw ? typesRaw.split(",") : void 0;
32
+ const minConfidence = minConfidenceRaw ? parseFloat(minConfidenceRaw) : void 0;
33
+ const engine = await getEngine({ db, noEmbeddings });
34
+ const response = await engine.search({
35
+ userId,
36
+ query,
37
+ namespace,
38
+ limit,
39
+ filters: {
40
+ memoryTypes,
41
+ minConfidence
42
+ }
43
+ });
44
+ output(response, format);
45
+ }
46
+ export {
47
+ run
48
+ };
@@ -0,0 +1,48 @@
1
+ import {
2
+ optionalOption,
3
+ requireOption
4
+ } from "./chunk-HXZ7MAT6.js";
5
+ import {
6
+ getDefaultUserId
7
+ } from "./chunk-JGE6RXXH.js";
8
+ import {
9
+ getEngine
10
+ } from "./chunk-2ZBEEETG.js";
11
+ import {
12
+ output,
13
+ outputError
14
+ } from "./chunk-ET6TNQOJ.js";
15
+
16
+ // src/commands/search.ts
17
+ async function run(options) {
18
+ const { args, format, db, noEmbeddings } = options;
19
+ const userId = optionalOption(args, "--user") ?? getDefaultUserId();
20
+ const query = requireOption(args, "--query", "query");
21
+ const limitRaw = optionalOption(args, "--limit");
22
+ const namespace = optionalOption(args, "--namespace");
23
+ const typesRaw = optionalOption(args, "--types");
24
+ const minConfidenceRaw = optionalOption(args, "--min-confidence");
25
+ const limit = limitRaw ? parseInt(limitRaw, 10) : 5;
26
+ if (isNaN(limit) || limit < 1) {
27
+ outputError("Invalid limit value", format);
28
+ process.exitCode = 1;
29
+ return;
30
+ }
31
+ const memoryTypes = typesRaw ? typesRaw.split(",") : void 0;
32
+ const minConfidence = minConfidenceRaw ? parseFloat(minConfidenceRaw) : void 0;
33
+ const engine = await getEngine({ db, noEmbeddings });
34
+ const response = await engine.search({
35
+ userId,
36
+ query,
37
+ namespace,
38
+ limit,
39
+ filters: {
40
+ memoryTypes,
41
+ minConfidence
42
+ }
43
+ });
44
+ output(response, format);
45
+ }
46
+ export {
47
+ run
48
+ };
@@ -0,0 +1,48 @@
1
+ import {
2
+ optionalOption,
3
+ requireOption
4
+ } from "./chunk-NU5ZJJXP.js";
5
+ import {
6
+ getEngine
7
+ } from "./chunk-72IW6TAV.js";
8
+ import {
9
+ output,
10
+ outputError
11
+ } from "./chunk-ET6TNQOJ.js";
12
+ import {
13
+ getDefaultUserId
14
+ } from "./chunk-SEPYQK3J.js";
15
+
16
+ // src/commands/search.ts
17
+ async function run(options) {
18
+ const { args, format, db, noEmbeddings } = options;
19
+ const userId = optionalOption(args, "--user") ?? getDefaultUserId();
20
+ const query = requireOption(args, "--query", "query");
21
+ const limitRaw = optionalOption(args, "--limit");
22
+ const namespace = optionalOption(args, "--namespace");
23
+ const typesRaw = optionalOption(args, "--types");
24
+ const minConfidenceRaw = optionalOption(args, "--min-confidence");
25
+ const limit = limitRaw ? parseInt(limitRaw, 10) : 5;
26
+ if (isNaN(limit) || limit < 1) {
27
+ outputError("Invalid limit value", format);
28
+ process.exitCode = 1;
29
+ return;
30
+ }
31
+ const memoryTypes = typesRaw ? typesRaw.split(",") : void 0;
32
+ const minConfidence = minConfidenceRaw ? parseFloat(minConfidenceRaw) : void 0;
33
+ const engine = await getEngine({ db, noEmbeddings });
34
+ const response = await engine.search({
35
+ userId,
36
+ query,
37
+ namespace,
38
+ limit,
39
+ filters: {
40
+ memoryTypes,
41
+ minConfidence
42
+ }
43
+ });
44
+ output(response, format);
45
+ }
46
+ export {
47
+ run
48
+ };
@@ -0,0 +1,48 @@
1
+ import {
2
+ optionalOption,
3
+ requireOption
4
+ } from "./chunk-HXZ7MAT6.js";
5
+ import {
6
+ getDefaultUserId
7
+ } from "./chunk-KSKRPUZZ.js";
8
+ import {
9
+ getEngine
10
+ } from "./chunk-EZVP3OY7.js";
11
+ import {
12
+ output,
13
+ outputError
14
+ } from "./chunk-ET6TNQOJ.js";
15
+
16
+ // src/commands/search.ts
17
+ async function run(options) {
18
+ const { args, format, db, noEmbeddings } = options;
19
+ const userId = optionalOption(args, "--user") ?? getDefaultUserId();
20
+ const query = requireOption(args, "--query", "query");
21
+ const limitRaw = optionalOption(args, "--limit");
22
+ const namespace = optionalOption(args, "--namespace");
23
+ const typesRaw = optionalOption(args, "--types");
24
+ const minConfidenceRaw = optionalOption(args, "--min-confidence");
25
+ const limit = limitRaw ? parseInt(limitRaw, 10) : 5;
26
+ if (isNaN(limit) || limit < 1) {
27
+ outputError("Invalid limit value", format);
28
+ process.exitCode = 1;
29
+ return;
30
+ }
31
+ const memoryTypes = typesRaw ? typesRaw.split(",") : void 0;
32
+ const minConfidence = minConfidenceRaw ? parseFloat(minConfidenceRaw) : void 0;
33
+ const engine = await getEngine({ db, noEmbeddings });
34
+ const response = await engine.search({
35
+ userId,
36
+ query,
37
+ namespace,
38
+ limit,
39
+ filters: {
40
+ memoryTypes,
41
+ minConfidence
42
+ }
43
+ });
44
+ output(response, format);
45
+ }
46
+ export {
47
+ run
48
+ };
@@ -0,0 +1,48 @@
1
+ import {
2
+ optionalOption,
3
+ requireOption
4
+ } from "./chunk-HXZ7MAT6.js";
5
+ import {
6
+ getDefaultUserId
7
+ } from "./chunk-TU5EHSDE.js";
8
+ import {
9
+ getEngine
10
+ } from "./chunk-2ZBEEETG.js";
11
+ import {
12
+ output,
13
+ outputError
14
+ } from "./chunk-ET6TNQOJ.js";
15
+
16
+ // src/commands/search.ts
17
+ async function run(options) {
18
+ const { args, format, db, noEmbeddings } = options;
19
+ const userId = optionalOption(args, "--user") ?? getDefaultUserId();
20
+ const query = requireOption(args, "--query", "query");
21
+ const limitRaw = optionalOption(args, "--limit");
22
+ const namespace = optionalOption(args, "--namespace");
23
+ const typesRaw = optionalOption(args, "--types");
24
+ const minConfidenceRaw = optionalOption(args, "--min-confidence");
25
+ const limit = limitRaw ? parseInt(limitRaw, 10) : 5;
26
+ if (isNaN(limit) || limit < 1) {
27
+ outputError("Invalid limit value", format);
28
+ process.exitCode = 1;
29
+ return;
30
+ }
31
+ const memoryTypes = typesRaw ? typesRaw.split(",") : void 0;
32
+ const minConfidence = minConfidenceRaw ? parseFloat(minConfidenceRaw) : void 0;
33
+ const engine = await getEngine({ db, noEmbeddings });
34
+ const response = await engine.search({
35
+ userId,
36
+ query,
37
+ namespace,
38
+ limit,
39
+ filters: {
40
+ memoryTypes,
41
+ minConfidence
42
+ }
43
+ });
44
+ output(response, format);
45
+ }
46
+ export {
47
+ run
48
+ };
@@ -0,0 +1,170 @@
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, readFileSync } from "fs";
19
+ import { dirname, join } from "path";
20
+ import { fileURLToPath } from "url";
21
+ import { createRequire } from "module";
22
+ function getVersion() {
23
+ const strategies = [
24
+ // 1. Relative to source (dev/source checkout via tsx)
25
+ () => {
26
+ const require2 = createRequire(import.meta.url);
27
+ return require2("../../package.json").version;
28
+ },
29
+ // 2. Resolve from npm package
30
+ () => {
31
+ const require2 = createRequire(import.meta.url);
32
+ return require2("@memrosetta/cli/package.json").version;
33
+ },
34
+ // 3. Walk up to find package.json from current file location
35
+ () => {
36
+ const dir = dirname(fileURLToPath(import.meta.url));
37
+ for (let d = dir, i = 0; i < 5; i++) {
38
+ const candidate = join(d, "package.json");
39
+ if (existsSync(candidate)) {
40
+ const pkg = JSON.parse(readFileSync(candidate, "utf-8"));
41
+ if (pkg.name?.includes("memrosetta") && pkg.version) return pkg.version;
42
+ }
43
+ d = dirname(d);
44
+ }
45
+ throw new Error("not found");
46
+ }
47
+ ];
48
+ for (const strategy of strategies) {
49
+ try {
50
+ return strategy();
51
+ } catch {
52
+ }
53
+ }
54
+ return "unknown";
55
+ }
56
+ async function run(options) {
57
+ const { format, db, noEmbeddings } = options;
58
+ const config = getConfig();
59
+ const dbPath = db ?? config.dbPath ?? getDefaultDbPath();
60
+ const exists = existsSync(dbPath);
61
+ let sizeBytes = 0;
62
+ let sizeFormatted = "0B";
63
+ let memoryCount = 0;
64
+ let userList = [];
65
+ const embeddingsEnabled = !noEmbeddings && config.enableEmbeddings !== false;
66
+ if (exists) {
67
+ const stat = statSync(dbPath);
68
+ sizeBytes = stat.size;
69
+ sizeFormatted = formatSize(sizeBytes);
70
+ try {
71
+ const Database = (await import("better-sqlite3")).default;
72
+ const dbConn = new Database(dbPath);
73
+ dbConn.pragma("journal_mode = WAL");
74
+ const countRow = dbConn.prepare("SELECT COUNT(*) as count FROM memories").get();
75
+ memoryCount = countRow.count;
76
+ const userRows = dbConn.prepare("SELECT DISTINCT user_id FROM memories ORDER BY user_id").all();
77
+ userList = userRows.map((r) => r.user_id);
78
+ dbConn.close();
79
+ } catch {
80
+ }
81
+ }
82
+ const claudeCodeStatus = isClaudeCodeConfigured();
83
+ const cursorStatus = isCursorConfigured();
84
+ const codexStatus = isCodexConfigured();
85
+ const mcpStatus = isGenericMCPConfigured();
86
+ if (format === "text") {
87
+ process.stdout.write("MemRosetta Status\n");
88
+ process.stdout.write(`${"=".repeat(40)}
89
+
90
+ `);
91
+ process.stdout.write(
92
+ `Database: ${dbPath} (${exists ? `exists, ${sizeFormatted}` : "not found"})
93
+ `
94
+ );
95
+ process.stdout.write(`Memories: ${memoryCount}
96
+ `);
97
+ if (userList.length > 0) {
98
+ process.stdout.write(
99
+ `Users: ${userList.length} (${userList.join(", ")})
100
+ `
101
+ );
102
+ } else {
103
+ process.stdout.write("Users: 0\n");
104
+ }
105
+ const embeddingModelLabel = getEmbeddingModelLabel();
106
+ process.stdout.write(
107
+ `Embeddings: ${embeddingsEnabled ? `enabled (${embeddingModelLabel})` : "disabled"}
108
+ `
109
+ );
110
+ process.stdout.write("\nIntegrations:\n");
111
+ process.stdout.write(
112
+ ` Claude Code: ${claudeCodeStatus ? "configured (hooks + MCP)" : "not configured"}
113
+ `
114
+ );
115
+ process.stdout.write(
116
+ ` Cursor: ${cursorStatus ? "configured (MCP)" : "not configured"}
117
+ `
118
+ );
119
+ process.stdout.write(
120
+ ` Codex: ${codexStatus ? "configured (MCP)" : "not configured"}
121
+ `
122
+ );
123
+ process.stdout.write(
124
+ ` MCP (generic): ${mcpStatus ? "configured" : "not configured"}
125
+ `
126
+ );
127
+ return;
128
+ }
129
+ output(
130
+ {
131
+ version: getVersion(),
132
+ database: {
133
+ path: dbPath,
134
+ exists,
135
+ sizeBytes,
136
+ sizeFormatted
137
+ },
138
+ memories: memoryCount,
139
+ users: userList,
140
+ embeddings: embeddingsEnabled,
141
+ embeddingModel: getEmbeddingModelLabel(),
142
+ embeddingPreset: getConfig().embeddingPreset ?? "en",
143
+ integrations: {
144
+ claudeCode: claudeCodeStatus,
145
+ cursor: cursorStatus,
146
+ codex: codexStatus,
147
+ mcp: mcpStatus
148
+ }
149
+ },
150
+ format
151
+ );
152
+ }
153
+ function formatSize(bytes) {
154
+ if (bytes < 1024) return `${bytes}B`;
155
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;
156
+ return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
157
+ }
158
+ var PRESET_MODEL_LABELS = {
159
+ en: "bge-small-en-v1.5",
160
+ multilingual: "multilingual-e5-small",
161
+ ko: "ko-sroberta-multitask"
162
+ };
163
+ function getEmbeddingModelLabel() {
164
+ const config = getConfig();
165
+ const preset = config.embeddingPreset ?? "en";
166
+ return PRESET_MODEL_LABELS[preset] ?? preset;
167
+ }
168
+ export {
169
+ run
170
+ };