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.
- package/README.md +29 -4
- package/dist/clients/shrinkChatClient.d.ts +10 -0
- package/dist/clients/shrinkChatClient.d.ts.map +1 -1
- package/dist/clients/shrinkChatClient.js +4 -0
- package/dist/clients/shrinkChatClient.js.map +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +5 -3
- package/dist/db/client.js.map +1 -1
- package/dist/db/schema.d.ts +363 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +47 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/governance/config.d.ts +66 -0
- package/dist/governance/config.d.ts.map +1 -0
- package/dist/governance/config.js +238 -0
- package/dist/governance/config.js.map +1 -0
- package/dist/governance/detectors/hallucination.d.ts +61 -0
- package/dist/governance/detectors/hallucination.d.ts.map +1 -0
- package/dist/governance/detectors/hallucination.js +338 -0
- package/dist/governance/detectors/hallucination.js.map +1 -0
- package/dist/governance/detectors/inconsistency.d.ts +99 -0
- package/dist/governance/detectors/inconsistency.d.ts.map +1 -0
- package/dist/governance/detectors/inconsistency.js +548 -0
- package/dist/governance/detectors/inconsistency.js.map +1 -0
- package/dist/governance/detectors/toneDrift.d.ts +63 -0
- package/dist/governance/detectors/toneDrift.d.ts.map +1 -0
- package/dist/governance/detectors/toneDrift.js +421 -0
- package/dist/governance/detectors/toneDrift.js.map +1 -0
- package/dist/governance/detectors/unsafeReasoning.d.ts +54 -0
- package/dist/governance/detectors/unsafeReasoning.d.ts.map +1 -0
- package/dist/governance/detectors/unsafeReasoning.js +473 -0
- package/dist/governance/detectors/unsafeReasoning.js.map +1 -0
- package/dist/governance/evaluationEngine.d.ts +112 -0
- package/dist/governance/evaluationEngine.d.ts.map +1 -0
- package/dist/governance/evaluationEngine.js +265 -0
- package/dist/governance/evaluationEngine.js.map +1 -0
- package/dist/governance/intervention.d.ts +81 -0
- package/dist/governance/intervention.d.ts.map +1 -0
- package/dist/governance/intervention.js +405 -0
- package/dist/governance/intervention.js.map +1 -0
- package/dist/server/chatgpt-mcp.d.ts +10 -0
- package/dist/server/chatgpt-mcp.d.ts.map +1 -0
- package/dist/server/chatgpt-mcp.js +233 -0
- package/dist/server/chatgpt-mcp.js.map +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +94 -3
- package/dist/server/index.js.map +1 -1
- package/dist/server/middleware/localNetworkAccess.d.ts +16 -0
- package/dist/server/middleware/localNetworkAccess.d.ts.map +1 -0
- package/dist/server/middleware/localNetworkAccess.js +97 -0
- package/dist/server/middleware/localNetworkAccess.js.map +1 -0
- package/dist/server/sse.d.ts +16 -0
- package/dist/server/sse.d.ts.map +1 -0
- package/dist/server/sse.js +215 -0
- package/dist/server/sse.js.map +1 -0
- package/dist/tools/checkpoint.d.ts.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/insight.d.ts +1 -0
- package/dist/tools/insight.d.ts.map +1 -1
- package/dist/tools/sendMessage-complex-backup.d.ts +6 -0
- package/dist/tools/sendMessage-complex-backup.d.ts.map +1 -0
- package/dist/tools/sendMessage-complex-backup.js +545 -0
- package/dist/tools/sendMessage-complex-backup.js.map +1 -0
- package/dist/tools/sendMessage-revised.d.ts +11 -0
- package/dist/tools/sendMessage-revised.d.ts.map +1 -0
- package/dist/tools/sendMessage-revised.js +429 -0
- package/dist/tools/sendMessage-revised.js.map +1 -0
- package/dist/tools/sendMessage-truly-simple.d.ts +8 -0
- package/dist/tools/sendMessage-truly-simple.d.ts.map +1 -0
- package/dist/tools/sendMessage-truly-simple.js +299 -0
- package/dist/tools/sendMessage-truly-simple.js.map +1 -0
- package/dist/tools/sendMessage.d.ts +4 -2
- package/dist/tools/sendMessage.d.ts.map +1 -1
- package/dist/tools/sendMessage.js +240 -186
- package/dist/tools/sendMessage.js.map +1 -1
- package/dist/tools/session.d.ts.map +1 -1
- package/dist/tools/session.js +35 -29
- package/dist/tools/session.js.map +1 -1
- package/dist/types/auth.d.ts +9 -1
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/auth.js +37 -10
- package/dist/types/auth.js.map +1 -1
- package/dist/types/insight.d.ts +10 -0
- package/dist/types/insight.d.ts.map +1 -1
- package/dist/types/session.d.ts +10 -0
- package/dist/types/session.d.ts.map +1 -1
- package/package.json +10 -5
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { eq, desc } from 'drizzle-orm';
|
|
3
|
+
import { getDb } from '../db/client.js';
|
|
4
|
+
import { getShrinkChatClient } from '../clients/shrinkChatClient.js';
|
|
5
|
+
import { sessions, checkpoints, journeys, threadMappings, crisisEvents, governanceEvaluations } from '../db/schema.js';
|
|
6
|
+
import { logger } from '../utils/logger.js';
|
|
7
|
+
import { NotFoundError } from '../utils/errors.js';
|
|
8
|
+
import { errorHandler, ErrorType } from '../utils/errorHandler.js';
|
|
9
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
10
|
+
// Input validation schema
|
|
11
|
+
const SendMessageSchema = z.object({
|
|
12
|
+
session_id: z.string().uuid({
|
|
13
|
+
message: 'session_id must be a valid UUID',
|
|
14
|
+
}),
|
|
15
|
+
message: z.string().min(1).max(10000),
|
|
16
|
+
conversation_type: z.string().optional(),
|
|
17
|
+
system_prompt: z.string().optional(),
|
|
18
|
+
save_checkpoint: z.boolean().optional(),
|
|
19
|
+
checkpoint_key: z.string().optional(),
|
|
20
|
+
advance_step: z.boolean().optional(),
|
|
21
|
+
journey_id: z.string().uuid().optional(),
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* Enhanced sendMessage with LLM self-correction via shrink-chat feedback
|
|
25
|
+
*
|
|
26
|
+
* New approach:
|
|
27
|
+
* 1. Send message to shrink-chat
|
|
28
|
+
* 2. Evaluate response safety using shrink-chat's indicators
|
|
29
|
+
* 3. If unsafe, request LLM to self-correct
|
|
30
|
+
* 4. Log both attempts for audit
|
|
31
|
+
*/
|
|
32
|
+
export async function sendMessage(args) {
|
|
33
|
+
const startTime = Date.now();
|
|
34
|
+
try {
|
|
35
|
+
const input = SendMessageSchema.parse(args);
|
|
36
|
+
const db = getDb();
|
|
37
|
+
logger.info(`Sending message for session ${input.session_id}`);
|
|
38
|
+
// Get session
|
|
39
|
+
const [session] = await db
|
|
40
|
+
.select()
|
|
41
|
+
.from(sessions)
|
|
42
|
+
.where(eq(sessions.id, input.session_id))
|
|
43
|
+
.limit(1);
|
|
44
|
+
if (!session) {
|
|
45
|
+
throw new NotFoundError(`Session ${input.session_id} not found`);
|
|
46
|
+
}
|
|
47
|
+
// Get or create thread ID
|
|
48
|
+
let threadId = session.threadId;
|
|
49
|
+
if (!threadId) {
|
|
50
|
+
threadId = uuidv4();
|
|
51
|
+
logger.info(`Generated new thread ID ${threadId} for session ${session.id}`);
|
|
52
|
+
await db.update(sessions)
|
|
53
|
+
.set({ threadId })
|
|
54
|
+
.where(eq(sessions.id, input.session_id));
|
|
55
|
+
// Create thread mapping
|
|
56
|
+
await db.insert(threadMappings).values({
|
|
57
|
+
sessionId: input.session_id,
|
|
58
|
+
threadId: threadId,
|
|
59
|
+
source: 'mcp',
|
|
60
|
+
metadata: {
|
|
61
|
+
createdFrom: 'sendMessage',
|
|
62
|
+
timestamp: new Date().toISOString(),
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
logger.info(`Created thread mapping for session ${input.session_id} -> thread ${threadId}`);
|
|
66
|
+
}
|
|
67
|
+
// Get journey if exists
|
|
68
|
+
const journey = session.journeyId
|
|
69
|
+
? await db
|
|
70
|
+
.select()
|
|
71
|
+
.from(journeys)
|
|
72
|
+
.where(eq(journeys.id, session.journeyId))
|
|
73
|
+
.limit(1)
|
|
74
|
+
.then(res => res[0])
|
|
75
|
+
: null;
|
|
76
|
+
// Build context
|
|
77
|
+
const memoryContext = {
|
|
78
|
+
userId: session.userId || 'anonymous',
|
|
79
|
+
conversationType: input.conversation_type || 'supportive',
|
|
80
|
+
sessionGoals: journey?.metadata?.goals || [],
|
|
81
|
+
emotionalState: session.metadata?.emotionalState || 'neutral',
|
|
82
|
+
};
|
|
83
|
+
const enhancedContext = {
|
|
84
|
+
journeyStep: journey && session.currentStep < journey.steps.length
|
|
85
|
+
? journey.steps[session.currentStep]
|
|
86
|
+
: null,
|
|
87
|
+
progressIndicators: session.metadata?.progressIndicators || [],
|
|
88
|
+
};
|
|
89
|
+
// Get conversation history
|
|
90
|
+
const previousCheckpoints = await db
|
|
91
|
+
.select()
|
|
92
|
+
.from(checkpoints)
|
|
93
|
+
.where(eq(checkpoints.sessionId, session.id))
|
|
94
|
+
.orderBy(desc(checkpoints.createdAt));
|
|
95
|
+
const history = previousCheckpoints
|
|
96
|
+
.filter(cp => cp.value && typeof cp.value === 'object' && 'message' in cp.value && 'response' in cp.value)
|
|
97
|
+
.flatMap(cp => {
|
|
98
|
+
const val = cp.value;
|
|
99
|
+
return [
|
|
100
|
+
{ role: 'user', content: val.message },
|
|
101
|
+
{ role: 'assistant', content: val.response },
|
|
102
|
+
];
|
|
103
|
+
})
|
|
104
|
+
.slice(-10); // Last 10 messages (5 exchanges)
|
|
105
|
+
// Save user message checkpoint
|
|
106
|
+
const userMessageId = uuidv4();
|
|
107
|
+
await db.insert(checkpoints).values({
|
|
108
|
+
sessionId: session.id,
|
|
109
|
+
stepId: session.currentStep.toString(),
|
|
110
|
+
key: 'user-message',
|
|
111
|
+
value: {
|
|
112
|
+
message: input.message,
|
|
113
|
+
messageId: userMessageId,
|
|
114
|
+
role: 'user',
|
|
115
|
+
timestamp: new Date().toISOString(),
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
logger.debug(`Saved user message checkpoint for session ${session.id}`);
|
|
119
|
+
// Get shrink-chat client
|
|
120
|
+
const client = getShrinkChatClient();
|
|
121
|
+
// Send initial message
|
|
122
|
+
let response = await client.sendMessage(threadId, input.message, {
|
|
123
|
+
memoryContext,
|
|
124
|
+
enhancedContext,
|
|
125
|
+
history,
|
|
126
|
+
systemPrompt: input.system_prompt,
|
|
127
|
+
conversationType: input.conversation_type,
|
|
128
|
+
idempotencyKey: uuidv4(),
|
|
129
|
+
});
|
|
130
|
+
// === NEW: Self-Correction Logic ===
|
|
131
|
+
// Evaluate safety indicators from shrink-chat
|
|
132
|
+
const needsRevision = evaluateNeedsRevision(response);
|
|
133
|
+
if (needsRevision.needed) {
|
|
134
|
+
logger.info(`[Self-Correction] Response needs revision: ${needsRevision.reason}`);
|
|
135
|
+
// Log initial unsafe response for audit
|
|
136
|
+
await logGovernanceEvaluation(session.id, response.content || '', 'revision_requested', needsRevision.reason, needsRevision.confidence);
|
|
137
|
+
// Build revision prompt based on the safety issue
|
|
138
|
+
const revisionPrompt = buildRevisionPrompt(needsRevision.reason, input.message);
|
|
139
|
+
// Request self-correction from the LLM
|
|
140
|
+
const revisedResponse = await client.sendMessage(threadId, revisionPrompt, {
|
|
141
|
+
memoryContext,
|
|
142
|
+
enhancedContext,
|
|
143
|
+
history: [
|
|
144
|
+
...history,
|
|
145
|
+
{ role: 'user', content: input.message },
|
|
146
|
+
{ role: 'assistant', content: response.content || '' }
|
|
147
|
+
],
|
|
148
|
+
systemPrompt: 'You are revising a previous response for safety and appropriateness. Maintain helpfulness while ensuring safety.',
|
|
149
|
+
conversationType: 'revision',
|
|
150
|
+
idempotencyKey: uuidv4(),
|
|
151
|
+
});
|
|
152
|
+
// Log revised response
|
|
153
|
+
await logGovernanceEvaluation(session.id, revisedResponse.content || '', 'revision_applied', 'Self-corrected after safety check', revisedResponse.crisis_confidence || 0);
|
|
154
|
+
// Use revised response
|
|
155
|
+
response = revisedResponse;
|
|
156
|
+
logger.info(`[Self-Correction] Applied revised response`);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// Log approved response
|
|
160
|
+
await logGovernanceEvaluation(session.id, response.content || '', 'approved', 'Response meets safety criteria', response.crisis_confidence || 0);
|
|
161
|
+
}
|
|
162
|
+
// Save assistant response checkpoint
|
|
163
|
+
await db.insert(checkpoints).values({
|
|
164
|
+
sessionId: session.id,
|
|
165
|
+
stepId: session.currentStep.toString(),
|
|
166
|
+
key: 'assistant-message',
|
|
167
|
+
value: {
|
|
168
|
+
message: response.content || response.reply || response.response_text || '',
|
|
169
|
+
messageId: response.messageId || uuidv4(),
|
|
170
|
+
role: 'assistant',
|
|
171
|
+
crisisLevel: response.crisisLevel,
|
|
172
|
+
emotions: response.emotions,
|
|
173
|
+
therapeuticTechnique: response.therapeuticTechnique,
|
|
174
|
+
selfCorrected: needsRevision.needed,
|
|
175
|
+
timestamp: new Date().toISOString(),
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
logger.debug(`Saved assistant message checkpoint for session ${session.id}`);
|
|
179
|
+
// Handle crisis if still present after revision
|
|
180
|
+
let crisisHandled = false;
|
|
181
|
+
if (response.crisisLevel && Number(response.crisisLevel) > 7) {
|
|
182
|
+
logger.warn(`Crisis detected: Level ${response.crisisLevel} for session ${session.id}`);
|
|
183
|
+
crisisHandled = await handleCrisisDetection(session.id, threadId, response);
|
|
184
|
+
}
|
|
185
|
+
// Save additional checkpoint if requested
|
|
186
|
+
if (input.save_checkpoint) {
|
|
187
|
+
const checkpointKey = input.checkpoint_key || 'message_response';
|
|
188
|
+
await db.insert(checkpoints).values({
|
|
189
|
+
sessionId: session.id,
|
|
190
|
+
stepId: session.currentStep.toString(),
|
|
191
|
+
key: checkpointKey,
|
|
192
|
+
value: {
|
|
193
|
+
message: input.message,
|
|
194
|
+
response: response.content || response.reply || response.response_text || '',
|
|
195
|
+
messageId: response.messageId,
|
|
196
|
+
crisisLevel: response.crisisLevel,
|
|
197
|
+
emotions: response.emotions,
|
|
198
|
+
therapeuticTechnique: response.therapeuticTechnique,
|
|
199
|
+
selfCorrected: needsRevision.needed,
|
|
200
|
+
timestamp: new Date().toISOString(),
|
|
201
|
+
},
|
|
202
|
+
});
|
|
203
|
+
logger.debug(`Saved checkpoint '${checkpointKey}' for session ${session.id}`);
|
|
204
|
+
}
|
|
205
|
+
// Advance step if requested (for journey progression)
|
|
206
|
+
if (input.advance_step && session.journeyId) {
|
|
207
|
+
const newStep = session.currentStep + 1;
|
|
208
|
+
await db.update(sessions)
|
|
209
|
+
.set({
|
|
210
|
+
currentStep: newStep,
|
|
211
|
+
updatedAt: new Date(),
|
|
212
|
+
})
|
|
213
|
+
.where(eq(sessions.id, session.id));
|
|
214
|
+
logger.info(`Advanced session ${session.id} to step ${newStep}`);
|
|
215
|
+
}
|
|
216
|
+
// Log performance
|
|
217
|
+
const duration = Date.now() - startTime;
|
|
218
|
+
if (duration > 5000) {
|
|
219
|
+
logger.warn(`Slow operation detected: sendMessage took ${duration}ms`);
|
|
220
|
+
}
|
|
221
|
+
// Return formatted response
|
|
222
|
+
return {
|
|
223
|
+
success: true,
|
|
224
|
+
content: response.content || response.reply || response.response_text || '',
|
|
225
|
+
messageId: response.messageId,
|
|
226
|
+
metadata: {
|
|
227
|
+
crisisDetected: response.crisisDetected || (response.crisisLevel && Number(response.crisisLevel) > 7),
|
|
228
|
+
crisisLevel: response.crisisLevel,
|
|
229
|
+
crisisHandled,
|
|
230
|
+
crisisConfidence: response.crisis_confidence,
|
|
231
|
+
emotions: response.emotions,
|
|
232
|
+
therapeuticTechnique: response.therapeuticTechnique,
|
|
233
|
+
resources: response.resources,
|
|
234
|
+
sessionId: session.id,
|
|
235
|
+
threadId,
|
|
236
|
+
currentStep: input.advance_step ? session.currentStep + 1 : session.currentStep,
|
|
237
|
+
selfCorrected: needsRevision.needed,
|
|
238
|
+
revisionReason: needsRevision.reason,
|
|
239
|
+
},
|
|
240
|
+
timestamp: new Date().toISOString(),
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
logger.error('Error in sendMessage:', error);
|
|
245
|
+
const handledError = errorHandler.handle(error);
|
|
246
|
+
// Check if shrink-chat is unavailable
|
|
247
|
+
if (handledError.type === ErrorType.EXTERNAL_SERVICE) {
|
|
248
|
+
logger.warn('Shrink-chat unavailable, using fallback');
|
|
249
|
+
return await handleLocalFallback(args);
|
|
250
|
+
}
|
|
251
|
+
throw handledError;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Evaluate if response needs revision based on safety indicators
|
|
256
|
+
*/
|
|
257
|
+
function evaluateNeedsRevision(response) {
|
|
258
|
+
// Check crisis level
|
|
259
|
+
const crisisLevel = typeof response.crisis_level === 'number'
|
|
260
|
+
? response.crisis_level
|
|
261
|
+
: (typeof response.crisisLevel === 'number' ? response.crisisLevel : 0);
|
|
262
|
+
const crisisConfidence = response.crisis_confidence || 0;
|
|
263
|
+
// High crisis level needs revision
|
|
264
|
+
if (crisisLevel > 8 && crisisConfidence > 0.7) {
|
|
265
|
+
return {
|
|
266
|
+
needed: true,
|
|
267
|
+
reason: 'High crisis level detected - response may escalate distress',
|
|
268
|
+
confidence: crisisConfidence
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
// Check for specific dangerous patterns in the response content
|
|
272
|
+
const content = (response.content || response.reply || response.response_text || '').toLowerCase();
|
|
273
|
+
// Critical safety patterns that always trigger revision
|
|
274
|
+
const dangerousPatterns = [
|
|
275
|
+
{ pattern: /stop.{0,20}taking.{0,20}(medication|meds|medicine)/i, reason: 'Advice about stopping medication' },
|
|
276
|
+
{ pattern: /kill.{0,20}yourself/i, reason: 'Harmful self-harm content' },
|
|
277
|
+
{ pattern: /end.{0,20}your.{0,20}life/i, reason: 'Harmful self-harm content' },
|
|
278
|
+
{ pattern: /therapist.{0,20}(wrong|lying|bad)/i, reason: 'Undermining therapeutic relationship' },
|
|
279
|
+
{ pattern: /don't.{0,20}tell.{0,20}(anyone|therapist|doctor)/i, reason: 'Encouraging isolation' },
|
|
280
|
+
{ pattern: /only.{0,10}i.{0,10}(can|understand)/i, reason: 'Creating unhealthy dependency' },
|
|
281
|
+
{ pattern: /you.{0,10}(must|need to).{0,20}immediately/i, reason: 'Inappropriate urgency' },
|
|
282
|
+
];
|
|
283
|
+
for (const { pattern, reason } of dangerousPatterns) {
|
|
284
|
+
if (pattern.test(content)) {
|
|
285
|
+
return {
|
|
286
|
+
needed: true,
|
|
287
|
+
reason,
|
|
288
|
+
confidence: 0.95 // High confidence when explicit patterns matched
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return {
|
|
293
|
+
needed: false,
|
|
294
|
+
reason: '',
|
|
295
|
+
confidence: 0
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Build a revision prompt based on the safety issue
|
|
300
|
+
*/
|
|
301
|
+
function buildRevisionPrompt(reason, originalMessage) {
|
|
302
|
+
return `Upon reflection, my previous response may have contained ${reason}.
|
|
303
|
+
Let me provide a more appropriate and helpful response to the user's message: "${originalMessage}"
|
|
304
|
+
|
|
305
|
+
Please provide a supportive, safe response that:
|
|
306
|
+
- Acknowledges their concerns
|
|
307
|
+
- Offers appropriate support without harmful advice
|
|
308
|
+
- Maintains professional boundaries
|
|
309
|
+
- Encourages healthy coping strategies if relevant`;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Log governance evaluation for audit trail
|
|
313
|
+
*/
|
|
314
|
+
async function logGovernanceEvaluation(sessionId, content, action, reason, confidence) {
|
|
315
|
+
const db = getDb();
|
|
316
|
+
try {
|
|
317
|
+
await db.insert(governanceEvaluations).values({
|
|
318
|
+
id: uuidv4(),
|
|
319
|
+
sessionId,
|
|
320
|
+
draftResponse: content.substring(0, 1000), // Truncate for storage
|
|
321
|
+
evaluationResults: {
|
|
322
|
+
action,
|
|
323
|
+
reason,
|
|
324
|
+
confidence,
|
|
325
|
+
timestamp: new Date().toISOString(),
|
|
326
|
+
method: 'self-correction'
|
|
327
|
+
},
|
|
328
|
+
interventionApplied: action === 'revision_requested' ? 'revision' : null,
|
|
329
|
+
finalResponse: action === 'revision_applied' ? content.substring(0, 1000) : null,
|
|
330
|
+
});
|
|
331
|
+
logger.debug(`Logged governance evaluation: ${action} for session ${sessionId}`);
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
logger.error('Failed to log governance evaluation:', error);
|
|
335
|
+
// Non-critical, don't throw
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Handle crisis detection
|
|
340
|
+
*/
|
|
341
|
+
async function handleCrisisDetection(sessionId, threadId, response) {
|
|
342
|
+
const db = getDb();
|
|
343
|
+
try {
|
|
344
|
+
// Save crisis checkpoint
|
|
345
|
+
await db.insert(checkpoints).values({
|
|
346
|
+
sessionId,
|
|
347
|
+
stepId: 'crisis-detection',
|
|
348
|
+
key: 'crisis_event',
|
|
349
|
+
value: {
|
|
350
|
+
level: response.crisisLevel,
|
|
351
|
+
timestamp: new Date().toISOString(),
|
|
352
|
+
resources: response.resources,
|
|
353
|
+
escalationPath: response.escalationPath,
|
|
354
|
+
},
|
|
355
|
+
});
|
|
356
|
+
// Save crisis event
|
|
357
|
+
await db.insert(crisisEvents).values({
|
|
358
|
+
id: uuidv4(),
|
|
359
|
+
sessionId,
|
|
360
|
+
threadId,
|
|
361
|
+
crisisLevel: Number(response.crisisLevel),
|
|
362
|
+
response: response.content || response.reply || response.response_text,
|
|
363
|
+
resources: response.resources || [],
|
|
364
|
+
escalationPath: response.escalationPath,
|
|
365
|
+
handled: true,
|
|
366
|
+
});
|
|
367
|
+
logger.info(`Crisis handled for session ${sessionId}, thread ${threadId}`);
|
|
368
|
+
return true;
|
|
369
|
+
}
|
|
370
|
+
catch (error) {
|
|
371
|
+
logger.error('Failed to handle crisis detection:', error);
|
|
372
|
+
return false;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Fallback handler when shrink-chat is unavailable
|
|
377
|
+
*/
|
|
378
|
+
async function handleLocalFallback(args) {
|
|
379
|
+
logger.warn('Falling back to local processing due to shrink-chat unavailability');
|
|
380
|
+
const input = SendMessageSchema.parse(args);
|
|
381
|
+
const db = getDb();
|
|
382
|
+
// Get the session
|
|
383
|
+
const [session] = await db
|
|
384
|
+
.select()
|
|
385
|
+
.from(sessions)
|
|
386
|
+
.where(eq(sessions.id, input.session_id))
|
|
387
|
+
.limit(1);
|
|
388
|
+
if (!session) {
|
|
389
|
+
return {
|
|
390
|
+
success: false,
|
|
391
|
+
error: 'Session not found',
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
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 or contact support if this persists.";
|
|
395
|
+
const fallbackMessageId = uuidv4();
|
|
396
|
+
const timestamp = new Date().toISOString();
|
|
397
|
+
// Save fallback checkpoint
|
|
398
|
+
try {
|
|
399
|
+
await db.insert(checkpoints).values({
|
|
400
|
+
sessionId: session.id,
|
|
401
|
+
stepId: session.currentStep.toString(),
|
|
402
|
+
key: 'assistant-message',
|
|
403
|
+
value: {
|
|
404
|
+
message: fallbackContent,
|
|
405
|
+
messageId: fallbackMessageId,
|
|
406
|
+
role: 'assistant',
|
|
407
|
+
fallbackMode: true,
|
|
408
|
+
timestamp: timestamp,
|
|
409
|
+
},
|
|
410
|
+
});
|
|
411
|
+
logger.debug(`Saved fallback assistant message checkpoint for session ${session.id}`);
|
|
412
|
+
}
|
|
413
|
+
catch (error) {
|
|
414
|
+
logger.error('Failed to save fallback checkpoint:', error);
|
|
415
|
+
}
|
|
416
|
+
return {
|
|
417
|
+
success: true,
|
|
418
|
+
content: fallbackContent,
|
|
419
|
+
messageId: fallbackMessageId,
|
|
420
|
+
metadata: {
|
|
421
|
+
fallbackMode: true,
|
|
422
|
+
sessionId: session.id,
|
|
423
|
+
threadId: session.threadId || undefined,
|
|
424
|
+
currentStep: session.currentStep,
|
|
425
|
+
timestamp: timestamp,
|
|
426
|
+
},
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
//# sourceMappingURL=sendMessage-revised.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendMessage-revised.js","sourceRoot":"","sources":["../../src/tools/sendMessage-revised.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TRULY SIMPLE sendMessage
|
|
3
|
+
*
|
|
4
|
+
* Just use shrink-chat's existing crisis detection to trigger self-correction.
|
|
5
|
+
* No additional patterns. No complex logic.
|
|
6
|
+
*/
|
|
7
|
+
export declare function sendMessage(args: unknown): Promise<any>;
|
|
8
|
+
//# sourceMappingURL=sendMessage-truly-simple.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendMessage-truly-simple.d.ts","sourceRoot":"","sources":["../../src/tools/sendMessage-truly-simple.ts"],"names":[],"mappings":"AAuBA;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,gBAsP9C"}
|