couchloop-eq-mcp 2.0.3 → 2.0.4

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 (71) hide show
  1. package/dist/clients/shrinkChatClient.d.ts +28 -28
  2. package/dist/db/client.d.ts +11 -19
  3. package/dist/db/client.d.ts.map +1 -1
  4. package/dist/db/client.js +30 -62
  5. package/dist/db/client.js.map +1 -1
  6. package/dist/resources/journey-status.d.ts.map +1 -1
  7. package/dist/resources/journey-status.js +10 -12
  8. package/dist/resources/journey-status.js.map +1 -1
  9. package/dist/resources/session-summary.d.ts.map +1 -1
  10. package/dist/resources/session-summary.js +33 -33
  11. package/dist/resources/session-summary.js.map +1 -1
  12. package/dist/resources/user-context.d.ts.map +1 -1
  13. package/dist/resources/user-context.js +26 -41
  14. package/dist/resources/user-context.js.map +1 -1
  15. package/dist/tools/checkpoint.d.ts +1 -8
  16. package/dist/tools/checkpoint.d.ts.map +1 -1
  17. package/dist/tools/checkpoint.js +47 -49
  18. package/dist/tools/checkpoint.js.map +1 -1
  19. package/dist/tools/generate-upgrade-report.d.ts +2 -2
  20. package/dist/tools/guard.d.ts +3 -3
  21. package/dist/tools/index.d.ts +2 -4
  22. package/dist/tools/index.d.ts.map +1 -1
  23. package/dist/tools/index.js +2 -4
  24. package/dist/tools/index.js.map +1 -1
  25. package/dist/tools/insight.d.ts +10 -49
  26. package/dist/tools/insight.d.ts.map +1 -1
  27. package/dist/tools/insight.js +78 -91
  28. package/dist/tools/insight.js.map +1 -1
  29. package/dist/tools/journey.d.ts +5 -5
  30. package/dist/tools/journey.d.ts.map +1 -1
  31. package/dist/tools/journey.js +47 -39
  32. package/dist/tools/journey.js.map +1 -1
  33. package/dist/tools/pre-review-code.d.ts +2 -2
  34. package/dist/tools/prevent-ai-errors.d.ts +1 -1
  35. package/dist/tools/primary-tools.d.ts +8 -0
  36. package/dist/tools/primary-tools.d.ts.map +1 -1
  37. package/dist/tools/primary-tools.js +51 -20
  38. package/dist/tools/primary-tools.js.map +1 -1
  39. package/dist/tools/protect-files.d.ts +1 -1
  40. package/dist/tools/sendMessage.d.ts.map +1 -1
  41. package/dist/tools/sendMessage.js +52 -38
  42. package/dist/tools/sendMessage.js.map +1 -1
  43. package/dist/tools/session-manager.d.ts.map +1 -1
  44. package/dist/tools/session-manager.js +88 -70
  45. package/dist/tools/session-manager.js.map +1 -1
  46. package/dist/tools/session.d.ts +7 -86
  47. package/dist/tools/session.d.ts.map +1 -1
  48. package/dist/tools/session.js +68 -72
  49. package/dist/tools/session.js.map +1 -1
  50. package/dist/tools/smart-context.d.ts +1 -1
  51. package/dist/tools/status.d.ts +9 -2
  52. package/dist/tools/status.d.ts.map +1 -1
  53. package/dist/tools/status.js +112 -63
  54. package/dist/tools/status.js.map +1 -1
  55. package/dist/tools/verify.d.ts +2 -2
  56. package/dist/tools/verify.js.map +1 -1
  57. package/dist/types/auth.d.ts +2 -2
  58. package/dist/types/checkpoint.d.ts +4 -4
  59. package/dist/types/file-protection.d.ts +2 -2
  60. package/dist/types/insight.d.ts +10 -10
  61. package/dist/types/journey.d.ts +40 -12
  62. package/dist/types/journey.d.ts.map +1 -1
  63. package/dist/types/journey.js +2 -0
  64. package/dist/types/journey.js.map +1 -1
  65. package/dist/types/session.d.ts +8 -8
  66. package/dist/workflows/engine.d.ts +2 -2
  67. package/dist/workflows/engine.d.ts.map +1 -1
  68. package/dist/workflows/engine.js +81 -82
  69. package/dist/workflows/engine.js.map +1 -1
  70. package/dist/workflows/index.d.ts +4 -4
  71. package/package.json +2 -10
@@ -23,15 +23,15 @@ export declare const ShrinkResponseSchema: z.ZodObject<{
23
23
  }, "strip", z.ZodTypeAny, {
24
24
  type: string;
25
25
  title: string;
26
- description?: string | undefined;
27
26
  url?: string | undefined;
28
27
  phone?: string | undefined;
28
+ description?: string | undefined;
29
29
  }, {
30
30
  type: string;
31
31
  title: string;
32
- description?: string | undefined;
33
32
  url?: string | undefined;
34
33
  phone?: string | undefined;
34
+ description?: string | undefined;
35
35
  }>, "many">>;
36
36
  escalationPath: z.ZodOptional<z.ZodString>;
37
37
  threadId: z.ZodOptional<z.ZodString>;
@@ -53,24 +53,15 @@ export declare const ShrinkResponseSchema: z.ZodObject<{
53
53
  error_type: z.ZodOptional<z.ZodString>;
54
54
  message: z.ZodOptional<z.ZodString>;
55
55
  }, "strip", z.ZodTypeAny, {
56
- threadId?: string | undefined;
57
- content?: string | undefined;
58
- crisis_level?: string | number | undefined;
59
- crisisLevel?: string | number | undefined;
60
- resources?: {
61
- type: string;
62
- title: string;
63
- description?: string | undefined;
64
- url?: string | undefined;
65
- phone?: string | undefined;
66
- }[] | undefined;
67
- escalationPath?: string | undefined;
68
56
  error?: string | undefined;
57
+ content?: string | undefined;
69
58
  reply?: string | undefined;
70
59
  response_text?: string | undefined;
71
60
  messageId?: string | undefined;
72
61
  crisisDetected?: boolean | undefined;
73
62
  message?: string | undefined;
63
+ crisisLevel?: string | number | undefined;
64
+ crisis_level?: string | number | undefined;
74
65
  crisisHandled?: boolean | undefined;
75
66
  crisis_confidence?: number | undefined;
76
67
  crisis_requires_intervention?: boolean | undefined;
@@ -78,6 +69,15 @@ export declare const ShrinkResponseSchema: z.ZodObject<{
78
69
  crisis_suggested_actions?: string[] | undefined;
79
70
  emotions?: string[] | undefined;
80
71
  therapeuticTechnique?: string | undefined;
72
+ resources?: {
73
+ type: string;
74
+ title: string;
75
+ url?: string | undefined;
76
+ phone?: string | undefined;
77
+ description?: string | undefined;
78
+ }[] | undefined;
79
+ escalationPath?: string | undefined;
80
+ threadId?: string | undefined;
81
81
  meta?: {
82
82
  rag_confidence?: number | undefined;
83
83
  emotionalTone?: string[] | undefined;
@@ -86,24 +86,15 @@ export declare const ShrinkResponseSchema: z.ZodObject<{
86
86
  memory_high_relevance_count?: number | undefined;
87
87
  error_type?: string | undefined;
88
88
  }, {
89
- threadId?: string | undefined;
90
- content?: string | undefined;
91
- crisis_level?: string | number | undefined;
92
- crisisLevel?: string | number | undefined;
93
- resources?: {
94
- type: string;
95
- title: string;
96
- description?: string | undefined;
97
- url?: string | undefined;
98
- phone?: string | undefined;
99
- }[] | undefined;
100
- escalationPath?: string | undefined;
101
89
  error?: string | undefined;
90
+ content?: string | undefined;
102
91
  reply?: string | undefined;
103
92
  response_text?: string | undefined;
104
93
  messageId?: string | undefined;
105
94
  crisisDetected?: boolean | undefined;
106
95
  message?: string | undefined;
96
+ crisisLevel?: string | number | undefined;
97
+ crisis_level?: string | number | undefined;
107
98
  crisisHandled?: boolean | undefined;
108
99
  crisis_confidence?: number | undefined;
109
100
  crisis_requires_intervention?: boolean | undefined;
@@ -111,6 +102,15 @@ export declare const ShrinkResponseSchema: z.ZodObject<{
111
102
  crisis_suggested_actions?: string[] | undefined;
112
103
  emotions?: string[] | undefined;
113
104
  therapeuticTechnique?: string | undefined;
105
+ resources?: {
106
+ type: string;
107
+ title: string;
108
+ url?: string | undefined;
109
+ phone?: string | undefined;
110
+ description?: string | undefined;
111
+ }[] | undefined;
112
+ escalationPath?: string | undefined;
113
+ threadId?: string | undefined;
114
114
  meta?: {
115
115
  rag_confidence?: number | undefined;
116
116
  emotionalTone?: string[] | undefined;
@@ -126,14 +126,14 @@ export declare const ErrorResponseSchema: z.ZodObject<{
126
126
  code: z.ZodOptional<z.ZodString>;
127
127
  details: z.ZodOptional<z.ZodUnknown>;
128
128
  }, "strip", z.ZodTypeAny, {
129
- code?: string | undefined;
130
129
  error?: string | undefined;
130
+ code?: string | undefined;
131
131
  message?: string | undefined;
132
132
  error_type?: string | undefined;
133
133
  details?: unknown;
134
134
  }, {
135
- code?: string | undefined;
136
135
  error?: string | undefined;
136
+ code?: string | undefined;
137
137
  message?: string | undefined;
138
138
  error_type?: string | undefined;
139
139
  details?: unknown;
@@ -1,23 +1,15 @@
1
- import { drizzle } from 'drizzle-orm/postgres-js';
2
- import postgres from 'postgres';
3
- import { createClient } from '@supabase/supabase-js';
4
- declare let db: ReturnType<typeof drizzle> | null;
5
- declare let supabase: ReturnType<typeof createClient> | null;
1
+ /**
2
+ * Database client — Supabase JS SDK only.
3
+ *
4
+ * All database access goes through the Supabase client.
5
+ * Drizzle ORM has been removed.
6
+ */
7
+ import { SupabaseClient } from '@supabase/supabase-js';
8
+ declare let supabase: SupabaseClient | null;
6
9
  export declare function initDatabase(): Promise<{
7
- db: import("drizzle-orm/postgres-js").PostgresJsDatabase<Record<string, unknown>>;
8
- supabase: import("@supabase/supabase-js").SupabaseClient<unknown, {
9
- PostgrestVersion: string;
10
- }, never, never, {
11
- PostgrestVersion: string;
12
- }> | null;
13
- sql: postgres.Sql<{}>;
10
+ supabase: SupabaseClient<any, "public", "public", any, any>;
14
11
  }>;
15
- export declare function getDb(): import("drizzle-orm/postgres-js").PostgresJsDatabase<Record<string, unknown>>;
16
- export declare function getSupabase(): import("@supabase/supabase-js").SupabaseClient<unknown, {
17
- PostgrestVersion: string;
18
- }, never, never, {
19
- PostgrestVersion: string;
20
- }> | null;
12
+ export declare function getSupabase(): SupabaseClient | null;
21
13
  export declare function closeDatabase(): Promise<void>;
22
- export { db, supabase };
14
+ export { supabase };
23
15
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAIrD,QAAA,IAAI,EAAE,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,GAAG,IAAW,CAAC;AACjD,QAAA,IAAI,QAAQ,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,GAAG,IAAW,CAAC;AAG5D,wBAAsB,YAAY;;;;;;;;GAuDjC;AAED,wBAAgB,KAAK,kFAKpB;AAED,wBAAgB,WAAW;;;;UAM1B;AAED,wBAAsB,aAAa,kBAQlC;AAED,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGrE,QAAA,IAAI,QAAQ,EAAE,cAAc,GAAG,IAAW,CAAC;AAE3C,wBAAsB,YAAY;;GAmCjC;AAED,wBAAgB,WAAW,IAAI,cAAc,GAAG,IAAI,CAEnD;AAED,wBAAsB,aAAa,kBAGlC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
package/dist/db/client.js CHANGED
@@ -1,83 +1,51 @@
1
- import { drizzle } from 'drizzle-orm/postgres-js';
2
- import postgres from 'postgres';
1
+ /**
2
+ * Database client — Supabase JS SDK only.
3
+ *
4
+ * All database access goes through the Supabase client.
5
+ * Drizzle ORM has been removed.
6
+ */
3
7
  import { createClient } from '@supabase/supabase-js';
4
8
  import { logger } from '../utils/logger.js';
5
- import * as schema from './schema.js';
6
- let db = null;
7
9
  let supabase = null;
8
- let sql = null;
9
10
  export async function initDatabase() {
10
11
  try {
11
- const databaseUrl = process.env.DATABASE_URL;
12
12
  const supabaseUrl = process.env.SUPABASE_URL;
13
- const supabaseAnonKey = process.env.SUPABASE_ANON_KEY;
14
- const supabaseServiceKey = process.env.SUPABASE_SERVICE_ROLE_KEY;
15
- if (!databaseUrl) {
16
- throw new Error('DATABASE_URL is not configured');
13
+ const supabaseKey = process.env.SUPABASE_SERVICE_ROLE_KEY || process.env.SUPABASE_ANON_KEY;
14
+ if (!supabaseUrl || !supabaseKey) {
15
+ const missing = [];
16
+ if (!supabaseUrl)
17
+ missing.push('SUPABASE_URL');
18
+ if (!supabaseKey)
19
+ missing.push('SUPABASE_SERVICE_ROLE_KEY or SUPABASE_ANON_KEY');
20
+ console.error(`FATAL: Missing required env vars: ${missing.join(', ')}`);
21
+ throw new Error(`Missing required env vars: ${missing.join(', ')}`);
17
22
  }
18
- // Make Supabase optional - MCP server can work with just database
19
- const hasSupabase = supabaseUrl && supabaseAnonKey &&
20
- supabaseServiceKey &&
21
- !supabaseUrl.includes('xxx') &&
22
- !supabaseAnonKey.includes('your-') &&
23
- !supabaseServiceKey.includes('your-');
24
- // Initialize Postgres connection for Drizzle
25
- // Optimized pool configuration for better performance under load
26
- // FIX 4: Reduced pool size for transaction-mode pooler (port 6543 PgBouncer)
27
- // Supabase pooler manages its own connection limits; oversized client pool
28
- // can exhaust server-side slots, especially with multiple Railway instances
29
- sql = postgres(databaseUrl, {
30
- max: 10, // Right-sized for transaction-mode pooler
31
- idle_timeout: 30, // Shorter idle — pooler handles connection reuse
32
- connect_timeout: 10, // Keep same connection timeout
33
- prepare: false, // Required for transaction-mode pooler
23
+ logger.info(`Initializing Supabase client (using ${process.env.SUPABASE_SERVICE_ROLE_KEY ? 'service_role' : 'anon'} key)`);
24
+ supabase = createClient(supabaseUrl, supabaseKey, {
25
+ auth: {
26
+ autoRefreshToken: false,
27
+ persistSession: false,
28
+ },
34
29
  });
35
- // Initialize Drizzle ORM
36
- db = drizzle(sql, { schema });
37
- // Initialize Supabase client only if configuration is valid
38
- if (hasSupabase) {
39
- supabase = createClient(supabaseUrl, supabaseServiceKey, {
40
- auth: {
41
- autoRefreshToken: false,
42
- persistSession: false,
43
- },
44
- });
45
- logger.info('Supabase client initialized');
46
- }
47
- else {
48
- logger.info('Supabase configuration incomplete or uses placeholders - running without Supabase client');
49
- }
50
30
  // Test the connection
51
- await sql `SELECT 1`;
52
- logger.info('Database connection established successfully');
53
- return { db, supabase, sql };
31
+ const { error } = await supabase.from('users').select('id').limit(1);
32
+ if (error) {
33
+ throw new Error(`Supabase connection test failed: ${error.message}`);
34
+ }
35
+ logger.info('Supabase client initialized and connection verified');
36
+ return { supabase };
54
37
  }
55
38
  catch (error) {
56
39
  logger.error('Failed to initialize database:', error);
57
40
  throw error;
58
41
  }
59
42
  }
60
- export function getDb() {
61
- if (!db) {
62
- throw new Error('Database not initialized. Call initDatabase() first.');
63
- }
64
- return db;
65
- }
66
43
  export function getSupabase() {
67
- if (!supabase) {
68
- logger.warn('Supabase client not initialized - check environment configuration');
69
- return null;
70
- }
71
44
  return supabase;
72
45
  }
73
46
  export async function closeDatabase() {
74
- if (sql) {
75
- await sql.end();
76
- sql = null;
77
- db = null;
78
- supabase = null;
79
- logger.info('Database connections closed');
80
- }
47
+ supabase = null;
48
+ logger.info('Database connection closed');
81
49
  }
82
- export { db, supabase };
50
+ export { supabase };
83
51
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAkB,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,IAAI,QAAQ,GAA0B,IAAI,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAE3F,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW;gBAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/C,IAAI,CAAC,WAAW;gBAAE,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YACjF,OAAO,CAAC,KAAK,CAAC,qCAAqC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,uCAAuC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC;QAE3H,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE;YAChD,IAAI,EAAE;gBACJ,gBAAgB,EAAE,KAAK;gBACvB,cAAc,EAAE,KAAK;aACtB;SACF,CAAC,CAAC;QAEH,sBAAsB;QACtB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QAEnE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,QAAQ,GAAG,IAAI,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AAC5C,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"journey-status.d.ts","sourceRoot":"","sources":["../../src/resources/journey-status.ts"],"names":[],"mappings":"AAKA,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,yBAsCtD"}
1
+ {"version":3,"file":"journey-status.d.ts","sourceRoot":"","sources":["../../src/resources/journey-status.ts"],"names":[],"mappings":"AAGA,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,yBAwCtD"}
@@ -1,17 +1,15 @@
1
- import { getDb } from '../db/client.js';
2
- import { journeys } from '../db/schema.js';
3
- import { eq } from 'drizzle-orm';
1
+ import { getSupabaseClient, throwOnError } from '../db/supabase-helpers.js';
4
2
  import { logger } from '../utils/logger.js';
5
3
  export function createJourneyStatusHandler(slug) {
6
4
  return async function getJourneyStatus() {
7
5
  try {
8
- const db = getDb();
6
+ const supabase = getSupabaseClient();
9
7
  // Get journey by slug
10
- const [journey] = await db
11
- .select()
12
- .from(journeys)
13
- .where(eq(journeys.slug, slug))
14
- .limit(1);
8
+ const journey = throwOnError(await supabase
9
+ .from('journeys')
10
+ .select('*')
11
+ .eq('slug', slug)
12
+ .maybeSingle());
15
13
  if (!journey) {
16
14
  return JSON.stringify({
17
15
  error: 'Journey not found',
@@ -23,11 +21,11 @@ export function createJourneyStatusHandler(slug) {
23
21
  slug: journey.slug,
24
22
  name: journey.name,
25
23
  description: journey.description,
26
- estimated_minutes: journey.estimatedMinutes,
24
+ estimated_minutes: journey.estimated_minutes,
27
25
  tags: journey.tags,
28
26
  steps: journey.steps,
29
- created_at: journey.createdAt,
30
- updated_at: journey.updatedAt,
27
+ created_at: journey.created_at,
28
+ updated_at: journey.updated_at,
31
29
  }, null, 2);
32
30
  }
33
31
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"journey-status.js","sourceRoot":"","sources":["../../src/resources/journey-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,OAAO,KAAK,UAAU,gBAAgB;QACpC,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;YAEnB,sBAAsB;YACtB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;iBACvB,MAAM,EAAE;iBACR,IAAI,CAAC,QAAQ,CAAC;iBACd,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC9B,KAAK,CAAC,CAAC,CAAC,CAAC;YAEZ,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,mBAAmB;oBAC1B,IAAI,EAAE,IAAI;iBACX,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,iBAAiB,EAAE,OAAO,CAAC,gBAAgB;gBAC3C,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,UAAU,EAAE,OAAO,CAAC,SAAS;gBAC7B,UAAU,EAAE,OAAO,CAAC,SAAS;aAC9B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,KAAK,EAAE,uBAAuB;gBAC9B,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAClE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"journey-status.js","sourceRoot":"","sources":["../../src/resources/journey-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,OAAO,KAAK,UAAU,gBAAgB;QACpC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;YAErC,sBAAsB;YACtB,MAAM,OAAO,GAAG,YAAY,CAC1B,MAAM,QAAQ;iBACX,IAAI,CAAC,UAAU,CAAC;iBAChB,MAAM,CAAC,GAAG,CAAC;iBACX,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;iBAChB,WAAW,EAAE,CACjB,CAAC;YAEF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,SAAS,CAAC;oBACpB,KAAK,EAAE,mBAAmB;oBAC1B,IAAI,EAAE,IAAI;iBACX,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,KAAK,EAAE,uBAAuB;gBAC9B,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAClE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-summary.d.ts","sourceRoot":"","sources":["../../src/resources/session-summary.ts"],"names":[],"mappings":"AAMA,wBAAsB,iBAAiB,oBAwFtC"}
1
+ {"version":3,"file":"session-summary.d.ts","sourceRoot":"","sources":["../../src/resources/session-summary.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,oBA+FtC"}
@@ -1,20 +1,18 @@
1
- import { getDb } from '../db/client.js';
2
- import { sessions, journeys, checkpoints, users } from '../db/schema.js';
3
- import { eq, and, desc } from 'drizzle-orm';
1
+ import { getSupabaseClient, throwOnError } from '../db/supabase-helpers.js';
4
2
  import { logger } from '../utils/logger.js';
5
3
  import { nanoid } from 'nanoid';
6
4
  export async function getSessionSummary() {
7
5
  try {
8
- const db = getDb();
6
+ const supabase = getSupabaseClient();
9
7
  // NOTE: Resources in MCP don't receive parameters, so we can't pass auth context.
10
8
  // Using a mock user ID for now. This will be addressed when we implement
11
9
  // a proper session store or modify the MCP server to maintain user context.
12
10
  const mockUserId = 'usr_' + nanoid();
13
- const [user] = await db
14
- .select()
15
- .from(users)
16
- .where(eq(users.externalId, mockUserId))
17
- .limit(1);
11
+ const user = throwOnError(await supabase
12
+ .from('users')
13
+ .select('*')
14
+ .eq('external_id', mockUserId)
15
+ .maybeSingle());
18
16
  if (!user) {
19
17
  return JSON.stringify({
20
18
  active: false,
@@ -22,12 +20,14 @@ export async function getSessionSummary() {
22
20
  }, null, 2);
23
21
  }
24
22
  // Get active session
25
- const [activeSession] = await db
26
- .select()
27
- .from(sessions)
28
- .where(and(eq(sessions.userId, user.id), eq(sessions.status, 'active')))
29
- .orderBy(desc(sessions.lastActiveAt))
30
- .limit(1);
23
+ const activeSession = throwOnError(await supabase
24
+ .from('sessions')
25
+ .select('*')
26
+ .eq('user_id', user.id)
27
+ .eq('status', 'active')
28
+ .order('last_active_at', { ascending: false })
29
+ .limit(1)
30
+ .maybeSingle());
31
31
  if (!activeSession) {
32
32
  return JSON.stringify({
33
33
  active: false,
@@ -37,30 +37,30 @@ export async function getSessionSummary() {
37
37
  // Get journey if linked
38
38
  let journey = null;
39
39
  let currentStep = null;
40
- if (activeSession.journeyId) {
41
- [journey] = await db
42
- .select()
43
- .from(journeys)
44
- .where(eq(journeys.id, activeSession.journeyId))
45
- .limit(1);
46
- if (journey && journey.steps && journey.steps[activeSession.currentStep]) {
47
- currentStep = journey.steps[activeSession.currentStep];
40
+ if (activeSession.journey_id) {
41
+ journey = throwOnError(await supabase
42
+ .from('journeys')
43
+ .select('*')
44
+ .eq('id', activeSession.journey_id)
45
+ .maybeSingle());
46
+ if (journey && journey.steps && journey.steps[activeSession.current_step]) {
47
+ currentStep = journey.steps[activeSession.current_step];
48
48
  }
49
49
  }
50
50
  // Get checkpoints
51
- const sessionCheckpoints = await db
52
- .select()
53
- .from(checkpoints)
54
- .where(eq(checkpoints.sessionId, activeSession.id))
55
- .orderBy(checkpoints.createdAt);
51
+ const sessionCheckpoints = throwOnError(await supabase
52
+ .from('checkpoints')
53
+ .select('*')
54
+ .eq('session_id', activeSession.id)
55
+ .order('created_at', { ascending: true }));
56
56
  return JSON.stringify({
57
57
  active: true,
58
58
  session: {
59
59
  id: activeSession.id,
60
60
  status: activeSession.status,
61
- started_at: activeSession.startedAt,
62
- last_active_at: activeSession.lastActiveAt,
63
- current_step_index: activeSession.currentStep,
61
+ started_at: activeSession.started_at,
62
+ last_active_at: activeSession.last_active_at,
63
+ current_step_index: activeSession.current_step,
64
64
  },
65
65
  journey: journey ? {
66
66
  name: journey.name,
@@ -68,9 +68,9 @@ export async function getSessionSummary() {
68
68
  total_steps: journey.steps?.length || 0,
69
69
  } : null,
70
70
  current_step: currentStep,
71
- checkpoints: sessionCheckpoints.map(c => ({
71
+ checkpoints: (sessionCheckpoints ?? []).map((c) => ({
72
72
  key: c.key,
73
- created_at: c.createdAt,
73
+ created_at: c.created_at,
74
74
  })),
75
75
  }, null, 2);
76
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session-summary.js","sourceRoot":"","sources":["../../src/resources/session-summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-summary.js","sourceRoot":"","sources":["../../src/resources/session-summary.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-context.d.ts","sourceRoot":"","sources":["../../src/resources/user-context.ts"],"names":[],"mappings":"AAMA,wBAAsB,sBAAsB,oBA6E3C"}
1
+ {"version":3,"file":"user-context.d.ts","sourceRoot":"","sources":["../../src/resources/user-context.ts"],"names":[],"mappings":"AAIA,wBAAsB,sBAAsB,oBAwE3C"}
@@ -1,20 +1,18 @@
1
- import { getDb } from '../db/client.js';
2
- import { users, insights, sessions } from '../db/schema.js';
3
- import { eq, desc } from 'drizzle-orm';
1
+ import { getSupabaseClient, throwOnError } from '../db/supabase-helpers.js';
4
2
  import { logger } from '../utils/logger.js';
5
3
  import { nanoid } from 'nanoid';
6
4
  export async function getUserContextResource() {
7
5
  try {
8
- const db = getDb();
6
+ const supabase = getSupabaseClient();
9
7
  // NOTE: Resources in MCP don't receive parameters, so we can't pass auth context.
10
8
  // Using a mock user ID for now. This will be addressed when we implement
11
9
  // a proper session store or modify the MCP server to maintain user context.
12
10
  const mockUserId = 'usr_' + nanoid();
13
- const [user] = await db
14
- .select()
15
- .from(users)
16
- .where(eq(users.externalId, mockUserId))
17
- .limit(1);
11
+ const user = throwOnError(await supabase
12
+ .from('users')
13
+ .select('*')
14
+ .eq('external_id', mockUserId)
15
+ .maybeSingle());
18
16
  if (!user) {
19
17
  return JSON.stringify({
20
18
  exists: false,
@@ -22,47 +20,34 @@ export async function getUserContextResource() {
22
20
  }, null, 2);
23
21
  }
24
22
  // Get recent insights
25
- const recentInsights = await db
26
- .select({
27
- id: insights.id,
28
- content: insights.content,
29
- tags: insights.tags,
30
- created_at: insights.createdAt,
31
- })
32
- .from(insights)
33
- .where(eq(insights.userId, user.id))
34
- .orderBy(desc(insights.createdAt))
35
- .limit(5);
23
+ const recentInsights = throwOnError(await supabase
24
+ .from('insights')
25
+ .select('id, content, tags, created_at')
26
+ .eq('user_id', user.id)
27
+ .order('created_at', { ascending: false })
28
+ .limit(5));
36
29
  // Get recent sessions
37
- const recentSessions = await db
38
- .select({
39
- id: sessions.id,
40
- status: sessions.status,
41
- started_at: sessions.startedAt,
42
- completed_at: sessions.completedAt,
43
- journey_id: sessions.journeyId,
44
- })
45
- .from(sessions)
46
- .where(eq(sessions.userId, user.id))
47
- .orderBy(desc(sessions.startedAt))
48
- .limit(5);
30
+ const recentSessions = throwOnError(await supabase
31
+ .from('sessions')
32
+ .select('id, status, started_at, completed_at, journey_id')
33
+ .eq('user_id', user.id)
34
+ .order('started_at', { ascending: false })
35
+ .limit(5));
49
36
  // Count total sessions
50
- const sessionStats = await db
51
- .select({
52
- total: eq(sessions.userId, user.id),
53
- })
54
- .from(sessions)
55
- .where(eq(sessions.userId, user.id));
37
+ const sessionStats = throwOnError(await supabase
38
+ .from('sessions')
39
+ .select('id')
40
+ .eq('user_id', user.id));
56
41
  return JSON.stringify({
57
42
  exists: true,
58
43
  user: {
59
44
  id: user.id,
60
- created_at: user.createdAt,
45
+ created_at: user.created_at,
61
46
  preferences: user.preferences || {},
62
47
  },
63
48
  stats: {
64
- total_sessions: sessionStats.length,
65
- total_insights: recentInsights.length,
49
+ total_sessions: (sessionStats ?? []).length,
50
+ total_insights: (recentInsights ?? []).length,
66
51
  },
67
52
  recent_insights: recentInsights,
68
53
  recent_sessions: recentSessions,
@@ -1 +1 @@
1
- {"version":3,"file":"user-context.js","sourceRoot":"","sources":["../../src/resources/user-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user-context.js","sourceRoot":"","sources":["../../src/resources/user-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;QAErC,kFAAkF;QAClF,yEAAyE;QACzE,4EAA4E;QAC5E,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,YAAY,CACvB,MAAM,QAAQ;aACX,IAAI,CAAC,OAAO,CAAC;aACb,MAAM,CAAC,GAAG,CAAC;aACX,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC;aAC7B,WAAW,EAAE,CACjB,CAAC;QAEF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,gBAAgB;aAC1B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACd,CAAC;QAED,sBAAsB;QACtB,MAAM,cAAc,GAAG,YAAY,CACjC,MAAM,QAAQ;aACX,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,+BAA+B,CAAC;aACvC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;aACtB,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;aACzC,KAAK,CAAC,CAAC,CAAC,CACZ,CAAC;QAEF,sBAAsB;QACtB,MAAM,cAAc,GAAG,YAAY,CACjC,MAAM,QAAQ;aACX,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,kDAAkD,CAAC;aAC1D,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;aACtB,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;aACzC,KAAK,CAAC,CAAC,CAAC,CACZ,CAAC;QAEF,uBAAuB;QACvB,MAAM,YAAY,GAAG,YAAY,CAC/B,MAAM,QAAQ;aACX,IAAI,CAAC,UAAU,CAAC;aAChB,MAAM,CAAC,IAAI,CAAC;aACZ,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAC1B,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE;gBACJ,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;aACpC;YACD,KAAK,EAAE;gBACL,cAAc,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM;gBAC3C,cAAc,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,MAAM;aAC9C;YACD,eAAe,EAAE,cAAc;YAC/B,eAAe,EAAE,cAAc;SAChC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,KAAK,EAAE,4BAA4B;YACnC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAClE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -15,14 +15,7 @@ export declare function getCheckpoints(args: {
15
15
  } | {
16
16
  session_id: string;
17
17
  session_created: boolean;
18
- checkpoints: {
19
- key: string;
20
- id: string;
21
- createdAt: Date;
22
- sessionId: string;
23
- stepId: string;
24
- value: unknown;
25
- }[];
18
+ checkpoints: any[];
26
19
  count: number;
27
20
  }>;
28
21
  //# sourceMappingURL=checkpoint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/tools/checkpoint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAOlF,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkKnG;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;;;;;;;;;;;;;;;GA0BlI"}
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/tools/checkpoint.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAOlF,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA8KnG;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;;;;;;;;GA4BlI"}