couchloop-eq-mcp 1.0.2 → 1.0.3

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 (90) hide show
  1. package/README.md +29 -4
  2. package/dist/clients/shrinkChatClient.d.ts +10 -0
  3. package/dist/clients/shrinkChatClient.d.ts.map +1 -1
  4. package/dist/clients/shrinkChatClient.js +4 -0
  5. package/dist/clients/shrinkChatClient.js.map +1 -1
  6. package/dist/db/client.d.ts.map +1 -1
  7. package/dist/db/client.js +5 -3
  8. package/dist/db/client.js.map +1 -1
  9. package/dist/db/schema.d.ts +363 -0
  10. package/dist/db/schema.d.ts.map +1 -1
  11. package/dist/db/schema.js +47 -0
  12. package/dist/db/schema.js.map +1 -1
  13. package/dist/governance/config.d.ts +66 -0
  14. package/dist/governance/config.d.ts.map +1 -0
  15. package/dist/governance/config.js +238 -0
  16. package/dist/governance/config.js.map +1 -0
  17. package/dist/governance/detectors/hallucination.d.ts +61 -0
  18. package/dist/governance/detectors/hallucination.d.ts.map +1 -0
  19. package/dist/governance/detectors/hallucination.js +338 -0
  20. package/dist/governance/detectors/hallucination.js.map +1 -0
  21. package/dist/governance/detectors/inconsistency.d.ts +99 -0
  22. package/dist/governance/detectors/inconsistency.d.ts.map +1 -0
  23. package/dist/governance/detectors/inconsistency.js +548 -0
  24. package/dist/governance/detectors/inconsistency.js.map +1 -0
  25. package/dist/governance/detectors/toneDrift.d.ts +63 -0
  26. package/dist/governance/detectors/toneDrift.d.ts.map +1 -0
  27. package/dist/governance/detectors/toneDrift.js +421 -0
  28. package/dist/governance/detectors/toneDrift.js.map +1 -0
  29. package/dist/governance/detectors/unsafeReasoning.d.ts +54 -0
  30. package/dist/governance/detectors/unsafeReasoning.d.ts.map +1 -0
  31. package/dist/governance/detectors/unsafeReasoning.js +473 -0
  32. package/dist/governance/detectors/unsafeReasoning.js.map +1 -0
  33. package/dist/governance/evaluationEngine.d.ts +112 -0
  34. package/dist/governance/evaluationEngine.d.ts.map +1 -0
  35. package/dist/governance/evaluationEngine.js +265 -0
  36. package/dist/governance/evaluationEngine.js.map +1 -0
  37. package/dist/governance/intervention.d.ts +81 -0
  38. package/dist/governance/intervention.d.ts.map +1 -0
  39. package/dist/governance/intervention.js +405 -0
  40. package/dist/governance/intervention.js.map +1 -0
  41. package/dist/server/chatgpt-mcp.d.ts +10 -0
  42. package/dist/server/chatgpt-mcp.d.ts.map +1 -0
  43. package/dist/server/chatgpt-mcp.js +233 -0
  44. package/dist/server/chatgpt-mcp.js.map +1 -0
  45. package/dist/server/index.d.ts.map +1 -1
  46. package/dist/server/index.js +94 -3
  47. package/dist/server/index.js.map +1 -1
  48. package/dist/server/middleware/localNetworkAccess.d.ts +16 -0
  49. package/dist/server/middleware/localNetworkAccess.d.ts.map +1 -0
  50. package/dist/server/middleware/localNetworkAccess.js +97 -0
  51. package/dist/server/middleware/localNetworkAccess.js.map +1 -0
  52. package/dist/server/sse.d.ts +16 -0
  53. package/dist/server/sse.d.ts.map +1 -0
  54. package/dist/server/sse.js +215 -0
  55. package/dist/server/sse.js.map +1 -0
  56. package/dist/tools/checkpoint.d.ts.map +1 -1
  57. package/dist/tools/index.d.ts +1 -0
  58. package/dist/tools/index.d.ts.map +1 -1
  59. package/dist/tools/index.js +4 -2
  60. package/dist/tools/index.js.map +1 -1
  61. package/dist/tools/insight.d.ts +1 -0
  62. package/dist/tools/insight.d.ts.map +1 -1
  63. package/dist/tools/sendMessage-complex-backup.d.ts +6 -0
  64. package/dist/tools/sendMessage-complex-backup.d.ts.map +1 -0
  65. package/dist/tools/sendMessage-complex-backup.js +545 -0
  66. package/dist/tools/sendMessage-complex-backup.js.map +1 -0
  67. package/dist/tools/sendMessage-revised.d.ts +11 -0
  68. package/dist/tools/sendMessage-revised.d.ts.map +1 -0
  69. package/dist/tools/sendMessage-revised.js +429 -0
  70. package/dist/tools/sendMessage-revised.js.map +1 -0
  71. package/dist/tools/sendMessage-truly-simple.d.ts +8 -0
  72. package/dist/tools/sendMessage-truly-simple.d.ts.map +1 -0
  73. package/dist/tools/sendMessage-truly-simple.js +299 -0
  74. package/dist/tools/sendMessage-truly-simple.js.map +1 -0
  75. package/dist/tools/sendMessage.d.ts +4 -2
  76. package/dist/tools/sendMessage.d.ts.map +1 -1
  77. package/dist/tools/sendMessage.js +240 -186
  78. package/dist/tools/sendMessage.js.map +1 -1
  79. package/dist/tools/session.d.ts.map +1 -1
  80. package/dist/tools/session.js +35 -29
  81. package/dist/tools/session.js.map +1 -1
  82. package/dist/types/auth.d.ts +9 -1
  83. package/dist/types/auth.d.ts.map +1 -1
  84. package/dist/types/auth.js +37 -10
  85. package/dist/types/auth.js.map +1 -1
  86. package/dist/types/insight.d.ts +10 -0
  87. package/dist/types/insight.d.ts.map +1 -1
  88. package/dist/types/session.d.ts +10 -0
  89. package/dist/types/session.d.ts.map +1 -1
  90. package/package.json +10 -5
@@ -2,100 +2,123 @@ import { z } from 'zod';
2
2
  import { eq, desc } from 'drizzle-orm';
3
3
  import { getDb } from '../db/client.js';
4
4
  import { getShrinkChatClient } from '../clients/shrinkChatClient.js';
5
- import { sessions, checkpoints, journeys } from '../db/schema.js';
5
+ import { sessions, checkpoints, journeys, crisisEvents, governanceEvaluations } from '../db/schema.js';
6
6
  import { logger } from '../utils/logger.js';
7
7
  import { NotFoundError } from '../utils/errors.js';
8
- import { errorHandler, ErrorType } from '../utils/errorHandler.js';
9
8
  import { v4 as uuidv4 } from 'uuid';
10
9
  // Input validation schema
11
10
  const SendMessageSchema = z.object({
12
- session_id: z.string().uuid({
13
- message: 'Invalid session ID format',
14
- }),
15
- message: z.string().min(1, 'Message cannot be empty'),
16
- save_checkpoint: z.boolean().default(false),
17
- checkpoint_key: z.string().optional(),
18
- advance_step: z.boolean().default(false),
19
- include_memory: z.boolean().default(true),
20
- system_prompt: z.string().optional(),
11
+ session_id: z.string().uuid(),
12
+ message: z.string().min(1).max(10000),
21
13
  conversation_type: z.string().optional(),
14
+ system_prompt: z.string().optional(),
15
+ save_checkpoint: z.boolean().optional(),
16
+ checkpoint_key: z.string().optional(),
17
+ advance_step: z.boolean().optional(),
18
+ journey_id: z.string().uuid().optional(),
22
19
  });
23
- // type SendMessageInput = z.infer<typeof SendMessageSchema>; // Removed - unused type
24
20
  /**
25
- * Send a message through the shrink-chat therapeutic stack
26
- * This is the primary integration point with the shrink-chat backend
21
+ * TRULY SIMPLE sendMessage
22
+ *
23
+ * Just use shrink-chat's existing crisis detection to trigger self-correction.
24
+ * No additional patterns. No complex logic.
27
25
  */
28
26
  export async function sendMessage(args) {
29
- let threadId; // Declare at function level for error handler access
30
27
  try {
31
- // Validate input
32
28
  const input = SendMessageSchema.parse(args);
33
- logger.info(`Sending message for session ${input.session_id}`);
34
29
  const db = getDb();
35
- const client = getShrinkChatClient();
36
- // 1. Get session and verify it exists
37
- const [session] = await db
38
- .select()
39
- .from(sessions)
40
- .where(eq(sessions.id, input.session_id))
41
- .limit(1);
30
+ logger.info(`Sending message for session ${input.session_id}`);
31
+ // Parallelize session and checkpoint queries (saves ~150ms)
32
+ // These can run simultaneously since both just need the session ID
33
+ const [sessionResult, checkpointsResult] = await Promise.all([
34
+ // Get session
35
+ db.select()
36
+ .from(sessions)
37
+ .where(eq(sessions.id, input.session_id))
38
+ .limit(1),
39
+ // Get conversation history - optimized with limit
40
+ db.select()
41
+ .from(checkpoints)
42
+ .where(eq(checkpoints.sessionId, input.session_id))
43
+ .orderBy(desc(checkpoints.createdAt))
44
+ .limit(30) // Fetch enough to get 10 message pairs after filtering
45
+ ]);
46
+ const [session] = sessionResult;
47
+ const previousCheckpoints = checkpointsResult;
42
48
  if (!session) {
43
49
  throw new NotFoundError(`Session ${input.session_id} not found`);
44
50
  }
45
- // 2. Get or generate thread ID
46
- // Threads in shrink-chat are created lazily on first message
47
- threadId = session.threadId || undefined;
51
+ // Get or create thread ID
52
+ let threadId = session.threadId;
48
53
  if (!threadId) {
49
- // Generate a new thread ID for this session
50
54
  threadId = uuidv4();
51
- logger.info(`Generated new thread ID ${threadId} for session ${input.session_id}`);
52
- // Update session with thread ID
53
55
  await db.update(sessions)
54
56
  .set({ threadId })
55
57
  .where(eq(sessions.id, input.session_id));
56
58
  }
57
- // Get journey if exists
58
- let journey = null;
59
- if (session.journeyId) {
60
- const [journeyRecord] = await db
61
- .select()
62
- .from(journeys)
63
- .where(eq(journeys.id, session.journeyId))
64
- .limit(1);
65
- journey = journeyRecord;
66
- }
67
- // 3. Prepare context for shrink-chat
68
- const memoryContext = input.include_memory && session.metadata
69
- ? JSON.stringify(session.metadata)
70
- : '';
59
+ // Build context (keeping existing context building)
60
+ // Journey fetch still needs to be sequential since it depends on session.journeyId
61
+ const journey = session.journeyId
62
+ ? await db.select().from(journeys).where(eq(journeys.id, session.journeyId)).limit(1).then(res => res[0])
63
+ : null;
64
+ const memoryContext = JSON.stringify({
65
+ userId: session.userId || 'anonymous',
66
+ conversationType: input.conversation_type || 'supportive',
67
+ sessionGoals: journey?.metadata?.goals || [],
68
+ emotionalState: session.metadata?.emotionalState || 'neutral',
69
+ });
71
70
  const enhancedContext = {
72
- sessionId: session.id,
73
- journeyId: session.journeyId,
74
- journeySlug: journey?.slug,
75
- currentStep: session.currentStep,
76
- sessionStatus: session.status,
71
+ journeyStep: journey && session.currentStep < journey.steps.length
72
+ ? journey.steps[session.currentStep]
73
+ : null,
74
+ progressIndicators: session.metadata?.progressIndicators || [],
77
75
  };
78
- // 4. Get conversation history if available
79
- const recentCheckpoints = await db
80
- .select()
81
- .from(checkpoints)
82
- .where(eq(checkpoints.sessionId, session.id))
83
- .orderBy(desc(checkpoints.createdAt))
84
- .limit(5);
85
- const history = recentCheckpoints
86
- .reverse()
87
- .filter(cp => cp.value && typeof cp.value === 'object' && 'message' in cp.value && 'response' in cp.value)
76
+ const history = previousCheckpoints
77
+ .filter(cp => {
78
+ if (!cp.value || typeof cp.value !== 'object')
79
+ return false;
80
+ const val = cp.value;
81
+ // Include checkpoints with role field (individual messages)
82
+ if ('role' in val && 'message' in val)
83
+ return true;
84
+ // Include checkpoints with both message and response (combined format)
85
+ if ('message' in val && 'response' in val)
86
+ return true;
87
+ return false;
88
+ })
88
89
  .flatMap(cp => {
89
90
  const val = cp.value;
90
- return [
91
- { role: 'user', content: val.message },
92
- { role: 'assistant', content: val.response },
93
- ];
91
+ // Handle individual message checkpoints (with role field)
92
+ if ('role' in val && 'message' in val) {
93
+ return [{ role: val.role, content: val.message }];
94
+ }
95
+ // Handle combined checkpoints (with both message and response)
96
+ if ('message' in val && 'response' in val) {
97
+ return [
98
+ { role: 'user', content: val.message },
99
+ { role: 'assistant', content: val.response },
100
+ ];
101
+ }
102
+ return [];
94
103
  })
95
- .slice(-10); // Last 10 messages (5 exchanges)
96
- // 5. Send message through shrink-chat
97
- const response = await client.sendMessage(threadId, input.message, // This is 'prompt' in the API
98
- {
104
+ .slice(-10);
105
+ // Save user message
106
+ await db.insert(checkpoints).values({
107
+ sessionId: session.id,
108
+ stepId: session.currentStep.toString(),
109
+ key: 'user-message',
110
+ value: {
111
+ message: input.message,
112
+ messageId: uuidv4(),
113
+ role: 'user',
114
+ timestamp: new Date().toISOString(),
115
+ },
116
+ });
117
+ // Get shrink-chat client
118
+ const client = getShrinkChatClient();
119
+ // Send message
120
+ let response = await client.sendMessage(threadId, input.message, {
121
+ userId: session.userId,
99
122
  memoryContext,
100
123
  enhancedContext,
101
124
  history,
@@ -103,58 +126,107 @@ export async function sendMessage(args) {
103
126
  conversationType: input.conversation_type,
104
127
  idempotencyKey: uuidv4(),
105
128
  });
106
- // 6. Handle crisis detection if present
107
- let crisisHandled = false;
108
- if (response.crisisLevel && Number(response.crisisLevel) > 7) {
109
- logger.warn(`Crisis detected: Level ${response.crisisLevel} for session ${session.id}`);
110
- crisisHandled = await handleCrisisDetection(session.id, threadId, response);
129
+ // === ULTRA SIMPLE SELF-CORRECTION ===
130
+ // Just use shrink-chat's own crisis detection!
131
+ let selfCorrected = false;
132
+ // Debug log the full response to see what we're getting
133
+ logger.info('[DEBUG] Full shrink-chat response:', JSON.stringify({
134
+ crisis_requires_intervention: response.crisis_requires_intervention,
135
+ crisis_level: response.crisis_level,
136
+ crisisLevel: response.crisisLevel,
137
+ crisis_confidence: response.crisis_confidence,
138
+ crisis_indicators: response.crisis_indicators,
139
+ crisis_suggested_actions: response.crisis_suggested_actions
140
+ }, null, 2));
141
+ // Check if we need intervention (check both field names and crisis level)
142
+ const needsIntervention = response.crisis_requires_intervention === true ||
143
+ (response.crisis_level !== undefined && response.crisis_level !== 'none' &&
144
+ (typeof response.crisis_level === 'number' ? response.crisis_level >= 8 : false));
145
+ // If shrink-chat says intervention is required, ask for revision
146
+ if (needsIntervention) {
147
+ logger.info(`[Self-Correction] Shrink-chat detected crisis requiring intervention`);
148
+ // Log the initial response
149
+ await logGovernanceEvaluation(session.id, response.content || response.reply || '', 'revision_requested', `Crisis level ${response.crisis_level}: ${response.crisis_indicators?.join(', ') || 'intervention required'}`, response.crisis_confidence || 0);
150
+ // Ask LLM to revise based on shrink-chat's own assessment
151
+ const revisionPrompt = `The previous response may escalate the user's distress (crisis level: ${response.crisis_level}).
152
+ Please provide a safer, more supportive response to: "${input.message}"
153
+
154
+ Suggested approach: ${response.crisis_suggested_actions?.join(', ') || 'De-escalate, validate, provide resources'}`;
155
+ // Get revised response
156
+ const revisedResponse = await client.sendMessage(threadId, revisionPrompt, {
157
+ userId: session.userId,
158
+ memoryContext,
159
+ enhancedContext,
160
+ history: [...history,
161
+ { role: 'user', content: input.message },
162
+ { role: 'assistant', content: response.content || response.reply || '' }
163
+ ],
164
+ systemPrompt: 'Provide a supportive, safe response that de-escalates distress.',
165
+ conversationType: 'revision',
166
+ idempotencyKey: uuidv4(),
167
+ });
168
+ // Log revised response
169
+ await logGovernanceEvaluation(session.id, revisedResponse.content || revisedResponse.reply || '', 'revision_applied', 'Self-corrected based on crisis detection', revisedResponse.crisis_confidence || 0);
170
+ response = revisedResponse;
171
+ selfCorrected = true;
172
+ logger.info(`[Self-Correction] Applied revised response`);
173
+ }
174
+ else {
175
+ // Log approved response
176
+ await logGovernanceEvaluation(session.id, response.content || response.reply || '', 'approved', 'No intervention required', response.crisis_confidence || 0);
177
+ }
178
+ // Save assistant response
179
+ const responseContent = response.content || response.reply || response.response_text || '';
180
+ await db.insert(checkpoints).values({
181
+ sessionId: session.id,
182
+ stepId: session.currentStep.toString(),
183
+ key: 'assistant-message',
184
+ value: {
185
+ message: responseContent,
186
+ messageId: response.messageId || uuidv4(),
187
+ role: 'assistant',
188
+ crisisLevel: response.crisis_level || response.crisisLevel,
189
+ selfCorrected,
190
+ timestamp: new Date().toISOString(),
191
+ },
192
+ });
193
+ // Handle high crisis even after revision (for resources/escalation)
194
+ if (response.crisis_level && (typeof response.crisis_level === 'string' ? response.crisis_level !== 'none' : response.crisis_level > 7)) {
195
+ await handleCrisisDetection(session.id, threadId, response);
111
196
  }
112
- // 7. Save checkpoint if requested
197
+ // Additional checkpoint if requested
113
198
  if (input.save_checkpoint) {
114
- const checkpointKey = input.checkpoint_key || 'message_response';
115
199
  await db.insert(checkpoints).values({
116
200
  sessionId: session.id,
117
201
  stepId: session.currentStep.toString(),
118
- key: checkpointKey,
202
+ key: input.checkpoint_key || 'message_response',
119
203
  value: {
120
204
  message: input.message,
121
- response: response.content,
122
- messageId: response.messageId,
123
- crisisLevel: response.crisisLevel,
124
- emotions: response.emotions,
125
- therapeuticTechnique: response.therapeuticTechnique,
205
+ response: responseContent,
206
+ selfCorrected,
126
207
  timestamp: new Date().toISOString(),
127
208
  },
128
209
  });
129
- logger.debug(`Saved checkpoint '${checkpointKey}' for session ${session.id}`);
130
210
  }
131
- // 8. Advance step if requested (for journey progression)
211
+ // Advance step if requested
132
212
  if (input.advance_step && session.journeyId) {
133
- const newStep = session.currentStep + 1;
134
213
  await db.update(sessions)
135
- .set({
136
- currentStep: newStep,
137
- updatedAt: new Date(),
138
- })
139
- .where(eq(sessions.id, input.session_id));
140
- logger.info(`Advanced session ${session.id} to step ${newStep}`);
214
+ .set({ currentStep: session.currentStep + 1, updatedAt: new Date() })
215
+ .where(eq(sessions.id, session.id));
141
216
  }
142
- // 9. Return formatted response
217
+ // Return response
143
218
  return {
144
219
  success: true,
145
- content: response.content || '',
220
+ content: responseContent,
146
221
  messageId: response.messageId,
147
222
  metadata: {
148
- crisisDetected: response.crisisDetected || (response.crisisLevel && Number(response.crisisLevel) > 7),
149
- crisisLevel: response.crisisLevel,
150
- crisisHandled,
151
- crisisConfidence: response.crisis_confidence, // Add crisis confidence
152
- ragConfidence: response.meta?.rag_confidence, // Add RAG confidence if available
153
- emotions: response.emotions,
154
- therapeuticTechnique: response.therapeuticTechnique,
155
- resources: response.resources,
223
+ crisisDetected: response.crisis_requires_intervention || (response.crisis_level && response.crisis_level !== 'none' && (typeof response.crisis_level === 'number' ? response.crisis_level >= 8 : false)),
224
+ crisisLevel: response.crisis_level || response.crisisLevel,
225
+ crisisConfidence: response.crisis_confidence,
226
+ crisisIndicators: response.crisis_indicators,
156
227
  sessionId: session.id,
157
228
  threadId,
229
+ selfCorrected,
158
230
  currentStep: input.advance_step ? session.currentStep + 1 : session.currentStep,
159
231
  },
160
232
  timestamp: new Date().toISOString(),
@@ -162,116 +234,98 @@ export async function sendMessage(args) {
162
234
  }
163
235
  catch (error) {
164
236
  logger.error('Error in sendMessage:', error);
165
- // Parse input for error handling (may have failed validation)
166
- let sessionId;
167
- let messageLength;
168
- try {
169
- const parsedInput = SendMessageSchema.parse(args);
170
- sessionId = parsedInput.session_id;
171
- messageLength = parsedInput.message.length;
237
+ // Check if it's a network/timeout error that requires fallback
238
+ if (error instanceof Error &&
239
+ (error.message.includes('timeout') ||
240
+ error.message.includes('ECONNREFUSED') ||
241
+ error.message.includes('Shrink-Chat API'))) {
242
+ return await handleLocalFallback(args);
172
243
  }
173
- catch {
174
- // Input validation failed, use defaults
175
- }
176
- // Handle error with our error handler
177
- const errorContext = await errorHandler.handle(error, {
178
- sessionId,
179
- threadId,
180
- messageLength,
181
- });
182
- // Check if we should fallback based on error type
183
- if (errorContext.recoverable && process.env.FALLBACK_TO_LOCAL_PROCESSING === 'true') {
184
- // Fallback for recoverable errors
185
- if (errorContext.type === ErrorType.NETWORK ||
186
- errorContext.type === ErrorType.TIMEOUT ||
187
- errorContext.type === ErrorType.SERVER) {
188
- logger.info('Falling back to local processing due to recoverable error');
189
- return handleLocalFallback(args);
190
- }
191
- }
192
- // Special handling for crisis errors
193
- if (errorContext.type === ErrorType.CRISIS) {
194
- return {
195
- success: false,
196
- error: errorContext.userMessage || errorContext.message,
197
- metadata: {
198
- emergencyResources: errorContext.metadata?.emergencyResources,
199
- crisisDetected: true,
200
- },
201
- timestamp: new Date().toISOString(),
202
- };
203
- }
204
- // Return error response with appropriate user message
205
- return {
206
- success: false,
207
- error: errorContext.userMessage || errorContext.message,
208
- errorType: errorContext.type,
209
- recoverable: errorContext.recoverable,
210
- timestamp: new Date().toISOString(),
211
- };
244
+ throw error;
212
245
  }
213
246
  }
214
247
  /**
215
- * Handle crisis detection and escalation
248
+ * Log governance evaluation - SIMPLIFIED
216
249
  */
217
- async function handleCrisisDetection(sessionId, threadId, response) {
250
+ async function logGovernanceEvaluation(sessionId, content, action, reason, confidence) {
218
251
  const db = getDb();
219
252
  try {
220
- // 1. Update session metadata with crisis flag
221
- const [existingSession] = await db
222
- .select()
223
- .from(sessions)
224
- .where(eq(sessions.id, sessionId))
225
- .limit(1);
226
- const updatedMetadata = {
227
- ...(existingSession?.metadata || {}),
228
- crisisDetected: true,
229
- crisisLevel: response.crisisLevel,
230
- crisisTimestamp: new Date().toISOString(),
231
- lastCrisisThreadId: threadId,
232
- };
233
- await db.update(sessions)
234
- .set({
235
- metadata: updatedMetadata,
236
- updatedAt: new Date(),
237
- })
238
- .where(eq(sessions.id, sessionId));
239
- // 2. Save crisis checkpoint
240
- await db.insert(checkpoints).values({
253
+ await db.insert(governanceEvaluations).values({
241
254
  sessionId,
242
- stepId: 'crisis',
243
- key: 'crisis_detection',
244
- value: {
245
- level: response.crisisLevel,
246
- resources: response.resources,
247
- escalationPath: response.escalationPath,
248
- threadId,
249
- timestamp: new Date().toISOString(),
255
+ draftResponse: content.substring(0, 1000),
256
+ evaluationResults: {
257
+ hallucination: { detected: false, confidence: 0, patterns: [] },
258
+ inconsistency: { detected: false, confidence: 0, patterns: [] },
259
+ toneDrift: { detected: false, confidence: 0, patterns: [] },
260
+ unsafeReasoning: {
261
+ detected: action === 'revision_requested',
262
+ confidence,
263
+ patterns: [reason]
264
+ },
265
+ overallRisk: action === 'revision_requested' ? 'high' : 'low',
266
+ recommendedAction: action === 'revision_requested' ? 'modify' : 'allow',
267
+ confidence: confidence
250
268
  },
269
+ interventionApplied: action === 'revision_requested' ? 'revision' : null,
270
+ finalResponse: action === 'revision_applied' ? content.substring(0, 1000) : null,
251
271
  });
252
- logger.info(`Crisis handled for session ${sessionId}, thread ${threadId}`);
253
- return true;
254
272
  }
255
273
  catch (error) {
256
- logger.error('Error handling crisis detection:', error);
257
- return false;
274
+ logger.error('Failed to log governance evaluation:', error);
258
275
  }
259
276
  }
260
277
  /**
261
- * Fallback to local processing when shrink-chat is unavailable
278
+ * Handle crisis detection - keep existing
279
+ */
280
+ async function handleCrisisDetection(sessionId, threadId, response) {
281
+ const db = getDb();
282
+ await db.insert(crisisEvents).values({
283
+ id: uuidv4(),
284
+ sessionId,
285
+ threadId,
286
+ crisisLevel: typeof response.crisis_level === 'number' ? response.crisis_level : 10,
287
+ response: response.content || response.reply,
288
+ resources: response.resources || [],
289
+ escalationPath: response.escalationPath,
290
+ handled: true,
291
+ });
292
+ logger.info(`Crisis event logged for session ${sessionId}`);
293
+ }
294
+ /**
295
+ * Fallback handler - keep existing
262
296
  */
263
297
  async function handleLocalFallback(args) {
264
- logger.warn('Falling back to local processing due to shrink-chat unavailability');
265
298
  const input = SendMessageSchema.parse(args);
266
- // Basic local response - this would be expanded with actual logic
299
+ const db = getDb();
300
+ const [session] = await db
301
+ .select()
302
+ .from(sessions)
303
+ .where(eq(sessions.id, input.session_id))
304
+ .limit(1);
305
+ if (!session) {
306
+ return { success: false, error: 'Session not found' };
307
+ }
308
+ const fallbackContent = "I understand you're trying to communicate. The therapeutic service is temporarily unavailable, but your message has been noted. Please try again shortly.";
309
+ await db.insert(checkpoints).values({
310
+ sessionId: session.id,
311
+ stepId: session.currentStep.toString(),
312
+ key: 'assistant-message',
313
+ value: {
314
+ message: fallbackContent,
315
+ messageId: uuidv4(),
316
+ role: 'assistant',
317
+ fallbackMode: true,
318
+ timestamp: new Date().toISOString(),
319
+ },
320
+ });
267
321
  return {
268
322
  success: true,
269
- content: "I understand you're trying to communicate. The therapeutic service is temporarily unavailable, but your message has been noted. Please try again shortly or contact support if this persists.",
323
+ content: fallbackContent,
270
324
  messageId: uuidv4(),
271
325
  metadata: {
272
326
  fallbackMode: true,
273
- sessionId: input.session_id,
274
- timestamp: new Date().toISOString(),
327
+ sessionId: session.id,
328
+ currentStep: session.currentStep,
275
329
  },
276
330
  };
277
331
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sendMessage.js","sourceRoot":"","sources":["../../src/tools/sendMessage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sendMessage.js","sourceRoot":"","sources":["../../src/tools/sendMessage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/tools/session.ts"],"names":[],"mappings":"AAQA,wBAAsB,aAAa,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;;;;;;sBAsBhC,CAAC;8BACN,CAAC;4BACI,CAAC;;;;;;;;;;;;kBAFD,CAAC;0BACN,CAAC;wBACI,CAAC;;;;;GA+Cb;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAnDhC,CAAC;8BACN,CAAC;4BACI,CAAC;;;;;;;;;;;;kBAFD,CAAC;0BACN,CAAC;wBACI,CAAC;;;;;;;;;;;;;GAyJb"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/tools/session.ts"],"names":[],"mappings":"AAQA,wBAAsB,aAAa,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;;;;;;sBAwBvB,CAAC;8BACE,CAAC;4BACF,CAAC;;;;;;;;;;;;kBAFH,CAAC;0BACE,CAAC;wBACF,CAAC;;;;;GA6CxB;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAjDvB,CAAC;8BACE,CAAC;4BACF,CAAC;;;;;;;;;;;;kBAFH,CAAC;0BACE,CAAC;wBACF,CAAC;;;;;;;;;;;;;GA4JxB"}