File size: 2,126 Bytes
1dc8372
 
 
 
 
 
 
 
 
 
 
 
 
 
5db933c
1dc8372
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5db933c
3ad0250
1dc8372
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
const User = require('../models/User');
const ErrorResponse = require('../utils/errorResponse');
const asyncHandler = require('../utils/asyncHandler');

// @desc      Update user preferences (Mainframe Sync Fix)
// @route     PUT /api/users/preferences
// @access    Private
exports.updatePreferences = asyncHandler(async (req, res, next) => {
  const { 
    theme, preferredModel, temperature, techStack,
    cotMode, reasoningBudget, selfCritique, multiAgentMode,
    confidenceLevel, hallucinationGuard, debugMode
  } = req.body;
  
  const user = req.user;

  // Ensure preferences object exists
  if (!user.preferences) user.preferences = {};

  // Standard Sync
  if (theme) user.preferences.theme = theme;
  if (preferredModel) user.preferences.preferredModel = preferredModel;
  if (temperature !== undefined) user.preferences.temperature = temperature;
  if (techStack) user.preferences.techStack = techStack;

  // Advanced Cognitive Sync
  if (cotMode) user.preferences.cotMode = cotMode;
  if (reasoningBudget !== undefined) user.preferences.reasoningBudget = reasoningBudget;
  if (selfCritique !== undefined) user.preferences.selfCritique = selfCritique;
  if (multiAgentMode) user.preferences.multiAgentMode = multiAgentMode;
  if (confidenceLevel) user.preferences.confidenceLevel = confidenceLevel;
  if (hallucinationGuard) user.preferences.hallucinationGuard = hallucinationGuard;
  if (debugMode !== undefined) user.preferences.debugMode = debugMode;

  // Save to Cloud (MongoDB Atlas)
  await user.save();

  res.status(200).json({
    success: true,
    data: user.preferences
  });
});

// @desc      Get user profile
// @route     GET /api/users/profile
// @access    Private
exports.getProfile = asyncHandler(async (req, res, next) => {
  const user = req.user;
  
  const profile = {
    name: user.name,
    role: user.role,
    isOwner: user.role === 'owner' || user.email === 'johanvoncd7@gmail.com',
    preferences: user.preferences,
    usage: {
      requestsToday: user.usage.requestsToday,
      limit: 75
    }
  };

  res.status(200).json({
    success: true,
    data: profile
  });
});