dsh-knowhub 0.8.5 → 0.8.6

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 CHANGED
@@ -116,7 +116,7 @@ cmd /c mklink /J "$env:USERPROFILE\.dsh\profiles\knowhub\node_modules\dsh-knowhu
116
116
  | Repo Wiki | 按知识库分组的 Wiki 文档树 + 阅读器:正文、来源清单、版本历史、编辑、标记过时、父级 / 子级知识(最多 5 层)、是否有帮助反馈、导出 Markdown;状态过滤与真实分页 |
117
117
  | 知识卡片 | 决策 / 约定 / 问题 / 待办四类知识,类型与状态过滤,列表 + 阅读器 |
118
118
  | 记忆 | 记忆 / 偏好两类知识,类型与状态过滤,列表 + 阅读器 |
119
- | 知识库 | 知识库列表 + 详情:新建与编辑配置、初始化与增量任务(进度 / 日志 / 取消 / 重试)、项目索引、模型调用记录、知识列表分页、导出全部、导入 Markdown、删除 |
119
+ | 知识库 | 知识库列表(固定列出全部:用户级 + 各工作区,不做工作区筛选)+ 详情:新建与编辑配置、初始化与增量任务(进度 / 日志 / 取消 / 重试)、项目索引、模型调用记录、知识列表分页、导出全部、导入 Markdown、删除 |
120
120
  | 待审核 | 候选 / 冲突 / 草稿 / 过时四类队列,真实计数、筛选、排序、批量审批;点「查看详情与差异」进入文档对比页;版本历史与审核日志 |
121
121
  | 检索 | 关键词 + 标签 + 知识库 / 类型 / 状态 / 排序;显示来源、作用域、审核状态与检索模式;结果分页加载 |
122
122
  | 设置 | 默认策略、提炼开关与阈值、审核人与自动批准、知识注入开关与预算、备份保留、排除目录、存储位置迁移、备份预览与恢复、诊断信息 |
@@ -879,7 +879,6 @@ function KbView(props) {
879
879
  const [error, setError] = R.useState(null);
880
880
  const [showForm, setShowForm] = R.useState(false);
881
881
  const [kbQuery, setKbQuery] = R.useState('');
882
- const [listWorkspace, setListWorkspace] = R.useState('all');
883
882
  const [detail, setDetail] = R.useState(null);
884
883
  const [detailLoading, setDetailLoading] = R.useState(false);
885
884
  const [pendingDelete, setPendingDelete] = R.useState(null);
@@ -925,16 +924,14 @@ function KbView(props) {
925
924
  // 增量状态读取失败不影响主流程
926
925
  }
927
926
  }, []);
928
- // 列表范围:'all' 看全部(用户级 + 所有工作区),或指定某个工作区。
929
- // 不能只按 cwd 反查出的「当前工作区」过滤:知识库允许建在任意工作区,
930
- // 建完看不见、同名又报已存在,就是这样产生的。
931
- const load = R.useCallback(async (workspaceOverride) => {
927
+ // 列表范围:始终展示全部知识库(用户级 + 所有工作区),不按工作区筛选。
928
+ // 知识库允许建在任意工作区;若按 cwd 反查的「当前工作区」过滤,会出现建完看不见、
929
+ // 同名却报已存在的错觉,所以这里固定请求 all=1。
930
+ const load = R.useCallback(async () => {
932
931
  setLoading(true);
933
932
  setError(null);
934
- const target = typeof workspaceOverride === 'string' ? workspaceOverride : listWorkspace;
935
933
  try {
936
- const query = target === 'all' ? '?all=1' : '?workspaceId=' + encodeURIComponent(target);
937
- const value = await request('/kb' + query);
934
+ const value = await request('/kb?all=1');
938
935
  setList(value.knowledgeBases ?? []);
939
936
  }
940
937
  catch (failure) {
@@ -943,7 +940,7 @@ function KbView(props) {
943
940
  finally {
944
941
  setLoading(false);
945
942
  }
946
- }, [listWorkspace]);
943
+ }, []);
947
944
  R.useEffect(() => { void load(); }, [load]);
948
945
  R.useEffect(() => { void load(); }, [props.refreshKey]);
949
946
  // 打开详情后每 1.5s 轮询任务;succeeded 时刷新文档与索引摘要(真实数据,无本地伪造)。
@@ -1155,14 +1152,8 @@ function KbView(props) {
1155
1152
  }), h('button', {
1156
1153
  type: 'button', style: styles.primary, className: 'kh-primary',
1157
1154
  onClick: () => { setShowForm(!showForm); setDetail(null); },
1158
- }, showForm ? '收起' : '+ 新建')), h('div', { style: { padding: '0 12px 8px', display: 'flex', flexDirection: 'column', gap: '6px' } }, h('select', {
1159
- style: { ...styles.input, height: '30px' },
1160
- value: listWorkspace,
1161
- onChange: (event) => { setListWorkspace(event.target.value); setDetail(null); },
1162
- }, h('option', { value: 'all' }, '全部工作区(用户级 + 各工作区)'), (workspaces ?? []).map((workspace) => h('option', { key: workspace.id, value: workspace.id }, (workspace.title ?? workspace.path ?? workspace.id) + (workspace.pathState === 'missing' ? '(目录不可用)' : '')))), h('div', { style: styles.hint }, listWorkspace === 'all'
1163
- ? '显示用户级知识库与所有工作区的知识库。'
1164
- : '只显示该工作区的知识库,以及用户级知识库。')), error !== null ? h('div', { style: { ...styles.error, margin: '0 10px 10px' } }, error) : null, h('div', { style: styles.listScroll, className: 'kh-scroll' }, list === null ? (loading ? h('div', { style: styles.listEmpty }, '正在加载知识库列表…') : null)
1165
- : filteredList.length === 0 ? h('div', { style: styles.listEmpty }, list.length === 0 ? (listWorkspace === 'all' ? '还没有任何知识库。点击「+ 新建」创建。' : '该范围还没有知识库。') : '没有匹配的知识库名称。')
1155
+ }, showForm ? '收起' : '+ 新建')), h('div', { style: { padding: '0 12px 8px' } }, h('div', { style: styles.hint }, '已列出全部知识库(用户级 + 各工作区)' + (list !== null ? ',共 ' + list.length + ' 个' : '') + '。')), error !== null ? h('div', { style: { ...styles.error, margin: '0 10px 10px' } }, error) : null, h('div', { style: styles.listScroll, className: 'kh-scroll' }, list === null ? (loading ? h('div', { style: styles.listEmpty }, '正在加载知识库列表…') : null)
1156
+ : filteredList.length === 0 ? h('div', { style: styles.listEmpty }, list.length === 0 ? '还没有任何知识库。点击「+ 新建」创建。' : '没有匹配的知识库名称。')
1166
1157
  : filteredList.map((kb) => h('button', {
1167
1158
  key: kb.id, type: 'button',
1168
1159
  style: detail !== null && detail.knowledgeBase.id === kb.id ? styles.treeRowActive : styles.treeRow,
@@ -1175,11 +1166,8 @@ function KbView(props) {
1175
1166
  onCreated: async (kb) => {
1176
1167
  setShowForm(false);
1177
1168
  notify('知识库「' + kb.name + '」已创建。下一步:在详情里点「开始初始化」。');
1178
- // 新建的库可能绑在别的工作区:直接把列表切过去并打开详情,避免「建完了却看不见」。
1179
- const target = kb.scope === 'workspace' && kb.workspaceId ? String(kb.workspaceId) : undefined;
1180
- if (target !== undefined)
1181
- setListWorkspace(target);
1182
- await load(target);
1169
+ // 列表固定展示全部知识库,新建后直接刷新并打开详情即可。
1170
+ await load();
1183
1171
  await openDetail(kb.id);
1184
1172
  },
1185
1173
  })) : null, importOpen && detail !== null ? h(Modal, { onClose: () => setImportOpen(false), maxWidth: '760px' }, h(ImportMarkdownForm, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-knowhub",
3
- "version": "0.8.5",
3
+ "version": "0.8.6",
4
4
  "description": "知枢 KnowHub — DSH 全局知识中心与项目长期记忆:知识库、Repo Wiki、审核与版本、增量更新、检索与上下文注入、自动提炼、备份恢复、中文面板",
5
5
  "license": "MIT",
6
6
  "type": "module",