prism-mcp-server 20.2.0 → 20.2.2

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.
@@ -210,7 +210,24 @@ export class SynaluxStorage extends SupabaseStorage {
210
210
  user_id: userId,
211
211
  role,
212
212
  });
213
- return (result.context ?? result);
213
+ // Current portals return the canonical flat `context`. Older deployed
214
+ // portals returned `{ handoff, recent_sessions }`; normalize that envelope
215
+ // here so the formatter can still see last_summary, TODOs, version, and
216
+ // session history during a rolling portal/client upgrade.
217
+ if (result.context === null)
218
+ return null;
219
+ if (result.context && typeof result.context === "object" && !Array.isArray(result.context)) {
220
+ return result.context;
221
+ }
222
+ if (result.handoff === null)
223
+ return null;
224
+ if (result.handoff && typeof result.handoff === "object" && !Array.isArray(result.handoff)) {
225
+ return {
226
+ ...result.handoff,
227
+ recent_sessions: Array.isArray(result.recent_sessions) ? result.recent_sessions : [],
228
+ };
229
+ }
230
+ return result;
214
231
  }
215
232
  // ─── Forget memory (GDPR surgical deletion) ──────────────────
216
233
  // Phase 3 Tier A: route both soft and hard delete through the
@@ -38,6 +38,7 @@ vi.mock("../../../src/storage/configStorage.js", () => ({
38
38
  getAllSettings: vi.fn(() => Promise.resolve({})),
39
39
  getSettingSync: vi.fn(() => ""),
40
40
  initConfigStorage: vi.fn(),
41
+ refreshConfigStorageCache: vi.fn(() => Promise.resolve()),
41
42
  }));
42
43
  vi.mock("../../../src/config.js", () => ({
43
44
  PRISM_USER_ID: "test-user-id",
@@ -394,6 +395,18 @@ describe("ledgerHandlers", () => {
394
395
  await sessionLoadContextHandler(validArgs);
395
396
  expect(storage.loadContext).toHaveBeenCalledWith("test-project", "standard", "test-user-id", undefined);
396
397
  });
398
+ it.each(["quick", "standard", "deep"])("uses dashboard context depth %s when the caller omits level", async (configuredLevel) => {
399
+ mockGetSetting.mockImplementation(async (key, fallback = "") => key === "default_context_depth" ? configuredLevel : fallback);
400
+ await sessionLoadContextHandler(validArgs);
401
+ expect(storage.loadContext).toHaveBeenCalledWith("test-project", configuredLevel, "test-user-id", undefined);
402
+ });
403
+ it("lets an explicit level override the dashboard and safely ignores stale invalid dashboard state", async () => {
404
+ mockGetSetting.mockImplementation(async (key, fallback = "") => key === "default_context_depth" ? "obsolete-depth" : fallback);
405
+ await sessionLoadContextHandler({ ...validArgs, level: "deep" });
406
+ expect(storage.loadContext).toHaveBeenLastCalledWith("test-project", "deep", "test-user-id", undefined);
407
+ await sessionLoadContextHandler(validArgs);
408
+ expect(storage.loadContext).toHaveBeenLastCalledWith("test-project", "standard", "test-user-id", undefined);
409
+ });
397
410
  it("loads context at 'quick' level", async () => {
398
411
  storage.loadContext.mockResolvedValue(null);
399
412
  await sessionLoadContextHandler({ project: "test-project", level: "quick" });
@@ -26,9 +26,9 @@ export { webSearchHandler, braveWebSearchCodeModeHandler, localSearchHandler, br
26
26
  // This file always exports them — server.ts decides whether to include them in the tool list.
27
27
  //
28
28
  // v0.4.0: Added SESSION_COMPACT_LEDGER_TOOL and SESSION_SEARCH_MEMORY_TOOL
29
- export { SESSION_SAVE_LEDGER_TOOL, SESSION_SAVE_HANDOFF_TOOL, SESSION_LOAD_CONTEXT_TOOL, KNOWLEDGE_SEARCH_TOOL, KNOWLEDGE_FORGET_TOOL, SESSION_COMPACT_LEDGER_TOOL, SESSION_SEARCH_MEMORY_TOOL, MEMORY_HISTORY_TOOL, MEMORY_CHECKOUT_TOOL, SESSION_SAVE_IMAGE_TOOL, SESSION_VIEW_IMAGE_TOOL, SESSION_HEALTH_CHECK_TOOL, SESSION_BACKFILL_EMBEDDINGS_TOOL, SESSION_FORGET_MEMORY_TOOL, SESSION_EXPORT_MEMORY_TOOL, KNOWLEDGE_SET_RETENTION_TOOL, SESSION_SAVE_EXPERIENCE_TOOL, KNOWLEDGE_UPVOTE_TOOL, KNOWLEDGE_DOWNVOTE_TOOL, KNOWLEDGE_SYNC_RULES_TOOL, DEEP_STORAGE_PURGE_TOOL, SESSION_INTUITIVE_RECALL_TOOL, SESSION_BACKFILL_LINKS_TOOL, MAINTENANCE_VACUUM_TOOL, isDeepStoragePurgeArgs, SESSION_SYNTHESIZE_EDGES_TOOL, isSessionSynthesizeEdgesArgs, SESSION_COGNITIVE_ROUTE_TOOL, isSessionCognitiveRouteArgs, SESSION_TASK_ROUTE_TOOL, isSessionTaskRouteArgs, ONBOARDING_WIZARD_TOOL, EXTRACT_ENTITIES_TOOL, API_ANALYTICS_TOOL, BACKUP_DATABASE_TOOL, CONFIGURE_NOTIFICATIONS_TOOL, QUERY_MEMORY_NATURAL_TOOL } from "./sessionMemoryDefinitions.js";
29
+ export { SESSION_SAVE_LEDGER_TOOL, SESSION_SAVE_HANDOFF_TOOL, SESSION_LOAD_CONTEXT_TOOL, SESSION_BOOTSTRAP_TOOL, KNOWLEDGE_SEARCH_TOOL, KNOWLEDGE_FORGET_TOOL, SESSION_COMPACT_LEDGER_TOOL, SESSION_SEARCH_MEMORY_TOOL, MEMORY_HISTORY_TOOL, MEMORY_CHECKOUT_TOOL, SESSION_SAVE_IMAGE_TOOL, SESSION_VIEW_IMAGE_TOOL, SESSION_HEALTH_CHECK_TOOL, SESSION_BACKFILL_EMBEDDINGS_TOOL, SESSION_FORGET_MEMORY_TOOL, SESSION_EXPORT_MEMORY_TOOL, KNOWLEDGE_SET_RETENTION_TOOL, SESSION_SAVE_EXPERIENCE_TOOL, KNOWLEDGE_UPVOTE_TOOL, KNOWLEDGE_DOWNVOTE_TOOL, KNOWLEDGE_SYNC_RULES_TOOL, DEEP_STORAGE_PURGE_TOOL, SESSION_INTUITIVE_RECALL_TOOL, SESSION_BACKFILL_LINKS_TOOL, MAINTENANCE_VACUUM_TOOL, isDeepStoragePurgeArgs, SESSION_SYNTHESIZE_EDGES_TOOL, isSessionSynthesizeEdgesArgs, SESSION_COGNITIVE_ROUTE_TOOL, isSessionCognitiveRouteArgs, SESSION_TASK_ROUTE_TOOL, isSessionTaskRouteArgs, ONBOARDING_WIZARD_TOOL, EXTRACT_ENTITIES_TOOL, API_ANALYTICS_TOOL, BACKUP_DATABASE_TOOL, CONFIGURE_NOTIFICATIONS_TOOL, QUERY_MEMORY_NATURAL_TOOL } from "./sessionMemoryDefinitions.js";
30
30
  // 1. Ledger (Core CRUD & State)
31
- export { sessionSaveLedgerHandler, sessionSaveHandoffHandler, sessionLoadContextHandler, sessionSaveExperienceHandler, sessionSaveImageHandler, sessionViewImageHandler, memoryHistoryHandler, memoryCheckoutHandler, sessionForgetMemoryHandler, sessionExportMemoryHandler } from "./ledgerHandlers.js";
31
+ export { sessionSaveLedgerHandler, sessionSaveHandoffHandler, sessionLoadContextHandler, sessionBootstrapHandler, sessionSaveExperienceHandler, sessionSaveImageHandler, sessionViewImageHandler, memoryHistoryHandler, memoryCheckoutHandler, sessionForgetMemoryHandler, sessionExportMemoryHandler } from "./ledgerHandlers.js";
32
32
  // 2. Graph (Semantic Search & Weighting)
33
33
  export { sessionSearchMemoryHandler, knowledgeSearchHandler, sessionIntuitiveRecallHandler, knowledgeUpvoteHandler, knowledgeDownvoteHandler, knowledgeForgetHandler, knowledgeSyncRulesHandler, sessionSynthesizeEdgesHandler, sessionCognitiveRouteHandler } from "./graphHandlers.js";
34
34
  // 3. Hygiene (Maintenance & Integrity)