@aiassesstech/mighty-mark 0.1.1 → 0.2.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.
Files changed (70) hide show
  1. package/dist/checks/check-context.d.ts +2 -0
  2. package/dist/checks/check-context.d.ts.map +1 -1
  3. package/dist/checks/check-context.js.map +1 -1
  4. package/dist/checks/check-runner.d.ts +1 -1
  5. package/dist/checks/check-runner.d.ts.map +1 -1
  6. package/dist/checks/check-runner.js +7 -1
  7. package/dist/checks/check-runner.js.map +1 -1
  8. package/dist/checks/memory-health.d.ts +44 -0
  9. package/dist/checks/memory-health.d.ts.map +1 -0
  10. package/dist/checks/memory-health.js +389 -0
  11. package/dist/checks/memory-health.js.map +1 -0
  12. package/dist/cli/memory-commands.d.ts +22 -0
  13. package/dist/cli/memory-commands.d.ts.map +1 -0
  14. package/dist/cli/memory-commands.js +343 -0
  15. package/dist/cli/memory-commands.js.map +1 -0
  16. package/dist/cli/runner.d.ts.map +1 -1
  17. package/dist/cli/runner.js +27 -0
  18. package/dist/cli/runner.js.map +1 -1
  19. package/dist/config/fleet-topology.d.ts +3 -0
  20. package/dist/config/fleet-topology.d.ts.map +1 -1
  21. package/dist/config/fleet-topology.js +21 -11
  22. package/dist/config/fleet-topology.js.map +1 -1
  23. package/dist/index.d.ts +11 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +7 -0
  26. package/dist/index.js.map +1 -1
  27. package/dist/memory/backfill.d.ts +33 -0
  28. package/dist/memory/backfill.d.ts.map +1 -0
  29. package/dist/memory/backfill.js +206 -0
  30. package/dist/memory/backfill.js.map +1 -0
  31. package/dist/memory/config.d.ts +56 -0
  32. package/dist/memory/config.d.ts.map +1 -0
  33. package/dist/memory/config.js +46 -0
  34. package/dist/memory/config.js.map +1 -0
  35. package/dist/memory/organize.d.ts +27 -0
  36. package/dist/memory/organize.d.ts.map +1 -0
  37. package/dist/memory/organize.js +108 -0
  38. package/dist/memory/organize.js.map +1 -0
  39. package/dist/memory/remediate.d.ts +37 -0
  40. package/dist/memory/remediate.d.ts.map +1 -0
  41. package/dist/memory/remediate.js +143 -0
  42. package/dist/memory/remediate.js.map +1 -0
  43. package/dist/memory/retention.d.ts +42 -0
  44. package/dist/memory/retention.d.ts.map +1 -0
  45. package/dist/memory/retention.js +186 -0
  46. package/dist/memory/retention.js.map +1 -0
  47. package/dist/memory/tag.d.ts +26 -0
  48. package/dist/memory/tag.d.ts.map +1 -0
  49. package/dist/memory/tag.js +134 -0
  50. package/dist/memory/tag.js.map +1 -0
  51. package/dist/memory/writer.d.ts +46 -0
  52. package/dist/memory/writer.d.ts.map +1 -0
  53. package/dist/memory/writer.js +115 -0
  54. package/dist/memory/writer.js.map +1 -0
  55. package/dist/notify/report-formatter.d.ts.map +1 -1
  56. package/dist/notify/report-formatter.js +17 -1
  57. package/dist/notify/report-formatter.js.map +1 -1
  58. package/dist/plugin.d.ts +1 -1
  59. package/dist/plugin.d.ts.map +1 -1
  60. package/dist/plugin.js +196 -4
  61. package/dist/plugin.js.map +1 -1
  62. package/dist/store/json-store.d.ts +6 -0
  63. package/dist/store/json-store.d.ts.map +1 -1
  64. package/dist/store/json-store.js +27 -0
  65. package/dist/store/json-store.js.map +1 -1
  66. package/dist/types/fleet.d.ts +7 -0
  67. package/dist/types/fleet.d.ts.map +1 -1
  68. package/dist/types/health.d.ts +2 -2
  69. package/dist/types/health.d.ts.map +1 -1
  70. package/package.json +1 -1
@@ -10,6 +10,8 @@ export interface CheckContext {
10
10
  workspace?: string;
11
11
  /** Override data directory for store checks. */
12
12
  dataDir?: string;
13
+ /** Override memory root directory (default: ~/.openclaw/workspace/memory). */
14
+ memoryDir?: string;
13
15
  /** Mock shell command execution. */
14
16
  execCommand?: (cmd: string) => string;
15
17
  /** Mock HTTP fetch. */
@@ -1 +1 @@
1
- {"version":3,"file":"check-context.d.ts","sourceRoot":"","sources":["../../src/checks/check-context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,uBAAuB;IACvB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAClC,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,2DAA2D;AAC3D,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,MAAM,CAK5D;AAED,+CAA+C;AAC/C,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,QAAQ,CAAC,CAGnB;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,MAAM,CAOtD;AAED,2BAA2B;AAC3B,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,MAAM,CAExD;AAED,8BAA8B;AAC9B,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,MAAM,CAEvD;AAED,oCAAoC;AACpC,wBAAgB,GAAG,IAAI,MAAM,CAE5B"}
1
+ {"version":3,"file":"check-context.d.ts","sourceRoot":"","sources":["../../src/checks/check-context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,uBAAuB;IACvB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAClC,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,2DAA2D;AAC3D,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,MAAM,CAK5D;AAED,+CAA+C;AAC/C,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,QAAQ,CAAC,CAGnB;AAED,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,MAAM,CAOtD;AAED,2BAA2B;AAC3B,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,MAAM,CAExD;AAED,8BAA8B;AAC9B,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,MAAM,CAEvD;AAED,oCAAoC;AACpC,wBAAgB,GAAG,IAAI,MAAM,CAE5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"check-context.js","sourceRoot":"","sources":["../../src/checks/check-context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAqB9C,2DAA2D;AAC3D,MAAM,UAAU,IAAI,CAAC,GAAW,EAAE,GAAkB;IAClD,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACtE,CAAC;AAED,+CAA+C;AAC/C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,IAA6B,EAC7B,GAAkB;IAElB,MAAM,EAAE,GAAG,GAAG,EAAE,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC;IAC5C,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,WAAW,CAAC,GAAkB;IAC5C,IAAI,GAAG,EAAE,QAAQ;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;IACvC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,aAAa,CAAC,GAAkB;IAC9C,OAAO,GAAG,EAAE,UAAU,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,0BAA0B,CAAC;AACrF,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,YAAY,CAAC,GAAkB;IAC7C,OAAO,GAAG,EAAE,SAAS,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC;AAClE,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,GAAG;IACjB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"check-context.js","sourceRoot":"","sources":["../../src/checks/check-context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAuB9C,2DAA2D;AAC3D,MAAM,UAAU,IAAI,CAAC,GAAW,EAAE,GAAkB;IAClD,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AACtE,CAAC;AAED,+CAA+C;AAC/C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,IAA6B,EAC7B,GAAkB;IAElB,MAAM,EAAE,GAAG,GAAG,EAAE,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC;IAC5C,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,WAAW,CAAC,GAAkB;IAC5C,IAAI,GAAG,EAAE,QAAQ;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;IACvC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,aAAa,CAAC,GAAkB;IAC9C,OAAO,GAAG,EAAE,UAAU,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,0BAA0B,CAAC;AACrF,CAAC;AAED,8BAA8B;AAC9B,MAAM,UAAU,YAAY,CAAC,GAAkB;IAC7C,OAAO,GAAG,EAAE,SAAS,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC;AAClE,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,GAAG;IACjB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC"}
@@ -10,7 +10,7 @@ export declare class CheckRunner {
10
10
  private readonly config;
11
11
  private readonly topology;
12
12
  constructor(config: MightyMarkConfig, topology: FleetTopology);
13
- /** Run the full morning check — all 26 checks across 5 categories. */
13
+ /** Run the full morning check — all 32 checks across 6 categories. */
14
14
  runAll(ctx?: CheckContext): Promise<MorningReport>;
15
15
  /** Run checks for a single category. */
16
16
  runCategory(category: CheckCategory, ctx?: CheckContext): Promise<CategoryResults>;
@@ -1 +1 @@
1
- {"version":3,"file":"check-runner.d.ts","sourceRoot":"","sources":["../../src/checks/check-runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAe,aAAa,EAAgB,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOvD,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEpE,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa;IAK7D,sEAAsE;IAChE,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IA4CxD,wCAAwC;IAClC,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;CAgCzF"}
1
+ {"version":3,"file":"check-runner.d.ts","sourceRoot":"","sources":["../../src/checks/check-runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAe,aAAa,EAAgB,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAQvD,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEpE,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,aAAa;IAK7D,sEAAsE;IAChE,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IA+CxD,wCAAwC;IAClC,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;CAmCzF"}
@@ -8,6 +8,7 @@ import { runAgentChecks } from './agent-verify.js';
8
8
  import { runSystemChecks } from './system-resources.js';
9
9
  import { runApiChecks } from './api-connectivity.js';
10
10
  import { runDataChecks } from './data-integrity.js';
11
+ import { runMemoryChecks } from './memory-health.js';
11
12
  import { classifyHealth } from '../notify/alert-classifier.js';
12
13
  import { getHostname } from './check-context.js';
13
14
  export class CheckRunner {
@@ -17,7 +18,7 @@ export class CheckRunner {
17
18
  this.config = config;
18
19
  this.topology = topology;
19
20
  }
20
- /** Run the full morning check — all 26 checks across 5 categories. */
21
+ /** Run the full morning check — all 32 checks across 6 categories. */
21
22
  async runAll(ctx) {
22
23
  const suiteStart = Date.now();
23
24
  const allChecks = [];
@@ -32,6 +33,8 @@ export class CheckRunner {
32
33
  allChecks.push(...api);
33
34
  const data = await runDataChecks(this.config.dataDir, this.config.telegramToken, ctx);
34
35
  allChecks.push(...data);
36
+ const memory = await runMemoryChecks(this.topology, ctx);
37
+ allChecks.push(...memory);
35
38
  const summary = summarize(allChecks);
36
39
  const status = classifyHealth(summary.failed, summary.warnings);
37
40
  let uptimeStr;
@@ -74,6 +77,9 @@ export class CheckRunner {
74
77
  case 'data':
75
78
  checks = await runDataChecks(this.config.dataDir, this.config.telegramToken, ctx);
76
79
  break;
80
+ case 'memory':
81
+ checks = await runMemoryChecks(this.topology, ctx);
82
+ break;
77
83
  default:
78
84
  checks = [];
79
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"check-runner.js","sourceRoot":"","sources":["../../src/checks/check-runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AAIzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAEpE,MAAM,OAAO,WAAW;IACL,MAAM,CAAmB;IACzB,QAAQ,CAAgB;IAEzC,YAAY,MAAwB,EAAE,QAAuB;QAC3D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,MAAM,CAAC,GAAkB;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAkB,EAAE,CAAC;QAEpC,uEAAuE;QACvE,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QAC1F,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAE3B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxD,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAE1B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACvD,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAE1B,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC/D,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QAEvB,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QACtF,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAExB,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEhE,IAAI,SAAiB,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAChD,SAAS,GAAG,MAAM,IAAI,UAAU,KAAK,QAAQ,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;QAED,OAAO;YACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM;YACN,OAAO;YACP,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;YAC1B,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU;SACpC,CAAC;IACJ,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,WAAW,CAAC,QAAuB,EAAE,GAAkB;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,MAAqB,CAAC;QAE1B,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,SAAS;gBACZ,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;gBACnF,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAClD,MAAM;YACR,KAAK,QAAQ;gBACX,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACjD,MAAM;YACR,KAAK,KAAK;gBACR,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;gBAC5D,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;gBAClF,MAAM;YACR;gBACE,MAAM,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,OAAO;YACL,QAAQ;YACR,MAAM;YACN,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAC/B,CAAC;IACJ,CAAC;CACF;AAED,0DAA0D;AAC1D,SAAS,SAAS,CAAC,MAAqB;IACtC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,MAAM;gBAAE,MAAM,EAAE,CAAC;gBAAC,MAAM;YAC7B,KAAK,MAAM;gBAAE,MAAM,EAAE,CAAC;gBAAC,MAAM;YAC7B,KAAK,MAAM;gBAAE,QAAQ,EAAE,CAAC;gBAAC,MAAM;QACjC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"check-runner.js","sourceRoot":"","sources":["../../src/checks/check-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Memory health checks — 6 checks in the 'memory' category.
3
+ *
4
+ * #27 memory-provider Embedding provider is configured (critical)
5
+ * #28 memory-embeddings Embedding model is ready (critical)
6
+ * #29 memory-indexing Files are indexed and not dirty (high)
7
+ * #30 memory-agent-dirs Agent memory directories exist (medium)
8
+ * #31 memory-staleness At least one agent wrote recently (low/informational)
9
+ * #32 memory-disk Disk usage within thresholds (medium)
10
+ */
11
+ import type { CheckResult } from '../types/health.js';
12
+ import type { FleetTopology } from '../types/fleet.js';
13
+ import { type CheckContext } from './check-context.js';
14
+ /** Parsed output from `openclaw memory status --deep`. */
15
+ interface MemoryStatusOutput {
16
+ provider: string | null;
17
+ embeddingsStatus: string | null;
18
+ indexedFiles: number;
19
+ chunks: number;
20
+ dirty: boolean;
21
+ vectorReady: boolean;
22
+ ftsReady: boolean;
23
+ }
24
+ /**
25
+ * Parse the output of `openclaw memory status --deep`.
26
+ * Handles the output defensively — unknown formats return null fields.
27
+ */
28
+ declare function parseMemoryStatus(output: string): MemoryStatusOutput;
29
+ /** Check #27: memory-provider — embedding provider is configured. */
30
+ export declare function checkMemoryProvider(ctx?: CheckContext): Promise<CheckResult>;
31
+ /** Check #28: memory-embeddings — embedding model is loaded and ready. */
32
+ export declare function checkMemoryEmbeddings(ctx?: CheckContext): Promise<CheckResult>;
33
+ /** Check #29: memory-indexing — files are indexed into chunks. */
34
+ export declare function checkMemoryIndexing(ctx?: CheckContext): Promise<CheckResult>;
35
+ /** Check #30: memory-agent-dirs — each fleet agent has memory directories. */
36
+ export declare function checkMemoryAgentDirs(topology: FleetTopology, ctx?: CheckContext): Promise<CheckResult>;
37
+ /** Check #31: memory-staleness — at least one agent wrote recently. */
38
+ export declare function checkMemoryStaleness(topology: FleetTopology, ctx?: CheckContext): Promise<CheckResult>;
39
+ /** Check #32: memory-disk — disk usage is within safe thresholds. */
40
+ export declare function checkMemoryDisk(ctx?: CheckContext): CheckResult;
41
+ /** Run all 6 memory health checks. */
42
+ export declare function runMemoryChecks(topology: FleetTopology, ctx?: CheckContext): Promise<CheckResult[]>;
43
+ export { parseMemoryStatus as _parseMemoryStatus_for_testing };
44
+ //# sourceMappingURL=memory-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-health.d.ts","sourceRoot":"","sources":["../../src/checks/memory-health.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAWlE,0DAA0D;AAC1D,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,iBAAS,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CA0C7D;AAYD,qEAAqE;AACrE,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA4DlF;AAED,0EAA0E;AAC1E,wBAAsB,qBAAqB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAiDpF;AAED,kEAAkE;AAClE,wBAAsB,mBAAmB,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAiDlF;AAED,8EAA8E;AAC9E,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,aAAa,EACvB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC,CAuCtB;AAED,uEAAuE;AACvE,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,aAAa,EACvB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,CAAC,CA8DtB;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,YAAY,GAAG,WAAW,CAyB/D;AAED,sCAAsC;AACtC,wBAAsB,eAAe,CACnC,QAAQ,EAAE,aAAa,EACvB,GAAG,CAAC,EAAE,YAAY,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CASxB;AAmCD,OAAO,EAAE,iBAAiB,IAAI,8BAA8B,EAAE,CAAC"}
@@ -0,0 +1,389 @@
1
+ /**
2
+ * Memory health checks — 6 checks in the 'memory' category.
3
+ *
4
+ * #27 memory-provider Embedding provider is configured (critical)
5
+ * #28 memory-embeddings Embedding model is ready (critical)
6
+ * #29 memory-indexing Files are indexed and not dirty (high)
7
+ * #30 memory-agent-dirs Agent memory directories exist (medium)
8
+ * #31 memory-staleness At least one agent wrote recently (low/informational)
9
+ * #32 memory-disk Disk usage within thresholds (medium)
10
+ */
11
+ import fs from 'node:fs';
12
+ import path from 'node:path';
13
+ import { exec, now } from './check-context.js';
14
+ import { getDefaultMemoryDir, STALENESS_THRESHOLD_HOURS } from '../memory/config.js';
15
+ import { patchMemoryConfig, triggerReindex, restartGateway, createAgentMemoryDirs, checkNativeBindings, } from '../memory/remediate.js';
16
+ import { checkDiskUsage } from '../memory/retention.js';
17
+ /**
18
+ * Parse the output of `openclaw memory status --deep`.
19
+ * Handles the output defensively — unknown formats return null fields.
20
+ */
21
+ function parseMemoryStatus(output) {
22
+ const result = {
23
+ provider: null,
24
+ embeddingsStatus: null,
25
+ indexedFiles: 0,
26
+ chunks: 0,
27
+ dirty: true,
28
+ vectorReady: false,
29
+ ftsReady: false,
30
+ };
31
+ for (const line of output.split('\n')) {
32
+ const lower = line.toLowerCase().trim();
33
+ if (lower.startsWith('provider:') || lower.includes('provider:')) {
34
+ const value = line.split(':').slice(1).join(':').trim().split(/\s/)[0];
35
+ if (value)
36
+ result.provider = value;
37
+ }
38
+ if (lower.startsWith('embeddings:') || lower.includes('embeddings:')) {
39
+ const value = line.split(':').slice(1).join(':').trim().split(/\s/)[0];
40
+ if (value)
41
+ result.embeddingsStatus = value;
42
+ }
43
+ if (lower.includes('indexed') && lower.includes('file')) {
44
+ const fileMatch = lower.match(/(\d+)\s*(\/\s*\d+\s*)?file/);
45
+ if (fileMatch?.[1])
46
+ result.indexedFiles = parseInt(fileMatch[1], 10);
47
+ }
48
+ if (lower.includes('chunk')) {
49
+ const chunkMatch = lower.match(/(\d+)\s*chunk/);
50
+ if (chunkMatch?.[1])
51
+ result.chunks = parseInt(chunkMatch[1], 10);
52
+ }
53
+ if (lower.includes('dirty')) {
54
+ result.dirty = !lower.includes('no');
55
+ }
56
+ if (lower.includes('vector') && lower.includes('ready')) {
57
+ result.vectorReady = true;
58
+ }
59
+ if (lower.includes('fts') && lower.includes('ready')) {
60
+ result.ftsReady = true;
61
+ }
62
+ }
63
+ return result;
64
+ }
65
+ /** Fetch memory status output, either from real CLI or mocked context. */
66
+ function getMemoryStatus(ctx) {
67
+ try {
68
+ const output = exec('openclaw memory status --deep', ctx);
69
+ return parseMemoryStatus(output);
70
+ }
71
+ catch {
72
+ return null;
73
+ }
74
+ }
75
+ /** Check #27: memory-provider — embedding provider is configured. */
76
+ export async function checkMemoryProvider(ctx) {
77
+ const start = Date.now();
78
+ const status = getMemoryStatus(ctx);
79
+ if (!status) {
80
+ return {
81
+ name: 'Memory provider configured',
82
+ category: 'memory',
83
+ status: 'fail',
84
+ message: 'Could not retrieve memory status (gateway may be down)',
85
+ timestamp: now(),
86
+ durationMs: Date.now() - start,
87
+ };
88
+ }
89
+ const provider = status.provider?.toLowerCase();
90
+ if (provider && provider !== 'none' && provider !== 'auto') {
91
+ return {
92
+ name: 'Memory provider configured',
93
+ category: 'memory',
94
+ status: 'pass',
95
+ message: `Provider: ${status.provider}`,
96
+ timestamp: now(),
97
+ durationMs: Date.now() - start,
98
+ };
99
+ }
100
+ // Auto-remediate: check native bindings first, then patch config
101
+ if (!checkNativeBindings(ctx)) {
102
+ return {
103
+ name: 'Memory provider configured',
104
+ category: 'memory',
105
+ status: 'fail',
106
+ message: "Provider not configured and node-llama-cpp native bindings missing. Run 'pnpm approve-builds' on the VPS.",
107
+ timestamp: now(),
108
+ durationMs: Date.now() - start,
109
+ };
110
+ }
111
+ const result = await patchMemoryConfig(ctx);
112
+ if (result.success) {
113
+ restartGateway(ctx);
114
+ return {
115
+ name: 'Memory provider configured',
116
+ category: 'memory',
117
+ status: 'warn',
118
+ message: `Provider was '${provider ?? 'none'}' — auto-configured to 'local'. Gateway restarted. Backup: ${result.backupPath}`,
119
+ timestamp: now(),
120
+ durationMs: Date.now() - start,
121
+ };
122
+ }
123
+ return {
124
+ name: 'Memory provider configured',
125
+ category: 'memory',
126
+ status: 'fail',
127
+ message: `Provider is '${provider ?? 'none'}' and auto-remediation failed: ${result.message}`,
128
+ timestamp: now(),
129
+ durationMs: Date.now() - start,
130
+ };
131
+ }
132
+ /** Check #28: memory-embeddings — embedding model is loaded and ready. */
133
+ export async function checkMemoryEmbeddings(ctx) {
134
+ const start = Date.now();
135
+ const status = getMemoryStatus(ctx);
136
+ if (!status) {
137
+ return {
138
+ name: 'Memory embeddings ready',
139
+ category: 'memory',
140
+ status: 'fail',
141
+ message: 'Could not retrieve memory status',
142
+ timestamp: now(),
143
+ durationMs: Date.now() - start,
144
+ };
145
+ }
146
+ const embStatus = status.embeddingsStatus?.toLowerCase();
147
+ if (embStatus === 'ready') {
148
+ return {
149
+ name: 'Memory embeddings ready',
150
+ category: 'memory',
151
+ status: 'pass',
152
+ message: 'Embedding model loaded',
153
+ timestamp: now(),
154
+ durationMs: Date.now() - start,
155
+ };
156
+ }
157
+ if (embStatus === 'loading') {
158
+ return {
159
+ name: 'Memory embeddings ready',
160
+ category: 'memory',
161
+ status: 'warn',
162
+ message: 'Embedding model still downloading/loading',
163
+ timestamp: now(),
164
+ durationMs: Date.now() - start,
165
+ };
166
+ }
167
+ // Auto-remediate: restart gateway to trigger model download
168
+ restartGateway(ctx);
169
+ return {
170
+ name: 'Memory embeddings ready',
171
+ category: 'memory',
172
+ status: 'warn',
173
+ message: `Embeddings '${embStatus ?? 'unavailable'}' — gateway restarted to trigger model load`,
174
+ timestamp: now(),
175
+ durationMs: Date.now() - start,
176
+ };
177
+ }
178
+ /** Check #29: memory-indexing — files are indexed into chunks. */
179
+ export async function checkMemoryIndexing(ctx) {
180
+ const start = Date.now();
181
+ const status = getMemoryStatus(ctx);
182
+ if (!status) {
183
+ return {
184
+ name: 'Memory indexing healthy',
185
+ category: 'memory',
186
+ status: 'fail',
187
+ message: 'Could not retrieve memory status',
188
+ timestamp: now(),
189
+ durationMs: Date.now() - start,
190
+ };
191
+ }
192
+ if (status.chunks > 0 && !status.dirty && status.vectorReady) {
193
+ return {
194
+ name: 'Memory indexing healthy',
195
+ category: 'memory',
196
+ status: 'pass',
197
+ message: `${status.indexedFiles} files, ${status.chunks} chunks indexed`,
198
+ timestamp: now(),
199
+ durationMs: Date.now() - start,
200
+ };
201
+ }
202
+ if (status.chunks > 0 && status.dirty) {
203
+ return {
204
+ name: 'Memory indexing healthy',
205
+ category: 'memory',
206
+ status: 'warn',
207
+ message: `${status.chunks} chunks but index is dirty — re-indexing may be in progress`,
208
+ timestamp: now(),
209
+ durationMs: Date.now() - start,
210
+ };
211
+ }
212
+ // Auto-remediate: trigger re-index (uses --deep --index to avoid EBUSY)
213
+ const reindexResult = triggerReindex(ctx);
214
+ return {
215
+ name: 'Memory indexing healthy',
216
+ category: 'memory',
217
+ status: reindexResult.success ? 'warn' : 'fail',
218
+ message: status.chunks === 0
219
+ ? `Zero chunks indexed — ${reindexResult.success ? 'triggered re-index' : reindexResult.message}`
220
+ : `Vector not ready — ${reindexResult.success ? 'triggered re-index' : reindexResult.message}`,
221
+ timestamp: now(),
222
+ durationMs: Date.now() - start,
223
+ };
224
+ }
225
+ /** Check #30: memory-agent-dirs — each fleet agent has memory directories. */
226
+ export async function checkMemoryAgentDirs(topology, ctx) {
227
+ const start = Date.now();
228
+ const memoryDir = ctx?.memoryDir ?? getDefaultMemoryDir();
229
+ const missing = [];
230
+ for (const agent of topology.agents) {
231
+ const subdirs = agent.memoryConfig?.subdirs ?? [];
232
+ for (const sub of subdirs) {
233
+ const dir = path.join(memoryDir, agent.id, sub);
234
+ if (!fs.existsSync(dir)) {
235
+ missing.push(`${agent.id}/${sub}`);
236
+ }
237
+ }
238
+ }
239
+ if (missing.length === 0) {
240
+ return {
241
+ name: 'Agent memory directories exist',
242
+ category: 'memory',
243
+ status: 'pass',
244
+ message: `All agent directories present in ${memoryDir}`,
245
+ timestamp: now(),
246
+ durationMs: Date.now() - start,
247
+ };
248
+ }
249
+ // Auto-remediate: create missing directories
250
+ const result = await createAgentMemoryDirs(topology, ctx);
251
+ return {
252
+ name: 'Agent memory directories exist',
253
+ category: 'memory',
254
+ status: result.success ? 'warn' : 'fail',
255
+ message: result.success
256
+ ? `Created missing directories: ${missing.join(', ')}`
257
+ : `Missing directories and could not create: ${result.message}`,
258
+ timestamp: now(),
259
+ durationMs: Date.now() - start,
260
+ };
261
+ }
262
+ /** Check #31: memory-staleness — at least one agent wrote recently. */
263
+ export async function checkMemoryStaleness(topology, ctx) {
264
+ const start = Date.now();
265
+ const memoryDir = ctx?.memoryDir ?? getDefaultMemoryDir();
266
+ const staleAgents = [];
267
+ const activeAgents = [];
268
+ const thresholdMs = STALENESS_THRESHOLD_HOURS * 60 * 60 * 1000;
269
+ const cutoff = Date.now() - thresholdMs;
270
+ const enabledAgents = topology.agents.filter(a => a.memoryConfig?.enabled);
271
+ if (enabledAgents.length === 0) {
272
+ return {
273
+ name: 'Memory write activity',
274
+ category: 'memory',
275
+ status: 'pass',
276
+ message: 'No agents have memory writing enabled',
277
+ timestamp: now(),
278
+ durationMs: Date.now() - start,
279
+ };
280
+ }
281
+ for (const agent of enabledAgents) {
282
+ const agentDir = path.join(memoryDir, agent.id);
283
+ const newest = findNewestFile(agentDir);
284
+ if (!newest || newest < cutoff) {
285
+ staleAgents.push(agent.id);
286
+ }
287
+ else {
288
+ activeAgents.push(agent.id);
289
+ }
290
+ }
291
+ if (staleAgents.length === 0) {
292
+ return {
293
+ name: 'Memory write activity',
294
+ category: 'memory',
295
+ status: 'pass',
296
+ message: `All ${activeAgents.length} agents wrote recently`,
297
+ timestamp: now(),
298
+ durationMs: Date.now() - start,
299
+ };
300
+ }
301
+ if (activeAgents.length > 0) {
302
+ return {
303
+ name: 'Memory write activity',
304
+ category: 'memory',
305
+ status: 'warn',
306
+ message: `Stale: ${staleAgents.join(', ')} (no writes in ${STALENESS_THRESHOLD_HOURS}h)`,
307
+ timestamp: now(),
308
+ durationMs: Date.now() - start,
309
+ };
310
+ }
311
+ return {
312
+ name: 'Memory write activity',
313
+ category: 'memory',
314
+ status: 'warn',
315
+ message: `No agents have written memory in ${STALENESS_THRESHOLD_HOURS}h`,
316
+ timestamp: now(),
317
+ durationMs: Date.now() - start,
318
+ };
319
+ }
320
+ /** Check #32: memory-disk — disk usage is within safe thresholds. */
321
+ export function checkMemoryDisk(ctx) {
322
+ const start = Date.now();
323
+ const memoryDir = ctx?.memoryDir ?? getDefaultMemoryDir();
324
+ const report = checkDiskUsage(memoryDir);
325
+ if (report.warnings.length === 0) {
326
+ const totalMB = (report.totalMemoryBytes / (1024 * 1024)).toFixed(1);
327
+ return {
328
+ name: 'Memory disk usage',
329
+ category: 'memory',
330
+ status: 'pass',
331
+ message: `Total: ${totalMB}MB, sessions: ${(report.sessionBytes / (1024 * 1024)).toFixed(1)}MB`,
332
+ timestamp: now(),
333
+ durationMs: Date.now() - start,
334
+ };
335
+ }
336
+ return {
337
+ name: 'Memory disk usage',
338
+ category: 'memory',
339
+ status: 'warn',
340
+ message: report.warnings.join('; '),
341
+ timestamp: now(),
342
+ durationMs: Date.now() - start,
343
+ };
344
+ }
345
+ /** Run all 6 memory health checks. */
346
+ export async function runMemoryChecks(topology, ctx) {
347
+ const results = [];
348
+ results.push(await checkMemoryProvider(ctx));
349
+ results.push(await checkMemoryEmbeddings(ctx));
350
+ results.push(await checkMemoryIndexing(ctx));
351
+ results.push(await checkMemoryAgentDirs(topology, ctx));
352
+ results.push(await checkMemoryStaleness(topology, ctx));
353
+ results.push(checkMemoryDisk(ctx));
354
+ return results;
355
+ }
356
+ /**
357
+ * Recursively find the most recent .md file mtime in a directory tree.
358
+ * Returns the mtime in ms, or null if no files found.
359
+ */
360
+ function findNewestFile(dir) {
361
+ if (!fs.existsSync(dir))
362
+ return null;
363
+ let newest = null;
364
+ try {
365
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
366
+ for (const entry of entries) {
367
+ if (entry.name.startsWith('.'))
368
+ continue;
369
+ const full = path.join(dir, entry.name);
370
+ if (entry.isDirectory()) {
371
+ const sub = findNewestFile(full);
372
+ if (sub !== null && (newest === null || sub > newest)) {
373
+ newest = sub;
374
+ }
375
+ }
376
+ else if (entry.name.endsWith('.md')) {
377
+ const stat = fs.statSync(full);
378
+ const mtime = stat.mtimeMs;
379
+ if (newest === null || mtime > newest) {
380
+ newest = mtime;
381
+ }
382
+ }
383
+ }
384
+ }
385
+ catch { /* ignore unreadable dirs */ }
386
+ return newest;
387
+ }
388
+ export { parseMemoryStatus as _parseMemoryStatus_for_testing };
389
+ //# sourceMappingURL=memory-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-health.js","sourceRoot":"","sources":["../../src/checks/memory-health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * CLI subcommands for `mighty-mark memory <subcommand>`.
3
+ *
4
+ * Subcommands:
5
+ * diagnose — Run all memory health checks and report status
6
+ * configure — Patch openclaw.json with local embedding configuration
7
+ * verify — Confirm memory search is working after configuration
8
+ * status — Show indexing statistics per agent
9
+ * organize — Sort loose memory files into agent subdirectories
10
+ * tag — Add YAML frontmatter to untagged memory files
11
+ * backfill — Generate memory files from existing JSON data stores
12
+ * retention — Enforce file count ceilings and check disk usage
13
+ */
14
+ export interface MemoryCommandArgs {
15
+ subcommand: string;
16
+ agent?: string;
17
+ since?: string;
18
+ dryRun?: boolean;
19
+ dataDir?: string;
20
+ }
21
+ export declare function cmdMemory(args: MemoryCommandArgs): Promise<void>;
22
+ //# sourceMappingURL=memory-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-commands.d.ts","sourceRoot":"","sources":["../../src/cli/memory-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBtE"}