@hpyperry/dsh-ref-lib 0.8.0 → 0.9.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 +2 -1
- package/lib/client/RefLibCommandCard.d.ts +29 -0
- package/lib/client/RefLibCommandCard.d.ts.map +1 -0
- package/lib/client/RefLibCommandCard.js +48 -0
- package/lib/client/RefLibCommandCard.js.map +1 -0
- package/lib/client/RefLibDock.d.ts.map +1 -1
- package/lib/client/RefLibDock.js +91 -15
- package/lib/client/RefLibDock.js.map +1 -1
- package/lib/client/RefLibPanel.d.ts.map +1 -1
- package/lib/client/RefLibPanel.js +7 -2
- package/lib/client/RefLibPanel.js.map +1 -1
- package/lib/client/index.d.ts.map +1 -1
- package/lib/client/index.js +8 -0
- package/lib/client/index.js.map +1 -1
- package/lib/client/locales.d.ts +16 -0
- package/lib/client/locales.d.ts.map +1 -1
- package/lib/client/locales.js +20 -0
- package/lib/client/locales.js.map +1 -1
- package/lib/client/refresh-guard.d.ts +31 -0
- package/lib/client/refresh-guard.d.ts.map +1 -0
- package/lib/client/refresh-guard.js +38 -0
- package/lib/client/refresh-guard.js.map +1 -0
- package/lib/client/styles.d.ts.map +1 -1
- package/lib/client/styles.js +111 -0
- package/lib/client/styles.js.map +1 -1
- package/lib/client.js +911 -582
- package/lib/client.js.map +1 -1
- package/lib/logic.d.ts +16 -1
- package/lib/logic.d.ts.map +1 -1
- package/lib/logic.js +19 -0
- package/lib/logic.js.map +1 -1
- package/lib/render.d.ts +6 -4
- package/lib/render.d.ts.map +1 -1
- package/lib/render.js +14 -7
- package/lib/render.js.map +1 -1
- package/lib/routes.d.ts.map +1 -1
- package/lib/routes.js +5 -1
- package/lib/routes.js.map +1 -1
- package/lib/service.d.ts +30 -2
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +71 -10
- package/lib/service.js.map +1 -1
- package/lib/spec.d.ts +9 -0
- package/lib/spec.d.ts.map +1 -1
- package/lib/validate.d.ts +1 -1
- package/lib/validate.d.ts.map +1 -1
- package/lib/validate.js +11 -3
- package/lib/validate.js.map +1 -1
- package/package.json +15 -15
package/lib/render.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* @module @hpyperry/dsh-ref-lib/src/render
|
|
8
8
|
*/
|
|
9
9
|
import { basename } from 'node:path';
|
|
10
|
+
import { filterAvailable } from "./logic.js";
|
|
10
11
|
import { sanitizeControlCharacters } from "./validate.js";
|
|
11
12
|
/** 一条参考库的注入渲染(`1. <basename>\n Path: <path>\n Description: <note>`)。 */
|
|
12
13
|
function renderLibrary(entry, index) {
|
|
@@ -102,18 +103,21 @@ If changes are required:
|
|
|
102
103
|
2. Make changes only in the copied files.
|
|
103
104
|
3. Keep the original reference library unchanged.`;
|
|
104
105
|
/**
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
106
|
+
* 渲染参考库清单与规则声明。先过滤失效条目(`filterAvailable`):失效目录读了也
|
|
107
|
+
* 白读,且避免误导模型访问不存在的路径。过滤后为空(无库/全部失效)返回空串,
|
|
108
|
+
* 不占用模型上下文 token。
|
|
109
|
+
* @param libs - 已注册的只读参考库(含失效)。
|
|
110
|
+
* @returns 注入到系统提示的文本;无可注入库时为空串。
|
|
108
111
|
*/
|
|
109
112
|
export function renderRefLibs(libs) {
|
|
110
|
-
|
|
113
|
+
const available = filterAvailable(libs);
|
|
114
|
+
if (available.length === 0)
|
|
111
115
|
return '';
|
|
112
|
-
const libraries =
|
|
116
|
+
const libraries = available.map(renderLibrary).join('\n\n');
|
|
113
117
|
return REF_LIB_TEMPLATE.replace('{LIBS}', libraries);
|
|
114
118
|
}
|
|
115
119
|
/**
|
|
116
|
-
* 渲染 `/ref-lib list`
|
|
120
|
+
* 渲染 `/ref-lib list` 的人类可读输出;失效条目带状态标记。
|
|
117
121
|
* @param libs - 已注册的只读参考库。
|
|
118
122
|
* @returns 列表文本;无库时提示为空。
|
|
119
123
|
*/
|
|
@@ -123,7 +127,10 @@ export function renderLibList(libs) {
|
|
|
123
127
|
return libs
|
|
124
128
|
.map((entry) => {
|
|
125
129
|
const note = entry.note === undefined || entry.note === '' ? '' : `(${sanitizeControlCharacters(entry.note)})`;
|
|
126
|
-
|
|
130
|
+
const status = entry.status === 'missing'
|
|
131
|
+
? ' [已失效]'
|
|
132
|
+
: entry.status === 'not-directory' ? ' [不是目录]' : '';
|
|
133
|
+
return `- ${entry.id}: ${sanitizeControlCharacters(entry.path)}${status}${note}`;
|
|
127
134
|
})
|
|
128
135
|
.join('\n');
|
|
129
136
|
}
|
package/lib/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAEzD,4EAA4E;AAC5E,SAAS,aAAa,CAAC,KAAkB,EAAE,KAAa;IACtD,MAAM,IAAI,GAAG,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,YAAY,IAAI,EAAE,CAAC,CAAA;IAChG,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAA;IAC/B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QACtC,wDAAwD;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACtC,KAAK,CAAC,IAAI,CAAC,mBAAmB,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,sDAAsD;AACtD,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDA+EyB,CAAA;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAA4B;IACxD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;IACvC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACrC,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3D,OAAO,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAA4B;IACxD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,0CAA0C,CAAA;IACxE,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAA;QAC9G,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS;YACvC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;QACrD,OAAO,KAAK,KAAK,CAAC,EAAE,KAAK,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAA;IAClF,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC"}
|
package/lib/routes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,WAAW,CAAA;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAE/D,OAAO,
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,WAAW,CAAA;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAE/D,OAAO,EAAgF,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAE/H,wBAAwB;AACxB,eAAO,MAAM,mBAAmB,QAAY,CAAA;AAE5C,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAoBnE;AA+BD,uCAAuC;AACvC,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,OAAO,EAAE,aAAa,CAAA;IACtB,8DAA8D;IAC9D,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,GAAG,SAAS,CAAA;IAC1D,UAAU;IACV,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,QAAQ,EAAE,CAqKlE"}
|
package/lib/routes.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* @module @hpyperry/dsh-ref-lib/src/routes
|
|
12
12
|
*/
|
|
13
13
|
import { resolveRefLibPath } from "./commands.js";
|
|
14
|
-
import { RefLibNoteError, RefLibPathError, RefLibUnknownError } from "./service.js";
|
|
14
|
+
import { RefLibNoteError, RefLibPathError, RefLibUnavailableError, RefLibUnknownError } from "./service.js";
|
|
15
15
|
/** 请求体大小上限(管理载荷都很小)。 */
|
|
16
16
|
export const MAX_JSON_BODY_BYTES = 64 * 1024;
|
|
17
17
|
/** Loopback 校验:回环源地址 + 同源 Host/Origin(镜像 dsh-ssh 的护栏)。 */
|
|
@@ -132,6 +132,10 @@ export function makeRefLibRoutes(deps) {
|
|
|
132
132
|
writeJson(res, 400, { error: error.message, code: 'ref-lib/note-unsafe' });
|
|
133
133
|
return;
|
|
134
134
|
}
|
|
135
|
+
if (error instanceof RefLibUnavailableError) {
|
|
136
|
+
writeJson(res, 400, { error: error.message, code: 'ref-lib/unavailable', path: error.path });
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
135
139
|
log(`ref-lib route error: ${error instanceof Error ? error.message : String(error)}`);
|
|
136
140
|
writeJson(res, 500, { error: error instanceof Error ? error.message : String(error) });
|
|
137
141
|
};
|
package/lib/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAsB,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"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"}
|
package/lib/service.d.ts
CHANGED
|
@@ -13,7 +13,15 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { Context, Service } from '@deepseek-ai/cordis';
|
|
15
15
|
import type { Session } from '@deepseek-ai/dsh-session';
|
|
16
|
-
import type { RefLibEntry } from './spec.ts';
|
|
16
|
+
import type { RefLibAvailability, RefLibEntry } from './spec.ts';
|
|
17
|
+
/**
|
|
18
|
+
* 探测目录可用性(同步 statSync)。库数量少、本地磁盘、单次亚毫秒级;同步形态
|
|
19
|
+
* 保持 `list()` 与 systemPrompt 注入回调(`text()` 为同步函数)不变。
|
|
20
|
+
* @param path - 目录绝对路径。
|
|
21
|
+
* @returns 存在且是目录 → available;存在但不是目录 → not-directory;
|
|
22
|
+
* stat 失败(不存在/权限不可达)→ missing。
|
|
23
|
+
*/
|
|
24
|
+
export declare function probeAvailability(path: string): RefLibAvailability;
|
|
17
25
|
/** 用途说明(note)最大长度;超出截断,防止注入文本膨胀。 */
|
|
18
26
|
export declare const NOTE_MAX_LENGTH = 120;
|
|
19
27
|
/** add 请求指向的路径不存在或不是目录(或含控制字符)。 */
|
|
@@ -38,6 +46,14 @@ export declare class RefLibUnknownError extends Error {
|
|
|
38
46
|
export declare class RefLibNoteError extends Error {
|
|
39
47
|
constructor();
|
|
40
48
|
}
|
|
49
|
+
/** 条目目录不可用(missing / not-directory):仅允许移除,其他变更(如更新 note)拒绝。 */
|
|
50
|
+
export declare class RefLibUnavailableError extends Error {
|
|
51
|
+
readonly path: string;
|
|
52
|
+
/**
|
|
53
|
+
* @param path - 失效条目的目录路径。
|
|
54
|
+
*/
|
|
55
|
+
constructor(path: string);
|
|
56
|
+
}
|
|
41
57
|
/** 从 README 文本提取首个 Markdown 标题(去 `#`、trim、限长);无标题返回 undefined。 */
|
|
42
58
|
export declare function extractReadmeTitle(content: string): string | undefined;
|
|
43
59
|
declare module '@deepseek-ai/cordis' {
|
|
@@ -65,8 +81,18 @@ export declare class RefLibService extends Service {
|
|
|
65
81
|
* @param config - 可选存储根目录覆盖(测试用)。
|
|
66
82
|
*/
|
|
67
83
|
constructor(ctx: Context, config?: RefLibServiceConfig);
|
|
68
|
-
/** 当前会话的参考库列表(内存缓存 → sidecar 文件 → 旧日志迁移 →
|
|
84
|
+
/** 当前会话的参考库列表(内存缓存 → sidecar 文件 → 旧日志迁移 → 父会话继承),
|
|
85
|
+
* 返回前对每个条目实时探测可用性,状态变化时原子写回。每次读取(面板/命令/注入
|
|
86
|
+
* 回调)即刷新——"下一次对话"必然反映最新失效状态。 */
|
|
69
87
|
list(session: Session): readonly RefLibEntry[];
|
|
88
|
+
/**
|
|
89
|
+
* 对每个条目实时探测可用性;探测结果与条目当前 status 不同(或从未检测)时,
|
|
90
|
+
* 更新 status/checkedAt 并原子写回 sidecar v3;无变化不写盘。
|
|
91
|
+
* @param sessionId - 会话 id(写回目标)。
|
|
92
|
+
* @param libs - 条目列表。
|
|
93
|
+
* @returns 探测后的最新列表(元素在无变化时保持引用不变)。
|
|
94
|
+
*/
|
|
95
|
+
private refreshAvailability;
|
|
70
96
|
/**
|
|
71
97
|
* 为当前会话注册一个只读参考库:realpath 规范化并校验为存在的目录;
|
|
72
98
|
* 同路径已注册时幂等返回现有条目。
|
|
@@ -88,11 +114,13 @@ export declare class RefLibService extends Service {
|
|
|
88
114
|
remove(session: Session, id: string): Promise<void>;
|
|
89
115
|
/**
|
|
90
116
|
* 更新已有条目的用途说明(note);note 为空/undefined 时清除该字段。
|
|
117
|
+
* 失效条目(status 非 available)**拒绝更新**——目录不可用时仅允许移除。
|
|
91
118
|
* @param session - 目标会话。
|
|
92
119
|
* @param id - 条目 id。
|
|
93
120
|
* @param note - 新用途说明(可为空串清除)。
|
|
94
121
|
* @returns 更新后的条目。
|
|
95
122
|
* @throws {RefLibUnknownError} id 未注册。
|
|
123
|
+
* @throws {RefLibUnavailableError} 条目目录不可用(仅允许移除)。
|
|
96
124
|
* @throws {RefLibNoteError} note 含不允许的控制字符。
|
|
97
125
|
*/
|
|
98
126
|
setNote(session: Session, id: string, note?: string): Promise<RefLibEntry>;
|
package/lib/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAGvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAGvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAMhE;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAOlE;AAQD,oCAAoC;AACpC,eAAO,MAAM,eAAe,MAAM,CAAA;AAElC,mCAAmC;AACnC,qBAAa,eAAgB,SAAQ,KAAK;IAMtC,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,eAAe,GAAG,QAAQ;IANzD;;;OAGG;gBAEQ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,GAAG,eAAe,GAAG,QAAQ;CAW1D;AAED,oBAAoB;AACpB,qBAAa,kBAAmB,SAAQ,KAAK;IAI/B,QAAQ,CAAC,EAAE,EAAE,MAAM;IAH/B;;OAEG;gBACkB,EAAE,EAAE,MAAM;CAIhC;AAED,qCAAqC;AACrC,qBAAa,eAAgB,SAAQ,KAAK;;CAKzC;AAED,+DAA+D;AAC/D,qBAAa,sBAAuB,SAAQ,KAAK;IAInC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAHjC;;OAEG;gBACkB,IAAI,EAAE,MAAM;CAIlC;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAStE;AA8BD,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,OAAO,EAAE,aAAa,CAAA;KACvB;CACF;AAED,0BAA0B;AAC1B,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAkBD;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,OAAO;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4C;IAElE;;;OAGG;gBACS,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,mBAAwB;IAK1D;;oCAEgC;IAChC,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,WAAW,EAAE;IAQ9C;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;;;;;;;;;OAUG;IACG,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAuC9E;;;;;OAKG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzD;;;;;;;;;;OAUG;IACG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBhF,6CAA6C;IAC7C,OAAO,CAAC,eAAe;IAyBvB,OAAO,CAAC,MAAM;IAKd,yDAAyD;IACzD,OAAO,CAAC,WAAW;IAanB,0CAA0C;IAC1C,OAAO,CAAC,WAAW;IAQnB,mCAAmC;IACnC,OAAO,CAAC,QAAQ;CAOjB"}
|
package/lib/service.js
CHANGED
|
@@ -13,14 +13,30 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { randomUUID } from 'node:crypto';
|
|
15
15
|
import { readFile, realpath, stat } from 'node:fs/promises';
|
|
16
|
-
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
16
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, statSync, writeFileSync } from 'node:fs';
|
|
17
17
|
import { dirname, join } from 'node:path';
|
|
18
18
|
import { dshHomePath } from '@deepseek-ai/dsh-home-paths';
|
|
19
19
|
import { Service } from '@deepseek-ai/cordis';
|
|
20
|
-
import { foldRefLibs, removeLib, upsertLib } from "./logic.js";
|
|
20
|
+
import { foldRefLibs, removeLib, statusChanged, upsertLib } from "./logic.js";
|
|
21
21
|
import { hasControlCharacters, isRefLibEntry } from "./validate.js";
|
|
22
|
-
/** sidecar 文件内容版本(v3 文件 = `{ version:
|
|
23
|
-
const SIDECAR_VERSION =
|
|
22
|
+
/** sidecar 文件内容版本(v3 文件 = `{ version: 3, libs }`,条目带 status/checkedAt)。 */
|
|
23
|
+
const SIDECAR_VERSION = 3;
|
|
24
|
+
/**
|
|
25
|
+
* 探测目录可用性(同步 statSync)。库数量少、本地磁盘、单次亚毫秒级;同步形态
|
|
26
|
+
* 保持 `list()` 与 systemPrompt 注入回调(`text()` 为同步函数)不变。
|
|
27
|
+
* @param path - 目录绝对路径。
|
|
28
|
+
* @returns 存在且是目录 → available;存在但不是目录 → not-directory;
|
|
29
|
+
* stat 失败(不存在/权限不可达)→ missing。
|
|
30
|
+
*/
|
|
31
|
+
export function probeAvailability(path) {
|
|
32
|
+
try {
|
|
33
|
+
const info = statSync(path);
|
|
34
|
+
return info.isDirectory() ? 'available' : 'not-directory';
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return 'missing';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
24
40
|
/**
|
|
25
41
|
* 内存缓存会话数上限:超出后按插入序淘汰最旧会话(下次访问从 sidecar 重读,
|
|
26
42
|
* 语义不变,只是多一次文件读)。防止长驻进程在大量会话上无限累积内存。
|
|
@@ -66,6 +82,18 @@ export class RefLibNoteError extends Error {
|
|
|
66
82
|
this.name = 'RefLibNoteError';
|
|
67
83
|
}
|
|
68
84
|
}
|
|
85
|
+
/** 条目目录不可用(missing / not-directory):仅允许移除,其他变更(如更新 note)拒绝。 */
|
|
86
|
+
export class RefLibUnavailableError extends Error {
|
|
87
|
+
path;
|
|
88
|
+
/**
|
|
89
|
+
* @param path - 失效条目的目录路径。
|
|
90
|
+
*/
|
|
91
|
+
constructor(path) {
|
|
92
|
+
super(`参考库目录不可用(仅允许移除):${path}`);
|
|
93
|
+
this.path = path;
|
|
94
|
+
this.name = 'RefLibUnavailableError';
|
|
95
|
+
}
|
|
96
|
+
}
|
|
69
97
|
/** 从 README 文本提取首个 Markdown 标题(去 `#`、trim、限长);无标题返回 undefined。 */
|
|
70
98
|
export function extractReadmeTitle(content) {
|
|
71
99
|
for (const line of content.split('\n')) {
|
|
@@ -140,14 +168,38 @@ export class RefLibService extends Service {
|
|
|
140
168
|
super(ctx, 'refLibs');
|
|
141
169
|
this.root = config.root ?? join(dshHomePath('plugin-data', 'ref-lib'));
|
|
142
170
|
}
|
|
143
|
-
/** 当前会话的参考库列表(内存缓存 → sidecar 文件 → 旧日志迁移 →
|
|
171
|
+
/** 当前会话的参考库列表(内存缓存 → sidecar 文件 → 旧日志迁移 → 父会话继承),
|
|
172
|
+
* 返回前对每个条目实时探测可用性,状态变化时原子写回。每次读取(面板/命令/注入
|
|
173
|
+
* 回调)即刷新——"下一次对话"必然反映最新失效状态。 */
|
|
144
174
|
list(session) {
|
|
145
175
|
const cached = this.cache.get(session.id);
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
176
|
+
const libs = cached !== undefined ? cached : this.loadFromStorage(session);
|
|
177
|
+
const refreshed = this.refreshAvailability(session.id, libs);
|
|
178
|
+
this.cacheSet(session.id, refreshed);
|
|
179
|
+
return refreshed;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* 对每个条目实时探测可用性;探测结果与条目当前 status 不同(或从未检测)时,
|
|
183
|
+
* 更新 status/checkedAt 并原子写回 sidecar v3;无变化不写盘。
|
|
184
|
+
* @param sessionId - 会话 id(写回目标)。
|
|
185
|
+
* @param libs - 条目列表。
|
|
186
|
+
* @returns 探测后的最新列表(元素在无变化时保持引用不变)。
|
|
187
|
+
*/
|
|
188
|
+
refreshAvailability(sessionId, libs) {
|
|
189
|
+
if (libs.length === 0)
|
|
190
|
+
return libs;
|
|
191
|
+
const now = Date.now();
|
|
192
|
+
let changed = false;
|
|
193
|
+
const next = libs.map((entry) => {
|
|
194
|
+
const probe = probeAvailability(entry.path);
|
|
195
|
+
if (!statusChanged(entry, probe))
|
|
196
|
+
return entry;
|
|
197
|
+
changed = true;
|
|
198
|
+
return { ...entry, status: probe, checkedAt: now };
|
|
199
|
+
});
|
|
200
|
+
if (changed)
|
|
201
|
+
this.persistSync(sessionId, next);
|
|
202
|
+
return next;
|
|
151
203
|
}
|
|
152
204
|
/**
|
|
153
205
|
* 为当前会话注册一个只读参考库:realpath 规范化并校验为存在的目录;
|
|
@@ -190,6 +242,9 @@ export class RefLibService extends Service {
|
|
|
190
242
|
const entry = {
|
|
191
243
|
id: randomUUID(),
|
|
192
244
|
path: canonical,
|
|
245
|
+
// add 已做 realpath + stat 校验,新条目直接标记可用并记录检测时间。
|
|
246
|
+
status: 'available',
|
|
247
|
+
checkedAt: Date.now(),
|
|
193
248
|
...(noteValue === undefined ? {} : { note: noteValue }),
|
|
194
249
|
};
|
|
195
250
|
const next = upsertLib(current, entry);
|
|
@@ -213,11 +268,13 @@ export class RefLibService extends Service {
|
|
|
213
268
|
}
|
|
214
269
|
/**
|
|
215
270
|
* 更新已有条目的用途说明(note);note 为空/undefined 时清除该字段。
|
|
271
|
+
* 失效条目(status 非 available)**拒绝更新**——目录不可用时仅允许移除。
|
|
216
272
|
* @param session - 目标会话。
|
|
217
273
|
* @param id - 条目 id。
|
|
218
274
|
* @param note - 新用途说明(可为空串清除)。
|
|
219
275
|
* @returns 更新后的条目。
|
|
220
276
|
* @throws {RefLibUnknownError} id 未注册。
|
|
277
|
+
* @throws {RefLibUnavailableError} 条目目录不可用(仅允许移除)。
|
|
221
278
|
* @throws {RefLibNoteError} note 含不允许的控制字符。
|
|
222
279
|
*/
|
|
223
280
|
async setNote(session, id, note) {
|
|
@@ -225,6 +282,10 @@ export class RefLibService extends Service {
|
|
|
225
282
|
const entry = current.find((item) => item.id === id);
|
|
226
283
|
if (entry === undefined)
|
|
227
284
|
throw new RefLibUnknownError(id);
|
|
285
|
+
// list() 返回前已实时探测;失效条目只允许 remove。
|
|
286
|
+
if (entry.status !== undefined && entry.status !== 'available') {
|
|
287
|
+
throw new RefLibUnavailableError(entry.path);
|
|
288
|
+
}
|
|
228
289
|
const normalized = normalizeNote(note);
|
|
229
290
|
const next = current.map((item) => {
|
|
230
291
|
if (item.id !== id)
|
package/lib/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/lib/spec.d.ts
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* 读取历史 `ref-lib/set` 事件)。无全局配置。
|
|
10
10
|
* @module @hpyperry/dsh-ref-lib/src/spec
|
|
11
11
|
*/
|
|
12
|
+
/** 目录在文件系统上的可用性(最近一次检测快照)。 */
|
|
13
|
+
export type RefLibAvailability = 'available' | 'missing' | 'not-directory';
|
|
12
14
|
/** 一个只读参考库条目。 */
|
|
13
15
|
export interface RefLibEntry {
|
|
14
16
|
/** 稳定 id(uuid),与路径解耦(路径可规范化重写)。 */
|
|
@@ -17,6 +19,13 @@ export interface RefLibEntry {
|
|
|
17
19
|
readonly path: string;
|
|
18
20
|
/** 可选用途说明,注入上下文时展示。 */
|
|
19
21
|
readonly note?: string;
|
|
22
|
+
/**
|
|
23
|
+
* 最近一次可用性检测结果;无检测记录(v2 旧 sidecar / 旧日志迁移条目)时缺省,
|
|
24
|
+
* 首次读取即探测。`missing` = 目录被删/不可达;`not-directory` = 路径被替换为文件。
|
|
25
|
+
*/
|
|
26
|
+
readonly status?: RefLibAvailability;
|
|
27
|
+
/** 最近一次检测的 epoch ms;缺省视为"从未检测"(立即探测)。 */
|
|
28
|
+
readonly checkedAt?: number;
|
|
20
29
|
}
|
|
21
30
|
declare module '@deepseek-ai/dsh-session/types' {
|
|
22
31
|
interface SessionEventMap {
|
package/lib/spec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,iBAAiB;AACjB,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,8BAA8B;AAC9B,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,SAAS,GAAG,eAAe,CAAA;AAE1E,iBAAiB;AACjB,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IACpC,yCAAyC;IACzC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,OAAO,QAAQ,gCAAgC,CAAC;IAC9C,UAAU,eAAe;QACvB;;;;WAIG;QACH,aAAa,EAAE;YAAE,IAAI,EAAE,SAAS,WAAW,EAAE,CAAA;SAAE,CAAA;KAChD;CACF"}
|
package/lib/validate.d.ts
CHANGED
|
@@ -12,6 +12,6 @@ import type { RefLibEntry } from './spec.ts';
|
|
|
12
12
|
export declare function hasControlCharacters(text: string): boolean;
|
|
13
13
|
/** 把全部不可见控制字符替换为 U+FFFD(路径/备注最终会进入系统提示词,兜底消毒)。 */
|
|
14
14
|
export declare function sanitizeControlCharacters(text: string): string;
|
|
15
|
-
/**
|
|
15
|
+
/** 校验一个未知对象是否为合法条目(宽松:id/path 必填字符串,note/status/checkedAt 可选且类型正确)。 */
|
|
16
16
|
export declare function isRefLibEntry(value: unknown): value is RefLibEntry;
|
|
17
17
|
//# sourceMappingURL=validate.d.ts.map
|
package/lib/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAW5C,oBAAoB;AACpB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,kDAAkD;AAClD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9D;
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAW5C,oBAAoB;AACpB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,kDAAkD;AAClD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9D;AAKD,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAclE"}
|
package/lib/validate.js
CHANGED
|
@@ -23,13 +23,21 @@ export function hasControlCharacters(text) {
|
|
|
23
23
|
export function sanitizeControlCharacters(text) {
|
|
24
24
|
return text.replace(CONTROL_CHARACTERS_GLOBAL, '\uFFFD');
|
|
25
25
|
}
|
|
26
|
-
/**
|
|
26
|
+
/** 可用性字面量集合(status 字段合法值)。 */
|
|
27
|
+
const AVAILABILITY_VALUES = new Set(['available', 'missing', 'not-directory']);
|
|
28
|
+
/** 校验一个未知对象是否为合法条目(宽松:id/path 必填字符串,note/status/checkedAt 可选且类型正确)。 */
|
|
27
29
|
export function isRefLibEntry(value) {
|
|
28
30
|
if (typeof value !== 'object' || value === null)
|
|
29
31
|
return false;
|
|
30
|
-
const { id, path, note } = value;
|
|
32
|
+
const { id, path, note, status, checkedAt } = value;
|
|
31
33
|
if (typeof id !== 'string' || typeof path !== 'string')
|
|
32
34
|
return false;
|
|
33
|
-
|
|
35
|
+
if (note !== undefined && typeof note !== 'string')
|
|
36
|
+
return false;
|
|
37
|
+
if (status !== undefined && (typeof status !== 'string' || !AVAILABILITY_VALUES.has(status)))
|
|
38
|
+
return false;
|
|
39
|
+
if (checkedAt !== undefined && (typeof checkedAt !== 'number' || !Number.isFinite(checkedAt)))
|
|
40
|
+
return false;
|
|
41
|
+
return true;
|
|
34
42
|
}
|
|
35
43
|
//# sourceMappingURL=validate.js.map
|
package/lib/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,0CAA0C,CAAA;AACrE,MAAM,yBAAyB,GAAG,2CAA2C,CAAA;AAE7E,oBAAoB;AACpB,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtC,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAA;AAC1D,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,0CAA0C,CAAA;AACrE,MAAM,yBAAyB,GAAG,2CAA2C,CAAA;AAE7E,oBAAoB;AACpB,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtC,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAA;AAC1D,CAAC;AAED,8BAA8B;AAC9B,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,CAAA;AAE9E,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAM7C,CAAA;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACpE,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAChE,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAC1G,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAC3G,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hpyperry/dsh-ref-lib",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "只读参考库插件:UI 交互式管理(应用内目录浏览器/系统选择器/手动路径直加)+ systemPrompt 注入 + per-session sidecar 持久化",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -40,25 +40,25 @@
|
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
43
|
-
"@deepseek-ai/dsh-client-locale": "^0.1.0-rc.
|
|
44
|
-
"@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.
|
|
45
|
-
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.
|
|
46
|
-
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.
|
|
47
|
-
"@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.
|
|
48
|
-
"@deepseek-ai/dsh-commands": "^0.1.0-rc.
|
|
49
|
-
"@deepseek-ai/dsh-home-paths": "^0.1.0-rc.
|
|
50
|
-
"@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.
|
|
51
|
-
"@deepseek-ai/dsh-session": "^0.1.0-rc.
|
|
52
|
-
"@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.
|
|
43
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.0-rc.7",
|
|
44
|
+
"@deepseek-ai/dsh-client-runtime": "^0.1.0-rc.7",
|
|
45
|
+
"@deepseek-ai/dsh-client-ui-conversation": "^0.1.0-rc.7",
|
|
46
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.0-rc.7",
|
|
47
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.0-rc.7",
|
|
48
|
+
"@deepseek-ai/dsh-commands": "^0.1.0-rc.7",
|
|
49
|
+
"@deepseek-ai/dsh-home-paths": "^0.1.0-rc.7",
|
|
50
|
+
"@deepseek-ai/dsh-host-webserver": "^0.1.0-rc.7",
|
|
51
|
+
"@deepseek-ai/dsh-session": "^0.1.0-rc.7",
|
|
52
|
+
"@deepseek-ai/dsh-system-prompt": "^0.1.0-rc.7",
|
|
53
53
|
"react": "^18.2.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@deepseek-ai/cordis-plugin-include": "^1.0.6",
|
|
57
57
|
"@deepseek-ai/cordis-plugin-loader": "^1.0.2",
|
|
58
|
-
"@deepseek-ai/dsh-client-ui-conversation": "0.1.0-rc.
|
|
59
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.1.0-rc.
|
|
60
|
-
"@deepseek-ai/dsh-session-persistence": "0.1.0-rc.
|
|
61
|
-
"@deepseek-ai/dsh-session-persistence-jsonl": "0.1.0-rc.
|
|
58
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.0-rc.7",
|
|
59
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.0-rc.7",
|
|
60
|
+
"@deepseek-ai/dsh-session-persistence": "0.1.0-rc.7",
|
|
61
|
+
"@deepseek-ai/dsh-session-persistence-jsonl": "0.1.0-rc.7",
|
|
62
62
|
"@types/node": "^22.0.0",
|
|
63
63
|
"@types/react": "^18.3.31",
|
|
64
64
|
"eslint": "^10.8.1",
|