@myassis/gateway 1.0.61 → 1.0.63

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.
@@ -440,7 +440,7 @@ router.post('/sessions/:sessionId/stream', ensureAgentManager, async (req, res)
440
440
  try {
441
441
  const userId = req.userId;
442
442
  const { sessionId } = req.params;
443
- const { content, attachments, userMessageId, assistantMessageId, useSystemMode, selectModelId } = req.body;
443
+ const { content, attachments, userMessageId, assistantMessageId } = req.body;
444
444
  if (!content && attachments.length === 0) {
445
445
  return res.status(400).json({ success: false, error: 'Content or attachments are required' });
446
446
  }
@@ -448,10 +448,6 @@ router.post('/sessions/:sessionId/stream', ensureAgentManager, async (req, res)
448
448
  const session = (0, index_js_2.getSessionManager)(userId).getSession(sessionId);
449
449
  if (session) {
450
450
  // 同步前端本次请求携带的模式设置,确保切换后立即生效(避免使用 session 中的旧值)
451
- if (useSystemMode !== undefined)
452
- session.useSystemMode = useSystemMode;
453
- if (selectModelId !== undefined)
454
- session.selectModelId = selectModelId;
455
451
  // Set SSE headers
456
452
  res.setHeader('Content-Type', 'text/event-stream');
457
453
  res.setHeader('Cache-Control', 'no-cache');
@@ -248,6 +248,7 @@ class AgentManager {
248
248
  id: s.id,
249
249
  title: s.title,
250
250
  selectModelId: s.selectModelId,
251
+ useSystemMode: s.useSystemMode,
251
252
  isCurrent: s.isCurrent,
252
253
  unreadCount: s.unreadCount,
253
254
  createdAt: s.createdAt,
@@ -528,6 +528,9 @@ class LLMClient {
528
528
  if (d.finish_reason === 'length' && !d.content) {
529
529
  throw Error('exceed max message tokens');
530
530
  }
531
+ if (d.finish_reason === 'stop' && !d.content) {
532
+ throw Error('model return empty content');
533
+ }
531
534
  const toolCalls = d.toolCalls?.map((tc) => ({
532
535
  id: tc.id || '',
533
536
  toolName: tc.function?.name || '',
@@ -546,6 +549,9 @@ class LLMClient {
546
549
  if (messageData.finish_reason === 'length' && !messageData.content) {
547
550
  throw Error('exceed max message tokens');
548
551
  }
552
+ if (messageData.finish_reason === 'stop' && !messageData.content) {
553
+ throw Error('model return empty content');
554
+ }
549
555
  return {
550
556
  content: messageData.content || '',
551
557
  reasoningContent: messageData.reasoning_content || undefined,
@@ -65,7 +65,8 @@ class SessionManager {
65
65
  lastMessageSummary: data.lastMessageSummary,
66
66
  lastMessageSummaryAt: data.lastMessageSummaryAt,
67
67
  messageQueue: data.messageQueue,
68
- messageQueueAutoExecute: data.messageQueueAutoExecute
68
+ messageQueueAutoExecute: data.messageQueueAutoExecute,
69
+ useSystemMode: data.useSystemMode
69
70
  });
70
71
  session.loadMessages();
71
72
  return session;
@@ -82,17 +82,17 @@ class SessionStore {
82
82
  // ========== Session Operations ==========
83
83
  insertSession(session) {
84
84
  this.db.prepare(`
85
- INSERT INTO sessions (id, user_id, agent_id, title, select_model_id, voice_state, created_at, updated_at,last_message_summary,last_message_summary_at,unread_count,is_current,message_queue,message_queue_auto_execute)
86
- VALUES (?, ?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?)
87
- `).run(session.id, session.userId, session.agentId || null, session.title, session.selectModelId || '', JSON.stringify(session.voiceState), session.createdAt, session.updatedAt, session.lastMessageSummary, session.lastMessageSummaryAt, session.unreadCount || 0, session.isCurrent ? 1 : 0, JSON.stringify(session.messageQueue || []), session.messageQueueAutoExecute === false ? 0 : 1);
85
+ INSERT INTO sessions (id, user_id, agent_id, title, select_model_id, voice_state, created_at, updated_at,last_message_summary,last_message_summary_at,unread_count,is_current,message_queue,message_queue_auto_execute, use_system_mode)
86
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?,?,?,?,?,?,?,?)
87
+ `).run(session.id, session.userId, session.agentId || null, session.title, session.selectModelId || '', JSON.stringify(session.voiceState), session.createdAt, session.updatedAt, session.lastMessageSummary, session.lastMessageSummaryAt, session.unreadCount || 0, session.isCurrent ? 1 : 0, JSON.stringify(session.messageQueue || []), session.messageQueueAutoExecute === false ? 0 : 1, session.useSystemMode ? 1 : 0);
88
88
  }
89
89
  updateSession(session) {
90
90
  this.db.prepare(`
91
91
  UPDATE sessions
92
92
  SET user_id = ?, agent_id = ?, title = ?, select_model_id = ?,
93
- voice_state = ?, updated_at = ?,last_message_summary=?,last_message_summary_at=?,unread_count=?,is_current=?,message_queue=?,message_queue_auto_execute=?
93
+ voice_state = ?, updated_at = ?,last_message_summary=?,last_message_summary_at=?,unread_count=?,is_current=?,message_queue=?,message_queue_auto_execute=?, use_system_mode=?
94
94
  WHERE id = ?
95
- `).run(session.userId, session.agentId || null, session.title, session.selectModelId || '', JSON.stringify(session.voiceState), session.updatedAt, session.lastMessageSummary, session.lastMessageSummaryAt, session.unreadCount || 0, session.isCurrent ? 1 : 0, JSON.stringify(session.messageQueue || []), session.messageQueueAutoExecute === false ? 0 : 1, session.id);
95
+ `).run(session.userId, session.agentId || null, session.title, session.selectModelId || '', JSON.stringify(session.voiceState), session.updatedAt, session.lastMessageSummary, session.lastMessageSummaryAt, session.unreadCount || 0, session.isCurrent ? 1 : 0, JSON.stringify(session.messageQueue || []), session.messageQueueAutoExecute === false ? 0 : 1, session.useSystemMode ? 1 : 0, session.id);
96
96
  }
97
97
  // 支持部分更新的 updateSession
98
98
  updateSessionPartial(id, data) {
@@ -114,6 +114,10 @@ class SessionStore {
114
114
  updates.push('message_queue_auto_execute = ?');
115
115
  values.push(data.messageQueueAutoExecute ? 1 : 0);
116
116
  }
117
+ if (data.useSystemMode !== undefined) {
118
+ updates.push('use_system_mode = ?');
119
+ values.push(data.useSystemMode ? 1 : 0);
120
+ }
117
121
  if (updates.length === 0)
118
122
  return;
119
123
  updates.push('updated_at = ?');
@@ -187,6 +191,7 @@ class SessionStore {
187
191
  agentId: row.agent_id || undefined,
188
192
  title: row.title,
189
193
  selectModelId: row.select_model_id || undefined,
194
+ useSystemMode: row.use_system_mode !== 0,
190
195
  voiceState: JSON.parse(row.voice_state),
191
196
  createdAt: row.created_at,
192
197
  updatedAt: row.updated_at,
@@ -0,0 +1 @@
1
+ ALTER TABLE sessions ADD COLUMN use_system_mode INTEGER DEFAULT 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myassis/gateway",
3
- "version": "1.0.61",
3
+ "version": "1.0.63",
4
4
  "description": "我的助手 Gateway Service - 本地 AI 网关服务,支持认证、WebSocket 实时通信和任务调度",
5
5
  "main": "dist/index.js",
6
6
  "bin": {