@lemoncat7/dsh-knowledge 2.6.0 → 2.7.0
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 +29 -1
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +15 -3
- package/lib/api.js.map +1 -1
- package/lib/client.d.ts +3 -0
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +102 -7
- package/lib/client.js.map +4 -4
- package/lib/extraction.d.ts.map +1 -1
- package/lib/extraction.js +1 -0
- package/lib/extraction.js.map +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +14 -1
- package/lib/index.js.map +1 -1
- package/lib/notes/share-import.d.ts +2 -0
- package/lib/notes/share-import.d.ts.map +1 -1
- package/lib/notes/share-import.js +40 -5
- package/lib/notes/share-import.js.map +1 -1
- package/lib/web.js +1 -1
- package/lib/web.js.map +1 -1
- package/lib/writeback/control.d.ts +5 -0
- package/lib/writeback/control.d.ts.map +1 -0
- package/lib/writeback/control.js +39 -0
- package/lib/writeback/control.js.map +1 -0
- package/lib/writeback/live-control.d.ts +5 -0
- package/lib/writeback/live-control.d.ts.map +1 -0
- package/lib/writeback/live-control.js +63 -0
- package/lib/writeback/live-control.js.map +1 -0
- package/lib/writeback/queue.d.ts +27 -1
- package/lib/writeback/queue.d.ts.map +1 -1
- package/lib/writeback/queue.js +97 -7
- package/lib/writeback/queue.js.map +1 -1
- package/lib/writeback/status-client.d.ts +3 -0
- package/lib/writeback/status-client.d.ts.map +1 -1
- package/lib/writeback/status-client.js +30 -4
- package/lib/writeback/status-client.js.map +1 -1
- package/package.json +1 -1
- package/web/api-client.js +2 -1
- package/web/app.js +42 -15
- package/web/styles.css +13 -8
- package/web/ui-primitives.js +1 -0
- package/web/writeback-live.d.ts +1 -0
- package/web/writeback-live.js +52 -0
- package/web/writeback-workspace.js +76 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { RuntimeContextLike } from '../runtime.js';
|
|
2
|
+
import type { WritebackQueue } from './queue.js';
|
|
3
|
+
/** The outbox belongs to this DSH instance, never the remote knowledge provider. */
|
|
4
|
+
export declare function registerWritebackControl(ctx: RuntimeContextLike, queue: WritebackQueue | undefined): (() => void) | undefined;
|
|
5
|
+
//# sourceMappingURL=control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.d.ts","sourceRoot":"","sources":["../../src/writeback/control.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,oFAAoF;AACpF,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,GAAG,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CA0B7H"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { assertKnowledgeBrowserRequest } from '../api.js';
|
|
2
|
+
/** The outbox belongs to this DSH instance, never the remote knowledge provider. */
|
|
3
|
+
export function registerWritebackControl(ctx, queue) {
|
|
4
|
+
return ctx.webServer?.register({
|
|
5
|
+
kind: 'exact', path: '/knowledge-control/v1/writeback-jobs',
|
|
6
|
+
handler(req, res) {
|
|
7
|
+
try {
|
|
8
|
+
assertKnowledgeBrowserRequest(req, 'management-web');
|
|
9
|
+
if (!queue)
|
|
10
|
+
throw Object.assign(new Error('知识库回写已停用'), { status: 409 });
|
|
11
|
+
const url = new URL(req.url ?? '/', 'http://localhost');
|
|
12
|
+
let result;
|
|
13
|
+
if (req.method === 'GET') {
|
|
14
|
+
const offset = Number(url.searchParams.get('offset') ?? 0);
|
|
15
|
+
if (!Number.isSafeInteger(offset) || offset < 0)
|
|
16
|
+
throw Object.assign(new Error('无效分页参数'), { status: 400 });
|
|
17
|
+
result = queue.list(url.searchParams.get('sessionId')?.trim(), offset);
|
|
18
|
+
}
|
|
19
|
+
else if (req.method === 'POST') {
|
|
20
|
+
const key = url.searchParams.get('sourceKey');
|
|
21
|
+
const action = url.searchParams.get('action');
|
|
22
|
+
if (!key || !['retry', 'cancel'].includes(action ?? ''))
|
|
23
|
+
throw Object.assign(new Error('需要任务编号和有效操作'), { status: 400 });
|
|
24
|
+
result = action === 'retry' ? queue.retry(key) : queue.cancel(key);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
res.writeHead(405, { allow: 'GET, POST' }).end();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
res.writeHead(200, { 'content-type': 'application/json; charset=utf-8', 'cache-control': 'no-store' }).end(JSON.stringify(result));
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const status = error?.status ?? 500;
|
|
34
|
+
res.writeHead(status, { 'content-type': 'application/json; charset=utf-8', 'cache-control': 'no-store' }).end(JSON.stringify({ error: status < 500 && error instanceof Error ? error.message : '回写队列操作失败,请稍后重试' }));
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control.js","sourceRoot":"","sources":["../../src/writeback/control.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { RuntimeContextLike } from '../runtime.js';
|
|
2
|
+
import type { WritebackQueue } from './queue.js';
|
|
3
|
+
/** Authenticated long polling: one notification channel per page, no job content. */
|
|
4
|
+
export declare function registerWritebackLive(ctx: RuntimeContextLike, queue?: WritebackQueue): (() => void) | undefined;
|
|
5
|
+
//# sourceMappingURL=live-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-control.d.ts","sourceRoot":"","sources":["../../src/writeback/live-control.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CA0C/G"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { assertKnowledgeBrowserRequest } from '../api.js';
|
|
2
|
+
/** Authenticated long polling: one notification channel per page, no job content. */
|
|
3
|
+
export function registerWritebackLive(ctx, queue) {
|
|
4
|
+
const waiting = new Set();
|
|
5
|
+
const notify = () => { for (const check of [...waiting])
|
|
6
|
+
check(); };
|
|
7
|
+
const unsubscribe = queue?.subscribe(notify);
|
|
8
|
+
// Also notice writes from another process using the same SQLite outbox.
|
|
9
|
+
const timer = setInterval(notify, 2000);
|
|
10
|
+
timer.unref?.();
|
|
11
|
+
const unregister = ctx.webServer?.register({
|
|
12
|
+
kind: 'exact', path: '/knowledge-control/v1/writeback-changes',
|
|
13
|
+
handler(req, res) {
|
|
14
|
+
try {
|
|
15
|
+
const client = req.headers['x-dsh-knowledge-client'];
|
|
16
|
+
assertKnowledgeBrowserRequest(req, client === 'conversation-web' ? 'conversation-web' : 'management-web');
|
|
17
|
+
if (req.method !== 'GET') {
|
|
18
|
+
res.writeHead(405, { allow: 'GET' }).end();
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (!queue) {
|
|
22
|
+
res.writeHead(409).end();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (waiting.size >= 128) {
|
|
26
|
+
res.writeHead(429).end();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const since = new URL(req.url ?? '/', 'http://localhost').searchParams.get('since');
|
|
30
|
+
let finished = false;
|
|
31
|
+
let deadline;
|
|
32
|
+
const cleanup = () => { waiting.delete(check); clearTimeout(deadline); res.off('close', disconnect); };
|
|
33
|
+
const disconnect = () => { finished = true; cleanup(); };
|
|
34
|
+
const finish = (status, revision) => {
|
|
35
|
+
if (finished)
|
|
36
|
+
return;
|
|
37
|
+
finished = true;
|
|
38
|
+
cleanup();
|
|
39
|
+
res.writeHead(status, { 'content-type': 'application/json', 'cache-control': 'no-store' }).end(JSON.stringify({ revision }));
|
|
40
|
+
};
|
|
41
|
+
const check = (shutdown = false) => {
|
|
42
|
+
if (shutdown) {
|
|
43
|
+
finish(503);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const revision = queue.revision;
|
|
47
|
+
if (since !== revision)
|
|
48
|
+
finish(200, revision);
|
|
49
|
+
};
|
|
50
|
+
waiting.add(check);
|
|
51
|
+
res.on('close', disconnect);
|
|
52
|
+
deadline = setTimeout(() => finish(200, queue.revision), 20000);
|
|
53
|
+
check();
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
res.writeHead(403, { 'cache-control': 'no-store' }).end();
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
return () => { clearInterval(timer); unsubscribe?.(); for (const check of [...waiting])
|
|
61
|
+
check(true); unregister?.(); };
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=live-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-control.js","sourceRoot":"","sources":["../../src/writeback/live-control.ts"],"names":[],"mappings":"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"}
|
package/lib/writeback/queue.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { ExtractionWriteDestination } from '../domain.js';
|
|
2
2
|
import type { ExtractionCheckpoint, TurnSnapshot } from '../extraction.js';
|
|
3
3
|
export interface WritebackStatus {
|
|
4
|
-
status: 'queued' | 'running' | 'completed' | 'failed';
|
|
4
|
+
status: 'queued' | 'running' | 'completed' | 'failed' | 'cancelled';
|
|
5
5
|
summary: string;
|
|
6
6
|
error?: string;
|
|
7
7
|
retryable: boolean;
|
|
8
8
|
destinations?: ExtractionWriteDestination[];
|
|
9
9
|
nextAttemptAt?: number;
|
|
10
|
+
blockedBy?: string;
|
|
11
|
+
cancelRequested?: boolean;
|
|
10
12
|
}
|
|
11
13
|
export interface WritebackWork {
|
|
12
14
|
snapshot: TurnSnapshot;
|
|
@@ -23,13 +25,37 @@ export declare class WritebackQueue {
|
|
|
23
25
|
private timer;
|
|
24
26
|
private active;
|
|
25
27
|
private controller;
|
|
28
|
+
private activeKey;
|
|
26
29
|
private closed;
|
|
27
30
|
private closing;
|
|
31
|
+
private readonly listeners;
|
|
32
|
+
subscribe(listener: () => void): () => void;
|
|
33
|
+
get revision(): string;
|
|
34
|
+
private notify;
|
|
28
35
|
constructor(path: string, execute: (work: WritebackWork, checkpoint: ExtractionCheckpoint, signal: AbortSignal) => Promise<WritebackStatus>, warn?: (message: string) => void);
|
|
29
36
|
enqueue(work: WritebackWork): WritebackStatus;
|
|
30
37
|
completeEmpty(sourceKey: string, sessionId: string): WritebackStatus;
|
|
31
38
|
status(key: string): WritebackStatus | undefined;
|
|
32
39
|
retry(key: string): WritebackStatus;
|
|
40
|
+
list(sessionId?: string, offset?: number, limit?: number): {
|
|
41
|
+
total: number;
|
|
42
|
+
items: {
|
|
43
|
+
status: "queued" | "running" | "completed" | "failed" | "cancelled";
|
|
44
|
+
summary: string;
|
|
45
|
+
error?: string;
|
|
46
|
+
retryable: boolean;
|
|
47
|
+
destinations?: ExtractionWriteDestination[];
|
|
48
|
+
nextAttemptAt?: number;
|
|
49
|
+
blockedBy?: string;
|
|
50
|
+
cancelRequested?: boolean;
|
|
51
|
+
sourceKey: string;
|
|
52
|
+
sessionId: string;
|
|
53
|
+
attempts: number;
|
|
54
|
+
createdAt: number | null;
|
|
55
|
+
}[];
|
|
56
|
+
};
|
|
57
|
+
cancel(key: string): WritebackStatus;
|
|
58
|
+
private finishCancellation;
|
|
33
59
|
start(): void;
|
|
34
60
|
get isRunning(): boolean;
|
|
35
61
|
private kick;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/writeback/queue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAgB,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAExF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/writeback/queue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAgB,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAExF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;IACnE,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,0BAA0B,EAAE,CAAA;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AACD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,YAAY,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;CACpB;AAID,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AAE/C,iFAAiF;AACjF,qBAAa,cAAc;IA4BC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAA4G,OAAO,CAAC,QAAQ,CAAC,IAAI;IA3BnL,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAElD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAK3C,IAAI,QAAQ,IAAI,MAAM,CAKrB;IAED,OAAO,CAAC,MAAM;gBAKF,IAAI,EAAE,MAAM,EAAmB,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,eAAe,CAAC,EAAmB,IAAI,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAe;IAsBzN,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,eAAe;IAa7C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe;IAOpE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAWhD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IAYnC,IAAI,CAAC,SAAS,SAAK,EAAE,MAAM,SAAI,EAAE,KAAK,SAAK;;;oBAhHnC,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW;qBAC1D,MAAM;oBACP,MAAM;uBACH,OAAO;2BACH,0BAA0B,EAAE;4BAC3B,MAAM;wBACV,MAAM;8BACA,OAAO;;;;;;;IAiHzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe;IAkBpC,OAAO,CAAC,kBAAkB;IAK1B,KAAK,IAAI,IAAI;IAOb,IAAI,SAAS,IAAI,OAAO,CAAyC;IAEjE,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,KAAK;YAsBC,KAAK;IAwDnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQvB"}
|
package/lib/writeback/queue.js
CHANGED
|
@@ -15,8 +15,31 @@ export class WritebackQueue {
|
|
|
15
15
|
timer;
|
|
16
16
|
active;
|
|
17
17
|
controller;
|
|
18
|
+
activeKey;
|
|
18
19
|
closed = false;
|
|
19
20
|
closing;
|
|
21
|
+
listeners = new Set();
|
|
22
|
+
subscribe(listener) {
|
|
23
|
+
this.listeners.add(listener);
|
|
24
|
+
return () => { this.listeners.delete(listener); };
|
|
25
|
+
}
|
|
26
|
+
get revision() {
|
|
27
|
+
if (this.closed)
|
|
28
|
+
return `${this.owner}:closed`;
|
|
29
|
+
const external = this.db.prepare('PRAGMA data_version').get();
|
|
30
|
+
const local = this.db.prepare('SELECT total_changes() AS changes').get();
|
|
31
|
+
return `${this.owner}:${external.data_version}:${local.changes}`;
|
|
32
|
+
}
|
|
33
|
+
notify() {
|
|
34
|
+
for (const listener of this.listeners) {
|
|
35
|
+
try {
|
|
36
|
+
listener();
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
this.warn(`writeback status notification: ${String(error)}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
20
43
|
constructor(path, execute, warn = () => { }) {
|
|
21
44
|
this.execute = execute;
|
|
22
45
|
this.warn = warn;
|
|
@@ -33,6 +56,21 @@ export class WritebackQueue {
|
|
|
33
56
|
CREATE INDEX IF NOT EXISTS queue_capacity ON queue_jobs(id) WHERE status!='completed';
|
|
34
57
|
CREATE TABLE IF NOT EXISTS queue_lease(id INTEGER PRIMARY KEY CHECK(id=1), owner TEXT NOT NULL, expires INTEGER NOT NULL);
|
|
35
58
|
INSERT OR IGNORE INTO queue_lease VALUES(1,'',0);`);
|
|
59
|
+
this.db.exec('BEGIN IMMEDIATE');
|
|
60
|
+
try {
|
|
61
|
+
const columns = this.db.prepare('PRAGMA table_info(queue_jobs)').all();
|
|
62
|
+
if (!columns.some(column => column.name === 'cancel_requested'))
|
|
63
|
+
this.db.exec('ALTER TABLE queue_jobs ADD COLUMN cancel_requested INTEGER NOT NULL DEFAULT 0');
|
|
64
|
+
if (!columns.some(column => column.name === 'created_at'))
|
|
65
|
+
this.db.exec('ALTER TABLE queue_jobs ADD COLUMN created_at INTEGER');
|
|
66
|
+
this.db.exec('DROP INDEX IF EXISTS queue_management_order');
|
|
67
|
+
this.db.exec('COMMIT');
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
this.db.exec('ROLLBACK');
|
|
71
|
+
this.db.close();
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
36
74
|
}
|
|
37
75
|
enqueue(work) {
|
|
38
76
|
if (this.closed)
|
|
@@ -40,18 +78,19 @@ export class WritebackQueue {
|
|
|
40
78
|
const existing = this.status(work.snapshot.sourceKey);
|
|
41
79
|
if (existing)
|
|
42
80
|
return existing;
|
|
43
|
-
const count = this.db.prepare("SELECT count(*) AS count FROM queue_jobs WHERE status
|
|
81
|
+
const count = this.db.prepare("SELECT count(*) AS count FROM queue_jobs WHERE status NOT IN ('completed','cancelled')").get();
|
|
44
82
|
if (count.count >= 1000)
|
|
45
83
|
throw new Error('回写队列已满,请先处理失败任务;未删除任何未完成记录');
|
|
46
84
|
const view = { status: 'queued', summary: '知识库回写 · 等待回写', retryable: false };
|
|
47
|
-
this.db.prepare('INSERT OR IGNORE INTO queue_jobs(source_key,session_id,payload,status,view) VALUES(
|
|
48
|
-
.run(work.snapshot.sourceKey, work.snapshot.sessionId, JSON.stringify(work), 'queued', JSON.stringify(view));
|
|
85
|
+
this.db.prepare('INSERT OR IGNORE INTO queue_jobs(source_key,session_id,payload,status,view,created_at) VALUES(?,?,?,?,?,?)')
|
|
86
|
+
.run(work.snapshot.sourceKey, work.snapshot.sessionId, JSON.stringify(work), 'queued', JSON.stringify(view), Date.now());
|
|
49
87
|
this.kick();
|
|
50
88
|
return this.status(work.snapshot.sourceKey);
|
|
51
89
|
}
|
|
52
90
|
completeEmpty(sourceKey, sessionId) {
|
|
53
91
|
const view = { status: 'completed', summary: '知识库回写 · 当前回答无可提取内容', retryable: false };
|
|
54
|
-
this.db.prepare('INSERT OR IGNORE INTO queue_jobs(source_key,session_id,status,view) VALUES(
|
|
92
|
+
this.db.prepare('INSERT OR IGNORE INTO queue_jobs(source_key,session_id,status,view,created_at) VALUES(?,?,?,?,?)').run(sourceKey, sessionId, view.status, JSON.stringify(view), Date.now());
|
|
93
|
+
this.notify();
|
|
55
94
|
return this.status(sourceKey);
|
|
56
95
|
}
|
|
57
96
|
status(key) {
|
|
@@ -59,8 +98,9 @@ export class WritebackQueue {
|
|
|
59
98
|
if (!row)
|
|
60
99
|
return undefined;
|
|
61
100
|
const view = JSON.parse(row.view);
|
|
62
|
-
|
|
63
|
-
|
|
101
|
+
const blocker = row.status === 'queued' ? this.db.prepare("SELECT source_key FROM queue_jobs WHERE session_id=? AND id<? AND status NOT IN ('completed','cancelled') ORDER BY id LIMIT 1").get(row.session_id, row.id) : undefined;
|
|
102
|
+
if (blocker) {
|
|
103
|
+
return { ...view, blockedBy: blocker.source_key, summary: '知识库回写 · 等待本会话前一轮回写完成;可在回写任务中重试或取消阻塞项' };
|
|
64
104
|
}
|
|
65
105
|
return view;
|
|
66
106
|
}
|
|
@@ -79,6 +119,42 @@ export class WritebackQueue {
|
|
|
79
119
|
this.kick();
|
|
80
120
|
return this.status(key);
|
|
81
121
|
}
|
|
122
|
+
list(sessionId = '', offset = 0, limit = 50) {
|
|
123
|
+
const where = sessionId ? 'WHERE session_id=?' : '';
|
|
124
|
+
const args = sessionId ? [sessionId] : [];
|
|
125
|
+
const total = this.db.prepare(`SELECT count(*) AS count FROM queue_jobs ${where}`).get(...args).count;
|
|
126
|
+
const rows = this.db.prepare(`SELECT source_key,session_id,attempts,created_at FROM queue_jobs ${where} ORDER BY id DESC LIMIT ? OFFSET ?`).all(...args, limit, offset);
|
|
127
|
+
return { total, items: rows.map(row => ({ sourceKey: row.source_key, sessionId: row.session_id, attempts: row.attempts, createdAt: row.created_at, ...this.status(row.source_key) })) };
|
|
128
|
+
}
|
|
129
|
+
cancel(key) {
|
|
130
|
+
if (this.closed)
|
|
131
|
+
throw new Error('知识库回写队列已关闭');
|
|
132
|
+
this.db.exec('BEGIN IMMEDIATE');
|
|
133
|
+
try {
|
|
134
|
+
const current = this.status(key);
|
|
135
|
+
if (!current)
|
|
136
|
+
throw Object.assign(new Error('回写任务不存在'), { status: 404 });
|
|
137
|
+
if (current.status === 'running') {
|
|
138
|
+
this.db.prepare('UPDATE queue_jobs SET cancel_requested=1,view=? WHERE source_key=?').run(JSON.stringify({ ...current, cancelRequested: true, summary: '知识库回写 · 正在取消,等待当前写入结束' }), key);
|
|
139
|
+
}
|
|
140
|
+
else if (current.status !== 'completed' && current.status !== 'cancelled') {
|
|
141
|
+
this.finishCancellation(key);
|
|
142
|
+
}
|
|
143
|
+
this.db.exec('COMMIT');
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
this.db.exec('ROLLBACK');
|
|
147
|
+
throw error;
|
|
148
|
+
}
|
|
149
|
+
if (this.activeKey === key)
|
|
150
|
+
this.controller?.abort(new Error('用户取消回写'));
|
|
151
|
+
this.kick();
|
|
152
|
+
return this.status(key);
|
|
153
|
+
}
|
|
154
|
+
finishCancellation(key) {
|
|
155
|
+
const view = { status: 'cancelled', summary: '知识库回写 · 已取消;已写入的内容不会撤销', retryable: false };
|
|
156
|
+
this.db.prepare("UPDATE queue_jobs SET status='cancelled',payload=NULL,plan=NULL,view=? WHERE source_key=?").run(JSON.stringify(view), key);
|
|
157
|
+
}
|
|
82
158
|
start() {
|
|
83
159
|
if (this.timer || this.closed)
|
|
84
160
|
return;
|
|
@@ -88,6 +164,8 @@ export class WritebackQueue {
|
|
|
88
164
|
}
|
|
89
165
|
get isRunning() { return this.controller !== undefined; }
|
|
90
166
|
kick() {
|
|
167
|
+
if (!this.closed)
|
|
168
|
+
this.notify();
|
|
91
169
|
if (this.closed || this.active)
|
|
92
170
|
return;
|
|
93
171
|
// A macrotask boundary lets the host finish its turn/channel reply first.
|
|
@@ -104,10 +182,12 @@ export class WritebackQueue {
|
|
|
104
182
|
return undefined;
|
|
105
183
|
}
|
|
106
184
|
// Only the current lease owner may recover work abandoned by a dead process.
|
|
185
|
+
for (const cancelled of this.db.prepare("SELECT source_key FROM queue_jobs WHERE status='running' AND cancel_requested=1").all())
|
|
186
|
+
this.finishCancellation(cancelled.source_key);
|
|
107
187
|
this.db.prepare("UPDATE queue_jobs SET status='queued',next_at=0,view=? WHERE status='running'")
|
|
108
188
|
.run(JSON.stringify({ status: 'queued', summary: '知识库回写 · 中断后等待恢复', retryable: false }));
|
|
109
189
|
const row = this.db.prepare(`SELECT j.* FROM queue_jobs j WHERE j.status='queued' AND j.next_at<=?
|
|
110
|
-
AND NOT EXISTS(SELECT 1 FROM queue_jobs p WHERE p.session_id=j.session_id AND p.id<j.id AND p.status
|
|
190
|
+
AND NOT EXISTS(SELECT 1 FROM queue_jobs p WHERE p.session_id=j.session_id AND p.id<j.id AND p.status NOT IN ('completed','cancelled'))
|
|
111
191
|
ORDER BY j.id LIMIT 1`).get(now);
|
|
112
192
|
if (!row) {
|
|
113
193
|
this.db.exec('COMMIT');
|
|
@@ -131,11 +211,15 @@ export class WritebackQueue {
|
|
|
131
211
|
break;
|
|
132
212
|
const controller = new AbortController();
|
|
133
213
|
this.controller = controller;
|
|
214
|
+
this.activeKey = row.source_key;
|
|
215
|
+
this.notify();
|
|
134
216
|
const assertLease = () => {
|
|
135
217
|
controller.signal.throwIfAborted();
|
|
136
218
|
const lease = this.db.prepare('SELECT owner,expires FROM queue_lease WHERE id=1').get();
|
|
137
219
|
if (lease.owner !== this.owner || lease.expires < Date.now())
|
|
138
220
|
throw new Error('回写工作租约已失效');
|
|
221
|
+
if (this.db.prepare('SELECT 1 FROM queue_jobs WHERE id=? AND cancel_requested=1').get(row.id))
|
|
222
|
+
throw new Error('用户取消回写');
|
|
139
223
|
};
|
|
140
224
|
const renewal = setInterval(() => {
|
|
141
225
|
try {
|
|
@@ -162,6 +246,10 @@ export class WritebackQueue {
|
|
|
162
246
|
const lease = this.db.prepare('SELECT owner FROM queue_lease WHERE id=1').get();
|
|
163
247
|
if (lease.owner !== this.owner)
|
|
164
248
|
return;
|
|
249
|
+
if (this.db.prepare('SELECT 1 FROM queue_jobs WHERE id=? AND cancel_requested=1').get(row.id)) {
|
|
250
|
+
this.finishCancellation(row.source_key);
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
165
253
|
const message = error instanceof Error ? error.message : String(error);
|
|
166
254
|
const waiting = error instanceof WritebackDeferred;
|
|
167
255
|
const transient = /network|fetch failed|EOF|ECONN|ETIMEDOUT|EAI_AGAIN|SQLITE_BUSY|timeout|timed out|\b(?:429|500|502|503|504)\b|invalid JSON|网络|超时|租约已失效/i.test(message);
|
|
@@ -175,7 +263,9 @@ export class WritebackQueue {
|
|
|
175
263
|
finally {
|
|
176
264
|
clearInterval(renewal);
|
|
177
265
|
this.controller = undefined;
|
|
266
|
+
this.activeKey = undefined;
|
|
178
267
|
this.db.prepare('UPDATE queue_lease SET owner=\'\',expires=0 WHERE owner=?').run(this.owner);
|
|
268
|
+
this.notify();
|
|
179
269
|
}
|
|
180
270
|
}
|
|
181
271
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/writeback/queue.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/writeback/queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,9 +12,12 @@ export declare class WritebackStatusClient {
|
|
|
12
12
|
private failures;
|
|
13
13
|
private value;
|
|
14
14
|
private readError;
|
|
15
|
+
private missing;
|
|
16
|
+
private invalidated;
|
|
15
17
|
constructor(url: string, change: (value: WritebackStatus | undefined, retrying: boolean, readError?: string) => void, fetcher?: typeof fetch);
|
|
16
18
|
setVisible(visible: boolean): void;
|
|
17
19
|
refresh(): void;
|
|
20
|
+
invalidate(): void;
|
|
18
21
|
retry(): void;
|
|
19
22
|
private load;
|
|
20
23
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-client.d.ts","sourceRoot":"","sources":["../../src/writeback/status-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,uFAAuF;AACvF,qBAAa,qBAAqB;
|
|
1
|
+
{"version":3,"file":"status-client.d.ts","sourceRoot":"","sources":["../../src/writeback/status-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,uFAAuF;AACvF,qBAAa,qBAAqB;IAapB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAU,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAuF,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZhL,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,OAAO,CAAO;IACtB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAAQ;gBAGE,GAAG,EAAE,MAAM,EAAmB,MAAM,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,EAAmB,OAAO,GAAE,OAAO,KAA8C;IAEvO,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAMlC,OAAO,IAAI,IAAI;IAKf,UAAU,IAAI,IAAI;IAMlB,KAAK,IAAI,IAAI;YAQC,IAAI;IAkDlB,OAAO,IAAI,IAAI;CAKhB"}
|
|
@@ -11,6 +11,8 @@ export class WritebackStatusClient {
|
|
|
11
11
|
failures = 0;
|
|
12
12
|
value;
|
|
13
13
|
readError;
|
|
14
|
+
missing = false;
|
|
15
|
+
invalidated = false;
|
|
14
16
|
// Browser fetch checks its Window receiver. Never store it as an unbound
|
|
15
17
|
// instance method: this.fetcher() would supply the client as its receiver.
|
|
16
18
|
constructor(url, change, fetcher = (...args) => globalThis.fetch(...args)) {
|
|
@@ -33,6 +35,14 @@ export class WritebackStatusClient {
|
|
|
33
35
|
return;
|
|
34
36
|
void this.load(false);
|
|
35
37
|
}
|
|
38
|
+
invalidate() {
|
|
39
|
+
if (this.disposed || !this.visible)
|
|
40
|
+
return;
|
|
41
|
+
if (this.retrying || this.request && !this.request.signal.aborted)
|
|
42
|
+
this.invalidated = true;
|
|
43
|
+
else
|
|
44
|
+
this.refresh();
|
|
45
|
+
}
|
|
36
46
|
retry() {
|
|
37
47
|
if (this.disposed || this.retrying || !this.value?.retryable)
|
|
38
48
|
return;
|
|
@@ -55,15 +65,27 @@ export class WritebackStatusClient {
|
|
|
55
65
|
const body = await response.json();
|
|
56
66
|
if (this.request !== controller || this.disposed)
|
|
57
67
|
return;
|
|
58
|
-
if (!response.ok && (retry || response.status !== 404))
|
|
68
|
+
if (!response.ok && (retry || response.status !== 404 || String(body.status) !== 'missing'))
|
|
59
69
|
throw new Error(body.error ?? `状态请求失败(HTTP ${response.status})`);
|
|
60
|
-
|
|
70
|
+
if (response.ok && !body.summary)
|
|
71
|
+
throw new Error('无效的回写状态响应');
|
|
61
72
|
if (response.ok && body.summary) {
|
|
73
|
+
this.readError = undefined;
|
|
74
|
+
this.missing = false;
|
|
62
75
|
this.value = body;
|
|
63
76
|
this.failures = 0;
|
|
64
|
-
delay = body.status === 'completed' ? 0 : body.status === 'failed' ? 15_000 : 1_500;
|
|
77
|
+
delay = body.status === 'completed' || body.status === 'cancelled' ? 0 : body.status === 'failed' ? 15_000 : 1_500;
|
|
65
78
|
}
|
|
66
79
|
else {
|
|
80
|
+
// A definitive missing response must invalidate a previously displayed state.
|
|
81
|
+
// Initial absence is normal before turn-stopping has persisted the snapshot.
|
|
82
|
+
if (this.value || this.missing) {
|
|
83
|
+
this.missing = true;
|
|
84
|
+
this.value = undefined;
|
|
85
|
+
this.readError = '当前客户端找不到这轮回写记录;旧等待状态已失效,请在回写任务中核对。';
|
|
86
|
+
}
|
|
87
|
+
else
|
|
88
|
+
this.readError = undefined;
|
|
67
89
|
delay = ++this.failures <= 3 ? 1_500 : 60_000;
|
|
68
90
|
}
|
|
69
91
|
}
|
|
@@ -83,7 +105,11 @@ export class WritebackStatusClient {
|
|
|
83
105
|
if (retry)
|
|
84
106
|
this.retrying = false;
|
|
85
107
|
this.change(this.value, this.retrying, this.readError);
|
|
86
|
-
if (
|
|
108
|
+
if (this.invalidated && this.visible) {
|
|
109
|
+
this.invalidated = false;
|
|
110
|
+
this.refresh();
|
|
111
|
+
}
|
|
112
|
+
else if (delay && this.visible)
|
|
87
113
|
this.timer = setTimeout(() => this.refresh(), delay);
|
|
88
114
|
}
|
|
89
115
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-client.js","sourceRoot":"","sources":["../../src/writeback/status-client.ts"],"names":[],"mappings":"AAEA,uFAAuF;AACvF,MAAM,OAAO,qBAAqB;
|
|
1
|
+
{"version":3,"file":"status-client.js","sourceRoot":"","sources":["../../src/writeback/status-client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lemoncat7/dsh-knowledge",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"description": "Local and remote knowledge bases for DeepSeek Harness, with scoped recall, controlled write-back, and a Web management console",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
package/web/api-client.js
CHANGED
|
@@ -30,6 +30,8 @@ export function createApiClient({ apiBase, authMode, getToken }) {
|
|
|
30
30
|
if (!response.ok) {
|
|
31
31
|
const error = new Error(payload?.error || `请求失败(HTTP ${response.status})`)
|
|
32
32
|
error.status = response.status
|
|
33
|
+
error.code = payload?.code
|
|
34
|
+
error.origin = payload?.origin
|
|
33
35
|
throw error
|
|
34
36
|
}
|
|
35
37
|
return payload
|
|
@@ -91,4 +93,3 @@ export function createApiClient({ apiBase, authMode, getToken }) {
|
|
|
91
93
|
|
|
92
94
|
return { api, binaryRequest, binaryUploadRequest }
|
|
93
95
|
}
|
|
94
|
-
|