@lemoncat7/dsh-knowledge 2.3.2 → 2.3.4

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 (86) hide show
  1. package/README.md +1 -1
  2. package/docs/ui-maintenance.md +97 -0
  3. package/lib/activity-control.d.ts +6 -0
  4. package/lib/activity-control.d.ts.map +1 -0
  5. package/lib/activity-control.js +118 -0
  6. package/lib/activity-control.js.map +1 -0
  7. package/lib/client.d.ts +17 -0
  8. package/lib/client.d.ts.map +1 -1
  9. package/lib/client.js +4030 -196
  10. package/lib/client.js.map +4 -4
  11. package/lib/design-tokens.d.ts +12 -0
  12. package/lib/design-tokens.d.ts.map +1 -0
  13. package/lib/design-tokens.js +58 -0
  14. package/lib/design-tokens.js.map +1 -0
  15. package/lib/index.d.ts.map +1 -1
  16. package/lib/index.js +3 -0
  17. package/lib/index.js.map +1 -1
  18. package/lib/knowledge-activity-api.d.ts +35 -0
  19. package/lib/knowledge-activity-api.d.ts.map +1 -0
  20. package/lib/knowledge-activity-api.js +115 -0
  21. package/lib/knowledge-activity-api.js.map +1 -0
  22. package/lib/knowledge-activity-controller.d.ts +20 -0
  23. package/lib/knowledge-activity-controller.d.ts.map +1 -0
  24. package/lib/knowledge-activity-controller.js +138 -0
  25. package/lib/knowledge-activity-controller.js.map +1 -0
  26. package/lib/knowledge-activity-notes.d.ts +9 -0
  27. package/lib/knowledge-activity-notes.d.ts.map +1 -0
  28. package/lib/knowledge-activity-notes.js +150 -0
  29. package/lib/knowledge-activity-notes.js.map +1 -0
  30. package/lib/knowledge-activity-panel.d.ts +8 -0
  31. package/lib/knowledge-activity-panel.d.ts.map +1 -0
  32. package/lib/knowledge-activity-panel.js +245 -0
  33. package/lib/knowledge-activity-panel.js.map +1 -0
  34. package/lib/knowledge-activity-presentation.d.ts +14 -0
  35. package/lib/knowledge-activity-presentation.d.ts.map +1 -0
  36. package/lib/knowledge-activity-presentation.js +77 -0
  37. package/lib/knowledge-activity-presentation.js.map +1 -0
  38. package/lib/knowledge-activity-state.d.ts +17 -0
  39. package/lib/knowledge-activity-state.d.ts.map +1 -0
  40. package/lib/knowledge-activity-state.js +14 -0
  41. package/lib/knowledge-activity-state.js.map +1 -0
  42. package/lib/latest-request.d.ts +7 -0
  43. package/lib/latest-request.d.ts.map +1 -0
  44. package/lib/latest-request.js +14 -0
  45. package/lib/latest-request.js.map +1 -0
  46. package/lib/local-provider.d.ts +0 -2
  47. package/lib/local-provider.d.ts.map +1 -1
  48. package/lib/local-provider.js +2 -323
  49. package/lib/local-provider.js.map +1 -1
  50. package/lib/notes/share-page-styles.d.ts +2 -0
  51. package/lib/notes/share-page-styles.d.ts.map +1 -0
  52. package/lib/notes/share-page-styles.js +11 -0
  53. package/lib/notes/share-page-styles.js.map +1 -0
  54. package/lib/notes/share-page.d.ts.map +1 -1
  55. package/lib/notes/share-page.js +1 -8
  56. package/lib/notes/share-page.js.map +1 -1
  57. package/lib/storage/migrations.d.ts +5 -0
  58. package/lib/storage/migrations.d.ts.map +1 -0
  59. package/lib/storage/migrations.js +325 -0
  60. package/lib/storage/migrations.js.map +1 -0
  61. package/lib/theme-bridge.d.ts +9 -7
  62. package/lib/theme-bridge.d.ts.map +1 -1
  63. package/lib/theme-bridge.js +3 -23
  64. package/lib/theme-bridge.js.map +1 -1
  65. package/lib/web-note-editor-outline.js +2 -2
  66. package/lib/web-note-editor-outline.js.map +1 -1
  67. package/lib/web-note-editor-selection.d.ts.map +1 -1
  68. package/lib/web-note-editor-selection.js +51 -16
  69. package/lib/web-note-editor-selection.js.map +1 -1
  70. package/lib/web-note-editor.d.ts.map +1 -1
  71. package/lib/web-note-editor.js +15 -1
  72. package/lib/web-note-editor.js.map +1 -1
  73. package/lib/web.d.ts.map +1 -1
  74. package/lib/web.js +4 -0
  75. package/lib/web.js.map +1 -1
  76. package/package.json +4 -1
  77. package/web/app.js +111 -191
  78. package/web/design-tokens.css +1 -0
  79. package/web/dialogs.js +94 -0
  80. package/web/document-actions.js +68 -0
  81. package/web/index.html +1 -0
  82. package/web/model-catalog.js +22 -0
  83. package/web/note-editor.js +57 -57
  84. package/web/select-control.js +193 -0
  85. package/web/styles.css +162 -203
  86. package/web/ui-primitives.js +5 -0
@@ -0,0 +1,150 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useState, useRef } from 'react';
3
+ import { IconChevronLeftOutline14, IconChevronRightOutline14, IconCloseOutline16, IconDataOutline16, IconFolderOpenOutline16, IconRefreshOutline14, IconSearchOutline16, } from '@deepseek-ai/dsh-client-ui-primitives';
4
+ import { loadNoteContent, loadNoteIndex } from './knowledge-activity-api.js';
5
+ import { LatestRequest } from './latest-request.js';
6
+ import { renderMarkdown } from './web-markdown-preview.js';
7
+ export function KnowledgeActivityNotes({ sessionId, projectId, controller }) {
8
+ const initial = controller.selection(sessionId);
9
+ const [folderId, setFolderId] = useState(initial.noteFolderId ?? null);
10
+ const [crumbs, setCrumbs] = useState(initial.noteCrumbs ?? [{ id: null, name: '全部笔记' }]);
11
+ const [selectedId, setSelectedId] = useState(initial.noteDocumentId);
12
+ const [nodes, setNodes] = useState([]);
13
+ const [content, setContent] = useState();
14
+ const [queryInput, setQueryInput] = useState('');
15
+ const [query, setQuery] = useState('');
16
+ const [listState, setListState] = useState('loading');
17
+ const [contentState, setContentState] = useState('idle');
18
+ const [error, setError] = useState('');
19
+ const listRequest = useRef(new LatestRequest());
20
+ const [refresh, setRefresh] = useState(0);
21
+ const loadNodes = useCallback(async () => {
22
+ const signal = listRequest.current.start();
23
+ setListState('loading');
24
+ setError('');
25
+ try {
26
+ const value = await loadNoteIndex({
27
+ sessionId,
28
+ ...projectId === undefined ? {} : { projectId },
29
+ parentId: folderId,
30
+ query,
31
+ ...signal === undefined ? {} : { signal },
32
+ });
33
+ if (signal.aborted)
34
+ return;
35
+ setNodes(value);
36
+ setListState('ready');
37
+ }
38
+ catch (reason) {
39
+ if (signal?.aborted)
40
+ return;
41
+ setListState('error');
42
+ setError(message(reason));
43
+ }
44
+ }, [folderId, projectId, query, sessionId]);
45
+ useEffect(() => {
46
+ void loadNodes();
47
+ return () => { listRequest.current.cancel(); };
48
+ }, [loadNodes, refresh]);
49
+ useEffect(() => {
50
+ if (selectedId === undefined) {
51
+ setContent(undefined);
52
+ setContentState('idle');
53
+ return;
54
+ }
55
+ const abort = new AbortController();
56
+ setContentState('loading');
57
+ setError('');
58
+ void loadNoteContent({
59
+ id: selectedId,
60
+ sessionId,
61
+ ...projectId === undefined ? {} : { projectId },
62
+ signal: abort.signal,
63
+ }).then(value => {
64
+ if (abort.signal.aborted)
65
+ return;
66
+ setContent(value);
67
+ setContentState('ready');
68
+ }).catch(reason => {
69
+ if (abort.signal.aborted)
70
+ return;
71
+ setContentState('error');
72
+ setError(message(reason));
73
+ });
74
+ return () => { abort.abort(); };
75
+ }, [projectId, refresh, selectedId, sessionId]);
76
+ const openFolder = (node) => {
77
+ setFolderId(node.id);
78
+ const nextCrumbs = [...crumbs, { id: node.id, name: node.name }];
79
+ setCrumbs(nextCrumbs);
80
+ setQuery('');
81
+ setQueryInput('');
82
+ controller.select(sessionId, { mode: 'notes', noteFolderId: node.id, noteDocumentId: undefined, noteCrumbs: nextCrumbs });
83
+ };
84
+ const openCrumb = (crumb, index) => {
85
+ setFolderId(crumb.id);
86
+ const nextCrumbs = crumbs.slice(0, index + 1);
87
+ setCrumbs(nextCrumbs);
88
+ setSelectedId(undefined);
89
+ controller.select(sessionId, { mode: 'notes', noteFolderId: crumb.id, noteDocumentId: undefined, noteCrumbs: nextCrumbs });
90
+ };
91
+ const openNode = (node) => {
92
+ if (node.kind === 'folder')
93
+ return openFolder(node);
94
+ if (!node.editable)
95
+ return;
96
+ setSelectedId(node.id);
97
+ controller.select(sessionId, { ...controller.selection(sessionId), mode: 'notes', noteFolderId: folderId, noteDocumentId: node.id });
98
+ };
99
+ const closeDocument = () => {
100
+ setSelectedId(undefined);
101
+ setContent(undefined);
102
+ controller.select(sessionId, { ...controller.selection(sessionId), mode: 'notes', noteFolderId: folderId, noteDocumentId: undefined });
103
+ };
104
+ const submitSearch = (event) => {
105
+ event.preventDefault();
106
+ setSelectedId(undefined);
107
+ setContent(undefined);
108
+ controller.select(sessionId, { noteDocumentId: undefined });
109
+ setQuery(queryInput.trim());
110
+ };
111
+ if (selectedId !== undefined)
112
+ return _jsx(NoteReader, { value: content, state: contentState, error: error, onBack: closeDocument, onRetry: () => setRefresh(value => value + 1) });
113
+ return _jsxs("div", { className: "dsh-knowledge-activity-browser", children: [_jsxs("form", { className: "dsh-knowledge-activity-search", role: "search", onSubmit: submitSearch, children: [_jsx(IconSearchOutline16, { size: 16, "aria-hidden": "true" }), _jsx("input", { "aria-label": "\u641C\u7D22\u7B14\u8BB0\u6587\u6863", value: queryInput, placeholder: "\u641C\u7D22\u7B14\u8BB0\u548C\u76EE\u5F55\u2026", onChange: event => setQueryInput(event.target.value) }), queryInput && _jsx("button", { type: "button", onClick: () => { setQueryInput(''); setQuery(''); }, "aria-label": "\u6E05\u9664\u641C\u7D22", children: _jsx(IconCloseOutline16, { size: 14 }) })] }), !query && _jsx("nav", { className: "dsh-knowledge-activity-breadcrumbs", "aria-label": "\u7B14\u8BB0\u76EE\u5F55\u8DEF\u5F84", children: crumbs.map((crumb, index) => _jsxs("span", { children: [index > 0 && _jsx(IconChevronRightOutline14, { size: 12 }), _jsx("button", { type: "button", "aria-current": index === crumbs.length - 1 ? 'location' : undefined, onClick: () => openCrumb(crumb, index), children: crumb.name })] }, `${crumb.id ?? 'root'}-${index}`)) }), _jsxs("div", { className: "dsh-knowledge-activity-list-heading", children: [_jsxs("span", { children: [_jsx("strong", { children: query ? `“${query}” 的结果` : crumbs.at(-1)?.name ?? '笔记文档' }), _jsx("small", { children: query ? '搜索全部笔记' : `当前显示 ${nodes.length} 项` })] }), _jsx("button", { type: "button", className: "dsh-knowledge-activity-icon-button", "aria-label": "\u5237\u65B0\u7B14\u8BB0", title: "\u5237\u65B0", onClick: () => setRefresh(value => value + 1), children: _jsx(IconRefreshOutline14, { size: 14 }) })] }), _jsx("div", { className: "dsh-knowledge-activity-list", "aria-busy": listState === 'loading', children: listState === 'loading' && nodes.length === 0 ? _jsx(ActivityState, { label: "\u6B63\u5728\u8BFB\u53D6\u7B14\u8BB0\u2026" })
114
+ : listState === 'error' ? _jsx(ActivityError, { error: error, onRetry: () => setRefresh(value => value + 1) })
115
+ : nodes.length === 0 ? _jsx(ActivityEmpty, { query: query })
116
+ : nodes.map(node => _jsxs("button", { type: "button", className: "dsh-knowledge-activity-row", disabled: node.kind !== 'folder' && !node.editable, onClick: () => openNode(node), children: [_jsx("span", { className: "dsh-knowledge-activity-row-icon", children: node.kind === 'folder' ? _jsx(IconFolderOpenOutline16, { size: 16 }) : _jsx(IconDataOutline16, { size: 16 }) }), _jsxs("span", { className: "dsh-knowledge-activity-row-copy", children: [_jsx("strong", { children: node.name }), _jsx("small", { children: node.kind === 'folder' ? '目录' : node.editable ? formatSize(node.size) : '暂不支持侧栏预览' })] }), _jsxs("span", { className: "dsh-knowledge-activity-row-meta", children: [_jsx("time", { dateTime: node.updatedAt, children: formatDate(node.updatedAt) }), node.kind === 'folder' && _jsx(IconChevronRightOutline14, { size: 13 })] })] }, node.id)) })] });
117
+ }
118
+ function NoteReader({ value, state, error, onBack, onRetry }) {
119
+ const html = useMemo(() => value === undefined ? '' : renderMarkdown(value.content), [value]);
120
+ return _jsxs("div", { className: "dsh-knowledge-activity-reader", children: [_jsxs("div", { className: "dsh-knowledge-activity-reader-bar", children: [_jsxs("button", { type: "button", className: "dsh-knowledge-activity-back", onClick: onBack, children: [_jsx(IconChevronLeftOutline14, { size: 14 }), "\u7B14\u8BB0\u76EE\u5F55"] }), value && _jsxs("span", { children: [formatDate(value.node.updatedAt), " \u66F4\u65B0"] })] }), state === 'loading' ? _jsx(ActivityState, { label: "\u6B63\u5728\u6253\u5F00\u7B14\u8BB0\u2026" })
121
+ : state === 'error' ? _jsx(ActivityError, { error: error, onRetry: onRetry })
122
+ : value === undefined ? _jsx(ActivityState, { label: "\u6B63\u5728\u51C6\u5907\u7B14\u8BB0\u2026" })
123
+ : _jsxs(_Fragment, { children: [_jsxs("div", { className: "dsh-knowledge-activity-document-heading", children: [_jsx("span", { className: "dsh-knowledge-activity-document-icon", children: _jsx(IconDataOutline16, { size: 18 }) }), _jsxs("div", { children: [_jsx("h2", { children: value.node.name }), _jsxs("p", { children: ["\u7B14\u8BB0\u6587\u6863 \u00B7 ", formatSize(value.node.size)] })] })] }), _jsx("article", { className: "dsh-knowledge-activity-markdown", dangerouslySetInnerHTML: { __html: html } })] })] });
124
+ }
125
+ function ActivityState({ label }) {
126
+ return _jsxs("p", { className: "dsh-knowledge-activity-state", role: "status", children: [_jsx("span", { "aria-hidden": "true" }), label] });
127
+ }
128
+ function ActivityError({ error, onRetry }) {
129
+ return _jsxs("div", { className: "dsh-knowledge-activity-error", role: "alert", children: [_jsx("strong", { children: "\u6682\u65F6\u65E0\u6CD5\u8BFB\u53D6" }), _jsx("p", { children: error }), _jsx("button", { type: "button", onClick: onRetry, children: "\u91CD\u8BD5" })] });
130
+ }
131
+ function ActivityEmpty({ query }) {
132
+ return _jsxs("div", { className: "dsh-knowledge-activity-empty", children: [_jsx("span", { children: _jsx(IconDataOutline16, { size: 20 }) }), _jsx("strong", { children: query ? '没有找到相关笔记' : '这个目录还是空的' }), _jsx("p", { children: query ? '换个关键词,或清除搜索后浏览目录。' : '可以在完整工作区中新建或导入笔记。' })] });
133
+ }
134
+ function formatDate(value) {
135
+ const date = new Date(value);
136
+ if (Number.isNaN(date.getTime()))
137
+ return '未知时间';
138
+ return new Intl.DateTimeFormat('zh-CN', { month: '2-digit', day: '2-digit' }).format(date);
139
+ }
140
+ function formatSize(value) {
141
+ if (value < 1024)
142
+ return `${value} B`;
143
+ if (value < 1024 * 1024)
144
+ return `${(value / 1024).toFixed(value < 10 * 1024 ? 1 : 0)} KB`;
145
+ return `${(value / 1024 / 1024).toFixed(1)} MB`;
146
+ }
147
+ function message(reason) {
148
+ return reason instanceof Error ? reason.message : String(reason);
149
+ }
150
+ //# sourceMappingURL=knowledge-activity-notes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-activity-notes.js","sourceRoot":"","sources":["../src/knowledge-activity-notes.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
2
+ import type { KnowledgeActivityController } from './knowledge-activity-controller.js';
3
+ type DetailsProps = PropsRuntime<'details'>;
4
+ export declare function KnowledgeActivityPanel(props: DetailsProps & {
5
+ controller: KnowledgeActivityController;
6
+ }): JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=knowledge-activity-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-activity-panel.d.ts","sourceRoot":"","sources":["../src/knowledge-activity-panel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAiBpE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAA;AAKrF,KAAK,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;AAE3C,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,GAAG;IAAE,UAAU,EAAE,2BAA2B,CAAA;CAAE,GAChE,GAAG,CAAC,OAAO,CAuQb"}
@@ -0,0 +1,245 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { IconChevronLeftOutline14, IconChevronDownOutline14, IconCloseOutline16, IconDatabaseOutline16, IconDataOutline16, IconRefreshOutline14, IconSearchOutline16, IconFullscreenOutline16, } from '@deepseek-ai/dsh-client-ui-primitives';
4
+ import { loadKnowledgeDocument, loadKnowledgeDocumentIndex, loadMountedKnowledge, } from './knowledge-activity-api.js';
5
+ import { KnowledgeActivityNotes } from './knowledge-activity-notes.js';
6
+ import { LatestRequest } from './latest-request.js';
7
+ import { renderMarkdown } from './web-markdown-preview.js';
8
+ export function KnowledgeActivityPanel(props) {
9
+ const sessionId = String(props.sessionId);
10
+ const projectId = props.useSessions((state) => state.byId[sessionId]?.cwd);
11
+ const initial = props.controller.selection(sessionId);
12
+ const [mode, setMode] = useState(initial.mode ?? 'knowledge');
13
+ const [mounts, setMounts] = useState([]);
14
+ const [selectedBaseId, setSelectedBaseId] = useState(initial.knowledgeBaseId);
15
+ const [selectedDocumentId, setSelectedDocumentId] = useState(initial.documentId);
16
+ const [documents, setDocuments] = useState([]);
17
+ const [documentValue, setDocumentValue] = useState();
18
+ const [queryInput, setQueryInput] = useState('');
19
+ const [query, setQuery] = useState('');
20
+ const [mountState, setMountState] = useState('loading');
21
+ const [listState, setListState] = useState('idle');
22
+ const [documentState, setDocumentState] = useState('idle');
23
+ const [documentRefresh, setDocumentRefresh] = useState(0);
24
+ const [error, setError] = useState('');
25
+ const [nextCursor, setNextCursor] = useState();
26
+ const [baseMenuOpen, setBaseMenuOpen] = useState(false);
27
+ const indexRequest = useRef(new LatestRequest());
28
+ const mountRequest = useRef(new LatestRequest());
29
+ const scopeRef = useRef(null);
30
+ useEffect(() => {
31
+ if (!baseMenuOpen)
32
+ return;
33
+ const closeOutside = (event) => {
34
+ if (!scopeRef.current?.contains(event.target))
35
+ setBaseMenuOpen(false);
36
+ };
37
+ const closeOnEscape = (event) => {
38
+ if (event.key === 'Escape')
39
+ setBaseMenuOpen(false);
40
+ };
41
+ document.addEventListener('pointerdown', closeOutside);
42
+ document.addEventListener('keydown', closeOnEscape);
43
+ return () => {
44
+ document.removeEventListener('pointerdown', closeOutside);
45
+ document.removeEventListener('keydown', closeOnEscape);
46
+ };
47
+ }, [baseMenuOpen]);
48
+ const refreshMounts = useCallback(async () => {
49
+ const signal = mountRequest.current.start();
50
+ setMountState('loading');
51
+ setError('');
52
+ try {
53
+ const next = await loadMountedKnowledge(sessionId, projectId, signal);
54
+ if (signal.aborted)
55
+ return;
56
+ setMounts(next);
57
+ const current = props.controller.selection(sessionId);
58
+ const selected = next.some(item => item.knowledgeBaseId === current.knowledgeBaseId)
59
+ ? current.knowledgeBaseId
60
+ : next[0]?.knowledgeBaseId;
61
+ props.controller.select(sessionId, {
62
+ knowledgeBaseId: selected,
63
+ documentId: selected === current.knowledgeBaseId ? current.documentId : undefined,
64
+ });
65
+ setSelectedBaseId(selected);
66
+ if (selected !== current.knowledgeBaseId) {
67
+ setSelectedDocumentId(undefined);
68
+ setDocumentValue(undefined);
69
+ }
70
+ setMountState('ready');
71
+ }
72
+ catch (reason) {
73
+ if (signal?.aborted)
74
+ return;
75
+ setMountState('error');
76
+ setError(message(reason));
77
+ }
78
+ }, [projectId, props.controller, sessionId]);
79
+ useEffect(() => {
80
+ void refreshMounts();
81
+ return () => { mountRequest.current.cancel(); };
82
+ }, [refreshMounts]);
83
+ const loadIndex = useCallback(async (cursor, append = false) => {
84
+ const signal = indexRequest.current.start();
85
+ if (mounts.length === 0 || (query.length === 0 && selectedBaseId === undefined)) {
86
+ setDocuments([]);
87
+ setNextCursor(undefined);
88
+ setListState('ready');
89
+ return;
90
+ }
91
+ setListState('loading');
92
+ setError('');
93
+ try {
94
+ const result = await loadKnowledgeDocumentIndex({
95
+ sessionId,
96
+ ...projectId === undefined ? {} : { projectId },
97
+ knowledgeBaseIds: query ? mounts.map(item => item.knowledgeBaseId) : [selectedBaseId],
98
+ ...query ? { query } : {},
99
+ ...cursor === undefined ? {} : { cursor },
100
+ ...signal === undefined ? {} : { signal },
101
+ });
102
+ if (signal.aborted)
103
+ return;
104
+ setDocuments(current => append ? [...current, ...result.items] : result.items);
105
+ setNextCursor(result.nextCursor);
106
+ setListState('ready');
107
+ }
108
+ catch (reason) {
109
+ if (signal?.aborted)
110
+ return;
111
+ setListState('error');
112
+ setError(message(reason));
113
+ }
114
+ }, [mounts, projectId, query, selectedBaseId, sessionId]);
115
+ useEffect(() => {
116
+ void loadIndex();
117
+ return () => { indexRequest.current.cancel(); };
118
+ }, [loadIndex]);
119
+ useEffect(() => {
120
+ if (selectedDocumentId === undefined) {
121
+ setDocumentValue(undefined);
122
+ setDocumentState('idle');
123
+ return;
124
+ }
125
+ const controller = new AbortController();
126
+ setDocumentState('loading');
127
+ setError('');
128
+ void loadKnowledgeDocument({
129
+ id: selectedDocumentId,
130
+ sessionId,
131
+ ...projectId === undefined ? {} : { projectId },
132
+ signal: controller.signal,
133
+ }).then(value => {
134
+ if (controller.signal.aborted)
135
+ return;
136
+ setDocumentValue(value);
137
+ setDocumentState('ready');
138
+ }).catch(reason => {
139
+ if (controller.signal.aborted)
140
+ return;
141
+ setDocumentState('error');
142
+ setError(message(reason));
143
+ });
144
+ return () => { controller.abort(); };
145
+ }, [documentRefresh, projectId, selectedDocumentId, sessionId]);
146
+ const selectBase = (knowledgeBaseId) => {
147
+ setBaseMenuOpen(false);
148
+ setSelectedBaseId(knowledgeBaseId);
149
+ setSelectedDocumentId(undefined);
150
+ setDocumentValue(undefined);
151
+ setQueryInput('');
152
+ setQuery('');
153
+ props.controller.select(sessionId, { mode: 'knowledge', knowledgeBaseId, documentId: undefined });
154
+ };
155
+ const selectDocument = (document) => {
156
+ setSelectedBaseId(document.knowledgeBaseId);
157
+ setSelectedDocumentId(document.id);
158
+ props.controller.select(sessionId, {
159
+ mode: 'knowledge',
160
+ knowledgeBaseId: document.knowledgeBaseId,
161
+ documentId: document.id,
162
+ });
163
+ };
164
+ const closeDocument = () => {
165
+ setSelectedDocumentId(undefined);
166
+ setDocumentValue(undefined);
167
+ props.controller.select(sessionId, {
168
+ mode: 'knowledge',
169
+ documentId: undefined,
170
+ ...selectedBaseId === undefined ? {} : { knowledgeBaseId: selectedBaseId },
171
+ });
172
+ };
173
+ const submitSearch = (event) => {
174
+ event.preventDefault();
175
+ setSelectedDocumentId(undefined);
176
+ setDocumentValue(undefined);
177
+ props.controller.select(sessionId, { documentId: undefined });
178
+ setQuery(queryInput.trim());
179
+ };
180
+ const clearSearch = () => {
181
+ setQueryInput('');
182
+ setQuery('');
183
+ };
184
+ const openWorkspace = () => {
185
+ const noteId = props.controller.selection(sessionId).noteDocumentId;
186
+ props.controller.openWorkspace(mode === 'notes'
187
+ ? { view: 'notes', ...(noteId === undefined ? {} : { noteId }) }
188
+ : documentValue === undefined ? undefined : {
189
+ knowledgeBaseId: documentValue.knowledgeBaseId,
190
+ documentId: documentValue.id,
191
+ });
192
+ };
193
+ const selectMode = (nextMode) => {
194
+ setMode(nextMode);
195
+ setBaseMenuOpen(false);
196
+ props.controller.select(sessionId, { ...props.controller.selection(sessionId), mode: nextMode });
197
+ };
198
+ return _jsxs("section", { className: "dsh-knowledge-activity-panel", "data-knowledge-surface": "activity", "aria-label": "\u4F1A\u8BDD\u77E5\u8BC6\u5E93", children: [_jsxs("header", { className: "dsh-knowledge-activity-header", children: [_jsxs("div", { className: "dsh-knowledge-activity-title", children: [_jsx("span", { className: "dsh-knowledge-activity-mark", children: _jsx(IconDatabaseOutline16, { size: 17 }) }), _jsxs("span", { children: [_jsx("strong", { children: "\u77E5\u8BC6\u5E93" }), _jsxs("small", { children: ["\u5F53\u524D\u4F1A\u8BDD \u00B7 ", shortId(sessionId)] })] })] }), _jsxs("div", { className: "dsh-knowledge-activity-header-actions", children: [_jsx("button", { type: "button", className: "dsh-knowledge-activity-icon-button", "aria-label": "\u5728\u5B8C\u6574\u5DE5\u4F5C\u533A\u4E2D\u6253\u5F00", title: "\u5B8C\u6574\u5DE5\u4F5C\u533A", onClick: openWorkspace, children: _jsx(IconFullscreenOutline16, { size: 16 }) }), _jsx("button", { type: "button", className: "dsh-knowledge-activity-icon-button", "aria-label": "\u5173\u95ED\u4F1A\u8BDD\u77E5\u8BC6\u5E93", title: "\u5173\u95ED", onClick: () => props.controller.close(sessionId), children: _jsx(IconCloseOutline16, { size: 16 }) })] })] }), _jsxs("nav", { className: "dsh-knowledge-activity-tabs", "aria-label": "\u77E5\u8BC6\u5E93\u5185\u5BB9\u7C7B\u578B", children: [_jsxs("button", { type: "button", className: mode === 'knowledge' ? 'is-active' : '', "aria-pressed": mode === 'knowledge', onClick: () => selectMode('knowledge'), children: [_jsx(IconDatabaseOutline16, { size: 15 }), "\u77E5\u8BC6\u6587\u6863"] }), _jsxs("button", { type: "button", className: mode === 'notes' ? 'is-active' : '', "aria-pressed": mode === 'notes', onClick: () => selectMode('notes'), children: [_jsx(IconDataOutline16, { size: 15 }), "\u7B14\u8BB0\u6587\u6863"] })] }), mode === 'notes'
199
+ ? _jsx(KnowledgeActivityNotes, { sessionId: sessionId, projectId: projectId, controller: props.controller })
200
+ : selectedDocumentId === undefined
201
+ ? _jsxs("div", { className: "dsh-knowledge-activity-browser", children: [_jsxs("form", { className: "dsh-knowledge-activity-search", role: "search", onSubmit: submitSearch, children: [_jsx(IconSearchOutline16, { size: 16, "aria-hidden": "true" }), _jsx("input", { "aria-label": "\u641C\u7D22\u5F53\u524D\u4F1A\u8BDD\u77E5\u8BC6\u6587\u6863", value: queryInput, placeholder: "\u641C\u7D22\u5DF2\u6302\u8F7D\u77E5\u8BC6\u2026", onChange: event => setQueryInput(event.target.value) }), queryInput && _jsx("button", { type: "button", onClick: clearSearch, "aria-label": "\u6E05\u9664\u641C\u7D22", children: _jsx(IconCloseOutline16, { size: 14 }) })] }), mountState === 'loading' ? _jsx(ActivityState, { label: "\u6B63\u5728\u8BFB\u53D6\u4F1A\u8BDD\u6302\u8F7D\u2026" })
202
+ : mountState === 'error' ? _jsx(ActivityError, { message: error, onRetry: () => { void refreshMounts(); } })
203
+ : mounts.length === 0 ? _jsx(ActivityEmpty, { title: "\u5F53\u524D\u4F1A\u8BDD\u6CA1\u6709\u6302\u8F7D\u77E5\u8BC6\u5E93", description: "\u5728\u5B8C\u6574\u5DE5\u4F5C\u533A\u4E2D\u6302\u8F7D\u540E\uFF0C\u5C31\u80FD\u5728\u8FD9\u91CC\u968F\u624B\u67E5\u9605\u6587\u6863\u3002" })
204
+ : _jsxs(_Fragment, { children: [_jsxs("div", { ref: scopeRef, className: "dsh-knowledge-activity-scope", children: [_jsxs("button", { type: "button", className: "dsh-knowledge-activity-scope-trigger", "aria-haspopup": "listbox", "aria-expanded": baseMenuOpen, onClick: () => setBaseMenuOpen(value => !value), children: [_jsx("span", { className: "dsh-knowledge-activity-scope-icon", children: _jsx(IconDatabaseOutline16, { size: 15 }) }), _jsxs("span", { children: [_jsx("small", { children: "\u5F53\u524D\u77E5\u8BC6\u5E93" }), _jsx("strong", { children: mounts.find(item => item.knowledgeBaseId === selectedBaseId)?.base.name })] }), _jsx(IconChevronDownOutline14, { size: 14, className: baseMenuOpen ? 'is-open' : '' })] }), baseMenuOpen && _jsx("div", { className: "dsh-knowledge-activity-scope-menu", role: "listbox", "aria-label": "\u5207\u6362\u77E5\u8BC6\u5E93", children: mounts.map(mount => _jsxs("button", { type: "button", role: "option", "aria-selected": selectedBaseId === mount.knowledgeBaseId, className: selectedBaseId === mount.knowledgeBaseId ? 'is-active' : '', onClick: () => selectBase(mount.knowledgeBaseId), children: [_jsx(IconDataOutline16, { size: 15 }), _jsxs("span", { children: [_jsx("strong", { children: mount.base.name }), _jsx("small", { children: mount.inheritedFrom === 'project' ? '项目挂载' : '会话挂载' })] })] }, mount.knowledgeBaseId)) })] }), _jsxs("div", { className: "dsh-knowledge-activity-list-heading", children: [_jsxs("span", { children: [_jsx("strong", { children: query ? `“${query}” 的结果` : '知识文档' }), _jsx("small", { children: query ? '搜索全部已挂载知识库' : `当前显示 ${documents.length} 项` })] }), _jsx("button", { type: "button", className: "dsh-knowledge-activity-icon-button", "aria-label": "\u5237\u65B0\u6587\u6863", title: "\u5237\u65B0", onClick: () => { void loadIndex(); }, children: _jsx(IconRefreshOutline14, { size: 14 }) })] }), _jsx("div", { className: "dsh-knowledge-activity-list", "aria-busy": listState === 'loading', children: listState === 'loading' && documents.length === 0 ? _jsx(ActivityState, { label: "\u6B63\u5728\u8BFB\u53D6\u6587\u6863\u2026" })
205
+ : listState === 'error' ? _jsx(ActivityError, { message: error, onRetry: () => { void loadIndex(); } })
206
+ : documents.length === 0 ? _jsx(ActivityEmpty, { title: query ? '没有找到相关文档' : '这里还没有知识文档', description: query ? '换个关键词,或清除搜索后浏览目录。' : '审核通过或直接回写的知识会出现在这里。' })
207
+ : _jsxs(_Fragment, { children: [documents.map(document => _jsx(DocumentRow, { document: document, baseName: query ? mounts.find(item => item.knowledgeBaseId === document.knowledgeBaseId)?.base.name : undefined, onClick: () => selectDocument(document) }, document.id)), nextCursor && _jsx("button", { type: "button", className: "dsh-knowledge-activity-load-more", disabled: listState === 'loading', onClick: () => { void loadIndex(nextCursor, true); }, children: listState === 'loading' ? '正在加载…' : '加载更多' })] }) })] })] })
208
+ : _jsx(DocumentReader, { value: documentValue, state: documentState, error: error, onBack: closeDocument, onRetry: () => setDocumentRefresh(value => value + 1) })] });
209
+ }
210
+ function DocumentRow({ document, baseName, onClick }) {
211
+ const stateLabel = document.documentState === 'resolved' ? '已解决' : document.documentState === 'complete' ? '已完成' : undefined;
212
+ return _jsxs("button", { type: "button", className: "dsh-knowledge-activity-row", onClick: onClick, children: [_jsx("span", { className: "dsh-knowledge-activity-row-icon", children: _jsx(IconDataOutline16, { size: 16 }) }), _jsxs("span", { className: "dsh-knowledge-activity-row-copy", children: [_jsx("strong", { children: document.title }), _jsx("small", { children: baseName ? `${baseName} · ${document.relPath}` : document.relPath })] }), _jsxs("span", { className: "dsh-knowledge-activity-row-meta", children: [stateLabel && _jsx("em", { children: stateLabel }), _jsx("time", { dateTime: document.updatedAt, children: formatDate(document.updatedAt) })] })] });
213
+ }
214
+ function DocumentReader({ value, state, error, onBack, onRetry }) {
215
+ const html = useMemo(() => value === undefined ? '' : renderMarkdown(readableMarkdown(value.content)), [value]);
216
+ return _jsxs("div", { className: "dsh-knowledge-activity-reader", children: [_jsxs("div", { className: "dsh-knowledge-activity-reader-bar", children: [_jsxs("button", { type: "button", className: "dsh-knowledge-activity-back", onClick: onBack, children: [_jsx(IconChevronLeftOutline14, { size: 14 }), "\u6587\u6863\u76EE\u5F55"] }), value && _jsxs("span", { children: [formatDate(value.updatedAt), " \u66F4\u65B0"] })] }), state === 'loading' ? _jsx(ActivityState, { label: "\u6B63\u5728\u6253\u5F00\u6587\u6863\u2026" })
217
+ : state === 'error' ? _jsx(ActivityError, { message: error, onRetry: onRetry })
218
+ : value === undefined ? _jsx(ActivityState, { label: "\u6B63\u5728\u51C6\u5907\u6587\u6863\u2026" })
219
+ : _jsxs(_Fragment, { children: [_jsxs("div", { className: "dsh-knowledge-activity-document-heading", children: [_jsx("span", { className: "dsh-knowledge-activity-document-icon", children: _jsx(IconDataOutline16, { size: 18 }) }), _jsxs("div", { children: [_jsx("h2", { children: value.title }), _jsx("p", { children: value.relPath })] })] }), _jsx("article", { className: "dsh-knowledge-activity-markdown", dangerouslySetInnerHTML: { __html: html } })] })] });
220
+ }
221
+ function ActivityState({ label }) {
222
+ return _jsxs("p", { className: "dsh-knowledge-activity-state", role: "status", children: [_jsx("span", { "aria-hidden": "true" }), label] });
223
+ }
224
+ function ActivityError({ message, onRetry }) {
225
+ return _jsxs("div", { className: "dsh-knowledge-activity-error", role: "alert", children: [_jsx("strong", { children: "\u6682\u65F6\u65E0\u6CD5\u8BFB\u53D6" }), _jsx("p", { children: message }), _jsx("button", { type: "button", onClick: onRetry, children: "\u91CD\u8BD5" })] });
226
+ }
227
+ function ActivityEmpty({ title, description }) {
228
+ return _jsxs("div", { className: "dsh-knowledge-activity-empty", children: [_jsx("span", { children: _jsx(IconDatabaseOutline16, { size: 20 }) }), _jsx("strong", { children: title }), _jsx("p", { children: description })] });
229
+ }
230
+ function readableMarkdown(value) {
231
+ return value.replace(/^---\s*\n[\s\S]*?\n---\s*\n*/u, '').replace(/^#\s+[^\n]+\n*/u, '');
232
+ }
233
+ function shortId(value) {
234
+ return value.length <= 12 ? value : `${value.slice(0, 7)}…${value.slice(-5)}`;
235
+ }
236
+ function formatDate(value) {
237
+ const date = new Date(value);
238
+ if (Number.isNaN(date.getTime()))
239
+ return '未知时间';
240
+ return new Intl.DateTimeFormat('zh-CN', { month: '2-digit', day: '2-digit' }).format(date);
241
+ }
242
+ function message(reason) {
243
+ return reason instanceof Error ? reason.message : String(reason);
244
+ }
245
+ //# sourceMappingURL=knowledge-activity-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-activity-panel.js","sourceRoot":"","sources":["../src/knowledge-activity-panel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { KnowledgeActivityController } from './knowledge-activity-controller.js';
3
+ /** Expand the requested host column once, then reveal our reader with a transform.
4
+ * Avoid reflowing the conversation on every opening frame. No host styles or
5
+ * transition settings are changed; only the in-flight column transition finishes.
6
+ * Closing retains a stable reader width until the host releases the column.
7
+ */
8
+ export declare function KnowledgeActivityPresentation({ controller, sessionId, onClosed, children }: {
9
+ controller: KnowledgeActivityController;
10
+ sessionId: string;
11
+ onClosed(): void;
12
+ children: ReactNode;
13
+ }): JSX.Element;
14
+ //# sourceMappingURL=knowledge-activity-presentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-activity-presentation.d.ts","sourceRoot":"","sources":["../src/knowledge-activity-presentation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AACrF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAA;AAErF;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;IAC3F,UAAU,EAAE,2BAA2B,CAAA;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,IAAI,IAAI,CAAA;IAChB,QAAQ,EAAE,SAAS,CAAA;CACpB,GAAG,GAAG,CAAC,OAAO,CA4Dd"}
@@ -0,0 +1,77 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useLayoutEffect, useRef, useSyncExternalStore } from 'react';
3
+ /** Expand the requested host column once, then reveal our reader with a transform.
4
+ * Avoid reflowing the conversation on every opening frame. No host styles or
5
+ * transition settings are changed; only the in-flight column transition finishes.
6
+ * Closing retains a stable reader width until the host releases the column.
7
+ */
8
+ export function KnowledgeActivityPresentation({ controller, sessionId, onClosed, children }) {
9
+ const root = useRef(null);
10
+ const open = useSyncExternalStore(controller.subscribe, () => controller.isOpen(sessionId));
11
+ useLayoutEffect(() => {
12
+ const viewport = root.current;
13
+ const panel = viewport?.firstElementChild;
14
+ if (!viewport || !panel)
15
+ return;
16
+ let cancelled = false;
17
+ let timeout;
18
+ let reveal;
19
+ const width = panel.getBoundingClientRect().width;
20
+ panel.style.width = `${width > 1 ? width : 360}px`;
21
+ viewport.toggleAttribute('inert', !open);
22
+ const settle = () => {
23
+ if (cancelled)
24
+ return;
25
+ cancelled = true;
26
+ if (timeout !== undefined)
27
+ clearTimeout(timeout);
28
+ reveal?.cancel();
29
+ panel.style.removeProperty('width');
30
+ if (!open)
31
+ onClosed();
32
+ };
33
+ const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
34
+ if (!open && reducedMotion) {
35
+ settle();
36
+ return;
37
+ }
38
+ const frame = requestAnimationFrame(() => {
39
+ const transitions = [];
40
+ for (let parent = viewport.parentElement; parent; parent = parent.parentElement) {
41
+ for (const animation of parent.getAnimations()) {
42
+ if ('transitionProperty' in animation && animation.transitionProperty === 'grid-template-columns')
43
+ transitions.push(animation);
44
+ }
45
+ if (transitions.length > 0)
46
+ break;
47
+ }
48
+ if (open && transitions.length > 0) {
49
+ // These are the ancestor column transitions initiated by openDetails().
50
+ // Do not alter unrelated animations, other slots, or future transitions.
51
+ for (const transition of transitions)
52
+ transition.finish();
53
+ panel.style.removeProperty('width');
54
+ if (!reducedMotion) {
55
+ reveal = panel.animate([
56
+ { transform: 'translateX(100%)' },
57
+ { transform: 'translateX(0)' },
58
+ ], { duration: 180, easing: 'cubic-bezier(.22, 1, .36, 1)' });
59
+ }
60
+ }
61
+ // A bounded fallback covers detached/cancelled host transitions. It is not
62
+ // a fixed delay: no-motion layouts settle in the first animation frame.
63
+ timeout = setTimeout(settle, 1000);
64
+ void Promise.allSettled((reveal ? [reveal] : transitions).map(animation => animation.finished)).then(settle);
65
+ });
66
+ return () => {
67
+ cancelled = true;
68
+ cancelAnimationFrame(frame);
69
+ if (timeout !== undefined)
70
+ clearTimeout(timeout);
71
+ reveal?.cancel();
72
+ panel.style.removeProperty('width');
73
+ };
74
+ }, [open, onClosed]);
75
+ return _jsx("div", { ref: root, className: "dsh-knowledge-activity-viewport", "aria-hidden": !open || undefined, children: children });
76
+ }
77
+ //# sourceMappingURL=knowledge-activity-presentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-activity-presentation.js","sourceRoot":"","sources":["../src/knowledge-activity-presentation.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { SessionListState } from '@deepseek-ai/dsh-api-session-controller/client';
2
+ /** DSH reserves the details column only for a loaded, non-blank session. */
3
+ export declare function availableActivitySession(state: Pick<SessionListState, 'current' | 'byId'>): string | undefined;
4
+ export interface KnowledgeActivitySelection {
5
+ mode?: 'knowledge' | 'notes';
6
+ knowledgeBaseId?: string | undefined;
7
+ documentId?: string | undefined;
8
+ noteFolderId?: string | null | undefined;
9
+ noteDocumentId?: string | undefined;
10
+ noteCrumbs?: {
11
+ id: string | null;
12
+ name: string;
13
+ }[];
14
+ }
15
+ /** A base change cannot carry the previous base's document into the next view. */
16
+ export declare function mergeActivitySelection(previous: KnowledgeActivitySelection, next: KnowledgeActivitySelection): KnowledgeActivitySelection;
17
+ //# sourceMappingURL=knowledge-activity-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-activity-state.d.ts","sourceRoot":"","sources":["../src/knowledge-activity-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAA;AAEtF,4EAA4E;AAC5E,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAG9G;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAA;IAC5B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IACxC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,UAAU,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACnD;AAED,kFAAkF;AAClF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,0BAA0B,EAAE,IAAI,EAAE,0BAA0B,GAAG,0BAA0B,CAMzI"}
@@ -0,0 +1,14 @@
1
+ /** DSH reserves the details column only for a loaded, non-blank session. */
2
+ export function availableActivitySession(state) {
3
+ const current = state.current;
4
+ return current !== undefined && state.byId[current]?.blank === false ? String(current) : undefined;
5
+ }
6
+ /** A base change cannot carry the previous base's document into the next view. */
7
+ export function mergeActivitySelection(previous, next) {
8
+ const merged = { ...previous, ...next };
9
+ if ('knowledgeBaseId' in next && next.knowledgeBaseId !== previous.knowledgeBaseId && !('documentId' in next)) {
10
+ merged.documentId = undefined;
11
+ }
12
+ return merged;
13
+ }
14
+ //# sourceMappingURL=knowledge-activity-state.js.map