@lemoncat7/dsh-knowledge 2.9.4 → 2.9.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 +4 -0
- package/docs/architecture.md +6 -0
- package/docs/dsh-015-compatibility.md +21 -0
- package/docs/releases/2.9.5.md +11 -0
- package/docs/releases/2.9.6.md +12 -0
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +14 -0
- package/lib/api.js.map +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +298 -100
- package/lib/client.js.map +4 -4
- package/lib/docked-panel-compat.d.ts +13 -0
- package/lib/docked-panel-compat.d.ts.map +1 -0
- package/lib/docked-panel-compat.js +116 -0
- package/lib/docked-panel-compat.js.map +1 -0
- package/lib/knowledge-activity-controller.d.ts.map +1 -1
- package/lib/knowledge-activity-controller.js +36 -0
- package/lib/knowledge-activity-controller.js.map +1 -1
- package/lib/knowledge-activity-state.d.ts +2 -2
- package/lib/knowledge-activity-state.d.ts.map +1 -1
- package/lib/knowledge-activity-state.js +5 -3
- package/lib/knowledge-activity-state.js.map +1 -1
- package/lib/local-provider.d.ts +3 -0
- package/lib/local-provider.d.ts.map +1 -1
- package/lib/local-provider.js +50 -0
- package/lib/local-provider.js.map +1 -1
- package/lib/main-panel-compat.d.ts +5 -0
- package/lib/main-panel-compat.d.ts.map +1 -0
- package/lib/main-panel-compat.js +38 -0
- package/lib/main-panel-compat.js.map +1 -0
- package/lib/note-excerpt.d.ts +12 -0
- package/lib/note-excerpt.d.ts.map +1 -0
- package/lib/note-excerpt.js +9 -0
- package/lib/note-excerpt.js.map +1 -0
- package/lib/web-note-editor-chrome.d.ts +1 -0
- package/lib/web-note-editor-chrome.d.ts.map +1 -1
- package/lib/web-note-editor-chrome.js +1 -0
- package/lib/web-note-editor-chrome.js.map +1 -1
- package/lib/web-note-editor-selection.d.ts +1 -0
- package/lib/web-note-editor-selection.d.ts.map +1 -1
- package/lib/web-note-editor-selection.js +21 -1
- package/lib/web-note-editor-selection.js.map +1 -1
- package/lib/web-note-editor.d.ts +2 -0
- package/lib/web-note-editor.d.ts.map +1 -1
- package/lib/web-note-editor.js +12 -0
- package/lib/web-note-editor.js.map +1 -1
- package/lib/web.d.ts.map +1 -1
- package/lib/web.js +1 -0
- package/lib/web.js.map +1 -1
- package/package.json +1 -1
- package/web/app.js +13 -0
- package/web/note-editor.js +57 -56
- package/web/note-excerpt.js +118 -0
- package/web/styles.css +6 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
3
|
+
type PanelProps = PropsRuntime<'details'>;
|
|
4
|
+
/** The new host owns session persistence, docking and tab closure. */
|
|
5
|
+
export declare function supportsDockedPanels(ctx: Context): boolean;
|
|
6
|
+
export declare function createDockedPanel(ctx: Context, id: string, title: string, render: (props: PanelProps) => JSX.Element, notify: () => void): {
|
|
7
|
+
open(sessionId: string): void;
|
|
8
|
+
close(sessionId: string): void;
|
|
9
|
+
isOpen(sessionId: string): boolean;
|
|
10
|
+
dispose(): void;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=docked-panel-compat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docked-panel-compat.d.ts","sourceRoot":"","sources":["../src/docked-panel-compat.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAGpE,KAAK,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;AAMzC,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAE1D;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,OAAO,EACZ,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,GAAG,CAAC,OAAO,EAC1C,MAAM,EAAE,MAAM,IAAI;oBAkDA,MAAM,GAAG,IAAI;qBAwBZ,MAAM,GAAG,IAAI;sBAMZ,MAAM,GAAG,OAAO;eAGvB,IAAI;EAQlB"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
/** The new host owns session persistence, docking and tab closure. */
|
|
3
|
+
export function supportsDockedPanels(ctx) {
|
|
4
|
+
return typeof ctx.layout.selectPanel === 'function';
|
|
5
|
+
}
|
|
6
|
+
export function createDockedPanel(ctx, id, title, render, notify) {
|
|
7
|
+
const records = new Map();
|
|
8
|
+
let pending;
|
|
9
|
+
let frame;
|
|
10
|
+
let disposed = false;
|
|
11
|
+
let sidebar;
|
|
12
|
+
const cancel = () => {
|
|
13
|
+
if (frame !== undefined)
|
|
14
|
+
window.cancelAnimationFrame(frame);
|
|
15
|
+
frame = undefined;
|
|
16
|
+
pending = undefined;
|
|
17
|
+
};
|
|
18
|
+
function Body(props) {
|
|
19
|
+
const { tab } = props.useTabInfo();
|
|
20
|
+
const sessionId = String(props.sessionId);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
let entries = records.get(sessionId);
|
|
23
|
+
if (entries === undefined) {
|
|
24
|
+
entries = new Map();
|
|
25
|
+
records.set(sessionId, entries);
|
|
26
|
+
}
|
|
27
|
+
const entry = { visible: tab.visible, close: () => tab.actions.close() };
|
|
28
|
+
entries.set(tab.id, entry);
|
|
29
|
+
const remove = () => {
|
|
30
|
+
if (entries?.get(tab.id) !== entry)
|
|
31
|
+
return;
|
|
32
|
+
entries.delete(tab.id);
|
|
33
|
+
if (entries.size === 0)
|
|
34
|
+
records.delete(sessionId);
|
|
35
|
+
notify();
|
|
36
|
+
};
|
|
37
|
+
tab.signal.addEventListener('abort', remove, { once: true });
|
|
38
|
+
notify();
|
|
39
|
+
return () => {
|
|
40
|
+
tab.signal.removeEventListener('abort', remove);
|
|
41
|
+
remove();
|
|
42
|
+
};
|
|
43
|
+
}, [sessionId, tab.id, tab.visible, tab.signal]);
|
|
44
|
+
// Hidden tabs must not keep terminal polling and document fetching alive.
|
|
45
|
+
return tab.visible ? render(props) : null;
|
|
46
|
+
}
|
|
47
|
+
const fiber = ctx.inject(['sidebarRight', 'sidebarRightTabs'], child => {
|
|
48
|
+
sidebar = child.get('sidebarRight');
|
|
49
|
+
const registry = child.get('sidebarRightTabs');
|
|
50
|
+
const slots = child.slots;
|
|
51
|
+
child.effect(() => registry.register({ id, kind: id, title: () => title }), id + ': tab type');
|
|
52
|
+
child.effect(() => slots.inject('sidebar.right.pane.tab', () => slots.register({
|
|
53
|
+
name: 'sidebar.right.pane.tab', key: id,
|
|
54
|
+
}, Body)), id + ': tab body');
|
|
55
|
+
child.effect(() => () => { sidebar = undefined; }, id + ': tab service');
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
open(sessionId) {
|
|
59
|
+
cancel();
|
|
60
|
+
pending = sessionId;
|
|
61
|
+
// Closing a main panel remounts the conversation seat on the next commit.
|
|
62
|
+
// Do not issue a right-tab command against a stale/unmounted seat.
|
|
63
|
+
let attempts = 0;
|
|
64
|
+
const reveal = () => {
|
|
65
|
+
frame = undefined;
|
|
66
|
+
if (disposed || pending !== sessionId)
|
|
67
|
+
return;
|
|
68
|
+
const sessions = ctx.get('sessions');
|
|
69
|
+
if (String(sessions.list.getSnapshot().current) !== sessionId) {
|
|
70
|
+
cancel();
|
|
71
|
+
notify();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
if (sidebar === undefined)
|
|
76
|
+
throw new Error('Right sidebar is not ready');
|
|
77
|
+
sidebar.openTab(id);
|
|
78
|
+
pending = undefined;
|
|
79
|
+
notify();
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (++attempts < 30)
|
|
83
|
+
frame = window.requestAnimationFrame(reveal);
|
|
84
|
+
else {
|
|
85
|
+
cancel();
|
|
86
|
+
notify();
|
|
87
|
+
console.error(title + ': could not open sidebar', error);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
frame = window.requestAnimationFrame(reveal);
|
|
92
|
+
notify();
|
|
93
|
+
},
|
|
94
|
+
close(sessionId) {
|
|
95
|
+
if (pending === sessionId)
|
|
96
|
+
cancel();
|
|
97
|
+
for (const entry of [...(records.get(sessionId)?.values() ?? [])])
|
|
98
|
+
entry.close();
|
|
99
|
+
records.delete(sessionId);
|
|
100
|
+
notify();
|
|
101
|
+
},
|
|
102
|
+
isOpen(sessionId) {
|
|
103
|
+
return pending === sessionId || [...(records.get(sessionId)?.values() ?? [])].some(entry => entry.visible);
|
|
104
|
+
},
|
|
105
|
+
dispose() {
|
|
106
|
+
disposed = true;
|
|
107
|
+
cancel();
|
|
108
|
+
for (const entries of records.values())
|
|
109
|
+
for (const entry of [...entries.values()])
|
|
110
|
+
entry.close();
|
|
111
|
+
records.clear();
|
|
112
|
+
void fiber.dispose();
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=docked-panel-compat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docked-panel-compat.js","sourceRoot":"","sources":["../src/docked-panel-compat.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-activity-controller.d.ts","sourceRoot":"","sources":["../src/knowledge-activity-controller.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAInE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"knowledge-activity-controller.d.ts","sourceRoot":"","sources":["../src/knowledge-activity-controller.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAInE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAG1D,YAAY,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC/E,OAAO,EAA0B,KAAK,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAEvG,MAAM,WAAW,2BAA2B;IAC1C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAA;IACrE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACpD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IAClC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,0BAA0B,CAAA;IACxD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,0BAA0B,GAAG,IAAI,CAAA;IACtE,aAAa,CAAC,MAAM,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAA;IACrD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE;IACP,UAAU,IAAI,IAAI,CAAA;IAClB,aAAa,CAAC,MAAM,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAA;CACtD,GACA,2BAA2B,CA2H7B"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { KnowledgeActivityPanel } from './knowledge-activity-panel.js';
|
|
3
3
|
import { KnowledgeActivityPresentation } from './knowledge-activity-presentation.js';
|
|
4
|
+
import { createDockedPanel, supportsDockedPanels } from './docked-panel-compat.js';
|
|
4
5
|
import { mergeActivitySelection } from './knowledge-activity-state.js';
|
|
5
6
|
export function createKnowledgeActivityController(ctx, options) {
|
|
7
|
+
if (supportsDockedPanels(ctx))
|
|
8
|
+
return createDockedKnowledgeController(ctx, options);
|
|
6
9
|
const runtime = ctx;
|
|
7
10
|
const listeners = new Set();
|
|
8
11
|
const states = new Map();
|
|
@@ -135,4 +138,37 @@ export function createKnowledgeActivityController(ctx, options) {
|
|
|
135
138
|
function normalizeSessionId(value) {
|
|
136
139
|
return typeof value === 'string' && value.length > 0 ? value : undefined;
|
|
137
140
|
}
|
|
141
|
+
/** New hosts persist right-hand tabs per session; do not remount a global details slot. */
|
|
142
|
+
function createDockedKnowledgeController(ctx, options) {
|
|
143
|
+
const selections = new Map();
|
|
144
|
+
const listeners = new Set();
|
|
145
|
+
const notify = () => { for (const listener of listeners)
|
|
146
|
+
listener(); };
|
|
147
|
+
const current = () => normalizeSessionId(ctx.sessions.list.getSnapshot().current);
|
|
148
|
+
const panel = createDockedPanel(ctx, '@lemoncat7/dsh-knowledge/activity', '知识库', props => _jsx(KnowledgeActivityPanel, { ...props, controller: controller }), notify);
|
|
149
|
+
const controller = {
|
|
150
|
+
open(sessionId, selection) {
|
|
151
|
+
if (selection !== undefined)
|
|
152
|
+
controller.select(sessionId, selection);
|
|
153
|
+
options.beforeOpen();
|
|
154
|
+
panel.open(sessionId);
|
|
155
|
+
},
|
|
156
|
+
toggle(sessionId) { if (panel.isOpen(sessionId))
|
|
157
|
+
controller.close(sessionId);
|
|
158
|
+
else
|
|
159
|
+
controller.open(sessionId); },
|
|
160
|
+
close(sessionId) { const target = sessionId ?? current(); if (target !== undefined)
|
|
161
|
+
panel.close(target); },
|
|
162
|
+
isOpen: panel.isOpen,
|
|
163
|
+
selection: sessionId => selections.get(sessionId) ?? {},
|
|
164
|
+
select(sessionId, selection) {
|
|
165
|
+
selections.set(sessionId, mergeActivitySelection(selections.get(sessionId) ?? {}, selection));
|
|
166
|
+
notify();
|
|
167
|
+
},
|
|
168
|
+
openWorkspace(target) { controller.close(); options.openWorkspace(target); },
|
|
169
|
+
subscribe(listener) { listeners.add(listener); return () => { listeners.delete(listener); }; },
|
|
170
|
+
dispose() { panel.dispose(); selections.clear(); listeners.clear(); },
|
|
171
|
+
};
|
|
172
|
+
return controller;
|
|
173
|
+
}
|
|
138
174
|
//# sourceMappingURL=knowledge-activity-controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-activity-controller.js","sourceRoot":"","sources":["../src/knowledge-activity-controller.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAA;
|
|
1
|
+
{"version":3,"file":"knowledge-activity-controller.js","sourceRoot":"","sources":["../src/knowledge-activity-controller.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAA;AAEpF,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AAGlF,OAAO,EAAE,sBAAsB,EAAmC,MAAM,+BAA+B,CAAA;AAcvG,MAAM,UAAU,iCAAiC,CAC/C,GAAkB,EAClB,OAGC;IAED,IAAI,oBAAoB,CAAC,GAAG,CAAC;QAAE,OAAO,+BAA+B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACnF,MAAM,OAAO,GAAG,GAAyC,CAAA;IACzD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAA;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0D,CAAA;IAChF,IAAI,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAA;IACtF,IAAI,gBAAoC,CAAA;IACxC,IAAI,YAAgC,CAAA;IACpC,IAAI,YAAsC,CAAA;IAE1C,MAAM,MAAM,GAAG,GAAS,EAAE,GAAG,KAAK,MAAM,QAAQ,IAAI,SAAS;QAAE,QAAQ,EAAE,CAAA,CAAC,CAAC,CAAA;IAC3E,MAAM,aAAa,GAAG,GAAS,EAAE;QAC/B,IAAI,YAAY,KAAK,SAAS;YAAE,OAAM;QACtC,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;QACzC,YAAY,GAAG,SAAS,CAAA;IAC1B,CAAC,CAAA;IACD,MAAM,OAAO,GAAG,GAAY,EAAE;QAC5B,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QAC5C,MAAM,OAAO,GAAG,YAAY,CAAA;QAC5B,YAAY,GAAG,SAAS,CAAA;QACxB,gBAAgB,GAAG,SAAS,CAAA;QAC5B,OAAO,EAAE,CAAA;QACT,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IACD,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAE,WAAW,GAAG,IAAI,EAAQ,EAAE;QAC5D,IAAI,gBAAgB,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YACjE,IAAI,WAAW;gBAAE,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;YACzC,OAAM;QACR,CAAC;QACD,OAAO,EAAE,CAAA;QACT,gBAAgB,GAAG,SAAS,CAAA;QAC5B,MAAM,QAAQ,GAAG,GAAS,EAAE;YAC1B,IAAI,gBAAgB,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,KAAK,IAAI;gBAAE,OAAO,EAAE,CAAA;QACvF,CAAC,CAAA;QACD,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAC5E,KAAC,6BAA6B,IAAiB,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,YAC7G,KAAC,sBAAsB,OAAK,KAAK,EAAE,UAAU,EAAE,UAAU,GAAI,IAD3B,SAAS,CAEb,CACjC,CAAC,CAAA;QACF,IAAI,WAAW;YAAE,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;IAC3C,CAAC,CAAA;IACD,MAAM,kBAAkB,GAAG,GAAS,EAAE;QACpC,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAA;QACrF,IAAI,aAAa,KAAK,gBAAgB;YAAE,OAAM;QAC9C,aAAa,EAAE,CAAA;QACf,MAAM,UAAU,GAAG,OAAO,EAAE,CAAA;QAC5B,gBAAgB,GAAG,aAAa,CAAA;QAChC,IAAI,aAAa,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5E,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;YAC3B,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;gBAC/C,YAAY,GAAG,SAAS,CAAA;gBACxB,IAAI,gBAAgB,KAAK,aAAa,IAAI,gBAAgB,KAAK,aAAa,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;oBACzH,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,UAAU,EAAE,CAAC;YACtB,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC3B,CAAC;QACD,MAAM,EAAE,CAAA;IACV,CAAC,CAAA;IAED,MAAM,UAAU,GAAgC;QAC9C,IAAI,CAAC,SAAS,EAAE,SAAS;YACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACtC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,sBAAsB,CAAC,QAAQ,IAAI,EAAE,EAAE,SAAS,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YACjG,OAAO,CAAC,UAAU,EAAE,CAAA;YACpB,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;gBACnC,aAAa,EAAE,CAAA;gBACf,KAAK,CAAC,SAAS,CAAC,CAAA;YAClB,CAAC;YACD,MAAM,EAAE,CAAA;QACV,CAAC;QACD,MAAM,CAAC,SAAS;YACd,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,KAAK,IAAI;gBAAE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;;gBAChE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACjC,CAAC;QACD,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK;YAChC,MAAM,MAAM,GAAG,SAAS,IAAI,gBAAgB,CAAA;YAC5C,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAM;YAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;YACtD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YAChD,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;gBAChC,aAAa,EAAE,CAAA;gBACf,IAAI,gBAAgB,KAAK,MAAM;oBAAE,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;gBAC1D,IAAI,SAAS;oBAAE,OAAO,EAAE,CAAA;YAC1B,CAAC;YACD,MAAM,EAAE,CAAA;QACV,CAAC;QACD,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,KAAK,IAAI;QACzD,SAAS,CAAC,SAAS;YACjB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACnC,OAAO;gBACL,GAAG,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;gBACxD,GAAG,KAAK,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE;gBACzF,GAAG,KAAK,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;gBAC1E,GAAG,KAAK,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE;gBAChF,GAAG,KAAK,EAAE,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;gBACtF,GAAG,KAAK,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;aAC3E,CAAA;QACH,CAAC;QACD,MAAM,CAAC,SAAS,EAAE,SAAS;YACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;YACxD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;YAC9F,MAAM,EAAE,CAAA;QACV,CAAC;QACD,aAAa,CAAC,MAAM;YAClB,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YACjC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC/B,CAAC;QACD,SAAS,CAAC,QAAQ;YAChB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACvB,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,CAAA;QAC7C,CAAC;QACD,OAAO;YACL,gBAAgB,EAAE,CAAA;YAClB,aAAa,EAAE,CAAA;YACf,OAAO,EAAE,CAAA;YACT,MAAM,CAAC,KAAK,EAAE,CAAA;YACd,SAAS,CAAC,KAAK,EAAE,CAAA;QACnB,CAAC;KACF,CAAA;IACD,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;IAC5E,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1E,CAAC;AAED,2FAA2F;AAC3F,SAAS,+BAA+B,CACtC,GAAkB,EAClB,OAAsF;IAEtF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAsC,CAAA;IAChE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAA;IACvC,MAAM,MAAM,GAAG,GAAS,EAAE,GAAG,KAAK,MAAM,QAAQ,IAAI,SAAS;QAAE,QAAQ,EAAE,CAAA,CAAC,CAAC,CAAA;IAC3E,MAAM,OAAO,GAAG,GAAuB,EAAE,CAAC,kBAAkB,CAAE,GAAG,CAAC,QAAiC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAA;IAC/H,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,mCAAmC,EAAE,KAAK,EAC7E,KAAK,CAAC,EAAE,CAAC,KAAC,sBAAsB,OAAK,KAAK,EAAE,UAAU,EAAE,UAAU,GAAI,EAAE,MAAM,CAAC,CAAA;IACjF,MAAM,UAAU,GAAgC;QAC9C,IAAI,CAAC,SAAS,EAAE,SAAS;YACvB,IAAI,SAAS,KAAK,SAAS;gBAAE,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YACpE,OAAO,CAAC,UAAU,EAAE,CAAA;YACpB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACvB,CAAC;QACD,MAAM,CAAC,SAAS,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;YAAE,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;;YAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA,CAAC,CAAC;QAC/G,KAAK,CAAC,SAAS,IAAI,MAAM,MAAM,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC,IAAI,MAAM,KAAK,SAAS;YAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC;QACzG,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE;QACvD,MAAM,CAAC,SAAS,EAAE,SAAS;YACzB,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAA;YAC7F,MAAM,EAAE,CAAA;QACV,CAAC;QACD,aAAa,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC;QAC3E,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,CAAA,CAAC,CAAC;QAC5F,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC;KACrE,CAAA;IACD,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SessionListState } from '@deepseek-ai/dsh-api-session-controller/client';
|
|
2
|
-
/**
|
|
3
|
-
export declare function availableActivitySession(state: Pick<SessionListState, 'current' | 'byId'
|
|
2
|
+
/** Legacy details requires content; new docked tabs support a loaded blank session. */
|
|
3
|
+
export declare function availableActivitySession(state: Pick<SessionListState, 'current' | 'byId'>, docked?: boolean): string | undefined;
|
|
4
4
|
export interface KnowledgeActivitySelection {
|
|
5
5
|
mode?: 'knowledge' | 'notes';
|
|
6
6
|
knowledgeBaseId?: string | undefined;
|
|
@@ -1 +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,
|
|
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,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,MAAM,CAAC,EAAE,MAAM,UAAQ,GAAG,MAAM,GAAG,SAAS,CAI9H;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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
export function availableActivitySession(state) {
|
|
1
|
+
/** Legacy details requires content; new docked tabs support a loaded blank session. */
|
|
2
|
+
export function availableActivitySession(state, docked = false) {
|
|
3
3
|
const current = state.current;
|
|
4
|
-
|
|
4
|
+
if (current === undefined || state.byId[current] === undefined)
|
|
5
|
+
return undefined;
|
|
6
|
+
return docked || state.byId[current]?.blank === false ? String(current) : undefined;
|
|
5
7
|
}
|
|
6
8
|
/** A base change cannot carry the previous base's document into the next view. */
|
|
7
9
|
export function mergeActivitySelection(previous, next) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-activity-state.js","sourceRoot":"","sources":["../src/knowledge-activity-state.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"knowledge-activity-state.js","sourceRoot":"","sources":["../src/knowledge-activity-state.ts"],"names":[],"mappings":"AAEA,uFAAuF;AACvF,MAAM,UAAU,wBAAwB,CAAC,KAAiD,EAAE,MAAM,GAAG,KAAK;IACxG,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC7B,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IAChF,OAAO,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACrF,CAAC;AAWD,kFAAkF;AAClF,MAAM,UAAU,sBAAsB,CAAC,QAAoC,EAAE,IAAgC;IAC3G,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAA;IACvC,IAAI,iBAAiB,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,CAAC,eAAe,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE,CAAC;QAC9G,MAAM,CAAC,UAAU,GAAG,SAAS,CAAA;IAC/B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/lib/local-provider.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type NoteExcerptRequest } from './note-excerpt.js';
|
|
1
2
|
import { type CandidateProposal, type CandidateBatchReviewResult, type ApiTokenRecord, type ExtractionJobCompletion, type ExtractionJobRecord, type KnowledgeCandidate, type KnowledgeBase, type KnowledgeBaseDraft, type KnowledgeBasePatch, type KnowledgeDraft, type KnowledgeEntry, type KnowledgeDocument, type KnowledgeDocumentIndexRequest, type KnowledgeDocumentIndexResult, type KnowledgeStats, type KnowledgeVersion, type KnowledgeMount, type KnowledgeMountBatch, type KnowledgeMountBatchResult, type KnowledgeMountDraft, type KnowledgeMountTargetKind, type KnowledgeSettings, type KnowledgeSettingsPatch, type ResolvedKnowledgeMount, type DirectWriteResult, type ListRequest, type ListResult, type ReviewDecision, type SearchHit, type SearchRequest, type TokenPermission } from './domain.js';
|
|
2
3
|
import type { KnowledgeProvider } from './provider.js';
|
|
3
4
|
import { NoteStore } from './notes/store.js';
|
|
@@ -45,6 +46,8 @@ export declare class LocalKnowledgeProvider implements KnowledgeProvider {
|
|
|
45
46
|
entriesByIds(ids: string[]): KnowledgeEntry[];
|
|
46
47
|
versions(id: string): Promise<KnowledgeVersion[]>;
|
|
47
48
|
create(draft: KnowledgeDraft): Promise<KnowledgeEntry>;
|
|
49
|
+
/** Content, reference, and retry receipt share one SQLite transaction. */
|
|
50
|
+
excerptNote(input: NoteExcerptRequest): Promise<KnowledgeEntry>;
|
|
48
51
|
private insertEntry;
|
|
49
52
|
update(id: string, draft: KnowledgeDraft, _signal?: AbortSignal, expectedVersion?: number): Promise<KnowledgeEntry>;
|
|
50
53
|
finalize(id: string, state: 'resolved' | 'complete', note?: string): Promise<KnowledgeEntry>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-provider.d.ts","sourceRoot":"","sources":["../src/local-provider.ts"],"names":[],"mappings":"AAMA,OAAO,EAUL,KAAK,iBAAiB,EACtB,KAAK,0BAA0B,EAE/B,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EAGjC,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAOtD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAA;AAmB1B,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAS;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,MAAM,CAAQ;gBAEV,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"local-provider.d.ts","sourceRoot":"","sources":["../src/local-provider.ts"],"names":[],"mappings":"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"}
|
package/lib/local-provider.js
CHANGED
|
@@ -4,6 +4,7 @@ import { mkdirSync } from 'node:fs';
|
|
|
4
4
|
import { tmpdir } from 'node:os';
|
|
5
5
|
import { DatabaseSync } from 'node:sqlite';
|
|
6
6
|
import { migrateKnowledgeDatabase } from './storage/migrations.js';
|
|
7
|
+
import { noteExcerptMarkdown } from './note-excerpt.js';
|
|
7
8
|
import { contentHash, DEFAULT_KNOWLEDGE_BASE_ID, newId, normalizeDraft, normalizeKnowledgeBaseDraft, normalizeKnowledgeBaseGroup, normalizeKnowledgeMountDraft, normalizeKnowledgeSettings, nowIso, } from './domain.js';
|
|
8
9
|
import { markdownHash, renderKnowledgeMarkdown } from './documents/markdown.js';
|
|
9
10
|
import { knowledgeDocumentPath } from './documents/path.js';
|
|
@@ -44,6 +45,7 @@ export class LocalKnowledgeProvider {
|
|
|
44
45
|
this.db = new DatabaseSync(path);
|
|
45
46
|
this.db.exec('PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; PRAGMA busy_timeout = 5000;');
|
|
46
47
|
migrateKnowledgeDatabase(this.db, this.notes);
|
|
48
|
+
this.db.exec('CREATE TABLE IF NOT EXISTS note_excerpt_receipts (request_id TEXT PRIMARY KEY, input_hash TEXT NOT NULL, knowledge_id TEXT NOT NULL);');
|
|
47
49
|
this.db.exec('CREATE TABLE IF NOT EXISTS writeback_receipts (source_key TEXT NOT NULL, proposal_hash TEXT NOT NULL, result_json TEXT NOT NULL, PRIMARY KEY(source_key, proposal_hash));');
|
|
48
50
|
this.documentsReady = this.enqueueDocumentSync(() => this.syncAllDocuments());
|
|
49
51
|
}
|
|
@@ -613,6 +615,54 @@ export class LocalKnowledgeProvider {
|
|
|
613
615
|
await this.syncKnowledgeEntryQueued(entry.id);
|
|
614
616
|
return entry;
|
|
615
617
|
}
|
|
618
|
+
/** Content, reference, and retry receipt share one SQLite transaction. */
|
|
619
|
+
async excerptNote(input) {
|
|
620
|
+
this.assertOpen();
|
|
621
|
+
await this.documentsReady;
|
|
622
|
+
if (!/^[a-zA-Z0-9_-]{16,100}$/.test(input.requestId))
|
|
623
|
+
throw inputError('无效的摘录请求标识');
|
|
624
|
+
if (!/^note_[a-f0-9]{32}$/.test(input.noteId))
|
|
625
|
+
throw inputError('无效的来源笔记');
|
|
626
|
+
if (!input.text.trim() || input.text.length > 50_000)
|
|
627
|
+
throw inputError('请选择 1 到 50000 字的笔记内容');
|
|
628
|
+
const body = noteExcerptMarkdown(input.noteId, input.text);
|
|
629
|
+
const hash = createHash('sha256').update(JSON.stringify(input)).digest('hex');
|
|
630
|
+
const entry = this.transaction(() => {
|
|
631
|
+
const receipt = this.db.prepare('SELECT input_hash,knowledge_id FROM note_excerpt_receipts WHERE request_id=?').get(input.requestId);
|
|
632
|
+
if (receipt) {
|
|
633
|
+
if (receipt.input_hash !== hash)
|
|
634
|
+
throw conflict('本次摘录请求已提交,请重新打开摘录窗口');
|
|
635
|
+
const previous = this.entriesByIds([String(receipt.knowledge_id)])[0];
|
|
636
|
+
if (!previous)
|
|
637
|
+
throw conflict('已摘录的知识文档已删除,不会重复创建');
|
|
638
|
+
return previous;
|
|
639
|
+
}
|
|
640
|
+
const note = this.notes.get(input.noteId);
|
|
641
|
+
if (!note || note.kind === 'folder')
|
|
642
|
+
throw inputError('来源笔记已删除或不可用');
|
|
643
|
+
let result;
|
|
644
|
+
if (input.documentId) {
|
|
645
|
+
const current = this.entriesByIds([input.documentId])[0];
|
|
646
|
+
if (!current || current.knowledgeBaseId !== input.knowledgeBaseId)
|
|
647
|
+
throw conflict('目标知识文档不存在或已移动');
|
|
648
|
+
if (current.status !== 'active' || current.documentState !== 'open')
|
|
649
|
+
throw conflict('目标文档已归档或定稿,请选择可编辑的文档');
|
|
650
|
+
if (current.version !== input.expectedVersion)
|
|
651
|
+
throw conflict('目标文档已更新,请重新选择后确认摘录');
|
|
652
|
+
if (!this.db.prepare("SELECT id FROM knowledge_bases WHERE id=? AND status='active'").get(current.knowledgeBaseId))
|
|
653
|
+
throw conflict('目标知识库已归档');
|
|
654
|
+
result = this.updateEntry(current.id, { ...current, body: `${current.body.trimEnd()}\n\n${body}`.trim() }, 'update');
|
|
655
|
+
}
|
|
656
|
+
else {
|
|
657
|
+
result = this.insertEntry({ knowledgeBaseId: input.knowledgeBaseId, title: input.title?.trim() || note.name.replace(/\.md$/i, ''), body, type: 'fact', tags: [], scope: { kind: 'global' }, confidence: 0.8 });
|
|
658
|
+
}
|
|
659
|
+
this.db.prepare('INSERT OR IGNORE INTO knowledge_note_references(knowledge_id,note_id,source,source_session_id,created_at) VALUES(?,?,?,NULL,?)').run(result.id, note.id, 'user', nowIso());
|
|
660
|
+
this.db.prepare('INSERT INTO note_excerpt_receipts(request_id,input_hash,knowledge_id) VALUES(?,?,?)').run(input.requestId, hash, result.id);
|
|
661
|
+
return result;
|
|
662
|
+
});
|
|
663
|
+
await this.syncKnowledgeEntryQueued(entry.id);
|
|
664
|
+
return entry;
|
|
665
|
+
}
|
|
616
666
|
insertEntry(input) {
|
|
617
667
|
const draft = normalizeDraft(input);
|
|
618
668
|
if (this.db.prepare("SELECT id FROM knowledge_bases WHERE id=? AND status='active'").get(draft.knowledgeBaseId) === undefined) {
|