couchloop-eq-mcp 1.1.3 → 1.1.6

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 (89) hide show
  1. package/README.md +6 -0
  2. package/dist/clients/shrinkChatClient.d.ts +4 -4
  3. package/dist/index.js +168 -6
  4. package/dist/index.js.map +1 -1
  5. package/dist/server/chatgpt-mcp.d.ts.map +1 -1
  6. package/dist/server/chatgpt-mcp.js +112 -2
  7. package/dist/server/chatgpt-mcp.js.map +1 -1
  8. package/dist/server/http-mcp.d.ts +11 -0
  9. package/dist/server/http-mcp.d.ts.map +1 -0
  10. package/dist/server/http-mcp.js +431 -0
  11. package/dist/server/http-mcp.js.map +1 -0
  12. package/dist/server/index.d.ts.map +1 -1
  13. package/dist/server/index.js +28 -3
  14. package/dist/server/index.js.map +1 -1
  15. package/dist/server/sse.d.ts +1 -1
  16. package/dist/server/sse.d.ts.map +1 -1
  17. package/dist/server/sse.js +320 -69
  18. package/dist/server/sse.js.map +1 -1
  19. package/dist/tools/check-versions.d.ts +7 -7
  20. package/dist/tools/check-versions.d.ts.map +1 -1
  21. package/dist/tools/check-versions.js +17 -22
  22. package/dist/tools/check-versions.js.map +1 -1
  23. package/dist/tools/checkpoint.d.ts +4 -18
  24. package/dist/tools/checkpoint.d.ts.map +1 -1
  25. package/dist/tools/checkpoint.js +85 -11
  26. package/dist/tools/checkpoint.js.map +1 -1
  27. package/dist/tools/comprehensive-code-review.d.ts +78 -0
  28. package/dist/tools/comprehensive-code-review.d.ts.map +1 -0
  29. package/dist/tools/comprehensive-code-review.js +177 -0
  30. package/dist/tools/comprehensive-code-review.js.map +1 -0
  31. package/dist/tools/comprehensive-package-audit.d.ts +75 -0
  32. package/dist/tools/comprehensive-package-audit.d.ts.map +1 -0
  33. package/dist/tools/comprehensive-package-audit.js +151 -0
  34. package/dist/tools/comprehensive-package-audit.js.map +1 -0
  35. package/dist/tools/detect-build-context.d.ts +59 -0
  36. package/dist/tools/detect-build-context.d.ts.map +1 -0
  37. package/dist/tools/detect-build-context.js +80 -0
  38. package/dist/tools/detect-build-context.js.map +1 -0
  39. package/dist/tools/generate-upgrade-report.d.ts +85 -0
  40. package/dist/tools/generate-upgrade-report.d.ts.map +1 -0
  41. package/dist/tools/generate-upgrade-report.js +102 -0
  42. package/dist/tools/generate-upgrade-report.js.map +1 -0
  43. package/dist/tools/index-full.d.ts +1355 -0
  44. package/dist/tools/index-full.d.ts.map +1 -0
  45. package/dist/tools/index-full.js +611 -0
  46. package/dist/tools/index-full.js.map +1 -0
  47. package/dist/tools/index.d.ts +27 -968
  48. package/dist/tools/index.d.ts.map +1 -1
  49. package/dist/tools/index.js +29 -531
  50. package/dist/tools/index.js.map +1 -1
  51. package/dist/tools/insight.d.ts +25 -6
  52. package/dist/tools/insight.d.ts.map +1 -1
  53. package/dist/tools/insight.js +2 -1
  54. package/dist/tools/insight.js.map +1 -1
  55. package/dist/tools/prevent-ai-errors.d.ts +85 -0
  56. package/dist/tools/prevent-ai-errors.d.ts.map +1 -0
  57. package/dist/tools/prevent-ai-errors.js +97 -0
  58. package/dist/tools/prevent-ai-errors.js.map +1 -0
  59. package/dist/tools/primary-tools.d.ts +430 -0
  60. package/dist/tools/primary-tools.d.ts.map +1 -0
  61. package/dist/tools/primary-tools.js +294 -0
  62. package/dist/tools/primary-tools.js.map +1 -0
  63. package/dist/tools/sendMessage.d.ts +3 -5
  64. package/dist/tools/sendMessage.d.ts.map +1 -1
  65. package/dist/tools/sendMessage.js +47 -22
  66. package/dist/tools/sendMessage.js.map +1 -1
  67. package/dist/tools/session-manager.d.ts +32 -0
  68. package/dist/tools/session-manager.d.ts.map +1 -0
  69. package/dist/tools/session-manager.js +184 -0
  70. package/dist/tools/session-manager.js.map +1 -0
  71. package/dist/tools/smart-context.d.ts +66 -0
  72. package/dist/tools/smart-context.d.ts.map +1 -0
  73. package/dist/tools/smart-context.js +167 -0
  74. package/dist/tools/smart-context.js.map +1 -0
  75. package/dist/tools/validate_packages.d.ts.map +1 -1
  76. package/dist/tools/validate_packages.js +6 -4
  77. package/dist/tools/validate_packages.js.map +1 -1
  78. package/dist/types/checkpoint.d.ts +59 -4
  79. package/dist/types/checkpoint.d.ts.map +1 -1
  80. package/dist/types/checkpoint.js +20 -1
  81. package/dist/types/checkpoint.js.map +1 -1
  82. package/dist/types/journey.d.ts +6 -6
  83. package/dist/types/session.d.ts +3 -3
  84. package/dist/utils/sanitize.d.ts +24 -0
  85. package/dist/utils/sanitize.d.ts.map +1 -0
  86. package/dist/utils/sanitize.js +117 -0
  87. package/dist/utils/sanitize.js.map +1 -0
  88. package/dist/workflows/index.d.ts +1 -1
  89. package/package.json +2 -2
@@ -27,8 +27,8 @@ export declare const JourneyStepSchema: z.ZodObject<{
27
27
  instructions?: string | undefined;
28
28
  };
29
29
  type: "prompt" | "checkpoint" | "summary";
30
- order: number;
31
30
  optional: boolean;
31
+ order: number;
32
32
  }, {
33
33
  id: string;
34
34
  content: {
@@ -37,8 +37,8 @@ export declare const JourneyStepSchema: z.ZodObject<{
37
37
  instructions?: string | undefined;
38
38
  };
39
39
  type: "prompt" | "checkpoint" | "summary";
40
- order: number;
41
40
  optional: boolean;
41
+ order: number;
42
42
  }>;
43
43
  export type JourneyStep = z.infer<typeof JourneyStepSchema>;
44
44
  export declare const JourneySchema: z.ZodObject<{
@@ -72,8 +72,8 @@ export declare const JourneySchema: z.ZodObject<{
72
72
  instructions?: string | undefined;
73
73
  };
74
74
  type: "prompt" | "checkpoint" | "summary";
75
- order: number;
76
75
  optional: boolean;
76
+ order: number;
77
77
  }, {
78
78
  id: string;
79
79
  content: {
@@ -82,8 +82,8 @@ export declare const JourneySchema: z.ZodObject<{
82
82
  instructions?: string | undefined;
83
83
  };
84
84
  type: "prompt" | "checkpoint" | "summary";
85
- order: number;
86
85
  optional: boolean;
86
+ order: number;
87
87
  }>, "many">;
88
88
  estimatedMinutes: z.ZodNumber;
89
89
  tags: z.ZodArray<z.ZodString, "many">;
@@ -99,8 +99,8 @@ export declare const JourneySchema: z.ZodObject<{
99
99
  instructions?: string | undefined;
100
100
  };
101
101
  type: "prompt" | "checkpoint" | "summary";
102
- order: number;
103
102
  optional: boolean;
103
+ order: number;
104
104
  }[];
105
105
  estimatedMinutes: number;
106
106
  tags: string[];
@@ -117,8 +117,8 @@ export declare const JourneySchema: z.ZodObject<{
117
117
  instructions?: string | undefined;
118
118
  };
119
119
  type: "prompt" | "checkpoint" | "summary";
120
- order: number;
121
120
  optional: boolean;
121
+ order: number;
122
122
  }[];
123
123
  estimatedMinutes: number;
124
124
  tags: string[];
@@ -21,23 +21,23 @@ export declare const CreateSessionSchema: z.ZodObject<{
21
21
  conversation_id?: string | undefined;
22
22
  }>>;
23
23
  }, "strip", z.ZodTypeAny, {
24
- journey_slug?: string | undefined;
25
- context?: string | undefined;
26
24
  auth?: {
27
25
  user_id?: string | undefined;
28
26
  client_id?: string | undefined;
29
27
  token?: string | undefined;
30
28
  conversation_id?: string | undefined;
31
29
  } | undefined;
32
- }, {
33
30
  journey_slug?: string | undefined;
34
31
  context?: string | undefined;
32
+ }, {
35
33
  auth?: {
36
34
  user_id?: string | undefined;
37
35
  client_id?: string | undefined;
38
36
  token?: string | undefined;
39
37
  conversation_id?: string | undefined;
40
38
  } | undefined;
39
+ journey_slug?: string | undefined;
40
+ context?: string | undefined;
41
41
  }>;
42
42
  export type CreateSessionInput = z.infer<typeof CreateSessionSchema>;
43
43
  export declare const ResumeSessionSchema: z.ZodObject<{
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Response Sanitization Utilities
3
+ *
4
+ * Strips sensitive internal metadata from responses before returning to users.
5
+ * Full data is logged server-side for debugging.
6
+ */
7
+ /**
8
+ * Sanitize a response object by removing sensitive fields
9
+ */
10
+ export declare function sanitizeResponse<T extends Record<string, unknown>>(response: T, options?: {
11
+ logLevel?: 'debug' | 'info' | 'none';
12
+ allowFields?: string[];
13
+ }): Record<string, unknown>;
14
+ /**
15
+ * Sanitize an array of objects
16
+ */
17
+ export declare function sanitizeArray<T extends Record<string, unknown>>(items: T[], options?: {
18
+ allowFields?: string[];
19
+ }): Record<string, unknown>[];
20
+ /**
21
+ * Check if a response contains any sensitive fields
22
+ */
23
+ export declare function hasSensitiveData(obj: Record<string, unknown>): boolean;
24
+ //# sourceMappingURL=sanitize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmDH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,QAAQ,EAAE,CAAC,EACX,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,GACA,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyCzB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,KAAK,EAAE,CAAC,EAAE,EACV,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACnC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAE3B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAatE"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Response Sanitization Utilities
3
+ *
4
+ * Strips sensitive internal metadata from responses before returning to users.
5
+ * Full data is logged server-side for debugging.
6
+ */
7
+ import { logger } from './logger.js';
8
+ /**
9
+ * Fields that should NEVER be exposed to end users
10
+ */
11
+ const SENSITIVE_FIELDS = [
12
+ 'sessionId',
13
+ 'session_id',
14
+ 'threadId',
15
+ 'thread_id',
16
+ 'messageId',
17
+ 'message_id',
18
+ 'userId',
19
+ 'user_id',
20
+ 'insightId',
21
+ 'insight_id',
22
+ 'checkpointId',
23
+ 'checkpoint_id',
24
+ 'crisisLevel',
25
+ 'crisis_level',
26
+ 'crisisConfidence',
27
+ 'crisis_confidence',
28
+ 'crisisIndicators',
29
+ 'crisis_indicators',
30
+ 'selfCorrected',
31
+ 'self_corrected',
32
+ 'currentStep',
33
+ 'current_step',
34
+ 'internalId',
35
+ 'internal_id',
36
+ 'auth',
37
+ 'token',
38
+ 'apiKey',
39
+ 'api_key',
40
+ ];
41
+ /**
42
+ * Fields that ARE safe to expose
43
+ */
44
+ const SAFE_FIELDS = [
45
+ 'success',
46
+ 'content',
47
+ 'message',
48
+ 'timestamp',
49
+ 'type',
50
+ 'error',
51
+ 'crisis_resources', // Only if crisis detected
52
+ ];
53
+ /**
54
+ * Sanitize a response object by removing sensitive fields
55
+ */
56
+ export function sanitizeResponse(response, options) {
57
+ const { logLevel = 'debug', allowFields = [] } = options || {};
58
+ // Log full response server-side before sanitizing
59
+ if (logLevel === 'debug') {
60
+ logger.debug('[Sanitize] Full response (internal):', response);
61
+ }
62
+ else if (logLevel === 'info') {
63
+ logger.info('[Sanitize] Full response (internal):', response);
64
+ }
65
+ const safeFields = [...SAFE_FIELDS, ...allowFields];
66
+ const sanitized = {};
67
+ for (const [key, value] of Object.entries(response)) {
68
+ // Skip sensitive fields
69
+ if (SENSITIVE_FIELDS.includes(key)) {
70
+ continue;
71
+ }
72
+ // Skip nested metadata objects (they often contain sensitive data)
73
+ if (key === 'metadata' && typeof value === 'object' && value !== null) {
74
+ // Only extract crisis detection status for safety messaging
75
+ const meta = value;
76
+ if (meta.crisisDetected === true) {
77
+ sanitized.crisis_resources = '988 Suicide & Crisis Lifeline • Crisis Text Line: text HOME to 741741';
78
+ }
79
+ continue;
80
+ }
81
+ // Include safe fields
82
+ if (safeFields.includes(key) || !SENSITIVE_FIELDS.some(s => key.toLowerCase().includes(s.toLowerCase()))) {
83
+ // Recursively sanitize nested objects
84
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
85
+ sanitized[key] = sanitizeResponse(value, { logLevel: 'none' });
86
+ }
87
+ else {
88
+ sanitized[key] = value;
89
+ }
90
+ }
91
+ }
92
+ return sanitized;
93
+ }
94
+ /**
95
+ * Sanitize an array of objects
96
+ */
97
+ export function sanitizeArray(items, options) {
98
+ return items.map(item => sanitizeResponse(item, { ...options, logLevel: 'none' }));
99
+ }
100
+ /**
101
+ * Check if a response contains any sensitive fields
102
+ */
103
+ export function hasSensitiveData(obj) {
104
+ for (const key of Object.keys(obj)) {
105
+ if (SENSITIVE_FIELDS.includes(key)) {
106
+ return true;
107
+ }
108
+ const value = obj[key];
109
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
110
+ if (hasSensitiveData(value)) {
111
+ return true;
112
+ }
113
+ }
114
+ }
115
+ return false;
116
+ }
117
+ //# sourceMappingURL=sanitize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,8 @@ export declare const journeysBySlug: Map<string, {
15
15
  instructions?: string | undefined;
16
16
  };
17
17
  type: "prompt" | "checkpoint" | "summary";
18
- order: number;
19
18
  optional: boolean;
19
+ order: number;
20
20
  }[];
21
21
  estimatedMinutes: number;
22
22
  tags: string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "couchloop-eq-mcp",
3
- "version": "1.1.3",
3
+ "version": "1.1.6",
4
4
  "description": "Behavioral governance layer for LLMs - monitors for hallucination, inconsistency, tone drift, and unsafe reasoning while managing stateful AI sessions",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -93,7 +93,7 @@
93
93
  "registry": "https://registry.npmjs.org/"
94
94
  },
95
95
  "dependencies": {
96
- "@modelcontextprotocol/sdk": "^1.25.2",
96
+ "@modelcontextprotocol/sdk": "^1.26.0",
97
97
  "@supabase/supabase-js": "^2.39.0",
98
98
  "bcryptjs": "^3.0.3",
99
99
  "cookie-parser": "^1.4.7",