nodebench-mcp 2.32.0 → 2.34.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supermemoryProvider.js","sourceRoot":"","sources":["../../src/providers/supermemoryProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * causalMemoryTools — Phase 10 Causal Memory
3
+ *
4
+ * Records typed events, navigation paths, state diffs, and important changes
5
+ * into a causal event ledger. Supports causal chain tracing, path replay,
6
+ * state diff history, and trajectory summaries.
7
+ *
8
+ * All data stored in local SQLite via the shared getDb().
9
+ */
10
+ import type { McpTool } from "../types.js";
11
+ export declare const causalMemoryTools: McpTool[];
@@ -0,0 +1,639 @@
1
+ /**
2
+ * causalMemoryTools — Phase 10 Causal Memory
3
+ *
4
+ * Records typed events, navigation paths, state diffs, and important changes
5
+ * into a causal event ledger. Supports causal chain tracing, path replay,
6
+ * state diff history, and trajectory summaries.
7
+ *
8
+ * All data stored in local SQLite via the shared getDb().
9
+ */
10
+ import { getDb } from "../db.js";
11
+ import crypto from "node:crypto";
12
+ /* ------------------------------------------------------------------ */
13
+ /* Schema bootstrap (idempotent) */
14
+ /* ------------------------------------------------------------------ */
15
+ let _schemaReady = false;
16
+ function ensureSchema() {
17
+ if (_schemaReady)
18
+ return;
19
+ const db = getDb();
20
+ db.exec(`
21
+ CREATE TABLE IF NOT EXISTS causal_events (
22
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
23
+ eventId TEXT UNIQUE NOT NULL,
24
+ eventType TEXT NOT NULL,
25
+ actorType TEXT NOT NULL,
26
+ entityType TEXT NOT NULL,
27
+ entityId TEXT NOT NULL,
28
+ summary TEXT NOT NULL,
29
+ details TEXT,
30
+ causedByEventId TEXT,
31
+ correlationId TEXT,
32
+ timestampMs INTEGER NOT NULL,
33
+ createdAt TEXT NOT NULL
34
+ );
35
+
36
+ CREATE INDEX IF NOT EXISTS idx_causal_events_eventId ON causal_events(eventId);
37
+ CREATE INDEX IF NOT EXISTS idx_causal_events_entityType ON causal_events(entityType);
38
+ CREATE INDEX IF NOT EXISTS idx_causal_events_entityId ON causal_events(entityId);
39
+ CREATE INDEX IF NOT EXISTS idx_causal_events_eventType ON causal_events(eventType);
40
+ CREATE INDEX IF NOT EXISTS idx_causal_events_causedBy ON causal_events(causedByEventId);
41
+ CREATE INDEX IF NOT EXISTS idx_causal_events_correlationId ON causal_events(correlationId);
42
+ CREATE INDEX IF NOT EXISTS idx_causal_events_timestampMs ON causal_events(timestampMs);
43
+
44
+ CREATE TABLE IF NOT EXISTS causal_path_steps (
45
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
46
+ stepId TEXT UNIQUE NOT NULL,
47
+ sessionId TEXT NOT NULL,
48
+ surfaceType TEXT NOT NULL,
49
+ surfaceRef TEXT NOT NULL,
50
+ surfaceLabel TEXT NOT NULL,
51
+ entityType TEXT,
52
+ entityId TEXT,
53
+ transitionFrom TEXT,
54
+ timestampMs INTEGER NOT NULL,
55
+ createdAt TEXT NOT NULL
56
+ );
57
+
58
+ CREATE INDEX IF NOT EXISTS idx_causal_path_steps_stepId ON causal_path_steps(stepId);
59
+ CREATE INDEX IF NOT EXISTS idx_causal_path_steps_sessionId ON causal_path_steps(sessionId);
60
+ CREATE INDEX IF NOT EXISTS idx_causal_path_steps_timestampMs ON causal_path_steps(timestampMs);
61
+
62
+ CREATE TABLE IF NOT EXISTS causal_state_diffs (
63
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
64
+ diffId TEXT UNIQUE NOT NULL,
65
+ entityType TEXT NOT NULL,
66
+ entityId TEXT NOT NULL,
67
+ changeType TEXT NOT NULL,
68
+ beforeState TEXT NOT NULL,
69
+ afterState TEXT NOT NULL,
70
+ changedFields TEXT NOT NULL,
71
+ reason TEXT,
72
+ timestampMs INTEGER NOT NULL,
73
+ createdAt TEXT NOT NULL
74
+ );
75
+
76
+ CREATE INDEX IF NOT EXISTS idx_causal_state_diffs_diffId ON causal_state_diffs(diffId);
77
+ CREATE INDEX IF NOT EXISTS idx_causal_state_diffs_entityType ON causal_state_diffs(entityType);
78
+ CREATE INDEX IF NOT EXISTS idx_causal_state_diffs_entityId ON causal_state_diffs(entityId);
79
+ CREATE INDEX IF NOT EXISTS idx_causal_state_diffs_timestampMs ON causal_state_diffs(timestampMs);
80
+
81
+ CREATE TABLE IF NOT EXISTS causal_important_changes (
82
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
83
+ changeId TEXT UNIQUE NOT NULL,
84
+ changeCategory TEXT NOT NULL,
85
+ impactScore REAL NOT NULL,
86
+ impactReason TEXT NOT NULL,
87
+ affectedEntities TEXT NOT NULL,
88
+ suggestedAction TEXT,
89
+ status TEXT NOT NULL DEFAULT 'detected',
90
+ timestampMs INTEGER NOT NULL,
91
+ createdAt TEXT NOT NULL
92
+ );
93
+
94
+ CREATE INDEX IF NOT EXISTS idx_causal_important_changes_changeId ON causal_important_changes(changeId);
95
+ CREATE INDEX IF NOT EXISTS idx_causal_important_changes_status ON causal_important_changes(status);
96
+ CREATE INDEX IF NOT EXISTS idx_causal_important_changes_timestampMs ON causal_important_changes(timestampMs);
97
+ `);
98
+ _schemaReady = true;
99
+ }
100
+ /* ------------------------------------------------------------------ */
101
+ /* Tools */
102
+ /* ------------------------------------------------------------------ */
103
+ export const causalMemoryTools = [
104
+ // --- 1. record_event ---------------------------------------------------
105
+ {
106
+ name: "record_event",
107
+ description: "Record a typed event to the causal event ledger. Supports causal linking via causedByEventId and correlation grouping via correlationId.",
108
+ inputSchema: {
109
+ type: "object",
110
+ properties: {
111
+ eventType: {
112
+ type: "string",
113
+ description: "Canonical event type (e.g. entity_created, status_changed, decision_made, artifact_generated, investigation_started, task_completed, priority_changed, confidence_updated, agent_action, user_action)",
114
+ },
115
+ actorType: {
116
+ type: "string",
117
+ description: "Who caused this event (e.g. user, agent, system, cron)",
118
+ },
119
+ entityType: {
120
+ type: "string",
121
+ description: "Entity type affected (e.g. company, initiative, task, artifact, memo, investigation)",
122
+ },
123
+ entityId: {
124
+ type: "string",
125
+ description: "ID of the entity affected",
126
+ },
127
+ summary: {
128
+ type: "string",
129
+ description: "Human-readable summary of what happened",
130
+ },
131
+ details: {
132
+ type: "object",
133
+ description: "Optional structured JSON details about the event",
134
+ },
135
+ causedByEventId: {
136
+ type: "string",
137
+ description: "Optional eventId of the event that caused this one (for causal chain tracing)",
138
+ },
139
+ correlationId: {
140
+ type: "string",
141
+ description: "Optional correlation ID to group related events across a workflow",
142
+ },
143
+ },
144
+ required: ["eventType", "actorType", "entityType", "entityId", "summary"],
145
+ },
146
+ handler: async (args) => {
147
+ ensureSchema();
148
+ const db = getDb();
149
+ const now = Date.now();
150
+ const eventId = `evt_${crypto.randomUUID()}`;
151
+ db.prepare(`INSERT INTO causal_events
152
+ (eventId, eventType, actorType, entityType, entityId, summary, details, causedByEventId, correlationId, timestampMs, createdAt)
153
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(eventId, args.eventType, args.actorType, args.entityType, args.entityId, args.summary, args.details ? JSON.stringify(args.details) : null, args.causedByEventId ?? null, args.correlationId ?? null, now, new Date(now).toISOString());
154
+ return { eventId, timestampMs: now, recorded: true };
155
+ },
156
+ },
157
+ // --- 2. record_path_step -----------------------------------------------
158
+ {
159
+ name: "record_path_step",
160
+ description: "Record a navigation/exploration step in the user's path through surfaces, entities, artifacts, or external resources.",
161
+ inputSchema: {
162
+ type: "object",
163
+ properties: {
164
+ sessionId: {
165
+ type: "string",
166
+ description: "Session identifier for grouping path steps",
167
+ },
168
+ surfaceType: {
169
+ type: "string",
170
+ enum: ["view", "entity", "artifact", "agent_task", "search", "external"],
171
+ description: "Type of surface visited",
172
+ },
173
+ surfaceRef: {
174
+ type: "string",
175
+ description: "Reference identifier for the surface (route, entity ID, URL, etc.)",
176
+ },
177
+ surfaceLabel: {
178
+ type: "string",
179
+ description: "Human-readable label for the surface",
180
+ },
181
+ entityType: {
182
+ type: "string",
183
+ description: "Optional entity type if the surface is entity-scoped",
184
+ },
185
+ entityId: {
186
+ type: "string",
187
+ description: "Optional entity ID if the surface is entity-scoped",
188
+ },
189
+ transitionFrom: {
190
+ type: "string",
191
+ description: "Optional stepId of the previous step (for explicit path linking)",
192
+ },
193
+ },
194
+ required: ["sessionId", "surfaceType", "surfaceRef", "surfaceLabel"],
195
+ },
196
+ handler: async (args) => {
197
+ ensureSchema();
198
+ const db = getDb();
199
+ const now = Date.now();
200
+ const stepId = `step_${crypto.randomUUID()}`;
201
+ db.prepare(`INSERT INTO causal_path_steps
202
+ (stepId, sessionId, surfaceType, surfaceRef, surfaceLabel, entityType, entityId, transitionFrom, timestampMs, createdAt)
203
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(stepId, args.sessionId, args.surfaceType, args.surfaceRef, args.surfaceLabel, args.entityType ?? null, args.entityId ?? null, args.transitionFrom ?? null, now, new Date(now).toISOString());
204
+ return { stepId, timestampMs: now, recorded: true };
205
+ },
206
+ },
207
+ // --- 3. record_state_diff ----------------------------------------------
208
+ {
209
+ name: "record_state_diff",
210
+ description: "Record a before/after state change on an entity. Tracks what changed, which fields, and why.",
211
+ inputSchema: {
212
+ type: "object",
213
+ properties: {
214
+ entityType: {
215
+ type: "string",
216
+ description: "Entity type (e.g. company, initiative, task, artifact)",
217
+ },
218
+ entityId: {
219
+ type: "string",
220
+ description: "ID of the entity that changed",
221
+ },
222
+ changeType: {
223
+ type: "string",
224
+ enum: ["identity", "status", "priority", "content", "confidence", "assignment", "structural"],
225
+ description: "Category of change",
226
+ },
227
+ beforeState: {
228
+ type: "object",
229
+ description: "State before the change (JSON)",
230
+ },
231
+ afterState: {
232
+ type: "object",
233
+ description: "State after the change (JSON)",
234
+ },
235
+ changedFields: {
236
+ type: "array",
237
+ items: { type: "string" },
238
+ description: "List of field names that changed",
239
+ },
240
+ reason: {
241
+ type: "string",
242
+ description: "Optional reason for the change",
243
+ },
244
+ },
245
+ required: ["entityType", "entityId", "changeType", "beforeState", "afterState", "changedFields"],
246
+ },
247
+ handler: async (args) => {
248
+ ensureSchema();
249
+ const db = getDb();
250
+ const now = Date.now();
251
+ const diffId = `diff_${crypto.randomUUID()}`;
252
+ db.prepare(`INSERT INTO causal_state_diffs
253
+ (diffId, entityType, entityId, changeType, beforeState, afterState, changedFields, reason, timestampMs, createdAt)
254
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(diffId, args.entityType, args.entityId, args.changeType, JSON.stringify(args.beforeState), JSON.stringify(args.afterState), JSON.stringify(args.changedFields), args.reason ?? null, now, new Date(now).toISOString());
255
+ return { diffId, timestampMs: now, recorded: true };
256
+ },
257
+ },
258
+ // --- 4. get_event_ledger ------------------------------------------------
259
+ {
260
+ name: "get_event_ledger",
261
+ description: "Query the causal event ledger with optional filtering by entityId, eventType, entityType, or correlationId.",
262
+ inputSchema: {
263
+ type: "object",
264
+ properties: {
265
+ entityId: {
266
+ type: "string",
267
+ description: "Filter by entity ID",
268
+ },
269
+ eventType: {
270
+ type: "string",
271
+ description: "Filter by event type",
272
+ },
273
+ entityType: {
274
+ type: "string",
275
+ description: "Filter by entity type",
276
+ },
277
+ correlationId: {
278
+ type: "string",
279
+ description: "Filter by correlation ID",
280
+ },
281
+ limit: {
282
+ type: "number",
283
+ description: "Max events to return (default 50)",
284
+ },
285
+ },
286
+ },
287
+ annotations: { readOnlyHint: true },
288
+ handler: async (args) => {
289
+ ensureSchema();
290
+ const db = getDb();
291
+ const limit = args.limit ?? 50;
292
+ const conditions = [];
293
+ const params = [];
294
+ if (args.entityId) {
295
+ conditions.push("entityId = ?");
296
+ params.push(args.entityId);
297
+ }
298
+ if (args.eventType) {
299
+ conditions.push("eventType = ?");
300
+ params.push(args.eventType);
301
+ }
302
+ if (args.entityType) {
303
+ conditions.push("entityType = ?");
304
+ params.push(args.entityType);
305
+ }
306
+ if (args.correlationId) {
307
+ conditions.push("correlationId = ?");
308
+ params.push(args.correlationId);
309
+ }
310
+ const where = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
311
+ params.push(limit);
312
+ const events = db
313
+ .prepare(`SELECT eventId, eventType, actorType, entityType, entityId, summary, details, causedByEventId, correlationId, timestampMs, createdAt
314
+ FROM causal_events ${where}
315
+ ORDER BY timestampMs DESC LIMIT ?`)
316
+ .all(...params);
317
+ return {
318
+ totalReturned: events.length,
319
+ events: events.map((e) => ({
320
+ ...e,
321
+ details: e.details ? JSON.parse(e.details) : null,
322
+ })),
323
+ };
324
+ },
325
+ },
326
+ // --- 5. get_causal_chain ------------------------------------------------
327
+ {
328
+ name: "get_causal_chain",
329
+ description: "Trace the causality chain from a given event backwards through causedByEventId links. Returns the chain of events that led to this one.",
330
+ inputSchema: {
331
+ type: "object",
332
+ properties: {
333
+ eventId: {
334
+ type: "string",
335
+ description: "The event ID to trace backwards from",
336
+ },
337
+ maxDepth: {
338
+ type: "number",
339
+ description: "Maximum depth to trace (default 10)",
340
+ },
341
+ },
342
+ required: ["eventId"],
343
+ },
344
+ annotations: { readOnlyHint: true },
345
+ handler: async (args) => {
346
+ ensureSchema();
347
+ const db = getDb();
348
+ const maxDepth = args.maxDepth ?? 10;
349
+ const chain = [];
350
+ let currentId = args.eventId;
351
+ let depth = 0;
352
+ const visited = new Set();
353
+ while (currentId && depth < maxDepth) {
354
+ if (visited.has(currentId))
355
+ break; // cycle protection
356
+ visited.add(currentId);
357
+ const event = db
358
+ .prepare(`SELECT eventId, eventType, actorType, entityType, entityId, summary, details, causedByEventId, correlationId, timestampMs, createdAt
359
+ FROM causal_events WHERE eventId = ?`)
360
+ .get(currentId);
361
+ if (!event)
362
+ break;
363
+ chain.push({
364
+ ...event,
365
+ details: event.details ? JSON.parse(event.details) : null,
366
+ depth,
367
+ });
368
+ currentId = event.causedByEventId;
369
+ depth++;
370
+ }
371
+ return {
372
+ rootEventId: args.eventId,
373
+ chainLength: chain.length,
374
+ maxDepthReached: depth >= maxDepth,
375
+ chain,
376
+ };
377
+ },
378
+ },
379
+ // --- 6. get_path_replay -------------------------------------------------
380
+ {
381
+ name: "get_path_replay",
382
+ description: "Replay a session's navigation path in chronological order, including computed dwell times between steps.",
383
+ inputSchema: {
384
+ type: "object",
385
+ properties: {
386
+ sessionId: {
387
+ type: "string",
388
+ description: "Session ID to replay",
389
+ },
390
+ },
391
+ required: ["sessionId"],
392
+ },
393
+ annotations: { readOnlyHint: true },
394
+ handler: async (args) => {
395
+ ensureSchema();
396
+ const db = getDb();
397
+ const steps = db
398
+ .prepare(`SELECT stepId, surfaceType, surfaceRef, surfaceLabel, entityType, entityId, transitionFrom, timestampMs, createdAt
399
+ FROM causal_path_steps WHERE sessionId = ?
400
+ ORDER BY timestampMs ASC`)
401
+ .all(args.sessionId);
402
+ // Compute dwell time between consecutive steps
403
+ const stepsWithDuration = steps.map((step, i) => {
404
+ const dwellMs = i < steps.length - 1 ? steps[i + 1].timestampMs - step.timestampMs : null;
405
+ return { ...step, dwellMs };
406
+ });
407
+ const totalDurationMs = steps.length >= 2 ? steps[steps.length - 1].timestampMs - steps[0].timestampMs : 0;
408
+ return {
409
+ sessionId: args.sessionId,
410
+ stepCount: steps.length,
411
+ totalDurationMs,
412
+ steps: stepsWithDuration,
413
+ };
414
+ },
415
+ },
416
+ // --- 7. get_state_diff_history ------------------------------------------
417
+ {
418
+ name: "get_state_diff_history",
419
+ description: "Get the change history for a specific entity, showing all recorded state diffs in reverse chronological order.",
420
+ inputSchema: {
421
+ type: "object",
422
+ properties: {
423
+ entityType: {
424
+ type: "string",
425
+ description: "Entity type to query",
426
+ },
427
+ entityId: {
428
+ type: "string",
429
+ description: "Entity ID to query",
430
+ },
431
+ limit: {
432
+ type: "number",
433
+ description: "Max diffs to return (default 20)",
434
+ },
435
+ },
436
+ required: ["entityType", "entityId"],
437
+ },
438
+ annotations: { readOnlyHint: true },
439
+ handler: async (args) => {
440
+ ensureSchema();
441
+ const db = getDb();
442
+ const limit = args.limit ?? 20;
443
+ const diffs = db
444
+ .prepare(`SELECT diffId, entityType, entityId, changeType, beforeState, afterState, changedFields, reason, timestampMs, createdAt
445
+ FROM causal_state_diffs
446
+ WHERE entityType = ? AND entityId = ?
447
+ ORDER BY timestampMs DESC LIMIT ?`)
448
+ .all(args.entityType, args.entityId, limit);
449
+ return {
450
+ entityType: args.entityType,
451
+ entityId: args.entityId,
452
+ totalReturned: diffs.length,
453
+ diffs: diffs.map((d) => ({
454
+ ...d,
455
+ beforeState: JSON.parse(d.beforeState),
456
+ afterState: JSON.parse(d.afterState),
457
+ changedFields: JSON.parse(d.changedFields),
458
+ })),
459
+ };
460
+ },
461
+ },
462
+ // --- 8. get_trajectory_summary ------------------------------------------
463
+ {
464
+ name: "get_trajectory_summary",
465
+ description: "Compute a trajectory summary for a date range: event counts by type, diff counts by change type, path step counts, and top affected entities.",
466
+ inputSchema: {
467
+ type: "object",
468
+ properties: {
469
+ startDate: {
470
+ type: "string",
471
+ description: "Start date in YYYY-MM-DD format",
472
+ },
473
+ endDate: {
474
+ type: "string",
475
+ description: "End date in YYYY-MM-DD format (defaults to today)",
476
+ },
477
+ },
478
+ required: ["startDate"],
479
+ },
480
+ annotations: { readOnlyHint: true },
481
+ handler: async (args) => {
482
+ ensureSchema();
483
+ const db = getDb();
484
+ const startMs = new Date(args.startDate + "T00:00:00Z").getTime();
485
+ const endDate = args.endDate ?? new Date().toISOString().slice(0, 10);
486
+ const endMs = new Date(endDate + "T23:59:59.999Z").getTime();
487
+ // Events by type
488
+ const eventsByType = db
489
+ .prepare(`SELECT eventType, COUNT(*) as count
490
+ FROM causal_events WHERE timestampMs BETWEEN ? AND ?
491
+ GROUP BY eventType ORDER BY count DESC`)
492
+ .all(startMs, endMs);
493
+ const totalEvents = db
494
+ .prepare(`SELECT COUNT(*) as count FROM causal_events WHERE timestampMs BETWEEN ? AND ?`)
495
+ .get(startMs, endMs);
496
+ // Diffs by change type
497
+ const diffsByType = db
498
+ .prepare(`SELECT changeType, COUNT(*) as count
499
+ FROM causal_state_diffs WHERE timestampMs BETWEEN ? AND ?
500
+ GROUP BY changeType ORDER BY count DESC`)
501
+ .all(startMs, endMs);
502
+ const totalDiffs = db
503
+ .prepare(`SELECT COUNT(*) as count FROM causal_state_diffs WHERE timestampMs BETWEEN ? AND ?`)
504
+ .get(startMs, endMs);
505
+ // Path steps
506
+ const totalPathSteps = db
507
+ .prepare(`SELECT COUNT(*) as count FROM causal_path_steps WHERE timestampMs BETWEEN ? AND ?`)
508
+ .get(startMs, endMs);
509
+ const uniqueSessions = db
510
+ .prepare(`SELECT COUNT(DISTINCT sessionId) as count FROM causal_path_steps WHERE timestampMs BETWEEN ? AND ?`)
511
+ .get(startMs, endMs);
512
+ // Top affected entities (by event count)
513
+ const topEntities = db
514
+ .prepare(`SELECT entityType, entityId, COUNT(*) as eventCount
515
+ FROM causal_events WHERE timestampMs BETWEEN ? AND ?
516
+ GROUP BY entityType, entityId ORDER BY eventCount DESC LIMIT 10`)
517
+ .all(startMs, endMs);
518
+ // Important changes in range
519
+ const importantChanges = db
520
+ .prepare(`SELECT COUNT(*) as count FROM causal_important_changes WHERE timestampMs BETWEEN ? AND ?`)
521
+ .get(startMs, endMs);
522
+ return {
523
+ startDate: args.startDate,
524
+ endDate,
525
+ events: {
526
+ total: totalEvents.count,
527
+ byType: Object.fromEntries(eventsByType.map((r) => [r.eventType, r.count])),
528
+ },
529
+ diffs: {
530
+ total: totalDiffs.count,
531
+ byChangeType: Object.fromEntries(diffsByType.map((r) => [r.changeType, r.count])),
532
+ },
533
+ pathSteps: {
534
+ total: totalPathSteps.count,
535
+ uniqueSessions: uniqueSessions.count,
536
+ },
537
+ importantChanges: importantChanges.count,
538
+ topAffectedEntities: topEntities,
539
+ };
540
+ },
541
+ },
542
+ // --- 9. flag_important_change -------------------------------------------
543
+ {
544
+ name: "flag_important_change",
545
+ description: "Flag a detected important change with impact scoring, affected entities, and optional suggested action. Used by agents to surface significant state transitions.",
546
+ inputSchema: {
547
+ type: "object",
548
+ properties: {
549
+ changeCategory: {
550
+ type: "string",
551
+ description: "Category of the change (e.g. risk_escalation, opportunity_detected, contradiction_found, confidence_shift, priority_reversal, new_evidence)",
552
+ },
553
+ impactScore: {
554
+ type: "number",
555
+ description: "Impact score from 0.0 (negligible) to 1.0 (critical)",
556
+ },
557
+ impactReason: {
558
+ type: "string",
559
+ description: "Human-readable explanation of why this change is important",
560
+ },
561
+ affectedEntities: {
562
+ type: "array",
563
+ items: {
564
+ type: "object",
565
+ properties: {
566
+ entityType: { type: "string" },
567
+ entityId: { type: "string" },
568
+ },
569
+ required: ["entityType", "entityId"],
570
+ },
571
+ description: "List of entities affected by this change",
572
+ },
573
+ suggestedAction: {
574
+ type: "string",
575
+ description: "Optional suggested next action to take",
576
+ },
577
+ },
578
+ required: ["changeCategory", "impactScore", "impactReason", "affectedEntities"],
579
+ },
580
+ handler: async (args) => {
581
+ ensureSchema();
582
+ const db = getDb();
583
+ const now = Date.now();
584
+ const changeId = `chg_${crypto.randomUUID()}`;
585
+ db.prepare(`INSERT INTO causal_important_changes
586
+ (changeId, changeCategory, impactScore, impactReason, affectedEntities, suggestedAction, status, timestampMs, createdAt)
587
+ VALUES (?, ?, ?, ?, ?, ?, 'detected', ?, ?)`).run(changeId, args.changeCategory, args.impactScore, args.impactReason, JSON.stringify(args.affectedEntities), args.suggestedAction ?? null, now, new Date(now).toISOString());
588
+ return { changeId, timestampMs: now, recorded: true };
589
+ },
590
+ },
591
+ // --- 10. get_important_changes ------------------------------------------
592
+ {
593
+ name: "get_important_changes",
594
+ description: "Query flagged important changes with optional status filtering. Returns changes ordered by timestamp descending.",
595
+ inputSchema: {
596
+ type: "object",
597
+ properties: {
598
+ status: {
599
+ type: "string",
600
+ enum: ["detected", "acknowledged", "investigating", "resolved", "dismissed"],
601
+ description: "Filter by status (optional)",
602
+ },
603
+ limit: {
604
+ type: "number",
605
+ description: "Max changes to return (default 20)",
606
+ },
607
+ },
608
+ },
609
+ annotations: { readOnlyHint: true },
610
+ handler: async (args) => {
611
+ ensureSchema();
612
+ const db = getDb();
613
+ const limit = args.limit ?? 20;
614
+ let query;
615
+ let params;
616
+ if (args.status) {
617
+ query = `SELECT changeId, changeCategory, impactScore, impactReason, affectedEntities, suggestedAction, status, timestampMs, createdAt
618
+ FROM causal_important_changes WHERE status = ?
619
+ ORDER BY timestampMs DESC LIMIT ?`;
620
+ params = [args.status, limit];
621
+ }
622
+ else {
623
+ query = `SELECT changeId, changeCategory, impactScore, impactReason, affectedEntities, suggestedAction, status, timestampMs, createdAt
624
+ FROM causal_important_changes
625
+ ORDER BY timestampMs DESC LIMIT ?`;
626
+ params = [limit];
627
+ }
628
+ const changes = db.prepare(query).all(...params);
629
+ return {
630
+ totalReturned: changes.length,
631
+ changes: changes.map((c) => ({
632
+ ...c,
633
+ affectedEntities: JSON.parse(c.affectedEntities),
634
+ })),
635
+ };
636
+ },
637
+ },
638
+ ];
639
+ //# sourceMappingURL=causalMemoryTools.js.map