@sporesec/arcana 2.3.1 → 2.4.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/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,SAAS,IAAI,OAAO,CA0OnC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,SAAS,IAAI,OAAO,CA+PnC"}
package/dist/cli.js CHANGED
@@ -36,7 +36,7 @@ export function createCli() {
36
36
  if (cmd) {
37
37
  console.error();
38
38
  console.error(ui.error(" Error: ") + `unknown command '${cmd}'`);
39
- const commands = ["list", "install", "info", "search", "providers", "create", "validate", "update", "uninstall", "init", "doctor", "clean", "stats", "config", "audit", "scan"];
39
+ const commands = ["list", "install", "info", "search", "providers", "create", "validate", "update", "uninstall", "init", "doctor", "clean", "compact", "stats", "config", "audit", "scan", "optimize"];
40
40
  const match = commands.find(c => c.startsWith(cmd.slice(0, 3)));
41
41
  if (match) {
42
42
  console.error(ui.dim(` Did you mean '${match}'?`));
@@ -171,13 +171,24 @@ export function createCli() {
171
171
  });
172
172
  program
173
173
  .command("clean")
174
- .description("Remove orphaned data and temp files")
174
+ .description("Remove orphaned data, old session logs, and temp files")
175
175
  .option("-n, --dry-run", "Show what would be removed without deleting")
176
+ .option("--aggressive", "Delete all session logs regardless of age")
177
+ .option("--keep-days <days>", "Keep main session logs newer than N days (default: 30)", parseInt)
176
178
  .option("--json", "Output as JSON")
177
179
  .action(async (opts) => {
178
180
  const { cleanCommand } = await import("./commands/clean.js");
179
181
  return cleanCommand(opts);
180
182
  });
183
+ program
184
+ .command("compact")
185
+ .description("Remove agent logs while preserving main session history")
186
+ .option("-n, --dry-run", "Show what would be removed without deleting")
187
+ .option("-j, --json", "Output as JSON")
188
+ .action(async (opts) => {
189
+ const { compactCommand } = await import("./commands/compact.js");
190
+ return compactCommand(opts);
191
+ });
181
192
  program
182
193
  .command("stats")
183
194
  .description("Show session analytics and token usage")
@@ -214,6 +225,14 @@ export function createCli() {
214
225
  const { scanCommand } = await import("./commands/scan.js");
215
226
  return scanCommand(skill, opts);
216
227
  });
228
+ program
229
+ .command("optimize")
230
+ .description("Analyze Claude Code setup and suggest token/performance improvements")
231
+ .option("-j, --json", "Output as JSON")
232
+ .action(async (opts) => {
233
+ const { optimizeCommand } = await import("./commands/optimize.js");
234
+ return optimizeCommand(opts);
235
+ });
217
236
  return program;
218
237
  }
219
238
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEnC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,8BAA8B,CAAC;SAC3C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAExB,iDAAiD;IACjD,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACrF,OAAO,CAAC,aAAa,CAAC;QACpB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YAC1B,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAC5B,kEAAkE;gBAClE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAqC,CAAC;gBAC3F,OAAO,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;YACD,OAAO,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;KACF,CAAC,CAAC;IACH,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,CAAC,eAAe,CAAC;QACtB,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,GAAuB,EAAE,EAAE;QAC7E,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,oBAAoB,GAAG,GAAG,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YACvM,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,mBAAmB,KAAK,IAAI,CAAC,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAEtG,yCAAyC;QACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,eAAe,EAAE,CAAC;QACpB,CAAC;QACD,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjE,MAAM,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;SACxD,MAAM,CAAC,WAAW,EAAE,yBAAyB,CAAC;SAC9C,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;SACnD,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC;SAC1C,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,WAAW,CAAC,OAAO,EAAE,uFAAuF,CAAC;SAC7G,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC3D,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC;SAC3D,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;SACzC,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;SAC5D,MAAM,CAAC,WAAW,EAAE,iDAAiD,CAAC;SACtE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,WAAW,CAAC,OAAO,EAAE,oHAAoH,CAAC;SAC1I,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACjE,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;SACrD,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC3D,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC;SAC3D,MAAM,CAAC,YAAY,EAAE,oBAAoB,CAAC;SAC1C,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,WAAW,CAAC,OAAO,EAAE,uEAAuE,CAAC;SAC7F,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/D,OAAO,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;SACrD,MAAM,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;SAC9C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACrE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;SACpD,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;SAC7C,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACnE,OAAO,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,WAAW,EAAE,6BAA6B,CAAC;SAClD,MAAM,CAAC,uBAAuB,EAAE,+BAA+B,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;SACtE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,WAAW,CAAC,OAAO,EAAE,4GAA4G,CAAC;SAClI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/D,OAAO,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,WAAW,CAAC,OAAO,EAAE,uFAAuF,CAAC;SAC7G,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACrE,OAAO,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,mBAAmB,EAAE,gFAAgF,CAAC;SAC7G,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC3D,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;SACtE,MAAM,CAAC,cAAc,EAAE,2CAA2C,CAAC;SACnE,MAAM,CAAC,oBAAoB,EAAE,wDAAwD,EAAE,QAAQ,CAAC;SAChG,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC7D,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;SACtE,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QACjE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC7D,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,yBAAyB,CAAC;SAClC,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,WAAW,CAAC,OAAO,EAAE,mHAAmH,CAAC;SACzI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC/D,OAAO,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,gEAAgE,CAAC;SAC7E,MAAM,CAAC,WAAW,EAAE,4BAA4B,CAAC;SACjD,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC7D,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,gFAAgF,CAAC;SAC7F,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;SAChD,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,WAAW,CAAC,OAAO,EAAE,2FAA2F,CAAC;SACjH,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC3D,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,sEAAsE,CAAC;SACnF,MAAM,CAAC,YAAY,EAAE,gBAAgB,CAAC;SACtC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACnE,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export declare function cleanCommand(opts: {
2
2
  dryRun?: boolean;
3
+ aggressive?: boolean;
4
+ keepDays?: number;
3
5
  json?: boolean;
4
6
  }): Promise<void>;
5
7
  //# sourceMappingURL=clean.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AAOA,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2G5F"}
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"AA0CA,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyMhB"}
@@ -2,21 +2,57 @@ import { existsSync, readdirSync, rmSync, statSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { homedir } from "node:os";
4
4
  import { ui, banner } from "../utils/ui.js";
5
- import { getDirSize, listSymlinks } from "../utils/fs.js";
5
+ import { getDirSize, listSymlinks, isOrphanedProject } from "../utils/fs.js";
6
6
  import { clearHistory } from "../utils/history.js";
7
+ const AUXILIARY_DIRS = ["file-history", "debug", "shell-snapshots", "todos", "plans"];
8
+ const STALE_PROJECT_DAYS = 90;
9
+ const AGENT_LOG_MAX_AGE_DAYS = 7;
10
+ const MAIN_LOG_MAX_AGE_DAYS = 30;
11
+ function purgeDir(dir, dryRun) {
12
+ if (!existsSync(dir))
13
+ return 0;
14
+ let reclaimed = 0;
15
+ for (const entry of readdirSync(dir)) {
16
+ const full = join(dir, entry);
17
+ try {
18
+ const stat = statSync(full);
19
+ reclaimed += stat.isDirectory() ? getDirSize(full) : stat.size;
20
+ if (!dryRun)
21
+ rmSync(full, { recursive: true, force: true });
22
+ }
23
+ catch { /* skip locked files */ }
24
+ }
25
+ return reclaimed;
26
+ }
27
+ function isAgentLog(filename) {
28
+ return filename.startsWith("agent-") && filename.endsWith(".jsonl");
29
+ }
7
30
  export async function cleanCommand(opts) {
8
31
  if (!opts.json)
9
32
  banner();
10
33
  const dryRun = opts.dryRun ?? false;
34
+ const aggressive = opts.aggressive ?? false;
35
+ const keepDays = opts.keepDays ?? MAIN_LOG_MAX_AGE_DAYS;
36
+ const agentKeepDays = aggressive ? 0 : AGENT_LOG_MAX_AGE_DAYS;
37
+ const mainKeepDays = aggressive ? 0 : keepDays;
11
38
  if (dryRun && !opts.json)
12
39
  console.log(ui.warn(" DRY RUN - no files will be deleted\n"));
13
- let totalReclaimed = 0;
14
- let actions = 0;
15
- const removedSymlinks = [];
16
- const removedProjects = [];
17
- const removedCacheFiles = [];
40
+ if (aggressive && !opts.json)
41
+ console.log(ui.warn(" AGGRESSIVE MODE - all session logs will be targeted\n"));
42
+ const result = {
43
+ dryRun,
44
+ actions: 0,
45
+ reclaimedBytes: 0,
46
+ removedSymlinks: [],
47
+ removedProjects: [],
48
+ removedCacheFiles: [],
49
+ removedSessionLogs: [],
50
+ purgedDirs: [],
51
+ };
18
52
  // 1. Clean broken symlinks
19
53
  const failedSymlinks = [];
54
+ if (!opts.json)
55
+ console.log(ui.bold(" Symlinks"));
20
56
  for (const link of listSymlinks().filter(s => s.broken)) {
21
57
  if (!dryRun) {
22
58
  try {
@@ -24,27 +60,30 @@ export async function cleanCommand(opts) {
24
60
  }
25
61
  catch (err) {
26
62
  if (!opts.json)
27
- console.log(` ${ui.warn("Could not remove symlink:")} ${link.name} ${ui.dim(`(${err instanceof Error ? err.message : "unknown error"})`)}`);
63
+ console.log(` ${ui.warn(" Could not remove:")} ${link.name} ${ui.dim(`(${err instanceof Error ? err.message : "unknown"})`)}`);
28
64
  failedSymlinks.push(link.name);
29
65
  continue;
30
66
  }
31
67
  }
32
68
  if (!opts.json)
33
- console.log(` ${ui.dim("Remove broken symlink:")} ${link.name}`);
34
- removedSymlinks.push(link.name);
35
- actions++;
69
+ console.log(` ${ui.dim(" Remove broken:")} ${link.name}`);
70
+ result.removedSymlinks.push(link.name);
71
+ result.actions++;
36
72
  }
37
- // 2. Clean orphaned Claude project dirs
73
+ if (result.removedSymlinks.length === 0 && !opts.json)
74
+ console.log(ui.dim(" No broken symlinks"));
75
+ // 2. Clean orphaned + stale project dirs
76
+ if (!opts.json)
77
+ console.log(ui.bold("\n Project Data"));
38
78
  const projectsDir = join(homedir(), ".claude", "projects");
39
79
  if (existsSync(projectsDir)) {
40
80
  for (const entry of readdirSync(projectsDir)) {
41
81
  const projDir = join(projectsDir, entry);
42
82
  if (!statSync(projDir).isDirectory())
43
83
  continue;
44
- // Skip memory/ and other special dirs
45
84
  if (entry === "memory" || entry.startsWith("."))
46
85
  continue;
47
- // Check for session data staleness (no files modified in 90+ days)
86
+ const orphaned = isOrphanedProject(entry);
48
87
  let newest = 0;
49
88
  try {
50
89
  for (const file of readdirSync(projDir)) {
@@ -57,26 +96,136 @@ export async function cleanCommand(opts) {
57
96
  continue;
58
97
  }
59
98
  const daysOld = (Date.now() - newest) / (1000 * 60 * 60 * 24);
60
- if (daysOld > 90) {
99
+ const shouldRemove = orphaned || daysOld > STALE_PROJECT_DAYS;
100
+ if (shouldRemove) {
61
101
  const size = getDirSize(projDir);
62
- totalReclaimed += size;
102
+ result.reclaimedBytes += size;
63
103
  const mb = (size / (1024 * 1024)).toFixed(1);
104
+ const reason = orphaned ? "orphaned (source deleted)" : `stale (${Math.floor(daysOld)}d old)`;
64
105
  if (!dryRun)
65
106
  rmSync(projDir, { recursive: true, force: true });
66
107
  if (!opts.json)
67
- console.log(` ${ui.dim("Remove stale project data:")} ${entry} ${ui.dim(`(${mb} MB, ${Math.floor(daysOld)}d old)`)}`);
68
- removedProjects.push({ name: entry, sizeMB: mb, daysOld: Math.floor(daysOld) });
69
- actions++;
108
+ console.log(` ${ui.dim("Remove:")} ${entry} ${ui.dim(`(${mb} MB, ${reason})`)}`);
109
+ result.removedProjects.push({ name: entry, sizeMB: mb, reason });
110
+ result.actions++;
70
111
  }
71
112
  }
72
113
  }
73
- // 3. Clear action history
114
+ if (result.removedProjects.length === 0 && !opts.json)
115
+ console.log(ui.dim(" No orphaned or stale projects"));
116
+ // 3. Tiered session log cleanup
117
+ // - Agent logs (agent-*.jsonl): delete after 7 days (never resumed, bulk of bloat)
118
+ // - Main sessions (UUID.jsonl): delete after 30 days (configurable with --keep-days)
119
+ // - Aggressive mode: delete everything regardless of age
120
+ if (!opts.json) {
121
+ console.log(ui.bold("\n Session Logs"));
122
+ if (!aggressive) {
123
+ console.log(ui.dim(` Agent logs: remove >${agentKeepDays}d | Main sessions: remove >${mainKeepDays}d`));
124
+ }
125
+ }
126
+ let logCount = 0;
127
+ if (existsSync(projectsDir)) {
128
+ const now = Date.now();
129
+ for (const entry of readdirSync(projectsDir)) {
130
+ const projDir = join(projectsDir, entry);
131
+ if (!statSync(projDir).isDirectory())
132
+ continue;
133
+ if (entry === "memory" || entry.startsWith("."))
134
+ continue;
135
+ // Scan all files in project dir (not recursive, JSONL files are at top level)
136
+ for (const file of readdirSync(projDir)) {
137
+ if (!file.endsWith(".jsonl"))
138
+ continue;
139
+ const fullPath = join(projDir, file);
140
+ let stat;
141
+ try {
142
+ stat = statSync(fullPath);
143
+ }
144
+ catch {
145
+ continue;
146
+ }
147
+ const daysOld = (now - stat.mtimeMs) / (1000 * 60 * 60 * 24);
148
+ const isAgent = isAgentLog(file);
149
+ const maxAge = isAgent ? agentKeepDays : mainKeepDays;
150
+ if (daysOld > maxAge) {
151
+ const sizeMB = stat.size / (1024 * 1024);
152
+ result.reclaimedBytes += stat.size;
153
+ if (!dryRun) {
154
+ try {
155
+ rmSync(fullPath, { force: true });
156
+ }
157
+ catch {
158
+ continue;
159
+ }
160
+ }
161
+ const reason = isAgent ? "agent log" : "main session";
162
+ if (!opts.json)
163
+ console.log(` ${ui.dim("Remove:")} ${entry}/${file} ${ui.dim(`(${sizeMB.toFixed(1)} MB, ${Math.floor(daysOld)}d, ${reason})`)}`);
164
+ result.removedSessionLogs.push({ project: entry, file, sizeMB: sizeMB.toFixed(1), daysOld: Math.floor(daysOld), reason });
165
+ logCount++;
166
+ result.actions++;
167
+ }
168
+ }
169
+ // Also clean agent subdirectories (UUID dirs containing agent subfiles)
170
+ for (const sub of readdirSync(projDir)) {
171
+ const subPath = join(projDir, sub);
172
+ try {
173
+ if (!statSync(subPath).isDirectory())
174
+ continue;
175
+ if (sub === "memory")
176
+ continue;
177
+ // Check if directory is old enough
178
+ const stat = statSync(subPath);
179
+ const daysOld = (now - stat.mtimeMs) / (1000 * 60 * 60 * 24);
180
+ if (daysOld > agentKeepDays) {
181
+ const size = getDirSize(subPath);
182
+ if (size === 0)
183
+ continue;
184
+ result.reclaimedBytes += size;
185
+ if (!dryRun)
186
+ rmSync(subPath, { recursive: true, force: true });
187
+ const mb = (size / (1024 * 1024)).toFixed(1);
188
+ if (!opts.json)
189
+ console.log(` ${ui.dim("Remove:")} ${entry}/${sub}/ ${ui.dim(`(${mb} MB, ${Math.floor(daysOld)}d, session dir)`)}`);
190
+ result.removedSessionLogs.push({ project: entry, file: sub + "/", sizeMB: mb, daysOld: Math.floor(daysOld), reason: "session dir" });
191
+ logCount++;
192
+ result.actions++;
193
+ }
194
+ }
195
+ catch {
196
+ continue;
197
+ }
198
+ }
199
+ }
200
+ }
201
+ if (logCount === 0 && !opts.json)
202
+ console.log(ui.dim(" No session logs to trim"));
203
+ // 4. Purge auxiliary directories
204
+ if (!opts.json)
205
+ console.log(ui.bold("\n Auxiliary Data"));
206
+ const claudeDir = join(homedir(), ".claude");
207
+ for (const dirName of AUXILIARY_DIRS) {
208
+ const dir = join(claudeDir, dirName);
209
+ if (!existsSync(dir))
210
+ continue;
211
+ const size = getDirSize(dir);
212
+ if (size === 0)
213
+ continue;
214
+ const mb = (size / (1024 * 1024)).toFixed(1);
215
+ const reclaimed = dryRun ? size : purgeDir(dir, false);
216
+ result.reclaimedBytes += reclaimed;
217
+ if (!opts.json)
218
+ console.log(` ${ui.dim("Purge:")} ${dirName}/ ${ui.dim(`(${mb} MB)`)}`);
219
+ result.purgedDirs.push({ name: dirName, sizeMB: mb });
220
+ result.actions++;
221
+ }
222
+ if (result.purgedDirs.length === 0 && !opts.json)
223
+ console.log(ui.dim(" All clean"));
224
+ // 5. Clear action history
74
225
  if (!dryRun)
75
226
  clearHistory();
76
- if (!opts.json)
77
- console.log(` ${ui.dim("Clear action history")}`);
78
- actions++;
79
- // 4. Clean disk cache
227
+ result.actions++;
228
+ // 6. Clean disk cache
80
229
  const cacheDir = join(homedir(), ".arcana", "cache");
81
230
  if (existsSync(cacheDir)) {
82
231
  for (const file of readdirSync(cacheDir)) {
@@ -88,36 +237,27 @@ export async function cleanCommand(opts) {
88
237
  continue;
89
238
  }
90
239
  }
91
- if (!opts.json)
92
- console.log(` ${ui.dim("Remove cached data:")} ${file}`);
93
- removedCacheFiles.push(file);
94
- actions++;
240
+ result.removedCacheFiles.push(file);
241
+ result.actions++;
95
242
  }
96
243
  }
244
+ if (failedSymlinks.length > 0)
245
+ result.failedSymlinks = failedSymlinks;
246
+ // Output
97
247
  if (opts.json) {
98
- const result = {
99
- dryRun,
100
- actions,
101
- reclaimedMB: Number((totalReclaimed / (1024 * 1024)).toFixed(1)),
102
- removedSymlinks,
103
- removedProjects,
104
- removedCacheFiles,
105
- };
106
- if (failedSymlinks.length > 0)
107
- result.failedSymlinks = failedSymlinks;
108
- console.log(JSON.stringify(result));
248
+ console.log(JSON.stringify({
249
+ ...result,
250
+ reclaimedMB: Number((result.reclaimedBytes / (1024 * 1024)).toFixed(1)),
251
+ }, null, 2));
109
252
  return;
110
253
  }
111
254
  console.log();
112
- if (actions > 0) {
113
- const mb = (totalReclaimed / (1024 * 1024)).toFixed(1);
114
- const verb = dryRun ? "Would reclaim" : "Reclaimed";
115
- console.log(ui.success(` ${actions} items cleaned. ${verb} ${mb} MB.`));
255
+ const mb = (result.reclaimedBytes / (1024 * 1024)).toFixed(1);
256
+ const verb = dryRun ? "Would reclaim" : "Reclaimed";
257
+ if (result.actions > 1) {
258
+ console.log(ui.success(` ${result.actions} items cleaned. ${verb} ${mb} MB.`));
116
259
  }
117
260
  else {
118
- console.log(ui.dim(" Checked:"));
119
- console.log(ui.dim(` - Broken symlinks in ~/.claude/skills/: ${removedSymlinks.length} found`));
120
- console.log(ui.dim(` - Stale project data in ~/.claude/projects/: ${removedProjects.length} found`));
121
261
  console.log(ui.success(" Nothing to clean."));
122
262
  }
123
263
  console.log();
@@ -1 +1 @@
1
- {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/commands/clean.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function compactCommand(opts: {
2
+ dryRun?: boolean;
3
+ json?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=compact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../src/commands/compact.ts"],"names":[],"mappings":"AAsEA,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoH9F"}
@@ -0,0 +1,179 @@
1
+ import { existsSync, readdirSync, rmSync, statSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
4
+ import { ui, banner } from "../utils/ui.js";
5
+ import { getDirSize } from "../utils/fs.js";
6
+ function analyzeProject(projDir, projName) {
7
+ const now = Date.now();
8
+ const mainFiles = [];
9
+ const agentFiles = [];
10
+ const sessionDirs = [];
11
+ for (const entry of readdirSync(projDir)) {
12
+ const full = join(projDir, entry);
13
+ try {
14
+ const stat = statSync(full);
15
+ if (stat.isDirectory()) {
16
+ if (entry === "memory")
17
+ continue;
18
+ sessionDirs.push({
19
+ name: entry,
20
+ sizeBytes: getDirSize(full),
21
+ daysOld: Math.floor((now - stat.mtimeMs) / (1000 * 60 * 60 * 24)),
22
+ });
23
+ continue;
24
+ }
25
+ if (!entry.endsWith(".jsonl"))
26
+ continue;
27
+ const info = {
28
+ name: entry,
29
+ sizeBytes: stat.size,
30
+ daysOld: Math.floor((now - stat.mtimeMs) / (1000 * 60 * 60 * 24)),
31
+ };
32
+ if (entry.startsWith("agent-")) {
33
+ agentFiles.push(info);
34
+ }
35
+ else {
36
+ mainFiles.push(info);
37
+ }
38
+ }
39
+ catch {
40
+ continue;
41
+ }
42
+ }
43
+ const totalBytes = mainFiles.reduce((s, f) => s + f.sizeBytes, 0)
44
+ + agentFiles.reduce((s, f) => s + f.sizeBytes, 0)
45
+ + sessionDirs.reduce((s, d) => s + d.sizeBytes, 0);
46
+ // Reclaimable: all agent files + all session dirs
47
+ const reclaimableBytes = agentFiles.reduce((s, f) => s + f.sizeBytes, 0)
48
+ + sessionDirs.reduce((s, d) => s + d.sizeBytes, 0);
49
+ return { name: projName, mainFiles, agentFiles, sessionDirs, totalBytes, reclaimableBytes };
50
+ }
51
+ function formatBytes(bytes) {
52
+ if (bytes < 1024)
53
+ return `${bytes} B`;
54
+ if (bytes < 1024 * 1024)
55
+ return `${(bytes / 1024).toFixed(1)} KB`;
56
+ if (bytes < 1024 * 1024 * 1024)
57
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
58
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;
59
+ }
60
+ export async function compactCommand(opts) {
61
+ if (!opts.json)
62
+ banner();
63
+ const dryRun = opts.dryRun ?? false;
64
+ if (dryRun && !opts.json)
65
+ console.log(ui.warn(" DRY RUN - no files will be deleted\n"));
66
+ const projectsDir = join(homedir(), ".claude", "projects");
67
+ if (!existsSync(projectsDir)) {
68
+ if (opts.json) {
69
+ console.log(JSON.stringify({ projects: [], totalReclaimed: 0 }));
70
+ }
71
+ else {
72
+ console.log(ui.dim(" No session data found."));
73
+ console.log();
74
+ }
75
+ return;
76
+ }
77
+ const analyses = [];
78
+ for (const entry of readdirSync(projectsDir)) {
79
+ const projDir = join(projectsDir, entry);
80
+ if (!statSync(projDir).isDirectory())
81
+ continue;
82
+ if (entry === "memory" || entry.startsWith("."))
83
+ continue;
84
+ const analysis = analyzeProject(projDir, entry);
85
+ if (analysis.totalBytes > 0) {
86
+ analyses.push(analysis);
87
+ }
88
+ }
89
+ analyses.sort((a, b) => b.totalBytes - a.totalBytes);
90
+ if (opts.json) {
91
+ const jsonResult = {
92
+ projects: analyses.map(a => ({
93
+ name: a.name,
94
+ totalBytes: a.totalBytes,
95
+ reclaimableBytes: a.reclaimableBytes,
96
+ mainSessions: a.mainFiles.length,
97
+ agentLogs: a.agentFiles.length,
98
+ sessionDirs: a.sessionDirs.length,
99
+ })),
100
+ totalReclaimed: dryRun ? 0 : analyses.reduce((s, a) => s + a.reclaimableBytes, 0),
101
+ };
102
+ console.log(JSON.stringify(jsonResult, null, 2));
103
+ if (!dryRun) {
104
+ for (const a of analyses) {
105
+ const projDir = join(projectsDir, a.name);
106
+ for (const f of a.agentFiles) {
107
+ try {
108
+ rmSync(join(projDir, f.name), { force: true });
109
+ }
110
+ catch { /* skip */ }
111
+ }
112
+ for (const d of a.sessionDirs) {
113
+ try {
114
+ rmSync(join(projDir, d.name), { recursive: true, force: true });
115
+ }
116
+ catch { /* skip */ }
117
+ }
118
+ }
119
+ }
120
+ return;
121
+ }
122
+ if (!opts.json)
123
+ console.log(ui.bold(" Session Compaction Report\n"));
124
+ let totalReclaimed = 0;
125
+ const hasWork = analyses.some(a => a.reclaimableBytes > 0);
126
+ for (const a of analyses) {
127
+ if (a.totalBytes < 1024)
128
+ continue; // Skip tiny projects
129
+ const truncName = a.name.length > 50 ? a.name.slice(0, 47) + "..." : a.name;
130
+ console.log(` ${ui.bold(truncName)} ${ui.dim(formatBytes(a.totalBytes))}`);
131
+ // Main sessions
132
+ const mainSize = a.mainFiles.reduce((s, f) => s + f.sizeBytes, 0);
133
+ console.log(` ${ui.success("Keep:")} ${a.mainFiles.length} main session${a.mainFiles.length !== 1 ? "s" : ""} ${ui.dim(`(${formatBytes(mainSize)})`)}`);
134
+ // Agent logs
135
+ if (a.agentFiles.length > 0) {
136
+ const agentSize = a.agentFiles.reduce((s, f) => s + f.sizeBytes, 0);
137
+ console.log(` ${ui.warn("Remove:")} ${a.agentFiles.length} agent log${a.agentFiles.length !== 1 ? "s" : ""} ${ui.dim(`(${formatBytes(agentSize)})`)}`);
138
+ if (!dryRun) {
139
+ const projDir = join(projectsDir, a.name);
140
+ for (const f of a.agentFiles) {
141
+ try {
142
+ rmSync(join(projDir, f.name), { force: true });
143
+ }
144
+ catch { /* skip */ }
145
+ }
146
+ }
147
+ totalReclaimed += agentSize;
148
+ }
149
+ // Session dirs
150
+ if (a.sessionDirs.length > 0) {
151
+ const dirSize = a.sessionDirs.reduce((s, d) => s + d.sizeBytes, 0);
152
+ if (dirSize > 0) {
153
+ console.log(` ${ui.warn("Remove:")} ${a.sessionDirs.length} session dir${a.sessionDirs.length !== 1 ? "s" : ""} ${ui.dim(`(${formatBytes(dirSize)})`)}`);
154
+ if (!dryRun) {
155
+ const projDir = join(projectsDir, a.name);
156
+ for (const d of a.sessionDirs) {
157
+ try {
158
+ rmSync(join(projDir, d.name), { recursive: true, force: true });
159
+ }
160
+ catch { /* skip */ }
161
+ }
162
+ }
163
+ totalReclaimed += dirSize;
164
+ }
165
+ }
166
+ console.log();
167
+ }
168
+ // Summary
169
+ if (!hasWork) {
170
+ console.log(ui.success(" Already compact. No agent logs to remove."));
171
+ }
172
+ else {
173
+ const verb = dryRun ? "Would reclaim" : "Reclaimed";
174
+ console.log(ui.success(` ${verb} ${formatBytes(totalReclaimed)} by removing agent logs and session dirs.`));
175
+ console.log(ui.dim(" Main session files preserved for history."));
176
+ }
177
+ console.log();
178
+ }
179
+ //# sourceMappingURL=compact.js.map