memax-cli 0.1.0-alpha.35 → 0.1.0-alpha.36

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.
@@ -2,6 +2,7 @@ import chalk from "chalk";
2
2
  import { getClient } from "../lib/client.js";
3
3
  import { getActiveHubID } from "../lib/config.js";
4
4
  import { detectProjectContext } from "../lib/project-context.js";
5
+ import { buildTopicPathMap } from "./topic.js";
5
6
  const humanExcerptLineLimit = 4;
6
7
  const plainExcerptLineLimit = 3;
7
8
  const memoryDivider = " ───────────────────────────────────────────────";
@@ -97,6 +98,9 @@ function printHumanRecallMemory(mem, isLast) {
97
98
  if (mem.heading_chain) {
98
99
  console.log(chalk.gray(` ${mem.heading_chain}`));
99
100
  }
101
+ if (mem.topicPath) {
102
+ console.log(chalk.gray(` topic: ${mem.topicPath}`));
103
+ }
100
104
  console.log();
101
105
  if (mem.summary) {
102
106
  printSection("Summary", renderMarkdownFragment(mem.summary, { indent: " " }));
@@ -121,6 +125,9 @@ function printPlainRecallMemory(mem) {
121
125
  if (mem.heading_chain) {
122
126
  console.log(` ${mem.heading_chain}`);
123
127
  }
128
+ if (mem.topicPath) {
129
+ console.log(` topic: ${mem.topicPath}`);
130
+ }
124
131
  if (mem.summary) {
125
132
  console.log(" Summary:");
126
133
  for (const line of renderMarkdownFragment(mem.summary, {
@@ -169,19 +176,31 @@ export async function recallCommand(query, options) {
169
176
  hubId,
170
177
  });
171
178
  const memories = result.memories ?? [];
179
+ const topicPathMap = hubId && memories.some((mem) => (mem.topic_ids?.length ?? 0) > 0)
180
+ ? buildTopicPathMap((await getClient().topics.list(hubId)).topics)
181
+ : new Map();
182
+ const memoriesWithTopics = memories.map((mem) => ({
183
+ ...mem,
184
+ topicPath: mem.topic_ids?.[0]
185
+ ? topicPathMap.get(mem.topic_ids[0]) || mem.topic_names?.[0]
186
+ : mem.topic_names?.[0],
187
+ }));
172
188
  if (options.format === "json") {
173
- console.log(JSON.stringify({ ...result, memories }, null, 2));
189
+ console.log(JSON.stringify({ ...result, memories: memoriesWithTopics }, null, 2));
174
190
  return;
175
191
  }
176
192
  // Hook mode: output clean context for agent injection
177
193
  if (options.hook) {
178
- if (memories.length === 0)
194
+ if (memoriesWithTopics.length === 0)
179
195
  return;
180
196
  let output = "<memax-context>\n";
181
197
  output += "## Relevant Context (from Memax)\n\n";
182
- for (const mem of memories) {
198
+ for (const mem of memoriesWithTopics) {
183
199
  const heading = mem.heading_chain ? ` — ${mem.heading_chain}` : "";
184
200
  output += `### ${mem.title} [${mem.category}, ${mem.age}]${heading}\n`;
201
+ if (mem.topicPath) {
202
+ output += `Topic: ${mem.topicPath}\n`;
203
+ }
185
204
  if (mem.summary) {
186
205
  output += `Summary: ${mem.summary}\n\n`;
187
206
  }
@@ -205,24 +224,24 @@ export async function recallCommand(query, options) {
205
224
  }
206
225
  // Pipe-friendly plain text output when stdout is not a TTY
207
226
  if (!process.stdout.isTTY) {
208
- if (memories.length === 0) {
227
+ if (memoriesWithTopics.length === 0) {
209
228
  return;
210
229
  }
211
- for (const mem of memories) {
230
+ for (const mem of memoriesWithTopics) {
212
231
  printPlainRecallMemory(mem);
213
232
  }
214
233
  return;
215
234
  }
216
235
  // Human-readable output
217
- if (memories.length === 0) {
236
+ if (memoriesWithTopics.length === 0) {
218
237
  console.log(chalk.yellow("No results found."));
219
238
  console.log(chalk.gray(` Searched ${result.query_metadata.total_candidates} chunks in ${result.query_metadata.latency_ms}ms`));
220
239
  return;
221
240
  }
222
- console.log(chalk.blue(`${memories.length} result${memories.length > 1 ? "s" : ""}`), chalk.gray(`(${result.query_metadata.total_candidates} chunks searched, ${result.query_metadata.latency_ms}ms)`));
241
+ console.log(chalk.blue(`${memoriesWithTopics.length} result${memoriesWithTopics.length > 1 ? "s" : ""}`), chalk.gray(`(${result.query_metadata.total_candidates} chunks searched, ${result.query_metadata.latency_ms}ms)`));
223
242
  console.log();
224
- for (const [index, mem] of memories.entries()) {
225
- printHumanRecallMemory(mem, index === memories.length - 1);
243
+ for (const [index, mem] of memoriesWithTopics.entries()) {
244
+ printHumanRecallMemory(mem, index === memoriesWithTopics.length - 1);
226
245
  }
227
246
  console.log(chalk.gray(" Use memax show <id> to read the full memory."));
228
247
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/commands/recall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/commands/recall.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B3D"}
1
+ {"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAIA,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC3D"}
@@ -1,14 +1,22 @@
1
1
  import chalk from "chalk";
2
2
  import { getClient } from "../lib/client.js";
3
+ import { buildTopicPathMap } from "./topic.js";
3
4
  export async function showCommand(id) {
4
5
  if (!id) {
5
6
  console.error(chalk.red("Provide a memory ID: memax show <id>"));
6
7
  process.exit(1);
7
8
  }
8
9
  try {
9
- const memory = await getClient().memories.get(id);
10
+ const client = getClient();
11
+ const memory = await client.memories.get(id);
12
+ const topicPath = memory.hub_id && memory.topic_ids?.[0]
13
+ ? buildTopicPathMap((await client.topics.list(memory.hub_id)).topics).get(memory.topic_ids[0])
14
+ : undefined;
10
15
  console.log(chalk.bold(memory.title));
11
16
  console.log(chalk.gray(`${memory.category} · ${memory.source} · v${memory.version} · ${memory.state}`));
17
+ if (topicPath) {
18
+ console.log(chalk.gray(`topic: ${topicPath}`));
19
+ }
12
20
  if (memory.tags?.length) {
13
21
  console.log(chalk.gray(`tags: ${memory.tags.join(", ")}`));
14
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAU;IAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAElD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,KAAK,EAAE,CAC/E,CACF,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAiB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAU;IAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,SAAS,GACb,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACpC,CAAC,CAAC,iBAAiB,CACf,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CACjD,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,KAAK,EAAE,CAC/E,CACF,CAAC;QACF,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAiB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -7,6 +7,8 @@ interface SyncOptions {
7
7
  }
8
8
  export declare function syncAgentMemoryCommand(options?: SyncAgentOptions): Promise<void>;
9
9
  export declare function listAgentConfigsCommand(): Promise<void>;
10
+ export declare function listDeletedAgentConfigsCommand(): Promise<void>;
11
+ export declare function restoreDeletedAgentConfigsCommand(): Promise<void>;
10
12
  interface AgentConfigPlacement {
11
13
  kind: "present" | "restorable" | "different_project" | "unresolved";
12
14
  path?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AA+BA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAsCD,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwD7D;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,mBAAmB,GAAG,YAAY,CAAC;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,mCAAoC,SAAQ,kCAAkC;IACtF,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,mCAAwC,GAChD,oBAAoB,CAsCtB;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiK/D;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CA8K/D;AAYD,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAkHf;AA0CD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAW1E;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CA4CxC;AA8DD,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,kCAAkC;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACzD;AAiDD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kCAAuC,GAC/C,MAAM,GAAG,IAAI,CA4Gf;AA8PD,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yGAAyG;IACzG,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AA+BA,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAsCD,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwD7D;AAED,wBAAsB,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCpE;AAED,wBAAsB,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC,CAgHvE;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,mBAAmB,GAAG,YAAY,CAAC;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,mCAAoC,SAAQ,kCAAkC;IACtF,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,mCAAwC,GAChD,oBAAoB,CAsCtB;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiK/D;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CA8K/D;AAYD,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAkHf;AA0CD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAW1E;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CA4CxC;AA8DD,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,kCAAkC;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACzD;AAiDD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kCAAuC,GAC/C,MAAM,GAAG,IAAI,CA4Gf;AA8PD,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yGAAyG;IACzG,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
@@ -1,12 +1,13 @@
1
1
  import chalk from "chalk";
2
2
  import { createHash } from "node:crypto";
3
- import { readFileSync, writeFileSync, mkdirSync, rmSync, readdirSync, statSync, watch, existsSync, } from "node:fs";
3
+ import { readFileSync, writeFileSync, mkdirSync, readdirSync, statSync, watch, existsSync, } from "node:fs";
4
4
  import { join, relative, extname, resolve, dirname } from "node:path";
5
5
  import { homedir } from "node:os";
6
6
  import { getClient } from "../lib/client.js";
7
7
  import { getProjectScope, resolveProjectScope, resolveClaudeProjectFolder, normalizeFilePath, readMemaxYmlConfig, detectProjectContext, } from "../lib/project-context.js";
8
8
  import { getOrCreateDeviceID, listSyncSources, updateSyncSourceRun, } from "../lib/config.js";
9
9
  import { confirm, ask, confirmDefault } from "../lib/prompt.js";
10
+ import { moveFileToTrash } from "../lib/trash.js";
10
11
  const DEFAULT_IGNORE = new Set([
11
12
  "node_modules",
12
13
  ".git",
@@ -84,6 +85,108 @@ export async function listAgentConfigsCommand() {
84
85
  }
85
86
  console.log(chalk.gray(` ${configs.length} config${configs.length > 1 ? "s" : ""} synced to cloud.\n`));
86
87
  }
88
+ export async function listDeletedAgentConfigsCommand() {
89
+ let deleted;
90
+ try {
91
+ deleted = await getClient().configs.listDeleted();
92
+ }
93
+ catch (err) {
94
+ console.error(chalk.red(` Failed to fetch deleted configs: ${err.message}\n`));
95
+ return;
96
+ }
97
+ if (!deleted.configs || deleted.configs.length === 0) {
98
+ console.log(chalk.gray(" No recoverable deleted configs.\n"));
99
+ return;
100
+ }
101
+ console.log(chalk.bold("\n Recoverable Deleted Configs\n"));
102
+ deleted.configs.forEach((item, index) => {
103
+ const scopeLabel = item.scope === "global"
104
+ ? chalk.dim("global")
105
+ : chalk.dim(item.scope.replace("project:", ""));
106
+ console.log(` ${chalk.bold(String(index + 1).padStart(2, " "))}. ${chalk.cyan(item.agent)} ${item.file_path} ${scopeLabel}`);
107
+ console.log(chalk.gray(` deleted ${formatAge(item.deleted_at)} · recoverable until ${item.content_expires_at ? new Date(item.content_expires_at).toLocaleString() : "expired"}`));
108
+ });
109
+ console.log();
110
+ }
111
+ export async function restoreDeletedAgentConfigsCommand() {
112
+ let deleted;
113
+ try {
114
+ deleted = await getClient().configs.listDeleted();
115
+ }
116
+ catch (err) {
117
+ console.error(chalk.red(` Failed to fetch deleted configs: ${err.message}\n`));
118
+ return;
119
+ }
120
+ if (!deleted.configs || deleted.configs.length === 0) {
121
+ console.log(chalk.gray(" No recoverable deleted configs.\n"));
122
+ return;
123
+ }
124
+ console.log(chalk.bold("\n Recover Deleted Configs\n"));
125
+ deleted.configs.forEach((item, index) => {
126
+ const scopeLabel = item.scope === "global" ? "global" : item.scope.replace("project:", "");
127
+ console.log(` ${index + 1}. ${item.agent}/${item.file_path} ${chalk.gray(scopeLabel)}`);
128
+ });
129
+ const raw = await ask(chalk.gray("\n Enter indexes to restore (comma-separated): "));
130
+ const indexes = raw
131
+ .split(",")
132
+ .map((value) => Number.parseInt(value.trim(), 10))
133
+ .filter((value) => Number.isInteger(value) && value > 0 && value <= deleted.configs.length);
134
+ if (indexes.length === 0) {
135
+ console.log(chalk.gray(" Cancelled.\n"));
136
+ return;
137
+ }
138
+ const cwd = process.cwd();
139
+ const deviceID = getOrCreateDeviceID();
140
+ const currentProjectScope = getProjectScope(cwd);
141
+ let restored = 0;
142
+ for (const index of indexes) {
143
+ const item = deleted.configs[index - 1];
144
+ try {
145
+ const writePath = resolveAgentConfigWritePath(item.agent, item.file_path, item.scope, {
146
+ cwd,
147
+ home: homedir(),
148
+ currentProjectScope,
149
+ findClaudeProjectDir,
150
+ });
151
+ const config = await getClient().configs.restore({
152
+ agent: item.agent,
153
+ file_path: item.file_path,
154
+ scope: item.scope,
155
+ device_id: deviceID,
156
+ local_path: writePath ?? undefined,
157
+ });
158
+ if (writePath && !existsSync(writePath)) {
159
+ mkdirSync(dirname(writePath), { recursive: true });
160
+ writeFileSync(writePath, config.content);
161
+ await getClient().configs.ack({
162
+ device_id: deviceID,
163
+ configs: [
164
+ {
165
+ agent: item.agent,
166
+ file_path: item.file_path,
167
+ scope: item.scope,
168
+ content_hash: config.content_hash,
169
+ version: config.version,
170
+ local_path: writePath,
171
+ },
172
+ ],
173
+ });
174
+ console.log(chalk.green(` ✓ ${item.file_path}`), chalk.gray("restored to cloud and local machine"));
175
+ }
176
+ else if (writePath && existsSync(writePath)) {
177
+ console.log(chalk.yellow(` - ${item.file_path}`), chalk.gray("restored to cloud; local file already exists"));
178
+ }
179
+ else {
180
+ console.log(chalk.yellow(` - ${item.file_path}`), chalk.gray("restored to cloud; no safe local path on this machine"));
181
+ }
182
+ restored++;
183
+ }
184
+ catch (err) {
185
+ console.log(chalk.red(` ✗ ${item.file_path}`), chalk.gray(err.message));
186
+ }
187
+ }
188
+ console.log(chalk.gray(`\n ${restored} config${restored === 1 ? "" : "s"} restored.\n`));
189
+ }
87
190
  export function classifyAgentConfigPlacement(agent, filePath, scope, options = {}) {
88
191
  const key = `${agent}|${normalizeFilePath(filePath)}|${scope}`;
89
192
  const existing = options.localByKey?.get(key);
@@ -333,14 +436,14 @@ export async function deleteAgentConfigsCommand() {
333
436
  local_path: localPath ?? undefined,
334
437
  });
335
438
  if (localPath && existsSync(localPath)) {
336
- rmSync(localPath);
439
+ moveFileToTrash(localPath, "agent-configs");
337
440
  }
338
- console.log(chalk.green(` \u2713 ${item.agent}/${item.filePath}`), chalk.gray("removed from this device"));
441
+ console.log(chalk.green(` \u2713 ${item.agent}/${item.filePath}`), chalk.gray("removed from this device (moved to Memax trash)"));
339
442
  }
340
443
  else {
341
444
  await getClient().configs.delete(item.id);
342
445
  if (localPath && existsSync(localPath)) {
343
- rmSync(localPath);
446
+ moveFileToTrash(localPath, "agent-configs");
344
447
  }
345
448
  await getClient().configs.ack({
346
449
  device_id: deviceID,
@@ -355,7 +458,7 @@ export async function deleteAgentConfigsCommand() {
355
458
  },
356
459
  ],
357
460
  });
358
- console.log(chalk.green(` \u2713 ${item.agent}/${item.filePath}`), chalk.gray("deleted everywhere"));
461
+ console.log(chalk.green(` \u2713 ${item.agent}/${item.filePath}`), chalk.gray("deleted everywhere (local copy moved to Memax trash)"));
359
462
  }
360
463
  deleted++;
361
464
  }
@@ -1089,10 +1192,48 @@ async function syncAgentMemory(options = {}) {
1089
1192
  continue;
1090
1193
  }
1091
1194
  if (action.action === "delete_local") {
1195
+ if (!options.pull) {
1196
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
1197
+ console.log(chalk.yellow(` - ${action.file_path}`), chalk.gray("cloud deleted this config \u2014 skipped in non-interactive mode"));
1198
+ skipped++;
1199
+ continue;
1200
+ }
1201
+ const resolution = await promptCloudDeletion(action.file_path);
1202
+ if (resolution === "skip") {
1203
+ console.log(chalk.gray(` - ${action.file_path}`), chalk.gray("skipped"));
1204
+ skipped++;
1205
+ continue;
1206
+ }
1207
+ if (resolution === "local") {
1208
+ const local = localByKey.get(key);
1209
+ if (!local) {
1210
+ console.log(chalk.yellow(` - ${action.file_path}`), chalk.gray("local file missing \u2014 skipped"));
1211
+ skipped++;
1212
+ continue;
1213
+ }
1214
+ try {
1215
+ await getClient().configs.upsert({
1216
+ agent: action.agent,
1217
+ file_path: action.file_path,
1218
+ scope: action.scope,
1219
+ content: local.content,
1220
+ device_id: deviceID,
1221
+ local_path: local.loc.path,
1222
+ });
1223
+ console.log(chalk.green(` \u2191 ${action.file_path}`), chalk.gray("kept local and restored to cloud"));
1224
+ pushed++;
1225
+ }
1226
+ catch (err) {
1227
+ console.log(chalk.red(` \u2717 ${action.file_path}`), chalk.gray(err.message));
1228
+ errors++;
1229
+ }
1230
+ continue;
1231
+ }
1232
+ }
1092
1233
  try {
1093
1234
  const writePath = resolveWritePath(action.agent, action.file_path, action.scope);
1094
1235
  if (writePath && existsSync(writePath)) {
1095
- rmSync(writePath);
1236
+ moveFileToTrash(writePath, "agent-configs");
1096
1237
  }
1097
1238
  if (action.version) {
1098
1239
  ackConfigs.push({
@@ -1104,7 +1245,7 @@ async function syncAgentMemory(options = {}) {
1104
1245
  deleted: true,
1105
1246
  });
1106
1247
  }
1107
- console.log(chalk.yellow(` - ${action.file_path}`), chalk.gray("deleted locally (cloud removed everywhere)"));
1248
+ console.log(chalk.yellow(` - ${action.file_path}`), chalk.gray("deleted locally (moved to Memax trash)"));
1108
1249
  deletedLocal++;
1109
1250
  }
1110
1251
  catch (err) {
@@ -1114,6 +1255,11 @@ async function syncAgentMemory(options = {}) {
1114
1255
  continue;
1115
1256
  }
1116
1257
  if (action.action === "conflict") {
1258
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
1259
+ console.log(chalk.yellow(` - ${action.file_path}`), chalk.gray("conflict skipped in non-interactive mode"));
1260
+ skipped++;
1261
+ continue;
1262
+ }
1117
1263
  const resolution = await promptConflict(agent, action.file_path);
1118
1264
  if (resolution === "local") {
1119
1265
  const local = localByKey.get(key);
@@ -1270,6 +1416,16 @@ async function promptConflict(_agent, filePath) {
1270
1416
  return "merge";
1271
1417
  return "skip";
1272
1418
  }
1419
+ async function promptCloudDeletion(filePath) {
1420
+ const answer = await ask(chalk.yellow(`\n ${filePath} was deleted in cloud.\n` +
1421
+ ` [d] Delete local copy [k] Keep local and restore cloud [s] Skip: `));
1422
+ const normalized = answer.toLowerCase();
1423
+ if (normalized === "d")
1424
+ return "delete";
1425
+ if (normalized === "k")
1426
+ return "local";
1427
+ return "skip";
1428
+ }
1273
1429
  async function mergeConfigs(agent, filePath, localContent, cloudContent) {
1274
1430
  try {
1275
1431
  const result = await getClient().configs.merge({