@adaptivemcp/memory 0.3.0 → 0.5.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kemal Elmizan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAAC;CAChC;AAwCD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,EAOjC,CAAC;AAEF,mGAAmG;AACnG,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,GAAE,SAAS,EAAe,GAAG,IAAI,CAkB1F"}
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAAC;CAChC;AAwCD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,EAmEjC,CAAC;AAEF,mGAAmG;AACnG,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,EAAE,UAAU,GAAE,SAAS,EAAe,GAAG,IAAI,CAsB1F"}
@@ -48,6 +48,63 @@ export const MIGRATIONS = [
48
48
  name: "add_nodes_timestamp_index",
49
49
  up: (db) => db.exec(`CREATE INDEX IF NOT EXISTS idx_nodes_timestamp ON execution_nodes(timestamp)`),
50
50
  },
51
+ {
52
+ version: 3,
53
+ name: "add_metric_cells",
54
+ up: (db) => db.exec(`
55
+ CREATE TABLE IF NOT EXISTS metric_cells (
56
+ tool_name TEXT NOT NULL,
57
+ server_name TEXT NOT NULL DEFAULT '',
58
+ window TEXT NOT NULL DEFAULT 'all',
59
+ dims_key TEXT NOT NULL,
60
+ dims TEXT NOT NULL,
61
+ invocations INTEGER NOT NULL DEFAULT 0,
62
+ failures INTEGER NOT NULL DEFAULT 0,
63
+ error_codes TEXT NOT NULL DEFAULT '{}',
64
+ duration_sum REAL NOT NULL DEFAULT 0,
65
+ duration_count INTEGER NOT NULL DEFAULT 0,
66
+ duration_hist TEXT NOT NULL DEFAULT '[]',
67
+ token_in_sum REAL NOT NULL DEFAULT 0,
68
+ token_out_sum REAL NOT NULL DEFAULT 0,
69
+ token_count INTEGER NOT NULL DEFAULT 0,
70
+ cost_sum REAL NOT NULL DEFAULT 0,
71
+ ewma_failure_rate REAL,
72
+ ewma_duration_ms REAL,
73
+ first_seen TEXT,
74
+ last_seen TEXT,
75
+ exemplars TEXT NOT NULL DEFAULT '[]',
76
+ PRIMARY KEY (tool_name, server_name, window, dims_key)
77
+ );
78
+ CREATE INDEX IF NOT EXISTS idx_metric_cells_tool ON metric_cells(tool_name, server_name);
79
+ `),
80
+ },
81
+ {
82
+ version: 4,
83
+ name: "add_metric_cells_attempts",
84
+ up: (db) => db.exec(`ALTER TABLE metric_cells ADD COLUMN attempts INTEGER NOT NULL DEFAULT 0`),
85
+ },
86
+ {
87
+ version: 5,
88
+ name: "add_suspensions",
89
+ up: (db) => db.exec(`
90
+ CREATE TABLE IF NOT EXISTS suspensions (
91
+ id TEXT PRIMARY KEY,
92
+ session_id TEXT NOT NULL,
93
+ kind TEXT NOT NULL,
94
+ question TEXT NOT NULL,
95
+ response_schema TEXT,
96
+ resume_state TEXT,
97
+ status TEXT NOT NULL,
98
+ answer TEXT,
99
+ reason TEXT,
100
+ created_at TEXT NOT NULL,
101
+ resolved_at TEXT
102
+ );
103
+
104
+ CREATE INDEX IF NOT EXISTS idx_suspensions_session ON suspensions(session_id, status);
105
+ CREATE INDEX IF NOT EXISTS idx_suspensions_status ON suspensions(status);
106
+ `),
107
+ },
51
108
  ];
52
109
  /** Applies every migration in `migrations` that hasn't already been recorded, in version order. */
53
110
  export function runMigrations(db, migrations = MIGRATIONS) {
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCnB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;IACrE;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,2BAA2B;QACjC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,8EAA8E,CAAC;KACpG;CACF,CAAC;AAEF,mGAAmG;AACnG,MAAM,UAAU,aAAa,CAAC,EAAgB,EAAE,aAA0B,UAAU;IAClF,EAAE,CAAC,IAAI,CACL;;;;MAIE,CACH,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,CACpB,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,EAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAC3G,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,4EAA4E,CAAC,CAAC;IACxG,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,SAAS;QAC7C,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCnB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;IACrE;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,2BAA2B;QACjC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CACT,EAAE,CAAC,IAAI,CAAC,8EAA8E,CAAC;KAC1F;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,kBAAkB;QACxB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;CAyBb,CAAC;KACC;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,2BAA2B;QACjC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,yEAAyE,CAAC;KAC/F;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,iBAAiB;QACvB,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CACT,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;CAiBb,CAAC;KACC;CACF,CAAC;AAEF,mGAAmG;AACnG,MAAM,UAAU,aAAa,CAAC,EAAgB,EAAE,aAA0B,UAAU;IAClF,EAAE,CAAC,IAAI,CACL;;;;MAIE,CACH,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,GAAG,CACpB,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,EAA4B,CAAC,GAAG,CACtF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CACjB,CACF,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,4EAA4E,CAC7E,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,SAAS;QAC7C,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
package/dist/store.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { type DatabaseSyncOptions } from "node:sqlite";
2
- import type { Annotation, Insight, Recommendation, RecommendationType, Store, ToolExecutionEvent, ToolRecord, ExecutionNode } from "@adaptivemcp/spec";
1
+ import type { DatabaseSyncOptions } from "node:sqlite";
2
+ import type { Annotation, Insight, MetricCell, Recommendation, RecommendationType, Store, ToolExecutionEvent, ToolRecord, ExecutionNode, Suspension, SuspensionResolution, SuspensionStatus } from "@adaptivemcp/spec";
3
3
  export interface MemoryStorePragmaOptions {
4
4
  journalMode?: string;
5
5
  synchronous?: string;
@@ -19,6 +19,14 @@ export interface MemoryStoreOptions {
19
19
  retention?: {
20
20
  maxAgeMs: number;
21
21
  };
22
+ /**
23
+ * Cardinality guardrail for metric cells: cap the number of distinct `model`
24
+ * dimensions per tool; new models past the cap fold into a single `other`
25
+ * bucket. Defaults to 8.
26
+ */
27
+ metricCardinality?: {
28
+ maxModelsPerTool?: number;
29
+ };
22
30
  }
23
31
  /**
24
32
  * SQLite-backed store for Adaptive MCP.
@@ -31,6 +39,7 @@ export declare class MemoryStore implements Store {
31
39
  private db;
32
40
  private readonly isMemory;
33
41
  private readonly retention?;
42
+ private readonly maxModelsPerTool;
34
43
  private lastPrunedAt;
35
44
  constructor(options?: MemoryStoreOptions);
36
45
  close(): void;
@@ -73,6 +82,23 @@ export declare class MemoryStore implements Store {
73
82
  clearRecommendations(toolName: string, type: RecommendationType, serverName?: string): ToolRecord;
74
83
  /** Fold a tool execution event into the persisted stats. */
75
84
  recordExecution(event: ToolExecutionEvent): ToolRecord;
85
+ /**
86
+ * Read pre-aggregated metric cells (bounded dimensional rollups). This is the
87
+ * durable, queryable metadata layer that replaces a raw events table.
88
+ */
89
+ metricCells(options?: {
90
+ toolName?: string;
91
+ serverName?: string;
92
+ }): MetricCell[];
93
+ /** Pre-aggregate an event into the bounded set of metric cells it belongs to. */
94
+ private foldMetricCells;
95
+ /**
96
+ * Cardinality guardrail: fold new models past the per-tool cap into a single
97
+ * `other` bucket. Existing models and the bucket itself always pass through.
98
+ */
99
+ private capModel;
100
+ private readMetricCell;
101
+ private writeMetricCell;
76
102
  /** `server_name` is part of the primary key, so it's matched in WHERE, not reassigned in SET. */
77
103
  private write;
78
104
  /** Record an execution node in the graph. */
@@ -87,6 +113,10 @@ export declare class MemoryStore implements Store {
87
113
  deleted: number;
88
114
  };
89
115
  private maybeOpportunisticPrune;
116
+ /** Delete hourly (non-`all`) metric cells older than `olderThanMs`; `all` is kept. */
117
+ pruneMetricCells(olderThanMs: number, now?: number): {
118
+ deleted: number;
119
+ };
90
120
  /** Get an execution node by ID. */
91
121
  getExecutionNode(id: string): ExecutionNode | undefined;
92
122
  /** Get all nodes for a session. */
@@ -95,6 +125,8 @@ export declare class MemoryStore implements Store {
95
125
  getNodesByWorkflow(workflowId: string): ExecutionNode[];
96
126
  /** Get every distinct workflow ID that has at least one recorded execution node. */
97
127
  getWorkflowIds(): string[];
128
+ /** Get every distinct session ID that has at least one recorded execution node. */
129
+ getSessionIds(): string[];
98
130
  /** Get children of a node. */
99
131
  getChildren(parentId: string): ExecutionNode[];
100
132
  /** Get parent of a node. */
@@ -105,5 +137,17 @@ export declare class MemoryStore implements Store {
105
137
  getLeafNodes(sessionId: string): ExecutionNode[];
106
138
  /** Update children IDs of a parent node. */
107
139
  updateChildrenIds(parentId: string, childrenIds: string[]): void;
140
+ /** Persist a suspension (a run paused awaiting a human). */
141
+ recordSuspension(suspension: Suspension): Suspension;
142
+ /** Read one suspension by id. */
143
+ getSuspension(id: string): Suspension | undefined;
144
+ /** Every suspension for a session, newest first; filtered by status when given. */
145
+ getSuspensions(sessionId: string, status?: SuspensionStatus): Suspension[];
146
+ /**
147
+ * Resolve a suspension — with an answer, or with the reason it was not
148
+ * answered. Idempotent: an already-resolved record is returned unchanged, so a
149
+ * replayed resume cannot overwrite the first answer.
150
+ */
151
+ resolveSuspension(id: string, resolution: SuspensionResolution): Suspension | undefined;
108
152
  }
109
153
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,KAAK,EACL,kBAAkB,EAClB,UAAU,EAEV,aAAa,EACd,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,wBAAwB;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,4FAA4F;IAC5F,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC;AAkDD;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,KAAK;IACvC,OAAO,CAAC,EAAE,CAAe;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAuB;IAClD,OAAO,CAAC,YAAY,CAAK;gBAEb,OAAO,GAAE,kBAAuB;IAiB5C,KAAK,IAAI,IAAI;IAIb;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;IAoC7D,4EAA4E;IAC5E,OAAO,CAAC,WAAW;IAenB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAYtE,QAAQ,IAAI,UAAU,EAAE;IAOxB,sEAAsE;IACtE,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU;IAWjD,+DAA+D;IAC/D,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU;IAYxC,oCAAoC;IACpC,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,UAAU;IAWlD;;;;OAIG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,UAAU;IAWjG,4DAA4D;IAC5D,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,UAAU;IAatD,iGAAiG;IACjG,OAAO,CAAC,KAAK;IAkBb,6CAA6C;IAC7C,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa;IA4BvD;;;;;OAKG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAOvF,OAAO,CAAC,uBAAuB;IAO/B,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAOvD,mCAAmC;IACnC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE;IAOrD,sDAAsD;IACtD,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,EAAE;IAOvD,oFAAoF;IACpF,cAAc,IAAI,MAAM,EAAE;IAO1B,8BAA8B;IAC9B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE;IAY9C,4BAA4B;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAMrD,gDAAgD;IAChD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE;IAOhD,kDAAkD;IAClD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE;IAOhD,4CAA4C;IAC5C,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI;CAKjE"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/dist/store.js CHANGED
@@ -1,5 +1,6 @@
1
- import { DatabaseSync } from "node:sqlite";
1
+ import { createRequire } from "node:module";
2
2
  import { runMigrations } from "./migrations.js";
3
+ const { DatabaseSync: DatabaseSyncCtor } = createRequire(import.meta.url)("node:sqlite");
3
4
  const DEFAULT_PRAGMAS = {
4
5
  journalMode: "WAL",
5
6
  synchronous: "NORMAL",
@@ -27,12 +28,14 @@ export class MemoryStore {
27
28
  db;
28
29
  isMemory;
29
30
  retention;
31
+ maxModelsPerTool;
30
32
  lastPrunedAt = 0;
31
33
  constructor(options = {}) {
32
34
  const path = options.path ?? ":memory:";
33
35
  this.isMemory = path === ":memory:";
34
36
  this.retention = options.retention;
35
- this.db = new DatabaseSync(path, options.dbOptions ?? {});
37
+ this.maxModelsPerTool = options.metricCardinality?.maxModelsPerTool ?? 8;
38
+ this.db = new DatabaseSyncCtor(path, options.dbOptions ?? {});
36
39
  const pragmas = { ...DEFAULT_PRAGMAS, ...options.pragmas };
37
40
  if (!this.isMemory) {
38
41
  this.db.exec(`PRAGMA journal_mode = ${pragmas.journalMode}`);
@@ -179,8 +182,84 @@ export class MemoryStore {
179
182
  updatedAt: new Date().toISOString(),
180
183
  };
181
184
  this.write(updated);
185
+ this.foldMetricCells(event);
182
186
  return updated;
183
187
  }
188
+ /**
189
+ * Read pre-aggregated metric cells (bounded dimensional rollups). This is the
190
+ * durable, queryable metadata layer that replaces a raw events table.
191
+ */
192
+ metricCells(options = {}) {
193
+ const clauses = [];
194
+ const params = [];
195
+ if (options.toolName !== undefined) {
196
+ clauses.push("tool_name = ?");
197
+ params.push(options.toolName);
198
+ }
199
+ if (options.serverName !== undefined) {
200
+ clauses.push("server_name = ?");
201
+ params.push(options.serverName);
202
+ }
203
+ const where = clauses.length > 0 ? ` WHERE ${clauses.join(" AND ")}` : "";
204
+ const rows = this.db
205
+ .prepare(`SELECT * FROM metric_cells${where} ORDER BY tool_name, server_name, dims_key`)
206
+ .all(...params);
207
+ return rows.map(deserializeMetricCell);
208
+ }
209
+ /** Pre-aggregate an event into the bounded set of metric cells it belongs to. */
210
+ foldMetricCells(event) {
211
+ const now = event.timestamp ?? new Date().toISOString();
212
+ const model = event.model !== undefined
213
+ ? this.capModel(event.toolName, event.serverName ?? UNKNOWN_SERVER, event.model)
214
+ : undefined;
215
+ for (const dimensions of cellDimensionsFor(event, model)) {
216
+ const key = dimsKey(dimensions);
217
+ // The overall `{}` cell also gets an hourly window (for drift); dimensioned
218
+ // cells keep only the lifetime aggregate to bound write amplification.
219
+ const windows = Object.keys(dimensions).length === 0 ? ["all", windowKey(now)] : ["all"];
220
+ for (const window of windows) {
221
+ const existing = this.readMetricCell(event.toolName, event.serverName ?? UNKNOWN_SERVER, window, key);
222
+ this.writeMetricCell(foldMetricCell(existing, event, dimensions, window, now), key);
223
+ }
224
+ }
225
+ }
226
+ /**
227
+ * Cardinality guardrail: fold new models past the per-tool cap into a single
228
+ * `other` bucket. Existing models and the bucket itself always pass through.
229
+ */
230
+ capModel(toolName, serverName, model) {
231
+ if (model === "other")
232
+ return model;
233
+ const rows = this.db
234
+ .prepare(`SELECT dims FROM metric_cells WHERE tool_name = ? AND server_name = ? AND window = 'all'`)
235
+ .all(toolName, serverName);
236
+ const models = new Set();
237
+ for (const row of rows) {
238
+ const dims = JSON.parse(row.dims);
239
+ if (dims.model)
240
+ models.add(dims.model);
241
+ }
242
+ if (models.has(model) || models.size < this.maxModelsPerTool)
243
+ return model;
244
+ return "other";
245
+ }
246
+ readMetricCell(toolName, serverName, window, dimsKeyValue) {
247
+ const row = this.db
248
+ .prepare(`SELECT * FROM metric_cells WHERE tool_name = ? AND server_name = ? AND window = ? AND dims_key = ?`)
249
+ .get(toolName, serverName, window, dimsKeyValue);
250
+ return row ? deserializeMetricCell(row) : undefined;
251
+ }
252
+ writeMetricCell(cell, dimsKeyValue) {
253
+ this.db
254
+ .prepare(`INSERT OR REPLACE INTO metric_cells (
255
+ tool_name, server_name, window, dims_key, dims,
256
+ invocations, failures, attempts, error_codes,
257
+ duration_sum, duration_count, duration_hist,
258
+ token_in_sum, token_out_sum, token_count, cost_sum,
259
+ ewma_failure_rate, ewma_duration_ms, first_seen, last_seen, exemplars
260
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
261
+ .run(cell.toolName, cell.serverName ?? UNKNOWN_SERVER, cell.window, dimsKeyValue, JSON.stringify(cell.dimensions), cell.invocations, cell.failures, cell.attempts, JSON.stringify(cell.errorCodes), cell.durationSum, cell.durationCount, JSON.stringify(cell.durationHistogram), cell.tokenInSum, cell.tokenOutSum, cell.tokenCount, cell.costSum, cell.ewmaFailureRate ?? null, cell.ewmaDurationMs ?? null, cell.firstSeen, cell.lastSeen, JSON.stringify(cell.exemplars));
262
+ }
184
263
  /** `server_name` is part of the primary key, so it's matched in WHERE, not reassigned in SET. */
185
264
  write(record) {
186
265
  this.db
@@ -217,12 +296,19 @@ export class MemoryStore {
217
296
  if (now - this.lastPrunedAt < RETENTION_CHECK_INTERVAL_MS)
218
297
  return;
219
298
  this.pruneExecutionNodes(this.retention.maxAgeMs, now);
299
+ this.pruneMetricCells(this.retention.maxAgeMs, now);
300
+ }
301
+ /** Delete hourly (non-`all`) metric cells older than `olderThanMs`; `all` is kept. */
302
+ pruneMetricCells(olderThanMs, now = Date.now()) {
303
+ const cutoff = new Date(now - olderThanMs).toISOString();
304
+ const result = this.db
305
+ .prepare(`DELETE FROM metric_cells WHERE window != 'all' AND last_seen < ?`)
306
+ .run(cutoff);
307
+ return { deleted: Number(result.changes) };
220
308
  }
221
309
  /** Get an execution node by ID. */
222
310
  getExecutionNode(id) {
223
- const row = this.db
224
- .prepare(`SELECT * FROM execution_nodes WHERE id = ?`)
225
- .get(id);
311
+ const row = this.db.prepare(`SELECT * FROM execution_nodes WHERE id = ?`).get(id);
226
312
  return row ? deserializeExecutionNode(row) : undefined;
227
313
  }
228
314
  /** Get all nodes for a session. */
@@ -246,6 +332,13 @@ export class MemoryStore {
246
332
  .all();
247
333
  return rows.map((r) => r.workflow_id);
248
334
  }
335
+ /** Get every distinct session ID that has at least one recorded execution node. */
336
+ getSessionIds() {
337
+ const rows = this.db
338
+ .prepare(`SELECT DISTINCT session_id FROM execution_nodes`)
339
+ .all();
340
+ return rows.map((r) => r.session_id);
341
+ }
249
342
  /** Get children of a node. */
250
343
  getChildren(parentId) {
251
344
  const parent = this.getExecutionNode(parentId);
@@ -287,6 +380,70 @@ export class MemoryStore {
287
380
  .prepare(`UPDATE execution_nodes SET children_ids = ? WHERE id = ?`)
288
381
  .run(JSON.stringify(childrenIds), parentId);
289
382
  }
383
+ // Suspensions — the durable half of pause/resume (ADR-004). The host owns the
384
+ // policy; this only stores and resolves what the host decided to pause on.
385
+ /** Persist a suspension (a run paused awaiting a human). */
386
+ recordSuspension(suspension) {
387
+ this.db
388
+ .prepare(`INSERT OR REPLACE INTO suspensions (id, session_id, kind, question, response_schema, resume_state, status, answer, reason, created_at, resolved_at)
389
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
390
+ .run(suspension.id, suspension.sessionId, suspension.kind, suspension.question, suspension.responseSchema ? JSON.stringify(suspension.responseSchema) : null, suspension.resumeState ? JSON.stringify(suspension.resumeState) : null, suspension.status, suspension.answer === undefined ? null : JSON.stringify(suspension.answer), suspension.reason ?? null, suspension.createdAt, suspension.resolvedAt ?? null);
391
+ return suspension;
392
+ }
393
+ /** Read one suspension by id. */
394
+ getSuspension(id) {
395
+ const row = this.db.prepare(`SELECT * FROM suspensions WHERE id = ?`).get(id);
396
+ return row ? deserializeSuspension(row) : undefined;
397
+ }
398
+ /** Every suspension for a session, newest first; filtered by status when given. */
399
+ getSuspensions(sessionId, status) {
400
+ const rows = (status
401
+ ? this.db
402
+ .prepare(`SELECT * FROM suspensions WHERE session_id = ? AND status = ? ORDER BY created_at DESC`)
403
+ .all(sessionId, status)
404
+ : this.db
405
+ .prepare(`SELECT * FROM suspensions WHERE session_id = ? ORDER BY created_at DESC`)
406
+ .all(sessionId));
407
+ return rows.map(deserializeSuspension);
408
+ }
409
+ /**
410
+ * Resolve a suspension — with an answer, or with the reason it was not
411
+ * answered. Idempotent: an already-resolved record is returned unchanged, so a
412
+ * replayed resume cannot overwrite the first answer.
413
+ */
414
+ resolveSuspension(id, resolution) {
415
+ const existing = this.getSuspension(id);
416
+ if (!existing)
417
+ return undefined;
418
+ if (existing.status !== "pending")
419
+ return existing;
420
+ return this.recordSuspension({
421
+ ...existing,
422
+ status: resolution.status,
423
+ answer: resolution.status === "answered" ? resolution.answer : existing.answer,
424
+ reason: resolution.reason ?? existing.reason,
425
+ resolvedAt: new Date().toISOString(),
426
+ });
427
+ }
428
+ }
429
+ function deserializeSuspension(row) {
430
+ return {
431
+ id: row.id,
432
+ sessionId: row.session_id,
433
+ kind: row.kind,
434
+ question: row.question,
435
+ responseSchema: row.response_schema
436
+ ? JSON.parse(row.response_schema)
437
+ : undefined,
438
+ resumeState: row.resume_state
439
+ ? JSON.parse(row.resume_state)
440
+ : undefined,
441
+ status: row.status,
442
+ answer: row.answer === null ? undefined : JSON.parse(row.answer),
443
+ reason: row.reason ?? undefined,
444
+ createdAt: row.created_at,
445
+ resolvedAt: row.resolved_at ?? undefined,
446
+ };
290
447
  }
291
448
  function deserializeExecutionNode(row) {
292
449
  return {
@@ -329,7 +486,7 @@ function foldEvent(stats, event) {
329
486
  : stats.avgDurationMs;
330
487
  const totalCost = stats.totalCost + (event.cost?.amount ?? 0);
331
488
  // Track average output tokens for context cost
332
- const outputTokens = event.cost?.outputTokens ?? 0;
489
+ const outputTokens = eventTokens(event).outputTokens ?? 0;
333
490
  const prevAvgTokens = stats.avgOutputTokens ?? 0;
334
491
  const avgOutputTokens = (prevAvgTokens * (invocations - 1) + outputTokens) / invocations;
335
492
  return {
@@ -353,4 +510,138 @@ function deserialize(row) {
353
510
  updatedAt: row.updated_at,
354
511
  };
355
512
  }
513
+ function deserializeMetricCell(row) {
514
+ return {
515
+ toolName: row.tool_name,
516
+ serverName: row.server_name === UNKNOWN_SERVER ? undefined : row.server_name,
517
+ window: row.window,
518
+ dimensions: JSON.parse(row.dims),
519
+ invocations: row.invocations,
520
+ failures: row.failures,
521
+ attempts: row.attempts,
522
+ errorCodes: JSON.parse(row.error_codes),
523
+ durationSum: row.duration_sum,
524
+ durationCount: row.duration_count,
525
+ durationHistogram: JSON.parse(row.duration_hist),
526
+ tokenInSum: row.token_in_sum,
527
+ tokenOutSum: row.token_out_sum,
528
+ tokenCount: row.token_count,
529
+ costSum: row.cost_sum,
530
+ ewmaFailureRate: row.ewma_failure_rate ?? undefined,
531
+ ewmaDurationMs: row.ewma_duration_ms ?? undefined,
532
+ firstSeen: row.first_seen ?? "",
533
+ lastSeen: row.last_seen ?? "",
534
+ exemplars: JSON.parse(row.exemplars),
535
+ };
536
+ }
537
+ /** Fixed duration histogram buckets (upper bound in ms); the last bucket is overflow. */
538
+ const DURATION_BUCKETS_MS = [50, 100, 250, 500, 1000, 2500, 5000, 10000];
539
+ const DURATION_BUCKET_COUNT = DURATION_BUCKETS_MS.length + 1;
540
+ /** EWMA smoothing factor for recency-weighted failure rate / duration. */
541
+ const EWMA_ALPHA = 0.2;
542
+ /** How many recent event ids a cell keeps for drill-down. */
543
+ const EXEMPLAR_LIMIT = 5;
544
+ /** Token usage, preferring the explicit `usage` field and falling back to `cost`. */
545
+ function eventTokens(event) {
546
+ if (event.usage &&
547
+ (event.usage.inputTokens !== undefined || event.usage.outputTokens !== undefined)) {
548
+ return event.usage;
549
+ }
550
+ return { inputTokens: event.cost?.inputTokens, outputTokens: event.cost?.outputTokens };
551
+ }
552
+ /** The bounded set of dimension tuples an event contributes to. */
553
+ function cellDimensionsFor(event, model = event.model) {
554
+ const dims = [{}];
555
+ if (model)
556
+ dims.push({ model });
557
+ if (event.decoding) {
558
+ dims.push({
559
+ ...(model ? { model } : {}),
560
+ decodingProfile: event.decoding.profile,
561
+ resolverVersion: event.decoding.resolverVersion,
562
+ });
563
+ }
564
+ return dims;
565
+ }
566
+ /** Stable key for a dimension tuple (sorted keys). */
567
+ function dimsKey(dims) {
568
+ return JSON.stringify(Object.keys(dims)
569
+ .sort()
570
+ .map((key) => [key, dims[key]]));
571
+ }
572
+ /** Hourly retention-window key for an ISO timestamp (UTC). */
573
+ function windowKey(iso) {
574
+ return `hour:${iso.slice(0, 13)}`;
575
+ }
576
+ function durationBucketIndex(ms) {
577
+ for (let i = 0; i < DURATION_BUCKETS_MS.length; i += 1) {
578
+ if (ms <= DURATION_BUCKETS_MS[i])
579
+ return i;
580
+ }
581
+ return DURATION_BUCKETS_MS.length;
582
+ }
583
+ /** Fold one event into a metric cell (creating it when absent). */
584
+ function foldMetricCell(existing, event, dimensions, window, now) {
585
+ const failed = event.status === "failed";
586
+ const failure = failed ? 1 : 0;
587
+ const duration = typeof event.durationMs === "number" ? event.durationMs : undefined;
588
+ const tokens = eventTokens(event);
589
+ const hasTokens = tokens.inputTokens !== undefined || tokens.outputTokens !== undefined;
590
+ const cost = event.cost?.amount;
591
+ const base = existing ?? {
592
+ toolName: event.toolName,
593
+ serverName: event.serverName,
594
+ window,
595
+ dimensions,
596
+ invocations: 0,
597
+ failures: 0,
598
+ attempts: 0,
599
+ errorCodes: {},
600
+ durationSum: 0,
601
+ durationCount: 0,
602
+ durationHistogram: new Array(DURATION_BUCKET_COUNT).fill(0),
603
+ tokenInSum: 0,
604
+ tokenOutSum: 0,
605
+ tokenCount: 0,
606
+ costSum: 0,
607
+ firstSeen: now,
608
+ lastSeen: now,
609
+ exemplars: [],
610
+ };
611
+ const errorCodes = { ...base.errorCodes };
612
+ if (failed) {
613
+ const code = event.error?.code ?? "unknown";
614
+ errorCodes[code] = (errorCodes[code] ?? 0) + 1;
615
+ }
616
+ const histogram = [...base.durationHistogram];
617
+ while (histogram.length < DURATION_BUCKET_COUNT)
618
+ histogram.push(0);
619
+ if (duration !== undefined)
620
+ histogram[durationBucketIndex(duration)] = (histogram[durationBucketIndex(duration)] ?? 0) + 1;
621
+ return {
622
+ ...base,
623
+ dimensions,
624
+ invocations: base.invocations + 1,
625
+ failures: base.failures + failure,
626
+ attempts: base.attempts + (event.attempts ?? 1),
627
+ errorCodes,
628
+ durationSum: base.durationSum + (duration ?? 0),
629
+ durationCount: base.durationCount + (duration !== undefined ? 1 : 0),
630
+ durationHistogram: histogram,
631
+ tokenInSum: base.tokenInSum + (tokens.inputTokens ?? 0),
632
+ tokenOutSum: base.tokenOutSum + (tokens.outputTokens ?? 0),
633
+ tokenCount: base.tokenCount + (hasTokens ? 1 : 0),
634
+ costSum: base.costSum + (cost !== undefined && Number.isFinite(cost) ? cost : 0),
635
+ ewmaFailureRate: base.ewmaFailureRate === undefined
636
+ ? failure
637
+ : base.ewmaFailureRate + EWMA_ALPHA * (failure - base.ewmaFailureRate),
638
+ ewmaDurationMs: duration === undefined
639
+ ? base.ewmaDurationMs
640
+ : base.ewmaDurationMs === undefined
641
+ ? duration
642
+ : base.ewmaDurationMs + EWMA_ALPHA * (duration - base.ewmaDurationMs),
643
+ lastSeen: now,
644
+ exemplars: [...base.exemplars, event.id].slice(-EXEMPLAR_LIMIT),
645
+ };
646
+ }
356
647
  //# sourceMappingURL=store.js.map
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adaptivemcp/memory",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Persistent operational knowledge for Adaptive MCP, backed by SQLite (node:sqlite).",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -17,16 +17,17 @@
17
17
  "dist",
18
18
  "README.md"
19
19
  ],
20
- "scripts": {
21
- "build": "tsc -p tsconfig.json",
22
- "test": "vitest run --config ../../vitest.config.ts"
23
- },
24
20
  "dependencies": {
25
- "@adaptivemcp/spec": "workspace:*"
21
+ "@adaptivemcp/spec": "^0.5.0"
26
22
  },
27
23
  "devDependencies": {
28
24
  "@types/node": "^22.0.0",
25
+ "fast-check": "^4.10.2",
29
26
  "typescript": "^5.6.0",
30
27
  "vitest": "^2.1.0"
28
+ },
29
+ "scripts": {
30
+ "build": "tsc -p tsconfig.json",
31
+ "test": "vitest run --config ../../vitest.config.ts"
31
32
  }
32
- }
33
+ }