@maadb/core 0.7.9 → 0.7.10-rc.3

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 (53) hide show
  1. package/README.md +2 -2
  2. package/dist/engine/backup.d.ts +9 -0
  3. package/dist/engine/backup.d.ts.map +1 -0
  4. package/dist/engine/backup.js +100 -0
  5. package/dist/engine/backup.js.map +1 -0
  6. package/dist/engine/index.d.ts +6 -0
  7. package/dist/engine/index.d.ts.map +1 -1
  8. package/dist/engine/index.js +5 -0
  9. package/dist/engine/index.js.map +1 -1
  10. package/dist/engine/reads.d.ts +2 -1
  11. package/dist/engine/reads.d.ts.map +1 -1
  12. package/dist/engine/reads.js +205 -2
  13. package/dist/engine/reads.js.map +1 -1
  14. package/dist/engine/types.d.ts +47 -1
  15. package/dist/engine/types.d.ts.map +1 -1
  16. package/dist/errors.d.ts +1 -1
  17. package/dist/errors.d.ts.map +1 -1
  18. package/dist/errors.js.map +1 -1
  19. package/dist/git/index.d.ts +22 -0
  20. package/dist/git/index.d.ts.map +1 -1
  21. package/dist/git/index.js +65 -0
  22. package/dist/git/index.js.map +1 -1
  23. package/dist/mcp/guardrails.d.ts +23 -2
  24. package/dist/mcp/guardrails.d.ts.map +1 -1
  25. package/dist/mcp/guardrails.js +22 -3
  26. package/dist/mcp/guardrails.js.map +1 -1
  27. package/dist/mcp/kinds.d.ts.map +1 -1
  28. package/dist/mcp/kinds.js +2 -0
  29. package/dist/mcp/kinds.js.map +1 -1
  30. package/dist/mcp/memory-pressure.d.ts +37 -0
  31. package/dist/mcp/memory-pressure.d.ts.map +1 -0
  32. package/dist/mcp/memory-pressure.js +179 -0
  33. package/dist/mcp/memory-pressure.js.map +1 -0
  34. package/dist/mcp/roles.d.ts.map +1 -1
  35. package/dist/mcp/roles.js +2 -1
  36. package/dist/mcp/roles.js.map +1 -1
  37. package/dist/mcp/server.d.ts.map +1 -1
  38. package/dist/mcp/server.js +10 -0
  39. package/dist/mcp/server.js.map +1 -1
  40. package/dist/mcp/tools/backup.d.ts +4 -0
  41. package/dist/mcp/tools/backup.d.ts.map +1 -0
  42. package/dist/mcp/tools/backup.js +52 -0
  43. package/dist/mcp/tools/backup.js.map +1 -0
  44. package/dist/mcp/tools/maintain.d.ts.map +1 -1
  45. package/dist/mcp/tools/maintain.js +8 -3
  46. package/dist/mcp/tools/maintain.js.map +1 -1
  47. package/dist/mcp/tools/read.d.ts.map +1 -1
  48. package/dist/mcp/tools/read.js +51 -7
  49. package/dist/mcp/tools/read.js.map +1 -1
  50. package/dist/parser/blocks.d.ts.map +1 -1
  51. package/dist/parser/blocks.js +3 -1
  52. package/dist/parser/blocks.js.map +1 -1
  53. package/package.json +1 -1
@@ -0,0 +1,179 @@
1
+ // ============================================================================
2
+ // Memory Pressure Watcher — periodic V8 heap-usage sampler.
3
+ //
4
+ // Samples process.memoryUsage().heapUsed against v8.getHeapStatistics()
5
+ // heap_size_limit on an interval and emits a degraded-severity log event
6
+ // when the ratio passes a configured threshold. Pure observability — never
7
+ // mutates engine state, never throws, never blocks shutdown.
8
+ //
9
+ // Background: cgroup-capped deployments (e.g. 512 MiB container on Node 24)
10
+ // trip V8's auto-calibrated old-space cap at ~253 MB heap_size_limit. Without
11
+ // this surface, the only signal that a process is approaching the cap is
12
+ // post-mortem (exitCode=134 with "Reached heap limit"). The watcher gives
13
+ // operators a pre-OOM warning + a counter in maad_health.
14
+ //
15
+ // Disabled when intervalMs <= 0 (set MAAD_MEMORY_PRESSURE_INTERVAL_MS=0).
16
+ // Cooldown prevents log spam under sustained pressure — one fire per
17
+ // cooldown window while the ratio stays above threshold; the first sample
18
+ // below threshold re-arms the edge trigger.
19
+ // ============================================================================
20
+ import v8 from 'node:v8';
21
+ import { logger } from '../engine/logger.js';
22
+ const DEFAULT_INTERVAL_MS = 60_000;
23
+ const DEFAULT_THRESHOLD_RATIO = 0.8;
24
+ const DEFAULT_COOLDOWN_MS = 5 * 60_000;
25
+ const defaultSampler = () => {
26
+ const stats = v8.getHeapStatistics();
27
+ return {
28
+ heapUsedBytes: stats.used_heap_size,
29
+ heapCapBytes: stats.heap_size_limit,
30
+ };
31
+ };
32
+ const state = {
33
+ intervalMs: 0,
34
+ thresholdRatio: DEFAULT_THRESHOLD_RATIO,
35
+ cooldownMs: DEFAULT_COOLDOWN_MS,
36
+ sampler: defaultSampler,
37
+ now: () => Date.now(),
38
+ timer: null,
39
+ lastSampleAtMs: null,
40
+ heapUsedBytes: null,
41
+ heapCapBytes: null,
42
+ inPressure: false,
43
+ lastPressureAtMs: null,
44
+ lastFireAtMs: null,
45
+ pressureFiresTotal: 0,
46
+ };
47
+ export function readMemoryPressureEnv() {
48
+ const intervalMs = parseNumericEnv(process.env.MAAD_MEMORY_PRESSURE_INTERVAL_MS, DEFAULT_INTERVAL_MS);
49
+ const rawThreshold = parseNumericEnv(process.env.MAAD_MEMORY_PRESSURE_RATIO, DEFAULT_THRESHOLD_RATIO);
50
+ const cooldownMs = parseNumericEnv(process.env.MAAD_MEMORY_PRESSURE_COOLDOWN_MS, DEFAULT_COOLDOWN_MS);
51
+ const thresholdRatio = clamp(rawThreshold, 0, 1);
52
+ return { intervalMs, thresholdRatio, cooldownMs };
53
+ }
54
+ function parseNumericEnv(raw, fallback) {
55
+ if (!raw)
56
+ return fallback;
57
+ const parsed = Number(raw);
58
+ return Number.isFinite(parsed) ? parsed : fallback;
59
+ }
60
+ export function initMemoryPressureWatcher(opts) {
61
+ stopMemoryPressureWatcher();
62
+ state.intervalMs = opts.intervalMs;
63
+ state.thresholdRatio = clamp(opts.thresholdRatio, 0, 1);
64
+ state.cooldownMs = Math.max(0, opts.cooldownMs);
65
+ state.sampler = opts.sampler ?? defaultSampler;
66
+ state.now = opts.now ?? (() => Date.now());
67
+ state.lastSampleAtMs = null;
68
+ state.heapUsedBytes = null;
69
+ state.heapCapBytes = null;
70
+ state.inPressure = false;
71
+ state.lastPressureAtMs = null;
72
+ state.lastFireAtMs = null;
73
+ state.pressureFiresTotal = 0;
74
+ if (opts.intervalMs <= 0)
75
+ return;
76
+ const timer = setInterval(sampleOnce, opts.intervalMs);
77
+ timer.unref();
78
+ state.timer = timer;
79
+ }
80
+ export function stopMemoryPressureWatcher() {
81
+ if (state.timer) {
82
+ clearInterval(state.timer);
83
+ state.timer = null;
84
+ }
85
+ }
86
+ /**
87
+ * Run one sample. Public so tests and shutdown paths can probe without
88
+ * waiting for the interval to fire. Never throws.
89
+ */
90
+ export function sampleOnce() {
91
+ let sample;
92
+ try {
93
+ sample = state.sampler();
94
+ }
95
+ catch {
96
+ return;
97
+ }
98
+ const nowMs = state.now();
99
+ state.lastSampleAtMs = nowMs;
100
+ state.heapUsedBytes = sample.heapUsedBytes;
101
+ state.heapCapBytes = sample.heapCapBytes;
102
+ if (sample.heapCapBytes <= 0)
103
+ return;
104
+ const ratio = sample.heapUsedBytes / sample.heapCapBytes;
105
+ if (ratio >= state.thresholdRatio) {
106
+ const cooldownPassed = state.lastFireAtMs === null
107
+ || (nowMs - state.lastFireAtMs) >= state.cooldownMs;
108
+ const edgeTrigger = !state.inPressure;
109
+ if (edgeTrigger || cooldownPassed) {
110
+ logger.degraded('engine', 'memory_pressure', `V8 heap at ${formatPct(ratio)}% of cap (${bytesToMb(sample.heapUsedBytes)}MB / ${bytesToMb(sample.heapCapBytes)}MB)`, {
111
+ heap_used_mb: bytesToMb(sample.heapUsedBytes),
112
+ heap_cap_mb: bytesToMb(sample.heapCapBytes),
113
+ ratio: round3(ratio),
114
+ threshold_ratio: state.thresholdRatio,
115
+ edge: edgeTrigger,
116
+ });
117
+ state.pressureFiresTotal++;
118
+ state.lastFireAtMs = nowMs;
119
+ state.lastPressureAtMs = nowMs;
120
+ }
121
+ state.inPressure = true;
122
+ }
123
+ else {
124
+ state.inPressure = false;
125
+ }
126
+ }
127
+ export function getMemoryPressureSnapshot() {
128
+ const heapUsed = state.heapUsedBytes;
129
+ const heapCap = state.heapCapBytes;
130
+ const ratio = heapUsed !== null && heapCap !== null && heapCap > 0
131
+ ? round3(heapUsed / heapCap) : null;
132
+ return {
133
+ enabled: state.intervalMs > 0,
134
+ intervalMs: state.intervalMs,
135
+ thresholdRatio: state.thresholdRatio,
136
+ lastSampleAt: state.lastSampleAtMs !== null ? new Date(state.lastSampleAtMs).toISOString() : null,
137
+ heapUsedMb: heapUsed !== null ? bytesToMb(heapUsed) : null,
138
+ heapCapMb: heapCap !== null ? bytesToMb(heapCap) : null,
139
+ ratio,
140
+ inPressure: state.inPressure,
141
+ lastPressureAt: state.lastPressureAtMs !== null ? new Date(state.lastPressureAtMs).toISOString() : null,
142
+ pressureFiresTotal: state.pressureFiresTotal,
143
+ };
144
+ }
145
+ /**
146
+ * Test hook — resets module state. Never call from production code.
147
+ */
148
+ export function __resetMemoryPressureForTests() {
149
+ stopMemoryPressureWatcher();
150
+ state.intervalMs = 0;
151
+ state.thresholdRatio = DEFAULT_THRESHOLD_RATIO;
152
+ state.cooldownMs = DEFAULT_COOLDOWN_MS;
153
+ state.sampler = defaultSampler;
154
+ state.now = () => Date.now();
155
+ state.lastSampleAtMs = null;
156
+ state.heapUsedBytes = null;
157
+ state.heapCapBytes = null;
158
+ state.inPressure = false;
159
+ state.lastPressureAtMs = null;
160
+ state.lastFireAtMs = null;
161
+ state.pressureFiresTotal = 0;
162
+ }
163
+ function bytesToMb(b) {
164
+ return Math.round((b / 1024 / 1024) * 10) / 10;
165
+ }
166
+ function round3(n) {
167
+ return Math.round(n * 1000) / 1000;
168
+ }
169
+ function formatPct(ratio) {
170
+ return (ratio * 100).toFixed(1);
171
+ }
172
+ function clamp(n, lo, hi) {
173
+ if (n < lo)
174
+ return lo;
175
+ if (n > hi)
176
+ return hi;
177
+ return n;
178
+ }
179
+ //# sourceMappingURL=memory-pressure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-pressure.js","sourceRoot":"","sources":["../../src/mcp/memory-pressure.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/mcp/roles.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AA8BjD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAE/D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAGvD;AAKD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAE7D;AAGD,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAE9C;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAK/D"}
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/mcp/roles.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AA+BjD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAE/D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAGvD;AAKD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAE7D;AAGD,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAE9C;AAID,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAK/D"}
package/dist/mcp/roles.js CHANGED
@@ -4,7 +4,7 @@
4
4
  const READER_TOOLS = [
5
5
  'maad_scan', 'maad_summary', 'maad_describe',
6
6
  'maad_get', 'maad_query', 'maad_search', 'maad_related', 'maad_schema', 'maad_aggregate', 'maad_join',
7
- 'maad_verify', 'maad_changes_since',
7
+ 'maad_verify', 'maad_find_orphans', 'maad_changes_since',
8
8
  'maad_history', 'maad_audit',
9
9
  'maad_subscribe', 'maad_unsubscribe',
10
10
  ];
@@ -19,6 +19,7 @@ const ADMIN_TOOLS = [
19
19
  'maad_subscriptions',
20
20
  'maad_issue_token', 'maad_revoke_token', 'maad_rotate_token',
21
21
  'maad_list_tokens', 'maad_show_token',
22
+ 'maad_backup',
22
23
  ];
23
24
  const ROLE_TOOLS = {
24
25
  reader: READER_TOOLS,
@@ -1 +1 @@
1
- {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/mcp/roles.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAI/E,MAAM,YAAY,GAAG;IACnB,WAAW,EAAE,cAAc,EAAE,eAAe;IAC5C,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW;IACrG,aAAa,EAAE,oBAAoB;IACnC,cAAc,EAAE,YAAY;IAC5B,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,GAAG,YAAY;IACf,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB;CAC7E,CAAC;AAEX,MAAM,WAAW,GAAG;IAClB,GAAG,YAAY;IACf,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa;IAC3D,sBAAsB;IACtB,oBAAoB;IACpB,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB;IAC5D,kBAAkB,EAAE,iBAAiB;CAC7B,CAAC;AAEX,MAAM,UAAU,GAAoC;IAClD,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,IAAU;IACxC,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAuB;IAC/C,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,GAAG,CAAC;IACxE,OAAO,QAAQ,CAAC,CAAC,2BAA2B;AAC9C,CAAC;AAED,MAAM,SAAS,GAAyB,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAE3E,iEAAiE;AACjE,MAAM,UAAU,aAAa,CAAC,IAAU,EAAE,IAAU;IAClD,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,OAAO,CAAC,CAAO,EAAE,CAAO;IACtC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,6EAA6E;AAC7E,oDAAoD;AACpD,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAK,YAAkC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5E,IAAK,YAAkC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5E,IAAK,WAAiC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/mcp/roles.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kDAAkD;AAClD,+EAA+E;AAI/E,MAAM,YAAY,GAAG;IACnB,WAAW,EAAE,cAAc,EAAE,eAAe;IAC5C,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW;IACrG,aAAa,EAAE,mBAAmB,EAAE,oBAAoB;IACxD,cAAc,EAAE,YAAY;IAC5B,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAEX,MAAM,YAAY,GAAG;IACnB,GAAG,YAAY;IACf,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,kBAAkB;CAC7E,CAAC;AAEX,MAAM,WAAW,GAAG;IAClB,GAAG,YAAY;IACf,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa;IAC3D,sBAAsB;IACtB,oBAAoB;IACpB,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB;IAC5D,kBAAkB,EAAE,iBAAiB;IACrC,aAAa;CACL,CAAC;AAEX,MAAM,UAAU,GAAoC;IAClD,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,IAAU;IACxC,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAuB;IAC/C,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,GAAG,CAAC;IACxE,OAAO,QAAQ,CAAC,CAAC,2BAA2B;AAC9C,CAAC;AAED,MAAM,SAAS,GAAyB,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAE3E,iEAAiE;AACjE,MAAM,UAAU,aAAa,CAAC,IAAU,EAAE,IAAU;IAClD,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,OAAO,CAAC,CAAO,EAAE,CAAO;IACtC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,6EAA6E;AAC7E,oDAAoD;AACpD,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAK,YAAkC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5E,IAAK,YAAkC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5E,IAAK,WAAiC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IAC1E,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAyCA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACrC;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+NnE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AA2CA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACrC;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuOnE"}
@@ -14,6 +14,7 @@ import { setGuardrailConfig } from './guardrails.js';
14
14
  import { setProvenanceMode } from './response.js';
15
15
  import { initIdempotencyCache, readIdempotencyEnv } from './idempotency.js';
16
16
  import { initRateLimiter, readRateLimitEnv } from './rate-limit.js';
17
+ import { initMemoryPressureWatcher, readMemoryPressureEnv, stopMemoryPressureWatcher } from './memory-pressure.js';
17
18
  import { initLogging, readLoggingEnv, logOpsChannelReady } from '../logging.js';
18
19
  import { installSignalHandlers } from './shutdown.js';
19
20
  import { installReloadSignalHandler } from './reload-signal.js';
@@ -32,6 +33,7 @@ import * as readTools from './tools/read.js';
32
33
  import * as writeTools from './tools/write.js';
33
34
  import * as auditTools from './tools/audit.js';
34
35
  import * as maintainTools from './tools/maintain.js';
36
+ import * as backupTools from './tools/backup.js';
35
37
  import * as instanceTools from './tools/instance.js';
36
38
  import * as authTools from './tools/auth.js';
37
39
  export async function startServer(opts) {
@@ -73,6 +75,11 @@ export async function startServer(opts) {
73
75
  });
74
76
  initIdempotencyCache(readIdempotencyEnv());
75
77
  initRateLimiter(readRateLimitEnv());
78
+ // 0.7.10 P5 — V8 heap-pressure sampler. Defaults: 60s interval, 0.8 ratio
79
+ // threshold, 5min fire cooldown. Set MAAD_MEMORY_PRESSURE_INTERVAL_MS=0 to
80
+ // disable. Emits degraded-severity ops events when V8 heap approaches the
81
+ // cgroup-driven heap cap so OOMs are visible pre-crash.
82
+ initMemoryPressureWatcher(readMemoryPressureEnv());
76
83
  // 0.7.0 — Load the token registry (HTTP+file mode) or null-out for stdio/synthetic.
77
84
  // Boot-mode enforcement happens in the HTTP branch below; in stdio/synthetic
78
85
  // the registry is irrelevant (no bearer channel). Parse errors at startup
@@ -125,6 +132,7 @@ export async function startServer(opts) {
125
132
  }
126
133
  if (legacyRole === 'admin') {
127
134
  toolCount += maintainTools.register(server, ctx);
135
+ toolCount += backupTools.register(server, ctx);
128
136
  // maad_instance_reload always registers for admin, even on synthetic
129
137
  // instances — handler rejects synthetic with INSTANCE_RELOAD_SYNTHETIC
130
138
  // rather than an opaque "unknown tool" response.
@@ -200,6 +208,7 @@ export async function startServer(opts) {
200
208
  });
201
209
  installSignalHandlers({ pool, rateLimiter: getRateLimiter() }, {
202
210
  finalCleanup: async () => {
211
+ stopMemoryPressureWatcher();
203
212
  try {
204
213
  await handle.close();
205
214
  }
@@ -228,6 +237,7 @@ export async function startServer(opts) {
228
237
  ctx.sessions.registerCloseHandler((sid) => { unregN(sid); });
229
238
  installSignalHandlers({ pool, rateLimiter: getRateLimiter() }, {
230
239
  finalCleanup: async () => {
240
+ stopMemoryPressureWatcher();
231
241
  try {
232
242
  await server.close();
233
243
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { InstanceCtx } from '../ctx.js';
3
+ export declare function register(server: McpServer, ctx: InstanceCtx): number;
4
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/backup.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CA4CpE"}
@@ -0,0 +1,52 @@
1
+ // ============================================================================
2
+ // 0.7.10 — maad_backup MCP tool. Admin-tier, write-kind (mutates git refs).
3
+ //
4
+ // Three modes in one tool (per spec lock):
5
+ // create — annotated tag on HEAD, returns { tag, sha, message, createdAt }
6
+ // list — every maad-snapshot-* tag, optional since: ISO8601 filter
7
+ // delete — drop a maad-snapshot-* tag (refuses other tags)
8
+ //
9
+ // No confirm contract — tag operations don't destroy underlying commits. The
10
+ // explicit mode arg + named tag is the intent gate.
11
+ // ============================================================================
12
+ import { z } from 'zod';
13
+ import { resultToResponse } from '../response.js';
14
+ import { withEngine } from '../with-session.js';
15
+ export function register(server, ctx) {
16
+ server.registerTool('maad_backup', {
17
+ description: 'Create / list / delete named recovery anchors via annotated git tags. Tag format: maad-snapshot-YYYY-MM-DD-HHMM[-label] (UTC). Defaults to mode: "create" so the common case is a one-arg call. delete only operates on maad-snapshot-* tags; non-snapshot tags are refused. Underlying commits are never touched — deleting a tag just drops the label.',
18
+ inputSchema: z.object({
19
+ mode: z.enum(['create', 'list', 'delete']).optional().describe('Operation mode (default: "create")'),
20
+ label: z.string().optional().describe('create only — operator-supplied suffix, sanitized to [a-z0-9-] capped at 32 chars'),
21
+ message: z.string().optional().describe('create only — annotated tag message (defaults to "MAADB snapshot at <sha> (\'<branch>\')")'),
22
+ tag: z.string().optional().describe('delete only — exact tag name to remove'),
23
+ since: z.string().optional().describe('list only — ISO8601 timestamp; return only tags created at or after this point'),
24
+ project: z.string().optional().describe('Project name (multi-project mode only)'),
25
+ }),
26
+ }, async (args, extra) => withEngine(ctx, extra, 'maad_backup', args, async ({ engine }) => {
27
+ const mode = args.mode ?? 'create';
28
+ if (mode === 'create') {
29
+ const opts = {};
30
+ if (args.label !== undefined)
31
+ opts.label = args.label;
32
+ if (args.message !== undefined)
33
+ opts.message = args.message;
34
+ return resultToResponse(await engine.backupCreate(opts), 'maad_backup');
35
+ }
36
+ if (mode === 'list') {
37
+ const opts = {};
38
+ if (args.since !== undefined)
39
+ opts.since = args.since;
40
+ return resultToResponse(await engine.backupList(opts), 'maad_backup');
41
+ }
42
+ if (mode === 'delete') {
43
+ if (!args.tag) {
44
+ return resultToResponse({ ok: false, errors: [{ code: 'INVALID_ARGS', message: 'delete mode requires tag' }] }, 'maad_backup');
45
+ }
46
+ return resultToResponse(await engine.backupDelete(args.tag), 'maad_backup');
47
+ }
48
+ return resultToResponse({ ok: false, errors: [{ code: 'INVALID_ARGS', message: 'mode must be "create", "list", or "delete"' }] }, 'maad_backup');
49
+ }));
50
+ return 1;
51
+ }
52
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../../src/mcp/tools/backup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"maintain.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/maintain.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAgHpE"}
1
+ {"version":3,"file":"maintain.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/maintain.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAK7C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAoHpE"}
@@ -8,6 +8,7 @@ import { notifyWrite } from '../notifications.js';
8
8
  import { isDryRun, dryRunResponse, auditToolCall } from '../guardrails.js';
9
9
  import { withEngine } from '../with-session.js';
10
10
  import { getTransportSnapshot, isInitialized as telemetryInitialized } from '../transport/telemetry.js';
11
+ import { getMemoryPressureSnapshot } from '../memory-pressure.js';
11
12
  export function register(server, ctx) {
12
13
  server.registerTool('maad_delete', {
13
14
  description: 'Deletes a record. Soft: renames file with _deleted prefix. Hard: removes file entirely.',
@@ -55,7 +56,7 @@ export function register(server, ctx) {
55
56
  return resultToResponse(await engine.reload());
56
57
  }));
57
58
  server.registerTool('maad_health', {
58
- description: 'Engine health + transport + session telemetry + instance reload stats. sessions block: {active, pinned, subscribed, byProject: {<project>:{<role>:count}}, byIdentity: {<agent_id|anonymous>:count}, ...lifecycle counters}. instance block: {source, configPath?, projectCount, reload counters}.',
59
+ description: 'Engine health + transport + session telemetry + instance reload stats. sessions block: {active, pinned, subscribed, byProject: {<project>:{<role>:count}}, byIdentity: {<agent_id|anonymous>:count}, ...lifecycle counters}. instance block: {source, configPath?, projectCount, reload counters}. runtime block: {memoryPressure: {enabled, intervalMs, thresholdRatio, lastSampleAt, heapUsedMb, heapCapMb, ratio, inPressure, lastPressureAt, pressureFiresTotal}}.',
59
60
  inputSchema: z.object({
60
61
  project: z.string().optional().describe('Project name (multi-project mode only)'),
61
62
  }),
@@ -108,9 +109,13 @@ export function register(server, ctx) {
108
109
  const sessionsBlock = telemetry
109
110
  ? { ...telemetry.sessions, subscribed: subscribedCount, byProject, byIdentity }
110
111
  : { subscribed: subscribedCount, byProject, byIdentity };
112
+ // 0.7.10 P5 — runtime block surfaces process-level memory-pressure state so
113
+ // operators can read V8 heap pressure without grepping logs. Snapshot is
114
+ // always present; `enabled: false` indicates the sampler is disabled.
115
+ const runtime = { memoryPressure: getMemoryPressureSnapshot() };
111
116
  const payload = telemetry
112
- ? { ...health, provenance: provMode, transport: telemetry.transport, sessions: sessionsBlock, instance: instanceBlock }
113
- : { ...health, provenance: provMode, sessions: sessionsBlock, instance: instanceBlock };
117
+ ? { ...health, provenance: provMode, transport: telemetry.transport, sessions: sessionsBlock, instance: instanceBlock, runtime }
118
+ : { ...health, provenance: provMode, sessions: sessionsBlock, instance: instanceBlock, runtime };
114
119
  return successResponse(payload, 'maad_health');
115
120
  }));
116
121
  return 4;
@@ -1 +1 @@
1
- {"version":3,"file":"maintain.js","sourceRoot":"","sources":["../../../src/mcp/tools/maintain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"maintain.js","sourceRoot":"","sources":["../../../src/mcp/tools/maintain.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/read.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAyOpE"}
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/read.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CA8QpE"}
@@ -182,15 +182,24 @@ export function register(server, ctx) {
182
182
  return guardResponseSize(response, { tool: 'maad_aggregate' });
183
183
  }));
184
184
  server.registerTool('maad_verify', {
185
- description: 'Fact-check a claim against the database. Two modes: (1) field — verify a specific field value on a document, (2) count — verify a document count for a type with optional filters. Use this BEFORE stating any number, date, amount, or count as fact.',
185
+ description: 'Fact-check or audit. Three modes: (1) field — verify a specific field value on a document, (2) count — verify a document count for a type with optional filters, (3) integrity — sweep markdown on disk, compare to the SQLite index, and report five drift categories (missing_in_index, missing_on_disk, hash_drift, schema_drift, broken_refs). Field/count: use BEFORE stating any number, date, amount, or count as fact. Integrity: use after external git pulls, manual edits, or schema-pack version bumps to confirm the project is consistent.',
186
186
  inputSchema: z.object({
187
- mode: z.enum(['field', 'count']).describe('Verification mode'),
188
- docId: z.string().optional().describe('Document ID (required for field mode)'),
187
+ mode: z.enum(['field', 'count', 'integrity']).describe('Verification mode'),
188
+ docId: z.string().optional().describe('Document ID (required for field mode, optional scope filter for integrity mode)'),
189
189
  field: z.string().optional().describe('Field name to verify (required for field mode)'),
190
190
  expected: z.any().optional().describe('Expected value for the field (required for field mode)'),
191
- docType: z.string().optional().describe('Document type (required for count mode)'),
191
+ docType: z.string().optional().describe('Document type (required for count mode, optional scope filter for integrity mode)'),
192
192
  expectedCount: z.number().optional().describe('Expected document count (required for count mode)'),
193
- filters: z.any().optional().describe('Field filters for count mode (same format as maad_query)'),
193
+ filters: z.any().optional().describe('Field filters (same format as maad_query). Used by count and integrity modes.'),
194
+ // 0.7.10 — integrity mode inputs
195
+ categories: z.array(z.enum([
196
+ 'missing_in_index',
197
+ 'missing_on_disk',
198
+ 'hash_drift',
199
+ 'schema_drift',
200
+ 'broken_refs',
201
+ ])).optional().describe('Integrity mode: which finding categories to compute. Default: all five.'),
202
+ verbose: z.boolean().optional().describe('Integrity mode: include per-record details[] in the response. Default false (summary only).'),
194
203
  project: z.string().optional().describe('Project name (multi-project mode only)'),
195
204
  }),
196
205
  }, async (args, extra) => withEngine(ctx, extra, 'maad_verify', args, async ({ engine }) => {
@@ -206,7 +215,42 @@ export function register(server, ctx) {
206
215
  }
207
216
  return resultToResponse(engine.verifyCount(docType(args.docType), args.expectedCount, args.filters), 'maad_verify');
208
217
  }
209
- return resultToResponse({ ok: false, errors: [{ code: 'INVALID_ARGS', message: 'mode must be "field" or "count"' }] }, 'maad_verify');
218
+ if (args.mode === 'integrity') {
219
+ const integrityQuery = {};
220
+ if (args.docType !== undefined)
221
+ integrityQuery.docType = docType(args.docType);
222
+ if (args.docId !== undefined)
223
+ integrityQuery.docId = docId(args.docId);
224
+ if (args.filters !== undefined)
225
+ integrityQuery.filter = args.filters;
226
+ if (args.categories !== undefined)
227
+ integrityQuery.categories = args.categories;
228
+ if (args.verbose !== undefined)
229
+ integrityQuery.verbose = args.verbose;
230
+ return resultToResponse(await engine.verifyIntegrity(integrityQuery), 'maad_verify');
231
+ }
232
+ return resultToResponse({ ok: false, errors: [{ code: 'INVALID_ARGS', message: 'mode must be "field", "count", or "integrity"' }] }, 'maad_verify');
233
+ }));
234
+ server.registerTool('maad_find_orphans', {
235
+ description: 'Inventory records with broken refs — frontmatter ref fields pointing at docIds that do not exist in the index. Convenience wrapper over maad_verify integrity mode (categories: ["broken_refs"], verbose: true). Use before any repair workflow to see what would be cleaned up.',
236
+ inputSchema: z.object({
237
+ docType: z.string().optional().describe('Restrict scan to one docType'),
238
+ docId: z.string().optional().describe('Restrict scan to a single record'),
239
+ filters: z.any().optional().describe('Field filters (same format as maad_query). Only records already in the index are in scope when filter is set.'),
240
+ project: z.string().optional().describe('Project name (multi-project mode only)'),
241
+ }),
242
+ }, async (args, extra) => withEngine(ctx, extra, 'maad_find_orphans', args, async ({ engine }) => {
243
+ const integrityQuery = {
244
+ categories: ['broken_refs'],
245
+ verbose: true,
246
+ };
247
+ if (args.docType !== undefined)
248
+ integrityQuery.docType = docType(args.docType);
249
+ if (args.docId !== undefined)
250
+ integrityQuery.docId = docId(args.docId);
251
+ if (args.filters !== undefined)
252
+ integrityQuery.filter = args.filters;
253
+ return resultToResponse(await engine.verifyIntegrity(integrityQuery), 'maad_find_orphans');
210
254
  }));
211
255
  server.registerTool('maad_join', {
212
256
  description: 'Queries documents and follows ref fields to return projected fields from both source and target records in one call. Eliminates N+1 round-trips. Example: all cases with their client name and attorney name.',
@@ -255,6 +299,6 @@ export function register(server, ctx) {
255
299
  q.docTypes = args.docTypes;
256
300
  return resultToResponse(engine.changesSince(q), 'maad_changes_since');
257
301
  }));
258
- return 9;
302
+ return 10;
259
303
  }
260
304
  //# sourceMappingURL=read.js.map