dsh-bots 0.2.16 → 0.2.17

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 (2) hide show
  1. package/lib/client.js +22 -4
  2. package/package.json +1 -1
package/lib/client.js CHANGED
@@ -464,6 +464,7 @@
464
464
  'chat.stop.noop': '当前没有进行中的生成',
465
465
  'media.openFailed': '打开失败,文件可能已移动或被删除',
466
466
  'chat.members.manage': '管理成员',
467
+ 'chat.members.cap': '已达群成员上限 6 人(引擎限制)——请先移除一名成员再添加',
467
468
  'chat.settings': '设置',
468
469
  'chat.settings.title': '会话设置',
469
470
  'chat.settings.name': '名称',
@@ -576,6 +577,7 @@
576
577
  'chat.stop.noop': 'No generation in progress',
577
578
  'media.openFailed': 'Open failed — the file may have moved or been deleted',
578
579
  'chat.members.manage': 'Manage members',
580
+ 'chat.members.cap': 'Group cap is 6 members (engine limit) — remove one before adding',
579
581
  'chat.settings': 'Settings',
580
582
  'chat.settings.title': 'Session settings',
581
583
  'chat.settings.name': 'Name',
@@ -2149,8 +2151,24 @@
2149
2151
  return null;
2150
2152
  const singles = s.agents.filter((a) => !a.isGroup && a.isHiddenFromSidebar !== true);
2151
2153
  const pickedIds = picked === null ? [] : Object.keys(picked).filter((k) => picked[k]);
2154
+ // Engine hard cap (sdk-bots agents.ts GROUP_MAX_MEMBERS = 6): the glue
2155
+ // slice(0, 6)-truncates the roster SILENTLY — an over-cap save writes
2156
+ // successfully and just drops whoever ranked past 6. Surface it here
2157
+ // instead of letting a save pretend to work.
2158
+ const MEMBER_CAP = 6;
2159
+ const overCap = pickedIds.length > MEMBER_CAP;
2160
+ function toggle(id) {
2161
+ if (picked === null)
2162
+ return;
2163
+ if (picked[id] !== true && pickedIds.length >= MEMBER_CAP) {
2164
+ setErr(t('chat.members.cap'));
2165
+ return;
2166
+ }
2167
+ setErr(null);
2168
+ setPicked({ ...picked, [id]: !picked[id] });
2169
+ }
2152
2170
  async function submit() {
2153
- if (working || picked === null)
2171
+ if (working || picked === null || overCap)
2154
2172
  return;
2155
2173
  setWorking(true);
2156
2174
  setErr(null);
@@ -2186,16 +2204,16 @@
2186
2204
  key: m.id,
2187
2205
  className: 'dbs-member' + (picked[m.id] ? ' checked' : ''),
2188
2206
  style: { cursor: 'pointer', padding: '4px 6px', borderRadius: 8 },
2189
- onClick: () => setPicked({ ...picked, [m.id]: !picked[m.id] }),
2207
+ onClick: () => toggle(m.id),
2190
2208
  }, e('input', { type: 'checkbox', checked: Boolean(picked[m.id]), readOnly: true }), e(Avatar, { agent: m, size: 18 }), e('span', { className: 'dbs-title' }, m.name))), singles.length > 0
2191
- ? e('div', { className: 'dbs-meta', style: { padding: '6px 6px 0' } }, t('chat.group', { n: pickedIds.length }))
2209
+ ? e('div', { className: 'dbs-meta', style: { padding: '6px 6px 0' } }, t('chat.group', { n: pickedIds.length }) + ' / ' + String(MEMBER_CAP))
2192
2210
  : null), err !== null
2193
2211
  ? e('div', { className: 'dbs-error', onClick: () => { setErr(null); } }, err)
2194
2212
  : null), e('div', { className: 'dbs-modalFooter' }, e(Button, {
2195
2213
  variant: 'ghost', size: 'sm', disabled: working,
2196
2214
  onClick: () => patch({ manageMembers: null }),
2197
2215
  }, t('action.cancel')), e(Button, {
2198
- variant: 'primary', size: 'sm', disabled: picked === null || working,
2216
+ variant: 'primary', size: 'sm', disabled: picked === null || working || overCap,
2199
2217
  onClick: () => void submit(),
2200
2218
  }, working ? t('action.saving') : t('action.save')))));
2201
2219
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-bots",
3
- "version": "0.2.16",
3
+ "version": "0.2.17",
4
4
  "description": "Multi-bot workbench for DeepSeek Harness: bridges the sdk-bots orchestration gateway (group chats, single bots) into the dsh web shell with official-styled UI.",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",